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