Guía Esencial de Línea de Comandos Linux
Guía Esencial de Línea de Comandos Linux
Domina la terminal Linux/macOS con esta guía completa de comandos esenciales.
Introducción: La Terminal es Tu Superpoder
La línea de comandos es una de las herramientas más poderosas a disposición de cualquier desarrollador, administrador de sistemas o profesional de tecnología. Mientras que las interfaces gráficas son intuitivas para tareas simples, la terminal te permite realizar operaciones complejas con velocidad y precisión que no son posibles de ninguna otra manera.
En 2026, con la creciente adopción de contenedores Docker, infraestructura cloud, y flujos de trabajo DevOps, dominar la línea de comandos es más importante que nunca. Esta guía cubre los comandos esenciales de Linux y macOS que todo profesional de tecnología debería conocer, desde la navegación básica hasta scripting avanzado.
Ya sea que estés trabajando en un servidor remoto vía SSH, administrando contenedores Docker, o simplemente buscando ser más productivo en tu desarrollo diario, esta guía te proporcionará el conocimiento necesario para moverte con confianza por la terminal.
Navegación del Sistema de Archivos
Comandos Fundamentales
# Ver el directorio actual
pwd
# Listar archivos y carpetas
ls # Listado básico
ls -la # Listado detallado con archivos ocultos
ls -lah # Detallado con tamaños legibles
ls -lt # Ordenado por fecha de modificación
ls -lS # Ordenado por tamaño
# Cambiar de directorio
cd /ruta/absoluta # Ir a una ruta absoluta
cd carpeta # Ir a una carpeta relativa
cd .. # Subir un nivel
cd ../.. # Subir dos niveles
cd ~ # Ir al directorio home
cd - # Volver al directorio anterior
# Crear directorios
mkdir nueva-carpeta
mkdir -p ruta/completa/profunda # Crear directorios padres automáticamente
# Eliminar archivos y directorios
rm archivo.txt # Eliminar un archivo
rm -r carpeta/ # Eliminar directorio recursivamente
rm -rf carpeta/ # Forzar eliminación sin confirmación
rmdir carpeta-vacia/ # Eliminar solo si está vacío
Copiar, Mover y Renombrar
# Copiar archivos
cp origen.txt destino.txt
cp -r carpeta-origen/ carpeta-destino/ # Copiar directorio recursivamente
cp -i archivo.txt backup/ # Pedir confirmación si existe
# Mover o renombrar
mv archivo.txt nueva-ubicacion/
mv nombre-viejo.txt nombre-nuevo.txt # Renombrar
mv -i archivo.txt destino/ # Pedir confirmación
# Crear enlaces simbólicos
ln -s /ruta/al/original enlace-simbolico
Visualización y Edición de Archivos
Ver Contenido de Archivos
# Ver todo el archivo
cat archivo.txt
# Ver con números de línea
cat -n archivo.txt
# Ver archivos largos con paginación
less archivo.txt
# En less: q para salir, / para buscar, n para siguiente resultado
# Ver las primeras líneas
head archivo.txt # Primeras 10 líneas
head -n 20 archivo.txt # Primeras 20 líneas
# Ver las últimas líneas
tail archivo.txt # Últimas 10 líneas
tail -n 50 archivo.txt # Últimas 50 líneas
tail -f archivo.log # Seguir cambios en tiempo real (ideal para logs)
# Contar líneas, palabras y caracteres
wc archivo.txt # Líneas, palabras, bytes
wc -l archivo.txt # Solo líneas
wc -w archivo.txt # Solo palabras
Editores de Terminal
# Nano - Editor simple y amigable
nano archivo.txt
# Ctrl+O para guardar, Ctrl+X para salir
# Vim - Editor avanzado
vim archivo.txt
# i para modo inserción, Esc para modo normal
# :w para guardar, :q para salir, :wq para guardar y salir
# /texto para buscar, dd para eliminar línea, yy para copiar línea
Búsqueda de Archivos y Contenido
Encontrar Archivos
# Buscar archivos por nombre
find . -name "*.ts" # Buscar archivos .ts recursivamente
find . -name "*.log" -type f # Solo archivos (no directorios)
find /home -type d -name "node_modules" # Solo directorios
find . -name "*.tmp" -delete # Buscar y eliminar
# Buscar por tamaño
find . -size +100M # Archivos mayores a 100MB
find . -size -1k # Archivos menores a 1KB
# Buscar por fecha
find . -mtime -7 # Modificados en los últimos 7 días
find . -mmin -60 # Modificados en la última hora
# Buscar y ejecutar comandos
find . -name "*.log" -exec gzip {} \; # Comprimir todos los .log
find . -type f -empty -delete # Eliminar archivos vacíos
Buscar Contenido dentro de Archivos
# Grep básico
grep "texto" archivo.txt
grep -r "TODO" src/ # Buscar recursivamente en directorio
grep -rn "error" logs/ # Con números de línea
grep -ri "warning" . # Ignorar mayúsculas/minúsculas
grep -rl "deprecated" src/ # Solo nombres de archivos
grep -v "comentario" archivo.txt # Líneas que NO contienen el texto
# Grep con expresiones regulares
grep -E "^[0-9]{4}-[0-9]{2}" log.txt # Líneas que empiezan con fecha
grep -P "\d{3}-\d{3}-\d{4}" datos.txt # Patrón de teléfono (Perl regex)
# Ripgrep (alternativa más rápida)
rg "TODO" src/ # Búsqueda rápida
rg -t ts "interface" # Solo en archivos TypeScript
rg "pattern" --glob "!node_modules" # Excluir carpetas
Para probar y perfeccionar tus expresiones regulares antes de usarlas en grep, te recomendamos usar nuestro probador de regex que te permite validar patrones en tiempo real.
Gestión de Procesos
Monitorización
# Ver procesos en ejecución
ps aux # Todos los procesos
ps aux | grep node # Filtrar procesos de Node.js
# Monitor de procesos en tiempo real
top # Monitor clásico
htop # Monitor mejorado (interactivo)
# Ver uso de memoria
free -h # Memoria del sistema
df -h # Espacio en disco
du -sh * # Tamaño de carpetas en el directorio actual
du -sh * | sort -hr | head -10 # Top 10 carpetas más grandes
Control de Procesos
# Ejecutar en segundo plano
comando &
nohup comando & # Continúa después de cerrar terminal
# Gestionar procesos en segundo plano
jobs # Ver procesos en background
fg %1 # Traer proceso 1 al foreground
bg %1 # Continuar proceso 1 en background
Ctrl+Z # Suspender proceso actual
# Terminar procesos
kill PID # Enviar SIGTERM (terminación limpia)
kill -9 PID # Enviar SIGKILL (forzar terminación)
killall nombre-proceso # Matar todos los procesos con ese nombre
pkill -f "node server" # Matar por patrón de comando
Redes y Conectividad
Diagnóstico de Red
# Verificar conectividad
ping google.com
ping -c 5 servidor.com # Solo 5 pings
# Información de red
ip addr # Linux: Ver interfaces y IPs
ifconfig # macOS: Ver interfaces y IPs
ip route # Ver tabla de rutas
# Diagnóstico de DNS
nslookup dominio.com
dig dominio.com # Consulta DNS detallada
dig +short dominio.com # Solo la IP
# Verificar puertos abiertos
ss -tulnp # Linux: Puertos en escucha
lsof -i :3000 # Ver qué usa el puerto 3000
netstat -an | grep LISTEN # Puertos en escucha
Transferencia de Datos
# Descargar archivos
curl -O https://ejemplo.com/archivo.zip
curl -o nombre.zip https://ejemplo.com/archivo.zip
wget https://ejemplo.com/archivo.zip
# Peticiones HTTP con curl
curl https://api.ejemplo.com/datos # GET
curl -X POST -d '{"key":"value"}' \
-H "Content-Type: application/json" \
https://api.ejemplo.com/datos # POST con JSON
# Ver solo cabeceras
curl -I https://ejemplo.com
# SSH y transferencia de archivos
ssh usuario@servidor.com
ssh -p 2222 usuario@servidor.com # Puerto personalizado
scp archivo.txt usuario@servidor:/ruta/ # Copiar archivo al servidor
scp -r carpeta/ usuario@servidor:/ruta/ # Copiar carpeta
rsync -avz carpeta/ usuario@servidor:/ruta/ # Sincronización eficiente
Para formatear las respuestas JSON de tus llamadas curl, usa nuestro formateador de JSON que facilita la lectura de datos JSON complejos.
Redirección y Tuberías (Pipes)
Operadores de Redirección
# Redireccionar salida a archivo
comando > archivo.txt # Sobrescribir
comando >> archivo.txt # Añadir al final
comando 2> errores.log # Redireccionar errores
comando > salida.txt 2>&1 # Salida y errores al mismo archivo
comando &> todo.log # Forma abreviada de lo anterior
# Redireccionar entrada
comando < archivo.txt
Tuberías (Pipes)
# Encadenar comandos con |
cat archivo.txt | sort | uniq # Ordenar y eliminar duplicados
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
# Obtener las 10 IPs con más visitas en un log de acceso
# Ejemplos prácticos
history | grep "git" | tail -20 # Últimos 20 comandos git
ps aux | sort -k 3 -rn | head -5 # Top 5 procesos por CPU
find . -name "*.ts" | xargs wc -l | sort -n | tail -20 # Archivos TS más largos
Compresión y Archivos
# tar (crear archivos)
tar -czf archivo.tar.gz carpeta/ # Crear tar.gz
tar -cjf archivo.tar.bz2 carpeta/ # Crear tar.bz2
tar -xzf archivo.tar.gz # Extraer tar.gz
tar -xzf archivo.tar.gz -C destino/ # Extraer en directorio específico
tar -tzf archivo.tar.gz # Listar contenido sin extraer
# zip
zip -r archivo.zip carpeta/ # Crear zip
unzip archivo.zip # Extraer
unzip -l archivo.zip # Listar contenido
# gzip
gzip archivo.txt # Comprimir (elimina original)
gzip -k archivo.txt # Comprimir (mantiene original)
gunzip archivo.txt.gz # Descomprimir
Procesamiento de Texto
# sort - Ordenar líneas
sort archivo.txt # Orden alfabético
sort -n archivo.txt # Orden numérico
sort -r archivo.txt # Orden inverso
sort -u archivo.txt # Orden único (elimina duplicados)
sort -t',' -k2 datos.csv # Ordenar CSV por segunda columna
# awk - Procesamiento de columnas
awk '{print $1, $3}' archivo.txt # Imprimir columnas 1 y 3
awk -F',' '{print $2}' datos.csv # Columna 2 de un CSV
awk '$3 > 100 {print $0}' datos.txt # Filtrar por valor en columna 3
# sed - Editor de flujo
sed 's/viejo/nuevo/g' archivo.txt # Reemplazar texto
sed -i 's/viejo/nuevo/g' archivo.txt # Reemplazar in-place
sed '5d' archivo.txt # Eliminar línea 5
sed '/patron/d' archivo.txt # Eliminar líneas con patrón
# cut - Extraer secciones
cut -d',' -f1,3 datos.csv # Columnas 1 y 3 de CSV
cut -c1-10 archivo.txt # Primeros 10 caracteres
# tr - Traducir caracteres
echo "HOLA" | tr 'A-Z' 'a-z' # Convertir a minúsculas
echo "hola mundo" | tr ' ' '\n' # Reemplazar espacios por newlines
Permisos y Usuarios
# Ver permisos
ls -la
# Cambiar permisos
chmod 755 script.sh # rwxr-xr-x
chmod +x script.sh # Añadir permiso de ejecución
chmod -R 644 carpeta/ # Aplicar recursivamente
# Cambiar propietario
chown usuario:grupo archivo.txt
chown -R usuario:grupo carpeta/
# Cambiar de usuario
su - otro-usuario
sudo comando # Ejecutar como root
sudo -u usuario comando # Ejecutar como otro usuario
Scripting Básico en Bash
#!/bin/bash
# Variables
NOMBRE="Mundo"
echo "Hola, $NOMBRE!"
# Condicionales
if [ -f "archivo.txt" ]; then
echo "El archivo existe"
elif [ -d "carpeta" ]; then
echo "La carpeta existe"
else
echo "No encontrado"
fi
# Bucles
for archivo in *.log; do
echo "Procesando: $archivo"
gzip "$archivo"
done
# Bucle while
while read -r linea; do
echo "Línea: $linea"
done < archivo.txt
# Funciones
function backup() {
local origen=$1
local destino=$2
tar -czf "$destino" "$origen"
echo "Backup completado: $destino"
}
backup "mi-proyecto/" "backup-$(date +%Y%m%d).tar.gz"
Herramientas Modernas de Terminal
En 2026, existen alternativas modernas a muchos comandos clásicos:
| Clásico | Moderno | Ventaja |
|---|---|---|
ls | eza (antes exa) | Colores, iconos, Git integration |
cat | bat | Syntax highlighting, numeración |
find | fd | Más rápido, sintaxis simple |
grep | ripgrep (rg) | Mucho más rápido, .gitignore |
top | btop | Interfaz visual moderna |
du | dust | Visualización clara de tamaños |
cd | zoxide (z) | Navegación inteligente por frecuencia |
# Instalar herramientas modernas (macOS)
brew install eza bat fd ripgrep btop dust zoxide
# Ejemplos
eza -la --git --icons # ls mejorado con estado git
bat archivo.ts # cat con syntax highlighting
fd "*.ts" src/ # find simplificado
rg "TODO" --type ts # grep ultrarrápido
z proyecto # cd inteligente
Conclusión
Dominar la línea de comandos es una inversión que se paga con creces en productividad diaria. Los comandos y técnicas presentados en esta guía cubren la gran mayoría de las operaciones que necesitarás realizar como desarrollador o administrador de sistemas.
La clave para mejorar es la práctica constante: intenta realizar tareas cotidianas desde la terminal en lugar de usar interfaces gráficas. Con el tiempo, los comandos se convertirán en memoria muscular y tu velocidad de trabajo aumentará exponencialmente. Complementa tu aprendizaje explorando las herramientas modernas de terminal mencionadas al final, que hacen la experiencia más agradable y productiva.