【问题标题】:Can't cd to directory with spaces and hyphen无法 cd 到带有空格和连字符的目录
【发布时间】:2018-01-16 18:37:14
【问题描述】:

类似于this question,我创建了一个名为Test Directory - 1 的目录,但我不能cd

我试过了:

  • cd Test\ Directory\ \-\ 1/(由 Tab 补全建议)
  • cd "Test Directory - 1"
  • cd "Test Directory - 1/"
  • cd 'Test Directory - 1'
  • cd 'Test Directory - 1/'
  • cd 'Test Directory \- 1'

所有这些都失败并抛出错误:

用法:cd [-LP] [目录]

或者:cd [ 选项 ] 旧的新的

我如何与这个目录交互?

【问题讨论】:

  • FWIW 他们都在 OS X 上的 bash 中工作...
  • @jonrsharpe 这是一个 ksh 问题。我会尝试使用 bash。 编辑:bash 工作。我将保留这个问题,以了解为什么这在 ksh 中不起作用。
  • 所有(不是最后一个)命令都可以在我的 ksh (93u+ 2012-08-01) 中使用。最后一个有cd: Test Directory \- 1: [No such file or directory]
  • 同意这也应该在ksh 中工作,并且最后一项应该失败(因为它确实如此),因为额外的 '\' 引用字符。请编辑您的 Q 以包含 echo ${.sh.version); uname -srv 的输出。检查可能覆盖内置alias | grep 'cd ' ; functions | grep 'cp ' 的别名/函数。祝你好运

标签: ksh


【解决方案1】:

您使用的系统在这里会有所不同。 在我的 Mac 上,我对引号或不带引号的目录没有任何问题:

cd Test\ Directory\ -\ 1

我的理解是空格是你必须转义的唯一字符,因为 shell 会用空格分割参数。您不需要转义 - 因为它在内置的 cd shell 中没有任何意义,就像 grep 一样。

一般来说,我会列出目录,然后将转义字符(即反斜杠)放在有问题的字符前面进行处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-03
    • 2010-10-10
    • 1970-01-01
    • 2013-08-21
    • 2014-02-25
    • 1970-01-01
    • 2016-07-22
    • 2014-08-24
    相关资源
    最近更新 更多