如何使用此名称进入“ -2”目录(以连字符开头)?


169

我有一个目录名为:

-2

我想要CD,但CD抱怨:

bash: cd: -2: invalid option

没有成功,我尝试过:

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

有什么办法吗?

编辑:服务器上没有可用的文件浏览器,如mc等。


2
有关超级用户的
yms

Answers:


272

至少两种方式:

  1. 使用--参数。

    cd -- -2
    

    这使用了GNU工具通用的约定,即不要将之后出现的任何内容--视为命令行选项。

    正如评论者所指出的,此约定也在POSIX标准中定义

    默认行为:当此部分列出为“无”时,表示该实现不需要支持任何选项。不接受选项但接受操作数的标准实用程序应将其"--"视为要丢弃的第一个参数。

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

    foo -- -myfile
    

    并避免将-m用作扩展名。

    以及

    准则10:应接受
    该参数--作为指示选项结束的定界符。以下所有参数都应视为操作数,即使它们以'-'字符开头。该--参数不应用作选项或操作数。

  2. 明确指定路径:

    cd ./-2
    

    这指定了将当前目录(.)明确命名为起点的路径。

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

    这些是上面的变化。任何数量的这种变化都是可能的。我会将其作为练习让读者发现所有这些。


23
它不仅是GNU,而且是POSIX标准的一部分。请参见1.11实用程序描述默认值12.2实用程序语法准则(准则10)。从cd页面cd实用程序应符合...第12.2节”。
Dietrich Epp

现在,我只是好奇如何将CD刻录到名为-的目录中!
sergiol 2013年

2
@sergiol同样。
迈克尔·汉普顿

1
@ArtB:否。报价仅会影响字段拆分。因此"hello world"一个参数hello world是两个,并且"-2"与相同-2
Dietrich Epp 2013年

1
@sergiol:要么cd -- --还是cd ./--应该工作。
基思·汤普森


26

如果“ -2”在当前目录中,则可以使用。

    cd ./-2

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


11

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


7

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

rm -r -- -2

...而且只是为了补充,我永远也不会这么做,而是我将使用mc之类的图形工具,或者先重命名目录。
尼克,

-1

我知道这个问题已经回答了。如果有人遇到像我这样的情况,这是给他们的:

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

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

当我尝试cd \<path>\-这有效!

背景信息:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.