Eu pensei que o curinga *no comando find . -name *foo*fosse substituído pelo bash e, no entanto, o comando funcionará, a menos que *foo*corresponda a algo no diretório atual, e não. É confuso.
bashexpandiu *foo*porque correspondia, mas passou *bar*diretamente porque não correspondia. A nullglobopção informará ao bash para resolver padrões não correspondentes à sequência vazia:
find . -name *foo*
porfind . -name '*foo*'
, permitirá que as correspondências curinga funcionem conforme o esperado.Respostas:
Se o bash não conseguir encontrar uma correspondência, ele passa a string literal para o aplicativo com
*
s não expandidos. Por exemplo:bash
expandiu*foo*
porque correspondia, mas passou*bar*
diretamente porque não correspondia. Anullglob
opção informará ao bash para resolver padrões não correspondentes à sequência vazia:fonte
zsh: no matches found
.no_nomatch
acionar esse comportamento.Se você deseja
find
obter a sequência não expandida, pode citá-la ou proteger os curingas com barras invertidas.fonte