Vamos tentar entender de básico.
mkdir test
touch file
mkdir test1
mkdir test2
O ?
procura por um e apenas um caractere.
Agora, quando emitimos o comando ls tes?
, a saída seria, file
.
Funcionou porque criamos um arquivo dentro do diretório. De man page de ls
,
NAME
ls - list directory contents
O diretório test
tem o file
dentro e, portanto, o comando ls
lista os arquivos que estão presentes no diretório.
Agora, vamos criar um arquivo como abaixo.
touch ramesh
ls rames?
ramesh
A razão pela qual o comando acima funcionou é porque ramesh
é um arquivo e está presente no diretório atual (Como no ls
working, ele lista o conteúdo do diretório e no diretório atual existe um arquivo chamado ramesh
).
Agora, vamos criar um diretório chamado ram1
, conforme abaixo.
mkdir ram1
ls ram?
O acima não produz nada. É porque o diretório ram1
atualmente não possui arquivos dentro dele. Agora, se criarmos outro diretório chamado ram2
e tentar, ele funcionará porque primeiro verifica se o diretório ram1
tem algum arquivo e, em seguida, verifica se o diretório ram2
possui algum arquivo. Lembre-se de que ls
funciona na classificação.
Se você quiser ver mais sobre o funcionamento interno, emita o comando stat
.
Nesse caso, stat ram?
produziria a saída como
File: 'ram1'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 805h/2053d Inode: 6743976 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-06-30 18:17:06.000000000 -0500
Modify: 2014-06-30 18:17:03.000000000 -0500
Change: 2014-06-30 18:17:03.000000000 -0500