Windows 上の Bash: mv コマンド - 自身のサブディレクトリに移動できない

Windows 上の Bash: mv コマンド - 自身のサブディレクトリに移動できない

Windows Linux サブシステムにソースから Ruby をインストールしようとしています。ホーム ディレクトリでソースから正常にビルドしました。~/ruby/ruby-2.3.0これを に移動しようとしています/opt/rubies/

移動コマンドを実行すると、次のエラーが発生します。

/# 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

ソース引数の末尾を省略して試してください/。これで、ディレクトリの内容を移動するように OS に指示しますが、ファイルやディレクトリは指定しません。これは、実際には多くの 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- ファイルに関する情報を一覧表示します。
  • 動画- ファイルまたはディレクトリを移動または名前変更します。
  • rm- ファイルを削除する(削除/リンク解除)

答え3

皆さんの回答に感謝します。しかし、これは Windows 上の Bash のベータ版のバグであることが判明しました。

開発者の一人が投稿した2016-04-11 の問題追跡システムへのコメント:

弊社の開発ブランチの 1 つに内部的に修正が加えられています。間もなく Insider ビルドに反映されるはずです。

関連情報