〜/ Specialディレクトリにあるファイルをspecialcat
sするbash関数cat
があるとします。
specialcat () {
cat ~/Special/$1
}
〜/ Specialディレクトリが次のように設定されているとします。
mkdir ~/Special
echo This is the first special file > ~/Special/firstfile
echo This is the second special file > ~/Special/secondfile
Specialcat関数は次のように使用されます。
> specialcat firstfile
This is the first special file
引数の補完を有効にしたいので
> specialcat firstf[TAB]
を生成します
> specialcat firstfile
現在の作業ディレクトリが何であるか、どのファイルがそこにあるかに関係なく。
これはこれまでの私の試みです
_options_specialcat () {
COMPREPLY=( $(compgen -W "$(ls ~/Special)") )
}
complete -F _options_specialcat specialcat
これは
> specialcat firstf[TAB]
firstfile secondfile
> specialcat firstf
つまり、ファイル名の一部でTabキーを押すと、ファイルのリストが表示されますが、コマンドは完了しません。
_options_specialcat
関数を変更して、目的の動作を生成するにはどうすればよいですか?
現在の引数でリストをフィルタリングする必要があるため、次のようになります。
COMPREPLY=( $(compgen -W "$(ls ~/Special)" -- "$2") )