在 Shell 中,反斜杠 的核心作用就是 “脱去特殊含义,还原为普通字符”(也就是所谓的“转义”)。
不过,有一个极其重要的例外,以及几个特殊情况需要你注意,否则会掉进坑里。
1. 万能的规则(你的理解)
对于绝大多数字符, 确实就是让它变成“字面意义”:
● * → 就是一个星号 * ,不再是“通配符”。
● → 就是一个美元符 ,不再是“变量符号”。
● | → 就是一个竖线 | ,不再是“管道”。
● → 就是一个空格,不再是“分隔符”。
2. 唯一的“例外”:单引号 '
在单引号里面是失效的!
这是 Shell 解析机制里最反直觉的一点。
● 在单引号 '...' 里面,所有字符(包括 )都只能保持原样,没有任何特殊功能。
结论:如果你想让 * 变成普通字符,用 * (在双引号或无引号中)或者 '*' 。不要试图在单引号里用 去转义其他符号,没用。
特殊情况: n 和 t (反向魔法)
这是 最迷人的地方:它不仅能“去除”特殊含义,还能“赋予”特殊含义。
● n :这不是“去除”含义,而是组合出新含义。它代表换行符(回车)。
● t :代表制表符(Tab 键)。
● :代表字面上的 符号(这个就是去除含义)。
注意:这通常需要配合 echo -e 或者 $'...' 语法使用。在普通字符串中, n 可能只是两个普通字符。