2016-11-27 56 views
1

使用compgen的Bash完成功能可以与当前部分完成的单词一起使用。如何限制匹配特定文件glob的匹配项?Bash完成功能:通过glob限制匹配

-G 'fooglob'选项不这样做;它忽略当前单词,只是无条件地匹配glob。

我要的是:

compgen -A file -FOO '*.yaml' -- "$cur" 

,并具有唯一的选择产生的匹配当前单词指定的水珠说。那么假设的-FOO选项是什么?

(注意,这是一个问题,特别是约在Bash编程语言编写的功能,这就是为什么它是在计算器上适当的。)

回答

1

试试这个:

compgen -A file -X '!*.yaml' -- "$cur" 

按照Bash参考手册部分Programmable Completion Builtins

完成 [...]

-X filterpat

filterpat是作为用于文件名扩展的图案。 它适用于由前面的 选项和参数生成的可能完成列表,并且每个完成匹配filterpat 已从列表中删除。领导!filterpat否定模式; 在这种情况下,任何完成不匹配filterpat被删除。

(该compgen命令荣誉大部分的选项至complete,包括一个上面记录。)