問題
Ubuntu 18.04 の Windows Subsystem for Linux を使っていました。次のコマンドを実行しました。
mv venv ../d/
その後、venv ディレクトリが現在のディレクトリにも d にも見つからなくなりました。.bash_history でコマンドを再確認しました。ここで、venv はフォルダーで、d は Windows の D: ドライブ上にある /mnt/d/ubuntu1804/ へのリンクです。
しかし、次のコマンドを実行すると、
mv a.txt ../d/
問題なく動作し、ファイルは d の中に見つかりました。
現在の作業ディレクトリは c で、これは /mnt/c/ubuntu1804/ へのリンクです。
解決方法
ディレクトリは失われていませんでした。実際には、C: ドライブのルート直下にある d という名前のディレクトリへ移動されていました。
WSL では、シンボリックリンクと .. を含むパスを通してファイルを移動すると、このような混乱が起こることがあります。パスが期待した場所に解決されない場合があります。破壊的な移動を実行する前に、次のコマンドで実際の物理パスを確認してください。
pwd
pwd -P
ls -ld ../d
readlink -f ../d
より安全な方法は、実際のマウントパスを直接使うことです。
mv venv /mnt/d/ubuntu1804/
この問題が起きた場合は、Windows または WSL から、想定外の移動先に移動されたディレクトリを探します。たとえば次のようにします。
ls /mnt/c/d
その後、本来意図していた D: ドライブのパスへ戻します。
mv /mnt/c/d/venv /mnt/d/ubuntu1804/
