
私はフォローしましたこのチュートリアル私のbash完了機能を書いています。これはうまく機能しますが、他のソースの完了を別々に表示できるかどうかを知りたいです。
get_dirs
たとえば、ディレクトリをパラメータとして使用するスクリプトがあり、可能なディレクトリ(としてリストされている)を自動補完したいとします。
function _testing_command()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD-1]}
case "$prev" in
testing )
COMPREPLY=( $(compgen -W "$(get_dirs)" -- $cur) )
;;
esac
}
complete -F _testing_command testing
これはうまく機能し、ディレクトリを正しくオートコンプリートします。
$ testing <TAB><TAB>
dir1 dir3 dir5
$ testing
ただし、オートコンプリート出力に含めたい2番目のディレクトリセット(としてリストされている)がある場合はget_dirs_2
どうすればよいですか?私は次のことができます:
function _testing_command()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD-1]}
case "$prev" in
testing )
COMPREPLY=( $(compgen -W "$(get_dirs) $(get_dirs_2)" -- $cur) )
;;
esac
}
complete -F _testing_command testing
これにより、次の出力が提供されます。
$ testing <TAB><TAB>
dir1 dir2 dir3 dir4 dir5 dir6
$ testing
技術的には大丈夫です。オートコンプリート機能は、両方のソースのディレクトリで動作するためです。しかし、出力がどのディレクトリがどの場所から来たのかどうかを示すことを望みます。たとえば、次のようになります。
$ testing <TAB><TAB>
from loc1:
dir1 dir3 dir5
from loc2:
dir2 dir4 dir6
$ testing
出力形式を制御できますか?または、同様の機能を達成するために完全な/compgen機能を使用することはできませんか?