Linux

每個文件真的可以擁有至少 2 個名稱(因此有 2 個硬連結)嗎?

  • September 24, 2019

這個關於 inode 的頁面對於掌握文件系統的表面概念非常有幫助。在同一頁面上,作者插入了這段程式碼片段,證明每個文件或目錄至少有 2 個名稱(和硬連結):

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

我們可以看到/tmp有 3 個硬連結:

  1. 大概是文件名“tmp”的inode
  2. 名稱“..”的相同 inode
  3. 名稱“.”的相同 inode

我的問題:/tmp如果給定子目錄,目錄中的“垃圾”文件是否也可以有 3 個名稱(和硬連結)?例如,/tmp/junk/paper_balls

我的假設:如果“垃圾”文件成為父文件,則可以使用..但相對地呼叫它,這意味著目前工作目錄(從中..鍵入)必須在目錄路徑/tmp/中。我的問題的答案可能太高級了。

硬連結的初始數量是 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 評論以獲得更廣泛的觀點。

引用自:https://unix.stackexchange.com/questions/543324