Исторически , первая файловая система Unix создавала две записи в каждом каталоге: .указывая на сам каталог и ..указывая на его родителя. Это обеспечило простой способ обхода файловой системы, как для приложений, так и для самой ОС.
Таким образом, каждый каталог имеет количество ссылок 2 + n, где n - это количество подкаталогов. Ссылки - это запись для этого каталога в его родительском элементе, собственная .запись каталога и ..запись в каждом подкаталоге. Например, предположим, что это содержимое поддерева, корень которого находится во /parentвсех каталогах:
/parent
/parent/dir
/parent/dir/sub1
/parent/dir/sub2
/parent/dir/sub3
Затем dirимеет счетчик ссылок 5: dirзапись в /parent, .запись в /parent/dirи три ..записи в каждой из /parent/dir/sub1, /parent/dir/sub2и /parent/dir/sub3. Так /parent/dir/sub1как не имеет подкаталога, его счетчик ссылок равен 2 ( sub1запись в /parent/dirи .запись в /parent/dir/sub1).
Чтобы свести к минимуму количество специальных регистров для корневого каталога, у которого нет «правильного» родителя, корневой каталог содержит ..запись, указывающую на себя. Таким образом, он также имеет счетчик ссылок 2 плюс количество подкаталогов, где 2 /.и /...
Более поздние файловые системы, как правило, отслеживали родительские каталоги в памяти и, как правило, не нужны .и ..существуют как реальные записи; Типичные современные Unix-системы рассматривают .и ..как специальные значения как часть кода файловой системы, независимого от типа файловой системы. Некоторые файловые системы по-прежнему включают .и ..записи, или делают вид, что на диске ничего не появляется.
Большинство файловых систем до сих пор сообщают количество ссылок на 2 + п для каталогов , независимо от того .и ..существуют записи, но есть исключения, например , Btrfs не делает этого.