A veces veo un comando como
find . -name * -exec ls -a {} \;
Me pidieron que ejecutara esto.
¿Qué {} \;
significa aquí?
linux
command-line
find
codeofnode
fuente
fuente
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í).fuente