Powiedzmy, że właśnie utworzyłem katalog newDirectory, a następnie wykonuję polecenie ls -ld. Widzę, że liczba twardych linków wynosi 2. Co dokładnie sprawia, że twarde linki 2 od samego początku? Czy liczba podkatalogów w bieżącym katalogu jest równa liczbie dowiązań twardych - 2?
38
Odpowiedzi:
Historycznie , pierwszy system plików Unix utworzył dwa wpisy w każdym katalogu:
.
wskazując na sam katalog i..
wskazując na jego element nadrzędny. Zapewniło to łatwy sposób przechodzenia przez system plików, zarówno w przypadku aplikacji, jak i samego systemu operacyjnego.Tak więc każdy katalog ma liczbę linków równą 2 + n, gdzie n jest liczbą podkatalogów. Łącza są pozycją dla tego katalogu w jego katalogu nadrzędnym, własną
.
pozycją katalogu i..
pozycją w każdym podkatalogu. Załóżmy na przykład, że jest to zawartość poddrzewa zrootowanego we/parent
wszystkich katalogach:Wtedy
dir
ma liczbę linków 5:dir
wpis/parent
, ten.
wpis/parent/dir
, a trzy..
wpisy w każdej/parent/dir/sub1
,/parent/dir/sub2
oraz/parent/dir/sub3
. Ponieważ/parent/dir/sub1
nie ma podkatalogu, jego liczba linków wynosi 2 (sub1
wpis/parent/dir
i.
wpis w/parent/dir/sub1
).Aby zminimalizować ilość specjalnej obudowy dla katalogu głównego, który nie ma „właściwego” elementu nadrzędnego, katalog główny zawiera
..
pozycję wskazującą na siebie. Również w ten sposób liczba linków wynosi 2 plus liczba podkatalogów, przy czym 2 to/.
i/..
.Późniejsze systemy plików miały tendencję do śledzenia katalogów nadrzędnych w pamięci i zwykle nie potrzebują
.
i..
istnieją jako rzeczywiste wpisy; typowe współczesne systemy uniksowe traktują.
i..
jako specjalne wartości jako część kodu systemu plików niezależnego od typu systemu plików. Niektóre systemy plików wciąż zawierają wpisy.
i..
wpisy lub udają, że nic nie pojawia się na dysku.Większość systemów plików nadal zgłosić liczbę linków 2 + n dla katalogów niezależnie od tego, czy
.
i..
istnieją wpisy, ale istnieją wyjątki, np btrfs nie to zrobić.źródło
..
wskazanie elementu nadrzędnego nie wpływa na liczbę łączy w bieżącym katalogu. Liczba 2 pochodzi z.
samej listy (oryginalnej) nazwy katalogu. Sposób, w jaki to ujmujesz, jest trochę niejednoznaczny i sprawia, że brzmi jak.
i..
są nimi dwoje...
należy używać wyłącznie do wyjaśnienia, jak działa matematyka2+n
:).
niego”. Jeśli nadal jest to dla ciebie niejasne, bardzo przykro mi, że nie jestem w stanie wyjaśnić więcej. Wszystko, co mogłem zrobić lepiej, to skopiować i wkleić jego odpowiedź tutaj w komentarzach.Jest jeden dla samego katalogu i jeden dla
.
niego.Ma to sens, ponieważ każdy podkatalog tworzy
..
łącze twarde, a ponadto nie można tworzyć łączy twardych do katalogów. 1 Jednak nie ufałbym temu za coś poważnego, szczególnie. ponieważ łatwo policzyć podkatalogi i uzyskać rzeczywistą liczbę.Jeśli patrzysz na
ls
wynik, aby dowiedzieć się, ile jest subwooferów, to daje ci przyzwoity pomysł.1 A przynajmniej nie możesz
ln
. Nie próbowałem programowo iman 2 link
jest dwuznaczny - nie ma oczywistego błędu w łączeniu się z katalogiem, chociaż może być kilka, które mogą mieć zastosowanie (EMLINK
,EPERM
). Więc jeśli nie ma gdzieś jakiegoś standardu, który mówi, że jedynymi możliwymi twardymi linkami do katalogu są,.
i..
znowu, traktowałbym ten twardy link jako zwykłą wskazówkę.źródło