Mientras usa la línea de comando, puede pasar directamente la salida de un programa (por ejemplo, una herramienta que genera información o estadísticas del sistema) como entrada para otro programa (como filtrado de texto o herramientas de búsqueda de patrones como grep, sed o awk, para su posterior procesamiento), utilizando una canalización.
Lea también :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 comando más importantes que se pueden usar con canalizaciones para crear líneas de comando son:
xargs
– lee flujos de datos de entrada estándar, luego genera y ejecuta líneas de comando.tee
– lee desde la entrada estándar y escribe simultáneamente en la salida estándar y en uno o varios archivos. Es más un comando de redirección.
En este sencillo artículo, describiremos cómo compilar y ejecutar varios comandos a partir de una entrada estándar utilizando tuberías. , camiseta y xargs comandos en Linux.
La sintaxis más simple para usar una tubería , que es posible que ya haya visto en los comandos de muchos de nuestros tutoriales de Linux, es el siguiente. Pero puede crear una línea de comando más larga con varios comandos.
$ command1 args | command2 args OR # command1 args | command2 args | command3 args ...
A continuación se muestra un ejemplo del uso de una canalización para pasar la salida del comando dmesg al comando head.
$ dmesg | head
Cómo usar xargs para ejecutar comandos
En este ejemplo, el segundo comando convierte la salida multilínea en una sola línea usando xargs.
$ ls -1 *.sh $ ls -1 *.sh | xargs
Para contar el número de líneas/palabras/caracteres en cada archivo de una lista, utilice los siguientes comandos.
$ ls *.sh | xargs wc -l #count number of lines in each file $ ls *.sh | xargs wc -w #count number of words in each file $ ls *.sh | xargs wc -c #count number of characters in each file $ ls *.sh | xargs wc #count lines, words and characters in each file
El siguiente comando encuentra y elimina recursivamente el directorio llamado All
en el directorio actual.
$ find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"
El comando de búsqueda con la opción -print0
La acción habilita 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.
Puede encontrar otros comandos xargs prácticos ejemplos de uso en estos artículos:
- Cómo copiar un archivo a varios directorios en Linux
- Renombrar todos los archivos y directorios a minúsculas en Linux
- 4 formas de convertir por lotes su PNG a JPG y viceversa
- 3 formas de eliminar todos los archivos de un directorio excepto uno o algunos 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 principales procesos en ejecución según el mayor uso de memoria y CPU en Linux.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt $ cat topprocs.txt
Para agregar datos en un archivo existente, pase -a
bandera.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt
Puedes encontrar más información en tee y xargs páginas man.
$ man xargs $ man tee
¡Eso es todo! No olvide consultar nuestro artículo especial:Comandos Linux A - Z - Descripción general con ejemplos.
En este artículo, describimos cómo generar líneas de comando usando canalizaciones; Comandos xargs y tee. Puede hacer cualquier pregunta o compartir sus pensamientos a través del formulario de comentarios a continuación.