我生成了我能想到的最简单的代码来说明我的问题。
假设我希望“foo”命令处理以“.cc”结尾的文件。
complete -G '*.cc' foo
现在假设我当前的目录包含“foo.cc”、“bar.cc”和“blah.cc”。如果我输入“foo”并按 Tab 键,我会得到:
$ foo <tab><tab>
bar.cc blah.cc foo.cc
$ foo
这是我所期望的。但如果我输入第一个字母“b”并重试:
$ foo b<tab><tab>
bar.cc blah.cc foo.cc
$ foo b
它没有像 -W 那样将结果过滤为以“b”开头的结果。
我已经搜索了我能找到的所有内容,但没有找到complete -G
符合我要求的示例。我确信这是一件很常见的事情;这里的最佳实践是什么?
答案1
好的,我在中找到了答案如何将模式添加到 bash 补全(用于解压缩)?
执行摘要:“-G”几乎没用。最好的方法是使用“-f”匹配所有文件,然后使用 -X '!*.cc' 排除我不想要的文件。然后“add -o plusdirs”以达到良好的效果。