¿Por qué se requiere la barra invertida y el punto y coma con la opción -exec del comando find?

Empecé a combinar diferentes comandos en la terminal de Linux. Me pregunto por qué la barra invertida y el punto y coma son necesarios para un comando como:

find ./ -name 'blabla' -exec cp {} ./test \; 

cuando un simple comando cp es simplemente:

 cp randomfile ./test 

sin el \;

¿Deben indicar claramente el final de un comando o simplemente se requiere en la documentación? ¿Cuál es el principio subyacente?

¡Gracias!

de “hombre encontrar”:

Todos los siguientes argumentos para encontrar se toman como argumentos para el comando hasta que un argumento que consta de ‘;’ se encuentra.

encontrar necesita saber cuándo terminan los argumentos del ejecutivo. Es natural finalizar un comando de shell con; porque también el caparazón usa este personaje. Por la misma razón, dicho carácter debe escapar cuando se inserta a través del caparazón.

Se usa la barra invertida antes del punto y coma, porque ; es uno de los operadores de lista (o && , || ) para separar comandos de shell. Por ejemplo:

 command1; command2 

La utilidad de find está usando ; o + para terminar los comandos de shell invocados por -exec .

Por lo tanto, para evitar la interpretación de caracteres de shell especiales, deben escaparse con una barra diagonal inversa para eliminar cualquier significado especial para la próxima lectura de caracteres y para la continuación de líneas.

Por lo tanto, la siguiente syntax de ejemplo está permitida para el comando de find :

 find . -exec echo {} \; find . -exec echo {} ';' find . -exec echo {} ";" find . -exec echo {} \+ find . -exec echo {} + 

Ver también:

  • Uso de punto y coma (;) vs plus (+) con exec en find
  • Comando simple de Unix, ¿cuál es el {} y \; para
    Intereting Posts