A veces veo un comando como
find . -name * -exec ls -a {} \;
Me pidieron que ejecutara esto.
¿Qué {} \;
significa aquí?
find
comandos para Unix, Linux, OSX, Windows y probablemente todo lo demás. Parece * nix pero no puedo estar seguro.
A veces veo un comando como
find . -name * -exec ls -a {} \;
Me pidieron que ejecutara esto.
¿Qué {} \;
significa aquí?
find
comandos para Unix, Linux, OSX, Windows y probablemente todo lo demás. Parece * nix pero no puedo estar seguro.
Respuestas:
El \;
es ;
alimentado al programa (buscar) por el \
escape evitando que sea manejado por el shell (normalmente separaría los comandos). El -exec
argumento interpreta todo como un comando hasta el insertado ;
que termina las -exec
cosas. Dentro de las -exec
cosas, un argumento de {}
significa "insertar el nombre del archivo aquí". Entonces, si los archivos fueran "foo" y "bar", ejecutaría "ls -a foo" y luego "ls -a bar". Entonces, todo ese significado solo significa eso porque -exec
está ahí.
La -name *
parte de esto podría haber estado entre *
comillas. Si no está entre comillas, hará cosas muy impredecibles porque todos los nombres de archivo se insertarán en lugar del *
que tiene, y esos nombres pueden hacer cosas malas con este comando. Deje -name *
afuera para una ejecución más segura de este comando (pero no sé sus intenciones de entender por qué eso estaba allí).