Bash在扫描命令行的过程中,类似于编译器的预编译过程。Bash首先在文本层次上,优先解释所有的特殊字符,再对转换完成的新命令行进行内核的系统调用。
有三种转义符:单引号,双引号,反斜杠。如要要让通配符,或者元字符变成普通字符,就需要用到转义符.
字符 | 说明 |
‘’(单引号) | 又叫硬转义,其内部所有的shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。 |
“”(双引号) | 又叫软转义,其内部只允许出现特定的shell 元字符:$用于参数代换 `用于命令代替 |
\(反斜杠) | 又叫转义,去除其后紧跟的元字符或通配符的特殊意义。 |
具体可参看:点击打开链接
(1) 单引号(''): 在命令行中,单引号引用的部分的所有特殊字符均按照普通字符解释,如下所示:
(2)反引号(``): 反引号作用相当于命令替换,Bash处理时引用的部分会被优先执行,执行结果被替换到外层的命令行文本中;反引号可以嵌套使用,但是嵌套时内部的反引号必须进行转义处理。
(先执行ls,将结果作为echo的输出)
(3)双引号(""): 双引号引用的部分,仅解释美元符号$、转义符\(目前测试发现只进行如下字符的转义--\$、\"、\\、)和反引号`,解释后的文本仅按照普通文字处理,即同单引号的处理。
(4)反斜杠(\): 如上所述,反斜杠具有转义的作用。除此之外,其可用于命令换行,并作为echo -e的特殊字符说明,处理时不会将它当成一般文字输出。
(命令换行示例)
(特殊字符处理示例)
特殊字符包括以下字符:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符。