3

単純な bash オートコンプリート機能を動作させることができません。事前定義されたディレクトリからファイル名をオートコンプリートする必要があるため、次のようになります。

$ cmd log<TAB><TAB>
file1.log file2.log file3.log   

ファイルの場所/var/log/app.

4

3 に答える 3

2

シェルがそれ自体でファイルをうまくリストできる場合に使用する意味がわかりませんls。そのため、ここではシェルのみを使用しています。

_cmd() {
    local files=("/var/log/app/$2"*)
    [[ -e ${files[0]} ]] && COMPREPLY=( "${files[@]##*/}" )
}
complete -F _cmd cmd
于 2012-07-15T08:28:28.103 に答える
-1

私はこれが必要に応じて機能することを発見しました:

COMPREPLY=( $(compgen -W "$(ls /var/log/app/)" -- $cur) )

https://unix.stackexchange.com/questions/28283/autocomplete-of-filename-in-directoryのdogbaneに感謝します!

于 2012-06-12T14:30:28.740 に答える