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.