我使用grep -F -e "function1" --include=*.{cpp,c} . -r -n
查找function1
的使用情况,但后来意识到我可以加快速度,因此我从c
移除了--include
,但之后它无法正常工作
为什么?
这不起作用 - > grep -F -e "function1" --include=*.{cpp} . -r -n
它会跑,但不会返回任何东西。如果我添加第二个项目,即--include=*.{cpp,dsafjlsadfsaldf}
,那么它可以正常工作。
答案 0 :(得分:2)
您依赖shell的“大括号扩展”功能。引用Bash手册,
正确形成的大括号扩展必须包含不带引号的开括号和右大括号, 和至少一个未加引号的逗号 或有效的序列表达式。
没有任何逗号,该文本不符合大括号扩展的条件。
答案 1 :(得分:1)
观察:
$ echo {a,b}
a b
$ echo {a}
{a}
换句话说,只有在大括号内还有两个元素时,大括号扩展才有效。如果您只有一个元素,请不要使用大括号。
同样,但要解决您正在使用的特定选项:
$ echo --include=*.{cpp,c}
--include=*.cpp --include=*.c
$ echo --include=*.{cpp}
--include=*.{cpp}
要让后者正常工作,请删除大括号:
$ echo --include=*.cpp
--include=*.cpp