Eu li muitas perguntas e respostas como esta e esta
Eu sei que os curingas são expandidos pelo shell antes de executar um comando e são um recurso do shell. Os curingas também funcionam com os comandos que podem aceitar muitos argumentos. Em find . -name *.rb
se tivermos mais de um arquivo no diretório atual find
nos dará um erro porque descoberta não pode aceitar vários argumentos e as maneiras de resolver este são:
find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb
Nós escapamos do asterisco e impedimos a expansão pelo shell, mas os curingas são um recurso do shell; quando escapamos, o shell do asterisco não sabe sobre o seu significado e deve encontrar um arquivo chamado *.rb
; então, como o asterisco está sendo expandido nesse caso?
*
for citado, o shell não o expandirá, e o argumento incluindo o glob é passado para o comando que pode entender o glob - é o mesmo para todos os comandos que aceitam regex que sempre devem ser citados ...find
[archive filename single argument] [list of files to extract]
"), por exemplo.