_path_files と compadd はファイル引数を無視します。

_path_files と compadd はファイル引数を無視します。

_path_filesの-Fオプション形式は何ですかcompadd

複数のディレクトリを次に渡します_path_files

_path_files -W "($base_directories)" -/

しかし、私はこの特定のコマンドに対していくつかのディレクトリツリーを完成させたくありません。

私が見つけることができるドキュメントはlikeのようなオプションを_path_files受け入れていると述べていますが、それを渡すフォーマットを見つけることができません。-Fcompadd

苦労しても結果はありません。

たとえば、私は次のことを試しました。

_path_files -W "($base_directories)" -/ -F shared; # shared still shows up
_path_files -W "($base_directories)" -/ -F "(shared)"; # barfs on that guy

ベストアンサー1

sharedディレクトリツリーのルートを無視するには、を無視する必要があります。ただし、階層のより深い場所を$base_directories無視するには、パターンを配列に配置する必要があります。引用。shared-F "(shared **shared)"

local -a ignored base_directories
base_directories=(…)
ignored=(shared '*/shared')
_path_files -W base_directories -/ -F ignored

_cvsの標準分布に例があります_darcs

それでも役に立たない場合は、問題のあるコードを追加してset -x解決して何が起こっているのかを調べてください。または、現在の関数が継続している間にのみオプションを変更することがあります。set +xsetopt local_options xtraceset -x

おすすめ記事