_path_files 和 compadd 忽略文件参数

_path_files 和 compadd 忽略文件参数

_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

答案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 -xset +x解决有问题的代码来调查发生了什么,或者setopt local_options xtrace(也称为set -x仅在当前函数的持续时间内更改选项)。

相关内容