Terminal
Actualizado el 6 de noviembre de 2026
Bash y Zsh
Atajos de edición, historial, expansión de variables, bucles, alias, scripts y procesamiento de texto para trabajar rápido en la shell.
- #bash
- #zsh
- #shell
- #terminal
- #productividad
Navegación
| Acción | Comando |
|---|---|
| Volver al directorio anterior | |
Guardar el directorio actual e ir a /tmp | |
| Regresar al directorio guardado | |
| Listar archivos con permisos, tamaño legible y ocultos |
Atajos de edición de línea
| Acción | Atajo |
|---|---|
| Ir al inicio / final de la línea | Ctrl+a / Ctrl+e |
| Retroceder / avanzar una palabra | Alt+b / Alt+f |
| Borrar la palabra anterior | Ctrl+w |
| Borrar hasta el inicio (en Zsh, toda la línea) | Ctrl+u |
| Borrar hasta el final de la línea | Ctrl+k |
| Pegar lo último borrado | Ctrl+y |
| Buscar en el historial (repite para ir más atrás) | Ctrl+r |
| Insertar el último argumento del comando anterior | Alt+. |
| Limpiar la pantalla | Ctrl+l |
| Cancelar la línea actual | Ctrl+c |
Historial
| Acción | Comando |
|---|---|
| Repetir el último comando | |
| Repetir el último comando con sudo | |
| Reusar el último argumento del comando anterior | |
| Ejecutar el comando número 123 del historial | |
| Repetir el último comando cambiando un texto | |
| Buscar en el historial |
En Zsh, !! y !$ se expanden primero en la línea para que confirmes con Enter.
Búsqueda de archivos
| Acción | Comando |
|---|---|
| Buscar archivos por nombre | |
| Buscar texto recursivamente mostrando línea | |
| Contar coincidencias por archivo | |
| Ver el tamaño de las carpetas del directorio actual |
Tuberías y redirección
| Acción | Comando |
|---|---|
| Filtrar la salida y contar las líneas | |
Redirigir stdout y stderr a un archivo | |
| Ver la salida y guardarla a la vez | |
| Descartar la salida por completo | |
| Seguir un archivo de log en tiempo real |
Procesar texto
| Acción | Comando |
|---|---|
| Contar líneas repetidas, de más a menos | |
Extraer el primer campo separado por : | |
| Imprimir la primera columna (separada por espacios) | |
| Sumar la columna 2 | |
| Reemplazar texto en un archivo (GNU sed) | |
| Pasar la lista de archivos a otro comando | |
| Leer un campo de un JSON | |
| Listar las claves de un objeto JSON |
En macOS, sed -i necesita un argumento vacío: sed -i '' 's/a/b/g' file.
Variables y expansión
| Expresión | Resultado |
|---|---|
${PORT:-3000} | Valor de PORT, o 3000 si está vacía o no existe |
${NAME:?falta NAME} | Aborta con ese mensaje si NAME no está definida |
${#NAME} | Longitud del texto |
${FILE%.*} | Quita la extensión: report.tar.gz → report.tar |
${PATH_VAR##*/} | Solo el nombre del archivo (como basename) |
${NAME/old/new} | Reemplaza la primera aparición de old |
$(git branch --show-current) | Sustituye por la salida del comando |
$((3 * 4)) | Aritmética entera: 12 |
cp app.conf{,.bak} | Llaves: se expande a cp app.conf app.conf.bak |
mkdir -p logs/{dev,qa,prod} | Crea tres carpetas de una vez; {1..5} genera rangos |
Usa siempre comillas dobles alrededor de las variables ("$FILE") para evitar problemas con espacios.
Condicionales y bucles
bash
if [[ -f .env ]]; then
echo "Using .env"
elif [[ -z "${API_URL:-}" ]]; then
echo "API_URL is not set" >&2
fi
for file in *.log; do
gzip "$file"
done
while read -r line; do
echo "Host: $line"
done < hosts.txt
[[ -d dist ]] && echo "built" || echo "run the build first"Alias y funciones
Añádelos a ~/.bashrc (Bash) o ~/.zshrc (Zsh) y recarga con source ~/.zshrc.
bash
alias ll='ls -lah'
alias gs='git status -sb'
alias ..='cd ..'
# Create a folder and enter it
mkcd() {
mkdir -p "$1" && cd "$1"
}
# Show what is listening on a port
port() {
lsof -i ":$1"
}| Acción | Comando |
|---|---|
| Ver qué es un comando (alias, función o binario) | |
| Ejecutar el comando original ignorando el alias | |
| Quitar un alias en la sesión actual |
Scripts y shebang
bash
#!/usr/bin/env bash
# Stop on errors, undefined variables and failed pipes
set -euo pipefail
name="${1:-world}"
echo "Hello, $name"| Acción | Comando |
|---|---|
| Dar permiso de ejecución | |
| Ejecutar el script | |
| Comprobar la sintaxis sin ejecutar | |
| Ejecutar mostrando cada línea (depuración) | |
| Ver el código de salida del último comando |
Procesos y puertos
| Acción | Comando |
|---|---|
| Listar trabajos en segundo plano | |
| Traer al primer plano el trabajo nº 1 | |
| Terminar el trabajo en segundo plano nº 1 | |
| Buscar procesos activos de Node.js | |
| Ver qué proceso ocupa un puerto (ej. 4200) |