我有一个外部程序,它生成带有负整数字符串的目录。我正在尝试使用基本的 shell 命令,包括cd
此ls
目录,例如:
cd -78059735
可以理解的是,这会失败,因为这看起来像以 -7 开头的命令行选项。
-bash: cd: -7: 无效选项
同样,这些变体也会失败:
cd "-78059735"
cd "\-78059735"
cd '-78059735'
cd '\-78059735'
cd \-78059735
如何通过 shell 与这个麻烦的目录进行交互?
答案1
这是因为该命令cd
将后跟的字符视为-
有效的选项标志以使其起作用。由于7
它不是有效的,因为cd
它因您看到的错误而失败。
在这种情况下,您可以通过在命令名称前添加双破折号来指定命令行选项的结尾,--
如下所示。下面的命令意味着命令行选项cd
是完整的,并且有不之后预期的其他标志--
cd -- -78059735/
您甚至可以在之前提供其他标志,--
这样就可以正常工作。下面的命令mkdir
需要一个选项-p
来创建一个目录,如果它之前不存在,则可以很好地处理具有 的字符串-
,前提是您在之后给出命令行选项标志的结束-p
mkdir -p -- /tmp/-78059735
ls -d /tmp/*
/tmp/-78059735
rm
删除目录的命令也可以正常工作,如下所示
rm -vrf -- /tmp/-78059735
removed directory '/tmp/-78059735'
答案2
cd ./-78059735
ls ./-78059735
这个对我有用。