为什么一个目录的硬链接数是2+子目录数?

Why is number of hard links for a directory 2 + the number of subdirectories?

当使用 ls -l 时,我注意到目录以 2 个硬 link 开头,并且每个子目录获得一个。我理解当前目录link.算一个link每个子目录的父目录link..算一个硬link , 但是:

  1. 为什么子目录不计入硬 link 的子文件?

  2. 为什么父目录link..对于这个目录都算作硬link父目录?

假设目录树如下

/a
  /b
    /c
    /d

然后路径 /a/b 处的目录 b 有 4 个硬盘 link。 link 如下:

  • b(来自父目录)
  • .(来自目录本身)
  • c/..
  • d/..

文件不计入目录的 link 计数,因为文件没有嵌套的 .. 目录,因此不会指向目录。

我们可以计算出每个目录的hardlink个数:

  • 一:3
    • a(来自/
    • .
    • b/..
  • c: 2
    • c(来自 b)
    • .
  • d: 2
    • d(来自 b)
    • .