このブログを検索

2013/04/28

ハードリンクを削除したらリンク先のファイルは削除されるか?

「消えるにきまってんじゃん。そうじゃなかったらシンボリックリンクとハードリンクの区別がなくなるだろ?」
と思っていた。

しかし、よく考えると、「じゃあ、ハードリンクを作成した後で、リンクだけを削除するにはどうすればよいのか?」
という問いに答えが見つからない。

・・・・

考えても仕方がないので、実際にやってみた。
結果は、「ハードリンクを削除しても、リンク先のファイルは削除されない」となった。
これは衝撃の事実である。
「ハードリンクを削除したらリンク先も削除される」と思っている人は多いはずだ。

# ls txt
a.txt  a2.txt  a3.txt  b.txt  c.txt  ex.txt  logall.txt  p.txt  x.txt  x1.txt  x2.txt
#
# ls
a.tar  bu.pl  logall  logall.gz  main.cgi  txt  unko
#
# ln ./txt/a.txt anohardlink1
# ln ./txt/a.txt anohardlink2
#
# ls
a.tar  anohardlink1  anohardlink2  bu.pl  logall  logall.gz  main.cgi  txt  unko
# ls ./txt/
a.txt  a2.txt  a3.txt  b.txt  c.txt  ex.txt  logall.txt  p.txt  x.txt  x1.txt  x2.txt
#
# rm anohardlink1
rm: remove 通常ファイル `anohardlink1'? y
# ls
a.tar  anohardlink2  bu.pl  logall  logall.gz  main.cgi  txt  unko
# ls ./txt/
a.txt  a2.txt  a3.txt  b.txt  c.txt  ex.txt  logall.txt  p.txt  x.txt  x1.txt  x2.txt
#
#
# rm anohardlink2
rm: remove 通常ファイル `anohardlink2'? y
# ls
a.tar  bu.pl  logall  logall.gz  main.cgi  txt  unko
# ls ./txt/
a.txt  a2.txt  a3.txt  b.txt  c.txt  ex.txt  logall.txt  p.txt  x.txt  x1.txt  x2.txt
#