TABは、補完するオプションをどのように自動補完しますか?


回答:


22

コマンドに応じて:

  • 誰かがオプションを含む引数の可能な補完を生成する関数を書いたかもしれません。/etc/bash_completion.d/*(または一部のシステムでは別の場所に)いくつかのコマンドの機能があります。これらの関数はビルトインに登録されています(たとえば、コマンドを押したときに関数を呼び出すようにbashに指示します)。ビルトインを使用して、bashに「ここに可能な補完があります」と伝えます。complete complete -F _find find_findTabfindcompgen
  • 一部のコマンドでは、bashは引数を指定してコマンドを呼び出し--help、出力を解析します。このようなコマンドはcomplete、たとえば、組み込みで登録できますcomplete -F _longopt ls_longopt実際には、補完生成関数であり、固定リストを使用するのではなく、コマンドの出力を解析します。(コマンドの出力を解析して補完候補を生成する、より特殊な補完関数が他にもあります/etc/bash_completion.d/*。例を見てください。)
  • エイリアスのようなものについては、補完関数はbashの内部テーブルでそれらを検索します。completeビルトインは、そのためのオプション、例えば持っている-Aエイリアスのを。

10

ファイルをご覧ください

/ etc / bash_completion

ディレクトリのファイルを確認します。

/etc/bash_completion.d

答えが見つかります。


2

bash補完のサポートは、bash補完パッケージによってDebianおよびUbuntuで提供されます。また、通常、次のコメントを外す/etc/bash.bashrc.bashrc、bash完了ファイルを入手する必要があります。以下はから/etc/bash.bashrcです:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

これが機能するために。私は通常、両方でコメントを外します。Debianでの対話型/ログインシェルの処理は少し面倒です。

同様のコメントはおそらく他のディストリビューションにも当てはまりますが、デフォルトではソーシングが有効になっている可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.