Xargs para principiantes con ejemplos

Xargs para principiantes con ejemplos

Usando Xargs, descrito en el manual de Linux XARGS como una herramienta que construye y ejecuta líneas de comando a partir de la entrada estándar, una vez que puede ejercer una cantidad significativa de potencia adicional sobre cualquier otro comando ejecutado en la línea de comandos Bash. Básicamente, Xargs Tomará la salida de cualquier otra herramienta y lo usará como su propia entrada para su posterior procesamiento y acción (de ahí la referencia a la ejecución de líneas de comando en el manual). Si estas son sus primeras semanas o meses con Xargs, O recién estás comenzando, este es el mejor lugar para que te metas en Xargs.

En este tutorial aprenderás:

  • Cómo utilizar Xargs Desde la línea de comando en Bash
  • Cómo Xargs funciona, lo que hace y cómo usarlo bien
  • Ejemplos de uso básico usando Xargs Desde la línea de comando en Bash
Xargs para principiantes con ejemplos

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución de Linux
Software Línea de comando bash, sistema basado en Linux
Otro El Xargs La utilidad se incluye en el shell bash de forma predeterminada
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de DinLinux se ejecuten como un usuario regular no privilegiado


Ejemplo 1: un comienzo simple

Vamos a sumergirnos con un simple Xargs ejemplo:

$ echo '1' '> 1 $ echo' 2 '> 2 $ echo' 3 '> 3 $ ls 1 2 3 $ ls | Xargs Cat 1 2 3 

En este ejemplo, creamos rápidamente 3 archivos haciendo eco de un número y luego redirigiendo la salida (usando >) a 3 archivos individuales nombrados 1 a 3. Después de esto, verificamos la existencia de los archivos con el LS Comando (contenido del directorio de lista).

En el último comando, usamos el LS y tuberías (usando |) es salida a Xargs. Después de la Xargs Comando Enumeramos el nuevo comando que queríamos Xargs ejecutar Para cualquier entrada que recibió, individualmente por entrada, en este caso gato (que genera el contenido de un archivo).

Básicamente, el comando anterior es análogo al siguiente conjunto de comandos (aunque si el contenido del directorio cambiara, ya no sería análogo como el Xargs simplemente incluirá nuevas entradas de directorio):

$ Cat 1 1 $ Cat 2 2 $ Cat 3 3 

Ejemplo 2: un poco más complejo

$ ls -color = nunca | xargs -i  cat  1 2 3 

Aquí agregamos algunos modismos de sintaxis bash (un idioma es una construcción/expresión del lenguaje) para mejorar enormemente la calidad y quizás la legibilidad del mismo script de una línea, aunque la salida, en este caso, se ha mantenido como la misma.

El -I opción para Xargs Define un reemplazar Cadena que se usará dentro del comando xargs para insertar, en el punto donde se usa la cadena de reemplazo nuevamente, la entrada recibida y la de cada entrada individualmente - I.mi. el comando especificado después del Xargs El comando se ejecutará para cada entrada individualmente.

El --color = nunca La adición hace que la salida generada por el LS comando (y por lo tanto la entrada al Xargs comando) Mucho más seguro.

Ejemplo 3: salida de buggy

En el último ejemplo que presentamos --color = nunca Como opción aconsejable. Veamos un ejemplo de cómo, sin esta opción, podemos encontrarnos con problemas:

La salida de LS se contamina después de que se usó XARGS, lo que requiere el uso de -color = nunca opción a LS
$ mkdir 1 2 3 $ ls 1 2 3 $ ls | xargs ls ls: no se puede acceder "


Salida interesante 🙂 Entonces, ¿qué pasó aquí??

Primero creamos tres directorios, 1 a 3, y posteriormente verificó la creación del mismo. Observe que la salida es de color azul oscuro, cortesía de los colores de shell de Bash, que se configuran de forma predeterminada, por ejemplo, Ubuntu.

Luego tomamos la salida de LS y lo pasó a Xargs que a su vez lo volvió a pasar a LS. Similar a 'Echo 1 | LS 'One esperaría. Pero no funcionó! En cambio, recibimos un conjunto de códigos de color Backr. Cualquiera que vea esto por primera vez tendría dificultades para volver a vincularlo a los códigos de color.

Agregar una opción simple --color = nunca desinfectado el LS salida como entrada más adecuada para Xargs, y la salida se ve como se esperaba: para los directorios 1 a 3, como salida por el LS comando, enumere el contenido (i.mi. Similar a ls 1; ls 2; LS3).

Ejemplo 4: análisis de texto con xargs y sed

$ echo -e '1 \ n2 \ n3'> Test $ Cat Test 1 2 3 $ ls Test $ ls -Color = nunca | xargs -i  cat  | sed 's | [2-3] | 0 |' 1 0 0 $ ls -color = nunca | xargs -i  cat  | sed 's | [2-3] | 0 |' | xargs -i  grep  $ (ls) 1 

Un ejemplo un poco más desafiante, pero pronto lo entenderá.

El primer comando simplemente creó un archivo con tres líneas (\norte crea una nueva línea y el -mi La opción para hacer eco permite \norte para ser utilizado). A continuación, generamos el contenido del archivo usando gato, y verificó cuántos archivos estaban presentes usando LS (solo uno; el prueba Archivo que creamos).

A continuación tenemos nuestro comando Juicy Xargs, que, como saben de ejemplos anteriores, toma la lista de directorio, lo envía a Xargs y genera el contenido de cada archivo pasado usando gato. Entonces tenemos un pequeño sed comando que sustituye los números 2 y 3 a 0. La salida es el contenido completo del archivo de prueba, pero con el 2 y 3 cambiado a 0 como se indica.

Finalmente, tomamos el mismo comando y lo pasamos a otro Xargs. Piénselo así; visualmente (en su mente) ver el 1, 0, 0 Salida del comando anterior que se tiene en cuenta (|) en la final Xargs sin la complejidad anterior. Vea cómo puede construir comandos muy complejos gradualmente como este? Esto también muestra el poder de Xargs en pocas palabras, aunque mucho más es posible.

En el comando final pasamos que 1, 0, 0 transmitir a grep, que buscará el contenido de $ (LS). ps inicia una subshell, ejecuta cualquier comando que esté en él e inserta la salida de ese comando en el lugar donde se llamaba la subshell. En otras palabras, estamos ejecutando:

Grep '1' ./Test Grep '0' ./Test Grep '0' ./prueba 

Y los resultados son de hecho como se esperaba; 1 Solo que no había ceros en el archivo para comenzar con.

Conclusión

En este artículo hemos visto los conceptos básicos del Xargs comando y algunos ejemplo de cómo Xargs se puede usar, incluida la análisis de texto y la manipulación de la lista de directorio. Mi próximo artículo será más avanzado Xargs uso, incluidos ejemplos adicionales.

Disfrutar Xargs y déjanos un comentario con tu mejor Xargs líneas de comando o scripts!

Tutoriales de Linux relacionados:

  • Ejemplos sobre cómo usar el comando XARGS en Linux
  • XARGS multiprocesado con ejemplos
  • Cosas para instalar en Ubuntu 20.04
  • Bucles anidados en guiones Bash
  • Mastering Bash Script Loops
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Comandos básicos de Linux
  • Comandos de Linux: los 20 comandos más importantes que necesitas ..
  • Ejemplos de Linux Complex Bash One-Liner