Introducción

Dominar la terminal de Linux es el primer paso para convertirte en un usuario avanzado, administrador de sistemas o desarrollador. No importa si usas Ubuntu, Debian, CentOS o Fedora — los comandos que te presentamos aquí son universales y te servirán en cualquier distribución.

En esta guía práctica vamos a repasar los 20 comandos esenciales que todo usuario básico debe conocer, con ejemplos concretos para que empieces a usarlos hoy mismo. 🐧

1. ls — Listar archivos y directorios

El comando más básico y más usado. Lista el contenido de un directorio.

ls                  # Lista básica
ls -l               # Vista detallada (permisos, dueño, tamaño, fecha)
ls -a               # Muestra archivos ocultos (los que empiezan con .)
ls -lh              # Tamaños en formato legible (KB, MB, GB)
ls -la /var/log     # Combina flags en un directorio específico

2. cd — Cambiar de directorio

Navega por el sistema de archivos.

cd /home/usuario    # Va al directorio especificado
cd ..               # Sube un nivel
cd ~                # Va al home del usuario
cd -                # Va al directorio anterior

3. pwd — Mostrar directorio actual

Print Working Directory. Te dice exactamente dónde estás en el árbol de directorios.

pwd                 # Ejemplo: /home/gabriel/proyectos

4. cp — Copiar archivos y directorios

cp archivo.txt backup/                # Copiar archivo a otro directorio
cp archivo.txt archivo_copia.txt      # Copiar con otro nombre
cp -r directorio/ backup/             # Copiar directorio recursivamente
cp -i archivo.txt destino/            # Preguntar antes de sobrescribir

5. mv — Mover o renombrar

mv archivo.txt /otra/ruta/           # Mover archivo
mv viejo.txt nuevo.txt                # Renombrar archivo
mv -i archivo.txt destino/            # Preguntar antes de sobrescribir

6. rm — Eliminar archivos

rm archivo.txt                        # Eliminar archivo
rm -i archivo.txt                     # Preguntar antes de eliminar
rm -r directorio/                     # Eliminar directorio recursivamente
rm -rf directorio/                    # ¡Peligro! Elimina sin preguntar (usar con cuidado)

⚠️ Consejo: Siempre usa -i si no estás seguro. Y considera usar trash en vez de rm para archivos importantes.

7. mkdir — Crear directorios

mkdir proyecto                        # Crear un directorio
mkdir -p proyecto/src/css             # Crear estructura anidada (crea padres si no existen)

8. cat — Visualizar archivos

Muestra el contenido completo de un archivo en la terminal.

cat archivo.txt                       # Ver contenido
cat archivo1.txt archivo2.txt > union.txt  # Concatenar archivos
cat -n archivo.txt                    # Mostrar con números de línea

9. less — Visualizar archivos grandes

Con less puedes navegar archivos grandes página por página, algo que cat no permite.

less archivo_grande.log               # Navegar con flechas, PageUp/PageDown
# Dentro de less: /texto busca, q sale, g va al inicio, G va al final

10. head y tail — Principio y final

head -n 20 archivo.txt                # Primeras 20 líneas
tail -n 30 archivo.txt                # Últimas 30 líneas
tail -f /var/log/syslog               # Sigue el archivo en tiempo real (ideal para logs)

tail -f es indispensable para monitorear logs en vivo mientras ocurren eventos.

11. grep — Buscar texto

El buscador de patrones más potente de la terminal.

grep "error" /var/log/syslog          # Buscar "error" en un archivo
grep -i "error" archivo.log           # Búsqueda sin distinción mayúsculas/minúsculas
grep -r "function" ./src/             # Buscar recursivamente en todo un directorio
grep -c "error" archivo.log           # Contar ocurrencias
grep -v "debug" archivo.log           # Excluir líneas que contengan "debug"

12. find — Buscar archivos

Encuentra archivos por nombre, tipo, tamaño, fecha y más.

find /home -name "*.txt"              # Por nombre
find /var -type f -size +100M         # Archivos mayores a 100MB
find . -mtime -7                      # Archivos modificados en los últimos 7 días
find . -name "*.log" -exec rm {} \;   # Encontrar y ejecutar un comando

13. chmod — Permisos de archivos

Cambia los permisos de lectura (r), escritura (w) y ejecución (x).

chmod 755 script.sh                   # rwxr-xr-x (estándar para scripts)
chmod 644 archivo.txt                 # rw-r--r-- (estándar para archivos)
chmod +x script.sh                    # Añadir ejecución
chmod -R 755 directorio/              # Recursivo en todo un directorio

14. chown — Cambiar propietario

sudo chown usuario:grupo archivo.txt    # Cambiar dueño y grupo
sudo chown -R usuario:grupo directorio/  # Recursivo

15. ps — Procesos del sistema

ps                                    # Procesos del usuario actual
ps aux                                # Todos los procesos del sistema
ps aux | grep nginx                   # Buscar proceso específico
ps -ef                                # Formato completo con más detalles

16. kill — Terminar procesos

kill 1234                             # Terminar proceso por PID (SIGTERM)
kill -9 1234                          # Forzar terminación (SIGKILL)
killall nginx                         # Terminar todos los procesos con ese nombre
pkill -f "python script.py"           # Matar por nombre del comando

⚠️ Siempre intenta kill PID primero (envía SIGTERM, permite cierre limpio). Usa kill -9 solo si el proceso no responde.

17. df — Espacio en disco

df -h                                 # Espacio en discos montados (formato legible)
df -hT                                # Incluye tipo de sistema de archivos

18. du — Uso de disco por directorio

du -sh /home/usuario                  # Tamaño total de un directorio
du -h --max-depth=1 /var              # Tamaño de subdirectorios (1 nivel)
du -h /var/log | sort -h              # Ordenar por tamaño

19. tar — Comprimir y extraer archivos

tar -czvf archivo.tar.gz directorio/   # Comprimir directorio en .tar.gz
tar -xzvf archivo.tar.gz              # Extraer .tar.gz
tar -cjvf archivo.tar.bz2 directorio/  # Comprimir en .tar.bz2 (mejor compresión)
tar -xzvf archivo.tar.gz -C /ruta/    # Extraer en directorio específico

20. nano / vim — Editores de texto en terminal

nano archivo.txt                      # Editor simple, intuitivo
vim archivo.txt                       # Editor potente (curva de aprendizaje)

Nano es ideal para empezar: los comandos se ven en la parte inferior (^G ayuda, ^O guarda, ^X sale). Vim requiere práctica pero una vez que lo dominas, editarás archivos a velocidad impresionante.

Bonus: Pipes y redirecciones

Lo que hace poderosos a estos comandos es que puedes combinarlos con pipes (|):

# Ejemplo: encontrar los 5 procesos que más memoria usan
ps aux --sort=-%mem | head -6

# Ejemplo: contar cuántos archivos .conf hay en /etc
find /etc -name "*.conf" | wc -l

# Ejemplo: buscar errores en logs y guardarlos
grep "ERROR" /var/log/app.log > errores.txt

# Ejemplo: monitorear logs en vivo filtrando por palabra
tail -f /var/log/syslog | grep "ssh"

Conclusión

Estos 20 comandos son la base de todo trabajo en Linux. No los memorices todos de golpe — empieza con los que más necesites y practica combinándolos con pipes. En poco tiempo estarás navegando la terminal con fluidez.

¿Quieres que profundice en algún comando en particular? Déjalo en los comentarios. ¡Hasta la próxima, Fronters! 🚀