Bash完了:さまざまなソースの結果を別々に表示します。

Bash完了:さまざまなソースの結果を別々に表示します。

私はフォローしましたこのチュートリアル私の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機能を使用することはできませんか?

ベストアンサー1

おすすめ記事