在BRE正则表达式中转义#

时间:2017-10-06 14:04:07

标签: regex bash grep

我想查找脚本文件,我需要从这些文件中获取所有解释器的列表,如Bash,sh等。

为了找到它,我使用:

grep "#!/bin/*" ./*

但它显示:

-bash: !/bin/*": event not found

我认为我需要以某种方式逃避#符号,但我没有在BRE的文档中找到要转义的符号。

我怎样才能在文件的第一行找到包含此模式的文件?

3 个答案:

答案 0 :(得分:2)

  • #没问题,你应该逃避!,在Bash中它指的是 a 上一个命令,必须跟一些东西,{{ 1}}表示上一个命令或表示历史记录中命令索引的数字。 (这是亚伦的纠正)

  • 您也可以将$更改为*

喜欢.*

  • 如果您不想转义grep "#\!/bin/.*",请使用单引号,如:

    !

您也可以使用grep '#!/bin' ....

停用regex匹配

答案 1 :(得分:0)

请您尝试按照查找命令告诉我这是否有帮助。

 find -type f -exec grep -l '#!/bin*' {} \+

答案 2 :(得分:0)

使用!

逃离\
grep "#\!/bin/*" ./*
相关问题