git grep
似乎比常规GNU grep
更简单的规则,这将允许你search for tabs和escape special characters with a backslash。我试图找到字符串->upload
的出现,并没有办法逃避它似乎工作。
我如何运行git grep "->upload"
?
$ git grep ->upload
No output; return 0
$ git grep "->upload"
error: unknown switch `>'
git grep "\-\>upload"
No output; return error
$ git grep '->upload'
error: unknown switch `>'
如果有疑问,请使用单字符类而不是反斜杠在正则表达式中创建单个字符文字:
git grep -e '-[>]upload'
反斜杠的含义可能会有所不同,具体取决于特定字符和使用的特定正则表达式语法,[>]
的含义始终如一。
也就是说,这里最直接的问题不是由>
引起的,而是由引导的破折号引起的,这使得字符串与选项列表无法区分。
需要-e
不是因为>
,而是因为-
。没有它,->upload
将被视为一系列旗帜(->
,-u
,-p
,-l
,-o
,-a
,-d
)。
也就是说,你可以通过将短划线移动到一个字符类中而不使用-e
,从而使它不再是命令行中的第一个字符:
git grep '[-][>]upload'
git grep -F -- '->upload'
选项-F
表示:对模式使用固定字符串(不要将模式解释为正则表达式)。
--
将选项与参数分开。