また、エイリアスをオートコンプリートする方法は?
コマンドに応じて:
/etc/bash_completion.d/*
(または一部のシステムでは別の場所)にあります。これらの関数は complete
built-in を使用して登録されます(たとえば、complete -F _find find
は、押すと_find
関数を呼び出すようにbashに指示します Tabfind
コマンドで)。 compgen
ビルトインを使用して、bashに「完了可能な候補はここにある」と伝えます。--help
を指定してコマンドを呼び出し、出力を解析します。そのようなコマンドは complete
ビルトインで登録できます。 complete -F _longopt ls
。 _longopt
は、実際には完了生成関数であり、固定リストを使用するのではなく、コマンドの出力を解析します。 (コマンドの出力を解析して可能な補完を生成する、より専門的な補完関数が他にもあります。例については/etc/bash_completion.d/*
を参照してください。)complete
組み込みには、そのためのオプションがあります。エイリアスの場合は-A
。ファイルを見てください
/ etc/bash_completion
そしてディレクトリからファイルを観察します:
/etc/bash_completion.d
あなたが答えを見つけるでしょう。
DebianおよびUbuntuでは、bash補完のサポートが bash補完パッケージ によって提供されます。また、bash完了ファイルをソースするには、通常、/etc/bash.bashrc
または.bashrc
で次のコメントを解除する必要があります。以下は/etc/bash.bashrc
からのものです。
# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
これが機能するために。私は通常両方でそれをコメント解除します。 Debianでのインタラクティブ/ログインシェルの処理は少し混乱しています。
同様のコメントはおそらく他のディストリビューションにも当てはまりますが、デフォルトでソーシングが可能になるかもしれません。