ハードリンクを作成すると、両方の名前のハードリンク数が増えます。

ハードリンクを作成すると、両方の名前のハードリンク数が増えます。
gui@Latitude:~$ cd playground
gui@Latitude:~/playground$ ls -l
total 8
drwxrwxr-x 2 gut gut 4096 set 20 16:18 dir1
-rw-r--r-- 1 gut gut 2903 set 20 14:46 gato
gui@Latitude:~/playground $ ln gato gato-rato
gui@Latitude:~/playground $ ls -l
total 12
drwxrwxr-x 2 gui gui 4096 set 20 16:18 dir1
-rw-r--r-- 2 gui gui 2903 set 20 14:46 gato
-rw-r--r-- 2 gui gui 2903 set 20 14:46 gato-rato
gui@Latitude:~/playground $

明確に助けてください。

drwxrwxr-x 2 gut gut 4096 set 20 16:18 dir1

答え1

私の考えでは、あなたの考えが少し間違っていると思います。 gatoとgato-ratoは、異なる(しかしリンクされた)ファイルではなく、2つの名前です。同じファイルについて。これらの名前(より技術的にはディレクトリエントリ)が計算される「リンク」です。

ls -liデフォルトでは、ボリュームのファイルID番号であるinode番号を調べると便利です。私のシステムの楽しみは次のとおりです。

Gordons-MBP:playground gordon$ ls -li
total 8
12931424970 drwxr-xr-x  2 gordon  staff  64 Sep 20 21:38 dir1
12931424987 -rw-r--r--  1 gordon  staff   7 Sep 20 21:39 gato
Gordons-MBP:playground gordon$ ln gato gato-rato
Gordons-MBP:playground gordon$ ls -li
total 16
12931424970 drwxr-xr-x  2 gordon  staff  64 Sep 20 21:38 dir1
12931424987 -rw-r--r--  2 gordon  staff   7 Sep 20 21:39 gato
12931424987 -rw-r--r--  2 gordon  staff   7 Sep 20 21:39 gato-rato

「gato」と「gato-rato」の両方のディレクトリエントリがinode#12931424987に接続されていることを確認できます。この inode には 2 つのディレクトリエントリが関連付けられているため、リンク数は 2 です。

同様に、サブディレクトリへの2番目のリンクもあります。

Gordons-MBP:playground gordon$ ls -lid dir1 dir1/.
12931424970 drwxr-xr-x  2 gordon  staff  64 Sep 20 21:38 dir1
12931424970 drwxr-xr-x  2 gordon  staff  64 Sep 20 21:38 dir1/.

したがって、現在のディレクトリの "dir1"エントリとディレクトリ自体の "."エントリはinode#12931424970への2つのリンクです。

答え2

たとえ話をしましょう。

複数の章で構成された本を考えてみましょう。私の本のアルファベット順のインデックスに「ゆで卵」の章の項目があります。私はこのインデックスにアイテムを作成するたびに、その章の上部にアイテム数を知らせるメモを作成します。 「Cooking」の下の「C」の下だけでなく、「Eggs」の下の「E」の下でも章を見つけることができるように、「卵、料理」というインデックスに別の項目を追加することにしました。以下の章を見つけてください。また、インデックスに2つのエントリがあることを思い出させるために、この章の上部にある注意事項を更新しました。

まだ章は1つしかありませんが、インデックスには2つの項目があります。索引の項目は、より正確でも正確ではありません。どちらも同じように有効です。

echo 'Recipe for cooking an egg' >'Cooking an egg'
ln 'Cooking an egg' 'Egg, cooking'

ls -lid Cooking*

ファイルへの2つのリンクがあることを示すこのエントリが表示されます。このコマンドはまた、本のページ番号である可能性があるinode番号を提供します。

ls -lid Egg*

ここでは同じファイル(本の同じ章)への別の参照であるため、同じ情報を取得できます。また、ファイルに2つのリンクがあることを知らせます。たとえ話では、索引項目の数は章とともに保存されることを覚えておいてください。ここでも同様です。リンク数はファイル名ではなくファイルとともに保存されます。

重要なことは、ファイル名の1つを削除することができ、ファイルは存在し続けることです。例えば、これはインデックスから項目を削除するのと同じです。章は、インデックス内の項目数が0に達するまで残ります。その後、その章は削除されます。

関連情報