Symlink
為什麼 。和 .. 是目錄的硬連結,而在 *nix 系統中,目錄不允許硬連結?
我知道硬連結和符號連結是如何工作的,我知道為什麼硬連結不能用於目錄,但在這種情況下,它是某種例外嗎?
例如我這樣做:
ls -al Documents total 8 drwxr-xr-x 2 piotr piotr 4096 cze 28 11:19 . drwxrwx--- 17 piotr piotr 4096 lip 2 16:41 ..
. 是指向Documents本身的硬連結,並且**..是指向我的主目錄**的硬連結,所以嘿,這是非法的
正如有人在對該問題的評論中所說,僅僅因為不允許硬連結到目錄(即通過
ln
命令),並不意味著它們是不可能的。超級使用者實際上可以使用命令的“-d”或“-F”選項來ln
強制創建指向目錄的硬連結(儘管手冊頁說它“可能”由於文件系統限製而失敗 - 不確定是什麼差不多了,我不打算在我自己的一個系統上嘗試看看……)。不允許硬連結到目錄,因為它們可以為試圖遍歷目錄結構的程序創建循環。在任何目錄中,
.
並且..
分別是指向該目錄及其父目錄的硬連結 - 這些是“眾所周知的”特殊情況,任何試圖遍歷文件系統的東西都知道要解釋這一點。但是,如果您堅持不懈,從技術上講,創建指向目錄的硬連結當然是可行的——這是不可取的。