Cómo funciona Xargs:
El formato en el que usa el comando xargs es:
$ Command1 | comando xargs2
También puede modificar el comportamiento de XARGS con algunas opciones. En ese caso, el formato del comando XARGS será:
$ Command1 | comando xargs [opciones]
Aquí, la salida del comando1 se utilizará como el argumento de comando2. La salida de comando1 se divide en muchos argumentos por Xargs dependiendo de un personaje llamado delimitador. Entonces, Xargs ejecuta el comando comando2 para cada uno de estos argumentos y ese argumento se pasa como el argumento del comando comando2.
Por ejemplo, digamos, la salida de comando1 es como sigue:
valor1 valor2 valor3Digamos que el personaje delimitador es espacio. Ahora, la salida de comando1 se dividirá en 3 argumentos, valor1, valor2, y valor3.
Ahora, Xargs ejecuta el comando comando2 para cada uno de los 3 argumentos una vez.
$ comando2 valor1
$ comando2 valor2
$ comando2 valor3
Aquí, valor1, valor2, y valor3 ¿Están los argumentos analizados por XARGS desde la salida del comando comando1.
Puede lograr el mismo efecto usando bucles en un script de shell. Pero Xargs es una forma más fácil de hacer las cosas sin bucles, especialmente en la línea de comandos.
Por defecto, el delimitador de XARGS es el carácter de Newline/Space. Pero puedes cambiar el carácter delimitador con el -d o -delimitador opción de xargs.
Por defecto, XARGS funciona con un argumento a la vez. Si quieres ejecutar el comando comando2 con múltiples argumentos de la salida del comando comando1, Entonces puedes usar el -norte o -max-args opción de xargs. A veces, tendrá que decirle a Xargs específicamente que trabaje con un argumento a la vez con el -norte o -max-args opción.
También puede agregar o prepender otras cadenas a los argumentos pasados al comando comando2 utilizando el -I opción de xargs.
Hay muchas otras opciones de XARGS, pero estas 3 son las más importantes y útiles. Entonces, solo cubriré estos 3 argumentos de Xargs en este artículo.
Eso es suficiente enlaza. Pasemos por algunos ejemplos.
Ejemplo 1: Creación y eliminación de archivos enumerados en un archivo de texto
Digamos que tiene una lista de nombres de archivo en un archivo de texto archivos.TXT.
Puede ver el contenido del archivo de texto archivos.TXT Como se muestra en la captura de pantalla a continuación.
$ archivos CAT.TXT
Ahora, puede crear todos los archivos enumerados en el archivos.TXT archivo de texto utilizando el tocar ordenar con Xargs como sigue:
$ archivos CAT.txt | Touch de Xargs
Como puede ver, los archivos se crean como se enumeran en el archivos.TXT.
Ahora, digamos, desea eliminar los archivos que se enumeran en el archivos.TXT Archivo de texto. Puedes usar el RM ordenar con Xargs como sigue:
$ archivos CAT.txt | xargs rm -v
Solo los archivos enumerados en el archivos.TXT El archivo se elimina como puede ver en la captura de pantalla a continuación.
Este es un ejemplo muy simple de xargs.
Ejemplo 2: redirige stdout a comandos que no admiten tuberías
Puede redirigir el stdout de un comando comando1 Como el stdin de otro comando comando2 if comando comando2 Admite tubería de Linux. Pero si el comando no admite tubería, no podrá hacerlo.
Por ejemplo, el eco El comando no admite tubería. Entonces, el siguiente comando no imprimirá nada como pueda ver en la captura de pantalla a continuación.
$ Fecha | eco
El comando xargs puede ayudarlo a redirigir el stdout de comando1 (en este caso fecha) al stdin de comando2 (en este caso eco) Como puede ver en la captura de pantalla a continuación.
$ Fecha | Xargs Echo
Ejemplo 3: Cambiar delimitador de xargs
Aquí, he imprimido una cadena 123-456-7890 (un número de teléfono ficticio) usando xargs. Como puede ver, toda la salida se trata como un solo argumento y Xargs ejecuta el eco comandar solo una vez.
$ Echo -N 123-456-7890 | Xargs Echo
Aquí he cambiado el delimitador a - utilizando el -d opción de xargs. Como puede ver, la salida 123-456-7890 ahora se trata como 3 argumentos diferentes 123, 456, y 7890.
$ Echo -n "123-456-789" | xargs -n 1 -d -eco
Ejemplo 4: Añadir o prepender argumentos de Xargs
Puede agregar (agregar al final del argumento) o prepender (agregar al frente del argumento) cadena al argumento pasado al comando comando2 Usando xargs. Antes de mostrarte cómo hacer esto, te mostraré cómo usar el -I opción de xargs.
El -I La opción de XARGS le permite definir un símbolo para el argumento XARGS que se pasa al comando comando2. Funciona como una variable.
Por ejemplo,
$ Echo -n "123-456-789" | xargs -d --n 1 -i echo
Aquí, -i opción define Como el símbolo del argumento en el que Xargs está trabajando actualmente. Una vez el símbolo se define, el símbolo se puede usar para pasar el argumento al comando comando2, Que (el símbolo ) será reemplazado por el valor del argumento.
Ahora, para agregar la cadena .TXT (Digamos) a cada argumento, puede usar Xargs de la siguiente manera:
$ Echo -n "123-456-789" | xargs -d --n 1 -i echo .TXT
De la misma manera, puedes prepender la cadena Hola (Digamos) a cada argumento de la siguiente manera:
$ Echo -n "123-456-789" | xargs -d --n 1 -i echo "hola "
Ejemplo 5: Cambio de extensiones de archivos específicos
Este es un poco complicado. Pero explicaré cómo funciona. No te preocupes.
Digamos que tiene algunos archivos en su directorio de trabajo actual con diferentes extensiones de archivos. Ahora, quieres cambiarlos todos a png extensión.
Puede cambiar la extensión del archivo de todos los archivos en su directorio de trabajo actual a PNG con XARGS de la siguiente manera:
$ ls | xargs -i bash -c 'file = && mv -v $ file $ file %%.*.png '
Como puede ver, toda la extensión del archivo ha cambiado a PNG.
Aquí, Xargs comienza un Sub Shell de Bash y ejecuta el comando Bash
File = && mv -v $ file $ archivo %%.*.png
Primero, Archivo = Asigna el símbolo valor, que es el nombre de archivo (el valor de argumento de xargs) al ARCHIVO variable de shell.
Entonces, MV El comando se usa para cambiar la extensión del archivo.
El $ Archivo La variable de shell contiene el nombre de archivo original.
$ Archivo %%.* Elimina la extensión del nombre de archivo (incluido . personaje) y luego .png la cadena se adjunta al nombre de archivo despojado.
Xargs puede hacer cosas mucho más complejas. Sigue probando cosas nuevas con xargs. El cielo es tu límite.
Si necesita ayuda en XARGS, puede consultar la página del hombre de XARGS de la siguiente manera:
$ hombre xargs
Entonces, así es como usas xargs en Linux. Gracias por leer este artículo.