macOS のターミナル アプリは、最近使用したコマンドを追跡するので、後で再利用できます。ターミナルのコマンド履歴をクリアする方法は次のとおりです。
macOS のターミナル アプリでコマンドを入力して Return キーを押すと、後で同じコマンドを再利用する場合に備えて、入力したコマンドが記憶され、保存されます。
ターミナルで、上そして下Mac のキーボードの矢印キーを使用して、最近使用したすべてのコマンドを順番に実行します。矢印キーを押すと、ターミナルはコマンド ライン プロンプト上の内容を、保存されたコマンド履歴内の各コマンドに置き換えます。
ターミナルでコマンド履歴を前後に移動し、保存したコマンドで Return キーを押して再度実行できます。
セキュリティ上の理由からターミナルのコマンド履歴を削除したい場合や、特定のテクノロジを使用して 1 つのタスクに取り組んでいて、別のコマンド セットを使用する他のテクノロジを使用してターミナルの別のタスクに切り替える場合があります。
シェルのバリアントとダム端末
初期の UNIX コンピュータは 1970 年に作成され、使用されました。ダム端子ユーザーがタイムシェア アカウントを持っているメインフレーム コンピュータに接続されていました。各ユーザーはターミナルを使用してメインフレーム コンピュータに接続し、ターミナルに入力されたコマンドを実際に実行します。
ダム端末の初期のメーカーには、Digital Equipment Corporation、UNISYS、Wang、WYSE、Lear Siegler などが含まれます。さらに以前の 1960 年代に、IBM は専用の机のようなスタンドを備えた IBM 2741 などの大型のスタンドアロン紙端末を販売しました。
Carterfone という会社は、ダム端末によるフィールド接続を最初に許可した会社の 1 つです。リモートメインフレーム コンピュータと、音響的に結合された電話を介したコマンドの実行モデム- コンピュータ信号を音に変換する装置。
1970 年代初頭、Lear Siegler は、1972 年の ADM-1 から始まり、後に大人気となるダム端末のシリーズをリリースし、その後、大人気の ADM-3A をリリースしました。
これらはすべて、1970 年代後半のパーソナル コンピューター革命以前のことです。現在、人々は PC 上で UNIX バリアント オペレーティング システムを実行し、組み込みのターミナルまたはシェル アプリを使用して同じマシン上の OS と通信しています。
リア・ジーグラー「ダムターミナル」1976年頃。
Lear Siegler は 1986 年にウォール街の投資会社によって買収され、その部門と技術は他の数社に売却されました。この頃までにパーソナル コンピュータ ブームはかなり進んでおり、ダム端末の人気は下火になりました。
1980 年代初頭にモジュラー電話回線ジャックが導入されると、Apple、Atari、Commodore を含むいくつかの家庭用コンピュータ メーカーが独自の電話モデムを販売しました。
WYSE は後に DELL に買収され、DELL は現在でも基本的にダム端末の後継である「シン クライアント」コンピュータを販売しています。非常に初期の UNIX システムの中には、ディスプレイの代わりに紙ベースの端末を備えていたものもあります。
Apple のモジュラー米国電話システム用の初期の直接接続モデム。
1980 年代の短期間、AT+T は、パーソナル コンピュータとしてもダム端末としても機能し、統合電話および FAX システムを備えた複合 PC を製造および販売していました。
AT+T は、1960 年代後半から 1970 年代前半にかけて、ベル研究所での UNIX の作成に深く関与していました。
1978 年頃のメインフレーム研究室の UNIX 端末ユーザー。提供: Dave Winer、クリエイティブ コモンズ継承ライセンスに基づく。
何十年にもわたって、いくつかのバリエーションがありましたシェルUNIX オペレーティング システム (macOS のベース) のプログラム。
シェルとは単に、UNIX ユーザーが OS によって実行されるテキスト コマンドを入力できるようにするコマンド プロンプト プログラムを指します。シェルは本質的に、入力されたコマンドまたはファイルから複数のコマンドを連続して実行するためのコマンド インタープリタおよびスクリプト エンジンです。
macOS ターミナルは、シェル プログラムの上に位置する macOS アプリにすぎません。
何十年にもわたって、Bourne-again シェル、GNU プロジェクトの Bash シェル、Korn シェル (ksh)、C シェル (csh)、ZShell (zsh)、Fish など、UNIX シェルのいくつかの亜種が存在してきました。
ほとんどの UNIX シェルは、IEEE POSIX規格ISO/IEC/IEEE 9945:2009 シェルとツール。
POSIX はの頭字語です。ポータブル オペレーティング システム インターフェイス- IEEE 規格および商標。 POSIX は、さまざまなプラットフォームにわたるオペレーティング システムとアプリケーション API の両方に互換性のある単一の標準を提供するために作成されました。
POSIX に関する優れた書籍が多数あります。と呼ばれる標準の POSIX マルチタスク プログラミング ライブラリもあります。pスレッド。
Apple は数十年にわたり、Bash シェルを macOS の標準シェルとして使用していました。 Apple が macOS Catalina をリリースしたとき、デフォルトのシェルを zsh に変更しました。どちらのシェルも似ていますが、いくつかの小さな違いがあります。
Apple が macOS で Bash から zsh に切り替えることを選択した本当の理由は、実際にはライセンスに関するものです。現在、Bash は GPL v3 ライセンスの下にありますが、これは Apple のオープンソース ポリシーの一部と互換性がありません。
ほとんどの場合、Bash で実行できることはすべて、zsh でも実行できます。したがって、この変更はほとんどのユーザーにとって問題ではありません。
1 つの大きな違いは、シェルの一部がスクリプトzsh では、シバン適切に実行するには、すべてのスクリプト ファイルの先頭に行を追加します。シバン行は通常次のいずれかです#!/bin/bash
または#!bin/bash/sh
。
zsh シェルの詳細については、次の Web サイトを参照してください。zsh.org。
ARPANET 上で動作する初期のメインフレーム - インターネットの前身。右側のペーパーダムターミナルに注目してください。
履歴コマンドの使用
zsh には以下が含まれますhistory
コマンド。これは GNU 履歴ライブラリの一部です。
macOS ターミナルで使用するには、history
コマンドを入力するだけですhistory
ターミナルに入力し、 を押します戻る。デフォルトでは、history
command は、ターミナルに入力された最新の 16 個のコマンドを出力します。
zsh 履歴の制御とクリア
zsh およびその他のシェルの以前のバージョンでは、-c
とともに使用するフラグhistory
指示。の-c
フラグを使用して macOS でターミナル履歴をクリアできましたが、macOS Catalina では、-c
フラグは、history
指示。
zsh を使用している場合、ターミナルの履歴をクリアするには、代わりに-p
flag を使用すると、同じことを実現できます。タイプhistory -p
ターミナルに入力し、 を押します戻る。
すべてのシェル履歴は警告なしで即座に消去されます。
macOS で zsh 履歴をクリアするもう 1 つの方法は、非表示の履歴ファイル自体を編集することです。
二隠れたmacOS のユーザー フォルダー内のファイルは、zsh の動作方法と zsh 履歴の保存方法を定義します。これらのファイルは、それぞれ .zshrc と .zsh_history です。
macOS では、ファイルシステム内の隠しファイルとフォルダーのファイル名はピリオド (「.」) で始まります。以前 AppleInsider で詳しく説明しました隠しファイルを表示または非表示にする方法ファインダーで。
Finder で非表示のファイルの表示を開始するには、まだ行っていない場合は、オンにして Finder のデスクトップに起動ディスクを表示する必要があります。ハードディスクでファインダー -> 設定Finder のメニュー バーのメニュー項目からウィンドウを開きます。
Finder の [設定] ウィンドウの [全般] タブで [ハードディスク] をオンにします。
.zshrc は、シェル環境変数、他のシェル ファイルまたは UNIX コマンド プログラムへのパス、およびシステムおよび他のプログラムへのシェル変数と環境変数のエクスポートを定義するプロファイルまたは構成ファイルです。
Mac にユーザーとしてログインすると、システムによって .zshrc が読み取られてロードされます。
.zsh_history は、macOS のターミナル アプリで以前に使用したすべてのコマンドを保存するプレーン テキスト ファイルです。ターミナルにコマンドを入力して を押すたびに、戻る、コマンドは .zsh_history に保存されます。
zsh 履歴をクリアしてリセットするには、まずターミナルを終了し、次に .zsh_history ファイルを開いて内容を削除して保存し、ログアウトして macOS に再度ログインするか、Mac を再起動します。
ターミナルが実行されていない場合は、.zsh_history ファイル自体を削除し、ログアウトして再度ログインするか、再起動することもできます。次回ターミナルを実行してコマンド プロンプトにコマンドを入力すると、ターミナルによってファイルが自動的に再作成されます。
GNU 履歴ライブラリを使用したプログラミング
GNU History Library (GNUHL) は非常に強力で、C プログラミング言語で独自のプログラミング API を提供していることがわかりました。 zsh がhistoryコマンドで行うことのほとんどは、GNUHLを呼び出すことによって実行されます。
GNUHL は、zsh 履歴とその保存されたコマンドを読み取り、そのコマンドを他の新しいコマンドへの入力としてプログラム的にパイプすることができます。
オンラインには、GNU History Library のプログラミング チュートリアルが多数あります。
GNUHL の主な履歴データ型は C です。struct
、 または構造タイプの_hist_entry
:
typedef struct _hist_entry { char *line; char *data; } HIST_ENTRY;
のtypedef
C での宣言は、事前定義された型に基づいて新しい型名を定義します - この場合HIST_ENTRY
と同じであるように定義されますstruct _hist_entry
。
typedef
C では、struct
宣言された変数ごとに宣言します。代わりに、この場合は、単に使用できますHIST_ENTRY
、これによりコードが短縮されます。
の各フィールド_hist_entry
タイプはタイプですchar
、またはキャラクター。のchar
C の type は、テキストの 1 文字を表すために使用されます (文字、数字、または記号のコンテナーと考えてください)。
あchar *
変数は単なる C ですポインタ- 何かを指すメモリアドレスを保持する変数。 C文字列メモリ内のデータは通常、次の配列へのポインタによって表されます。char
変数。
C 構造体を使用すると、プログラマーは複数の変数を 1 つの大きなグループ化された変数に簡単にバンドルして、後で簡単にアクセスできるようになります。 C 構造体の各メンバー変数は、分野。
したがって、macOS のターミナル アプリに行を入力すると、シェルは新しいファイルを作成します。_hist_entry
コマンドごとに、それをメモリに保存し、そのコマンドを書き込みます。*data
フィールドを .zsh_history ファイルに出力します。
次回ターミナルを開くと、履歴ファイルが再度読み取られ、次のコマンドを使用して履歴リストが再構築されます。配列の_hist_entry
メモリ内のエントリ。
C プログラミングでは、次のいずれかを使用して変数の配列を定義できます。[]
構文を使用するか、メモリ内の配列へのポインターまたはハンドルを使用します。あハンドルC では、メモリ内の別のポインタへのポインタであり、二重アスタリスクで示されます。**
。
初期の Mac プログラミングではハンドルが広範囲に使用されており、ハンドルが存在する理由については詳しく説明しませんが、ハンドルのおかげで、プログラマーが移動を追跡しなくても、オペレーティング システムがメモリ内で変数を移動できるようになるということだけは言っておきます。
GNUHL では、履歴リストへのハンドルは、履歴エントリの配列の先頭を指す単一のハンドルとして定義できます。 C の場合:
HIST_ENTRY **the_history_list;
GNUHL はまた、単一の州によって定義される、任意の時点における履歴ライブラリの現在の状態を定義する構造体。_hist_state
データ型:
typedef struct _hist_state
詳細については触れません_hist_state
ここの構造。詳細については、GNU History Library プログラミング ドキュメントを参照してください。
こう言えば十分です_hist_state
struct には、履歴エントリの配列へのハンドル、履歴エントリ配列へのバイト単位のオフセット、保存されているエントリの数、エントリに使用できるスロットの数、およびいくつかのフラグが含まれています。
ポインターまたはハンドルを取得したら、_hist_state
この構造を使用すると、履歴エントリの配列をたどって各エントリを検査できます。
また、エントリの追加、削除、置換、状態の取得、履歴リストに関する情報の取得、リストの移動、検索などの履歴リストを操作するための広範な C API もあります。
履歴ファイル自体を操作するための API もあります。単純な C プログラミングを使用すると、履歴の読み取り、検索、変更が非常に簡単になります。 GNUHL プログラミング ドキュメントには、C でのいくつかの例が記載されています。
UNIX とターミナルの歴史は興味深いものです。macOS ターミナルは、Mac 上で UNIX コマンドを使用する強力な方法です。ターミナルの履歴を使用すると、複雑なターミナル コマンドを毎回再入力することなく、すばやく再利用できます。