リンク解除は、接続されていないファイルを削除します。

リンク解除は、接続されていないファイルを削除します。

ハードリンクを作成しました。

$ 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

関連情報