Muchos comandos de Linux generan una gran cantidad de salida, más de la que desea o necesita. Una forma de controlar esta salida y filtrar exactamente la información requerida es usar el comparador de patrones grep. Grep coincide con cadenas de texto específicas. Puede usarlo como un comando independiente que incluye muchas opciones útiles por sí solo. Sin embargo, una forma muy efectiva de aprovechar al máximo grep es canalizar la salida de otros comandos en él.

El redireccionamiento de canalización asocia dos o más comandos. Toma la salida de un comando y la convierte en la entrada para el siguiente comando. Muchos comandos aceptan la entrada proporcionada a través de tuberías. El carácter de barra vertical comparte la misma tecla que la barra diagonal inversa en un teclado de EE. UU., y es estándar colocar un espacio a cada lado de la barra vertical.

En este artículo se proporcionan nueve ejemplos del uso de grep combinado con comandos comunes para mostrar resultados específicos.

Nota: Algunos ejemplos utilizan la opción -i con grep. Esta opción obliga a grep a ignorar mayúsculas y minúsculas, una modificación útil según el tipo de información que necesite.

Buscar contenido del archivo

Uno de los usos más fundamentales de grep es la coincidencia de patrones dentro del contenido del archivo. Los usuarios suelen ejecutar el comando cat para mostrar el contenido del archivo. Al canalizar la salida de cat a grep, puede buscar palabras clave o valores específicos dentro del archivo. Esto es útil cuando se comprueba el valor de una configuración de archivo de configuración.

Por ejemplo, para mostrar la configuración DocumentRoot en el archivo httpd.conf de Apache, escriba:

$ cat /etc/httpd/conf/httpd/httpd.conf | grep -i documentroot

Para ver más sobre el comando cat puede ver en nuestros articulos: https://blog.pachahosting.com/como-usar-el-comando-cat-para-escribir-un-texto-en-un-archivo/ y https://blog.pachahosting.com/como-escribir-texto-en-un-archivo-usando-el-comando-linux-cat

Filtrar por procesos específicos

Los procesos de Linux son instancias de código en ejecución. Si bien hay muchas formas de verificar el estado de los procesos, el comando ps es una herramienta común para ese trabajo. Desafortunadamente, su producción puede ser inmensa. Puede usar grep para filtrar exactamente el proceso que necesita, incluidos los procesos secundarios.

Por ejemplo, para mostrar cualquier instancia de proceso del servicio sshd, escriba:

$ ps -ef | grep -i sshd

Mostrar listados de directorios

El comando ls muestra el contenido del directorio. Si está comprobando si existe un subdirectorio o archivo en particular, el comando grep puede ayudar.

El directorio /etc contiene muchos subdirectorios y archivos, y no siempre tienen nombres intuitivos. Tal vez le gustaría ver todos los recursos relacionados con el networking. En ese caso, pruebe esta búsqueda:

$ ls /etc | grep -i net

Este ejemplo recoge cualquier cosa con la combinación de «net», ya sea al principio, al final o en el medio del nombre, independientemente de las mayúsculas y minúsculas.

Mostrar recursos por permiso

Por supuesto, el comando ls incluye muchas opciones útiles en las que los administradores de Linux confían a diario. Vincular | grep a esas opciones ofrece muchas oportunidades.

Considere una situación en la que está auditando o solucionando problemas de permisos. El comando ls -l muestra los permisos de los recursos, por lo que grep se puede utilizar para filtrar estos resultados.

Tal vez desee ver los recursos a los que alguien tiene acceso completo a rwx. En ese caso, utilice:

$ ls -l | grep rwx

Mostrar información de SELinux

Otra oportunidad común de solución de problemas se relaciona con SELinux. Al agregar la opción -Z a ls, puede mostrar información de contexto para el proceso httpd. Busca esa información fácilmente con grep.

Pruebe este ejemplo:

$ ls -Z /var/www| grep httpd

Auditar el espacio libre en disco

La utilidad de libre de disco (df) muestra el espacio consumido y disponible en los sistemas de archivos montados. La salida muestra dos valores particulares: «Sistema de archivos» y «Montado en» y filtrar estos resultados podría ser útil, especialmente en servidores con muchos dispositivos de almacenamiento y puntos de montaje complejos.

Por ejemplo, para ver los resultados específicos de /dev/sda, escriba:

$ df -h | grep sda

Vale la pena señalar que df muestra los mismos resultados que df /dev/sda, pero esa salida incluye los encabezados de columna. Tal vez esté introduciendo los resultados de df en un script u otro proceso y necesite evitar que los encabezados congestionen el resultado.

Del mismo modo, puede comprobar la información basada en los puntos de montaje escribiendo:

$ df -h | grep home

Los directorios de inicio son notoriamente grandes, por lo que este es un ejemplo lógico de auditoría.

Nota: Considere la posibilidad de utilizar -h con df para que la salida de la unidad de medida sea más fácil de leer.

Mostrar información del disco

Hay muchas otras formas de mostrar la información del dispositivo de almacenamiento. Si confía en fdisk para administrar particiones, sabe que puede agregar la opción -l para enumerar o mostrar las particiones existentes. Sin embargo, cuando se solucionan problemas, a menudo ya se sabe qué volúmenes le interesan. Una vez más, grep te permite adaptar la salida exactamente a lo que necesitas.

Pruebe el siguiente ejemplo. Muestra la información de fdisk para /dev/sda2 (la segunda partición en el primer dispositivo de almacenamiento). Es posible que deba usar sudo para elevar sus credenciales.

$ sudo fdisk -l | grep sda2

Filtrar mensajes de arranque

Linux conserva los mensajes de controlador de hardware y dispositivo generados durante el inicio del sistema. Estos mensajes son útiles para solucionar problemas de hardware u otros problemas de inicio. El comando dmesg muestra estos resultados. Normalmente, la salida es muy larga, por lo que es útil filtrar con grep.

Para mostrar información dmesg relacionada con USB, escriba:

$ dmesg | grep -i usb

O tal vez le gustaría ver información sobre el dispositivo de almacenamiento sda:

$ dmesg | grep -i sda

Resultados de la resolución del nombre para mostrar

Muchos administradores se encuentran solucionando problemas de resolución de nombres. La resolución de nombres relaciona nombres fáciles de recordar con direcciones IP difíciles de recordar. DNS es el ejemplo principal de un servicio de resolución de nombres. La resolución de nombres suele producirse de forma automática y en segundo plano, por ejemplo, durante la navegación web. Sin embargo, los solucionadores de problemas inician consultas manuales de resolución de nombres mediante herramientas como nslookup, dig y host. Si su sistema no incluye estas herramientas, use su administrador de paquetes preferido para instalar el paquete bind-utils.

Para mostrar el servidor de resolución de nombres consultado por nslookup, escriba:

$ nslookup www.pachahosting.com | grep -i servidor

O bien, para ver la salida específica de IPv6 del comando host, escriba:

$ host www.pachahosting.com | grep -i IPv6