ハードリンクを作成しました。
$ ln hours.sh hours_link
試験を受ける
$ ls -l hours*
-rw-r--r-- 2 me staff 653 Apr 12 2018 hours.sh
-rw-r--r-- 2 me staff 653 Apr 12 2018 hours_link
接続を解除して削除します。
$ unlink hours_link
$ ls -l hours*
-rw-r--r-- 1 me staff 653 Apr 12 2018 hours.sh
これまでは大丈夫でしたが、unlink
リンクではなく元のファイルを削除できます。
$ cp hours.sh hours.bak.sh
$ unlink hours.sh
$ ls | grep hours.sh
#not return anything, hours.sh is deleted
マニュアルを見て本当に驚きました。
unlink - call the unlink function to remove the specified file
rm - remove files or directories
この遷移を当然のことではなく、どのように理解できますか?
答え1
ディレクトリ内の各エントリはファイルへのハードリンクです。両方ともハードリンクをrm
削除します。unlink
ファイルへのすべてのハードリンクが削除され、ファイルが開いているプロセスがない場合にのみファイルが削除されます。
したがって、元の名前とを使用して作成した名前に違いはありませんln
。