GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la diferencia entre xargs con llaves y sin llaves en Linux?

xargs rm invocará rm con todos los argumentos como parámetro partieron con espacios.

xargs -i{} rm {} invocará rm {} para cada uno de los argumentos y {} será reemplazado por el argumento actual.

Si tiene 2 argumentos a.txt y b.txt , xargs rm llamará esto

rm a.txt b.txt

Pero xargs -i{} rm {} llamará

rm a.txt
rm b.txt

Esto se debe a que -i la opción implica -L 1 opción que significa el comando rm tomará solo 1 línea cada vez. Y aquí cada línea contiene solo 1 argumento.

Consulte este enlace de Ideone para obtener más información al respecto.


Con llaves generará un rm proceso por archivo. Sin las llaves, xargs pasará tantos nombres de archivo como sea posible a cada rm comando.

Comparar

ls | xargs echo

y

ls | xargs -i echo '{}'

La opción -i (equivalente a --replace) crea una especie de marcador de posición donde xargs almacena la entrada que acaba de recibir. En su segundo comando, el marcador de posición es "{}", funciona como la opción find -exec. Una vez definido, xargs reemplazará este marcador de posición con la línea completa de entrada. Si no te gusta el nombre "{}", puedes definir el tuyo propio:

ls | xargs -iPLACEHOLDER echo MARCADOR

En su caso, ambos comandos producen el mismo resultado. En la segunda forma, solo está haciendo explícito el comportamiento predeterminado con la opción -i.


Linux
  1. ¿Qué hay de nuevo con rdiff-copia de seguridad?

  2. Flatpak en Linux:qué es y cómo instalar aplicaciones con él

  3. ¿Qué es Podman y cómo instalar Podman en Linux?

  4. Grabación de pantalla en Linux con OBS y Wayland

  5. Encuentre un archivo con los comandos de búsqueda y localización en Linux

Cómo agregar repositorios a Red Hat Linux con y sin proxy

Comando de cola de Linux:qué es y cómo usarlo

Comando Diff en Linux con ejemplos

¿Cuál es la diferencia entre Linux y Unix?

¿Qué es Crontab y cómo automatizar tareas en Linux con Crontab?

Qué es Git y cómo instalar Git en Linux