はい。ただし、そのようなシステムを構築するには、bash kung foo が少し必要です。通常、補完が機能する方法は、通常の機能を補完したいコマンドにバインドすることです。補完がどのように機能するかをよりよく理解し、補完関数の開発を開始するために、いくつかの基本的な例を見つけることができます。また、たまたまbash-completion
パッケージがインストールされている場合は、現在シェルで補完を実行している他の多くの例をシステムで検索できます。
公式の bash マニュアルの完了セクションも参照してください。
編集
私はいくつかの実験を試みましたが、私の結論は、あなたが求めていることを正確に行うことはできないcomplete
ということです.bashは結果の横にあるヘルプテキストをサポートしていません. できることは、提供された補完単語の凡例を追加することです。_myfoo
これは、として使用されるbash 関数、または完了する前に凡例を出力するcomplete -F _myfoo
を介したコマンドのいずれかで実行できます。complete -C myfoo
主な違いは、関数を使用すると Bash にバインドされるのに対し、コマンドは、必要な環境変数を設定できる限り、選択した任意の言語で記述できることです。
以下に少し例を示します。
skuro$ touch ~/bin/myfoo
skuro$ chmod +x ~/bin/myfoo
skuro$ _myfoo(){
> echo "result1 -- number one"
> echo "result2 -- number two"
> local cur prev
> _get_comp_words_by_ref cur prev
> COMPREPLY=( $(compgen -W "result1 result2" "$cur") )
> return 0
> }
skuro$ complete -F _myfoo myfoo
skuro$ myfoo result<TAB>
result1 -- number one
result2 -- number two
result1 result2