

コマンドライン補完(タブ補完とも呼ばれる) はコマンドラインインタープリターの一般的な機能であり、部分的に入力されたコマンドがプログラムによって自動的に補完されます。
コマンド ライン インタープリタは、グラフィカル ユーザー インターフェイス (GUI) でマウスをポイントしてクリックするのとは対照的に、コマンド ライン インターフェイス (CLI) を使用してコマンド プロンプトでコマンドを入力することで、基盤となるオペレーティング システムと対話できるようにするプログラムです。コマンド ライン補完を使用すると、ユーザーはコマンド、プログラム、またはファイル名の最初の数文字を入力し、補完キー (通常はTab ↹) を押すことで項目の残りを補完できます。次に、またはを押してコマンドを実行するか、ファイルを開きます。 Return↵ Enter
この記事に添付されているアニメーションで説明されているように、コマンドライン補完はいくつかの点で便利です。よくアクセスされるコマンド、特に長い名前のコマンドは、より少ないキーストロークで到達できます。長いファイル名や綴りが難しいファイル名のコマンドは、最初の数文字を入力して補完キーを押すことで入力でき、これによりコマンドまたはファイル名が補完されます。複数の補完候補がある場合、一部のコマンドライン インタープリタ、特に Unix シェルでは、それらの数文字で始まるすべての補完候補が一覧表示されます。入力した文字がまだあいまいな場合は、さらに文字を入力してもう一度押すと、絞り込まれた新しいリストが表示されます。そうでない場合は、末尾にスペースを入れてコマンド/ファイル名を補完します。入力があいまいな場合は、別の補完形式で、一致するすべての結果が順番に表示されます。 Tab ↹
補完可能な要素には、特定のインタープリタとその構成に応じて、コマンド、引数、ファイル名、およびその他のエンティティが含まれます。コマンドライン補完は、通常、対話型モードでのみ機能します。つまり、補完が明確であっても、スクリプトまたはバッチファイルで部分的に入力されたコマンドを補完するために呼び出すことはできません。タブ補完という名前は、コマンドライン補完がタブキーを押すことによって呼び出されることが多いことに由来しています。
歴史
タブ補完はコンピュータの歴史の初期に登場しました。最初の例の 1 つは、SDS 940用のBerkeley Timesharing Systemに登場しました。このシステムでは、入力された文字列があいまいな場合、インタープリタは何もしませんが、文字列があいまいでない場合は、ユーザーからのコマンドがなくても自動的に補完します。この機能は、あまりにも頻繁に発生するタイプミスにはうまく機能せず、一長一短でした。この機能は、重要な変更を加えたTenexの開発者によって模倣されました。Tenex は「エスケープ認識」を使用し、ユーザーがエスケープ キーを押さない限り (したがって、名前が付けられています)、インタープリタは自動補完を試行しません。ドメインも、Berkeley システムのプログラム名のみから、Tenex ではプログラム名とファイルの両方に拡張されました。[1] Tenex の後継であるTOPS-20は、コマンド ライン補完をコマンド インタープリタから COMND JSYS システム コールを介してオペレーティング システムに移動し、他のユーザー アプリケーションでも使用できるようにしました。[2]そこから、Unix がこれを借用しました。
例
Firefoxでintroduction-to-command-line-completion.htmlファイルを開くには、次のように入力します。
firefox コマンドライン補完入門.html
これは入力するには長いコマンドです。代わりに、コマンドライン補完を使用できます。
完了を促す
次の例は、 Bashでのコマンドライン補完の動作を示しています。他のコマンドラインシェルでは、動作が若干異なる場合があります。
まず、コマンドの最初の 3 文字を入力します。
モミ
次に、 を押します。システム内で「fir」で始まるコマンドは「firefox」だけなので、次のように完了します。 Tab ↹
ファイアフォックス
次にファイル名の入力を開始します。
ファイアフォックス
しかし、今回はintroduction-to-command-line-completion.htmlが現在のディレクトリにある "i" で始まる唯一のファイルではありません。このディレクトリにはintroduction-to-bash.htmlとintroduction-to-firefox.html というファイルも含まれています。システムはこれらのファイル名のどれを入力したいのかを判断できませんが、ファイルは "introduction-to-" で始まる必要があることは認識しているので、コマンドは次のように補完されます。
Firefox 入門
ここで「c」と入力します。
Firefox C入門
押すとファイル名全体が完成します: Tab ↹
firefox コマンドライン補完入門.html
簡単に言うと、次のように入力しました。
モミTab ↹Tab ↹Tab ↹
これはわずか 8 回のキーストロークであり、コマンドライン補完を使用せずに入力する必要があった 52 回のキーストロークよりも大幅に少ない数です。
回転完了
次の例は、Windows のCMDが使用するようなローテーション補完でコマンドライン補完がどのように機能するかを示しています。
以下の条件が満たされるまで、完了を促す場合と同じ手順に従います。
ファイアフォックス
一度押すと、次のようになります。 Tab ↹
firefox bash 入門.html
もう一度押すと、次のようになります。 Tab ↹
firefox コマンドライン補完入門.html
簡単に言うと、次のように入力しました。
私はTab ↹Tab ↹Tab ↹
これは、プロンプト形式の補完に匹敵する、たった 7 回のキーストロークです。インタープリターがどのような可能性を巡回するかがわかっている場合に、これが最もうまく機能します。
さまざまなコマンドラインインターフェースでの補完
- Bash (ほとんどのLinuxディストリビューションのデフォルトシェル)やkshなどを含む多くのUnixシェルには、高度でカスタマイズ可能な補完機能の長い伝統があります。[3]
- Bashのプログラム可能な補完機能
completeとcompgenコマンド[4]は、2000年のベータ版2.04 [3]から利用可能になっており[5]、少なくともパス名とファイル名の補完機能を提供している。 - KornShell ユーザーの場合、ファイル名の補完は EDITOR 変数の値に依存します。EDITOR が vi に設定されている場合、名前の一部を入力してから , を入力します。EDITORがEmacsに設定されている場合、名前の一部を入力してから , を入力します。Escape\EscapeEscape
- Zシェル(zsh) は、完全にプログラム可能な補完機能のサポートの先駆けであり、ユーザーはシェル自体とは関係のないさまざまなコマンドのパラメータをシェルが自動的に補完できるようにしました。これは、すべての既知のスイッチの定義と適切なパラメータ タイプをシェルに準備することで実現されます。これにより、ユーザーはたとえば次のように入力して、シェルが実際のファイル システムから tar で圧縮された gzip アーカイブのみを補完し、入力パラメータと互換性のないファイルをスキップすることができます。最新の zsh インストールには、500 を超えるコマンドの補完定義が付属しています。tar xzf Tab ↹
- Tcsh は、 を使用して有効化されるデフォルトのファイル、コマンド、および変数名の補完機能を提供します。組み込みコマンド「complete」は、完全にプログラム可能な補完機能を提供します。ソース コードには、補完構文の多くの例を含む「complete.tcsh」ファイルが付属しています。Tab ↹
- Bashのプログラム可能な補完機能
- Windows PowerShellは、オブジェクト指向プログラミングとMicrosoft .NETフレームワークに基づいたMicrosoftの拡張可能なコマンドシェルであり、従来のUnixシェルと同様の強力でカスタマイズ可能な補完機能を提供します。[6] [7] [要出典]
- Windows NTベースのシステムのcmd.exeコマンドプロセッサは、基本的な補完をサポートしています。ディレクトリ名のみを一致させるために別のキー バインディングを使用することもできます。
- cmd.exe /F:ONファイル名とディレクトリ名の補完文字を有効にします (デフォルトでは ^F と ^D)。詳細については を使用してください。cmd.exe /?
- TweakUIを使用すると、ファイル名やディレクトリ名の補完に使用するキーを設定できます。[8]
- MS -DOSコマンド プロセッサCOMMAND.COM にはコマンド ライン補完機能がなく、Tab キーを押すとカーソルが進むだけでした。ただし、 4DOS、COMMAND.COMのFreeDOSバージョン、Enhanced DOSKEY.COMなど、MS-DOS 用のさまざまな拡張シェルには、Unix スタイルのタブ補完機能があります。
- Far Manager は、ファイル管理機能の他に、 Windows 用のコマンド履歴と行補完機能も提供します。
参照
参考文献
- ^ 「TOPS-20の起源と開発」www.opost.com。2020年8月1日時点のオリジナルよりアーカイブ。2006年9月10日閲覧。
- ^ DECSYSTEM-20 アセンブリ言語ガイド
- ^ ab 「bash 2.x/3.x でより生産的に作業する」www.caliban.org。
- ^ 「Bashリファレンスマニュアル」tiswww.case.edu。
- ^ 「/gnu/bash のインデックス」ftp.swin.edu.au。
- ^ 「The PowerShell Guy」. thepowershellguy.com .
- ^ 「The PowerShell Guy」. thepowershellguy.com .
- ^ 「Microsoft Research の Simon Peyton Jones」。Microsoft。
外部リンク
Unix シェル
- Bash 補完の概要 - Ian Macdonald による「bash 2.x/3.x でより生産的に作業する」
- zsh 補完システム、Z Shell マニュアルの章
- TCSHマニュアルからの補完とリスト
Windows コマンド インタープリター
(各記事の「適用対象」セクションを必ずご確認ください)
- Windows Server 2003:
- ディレクトリ名の補完
- ファイル名補完
- ウィンドウズ
- Windows 2000/NT4 の場合
