【问题标题】:Single Quotes or No quotes in file paths in Unix shellsUnix shell 中文件路径中的单引号或无引号
【发布时间】:2018-10-08 17:54:20
【问题描述】:

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

【问题讨论】:

    标签: file unix terminal scripting command


    【解决方案1】:

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

    一般来说,shell 必须解释您所做的输入。它必须决定如何处理输入的标记。什么是你想要执行的“命令”,什么是参数。对于参数,它必须决定字符串是作为单个参数还是多个参数。

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

    【讨论】:

    • 如果我想移动所有pdf文件,是否必须使用引号?
    • 为什么会这样?您想使用通配符来定位遵循给定名称方案的所有文件,如果这就是“所有 pdf 文件”的意思(文件不必具有“.pdf”文件扩展名才能成为 pdf 文档...... )。但是是否要使用引号取决于您是否需要它们。因此,您是否需要在基本文件名本身的路径文件夹名称中指定空白字符。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2013-09-10
      • 1970-01-01
      • 2011-10-25
      • 2011-04-10
      相关资源
      最近更新 更多