Historicamente , o primeiro sistema de arquivos Unix criou duas entradas em cada diretório: . apontando para o próprio diretório e .. apontando para seu pai. Isso forneceu uma maneira fácil de percorrer o sistema de arquivos, tanto para aplicativos quanto para o próprio SO.
Assim, cada diretório possui uma contagem de links de 2 + n, onde n é o número de subdiretórios. Os links são a entrada desse diretório em seu pai, a própria entrada . do diretório e a entrada .. em cada subdiretório. Por exemplo, suponha que este seja o conteúdo da subárvore com raiz em /parent , todos os diretórios:
/parent
/parent/dir
/parent/dir/sub1
/parent/dir/sub2
/parent/dir/sub3
Em seguida, dir tem uma contagem de links de 5: a entrada dir em /parent , a entrada . em /parent/dir e as três entradas .. em cada uma das /parent/dir/sub1 , /parent/dir/sub2 e /parent/dir/sub3 . Como /parent/dir/sub1 não tem subdiretório, sua contagem de links é 2 (a entrada sub1 em /parent/dir e a entrada . em /parent/dir/sub1 ).
Para minimizar a quantidade de invólucro especial para o diretório raiz, que não tem um pai “adequado”, o diretório raiz contém uma entrada .. apontando para si mesma. Dessa forma, ele também tem uma contagem de links de 2 mais o número de subdiretórios, sendo os dois /. e /.. .
Sistemas de arquivos posteriores tendem a manter o controle dos diretórios pai na memória e geralmente não precisam que . e .. existam como entradas reais; Os sistemas Unix modernos típicos tratam . e .. como valores especiais como parte do código do sistema de arquivos independente do sistema de arquivos. Alguns sistemas de arquivos ainda incluem . e .. entradas, ou fingem, mesmo que nada apareça no disco.
A maioria dos sistemas de arquivos ainda relata uma contagem de links de 2 + n para diretórios, independentemente de haver . e .. entradas, mas existem exceções, por exemplo, btrfs não faz isso.