/home/user/ ディレクトリの次の簡単なファイル構造を想像してみてください。
/home/user
|--dir0
|--dir1
|--file1
私の現在のディレクトリは "dir1"であり、以下を使用して内部的に削除します。
rm -r ../dir1
その後も(端末でエラーが発生しません)、作業ディレクトリはまだ同じであり、コマンドを使用するときパスワード出力は次のとおりです
user@ubuntu:~/dir0/dir1$ pwd
/home/user/dir0/dir1
user@ubuntu:~/dir0/dir1$
ジョブディレクトリがファイルシステムから削除された場合、オペレーティングシステムがジョブディレクトリを "dir1"として返すのはなぜですか?
答え1
pwd
組み込みbashシェルを実行していると思います。ファイルシステムを検索せずにメモリ内のパスのみを印刷します。
$ type pwd
pwd is a shell builtin
$ /bin/pwd
/bin/pwd: couldn't find directory entry in '..' with matching i-node
答え2
映画が削除された後でも映画を見続けることができるのはなぜですか?
ファイル記述子は消えるかもしれませんが、inodeはまだ存在するためです! inodeが削除されると、ファイルは永遠に消えます!
したがって、あなたの場合、そのツリー内のすべてのファイルをcd
閉じると/
inodeがリサイクルされ、ディレクトリは永久に消えます。
覚えておいてください:これはWindowsではありません。プロのオペレーティングシステム!
;-)
リサイクル前に削除をキャンセルしない限り。
答え3
オペレーティングシステムは作業ディレクトリを"dir1"として返しませんが、シェルは返します。シェルは現在作業ディレクトリを追跡し、実行中の「pwd」コマンドはシェルに組み込まれているコマンドです。シェルは、「rm」コマンドがディレクトリを削除したことを知りません。
$ type pwd
pwd is a shell builtin
代わりに /bin/pwd を実行してみてください。
$ /bin/pwd
/bin/pwd: couldn't find directory in .. with matching i-node
答え4
ファイル(ディレクトリ)が開いています。これにより、rm
オペレーティングシステムは実際に削除せずに削除済みとしてマークされます。別のシェルインスタンスでこのディレクトリに入ろうとすると、権限cd
が拒否されます。cd
ディレクトリを終了すると、ディレクトリは実際に削除されます。