【问题标题】:Use Dir.chdir to work with a path name with spaces in it使用 Dir.chdir 处理带有空格的路径名
【发布时间】:2021-08-26 00:02:30
【问题描述】:

在 Mac OSX 上,使用 Ruby Dir 类,我想更改为其中包含空格的目录。我试过了:

Dir.chdir('/Users/Chris/Library/Application\ Support')

但收到异常

Errno::ENOENT: No such file or directory

我该怎么做?

【问题讨论】:

  • 我无法使用第一行代码重现此错误。该代码可以在不转义空格的情况下工作。我正在使用 BigSur 和 ruby​​ 2.6.5/3.0.1。
  • 很奇怪,现在可以了。我以为我在粘贴之前测试了控制台中的每一行。我将编辑问题以删除 ``` Dir.chdir('/Users/Chris/Library/Application Support')``` 尝试,然后如果您愿意,可以回答。

标签: ruby macos


【解决方案1】:

不要在单引号内转义空格

不要转义单引号内的空格。如果这样做,字符串将包含一个文字引号字符,它与您的目录名称不匹配。考虑:

'\ '
#=> "\\ "

如果名称中有空格,请使用正确的引号而不需要对空格进行转义。示例包括:

Dir.chdir '/Users/Chris/Library/Application Support'
Dir.chdir "/Users/Chris/Library/Application Support"
Dir.chdir %q(/Users/Chris/Library/Application Support)

在某些情况下,您可能需要在单引号内转义(例如转义单引号字符,例如 '\''),但您的示例不是其中之一。

【讨论】:

    猜你喜欢
    • 2019-05-05
    • 2010-09-08
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2021-08-16
    • 2021-03-31
    相关资源
    最近更新 更多