GNU/Linux >> Tutoriales Linux >  >> Linux

Comando Xargs en Linux

Los xargs La utilidad le permite construir y ejecutar comandos desde la entrada estándar. Suele utilizarse en combinación con otros comandos mediante canalización.

Con xargs , puede proporcionar una entrada estándar como argumento para utilidades de línea de comandos como mkdir y rm .

En este tutorial, cubriremos los conceptos básicos del uso de xargs comando.

Cómo usar Linux xargs Comando #

xargs lee los argumentos de la entrada estándar, separados por espacios en blanco o líneas nuevas, y ejecuta el comando especificado utilizando la entrada como argumentos del comando. Si no se proporciona ningún comando, el valor predeterminado es /bin/echo .

La sintaxis de xargs El comando es el siguiente:

xargs [OPTIONS] [COMMAND [initial-arguments]]

El ejemplo más básico del uso de xargs sería pasar varias cadenas separadas con espacios en blanco usando una tubería a xargs y ejecute un comando que usará esas cadenas como argumentos.

echo "file1 file2 file3" | xargs touch

En el ejemplo anterior, estamos canalizando la entrada estándar a xargs , y el touch El comando se ejecuta para cada argumento, creando tres archivos. Esto es lo mismo que si ejecutara:

touch file1 file2 file3

Cómo ver el comando y solicitar el número de usuario

Para imprimir el comando en la terminal antes de ejecutarlo use -t (--verbose ) opción:

echo  "file1 file2 file3" | xargs -t touch
touch file1 file2 file3

Si desea obtener un aviso para ejecutar cada comando antes de ejecutarlo, use -p (--interactive ) opción:

echo  "file1 file2 file3" | xargs -p touch

Escribe y o Y para confirmar y ejecutar el comando:

touch file1 file2 file3 ?...y

Esta opción es útil cuando se ejecutan comandos destructivos.

Cómo limitar el número de argumentos #

De forma predeterminada, el número de argumentos pasados ​​al comando está determinado por el límite del sistema.

El -n (--max-args ) especifica el número de argumentos que se pasarán al comando dado. xargs ejecuta el comando especificado tantas veces como sea necesario hasta agotar todos los argumentos.

En el siguiente ejemplo, la cantidad de argumentos que se leen de la entrada estándar está limitada a 1.

echo  "file1 file2 file3" |  xargs -n 1 -t touch

Como puede ver en el resultado detallado a continuación, el comando táctil se ejecuta por separado para cada argumento:

touch file1
touch file2
touch file3

Cómo ejecutar múltiples comandos #

Para ejecutar varios comandos con xargs , use el -I opción. Funciona definiendo un replace-str después del -I opción y todas las apariciones de replace-str se reemplazan con el argumento pasado a xargs.

Los siguientes xargs ejemplo ejecutará dos comandos, primero creará los archivos usando touch , y luego listará los archivos con el ls comando:

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file1
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file2
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file3

Una opción común para replace-str es % . Sin embargo, puede usar otro marcador de posición, por ejemplo, ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

Cómo especificar un delimitador #

Utilice el -d (--delimiter ) para establecer un delimitador personalizado, que puede ser un solo carácter o una secuencia de escape que comience con \ .

El siguiente ejemplo estamos usando ; como delimitador:

echo  "file1;file2;file3" | xargs -d \; -t touch
touch file1 file2 file3

Cómo leer elementos del archivo #

El comando xargs también puede leer elementos de un archivo en lugar de una entrada estándar. Para hacerlo, use -a (--arg-file ) seguido del nombre del archivo.

En el siguiente ejemplo, xargs El comando leerá el ips.txt archivar y hacer ping a cada dirección IP.

ips.txt
8.8.8.8
1.1.1.1

También estamos usando -L 1 opción, que instruye a xargs para leer una línea a la vez. Si se omite esta opción xargs pasará todas las direcciones IP a un solo ping comando.

xargs -t -L 1 -a ips.txt ping -c 1
ping -c 1 8.8.8.8 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms

...
ping -c 1 1.1.1.1 
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

Usando xargs con find #

xargs se usa con mayor frecuencia en combinación con find dominio. Puedes usar find para buscar archivos específicos y luego usar xargs para realizar operaciones en esos archivos.

Para evitar problemas con los nombres de archivo que contienen líneas nuevas u otros caracteres especiales, utilice siempre la función find -print0. opción, lo que hace que find para imprimir el nombre completo del archivo seguido de un carácter nulo. Esta salida puede ser interpretada correctamente por xargs usando el -0 , (--null ) opción.

En el siguiente ejemplo, find imprimirá los nombres completos de todos los archivos dentro de /var/www/.cache directorio y xargs pasará las rutas de archivo al rm comando:

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Uso de xargs para recortar caracteres de espacio en blanco #

xargs también se puede usar como una herramienta para eliminar espacios en blanco de ambos lados de una cadena dada. Simplemente canalice la cadena a xargs comando, y hará el recorte:

echo "  Long line " | xargs
Long line

Esto puede ser útil cuando se comparan cadenas en scripts de shell.

#!/bin/bash

VAR1=" Linuxize "
VAR2="Linuxize"

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

## Using xargs to trim VAR1
if [[ $(echo "$VAR1" | xargs) == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi
Strings are not equal.
Strings are equal.

Conclusión #

xargs es una utilidad de línea de comandos en Linux que le permite crear y ejecutar comandos.

Para obtener información más detallada sobre cada xargs opción, lea la página de manual de xargs.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.


Linux
  1. 11 ejemplos de comandos Xargs en Linux

  2. comando linux mv

  3. Linux du comando

  4. Comando IP de Linux

  5. Comando cd de linux

Comando de tipo Linux

Linux qué comando

Comando W en Linux

Al mando en Linux

Comando Df en Linux

Ejemplos de comandos xargs de Linux