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.

16 de marzo de 202611 min de lectura

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.

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ásicoModernoVentaja
lseza (antes exa)Colores, iconos, Git integration
catbatSyntax highlighting, numeración
findfdMás rápido, sintaxis simple
grepripgrep (rg)Mucho más rápido, .gitignore
topbtopInterfaz visual moderna
dudustVisualización clara de tamaños
cdzoxide (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.

Publicaciones relacionadas