# Cheatsheet de Comandos para PMs

> **Qué es:** Referencia rápida de los comandos de terminal más útiles para un PM: navegación, búsqueda, git, APIs con cURL+jq, Docker y Python.
> **Cuándo usarlo:** Tenlo abierto (o impreso) mientras trabajas en terminal; está pensado para consultar, no para memorizar.
> **Requisitos:** Terminal Bash o Zsh (Linux, Mac o WSL en Windows). Algunas secciones requieren git, jq, gh CLI o Docker instalados.

## Navegación y archivos

```bash
pwd                              # Directorio actual
ls -la                           # Listar archivos (incluye ocultos)
cd ~/proyecto                    # Ir a directorio
mkdir -p epica/feature/task      # Crear estructura anidada
cp archivo.txt backup/           # Copiar archivo
mv archivo.txt nuevo-nombre.txt  # Renombrar/mover
rm -rf cache/                    # Eliminar recursivo (¡cuidado!)
```

## Visualización de archivos

```bash
cat spec.md                      # Ver contenido completo
head -n 20 backlog.csv           # Primeras 20 líneas
tail -n 10 logs.txt              # Últimas 10 líneas
tail -f app.log                  # Seguir logs en tiempo real
less archivo-largo.md            # Navegar con flechas (q para salir)
wc -l tareas.csv                 # Contar líneas (= tickets)
```

## Búsqueda y filtrado

```bash
grep "error" logs.txt            # Buscar texto en archivo
grep -r "TODO" src/              # Buscar recursivo en directorio
grep -i "urgente" *.md           # Búsqueda case-insensitive
find . -name "*.spec.md"         # Buscar archivos por nombre
find . -size +1M                 # Archivos mayores a 1MB
sort backlog.csv | uniq -c       # Contar ocurrencias únicas
```

## Git (flujo diario PM)

```bash
git status                       # Ver cambios pendientes
git diff                         # Ver diferencias sin commitear
git add .                        # Preparar todo
git commit -m "feat: agrega login biométrico"  # Commitea con mensaje convencional
git push origin main             # Subir cambios
git pull --rebase                # Traer cambios remotos
git log --oneline -10            # Últimos 10 commits
git branch -a                    # Listar todas las ramas
git checkout -b feature/nueva    # Crear y saltar a nueva rama
git merge feature/nueva          # Fusionar rama
```

## APIs y Web (cURL + jq)

```bash
curl -s https://api.github.com/repos/usuario/repo | jq '.stargazers_count'
curl -s https://api.github.com/repos/usuario/repo/issues | jq 'length'
curl -s -X POST https://api.example.com/data \
  -H "Content-Type: application/json" \
  -d '{"nombre": "proyecto"}' | jq '.id'
curl -s -H "Authorization: Bearer $TOKEN" https://api.example.com/protected | jq .
```

## Docker (n8n, infra local)

```bash
docker ps                        # Contenedores activos
docker ps -a                     # Todos los contenedores
docker compose up -d             # Levantar servicios en background
docker compose logs -f           # Ver logs en vivo
docker compose restart           # Reiniciar servicios
docker compose down              # Detener y limpiar
docker system df                 # Espacio usado por Docker
```

## Python (entornos y dependencias)

```bash
python -m venv .venv             # Crear entorno virtual
source .venv/bin/activate        # Activar (Linux/Mac)
.venv\Scripts\activate           # Activar (Windows)
pip install httpx beautifulsoup4 pandas  # Instalar librerías
pip freeze > requirements.txt    # Exportar dependencias
pip install -r requirements.txt  # Instalar desde archivo
python script.py                 # Ejecutar script
```

## GitHub CLI (gh)

```bash
gh repo create mi-proyecto --public   # Crear repo desde terminal
gh pr create --title "Feature" --body "Descripción" --assignee @me
gh pr review --approve                # Aprobar PR
gh pr list --state open               # PRs abiertos
gh issue list --label "bug"           # Issues por etiqueta
gh run list --limit 5                 # Últimos workflows
```

## SSH y remoto

```bash
ssh usuario@192.168.1.100                        # Conectar a servidor
scp archivo.txt usuario@IP:/ruta/destino         # Copiar archivo
scp -r ./backups/ usuario@IP:/ruta/              # Copiar directorio
ssh -i ~/.ssh/id_rsa -L 8080:localhost:5678 user@host  # Túnel SSH
```

## Procesos y sistema

```bash
ps aux | grep python             # Procesos activos con filtro
kill -9 PID                      # Matar proceso por ID
top -o %MEM                      # Procesos por uso de memoria
df -h                            # Espacio en disco
du -sh directorio/               # Tamaño de directorio
crontab -e                       # Editar tareas programadas
```

## Red

```bash
ping -c 4 google.com             # Verificar conectividad
curl -I https://ejemplo.com      # Ver headers HTTP (sin body)
curl -w "%{http_code}" -s -o /dev/null https://ejemplo.com  # Solo código HTTP
nslookup ejemplo.com             # Resolver DNS
netstat -tulpn                   # Puertos en escucha
```

## Productividad PM

```bash
echo "mejora rendimiento Q3" >> roadmap.md     # Append línea a archivo
alias gh-repo='gh repo view --web'              # Alias temporal
date +%Y-%m-%d                                  # Fecha ISO para logs
watch -n 300 curl -s https://status.example.com  # Monitoreo cada 5 min
```
