為什麼/目錄中有..,它是什麼意思?

為什麼/目錄中有..,它是什麼意思?

/目錄中並使用時,ls -a 結果將包含...

我可以理解 的存在,.它是目錄本身的指標。目錄..中有/,而沒有父目錄,這是什麼意思/

答案1

許多軟體都是基於假設工作的,不是事實上,POSIX.1 向他們保證,但傳統上是 UNIX 系統上的情況,並被許多 UNIX 文獻所銘記(引用一篇這樣的 UNIX 文獻):

每個目錄包含檔案名稱 dot 和 dot-dot (...),其 inode 編號分別是該目錄及其父目錄的 inode 編號。[…]程式mkfs初始化一個檔案系統,以便根目錄的.和具有該檔案系統的根 inode 號碼。..

——莫里斯·J·巴赫 (1986)。UNIX 作業系統的設計。 普倫蒂斯·霍爾。 p。 73

例如:舊的getcwd()函式庫函數(在沒有為其提供特殊核心支援的系統上)依賴於此知道何時停止..在構成目前目錄名稱時追蹤條目鏈。當它到達作為其父級的目錄或無法遍歷到 時,它將停止..

所以根目錄的原因(或至少就應用程式模式程式而言)出現透過系統 API 看到的)一個..條目是很多東西都是基於這樣的假設:每一個目錄有..,且..根中的 是一個循環,可用於檢測是否位於根。

POSIX.1 其實不保證根目錄有一個..,只是指定程序必須考慮循環的可能性,如果..根目錄下有一個。這是為了讓非 UNIX 系統也符合 POSIX 標準。有些檔案系統缺席of..表示該目錄是根目錄。正如巴赫本人所討論的,有些系統有一個目錄多於根,POSIX.1 在討論以以下開頭的絕對路徑名時允許使用根斜線(類似於 Microsoft 區域網路系統中使用的通用命名約定)。

然而,Linux(以及 Ubuntu Linux)提供了 UNIX 範例的更嚴格的保證。

答案2

很簡單:透過檔案目錄,./意味著這個資料夾, 而../意味著文件在哪裡(例如,當我在目錄中時user/home/me/Desktop,然後../會將我帶到/user/home/me)。

相關內容