Shell 引用与转义:掌握单引号、双引号和反斜线的正确用法 为什么要使用引用:抑制不需要的扩展Shell 在按下 Enter 后会自动执行多种扩展(expansion),例如路径名扩展、参数扩展、命令替换等。虽然扩展强大,但有时会带来意外的后果。例如,当文件名包含空格时,Shell 的单词分割(word splitting)会将其拆成多个参数,导致命令失败。又如,echo The total is $100.00会因$1被视为未定义变量而输出空字符串。引用(quoting)机制正是为了精确控制哪些扩展生效、哪些被抑制而设计的。双引号:保留部分扩展双引号(")会抑制大多数扩展,但保留参数扩展($)、算术扩展($((...)))、命令替换(`` 或$(...))以及反斜线转义。具体来说,单词分割、路径名扩展、波浪号扩展和花括号扩展在双引号内均被阻止。双引号实战:修复含空格的文件名假设当前目录下有一个名为two words.txt的文件,直接执行ls -l two words.txt会导致 Shell 将其视为两个参数,产生错误:[me@linuxbox ~]$ls-ltwo words.txt ls: cannot access two: No suchfileor directory ls: cannot access words.txt: No suchfileor directory加上双引号后,单词分割被抑制,命令正确执行:[me@linuxbox ~]$ls-l"two words.txt"-rw-rw-r--1me me182016-02-2013:03 two words.txt更实用的场景是修复文件名中的空格。利用双引号,可以安全地将文件重命名:[me@linuxbox ~