Xargs para principiantes con ejemplos
- 776
- 22
- Sr. Eduardo Menchaca
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
Requisitos y convenciones de software utilizados
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:
$ 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
- « Entropía aleatoria en Bash
- Cómo verificar la integridad de una imagen ISO de distribución de Linux »