ディレクトリのファイル名の自動補完

ディレクトリのファイル名の自動補完

この質問は以下に関連しています。これしかし、解決策を理解できません。私も知っていますこのチュートリアルしかし、まだ私が何を間違っているのか理解できません。

次の場所にあるディレクトリのリストをオートコンプリートしようとしています/something/

$ ls /something/

One    Other    Three

どういうわけかこのようなことが起こります:

$ hi [TAB]

One Other Three
$ hi O[TAB]

One Other

最初の単語がhionly insideの場合にのみ適用されます/something/

これが私がすることです.profile

_codeComplete()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(compgen `ls /something/` -- $cur) )

}
complete -F _codeComplete "hi "

ベストアンサー1

努力する:

_codeComplete()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(compgen -W "$(ls /something/)" -- $cur) )
}

complete -F _codeComplete hi

-Wオプションを指定compgenし、単語リストを生成したコマンドを引用する必要があります。

完成関数の作成方法の詳細については、次のブログをご覧ください。独自のBash完成関数を書く

おすすめ記事