@PaulDraper legível e menos propenso a erros> Shorter por um keystroke
Doorknob
Aspas simples são o caminho a percorrer. Eu nunca sequer pensou que poderia usar a barra invertida desta forma ...
Floris
4
Antes de seu shell emitir o findcomando, ele fará várias expansões . Ao fazer isso, ele também processa caracteres especiais (ou caracteres com significado especial), onde *existe um curinga - um caractere brilhante. Essa é a chamada expansão de nome de arquivo.
Digamos que você tenha dois arquivos no seu diretório:
foo.pyc
bar.pyc
Então *.pycexpandiria para os dois nomes. Então, se você escrever:
find .-name *.pyc -delete
então o shell realmente chamará:
find .-name foo.pyc bar.pyc -delete
o que não faz muito sentido, porque você só pode ter um argumento para -name. É por isso que você precisa escapar do caractere especial para impedir que ele seja interpretado pelo shell. Você faz isso escapando pela barra invertida ou, alternativamente, citando-o.
find
deve ter uma seção chamadaNON-BUGS
com algo semelhante como exemplo e uma explicação de por que é necessário.Respostas:
Um globo não citado seria expandido pelo shell antes de
find
ser executado. (Consulte Expansão do nome do arquivo no manual.)Dizendo assim:
realmente executaria:
assumindo que havia 3 arquivos .pyc no diretório atual e resultando em um erro.
Uma barra invertida faz com que a concha passe o globo para
find
, isto é, age como se tivesse*.pyc
sido citada.Idealmente, você deve citar um globo:
fonte
Antes de seu shell emitir o
find
comando, ele fará várias expansões . Ao fazer isso, ele também processa caracteres especiais (ou caracteres com significado especial), onde*
existe um curinga - um caractere brilhante. Essa é a chamada expansão de nome de arquivo.Digamos que você tenha dois arquivos no seu diretório:
foo.pyc
bar.pyc
Então
*.pyc
expandiria para os dois nomes. Então, se você escrever:então o shell realmente chamará:
o que não faz muito sentido, porque você só pode ter um argumento para
-name
. É por isso que você precisa escapar do caractere especial para impedir que ele seja interpretado pelo shell. Você faz isso escapando pela barra invertida ou, alternativamente, citando-o.fonte