mv 命令将目录名与命令选项混淆

use*_*557 12 linux mv

我有一个名为 的目录--pycache--,我需要将其移至__pycache__. 以mv下列方式使用该命令,给我列出的输出。我如何使用CLI来做我想做的事?

$ mv --pycache-- __pycache__
/bin/mv: unrecognized option '--pycache--/'
Run Code Online (Sandbox Code Playgroud)

vte*_*est 22

这是文件名/目录以不太传统的符号开头的标准问题。您的问题是 mv 将 --pycache-- 视为长选项名称(因为它以 -- 开头,因此也有短选项,它们以 - 开头)。有关多头和空头选项的详细信息,请参阅getopt 的联机帮助页。

在这种情况下的标准解决方法是使用一个空双破折号-所有的参数,它告诉命令之前(在你的情况MV,但会与他人,CP例如工作)停止治疗对象的选项。下面,并把它作为论据。

因此,您的命令将变为:

$ mv -- --pycache--/ __pycache__
Run Code Online (Sandbox Code Playgroud)

并且不会失败。

  • 很好的答案,但我认为您的意思是 *--* 告诉命令停止将后面的内容视为选项并将其视为参数,而不是相反。 (8认同)
  • @Kevin 仅当参数是文件名时才有效。 (3认同)

yms*_*yms 16

您的第一个字符-对于mv命令来说是不明确的(或者更确切地说,它明确表示后面跟着一个选项名称)。

试试这个:

mv ./--ppycache-- __pycache__
Run Code Online (Sandbox Code Playgroud)

来源:linux.about.com

  • +1 表示如果命令不支持也可以使用的替代解决方案 - (2认同)