回答:
これを行う最も簡単な方法は、シェルスクリプトをに含めること/etc/bash_completion.d/
です。このファイルの基本構造は、完了を実行し、次に呼び出しがcomplete
bash組み込みである単純な関数です。使用方法について詳しく説明するのではなくcomplete
、「Bash Completionの概要」を読むことをお勧めします。第1部では基本を、第2部では補完スクリプトの記述方法について説明します。
bash完了の詳細な説明は、「Programmable Completion」セクションにありman bash
ます(「/ Programmable Completion」と入力し、「n」を数回押すとすぐに表示されます。または、運がよければ「g 2140 RETURN」)。
ここに基本的なガイドがあります。
オートコンプリートを機能させたいadmin.shというスクリプトの例を見てみましょう。
#!/bin/bash
while [ $# -gt 0 ]; do
arg=$1
case $arg in
option_1)
# do_option_1
;;
option_2)
# do_option_1
;;
shortlist)
echo option_1 option_2 shortlist
;;
*)
echo Wrong option
;;
esac
shift
done
オプションの候補リストに注意してください。このオプションを使用してスクリプトを呼び出すと、このスクリプトで使用可能なすべてのオプションが出力されます。
そして、ここにオートコンプリートスクリプトがあります。
_script()
{
_script_commands=$(/path/to/your/script.sh shortlist)
local cur prev
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=( $(compgen -W "${_script_commands}" -- ${cur}) )
return 0
}
complete -o nospace -F _script ./admin.sh
完了する最後の引数は、オートコンプリートを追加するスクリプトの名前です。必要なことは、オートコンプリートスクリプトをbashrcに次のように追加することだけです。
source /path/to/your/autocomplete.sh
または/etc/bash.completion.dにコピーします