簡単なコードがありますbash_completion
。それがする唯一のことは、私がgrcat
thenTabと入力したときです/etc/grcat
。
_grcat() {
local word
COMPREPLY=()
if [ 1 -eq "$COMP_CWORD" ]; then
pushd /etc/grcat &>/dev/null || return 1
word="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=($(compgen -f "$word"))
popd &>/dev/null
fi
}
complete -F _grcat grcat
/etc/grcat
を除くすべてのファイルが一覧表示されるように変更する必要があります/etc/grcat/README
。
bash_completion
特定のファイルをどのように無視できますか?
ベストアンサー1
-X
次のオプションもありますcompgen
。
_grcat() {
local word
COMPREPLY=()
if [ 1 -eq "$COMP_CWORD" ]; then
pushd /etc/grcat &>/dev/null || return 1
word="${COMP_WORDS[COMP_CWORD]}"
local filterpat='README'
COMPREPLY=($(compgen -f -X "$filterpat" -- "$word"))
popd &>/dev/null
fi
}
complete -F _grcat grcat
compgen
complete
、 と と-p
同じオプションをほとんど許可します-r
。
compgen
また、結果を生成して一致を標準出力に記録します。complete
後で使用できるようにルールのみが保存されます。