题 如何cd到一个名为“-2”的目录(以连字符开头)?


我有一个名为的目录:

-2

我想要进入它,但CD抱怨:

bash: cd: -2: invalid option

没有成功,我试过:

cd "-2"
cd '-2'
cd \-2

有解决方案吗

编辑:服务器上没有像mc等文件浏览器。


149
2018-01-03 20:29




超级用户的相关问题: superuser.com/questions/361573/... - yms


答案:


至少有两种方式:

  1. 使用 -- 论点。

    cd -- -2
    

    这使用了GNU工具常用的约定,即不处理之后出现的任何内容 -- 作为命令行选项。

    作为一个 评论者 注意到,这个惯例也是 在POSIX标准中定义

    默认行为: 当此部分列为“无”时,表示实现不需要支持任何选项。不接受选项但接受操作数的标准实用程序应识别 "--" 作为第一个被抛弃的论点。

    认可的要求 "--" 是因为符合要求的应用程序需要一种方法来保护其操作数不受实现可能作为扩展提供的任何选项的影响。例如,如果标准实用程序foo列为不带选项,并且应用程序需要为其指定带有前导连字符的路径名,则可以安全地执行以下操作:

    foo -- -myfile
    

    并避免任何问题 -m 用作扩展名。

    以及

    准则10:
      争论 -- 应该被接受为表示选项结束的分隔符。以下任何参数都应被视为操作数,即使它们以 '-' 字符。该 -- 参数不应该用作选项或操作数。

  2. 明确指定路径:

    cd ./-2
    

    这指定了显式命名当前目录的路径(.)作为起点。

    cd $(pwd)/-2
    cd /absolute/path/to/-2
    

    这些是上面的变化。任何数量的此类变化都是可能的;我将把它作为练习留给读者发现所有这些。


250
2018-01-03 20:32



它不仅仅是GNU,它还是POSIX标准的一部分。看到 1.11实用程序说明默认值 和 12.2实用语法指南 (准则#10)。来自 cd 页 “该 cd 效用应符合......第12.2节“。 - Dietrich Epp
现在我只是想知道如何cd到一个名为 - 的目录! - sergiol
@sergiol同样的方式。 - Michael Hampton♦
@ArtB:不。引用只会影响字段拆分。所以 "hello world" 是一个论点但是 hello world 是两个,和 "-2" 是相同的 -2。 - Dietrich Epp
@sergiol:要么 cd -- -- 要么 cd ./-- 应该管用。 - Keith Thompson


这应该工作:

cd -- -2 

- 意味着没有更多选择


48
2018-01-03 20:33





如果'-2'在当前目录中,这将起作用。

    cd ./-2

您可以通过键入 - 并按Tab键自动完成。


25
2018-01-04 06:19





cd /home/...../-2也有效。提供访问的完整路径。


10
2018-01-04 02:46





只是为了补充,如果您要删除/删除此目录,可以使用以下命令:

rm -r -- -2

6
2018-01-04 14:14





我知道这个问题已经得到了回答。如果有人有像我这样的情况,这对他们来说:

我运行了一个java应用程序,它正在寻找一个以。开头的目录 <path>,我应该在运行应用程序之前用正确的路径替换它。但是,我忘了那样做。该应用程序创建了一个名为 <path>

我试过了 cd <path>  - 给了我错误“-bash:意外令牌换行附近的语法错误” 基于这里的建议(我明白它的目录以 - 而不是<)开始我尝试了 cd -- <path>。但是,我得到了同样的错误。

当我尝试 cd \<path>\  - 这个工作!

背景信息:

符号“<”和“>”用于重定向STDIN和STDOUT,因此需要对它们进行转义,以使shell不将它们解释为重定向。


-1
2017-07-05 14:00