? curinga produz resultado inesperado na pesquisa de diretório LS

1

Estou tentando pegar o jeito da CLI (interface de linha de comando).

No diretório raiz geral, fiz o seguinte:

root@droplet:/# ls ?tc

Eu esperava obter apenas o diretório etc na lista de resultados.

No entanto, tenho uma lista enorme de arquivos e diretórios. Esta lista foi (e muito) mais longa do que quando eu simplesmente fiz ls sem nenhum critério adicional. Por quê?

    
por thanks_in_advance 01.08.2015 / 21:01

1 resposta

2

Presumo que você esteja esperando que um resultado seja retornado:

# ls ?tc
etc

mas você realmente obteve vários resultados.

O ponto de interrogação é um caractere globbing , conforme definido por:

?

wild card. The ? character serves as a single-character "wild card" for filename expansion in globbing, as well as representing one character in an extended regular expression.

O que aconteceu é que o curinga foi expandido pelo shell (provavelmente bash ) antes de ser passado para ls 1 . Então ls tratou como:

# ls etc

O que teria retornado os muitos arquivos e pastas 2 'de /etc .

1 : Você pode testar que a expansão acontece antes um comando é executado tentando: echo * - isto irá (deve!) ecoar os arquivos e diretórios em o diretório atual.

2 : Se você quiser se familiarizar com a linha de comando, prefira o termo 'diretório' para 'pasta' : -)

    
por 01.08.2015 / 21:11