Cómo ejecutar comandos desde la entrada estándar usando Tee y XARGS en Linux

Cómo ejecutar comandos desde la entrada estándar usando Tee y XARGS en Linux

Mientras usa la línea de comando, puede pasar directamente la salida de un programa (por ejemplo, una herramienta que genera cierta información o estadísticas del sistema) como entrada para otro programa (como herramientas de filtrado de texto o búsqueda de patrones como GREP, SED o AWK, para su posterior procesamiento), utilizando una tubería.

[También le puede gustar: Aprenda los conceptos básicos de cómo funciona la redirección de E/S (entrada/salida) de Linux]

Dos de las utilidades de línea de comandos más importantes que se pueden usar con tuberías para construir líneas de comando son:

  • XARGS: lee flujos de datos de la entrada estándar, luego genera y ejecuta líneas de comando.
  • Tee: se lee de la entrada estándar y escribe simultáneamente a la salida estándar y uno o muchos archivos. Es más un comando de redirección.

En este artículo simple, describiremos cómo construir y ejecutar múltiples comandos a partir de la entrada estándar usando tubería, tee, y Xargs Comandos en Linux.

La sintaxis más simple para usar un tubo, que es posible que ya haya visto en los comandos en muchos de nuestros tutoriales de Linux, es el siguiente. Pero puede construir una línea de comandos más larga con varios comandos.

$ Command1 Args | Command2 args o # command1 args | Comando2 Args | comando3 args .. 

A continuación se muestra un ejemplo de uso de una tubería para pasar la salida del comando dmesg al comando de cabeza.

$ dmesg | cabeza 
Pasar la salida del comando a otro comando

Cómo usar XARGS para ejecutar comandos

En este ejemplo, el segundo comando convierte la salida de la línea Muti en una sola línea usando XARGS.

$ LS -1 *.SH $ LS -1 *.sh | Xargs 
Ejecutar comandos usando xargs

Para contar el número de líneas/palabras/caracteres en cada archivo en una lista, use los comandos a continuación.

$ ls *.sh | XARGS WC -L #Count Número de líneas en cada archivo $ ls *.sh | XARGS WC -W #COUNT Número de palabras en cada archivo $ ls *.sh | XARGS WC -C #Count Número de caracteres en cada archivo $ ls *.sh | XARGS WC #Count Lines, palabras y caracteres en cada archivo 
Cuente las palabras de archivo usando xargs

El siguiente comando encuentra y elimina recursivamente el directorio nombrado Todo En el directorio actual.

$ Find . -nombre "Todo"-type d -print0 | xargs -0 /bin /rm -rf"  " 

El comando buscar con la opción -print0 La acción permite la impresión de la ruta completa del directorio en la salida estándar, seguida de un carácter nulo y -0 xargs Flag se ocupa del espacio en los nombres de archivo.

Puedes encontrar otras prácticas comando xargs Ejemplos de uso en estos artículos:

  • Cómo copiar un archivo a múltiples directorios en Linux
  • Cambie el nombre de todos los archivos y nombres de directorio a minúsculas en Linux
  • 4 formas de convertir su PNG a JPG y viceversa
  • 3 formas de eliminar todos los archivos en un directorio, excepto uno o pocos archivos con extensiones

Cómo usar Tee con comandos en Linux

Este ejemplo muestra cómo enviar la salida del comando a la salida estándar y guardarla en un archivo; El siguiente comando le permite ver los procesos de ejecución más altos mediante la memoria más alta y el uso de la CPU en Linux.

$ PS -EO CMD, PID, PPID,%MEM,%CPU --sort = -%MEM | Cabeza | Tee Topprocs.Txt $ Cat Topprocs.TXT 
Guardar la salida del comando en el archivo

Para agregar datos en un archivo existente, pase el -a bandera.

$ PS -EO CMD, PID, PPID,%MEM,%CPU --sort = -%MEM | Cabeza | Tee -A Topprocs.TXT 

Puede encontrar más información sobre el tee y Xargs Páginas del hombre.

$ hombre xargs $ man tee 

Eso es todo! No olvide consultar nuestro artículo especial: A - Z Linux Comandos - Descripción general con ejemplos.

En este artículo, describimos cómo generar líneas de comando usando tuberías; comandos de xargs y tee. Puede hacer cualquier pregunta o compartir cualquier pensamiento a través del formulario de comentarios a continuación.