bash_completionから特定のファイルを除外

bash_completionから特定のファイルを除外

簡単なコードがありますbash_completion。それがする唯一のことは、私がgrcatthenTabと入力したときです/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

compgencomplete、 と と-p同じオプションをほとんど許可します-r

compgenまた、結果を生成して一致を標準出力に記録します。complete後で使用できるようにルールのみが保存されます。

おすすめ記事