Descubre cómo las tuberías en Linux transforman comandos simples en poderosas herramientas, facilitando tareas como filtrar datos, acceder a historiales y generar contraseñas de forma eficiente.
La función de tuberías es una de las fuerzas impulsoras detrás de la filosofía de Linux, un solo carácter que cambia todo sobre cómo trabajas. Al conectar la salida de un comando a la entrada de otro, puedes encadenar pequeños programas, creando una herramienta que es mucho mayor que la suma de sus partes.
Si te cuesta ver el valor de las tuberías, o simplemente buscas entender su uso práctico un poco mejor, no hay mejor lugar para comenzar que estos ejemplos comunes y efectivos.
grep | less
Filtrar datos y paginar los resultados
Un comando grep típico puede devolver muchos resultados, especialmente si estás utilizando prueba y error para refinar una expresión regular. Un comando como grep '[Qq]' /usr/share/dict/words producirá más de una pantalla de salida:
Para ver más que solo la última página de resultados, necesitarás usar un paginador. El comando grep no soporta directamente uno, pero puedes dirigir cualquier conjunto de salida a un paginador y verlo página por página:
grep '[Qq]' /usr/share/dict/words | less tail | grep
El comando tail es útil cada vez que quieres explorar las últimas líneas de un archivo, más a menudo un archivo de registro. Su opción -f proporciona una vista en vivo de un archivo (o entrada estándar), continuando imprimiendo las líneas que se agregan al archivo. Es perfecto para monitorear archivos de registro, como el registro de acceso de Apache:
Sin embargo, probablemente querrás filtrar dichas líneas de registro, buscando datos específicos que coincidan con URLs, mensajes específicos, códigos de respuesta, etc. La herramienta grep es excelente para esto, y se combina perfectamente con tail en una tubería como tail -f archivo | grep patrón.
Podrías olvidar el orden de estos comandos y esperar que funcionen al revés. Sin embargo, conectar grep a tail -f hará que la tubería termine de inmediato porque tail ignora -f cuando la entrada es una tubería.
history | grep
Acceso rápido a comandos que has ejecutado antes
El comando history es increíblemente útil, dándote acceso a comandos que has ejecutado previamente. Pero tu historial contiene mucho detalle; por defecto, en bash, son los últimos 500 comandos. Y puede ser incluso más, especialmente si has configurado un historial ilimitado.
Esta es otra oportunidad perfecta para que grep filtre solo las líneas que realmente te interesan:
history | grep ls sort | uniq
Resumen simple de información a partir de datos estructurados
Los filtros sort y uniq son tan útiles cuando se combinan con otros comandos que los verás usados en tuberías una y otra vez. uniq es la abreviatura de "único", y ambos comandos hacen prácticamente exactamente lo que esperarías, según sus nombres.
Aquí tienes un ejemplo de una tubería que muestra qué direcciones IP han visitado un sitio web y cuántas veces cada una ha enviado una solicitud:
</var/log/apache2/access_log cut -f1 -d' ' | sort | uniq -c Esta tubería involucra tres comandos, el primero de los cuales—cut—extrae el campo de dirección IP de un registro de acceso de Apache estándar. sort ordenará todas las líneas de entrada que se le envían, mientras que uniq eliminará duplicados y, con la opción -c, contará el total. Terminarás con un buen resumen:
df | tee
Obtener informes de espacio en disco en pantalla y en un archivo
El comando tee fue hecho para la tubería; su operación principal es copiar su entrada estándar a la salida estándar. Eso puede parecer inútil, excepto por la característica adicional que proporciona: guardar esa misma entrada en uno o más archivos.
Normalmente, para guardar la salida de un comando, puedes usar redirección:
echo "Hola mundo" > myfile.txt Sin embargo, redirigir esa salida impide que la veas en pantalla o que la conectes a otra parte:
Usando el comando tee, puedes guardar la salida en un archivo, pero aún tenerla en la tubería, para procesamiento adicional o salida en pantalla:
echo "Hola mundo" | tee myfile.txt Incluso puedes proporcionar múltiples argumentos a tee, en caso de que quieras guardar la salida en más de un archivo a la vez.
tee es una excelente opción si alguna vez quieres verificar la salida de un comando, pero mantener un registro de ella al mismo tiempo. Por ejemplo, puedes usar el comando df para.
Informe sobre el uso del disco:
df -h | tee diskusage.txt Redirigir la salida a tee significa que todavía aparecerá en la pantalla, pero también obtendrás un registro permanente almacenado en un archivo.
echo | xargs
Copiar un archivo a múltiples directorios
El comando xargs es un poco como tee; es un "meta comando" que altera cómo opera la línea de comandos. xargs te permite inyectar su entrada en los argumentos de otro comando, por lo que a menudo se utiliza como parte de tuberías más complicadas.
Por defecto, xargs convierte cada valor delimitado por espacios en un argumento, añadiéndolos a un comando que le pases. También puedes usar la opción -n para llamar al comando más de una vez, pasando un segmento de argumentos cada vez, como en este ejemplo:
echo "dir1 dir2" | xargs -n 1 cp -v myfile.md El comando cp no copiará un archivo a múltiples directorios, así que esta tubería instruye a xargs para proporcionar un argumento a la vez, expandiéndose a:
cp -v myfile.md dir1 cp -v myfile.md dir2 curl | jq
Procesar datos recuperados de una API web
Si alguna vez has utilizado curl para acceder a una API web desde la línea de comandos, probablemente te has enfrentado a una larga respuesta que contiene JSON que necesitas procesar más:
El comando curl es excelente para manejar todo tipo de solicitudes web, pero el procesamiento adicional requiere otros comandos como, en este caso, jq, el procesador de JSON de línea de comandos. Usando jq, puedes escribir filtros para transformar los datos JSON en formas más legibles o apropiadas. Por ejemplo, la cosa más simple que puedes hacer es usar el operador identidad (.) para copiar la entrada, pero validarla y formatearla también:
curl -s https://catfact.ninja/fact | jq '.' Puedes escribir todo tipo de filtros para segmentar y preparar los datos como desees. El ejemplo anterior devuelve un solo objeto con propiedades de hecho y longitud, que puedes extraer con un filtro simple:
curl -s https://catfact.ninja/fact | jq -r '.fact' du -sh * | sort -h
Encontrar tus archivos y directorios más grandes
El programa du informa el tamaño total de los archivos y directorios que le pases:
Esto es genial, pero probablemente estés buscando los archivos que están ocupando más espacio en disco. Desafortunadamente, du no ofrece ninguna forma integrada de ordenar su salida. Afortunadamente, existe el viejo y bueno comando sort.
sort es un comando filtro que ordena su entrada y la imprime como salida. Puedes usarlo para ordenar la salida estándar de du:
du -s * | sort Esto está bien, pero la salida está en bloques, lo cual no es el más legible. Para hacer lo mismo, con tamaños más legibles, usa la opción -h para ambos comandos:
du -sh * | sort -h Aún así, aunque la salida no se ordene naturalmente, sort es lo suficientemente inteligente como para reconocer el formato y ordenar kilobytes antes de megabytes, etc.
date | md5sum
La forma más rápida de generar una contraseña decente
Recurrir a esto todo el tiempo al generar contraseñas; es rápido, efectivo y fácil de recordar. El md5sum hasheará su entrada utilizando el algoritmo MD5 e imprimirá el resultado:
Cuando necesito un conjunto aleatorio de caracteres hexadecimales, esto es lo que elijo. Podrías usarlo para una variedad de propósitos, incluyendo la generación de colores CSS aleatorios, pero también es bastante conveniente para la generación de contraseñas.
Esto puede no ser la forma más segura de elegir una contraseña. ¡Consulta consejos de seguridad antes de elegir una contraseña, especialmente para usos de alto riesgo!
Con práctica, las tuberías comunes se volverán algo natural
Si hay una tubería que no has utilizado antes, puede tomar un tiempo familiarizarte con ella. Practica cualquiera que parezca útil y, después de un corto tiempo, comenzarás a redirigir a grep o sort con tanta frecuencia que te preguntarás cómo has sobrevivido sin ellos.
Si deseas encontrar artículos similares a 9 tuberías de comandos esenciales que simplifican el uso diario de Linux, te sugerimos revisar la categoría Linux.

Deja una respuesta