Answers:
至少两种方式:
使用--
参数。
cd -- -2
这使用了GNU工具通用的约定,即不要将之后出现的任何内容--
视为命令行选项。
正如评论者所指出的,此约定也在POSIX标准中定义:
默认行为:当此部分列出为“无”时,表示该实现不需要支持任何选项。不接受选项但接受操作数的标准实用程序应将其
"--"
视为要丢弃的第一个参数。识别的要求
"--"
是因为符合标准的应用程序需要一种方法来屏蔽其操作数,使其不受实现可能提供的扩展的任意选项的影响。例如,如果标准实用程序foo被列为不带任何选项,并且应用程序需要为其指定路径名并带有前导连字符,则可以安全地执行以下操作:foo -- -myfile
并避免将-m用作扩展名。
以及:
准则10:应接受
该参数--
作为指示选项结束的定界符。以下所有参数都应视为操作数,即使它们以'-'
字符开头。该--
参数不应用作选项或操作数。
明确指定路径:
cd ./-2
这指定了将当前目录(.
)明确命名为起点的路径。
cd $(pwd)/-2
cd /absolute/path/to/-2
这些是上面的变化。任何数量的这种变化都是可能的。我会将其作为练习让读者发现所有这些。
"hello world"
一个参数hello world
是两个,并且"-2"
与相同-2
。
cd -- --
还是cd ./--
应该工作。
我知道这个问题已经回答了。如果有人遇到像我这样的情况,这是给他们的:
我运行了一个Java应用程序,它正在寻找以开头的目录<path>
,我应该在运行该应用程序之前将其替换为正确的路径。但是,我忘了这么做。该应用程序创建了一个名为的目录<path>
。
我尝试cd <path>
-给我错误“ -bash:意外令牌换行符附近的语法错误”基于这里的建议(我知道它的目录以-开头,而不是<),我尝试了cd -- <path>
。但是,我遇到了同样的错误。
当我尝试cd \<path>\
-这有效!
背景信息:
符号“ <”和“>”用于重定向STDIN和STDOUT,因此需要转义它们以使Shell不会将它们解释为重定向。