La gran mayoría de los servidores web operan bajo Linux. Incluso si desarrollas en macOS o Windows (con WSL), el despliegue implica interactuar con una terminal Linux. Dominar la línea de comandos no es solo una habilidad deseable; es la diferencia entre solucionar un problema en producción en 30 segundos o pasar media hora intentando descifrarlo.
Navegando por el Sistema de Archivos
# Muestra el directorio actual pwd # Lista archivos (formato largo, tamaños legibles, archivos ocultos) ls -lah # Cambiar de directorio cd /var/www/html cd ~ # Ir al directorio personal cd - # Volver al directorio anterior # Crear directorios (incluyendo anidados) mkdir -p proyectos/mi-app/src # Buscar archivos find /var/log -name "*.log" -mtime -7 # Logs modificados en los últimos 7 días
Trabajando con Archivos
# Ver contenido de archivos cat config.json # Archivo completo head -n 20 access.log # Primeras 20 líneas tail -n 50 error.log # Últimas 50 líneas tail -f error.log # Seguir en tiempo real (ideal para depuración) less large-file.log # Visor desplazable # Copiar, mover, eliminar cp file.txt backup/file.txt cp -r src/ src-backup/ # Copiar directorio recursivamente mv old-name.txt new-name.txt rm file.txt rm -rf node_modules/ # Eliminar directorio recursivamente (¡CUIDADO!) # Tamaños de archivos du -sh node_modules/ # Tamaño total del directorio df -h # Resumen del uso del disco
Procesamiento de Texto: grep, sed, awk
Estas tres herramientas son la navaja suiza del análisis de logs y la manipulación de texto.
# Buscar una cadena en archivos grep "ERROR" /var/log/app.log # Búsqueda recursiva en un directorio grep -r "TODO" src/ # Ignorar mayúsculas/minúsculas con números de línea grep -in "database" config.php # Mostrar 3 líneas antes y después de cada coincidencia grep -B3 -A3 "Exception" error.log # Contar coincidencias grep -c "404" access.log
# Reemplazar la primera ocurrencia por línea sed 's/http:/https:/' urls.txt # Reemplazar TODAS las ocurrencias (bandera global) sed 's/http:/https:/g' urls.txt # Editar en el sitio (modificar el archivo directamente) sed -i 's/localhost/production.example.com/g' .env
# Imprimir la 1ª y 4ª columna de un archivo separado por espacios
awk '{print $1, $4}' access.log
# Sumar una columna de números
awk '{sum += $5} END {print sum}' data.csv
Permisos y Propiedad
# Hacer un script ejecutable chmod +x deploy.sh # Establecer permisos específicos (propietario: rwx, grupo: r-x, otros: r--) chmod 754 app.js # Cambiar la propiedad de un archivo chown www-data:www-data /var/www/html -R
SSH & Servidores Remotos
# Conectar a un servidor remoto ssh [email protected] # Usar una clave SSH específica ssh -i ~/.ssh/my-key.pem [email protected] # Copiar archivos a un servidor remoto (SCP) scp -r ./dist [email protected]:/var/www/html/ # Ejecutar un comando remotamente sin iniciar sesión ssh [email protected] "sudo systemctl restart nginx"
Gestión de Procesos
# Listar procesos en ejecución ps aux | grep node # Comprobar qué está usando un puerto lsof -i :3000 # o ss -tulnp | grep 3000 # Matar un proceso por PID kill 12345 kill -9 12345 # Matar forzosamente # Monitorizar recursos del sistema (interactivo) htop
Piping & Redirección
La tubería (|) envía la salida de un comando como entrada al siguiente. Esto es lo que hace que la línea de comandos sea tan potente.
# Encontrar los 10 archivos más grandes en un directorio
du -ah /var/log | sort -rh | head -10
# Contar direcciones IP únicas en el log de acceso
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
# Guardar la salida de un comando en un archivo
echo "Despliegue a las $(date)" >> deploy.log
# Redirigir errores a un archivo
npm run build 2> errors.log
Prueba Nuestras Herramientas Gratuitas para Desarrolladores
Codifica, decodifica y formatea tu código al instante.