分页: 1 / 1
求助?关于shell中单引号的用法一疑问
发表于 : 2012-03-01 19:17
由 fz420
请问下大家为什么 grep 里的 斜杠 可以用来转义???
redhat的文档是说“单引号”可以防止所有扩展,我的理解是:对于单引号来说,相当于可以转义单引号范围内的所有特殊字符才对吧??
Re: 求助?关于shell中单引号的用法一疑问
发表于 : 2012-03-01 20:54
由 fz420
找到答案了,给兄弟们补上
这个和grep本省没有关系,而是和shell有关系,
比如:
grep "\\" file 这个为什么会失败呢?
因为用双引号,shell先把\\转义,就成了\,grep接收到的只有\,\是特殊字符,后面应该跟需要转义的字符,所以只有一个\就出错了。
如果用双引号,查找一个\,就应该用四个\:
grep "\\\\" file 这样就对了,这样等同于:
grep '\\' file
第一条命令shell把四个\,转义成2个\传递给grep,grep再把2个\转义成一个\查找
第二条命令shell没转义,直接把2个\传递给grep,grep再把2个\转义成一个\查找
其实grep执行的是相同的命令。
Re: 求助?关于shell中单引号的用法一疑问
发表于 : 2012-03-02 0:25
由 zcf115
grep '\\' file 。这个省事。
Re: 求助?关于shell中单引号的用法一疑问
发表于 : 2012-03-02 0:29
由 枫叶饭团
还好python有r

Re: 求助?关于shell中单引号的用法一疑问
发表于 : 2012-03-02 8:29
由 tosail2010
fz420 写了:找到答案了,给兄弟们补上
这个和grep本省没有关系,而是和shell有关系,
比如:
grep "\\" file 这个为什么会失败呢?
因为用双引号,shell先把\\转义,就成了\,grep接收到的只有\,\是特殊字符,后面应该跟需要转义的字符,所以只有一个\就出错了。
如果用双引号,查找一个\,就应该用四个\:
grep "\\\\" file 这样就对了,这样等同于:
grep '\\' file
第一条命令shell把四个\,转义成2个\传递给grep,grep再把2个\转义成一个\查找
第二条命令shell没转义,直接把2个\传递给grep,grep再把2个\转义成一个\查找
其实grep执行的是相同的命令。
2个命令的共同点:
grep再把2个\转义成一个\查找
不同点:单引号和双引号在使用上的区别;单引号中字符串就是一串普通字符串,而双引号则不是,有特殊字符的说法,其中\ (backslash) 就是一个。
Re: 求助?关于shell中单引号的用法一疑问
发表于 : 2012-03-02 8:40
由 自由建客
剥洋葱一样,关键是要明白是谁在剥,剥到最后那个要剥的人还有没有得剥。
Re: 求助?关于shell中单引号的用法一疑问
发表于 : 2012-03-02 20:48
由 fz420
自由建客 写了:剥洋葱一样,关键是要明白是谁在剥,剥到最后那个要剥的人还有没有得剥。
很有道理啊!我最开始没有搞明白的,就是不理解有“剥”这个动作,以为只是简单的原样传递……