単純な bash オートコンプリート機能を動作させることができません。事前定義されたディレクトリからファイル名をオートコンプリートする必要があるため、次のようになります。
$ cmd log<TAB><TAB>
file1.log file2.log file3.log
ファイルの場所/var/log/app
.
単純な bash オートコンプリート機能を動作させることができません。事前定義されたディレクトリからファイル名をオートコンプリートする必要があるため、次のようになります。
$ cmd log<TAB><TAB>
file1.log file2.log file3.log
ファイルの場所/var/log/app
.
シェルがそれ自体でファイルをうまくリストできる場合に使用する意味がわかりませんls
。そのため、ここではシェルのみを使用しています。
_cmd() {
local files=("/var/log/app/$2"*)
[[ -e ${files[0]} ]] && COMPREPLY=( "${files[@]##*/}" )
}
complete -F _cmd cmd
私はこれが必要に応じて機能することを発見しました:
COMPREPLY=( $(compgen -W "$(ls /var/log/app/)" -- $cur) )
https://unix.stackexchange.com/questions/28283/autocomplete-of-filename-in-directoryのdogbaneに感謝します!