CLI (Command Line Interface)
¿Qué es CLI?
CLI (Command Line Interface) es una interfaz de línea de comandos que te permite interactuar con el sistema operativo, aplicaciones y herramientas mediante comandos de texto escritos en una terminal. A diferencia de las interfaces gráficas (GUI), el CLI te da control directo y poderoso sobre tu sistema.
¿Para qué sirve CLI?
El CLI es esencial para:
- Automatizar tareas repetitivas con scripts.
- Instalar y gestionar paquetes y dependencias.
- Navegar y manipular archivos y directorios.
- Ejecutar herramientas de desarrollo (build, testing, deploy).
- Administrar servidores y sistemas remotos.
- Usar herramientas avanzadas de desarrollo web.
¿Cómo funciona?
El CLI funciona como un intérprete de comandos donde escribes instrucciones y el sistema las ejecuta. Imagina el CLI como hablar directamente con tu computadora en su idioma nativo, sin intermediarios gráficos - es más directo, rápido y potente.
Comandos básicos universales
Estos comandos funcionan en la mayoría de terminales (con pequeñas variaciones):
# Navegación básica
pwd # Muestra directorio actual
ls # Lista archivos (macOS/Linux)
dir # Lista archivos (Windows)
cd carpeta # Entra a una carpeta
cd .. # Sube un nivel
cd ~ # Va al directorio home
cd / # Va a la raíz (macOS/Linux)
# Gestión de archivos
mkdir mi-proyecto # Crear directorio
touch archivo.txt # Crear archivo vacío (macOS/Linux)
echo. > archivo.txt # Crear archivo vacío (Windows)
cp origen destino # Copiar archivo (macOS/Linux)
copy origen destino # Copiar archivo (Windows)
mv origen destino # Mover/renombrar (macOS/Linux)
move origen destino # Mover archivo (Windows)
rm archivo.txt # Eliminar archivo (macOS/Linux)
del archivo.txt # Eliminar archivo (Windows)
rm -rf carpeta # Eliminar carpeta recursivamente (macOS/Linux)
rmdir /s carpeta # Eliminar carpeta recursivamente (Windows)
# Visualización de contenido
cat archivo.txt # Ver contenido (macOS/Linux)
type archivo.txt # Ver contenido (Windows)
head archivo.txt # Primeras líneas
tail archivo.txt # Últimas líneas
less archivo.txt # Navegador de texto
CLIs de desarrollo web
Los frameworks y herramientas modernas incluyen sus propios CLIs:
Node.js y npm:
# Gestión de paquetes
npm init # Inicializar proyecto
npm install express # Instalar paquete
npm install -g @angular/cli # Instalar globalmente
npm run dev # Ejecutar script de desarrollo
npm run build # Construir para producción
npm list # Ver paquetes instalados
npm outdated # Ver paquetes desactualizados
npm audit # Revisar vulnerabilidades
# Yarn (alternativa a npm)
yarn init
yarn add express
yarn dev
yarn build
Git (control de versiones):
# Configuración inicial
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
# Flujo básico
git init # Inicializar repositorio
git add . # Agregar archivos al staging
git add archivo.js # Agregar archivo específico
git commit -m "Mensaje" # Confirmar cambios
git status # Ver estado del repositorio
git log # Ver historial de commits
# Trabajo con remotos
git remote add origin https://github.com/user/repo.git
git push origin main # Subir cambios
git pull origin main # Descargar cambios
git clone https://github.com/user/repo.git
# Ramas
git branch # Ver ramas
git branch nueva-rama # Crear rama
git checkout nueva-rama # Cambiar a rama
git checkout -b feature # Crear y cambiar a rama
git merge feature # Fusionar rama
Herramientas CLI avanzadas
Vite (build tool moderno):
# Crear proyecto
npm create vite@latest mi-proyecto
cd mi-proyecto
npm install
npm run dev # Desarrollo ultra-rápido
# Con template específico
npm create vite@latest mi-app -- --template react
npm create vite@latest mi-app -- --template vue
npm create vite@latest mi-app -- --template svelte
Docker:
# Gestión de contenedores
docker build -t mi-app . # Construir imagen
docker run -p 3000:3000 mi-app # Ejecutar contenedor
docker ps # Ver contenedores activos
docker stop contenedor-id # Parar contenedor
docker images # Ver imágenes
docker-compose up # Orquestar múltiples servicios
Netlify CLI:
# Deployment y desarrollo
npm install -g netlify-cli
netlify login
netlify init # Configurar proyecto
netlify dev # Desarrollo local con funciones
netlify deploy # Deploy de prueba
netlify deploy --prod # Deploy a producción
Scripts personalizados en package.json
Puedes crear tus propios comandos CLI:
{
"name": "mi-proyecto",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"test": "vitest",
"test:ui": "vitest --ui",
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
"lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix",
"format": "prettier --write .",
"type-check": "tsc --noEmit",
"deploy": "npm run build && netlify deploy --prod",
"clean": "rm -rf dist node_modules",
"reinstall": "npm run clean && npm install",
"analyze": "npm run build && npx webpack-bundle-analyzer dist"
}
}
Uso de scripts personalizados:
npm run dev # Ejecuta "vite"
npm run lint:fix # Ejecuta ESLint con --fix
npm run deploy # Build + deploy a producción
npm run reinstall # Limpia y reinstala dependencias
Trucos y atajos útiles
Navegación rápida:
# Historial de comandos
↑ ↓ # Navegar historial
history # Ver historial completo
!! # Repetir último comando
!git # Repetir último comando que empezaba con "git"
# Atajos de teclado (Unix/Linux/macOS)
Ctrl + C # Cancelar comando actual
Ctrl + L # Limpiar pantalla (también: clear)
Ctrl + A # Ir al inicio de línea
Ctrl + E # Ir al final de línea
Ctrl + U # Borrar hasta el inicio
Ctrl + K # Borrar hasta el final
Tab # Autocompletar
Tab Tab # Mostrar opciones disponibles
Pipes y redirección:
# Combinar comandos
ls | grep ".js" # Filtrar archivos .js
npm list | grep express # Buscar express en dependencias
cat archivo.txt | head -5 # Primeras 5 líneas
# Redirección de salida
ls > archivos.txt # Guardar salida en archivo
echo "console.log('Hello')" > app.js # Crear archivo con contenido
npm install >> install.log # Agregar salida a archivo existente
Variables de entorno:
# Definir variables temporales
NODE_ENV=development npm start
PORT=8080 npm run dev
# Variables persistentes (.env)
echo "API_KEY=tu-api-key" >> .env
echo "NODE_ENV=development" >> .env
# Usar en scripts
npm start # Lee variables de .env automáticamente
Características principales del CLI
- Velocidad: Más rápido que interfaces gráficas para muchas tareas.
- Automatización: Fácil de scriptar y automatizar.
- Precisión: Control exacto sobre lo que haces.
- Universalidad: Funciona en cualquier sistema operativo.
- Potencia: Acceso a herramientas avanzadas.
- Eficiencia: Menos recursos que interfaces gráficas.
¿Cuándo usar CLI?
- Desarrollo web diario: Para todas las tareas de desarrollo.
- Automatización: Scripts y pipelines de CI/CD.
- Gestión de servidores: Administración remota.
- Control de versiones: Git es principalmente CLI.
- Instalación de paquetes: npm, yarn, pip, etc.
- Tareas repetitivas: Más eficiente que GUI.
Ventajas del CLI
Velocidad: Una vez que conoces los comandos, es muy rápido. Automatización: Fácil de scriptar para tareas repetitivas. Precisión: Control exacto sobre cada acción. Recursos: Consume menos memoria y CPU. Universalidad: Funciona igual en diferentes sistemas. Potencia: Acceso a herramientas avanzadas no disponibles en GUI.
Consejos para principiantes
# 1. Usa el autocompletado
cd proj[TAB] # Autocompleta a "proyecto"
npm ins[TAB] # Autocompleta a "install"
# 2. Lee la documentación integrada
git --help # Ayuda general de git
git commit --help # Ayuda específica de commit
man ls # Manual de ls (Unix/Linux/macOS)
# 3. Alias para comandos frecuentes
alias ll="ls -la" # Listado detallado
alias ..="cd .." # Subir directorio
alias gs="git status" # Git status rápido
alias gp="git push" # Git push rápido
# 4. Usar && para comandos secuenciales
npm install && npm run dev # Instalar y luego ejecutar
git add . && git commit -m "Update" && git push # Secuencia git
# 5. Usar || para comandos alternativos
npm start || yarn start # Intentar npm, si falla usar yarn
Errores comunes y soluciones
# Error: comando no encontrado
npm: command not found
# Solución: Instalar Node.js y npm
# Error: permisos
permission denied
# Solución (macOS/Linux): usar sudo (con cuidado)
sudo npm install -g angular-cli
# Error: puerto ocupado
EADDRINUSE: address already in use :::3000
# Solución: matar proceso o cambiar puerto
lsof -ti:3000 | xargs kill -9 # macOS/Linux
netstat -ano | findstr :3000 # Windows (luego taskkill /PID)
# Error: módulo no encontrado
Module not found
# Solución: instalar dependencias
npm install
Conclusión
El CLI es una herramienta fundamental para cualquier desarrollador web moderno. Aunque puede parecer intimidante al principio, dominar la línea de comandos te hará mucho más eficiente y productivo.
Desde la gestión básica de archivos hasta el deployment de aplicaciones complejas, el CLI te da el poder y control total sobre tu entorno de desarrollo. Es la diferencia entre ser un usuario pasivo de herramientas y ser alguien que las domina completamente.
Invierte tiempo en aprender CLI - es una habilidad que pagarás dividendos durante toda tu carrera como desarrollador.