Habilidad de Terminal y CLI
Referencia para trabajar en un terminal Linux — cubriendo desde lo básico de bash hasta la orquestación de contenedores y la ejecución de agentes de IA.
Cómo usar esta habilidad
Este archivo cubre los patrones más comunes. Para referencias detalladas de comandos, carga el archivo relevante de references/ según sea necesario:
| Tema | Archivo de referencia |
|---|---|
| Núcleo de Bash: pipes, scripts, sistema de archivos, instalación, variables de entorno | references/bash.md |
| Contenedores: Podman, Kubernetes (kubectl), Helm | references/containers.md |
| Peticiones HTTP: curl | references/curl.md |
| Agentes de IA: aider-chat, CLI de Claude | references/agents.md |
1. Ejecutar un comando bash
comando [opciones] [argumentos]
# Ejecutar secuencialmente — detenerse en el primer fallo
cmd1 && cmd2 && cmd3
# Ejecutar independientemente del fallo
cmd1; cmd2; cmd3
# Capturar salida en una variable
SALIDA=$(comando)
# Redirigir stdout / stderr / ambos
comando > salida.txt
comando 2> error.txt
comando &> todo.txt
# Descartar toda la salida
comando > /dev/null 2>&1
2. Verificar si una herramienta existe
type -a nombre_herramienta # Todas las ubicaciones donde se encuentra la herramienta
apropos palabra_clave # Buscar comandos que coincidan con una palabra clave
which nombre_herramienta # Primer binario en el PATH
whereis nombre_herramienta # Ubicación del binario, fuente y página man
3. Combinar con &&
# Continuar solo si el comando anterior tuvo éxito
sudo apt update && sudo apt upgrade -y
# Encadenar múltiples pasos de manera segura
mkdir -p build && cd build && cmake ..
4. Tuberías con |
# Pasar stdout de un comando como stdin al siguiente
cmd1 | cmd2 | cmd3
# Patrones comunes
ls -la | grep ".conf"
ps aux | grep nginx
journalctl -u miservicio | grep ERROR | tail -20
cat archivo.txt | wc -l
5. Leer contenido con cat
cat archivo.txt # Archivo completo a stdout
cat archivo1.txt archivo2.txt # Concatenar múltiples archivos
head -n 20 archivo.txt # Primeras 20 líneas
tail -n 20 archivo.txt # Últimas 20 líneas
tail -f /var/log/app.log # Seguir salida de registro en vivo
less archivo.txt # Vista paginada (q para salir)
grep "patrón" archivo.txt # Líneas que coinciden con el patrón
grep -r "patrón" ./dir/ # Búsqueda recursiva en directorio
grep -n "patrón" archivo.txt # Con números de línea
grep -i "patrón" archivo.txt # Sin distinción de mayúsculas/minúsculas
6. Ordenar resultados
sort archivo.txt # Alfabético (ascendente)
sort -r archivo.txt # Orden inverso
sort -n archivo.txt # Orden numérico
sort -k2 archivo.txt # Ordenar por columna 2
sort -t: -k3 -n /etc/passwd # Delimitador personalizado (:), columna 3, numérico
ls -la | sort -k5 -n # Ordenar salida de ls por tamaño de archivo (col 5)
7. Resultados únicos
# uniq solo elimina duplicados *consecutivos* — siempre ordenar primero
sort archivo.txt | uniq # Eliminar duplicados
sort archivo.txt | uniq -c # Contar ocurrencias
sort archivo.txt | uniq -d # Mostrar solo duplicados
sort archivo.txt | uniq -u # Mostrar solo líneas que aparecen una vez
# Pipeline típico: contar tipos de error en un registro
cat app.log | grep ERROR | sort | uniq -c | sort -rn
8. Escribir y ejecutar scripts con heredoc
# Crear un archivo de script en línea
cat << 'EOF' > miprograma.sh
#!/bin/bash
set -euo pipefail # Salir en error, variable no definida o fallo de tubería
echo "Hoy: $(date +%Y-%m-%d)"
for i in 1 2 3; do
echo "Paso $i"
done
EOF
chmod +x miprograma.sh
./miprograma.sh
# O ejecutar directamente sin crear un archivo
bash << 'EOF'
echo "Ejecución en línea"
ls -la /tmp
EOF
Mejores prácticas para scripts:
- Siempre comenzar con
#!/bin/bash - Usar
set -euo pipefailpara valores predeterminados seguros - Siempre entrecomillar las variables:
"$VAR"no$VAR - Usar
$(...)en lugar de comillas invertidas
9. Sistema de archivos — referencia rápida
# Navegar e inspeccionar
pwd && ls -lah # ¿Dónde estoy? + ¿Qué hay aquí?
tree -L 2 # Árbol de directorios (2 niveles de profundidad)
find /ruta -name "*.log" # Buscar por nombre
du -sh /ruta # Tamaño de un directorio
df -h # Uso de disco de todos los montajes
# Crear / copiar / mover / eliminar
mkdir -p /ruta/a/directorio # Crear con directorios padres
cp -r origen/ destino/ # Copiar directorio
mv origen destino # Mover o renombrar
rm -rf dir/ # Eliminar recursivamente (irreversible)
# Permisos y propiedad
chmod +x archivo # Hacer ejecutable
chmod 644 archivo # rw-r--r--
chown usuario:grupo archivo # Cambiar propietario
# Enlaces
ln -s /destino /enlace # Enlace simbólico
readlink -f /enlace # Resolver enlace simbólico a ruta real
# Montajes
mount # Listar todos los montajes activos
lsblk # Árbol de dispositivos de bloque
findmnt # Árbol de puntos de montaje
→ Referencia completa del sistema de archivos: references/bash.md
10. Instalar y actualizar — referencia rápida
# APT
sudo apt update && sudo apt upgrade -y
sudo apt install -y nombre-paquete
# pip (Python)
pip install paquete --break-system-packages
# npm (Node.js)
npm install -g nombre-paquete
→ Referencia completa de instalación (snap, desde fuente, opciones de pip): references/bash.md
11. Obtener ayuda sobre un comando
comando --help # Ayuda en línea (más rápido)
man comando # Página de manual completa
apropos palabra_clave # Buscar resúmenes de páginas man
whatis comando # Descripción de una línea
info comando # Páginas info de GNU (para herramientas GNU)
help cd # Ayuda para builtins del shell
12. Variables de entorno — referencia rápida
export VAR="valor" # Establecer para el shell actual y subprocesos
echo $VAR # Leer una variable
unset VAR # Eliminar una variable
env # Listar todas las variables de entorno
VAR=valor comando # Establecer solo para un solo comando
→ Persistencia de variables, carga de archivos .env: references/bash.md
Referencias detalladas
Carga estos archivos cuando necesites cobertura completa de comandos:
references/bash.md— sistema de archivos completo, instalación/actualización, variables de entorno, patrones de scriptingreferences/containers.md— Podman, kubectl, Helmreferences/curl.md— curl para peticiones HTTPreferences/agents.md— aider-chat y CLI de Claude