Řekněme, že jen vytvořím adresář newDirectory a pak udělám příkaz ls -ld. Vidím, že počet pevných odkazů je 2. Co přesně dělá pevný odkaz 2 od začátku? Je také počet podadresářů v aktuálním adresáři roven počtu pevných odkazů – 2?
Přijatá odpověď:
Historicky první souborový systém Unix vytvořil v každém adresáři dvě položky:. ukazující na samotný adresář a .. ukazující na svého rodiče. To poskytlo snadný způsob, jak procházet souborovým systémem, a to jak pro aplikace, tak pro samotný OS.
Každý adresář má tedy počet odkazů 2+n, kde n je počet podadresářů. Odkazy jsou záznamem pro tento adresář v jeho nadřazeném adresáři, vlastním . adresáře záznam a .. záznam v každém podadresáři. Předpokládejme například, že toto je obsah podstromu zakořeněného v /parent , všechny adresáře:
/parent
/parent/dir
/parent/dir/sub1
/parent/dir/sub2
/parent/dir/sub3
Poté dir má počet odkazů 5:dir záznam v /parent , . záznam v /parent/dir a tři .. záznamy v každém z /parent/dir/sub1 , /parent/dir/sub2 a /parent/dir/sub3 . Od /parent/dir/sub1 nemá žádný podadresář, jeho počet odkazů je 2 (sub1 záznam v /parent/dir a . záznam v /parent/dir/sub1 ).
Aby se minimalizovalo množství velkých a malých písmen pro kořenový adresář, který nemá „správného“ rodiče, obsahuje kořenový adresář .. vstup ukazující na sebe. Tímto způsobem má také počet odkazů 2 plus počet podadresářů, přičemž 2 jsou /. a /.. .
Pozdější souborové systémy měly tendenci sledovat nadřazené adresáře v paměti a obvykle nepotřebují . a .. existovat jako skutečné položky; typické moderní unixové systémy zacházejí s . a .. jako speciální hodnoty jako součást kódu souborového systému nezávislého na typu souborového systému. Některé systémy souborů stále obsahují . a .. záznamy nebo předstírat, že se na disku nic neobjeví.
Většina souborových systémů stále hlásí počet odkazů 2+n pro adresáře bez ohledu na to, zda . a .. záznamy existují, ale existují výjimky, například btrfs to nedělá.