Windows上的Bash:mv命令 - 无法移动到自身的子目录


1

我正在尝试从Windows Linux子系统上的源安装Ruby。我已经从我的主目录中的源代码成功构建了:~/ruby/ruby-2.3.0我正在尝试将其移动到/opt/rubies/

当我运行move命令时,我收到以下错误:

/# mv ~/ruby/ruby-2.3.0/ /opt/rubies/
mv: cannot move ‘/root/ruby/ruby-2.3.0/’ to a subdirectory of itself, ‘/opt/rubies/ruby-2.3.0

这是非常令人困惑的,因为我正在将目录移动到一个完全不同的位置,而不是路径本身所显示的本身的子目录。

它对我的主目录下的任何移动命令都做同样的事情:

~# mv test/ /
mv: cannot move test/’ to a subdirectory of itself, ‘/test

我似乎无法复制任何文件:

~# cp ruby/ruby-2.3.0/ /opt/rubies/ruby-2.3.0
cp: omitting directory ruby/ruby-2.3.0/’

难道我做错了什么?

Answers:



1

难道我做错了什么?

mv ~/ruby/ruby-2.3.0/ /opt/rubies/

你需要删除两个尾随/s。

目录是否/opt/rubies/ruby-2.3.0已存在?通过运行检查:

ls /opt/rubies/ruby-2.3.0

如果确实存在,请运行以下命令将其删除:

rm -rf /opt/rubies/ruby-2.3.0

现在使用以下命令执行移动:

mv ~/ruby/ruby-2.3.0 /opt/rubies

这将创建目录 /opt/rubies/ruby-2.3.0


进一步阅读

  • Linux的Bash命令行的AZ索引 - 与Bash命令行相关的所有内容的出色参考。
  • ls - 列出有关文件的信息。
  • mv - 移动或重命名文件或目录。
  • rm - 删除文件(删除/取消链接)

无论有没有尾部斜杠都会失败。我已经确认目标目录也是空的。
Sly_cardinal 2016年

0

尝试没有/源参数的尾随。在那里,您告诉操作系统移动目录的内容但不指定文件,而不是目录。这实际上是许多unix系统遵循命令的惯例。

所以代替: mv ~/ruby/ruby-2.3.0/ /opt/rubies/

尝试: mv ~/ruby/ruby-2.3.0 /opt/rubies/

您还需要确保没有运行PWD =〜/ ruby​​ / ruby​​-2.3.0的命令,因为那时您正在尝试移动您所在的目录。 cd ~; mv ~/ruby/ruby-2.3.0 /opt/rubies/


我已经尝试了所有尾部斜杠的组合 - 有和没有 - 它仍然会给出相同的错误。在第一个例子中,我正在运行命令,PWD = /所以我不在被移动的目录中。
Sly_cardinal 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.