为什么有必要将表达式引用到引号(或dblquotes)

时间:2015-10-04 17:46:01

标签: grep

像这样的greping

cat .bashrc | grep '\.b'
# .bashrc

Grep会返回正确的数据,但为什么需要这些引用呢?

1 个答案:

答案 0 :(得分:2)

因为\字符对shell是特殊的,如果你想将\传递给grep,你需要包装或转义\以便shell不执行它正常解释\

当你键入一行文本时,它首先进入shell,它解析它,提取命令名称和参数以及特殊命令和管道以及重定向和变量以及各种事物。一旦shell完成了对你输入内容的所有解释和转换,它就会运行它找到的参数找到的命令。

在您的情况下,您希望使用参数grep - \.b运行命令\,告诉grep匹配lteral .而不是任何字符。但是如果您只输入\.b作为参数,那么shell会将\解释为“忽略下一个字符的任何特殊含义”并将参数.b传递给{{1} }。所以你需要转义grep所以shell不会这样做。您可以使用引号(与您一样)或其他\来执行此操作 - 如果您输入\,则第一个grep \\.b将转义第二个\,它将会将\传递给grep。