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

  1. Buscar archivos (por nombre, tamaño, fecha…)
  2. Buscar texto dentro de archivos

🗂️ Comandos del módulo

LinuxWindows CMDPowerShell
finddir /sGet-ChildItem -Recurse
locate
grepfindstrSelect-String
whichwhereGet-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ónSignificado
-namenombre exacto
-inamenombre sin distinguir mayúsculas
-typetipo (f, d)
-sizetamaño
-mtimefecha de modificación
-execejecutar 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ónSignificado
-iignora mayúsculas
-rrecursivo
-nmuestra número de línea
-vexcluye coincidencias
--colorresalta

🧪 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 -R en grep
  • ❌ 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ónQué hace
-aMuestra todas las coincidencias en el $PATH
--helpAyuda
--versionVersió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ónQué hace
-bSolo binarios
-mSolo páginas man
-sSolo código fuente
-aMuestra todas las coincidencias
-B rutaDefine rutas para binarios
-M rutaDefine rutas para man
-S rutaDefine 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ísticawhichwhereis
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⭐⭐⭐