シェルで現在のディレクトリの名前を変更する - 可能ですか?

シェルで現在のディレクトリの名前を変更する - 可能ですか?

シェルで現在の作業ディレクトリの名前を変更することは可能ですか(私の特別な場合はBash)。簡単な方法でこれを実行しようとするとエラーが発生します。

nathan@nathan-desktop:/tmp/test$ mv . test2
mv: cannot move ‘.’ to ‘test2’: Device or resource busy

現在のディレクトリを変更せずにこれを行う方法はありますか?親ディレクトリに変更すると、簡単にこれを実行できることがわかりますが、これが必要かどうか疑問に思います。結局のところ、別のシェルからディレクトリの名前を変更すると、後で元のシェルからファイルを作成できます。

ベストアンサー1

はい、しかし、シンボルを使わずに名前でディレクトリを参照する必要があります.。相対パスを使用できます。これは.or以外のパスで終わります..

/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"動作します。

おすすめ記事