Comando xargs - Construir e executar linhas de comando no Linux
Tabla de contenido:
- Cómo usar el comando
xargs
Linux - Cómo ver el comando y preguntar al usuario
- Cómo limitar el número de argumentos
- Cómo ejecutar múltiples comandos
- Cómo especificar un delimitador
- Cómo leer elementos del archivo
- Usando
xargs
confind
- Uso de xargs para recortar caracteres de espacio en blanco
- Conclusión
La utilidad
xargs
permite construir y ejecutar comandos desde la entrada estándar. Por lo general, se usa en combinación con otros comandos a través de tuberías.
Con
xargs
, puede proporcionar una entrada estándar como argumento para las utilidades de línea de comandos como
mkdir
y
rm
.
En este tutorial, cubriremos los conceptos básicos del uso del comando
xargs
.
Cómo usar el comando
xargs
Linux
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 para el comando
xargs
es la siguiente:
xargs]
El ejemplo más básico de usar
xargs
sería pasar varias cadenas separadas con espacios en blanco usando una tubería para
xargs
y ejecutar 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 comando
touch
se ejecuta para cada argumento, creando tres archivos. Esto es lo mismo que si corrieras:
Cómo ver el comando y preguntar al usuario
Para imprimir el comando en el terminal antes de ejecutarlo, use la opción
-t
(
--verbose
):
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
echo "file1 file2 file3" | xargs -p touch
Escriba
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
Por defecto, el número de argumentos pasados al comando está determinado por el límite del sistema.
La opción
-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 que se agoten todos los argumentos.
En el siguiente ejemplo, el número de argumentos que se leen de la entrada estándar está limitado a 1.
echo "file1 file2 file3" | xargs -n 1 -t touch
Como puede ver en la salida detallada 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 múltiples comandos con
xargs
, use la opción
-I
. Funciona definiendo un
replace-str
después de la opción
-I
y todas las apariciones de
replace-str
se reemplazan con el argumento pasado a xargs.
El siguiente ejemplo de
xargs
ejecutará dos comandos, primero creará los archivos usando la función
touch
y luego listará los archivos con el comando
ls
:
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
Use la opción
-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 que estamos usando
;
como delimitador:
echo "file1;file2;file3" | xargs -d ; -t touch
Cómo leer elementos del archivo
El comando xargs también puede leer elementos de un archivo en lugar de la entrada estándar. Para hacerlo, use la opción
-a
(
--arg-file
) seguida del nombre del archivo.
En el siguiente ejemplo, el comando
ips.txt
leerá el archivo
ips.txt
y
ips.txt
ping a cada dirección IP.
8.8.8.8 1.1.1.1
También estamos usando la opción
-L 1
, que le indica a
xargs
que lea una línea a la vez. Si se omite esta opción,
xargs
pasará todas las IP a un solo comando
ping
.
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 el comando
find
. Puede 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 opción find
-print0
, que hace que
find
imprima el nombre completo del archivo seguido de un carácter nulo. Esta salida puede ser interpretada correctamente por
xargs
usando la opción
-0
, (
--null
).
En el siguiente ejemplo,
find
imprimirá los nombres completos de todos los archivos dentro del directorio
/var/www/.cache
y
xargs
pasará las rutas de los archivos al comando
rm
:
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 al comando
xargs
, y hará el recorte:
echo " Long line " | xargs
Long line
Esto puede ser útil al comparar cadenas en scripts de shell.
#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; 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 construir y ejecutar comandos.
Para obtener información más detallada sobre cada opción de
xargs
, lea la página de manual de xargs.
Comando Chmod en Linux (permisos de archivo)

En Linux, el acceso a los archivos se gestiona a través de los permisos, atributos y propiedad del archivo. Este tutorial cubre cómo usar el comando chmod para cambiar los permisos de acceso de archivos y directorios.
Comando chgrp en linux (cambiar grupo)

En Linux, cada archivo está asociado con un propietario y un grupo y tiene permisos que determinan qué usuarios pueden leer, escribir o ejecutar el archivo. El comando chgrpc cambia la propiedad del grupo de los archivos dados.
Comando cp en linux (copiar archivos)

cp es una utilidad de línea de comandos para copiar archivos y directorios en sistemas Unix y Linux.