1 つの引数 ("encrypt" または "decrypt") とファイルのリストを受け取る "foo" という名前のコマンドがあるとします。最初の引数を支援し、他の引数の標準ファイル補完を有効にする bash 補完スクリプトを作成したいと考えています。私が来ることができた最も近いものはこれです:
complete -F _foo foo
function _foo()
{
local cmds cur
if [ $COMP_CWORD -eq 1 ]
then
cur="${COMP_WORDS[1]}"
cmds=("encrypt decrypt")
COMPREPLY=($(compgen -W "${cmds}" -- ${cur}) )
else
COMPREPLY=($(compgen -f ${COMP_WORDS[${COMP_CWORD}]} ) )
fi
}
これにより、最初の引数が正しく実行され、後続の引数のために現在のディレクトリからファイル名が選択されます。しかし、現在のディレクトリに、ファイル baz.txt を含むサブディレクトリ bar が含まれているとします。ba-TAB-TAB を入力した後、補完は "bar " ("r" の後のスペース) になり、次の引数を選択する準備が整います。私が欲しいのは、結果が「bar /」(スラッシュの後にスペースがない)である標準のbash補完であり、サブディレクトリ内のファイルを選択する準備ができています。それを取得する方法はありますか?