Isso pode acontecer se você estiver acessando o diretório por meio de um symlink, mas o diretório vinculado é removido. Por exemplo, em /tmp
, vamos criar um diretório e um link simbólico para esse diretório:
$ cd /tmp
$ mkdir normal_dir
$ ln -s normal_dir strange_dir
Agora, se navegarmos para strange_dir
, obtemos a saída esperada:
$ cd strange_dir
$ ls -a
. ..
Se, no entanto, removermos o diretório normal_dir
sem alterar o diretório, na verdade, obteremos um resultado interessante:
$ rmdir /tmp/normal_dir
$ ls -a
$ ls -al
total 0
Portanto, embora nosso link agora aponte para nada, o "diretório" de trabalho do shell ainda é o mesmo:
$ pwd
/tmp/strange_dir
$ cd /tmp/strange_dir
bash: cd: /tmp/strange_dir: No such file or directory
$ ls -al
total 0
A execução de stat -L .
enquanto o nosso diretório de trabalho ainda estiver em /tmp/strange_dir
mostrará agora Size: 0
conforme discutido nos comentários acima. Embora a saída de ls
não mostre nada agora (nem mesmo .
nem ..
), pode ainda navegar muito bem até o diretório pai ..
nesse caso, conforme descrito:
$ cd ..
$ pwd
/tmp
$ ls -a
. .. strange_dir
Embora o link simbólico ainda exista, ele não aponta para nada, então não podemos cd
voltar para strange_dir
neste ponto, a menos que o diretório /tmp/normal_dir
seja re criado. Para limpar, basta remover o link simbólico chamando rm /tmp/strange_dir
.