使用compgen
的Bash完成功能可以使用当前部分完成的单词。如何将匹配限制为与特定文件glob匹配的匹配?
-G 'fooglob'
选项不会这样做;它忽略当前单词并且无条件地匹配glob。
我想要的是:
compgen -A file -FOO '*.yaml' -- "$cur"
并且生成的选项仅包含与 当前单词和指定的glob匹配的选项。那么假设的-FOO
选项是什么?
(请注意,这是一个专门用Bash编程语言编写函数的问题,这就是它适用于StackOverflow的原因。)
答案 0 :(得分:1)
试试这个:
compgen -A file -X '!*.yaml' -- "$cur"
根据Programmable Completion Builtins上的Bash参考手册部分:
完整 [...]
-X filterpat
filterpat 是用于文件名扩展的模式。 它适用于前面生成的可能完成列表 选项和参数,以及每个完成匹配 filterpat 从列表中删除。 filterpat 中的前导
!
否定了该模式; 在这种情况下,任何与 filterpat 不匹配的完成都将被删除。
(compgen
命令尊重complete
的大多数选项,包括上面记录的选项。)