我有一个目录名为:

-2


我想进入CD,但CD抱怨:

bash: cd: -2: invalid option


没有成功,我尝试过:

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


任何解决方案?服务器。

评论

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

#1 楼

至少两种方式:使用--参数。

cd -- -2


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

正如注释者所述,POSIX标准中也定义了此约定:


默认行为:当本节被列为“无”时,表示该实现不需要任何选项。不接受选项但接受操作数的标准实用程序应将"--"识别为要丢弃的第一个参数。

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

foo -- -myfile


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


以及:


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



明确指定路径:

cd ./-2


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

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


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



评论


它不仅是GNU,而且是POSIX标准的一部分。请参见1.11实用程序说明默认值和12.2实用程序语法准则(准则10)。在cd页面上,“ cd实用程序应符合...第12.2节”。

– Dietrich Epp
2013年1月3日23:40



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

– Sergiol
2013年1月4日14:58

@sergiol以同样的方式。

–迈克尔·汉普顿
2013年1月4日15:10

@ArtB:否。报价仅会影响字段拆分。因此“ hello world”是一个参数,而hello world是两个参数,“-2”与-2相同。

– Dietrich Epp
13年1月4日在20:42

@sergiol:cd--或cd ./--应该都可以。

–基思·汤普森(Keith Thompson)
13年1月5日,下午2:31

#2 楼

这应该起作用:

cd -- -2 


-意味着没有更多选择

#3 楼

如果当前目录中有“ -2”,这将起作用。

    cd ./-2


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

#4 楼

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

#5 楼

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

rm -r -- -2


评论


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

–尼克
18-11-22在12:58

#6 楼

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

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

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

当我尝试cd \<path>\时-可行!

背景信息:

符号“ <”和“>”用于重定向STDIN和STDOUT,因此需要转义它们才能使外壳程序不将它们解释为重定向。