每个文件真的可以拥有至少 2 个名称(因此有 2 个硬链接)吗?

每个文件真的可以拥有至少 2 个名称(因此有 2 个硬链接)吗?

本页关于索引节点对于掌握文件系统的表面概念有特殊的帮助。在同一页面上,作者插入了以下代码片段,证明每个文件或目录至少有 2 个名称(和硬链接):

/tmp/junk$ ls -id ..
327681 ..
/tmp/junk$ cd ..
/tmp$ ls -id .
327681 .

我们可以看到/tmp有3个硬链接:

  1. 据推测,文件名“tmp”的索引节点
  2. 名称“..”的相同索引节点
  3. 名称“.”的相同索引节点

/tmp我的问题:如果给定子目录,目录中的“垃圾”文件是否也可以有 3 个名称(和硬链接)?例如,/tmp/junk/paper_balls

我的假设:如果“垃圾”文件成为父文件,则可以使用..但相对地调用它,这意味着当前工作目录(从中..键入)必须位于目录路径内/tmp/。我的问题的答案可能太先进了。

答案1

硬链接的初始数量为 1文件和 2 为目录(第一个链接是其在父文件夹中的名称,第二个硬链接是.)。每次在目录中创建子目录时,目录的链接计数就会增加一(由于..在每个子目录中)。

可以使用 轻松查看此计数ls -l。这是第二个值。看一看:

~/x$ ls -la
total 16
drwxr-xr-x  2 tomasz tomasz 4096 Sep 24 00:08 .
drwxr-xr-x 54 tomasz tomasz 4096 Sep 24 00:11 ..
-rw-r--r--  1 tomasz tomasz   19 Sep 23 18:45 1
-rw-r--r--  1 tomasz tomasz   19 Sep 23 18:45 2
~/x$ mkdir d
~/x$ ls -la
total 20
drwxr-xr-x  3 tomasz tomasz 4096 Sep 24 00:11 .
drwxr-xr-x 54 tomasz tomasz 4096 Sep 24 00:11 ..
-rw-r--r--  1 tomasz tomasz   19 Sep 23 18:45 1
-rw-r--r--  1 tomasz tomasz   19 Sep 23 18:45 2
drwxr-xr-x  2 tomasz tomasz 4096 Sep 24 00:11 d
~/x$ mkdir d/dd
~/x$ ls -la
total 20
drwxr-xr-x  3 tomasz tomasz 4096 Sep 24 00:11 .
drwxr-xr-x 54 tomasz tomasz 4096 Sep 24 00:11 ..
-rw-r--r--  1 tomasz tomasz   19 Sep 23 18:45 1
-rw-r--r--  1 tomasz tomasz   19 Sep 23 18:45 2
drwxr-xr-x  3 tomasz tomasz 4096 Sep 24 00:11 d

在其中创建后,第二个值d从 2 增加到 3 。d/dd

请参阅下面 mosvy 的评论以获得更广泛的视野。

相关内容