Curinga em uma parte do nome do arquivo, ls diz que existe:
$ ls *rammar*
London_Grammar_-_Hey_Now_Official_Video-nMEHJPuggHQ.mp4
London_Grammar_-_Hey_Now_Radio_1_s_Big_Weekend_2014-on1QEcz1sTI.webm
London_Grammar_-_Interlude_Live_on_KEXP-7eNA90LlxmY.mp4
Curinga em outra parte do nome do arquivo, ls diz que não existe:
$ ls *7eNA9*
ls: cannot access `*7eNA9*`: No such file or directory
ls não tem alias
Código de retorno (via echo $?
):
2
homem ls:
Exit status:
2 if serious trouble (e.g., cannot access command-line argument).
CentOS
7.5.1804
bash
4.2.46(2)
coreutils
GNU v8.22
Um padrão de globbing de shell se expandirá para qualquer nome que corresponda a ele, independentemente de o nome ser de um arquivo comum ou de um diretório. Quando
ls
é dado o nome de um diretório na linha de comando, ele listará seu conteúdo.Parece que um ou vários dos nomes relatados por
ls
forls *rammar*
podem vir de um diretório cujo nome corresponde a esse padrão. Um desses arquivos é o último arquivo nals
saída.É por isso que, quando você tenta seu segundo comando, o arquivo não pode ser encontrado. Não está disponível no diretório atual.
Resumo dos principais pontos dos comentários:
eu sugeri isso
encontraria o arquivo, e também acrescentou que era importante citar o
*7eNA90*
padrão neste caso para que o shell não tente expandi-lo (é usado porfind
).@iletras tentou isso e funcionou, mas também descobriu que funcionava sem as aspas. Ele funciona sem as aspas, pois não há nada que corresponda ao padrão no diretório atual, portanto, o shell deixa o padrão não expandido.
No entanto, criar o hábito de confiar nesse comportamento é perigoso, pois, no caso geral, nem sempre se sabe ou se lembra quais nomes estão ou estarão disponíveis no diretório atual. Alguns shells também têm opções de shell para expandir padrões não correspondentes para a string vazia, como a
nullglob
opção de shell embash
. Definir essa opção de shell faria com que o comando falhasse se o padrão não estivesse entre aspas.É mais seguro simplesmente citar o padrão do que confiar nas circunstâncias.