Introducción
Ya sabes navegar el sistema de archivos, crear directorios y manipular archivos. Pero hasta ahora has trabajado con archivos como objetos: los creas, los copias, los mueves. En esta lección vas a aprender a mirar dentro de ellos y a encontrar archivos específicos en el sistema.
Cuatro comandos cubren estas tareas: cat para ver el contenido de un archivo, less para navegar archivos largos, grep para buscar texto dentro de archivos y find para localizar archivos en el sistema de archivos.
¿Por qué necesitas leer y buscar?
En Linux, la información vive en archivos de texto: configuraciones del sistema, logs de servicios, scripts, notas. Saber que un archivo existe no es suficiente: necesitas ver qué contiene. Y cuando no sabes dónde está un archivo, necesitas buscarlo.
En seguridad ofensiva, leer y buscar son habilidades de enumeración. Revisar archivos de configuración, buscar contraseñas en logs, localizar scripts ejecutados por otros usuarios: todo empieza con estos cuatro comandos.
Dos tipos de búsqueda
Es importante distinguir dos operaciones diferentes:
- Buscar texto dentro de un archivo: sabes qué archivo mirar, pero necesitas encontrar una línea o palabra específica. Para esto usas
grep. - Buscar un archivo en el sistema: no sabes dónde está un archivo, pero conoces su nombre o alguna característica. Para esto usas
find.
La primera pregunta siempre es: ¿estoy buscando *dentro* de un archivo, o estoy buscando *el archivo*?
Lectura y búsqueda en la práctica
Vamos a trabajar con archivos reales del sistema. Empieza desde tu directorio home:
1$ cd ~
2Ver el contenido completo: cat
cat (*concatenate*) muestra el contenido completo de un archivo en la terminal. Es ideal para archivos cortos:
1$ cat /etc/hostname
2kali
3También puedes ver varios archivos a la vez:
1$ cat /etc/hostname /etc/timezone
2kali
3America/New_York
4cat es rápido y directo, pero tiene un problema: si el archivo es largo, todo el contenido se desplaza por la terminal y solo ves el final.
Navegar archivos largos: less
Para archivos que no caben en una pantalla, usa less. En lugar de imprimir todo de golpe, less te permite navegar el contenido página por página:
1$ less /etc/services
2Dentro de less, los controles básicos son:
Espacioof: avanzar una páginab: retroceder una páginag: ir al principioG: ir al final/texto: buscar "texto" hacia adelanteq: salir
El archivo /etc/services lista los puertos de red y sus servicios asociados y tiene cientos de líneas. Con less puedes explorar su contenido sin perder el control de la terminal.
Buscar texto dentro de archivos: grep
grep busca líneas que contengan un patrón de texto y las muestra. Es uno de los comandos que más vas a usar en Linux:
1$ grep "http" /etc/services
2http 80/tcp www # WorldWideWeb HTTP
3https 443/tcp # http protocol over TLS/SSL
4http-alt 8080/tcp webcache # WWW caching service
5grep encontró todas las líneas que contienen "http" en el archivo /etc/services. Para buscar sin distinguir mayúsculas de minúsculas, usa la opción -i:
1$ grep -i "HTTP" /etc/services
2Y para buscar en todos los archivos de un directorio, añade -r (recursivo):
1$ grep -r "password" /etc/ 2>/dev/null
2Este comando busca la palabra "password" en todos los archivos dentro de /etc/. El 2>/dev/null al final oculta los mensajes de error por archivos que no tienes permiso de leer. Por ahora solo necesitas saber que silencia esos errores.
Localizar archivos en el sistema: find
find busca archivos y directorios por nombre, tipo, tamaño u otras propiedades. La sintaxis básica es find dónde-buscar -criterio valor:
1$ find /home -name "notas.txt"
2/home/user/practica/notas.txt
3Esto busca un archivo llamado exactamente "notas.txt" dentro de /home y sus subdirectorios. Para buscar por nombre parcial, usa comodines entre comillas:
1$ find /home -name "*.txt"
2/home/user/practica/notas.txt
3/home/user/practica/respaldo.txt
4Para buscar solo directorios, añade -type d. Para buscar solo archivos, usa -type f:
1$ find /home -type d -name "proyecto"
2/home/user/practica/proyecto
3El ciclo de inspección
Leer y buscar siguen un patrón natural:
- Localizar: ¿dónde está el archivo? →
find - Inspeccionar: ¿qué contiene? →
cat(corto) oless(largo) - Filtrar: ¿qué líneas me importan? →
grep
Este ciclo es el mismo que usarás para examinar cualquier sistema: encontrar archivos interesantes, leer su contenido y extraer la información relevante. Los comandos cambian de escala (en un sistema grande buscarás entre miles de archivos), pero el patrón es el mismo.
Errores comunes
Advertencia
Usar `cat` en archivos enormes. Si haces cat en un archivo de miles de líneas, la terminal se inundará de texto. Usa less para archivos que no conoces, o head -n 20 archivo para ver solo las primeras 20 líneas.
Advertencia
Olvidar que `grep` distingue mayúsculas. grep "Password" archivo y grep "password" archivo buscan cosas diferentes. Si no encuentras lo que buscas, prueba con -i para ignorar mayúsculas.
Consejo
Combina `find` y `ls` para contexto. Si find devuelve una lista de archivos y quieres ver sus permisos y tamaños, puedes usar -ls como acción: find /home -name "*.txt" -ls. Esto muestra cada resultado con formato similar a ls -l.
Conclusión
Con cat, less, grep y find puedes ver el contenido de cualquier archivo, navegar documentos largos, buscar texto específico y localizar archivos en el sistema. Hasta ahora, cada comando que has aprendido funciona de forma independiente. En la siguiente lección aprenderás a conectar comandos entre sí usando redirección y pipes, la mecánica que convierte comandos individuales en herramientas combinadas.