'ls' não lista o conteúdo do diretório mais recente

7

O shell do Linux não imprime informações atualizadas quando se trata de ls. Por exemplo, eu uso meus outros processos (IDEs, etc) para criar alguns diretórios. No entanto, quando eu executo um comando ls, não vejo esses diretórios. Normalmente, leva alguns segundos, às vezes, minutos para que o diretório apareça na saída ls.

O que está acontecendo? Posso forçar uma atualização? O ideal é quando eu digo "ls" Eu quero ver o status quando eu digitei o comando não algum resultado em cache.

O sistema de arquivos não é um compartilhamento NFS. A única outra coisa que posso pensar é que o diretório foi criado por um programa quando executado a partir do Eclipse (e a exibição foi roteada para minha caixa de janelas locais)

Eu não sei como isso pode afetar as coisas?

    
por Calm Storm 04.03.2013 / 16:14

1 resposta

14

ls não tem nada a ver com bash ou qualquer shell. Ele lista o conteúdo de um diretório, excluindo arquivos ocultos (aqueles cujo nome começa com . ) solicitando essa lista do kernel

Se ls não mostrar, eles não estão lá (no que diz respeito ao sistema operacional) ou você está listando o diretório errado.

Isso pode acontecer, por exemplo, quando o diretório atual foi renomeado sob seus pés. Como:

$ pwd
/tmp/1
$ ls
x
$ mv /tmp/1 /tmp/2
$ pwd
/tmp/1 # (/tmp/1 has been renamed but the shell is not aware of it)
$ mkdir /tmp/1
$ touch /tmp/1/y
$ pwd
/tmp/1
$ ls  # (ls is still listing '.' which has not changed, but now is a hardlink to '/tmp/2', while '/tmp/1' is some new directory)
x
$ pwd -P  # (double check what the current directory is)
/tmp/2
$ cd /tmp/1
$ ls
y
    
por 04.03.2013 / 16:47

Tags