Curso sobre comandos de linux
🎯 Objetivo del módulo Aprender a localizar archivos, buscar texto dentro de ellos y filtrar información relevante en sistemas grandes.
📌 En sistemas reales hay miles o millones de archivos. Saber buscar bien = ahorrar horas de trabajo.
🧠 Conceptos clave
🔍 Dos tipos de búsqueda
- Buscar archivos (por nombre, tamaño, fecha…)
- Buscar texto dentro de archivos
🗂️ Comandos del módulo
| Linux | Windows CMD | PowerShell |
|---|---|---|
find | dir /s | Get-ChildItem -Recurse |
locate | ❌ | ❌ |
grep | findstr | Select-String |
which | where | Get-Command |
whereis | ❌ | ❌ |
🔸 find
📌 Categoría
Búsqueda de archivos
🧾 Descripción
Busca archivos y directorios recorriendo el sistema según criterios.
🧠 Sintaxis
1find ruta [condiciones] [acciones]
⚙️ Opciones más usadas
| Opción | Significado |
|---|---|
-name | nombre exacto |
-iname | nombre sin distinguir mayúsculas |
-type | tipo (f, d) |
-size | tamaño |
-mtime | fecha de modificación |
-exec | ejecutar comando |
🧪 Ejemplos básicos
1find . -name archivo.txt 2find /etc -type f 3find /home -iname "*.jpg"
🧪 Ejemplos útiles reales
1find / -name "*.log" 2>/dev/null 2find . -type f -size +10M 3find . -mtime -1
🔥 Ejemplo avanzado
1find . -name "*.tmp" -exec rm {} \;
🪟 Equivalente Windows
- CMD:
1dir *.txt /s
- PowerShell:
1Get-ChildItem -Recurse -Filter "*.txt"
🔸 locate
📌 Categoría
Búsqueda rápida
🧾 Descripción
Busca archivos usando una base de datos indexada.
⚡ Ventaja
Mucho más rápido que find.
⚠️ Inconveniente
Puede no estar actualizado.
🧠 Uso
1locate archivo.txt
🔄 Actualizar base de datos
1sudo updatedb
🧠 Cuándo usar
✔ Cuando buscas algo por nombre ✔ Cuando no necesitas resultados exactos en tiempo real
🔸 grep
📌 Categoría
Búsqueda de texto
🧾 Descripción
Busca texto dentro de archivos o salidas de otros comandos.
🧠 Sintaxis
1grep [opciones] patrón archivo
⚙️ Opciones más importantes
| Opción | Significado |
|---|---|
-i | ignora mayúsculas |
-r | recursivo |
-n | muestra número de línea |
-v | excluye coincidencias |
--color | resalta |
🧪 Ejemplos básicos
1grep "root" /etc/passwd 2grep -i "error" log.txt
🧪 Búsqueda recursiva
1grep -R "password" .
🧪 Combinado con otros comandos
1ps aux | grep nginx 2cat log.txt | grep -i error
🪟 Equivalente Windows
- CMD:
1findstr "error" log.txt
- PowerShell:
1Select-String "error" log.txt
🧠 Casos reales MUY habituales
🔍 Buscar errores en logs
1grep -i error /var/log/syslog
🔍 Ver procesos concretos
1ps aux | grep mysql
🔍 Buscar credenciales (auditoría)
1grep -R "password" /etc
⚠️ Errores comunes
- ❌ Usar
find /sin redirigir errores - ❌ Olvidar
-Rengrep - ❌ No entrecomillar patrones
- ❌ Buscar texto con
find
📍 which — ¿qué ejecutable se está usando?
🧠 ¿Para qué sirve?
Muestra la ruta del ejecutable que se ejecuta realmente cuando escribes un comando.
Depende del $PATH.
👉 Ideal para:
- Saber qué versión de un comando se está usando
- Detectar conflictos (
python,node,java, etc.) - Depurar errores de “no es el comando que yo esperaba”
🧩 Sintaxis básica
1which comando
🔧 Modificadores importantes
| Opción | Qué hace |
|---|---|
-a | Muestra todas las coincidencias en el $PATH |
--help | Ayuda |
--version | Versión de which |
✅ Ejemplos prácticos
1which ls
Salida típica:
1/bin/ls
1which python
1/usr/bin/python
1which -a python
1/usr/bin/python 2/usr/local/bin/python
NOTA: El sistema ejecuta el primero que aparece en el
$PATH
🧪 Ejemplo didáctico típico
1which node
➡️ Sirve para comprobar si Node está instalado y desde dónde se ejecuta.
📍 whereis — ¿dónde está TODO lo relacionado con un comando?
🧠 ¿Para qué sirve?
Busca binarios, código fuente y páginas de manual de un comando.
👉 A diferencia de which:
- No depende del
$PATH - Busca en rutas estándar del sistema
🧩 Sintaxis básica
1whereis comando
🔧 Modificadores importantes
| Opción | Qué hace |
|---|---|
-b | Solo binarios |
-m | Solo páginas man |
-s | Solo código fuente |
-a | Muestra todas las coincidencias |
-B ruta | Define rutas para binarios |
-M ruta | Define rutas para man |
-S ruta | Define rutas para fuentes |
✅ Ejemplos prácticos
1whereis ls
1ls: /bin/ls /usr/share/man/man1/ls.1.gz
1whereis python
1python: /usr/bin/python3 /usr/lib/python3.12 /usr/share/man/man1/python3.1.gz
1whereis -b python
1python: /usr/bin/python3
1whereis -m ls
1ls: /usr/share/man/man1/ls.1.gz
🧪 Ejemplo didáctico típico
1whereis nano
➡️ Sirve para:
- Ver si está instalado
- Localizar el manual
- Ver qué versión hay en el sistema
⚔️ which vs whereis (tabla clara para el curso)
| Característica | which | whereis |
|---|---|---|
Usa $PATH | ✅ Sí | ❌ No |
| Muestra qué se ejecuta | ✅ Sí | ❌ No |
| Busca man y fuentes | ❌ No | ✅ Sí |
| Ideal para depurar versiones | ⭐⭐⭐ | ⭐ |
| Ideal para explorar instalación | ⭐ | ⭐⭐⭐ |