_path_files
の-Fオプションの形式は何ですか およびcompadd
?
いくつかのディレクトリを_path_files
に渡します :
_path_files -W "($base_directories)" -/
しかし、この特定のコマンドのために完成させたくないディレクトリツリーのいくつか。
_path_files
について見つけることができるドキュメント -F
を受け入れると言います オプション-compadd
と同じです 、しかし、それらを渡すための形式が見つかりません。
いじくり回してもあまり実りはありませんでした。
たとえば、試しました
_path_files -W "($base_directories)" -/ -F shared; # shared still shows up
_path_files -W "($base_directories)" -/ -F "(shared)"; # barfs on that guy
承認された回答:
shared
を無視したい場合は、これは正しいように見えます ディレクトリツリーのルートにあります。つまり、$base_directories
の1つを無視している場合です。 。ただし、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 +x
問題のあるコードの周り、またはsetopt local_options xtrace
(別名set -x
現在の機能の期間中のみオプションを変更します。