Windows 上的 Bash:mv 指令 - 無法移動到自身的子目錄

Windows 上的 Bash:mv 指令 - 無法移動到自身的子目錄

我正在嘗試從 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/’

難道我做錯了什麼?

答案1

嘗試不帶尾隨/源參數。這樣,您就告訴作業系統移動目錄的內容,但不指定文件,而不是目錄。這實際上是許多 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/

答案2

難道我做錯了什麼?

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- 移動或重新命名檔案或目錄。
  • R M- 刪除檔案(刪除/取消連結)

答案3

感謝大家的回复,但事實證明這是 Windows 上 Bash 測試版的錯誤。

其中一位開發者發布了於 2016-04-11 對其問題追蹤器發表評論:

我們在一個開發分支上進行了內部修復。不久之後應該就會迎來內部人士的建設。

相關內容