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

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

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

mv \-a "a"
mv '\-a' "a"
mv "\-a" "a"

但得到了

mv: illegal option -- a
usage: mv [-f | -i | -n] [-v] source target
   mv [-f | -i | -n] [-v] source ... directory

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

答案1

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

mv /path/to/-a a
mv ./-a a

或者一些(并非所有) 命令都支持--作为选项和位置参数之间的分隔符。这取决于您使用的特定命令。

mv -- -a a

答案2

mv -- -a a

'--' 告诉 shell 这后面的内容不是命令的选项。

所有变体在对引号和反斜杠进行评估后都会给出命令,mv -a a因此您会被告知选项“-a”不是 mv 命令的有效选项,并且您应该给出一个目标操作数。

相关内容