Jugando con las pipes en Linux: ejemplos prácticos
Las tuberías o pipes son una de las maravillas del mundo Unix que ha heredado Linux. Con ellas puedes hacer multitud de cosas útiles en el terminal para enlazar comandos. Algo que no podrías hacer si no existiesen. Pero aún siguen causando algunas confusiones a algunos usuarios con poca experiencia o que acaban de llegar al muno *nix desde otro sistema operativo como Microsoft Windows.
Por eso, con este tutorial vamos a jugar con ellas mostrando algunos ejemplos prácticos que pueden ayudarte en tu día a día cuando trabajes en la línea de comandos. Verás como son bastante simples de usar y te pueden aportar muchísimo. Así que te animo a seguir leyendo y viendo los ejemplos…
- “Dosificar” la salida de un comando. De esta forma, puedes usar more o less para poder navegar a través de la salida de información de cualquier comando. Por ejemplo, la salida de un listado de ficheros y directorios, o la de procesos que respondan al nombre de “office”:
ls -al | more ps aux | grep office | less
- Contar el número de líneas que tiene la salida de un comando o un fichero. Por ejemplo, ver las líneas que tiene un fichero ejemplo.txt o la cantidad de procesos en marcha (recuerda restar 1, porque la primera línea es la cabecera) e incluso la cantidad de ficheros o directorios:
cat ejemplo.txt | wc -l ps aux | wc -l ls | wc -l
- Localizar una línea o palabra concreta, por ejemplo la IP que comienza por 192.168 de las interfaces de red activas:
ifconfig | grep 192.168
- Localizar unos valores concretos, por ejemplo los permisos de los ficheros y directorios, y mostrar los PID de los procesos correspondientes con systemd:
ls -lR | grep rwx ps aux -ef | grep systemd | awk '{ print $2 }'
- Ordenar las líneas de un fichero por orden alfabético:
cat ejemplo.txt | sort
- Ver las primeras o últimas 10 líneas de un fichero, pero solo las que contengan una palabra concreta:
head /var/log/syslog | grep WARNING tail -f /var/log/syslog | grep error