シェル内(私の特定の場合はBash)から現在の作業ディレクトリの名前を変更することは可能ですか?これを簡単な方法で実行しようとすると、エラーが発生します:
nathan@nathan-desktop:/tmp/test$ mv . test2 mv: cannot move ‘.’ to ‘test2’: Device or resource busy
現在のディレクトリを変更せずにこれを行う別の方法はありますか?親ディレクトリに変更することで簡単にこれを実現できることはわかっていますが、これが必要かどうか知りたいのです。結局、ディレクトリの名前を別のシェルから変更しても、後で元のシェルでファイルを作成できます。
回答
はい。ただし、.
表記。相対パスを使用できます。.
または..
以外で終了する必要があります:
/tmp/test$ mv ../test ../test2 /tmp/test$ pwd /tmp/test /tmp/test$ pwd -P /tmp/test2
絶対パスを使用できます:
/tmp/test$ cd -P . /tmp/test2$ mv "$PWD" "${PWD%/*}/test3" /tmp/test2$
同様に、rmdir .
は機能しませんが、rmdir "$PWD"
は機能します。
コメント
- 完璧…まさに私が望んでいた答えです。
- 基本的な問題は、'特別な
。"および .. "の名前。