Linux bash脚本和命令grep是否对单引号有不同的处理方式

Linux bash脚本和命令grep是否对单引号有不同的处理方式,linux,bash,Linux,Bash,在高级Bash脚本指南中,我发现 在单引号中,除' 逐字解释 因此,我认为grep'\'file.txt将搜索\,而不是单词的。但它确实搜索了 #!/bin/bash grep '\<the\>' file.txt #/bin/bash grep'\'file.txt 已添加 也许我没有清楚地描述我的问题。在手册页中 将字符括在单引号中会保留引号中每个字符的文字值 所以我的问题是:既然bash将单引号中的封闭字符视为文本值,为什么在grep中'\'被视为的?它是不是与bash不

在高级Bash脚本指南中,我发现

在单引号中,除' 逐字解释

因此,我认为
grep'\'file.txt
将搜索
\
,而不是单词
。但它确实搜索了

#!/bin/bash

grep '\<the\>' file.txt
#/bin/bash
grep'\'file.txt
已添加
也许我没有清楚地描述我的问题。在手册页中

将字符括在单引号中会保留引号中每个字符的文字值


所以我的问题是:既然bash将单引号中的封闭字符视为文本值,为什么在grep中
'\'
被视为
?它是不是与bash不同的grep
自己的特性?

您需要添加另一个反斜杠
\
,以匹配整个模式,因为符号
\
是grep的专用符号。引用手册页:
mangrep

反斜杠字符和特殊表达式

  The symbols \< and \> respectively match the empty string at the beginning and end
  of  a  word. 
符号\<和\>分别匹配开头和结尾的空字符串
一句话。

您需要添加另一个反斜杠
\
以匹配整个图案,因为符号
\
对于
grep
是特殊的。引用手册页:
mangrep

反斜杠字符和特殊表达式

  The symbols \< and \> respectively match the empty string at the beginning and end
  of  a  word. 
符号\<和\>分别匹配开头和结尾的空字符串
一句话。
事实上,
bash
会按字面意思传递字符串

解释字符串(作为正则表达式)的是
grep
。如果要避免这种情况,请使用
grep-F
。使用该选项,
grep
将逐字搜索给定字符串。

实际上,
bash
将逐字传递字符串


解释字符串(作为正则表达式)的是
grep
。如果要避免这种情况,请使用
grep-F
。使用该选项,
grep
将逐字搜索给定的字符串。

事实上,
grep
是理解引号的一个糟糕的例子,因为正则表达式中的许多字符对
grep
有特殊意义。事实上,
grep
是理解引号的一个糟糕的例子,因为正则表达式中的许多字符对
grep
具有特殊意义。另请参见强制xkcd:另请参见强制xkcd: