对于shell的转义的问题,查看了好多文章都是针对于转义本身用法的,却没有说明在命令中的用法问题,实际上我们在使用转义时大多是在grep等各种命令之中,博主特意进行了一些研究实验,针对多层转义的问题得出了一些有用的结论,有兴趣的小伙伴可以一起来探讨。
首先对转义进行一个简单说明:
meta是元语言的意思,即当前命令作用域下的特殊含义字符,包括空格,$,',",\等等,主要是区分为命令meta和shellmeta,而且在不同的命令作用域下meta是不同的。
针对shell命令行作用域下:
无引号将先处理所有shell的meta。
单引号为硬转义,shell的meta在内部应无效。
双引号为软转义,大部分shellmeta无效,但$,\,`不会失效。
下面先给出博主试验后得出的结论:
多层转义原理:在命令中使用引号例如grep时,它的转义有两层,一层是shell本身的mate,这一层可以用echo命令测试输出,经过这一层转义之后的结果会进入grep命令,并在grep中进行第二层的转义,例如当grep利用双引