TABオートコンプリートは完了するオプションをどのように見つけますか?

TABオートコンプリートは完了するオプションをどのように見つけますか?

エイリアスはどのように自動補完されますか?

答え1

コマンドによって異なります。

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

答え2

ファイルを見てください

/etc/bash_completion

そしてディレクトリのファイルを見てください。

/etc/bash_completion.d

あなたは知っているでしょう。

答え3

Bash CompleteのサポートはDebianとUbuntuで利用可能です。バッシュ完成パッケージ。また、通常、次のコメントを削除する/etc/bash.bashrcか、.bashrcbash 完成ファイルのソースコードをインポートする必要があります。次の内容のソースは次のとおりです/etc/bash.bashrc

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

この仕事のために。私は通常両方ともコメントを外します。 Debian で対話型/ログインシェルを処理するのは少し混乱しています。

デフォルトでは、調達が有効になっている可能性がありますが、同様の説明が他の展開にも適用される可能性があります。

関連情報