创建硬链接会增加两个名称的硬链接计数

创建硬链接会增加两个名称的硬链接计数
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 不是两个不同(但链接)的文件,它们是两个名称对于同一个文件。这些名称——或者更技术地说,目录条目——是正在计算的“链接”。

使用查看 inode 编号可能会有所帮助ls -li,这些编号基本上是卷上的文件 ID 编号。这是我的系统上的娱乐:

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。

同样,子目录还有第二个链接:

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

我们打个比方。

考虑一本书,包含章节。在我的书的字母索引中,我有一个“煮鸡蛋”一章的条目。每次我在这个索引中输入条目时,我都会在章节顶部写一条注释,以提醒我有多少条目。现在,我决定在索引中添加另一个条目,名为“鸡蛋,烹饪”,这样我不仅可以在“C”下的“烹饪”下找到该章节,而且还可以在“E”下的“鸡蛋”下找到该章节。我还更新了本章顶部的注释,以提醒我索引中现在有两个条目。

我仍然只有一章,但索引中有两个条目。索引中的条目没有更正确或更错误;两者同样有效。

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

ls -lid Cooking*

您将看到该条目告诉您有两个指向该文件的链接。该命令还提供索引节点号,在我们的示例中,它可能是我们书中的页码。

ls -lid Egg*

在这里您可以获得相同的信息,因为它只是对同一文件(书中同一章节)的另一个引用。它还告诉您该文件有两个链接。请记住,在我们的类比中,索引条目的数量与章节一起保存,这里也是一样:链接的数量与文件一起保存,而不是文件名。

重要的是,您可以删除任一文件名,该文件仍然存在。在我们的类比中,这就像从索引中删除一个条目。该章节仍然存在,直到索引中的条目数达到零 - 然后我们将其丢弃。

相关内容