A veces veo un comando como
find . -name * -exec ls -a {} \;
Me pidieron que ejecutara esto.
¿Qué {} \;significa aquí?
findcomandos 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í?
findcomandos 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 -execargumento interpreta todo como un comando hasta el insertado ;que termina las -execcosas. Dentro de las -execcosas, 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 -execestá 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í).