我正在尝试使用命令行 (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 命令的有效选项,并且您应该给出一个目标操作数。