Terminal sin complicaciones: grep, cat, less y nano para analizar archivos de registro

Terminal sin complicaciones: grep, cat, less y nano para analizar archivos de registro

Linux vive del texto: registros de servicios, configuraciones, scripts e incluso paquetes de gestores — todo se guarda en archivos simples. Cuanto mejor te manejes en este mar de líneas, más rápido encontrarás errores, automatizarás tareas rutinarias y crearás soluciones fiables. 

Por qué es importante conocer los «detalles»

Cada segundo dedicado a hojear manualmente gigabytes de registros es tiempo que podría usarse en el análisis de un incidente. Las utilidades como grep y sed no requieren gigabytes de memoria y funcionan más rápido que complejas alternativas gráficas. Están integradas por defecto, lo cual es crucial en un servidor sin sesión X. Finalmente, se pueden encadenar en una canalización, convirtiendo un conjunto de comandos simples en un microscript de una sola línea.

Visualización ultrarrápida del contenido

cat — muestra todo de una vez

Comando básico para volcar un archivo completo:

cat /etc/services

A menudo es conveniente «aderezar» la salida:

  • cat -n /etc/ssh/sshd_config
     — la numeración de líneas ayuda a referirse a un lugar concreto;
  • cat -A messages.log
     — muestra los caracteres de tabulación y el fin de línea;
  • cat file{1..4}.txt >> merged.txt
     — concatenación de varios archivos.

head, tail y watch — lupa en vivo sobre los registros

head -n 50 /var/log/dpkg.log
  • Con la opción -c se puede indicar el número de bytes, no de líneas.
tail -f /var/log/auth.log

El comando muestra las nuevas líneas en tiempo real. A veces es útil envolverlo en watch:

watch -n2 tail -n20 /var/log/syslog

Así ves cada dos segundos las últimas veinte líneas.

less — visor interactivo

less +F nginx/access.log
  • /pattern — búsqueda hacia adelante, ?pattern — hacia atrás;
  • ®ex — filtración: quedan solo las líneas coincidentes;
  • v — abrir el archivo actual en un editor externo definido por la variable VISUAL.

Instale el paquete lesspipe para mostrar automáticamente archivos comprimidos y PDF directamente en less.

Búsqueda y filtrado: grep y compañía

grep — «extrae» lo necesario

grep -R --color=auto -E "404|500" /var/log/nginx
  • -R — recorrido recursivo de directorios;
  • -E activa expresiones regulares extendidas (alternancia con la barra vertical);
  • --color=auto resalta las coincidencias, facilitando el escaneo visual.

ripgrep y The Silver Searcher — velocidad turbo

ripgrep (rg) respeta .gitignore, trabaja en paralelo y muestra el resultado con resaltado:

rg --stats 'TODO:' ~/projects

La herramienta análoga ag es popular entre desarrolladores.

Edición en caliente

nano — cuando hay que corregir rápidamente un archivo de configuración

Lo iniciaremos con resaltado para la configuración SSH:

sudo nano /etc/ssh/sshd_config
  • Ctrl + W — buscar, Alt + W — continuar;
  • Alt + 3 — comentar el bloque seleccionado;
  • Alt + / — saltar al final del archivo.

Active el resaltado de sintaxis añadiendo la línea include "/usr/share/nano/*.nanorc" en ~/.nanorc.

sed — editar sin abrir

sed -i.bak 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config

La opción -i.bak indica crear una copia de seguridad. Para múltiples patrones, use un archivo de reglas — cómodo para actualizaciones masivas.

awk — texto como tabla

awk -F: '{print $1, $3}' /etc/passwd | sort -k2 -n

El comando muestra el nombre de usuario y su UID, ordenando por el campo numérico.

Composición: la fuerza de las canalizaciones

journalctl -u ssh -p err -n 1000 
  | grep -vE "Disconnected from" 
  | awk '{print $11}' 
  | sort | uniq -c | sort -nr | head

La cadena concisa muestra el top‑10 de direcciones IP que generaron errores de autenticación por SSH.

find, xargs y operaciones masivas

find /var/www -type f -name "*.php" -size +1M -print0 
  | xargs -0 du -h | sort -h

El comando busca archivos PHP «pesados», calcula el tamaño y ordena de forma ascendente. El truco con -print0 y -0 evita problemas con espacios en el nombre de archivo.

diff y patch: control de versiones sin Git

diff -u original.conf new.conf > fix.patch
patch -p1 < fix.patch

Útil al enviar cambios a colegas cuando el repositorio no está disponible.

tee, sustitución de procesos y canales con nombre

sudo tcpdump -i eth0 -n 
  | tee >(wc -l > packets.count) 
  | grep "flags [S]" > syn.log

El archivo packets.count contendrá el número de paquetes, y syn.log — solo los TCP‑SYN.

Práctica: auditoría exprés de los registros del servidor web

  1. zgrep -h "GET /wp-login.php" /var/log/nginx/access*.gz 
           | awk '{print $1}' > attackers.txt
  2. sort attackers.txt | uniq -c | sort -nr | head
  3. xargs -a attackers.txt -I{} whois {} | grep -iE "country|org"

Tres pasos: identificamos ataques a WordPress, contamos la frecuencia de IP y consultamos la geografía.

Codificaciones y locales: vencer los textos corruptos

iconv -f windows-1251 -t utf-8 report.cp1251 > report.utf8

Compruebe la localidad actual:

locale | grep LANG

Es mejor usar UTF‑8 de forma general, evitando el «ruido» en la salida.

Permisos: riesgo mínimo

  • umask 027
     — un nuevo directorio obtendrá permisos 750, un archivo — 640;
  • chmod g-w,o-rwx secrets.env
     — eliminamos bits innecesarios;
  • chattr +i /etc/hosts
     — bloquea la modificación accidental del archivo del sistema.

Detalles útiles que a menudo se olvidan

  • bat — «cat» con resaltado y número de líneas;
  • exa — análogo colorido de ls con vista de árbol;
  • tldr‑pages — manuales concisos;
  • cheat.sh — ejemplos de comandos en una sola línea;
  • distrosea.com — sandbox en línea para experimentar sin máquina virtual.

Prácticas recomendadas para scripts

  • Si una canalización supera las dos líneas, ponla en un script — mañana olvidarás el orden de las opciones.
  • Añada set -euo pipefail al inicio de scripts bash para capturar errores.
  • Use funciones nombradas en vez de atajos «mágicos» de una sola línea — son más fáciles de probar.

Conclusiones

La destreza en el trabajo con texto en Linux es un descubrimiento constante de nuevas combinaciones de comandos. Cuando grep, awk y sed se vuelven habituales, no se pierde tiempo en ventanas gráficas y se pasa directamente al análisis:

  • ¿el directorio se ha «hinchado» de repente? du | sort -h;
  • ¿el registro se llenó de errores? grep -i error;
  • ¿hay que arreglar una configuración en cien servidores? sed -i mediante un bucle SSH.

Perfeccione comandos cortos, combínelos en canalizaciones, mantenga una chuleta a mano y no tema profundizar en expresiones regulares. Son ellas las que convierten el caos de gigabytes de registros en una imagen comprensible de lo que ocurre.

Alt text