Significado de ls -l output no campo de links

0

Minha saída de ls -l é:

drwxr-xr-x 2 dario dario 4096 Sep 14 13:15 d1
-rw-r--r-- 1 dario dario    0 Sep 14 13:18 file1

Por que files = 1

d1 está vazio. Por que mostrar 2 ?

    
por dario bras 14.09.2017 / 13:21

2 respostas

2

O número 1 para file1 indica que não há outro link físico para esse arquivo. Se você unlink ou rm this file1 no diretório atual, seu conteúdo será marcado como espaço livre no disco e, eventualmente, sobrescrito. Se houvesse dois outros hardlinks, o número total seria 3 e é isso que você veria.

O número 2 do diretório d1 é um pouco semelhante. No Linux você não pode criar livremente hardlinks para diretórios, mas (quase) todo diretório tem pelo menos dois:

  • seu "nome" em seu diretório pai ( d1 neste caso),
  • . em si mesmo;
  • adicionalmente .. em cada um de seus subdiretórios (não há nenhum neste caso).

Observe que .. em d1 em si não contribui para esse número. Contribui para a contagem de links do diretório pai de d1 .

A exceção é / . Não tem diretório pai, mas . e .. em / referem-se a / , então você ainda tem dois links mais um para cada subdiretório.

Funciona assim no sistema de arquivos ext family. Outros sistemas de arquivos podem se comportar de maneira diferente. Por exemplo. btrfs geralmente mostra 1 para diretórios.

    
por 14.09.2017 / 13:47
0

Todo diretório contém pelo menos duas entradas. Estes são:

. (diretório atual) e,

.. (diretório pai).

file1 tem um link apontando para ele

    
por 14.09.2017 / 13:28