单个引号或Unix shell中的文件路径中没有引号

时间:2018-04-27 20:39:01

标签: file unix terminal scripting command

我是Unix系统的新手,并试图在终端的帮助下学习一些东西。我心中有以下问题。如果我们可以在终端中编写没有单引号的文件路径(例如:mv path1 path2),那么为什么我们有时会使用单引号来指定路径。这两者有什么区别?

2 个答案:

答案 0 :(得分:1)

它用于转义文件名中的空格,否则需要反斜杠。例如:

$ rm spaces\ in\ file\ name
$ rm 'spaces in file name'

如果您的文件路径没有空格,则省略引号可能是安全的。

答案 1 :(得分:1)

这不是操作系统的问题,而是您使用的shell的问题。如果安装了多个shell,您实际上可以选择要在unixoid系统上使用的shell(通常是这种情况)。

通常,shell必须解释您输入的内容。它必须决定如何处理输入的标记。要考虑的是你想要执行的“命令”,什么是参数。对于参数,它必须决定字符串是作为单个参数还是多个参数。

如果没有引号(单引号或双引号),空格字符被视为单词之间的分隔符,则单词通常被视为单独的参数。因此,您可以为单个命令指定多个参数。如果,则可以使用引号字符将由空白字符分隔的多个单词分组为单个参数,例如包含空格字符的文件夹名称。这是有效的,因为现在shell知道你希望引号字符后面的所有内容都被视为一个单个参数,直到下一个匹配的引号字符(实际上除了转义符号...)。