... educación sobre Linux, y espero que también en la tuya.

xargs acepta dos entradas:

  • En stdin: Una lista de cadenas separadas por espacios en blanco. Un ejemplo son las rutas de archivo producidas por ls o find, pero cualquier cadena servirá. Las llamaré cadenas de entrada.

  • En la línea de comandos: Un comando incompleto al que le faltan algunos argumentos, al que llamaré plantilla de comando.

xargs fusiona las cadenas de entrada y la plantilla de comandos para producir y ejecutar nuevos comandos completos, a los que llamaré comandos generados. Demostraré este proceso con un ejemplo de juguete. Supón que estás en un directorio con tres archivos:

$ ls -1
apple
banana
cantaloupe

Pasa el listado de directorios a xargs para que sirva como cadena de entrada, y proporciona wc -l para que sirva como plantilla del comando, de esta forma

$ ls -1 | xargs wc -l
3 apple
4 banana
1 cantaloupe
8 total

Como prometí, xargs aplicó la plantilla de comandos wc -l a las cadenas de entrada y cuenta las líneas de cada archivo. Para imprimir los mismos tres archivos con cat, basta con cambiar la plantilla de comandos por "cat":

$ ls -1 | xargs cat

Mis ejemplos de juguete con xargs tienen dos defectos, uno fatal y otro práctico. El defecto fatal es que xargs puede hacer algo incorrecto si una cadena de entrada contiene caracteres especiales, como espacios. Hay una solución robusta en la barra lateral "Seguridad con find y xargs".

El inconveniente práctico es que aquí no necesitas xargs; puedes realizar ...

Get Linux eficiente en la línea de comandos now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.