@PaulDraper Legible y menos propenso a errores> Más corto por una pulsación de tecla
Pomo
Las comillas simples son el camino a seguir. Nunca pensé que podría usar la barra invertida de esta manera ...
Floris
4
Antes de que su shell emita el findcomando, realizará varias expansiones . Al hacerlo, también procesa caracteres especiales (o caracteres con un significado especial), donde *hay un comodín: un carácter global. Esta es la llamada expansión de nombre de archivo.
Digamos que tiene dos archivos en su directorio:
foo.pyc
bar.pyc
Luego *.pycse expandiría a ambos nombres. Entonces si escribes:
find .-name *.pyc -delete
entonces el shell realmente llamará:
find .-name foo.pyc bar.pyc -delete
lo cual no tiene mucho sentido, porque solo puede tener un argumento para -name. Es por eso que necesita escapar del carácter especial para evitar que sea interpretado por el shell. Lo haces escapándose con una barra invertida o, alternativamente, citandolo.
find
debe tener una sección llamadaNON-BUGS
con algo similar como ejemplo y una explicación de por qué es necesaria.Respuestas:
El shell expandiría un globo sin comillas antes de
find
ejecutarlo. (Consulte Expansión del nombre de archivo en el manual).Entonces diciendo:
en realidad ejecutaría:
suponiendo que haya 3 archivos .pyc en el directorio actual y que en su lugar se produzca un error.
Una barra invertida hace que el shell pase el globo a
find
, es decir, actúa como si*.pyc
se citara.Idealmente, debería citar un globo:
fuente
Antes de que su shell emita el
find
comando, realizará varias expansiones . Al hacerlo, también procesa caracteres especiales (o caracteres con un significado especial), donde*
hay un comodín: un carácter global. Esta es la llamada expansión de nombre de archivo.Digamos que tiene dos archivos en su directorio:
foo.pyc
bar.pyc
Luego
*.pyc
se expandiría a ambos nombres. Entonces si escribes:entonces el shell realmente llamará:
lo cual no tiene mucho sentido, porque solo puede tener un argumento para
-name
. Es por eso que necesita escapar del carácter especial para evitar que sea interpretado por el shell. Lo haces escapándose con una barra invertida o, alternativamente, citandolo.fuente