如何在 Shell (Zsh) 中的命令中转义“-”?

Dee*_*mar 1 command-line bash zsh

我正在尝试使用命令行(zsh shell)将名为“-a”的文件重命名为“a”。我尝试过以下方法

mv \-a "a"
mv '\-a' "a"
mv "\-a" "a"
Run Code Online (Sandbox Code Playgroud)

但得到了

mv: illegal option -- a
usage: mv [-f | -i | -n] [-v] source target
   mv [-f | -i | -n] [-v] source ... directory
Run Code Online (Sandbox Code Playgroud)

每一次。有没有办法在 shell 中转义“-a”或任何其他命令选项?

Byt*_*der 5

当您需要指定以破折号开头的文件名作为命令的参数时(这可能会将其解释为选项),您可以改为写入该文件的绝对或显式相对路径:

mv /path/to/-a a
mv ./-a a
Run Code Online (Sandbox Code Playgroud)

或者,某些(不是全部)命令支持--作为选项和位置参数之间的分隔符。这取决于您使用的具体命令。

mv -- -a a
Run Code Online (Sandbox Code Playgroud)