Alias en la Línea de Comandos: Guía Completa con Plantillas en Castellano para Linux y Windows
¿Cuántas veces al día escribes, en el terminal, el mismo comando largo una y otra vez?
Los alias son la solución definitiva: atajos personalizados que transforman lineas de comandos en inglés por palabras que tú mismo eliges, en el idioma que más te resulte natural. En este articulo encontrarás desde los conceptos básicos hasta plantillas completas en castellano, listas para usar en los escenarios más habituales.
Personaliza tu terminal, hazlo tuyo.
Índice
- ¿Qué es un alias y por qué usarlos?
- Alias en Linux y macOS
- Alias en Windows
- Criterios para nombrar alias en castellano
-
Plantillas de alias por categoría
- 5.1 Gestión y navegación de archivos
- 5.2 Montaje y manejo de dispositivos USB
- 5.3 Mantenimiento y actualización del sistema
- 5.4 Gestión de redes
- 5.5 Instalación y desinstalación de paquetes
- 5.6 Seguridad del sistema
- 5.7 Copias de seguridad
- 5.8 Git y control de versiones
- 5.9 Monitorización del sistema
- Archivo de configuración maestro
- Buenas prácticas
- Hoja de referencia rápida
- Compatibilidad UTF-8 y caracteres especiales
- Alias vs Scripts de procesamiento por lotes
- Conclusión
1. ¿Qué es un alias y por qué usarlos?
Un alias es un nombre corto que el sistema asocia a un comando (o cadena de comandos) más largo. En lugar de escribir:
git log --oneline --graph --decorate --all
puedes definir un alias y escribir simplemente:
historial
El terminal ejecutará exactamente lo mismo. Los alias no son solo un capricho: son una herramienta de productividad real con varias ventajas concretas:
- Velocidad: reduces comandos crípticos a palabras cortas e intuitivas.
- Consistencia: siempre usas las mismas opciones sin olvidarte de ningún flag.
- Menos errores: menos caracteres y palabras conocidas significan menos posibilidades de equivocarse.
- Personalización total: adaptas el entorno a tu forma de trabajar y a tu idioma.
2. Alias en Linux
En sistemas Unix/Linux, los alias se gestionan desde la shell. Las más habituales son bash y zsh.
2.1 Alias temporales (solo para la sesión actual)
Crea un alias directamente desde la terminal con el comando alias:
alias nombre='comando'
Para ver todos los alias activos:
alias
Para eliminar un alias temporal:
unalias nombre
⚠️ Estos alias desaparecen al cerrar la terminal. Para hacerlos permanentes, guárdalos en el archivo de configuración de tu shell.
2.2 Alias permanentes en Bash
El archivo de configuración de Bash es ~/.bashrc. Ábrelo con tu editor:
nano ~/.bashrc
Añade tus alias y guarda el archivo. Luego aplica los cambios sin reiniciar:
source ~/.bashrc
2.3 Alias permanentes en Zsh
Si usas Zsh (shell por defecto en macOS desde Catalina y popular en Linux), el archivo es ~/.zshrc:
nano ~/.zshrc
source ~/.zshrc
El proceso y la sintaxis son exactamente iguales que en Bash.
2.4 Funciones de shell para alias con argumentos
Los alias estándar no admiten argumentos dinámicos. Para eso, usa funciones de shell en el mismo archivo de configuración:
# Crear un directorio y entrar en él de golpe
nueva-carpeta() {
mkdir -p "$1" && cd "$1"
}
# Buscar texto dentro de archivos recursivamente
buscar-en() {
grep -r "$1" "${2:-.}"
}
# Copia de seguridad rápida con fecha
respaldar() {
cp "$1" "$1.resp_$(date +%Y%m%d_%H%M%S)"
echo "✔ Respaldo creado: $1.resp_$(date +%Y%m%d_%H%M%S)"
}
3. Alias en Windows
Windows ofrece dos entornos principales: PowerShell (recomendado) y el clásico CMD.
3.1 Alias en PowerShell
Alias temporales
Set-Alias bloc notepad
Get-Alias # Ver todos los alias
Remove-Item Alias:bloc # Eliminar un alias
Alias permanentes: editar el perfil de PowerShell
# Comprobar si existe el perfil
Test-Path $PROFILE
# Crearlo si no existe
New-Item -Path $PROFILE -ItemType File -Force
# Abrirlo para editarlo
notepad $PROFILE
Aplica los cambios sin cerrar la ventana:
. $PROFILE
💡 Si aparece un error de ejecución de scripts, ejecuta como administrador:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
3.2 Alias en CMD con DOSKEY
Alias temporales en CMD
DOSKEY listar=dir /W
DOSKEY estado=git status
Alias permanentes en CMD
Paso 1: Crea el archivo C:\alias.bat:
@echo off
DOSKEY listar=dir /W $*
DOSKEY estado=git status
DOSKEY anadir=git add .
DOSKEY bloc=notepad $*
Paso 2: En el Editor del Registro (regedit), navega a:
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
Crea un valor de cadena (String Value) llamado AutoRun con el valor C:\alias.bat. Se cargará automáticamente con cada sesión de CMD.
4. Criterios para nombrar alias en castellano
Antes de ver las plantillas, conviene entender la lógica detrás del nombrado en castellano. El objetivo es que cualquier persona de habla hispana pueda adivinar o recordar un alias sin necesidad de consultarlo.
| Principio | Ejemplo inglés | Alias en castellano | Razonamiento |
|---|---|---|---|
| Verbo en infinitivo para acciones |
cp, mv, rm
|
copiar, mover, borrar
|
Los verbos son la forma más natural de dar órdenes |
| Sustantivo para consultas |
df, free, who
|
disco, memoria, conectados
|
Preguntas que devuelven información |
| Prefijo temático para grupos |
git status, git push
|
git-estado, git-enviar
|
Agrupa por herramienta, fácil de autocompletar con Tab |
| Abreviaturas reconocibles | ls -lah |
det (detalle) |
Cuando el infinitivo es demasiado largo para usarlo a diario |
| Guión como separador | backup-dir |
respaldar-dir |
Más legible que respaldirdir o rd
|
| Sin tildes en el nombre del alias | — |
respaldar, no respaldár
|
Las tildes pueden causar problemas en algunos sistemas |
💡 Consejo: usa
Tabpara autocompletar. Si agrupas los alias por prefijo (red-,git-,disco-), el autocompletado te mostrará todos los alias de esa categoría al instante.
5. Plantillas de alias por categoría
A continuación encontrarás plantillas listas para copiar y pegar en tu archivo de configuración. Cada alias incluye un comentario explicando el comando original para facilitar el aprendizaje.
5.1 Gestión y navegación de archivos
Linux / macOS (~/.bashrc o ~/.zshrc)
# ════════════════════════════════════════════════
# NAVEGACIÓN DE DIRECTORIOS
# ════════════════════════════════════════════════
alias ..='cd ..' # Subir un nivel
alias ...='cd ../..' # Subir dos niveles
alias ....='cd ../../..' # Subir tres niveles
alias casa='cd ~' # Ir al directorio personal (cd ~)
alias escritorio='cd ~/Escritorio' # cd ~/Escritorio
alias documentos='cd ~/Documentos' # cd ~/Documentos
alias descargas='cd ~/Descargas' # cd ~/Descargas
alias raiz='cd /' # Ir a la raíz del sistema (cd /)
alias anterior='cd -' # Volver al directorio anterior (cd -)
# ════════════════════════════════════════════════
# LISTADO DE ARCHIVOS
# ════════════════════════════════════════════════
alias listar='ls --color=auto' # ls — listado simple con color
alias det='ls -lah --color=auto' # ls -lah — detalle completo + tamaños legibles
alias ocultos='ls -A --color=auto' # ls -A — incluye archivos ocultos
alias recientes='ls -lhtr --color=auto' # ls -lhtr — ordenado por fecha, más reciente al final
alias pesados='ls -lhS --color=auto' # ls -lhS — ordenado por tamaño, el mayor primero
alias arbol='tree -C' # tree — vista en árbol con color (requiere: apt install tree)
# ════════════════════════════════════════════════
# OPERACIONES CON ARCHIVOS (MODO SEGURO)
# ════════════════════════════════════════════════
alias copiar='cp -iv' # cp -iv — copia con confirmación y detalle
alias mover='mv -iv' # mv -iv — mueve con confirmación y detalle
alias borrar='rm -Iv' # rm -Iv — borra con confirmación segura
alias enlace='ln -sv' # ln -sv — crea enlace simbólico con detalle
alias crear-dir='mkdir -pv' # mkdir -pv — crea carpetas anidadas automáticamente
# ════════════════════════════════════════════════
# BÚSQUEDA DE ARCHIVOS Y CONTENIDO
# ════════════════════════════════════════════════
alias buscar='find . -name' # find . -name — busca por nombre desde aquí
alias buscar-tipo='find . -type f -name' # Busca solo archivos (no carpetas)
alias recien-mod='find . -mtime -1' # find -mtime -1 — modificados en últimas 24h
alias grandes='find . -size +100M' # Archivos mayores de 100 MB
# Buscar texto dentro de archivos: buscar-en "palabra" /ruta/opcional
buscar-en() {
grep -rn --color=auto "$1" "${2:-.}"
}
# Crear carpeta y entrar: nueva-carpeta mi-proyecto
nueva-carpeta() {
mkdir -p "$1" && cd "$1"
echo "✔ Creado y accedido: $1"
}
# Descomprimir cualquier formato: descomprimir archivo.tar.gz
descomprimir() {
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.tar.xz) tar xJf "$1" ;;
*.zip) unzip "$1" ;;
*.7z) 7z x "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*) echo "⚠ Formato no reconocido: $1" ;;
esac
}
# Comprimir un directorio: comprimir carpeta/ destino.tar.gz
comprimir() {
tar -czf "${2:-$1.tar.gz}" "$1"
echo "✔ Comprimido: ${2:-$1.tar.gz}"
}
Windows PowerShell ($PROFILE)
# ── Navegación ───────────────────────────────────────────────
function .. { Set-Location .. }
function ... { Set-Location ..\.. }
function casa { Set-Location $env:USERPROFILE } # cd ~
function escritorio { Set-Location "$env:USERPROFILE\Desktop" }
function documentos { Set-Location "$env:USERPROFILE\Documents" }
function descargas { Set-Location "$env:USERPROFILE\Downloads" }
# ── Listado ───────────────────────────────────────────────────
function listar { Get-ChildItem | Format-Table -AutoSize } # ls
function det { Get-ChildItem -Force | Format-Table -AutoSize } # ls -lah
function ocultos { Get-ChildItem -Force -Hidden } # ls -A
function pesados { Get-ChildItem | Sort-Object Length -Descending | Format-Table Name, Length -AutoSize }
# ── Operaciones ───────────────────────────────────────────────
function nueva-carpeta($dir) { New-Item -ItemType Directory -Force -Path $dir; Set-Location $dir }
function buscar($nombre) { Get-ChildItem -Recurse -Filter $nombre } # find -name
function grandes { Get-ChildItem -Recurse | Where-Object { $_.Length -gt 100MB } | Sort-Object Length -Descending }
5.2 Montaje y manejo de dispositivos USB
El montaje de dispositivos desde la terminal es esencial en servidores, Raspberry Pi o entornos sin escritorio gráfico.
Linux (~/.bashrc o ~/.zshrc)
# ════════════════════════════════════════════════
# INFORMACIÓN DE DISPOSITIVOS
# ════════════════════════════════════════════════
alias mis-discos='lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL' # lsblk — ver discos y particiones
alias mis-usbs='lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT | grep -v loop'
alias info-disco='sudo fdisk -l' # fdisk -l — información completa de particiones
alias identificadores='sudo blkid' # blkid — ver UUID de dispositivos (útil para /etc/fstab)
alias montados='mount | grep "^/dev"' # Ver solo dispositivos físicos montados
alias espacio='df -hT | grep -v tmpfs' # df -h — espacio libre por dispositivo
# ════════════════════════════════════════════════
# MONTAJE Y DESMONTAJE
# ════════════════════════════════════════════════
# Montar un USB: montar /dev/sdb1 /mnt/usb
montar() {
local dispositivo="${1:-/dev/sdb1}"
local punto="${2:-/mnt/usb}"
sudo mkdir -p "$punto"
sudo mount "$dispositivo" "$punto"
echo "✔ Montado $dispositivo en $punto"
df -h "$punto"
}
# Desmontar de forma segura: desmontar /mnt/usb
desmontar() {
local punto="${1:-/mnt/usb}"
sudo umount "$punto" && echo "✔ Desmontado correctamente: $punto" || echo "✗ Error al desmontar $punto"
}
# Montar una imagen ISO: montar-iso imagen.iso
montar-iso() {
sudo mkdir -p /mnt/iso
sudo mount -o loop "$1" /mnt/iso
echo "✔ ISO montada en /mnt/iso"
}
alias desmontar-iso='sudo umount /mnt/iso && echo "✔ ISO desmontada"'
# ════════════════════════════════════════════════
# FORMATEO (¡con confirmación obligatoria!)
# ════════════════════════════════════════════════
# Formatear en FAT32: formatear-usb /dev/sdb1 MINOMBRE
formatear-usb() {
echo "⚠ ATENCIÓN: Se borrará TODO el contenido de $1"
echo " Dispositivo: $1"
echo " Etiqueta: $2"
read -p "¿Confirmas el formateo? Escribe 'si' para continuar: " confirmar
if [[ "$confirmar" == "si" ]]; then
sudo mkfs.vfat -F32 -n "$2" "$1"
echo "✔ Formateado correctamente en FAT32 con etiqueta '$2'"
else
echo "Operación cancelada."
fi
}
# Formatear en ext4 (para Linux): formatear-ext4 /dev/sdb1
formatear-ext4() {
echo "⚠ ATENCIÓN: Se borrará TODO el contenido de $1"
read -p "¿Confirmas? Escribe 'si': " confirmar
[[ "$confirmar" == "si" ]] && sudo mkfs.ext4 "$1" && echo "✔ Formateado en ext4"
}
5.3 Mantenimiento y actualización del sistema
Linux — Debian/Ubuntu (APT)
# ════════════════════════════════════════════════
# ACTUALIZACIÓN DEL SISTEMA
# ════════════════════════════════════════════════
alias actualizar='sudo apt update && sudo apt upgrade -y'
# apt update + apt upgrade → actualización estándar
alias actualizar-todo='sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt autoclean'
# Actualización completa + limpieza automática
alias solo-seguridad='sudo apt-get upgrade --only-upgrade $(apt-get --just-print upgrade 2>&1 | grep "^Inst" | grep -i security | awk "{print \$2}")'
# Aplica solo parches de seguridad
alias refrescar='sudo apt update' # apt update — solo actualizar la lista de paquetes
# ════════════════════════════════════════════════
# LIMPIEZA DEL SISTEMA
# ════════════════════════════════════════════════
alias limpiar='sudo apt autoremove -y && sudo apt autoclean && sudo apt clean'
# Elimina paquetes huérfanos y limpia la caché
alias limpiar-cache='sudo apt clean && sudo apt autoclean'
# apt clean — vacía la caché de paquetes descargados
alias limpiar-registros='sudo journalctl --vacuum-time=7d'
# journalctl — conservar solo los últimos 7 días de logs del sistema
alias limpiar-tmp='sudo rm -rf /tmp/* && echo "✔ /tmp limpiado"'
# Vaciar el directorio de archivos temporales
alias tamaño-registros='du -sh /var/log/*'
# du — muestra cuánto ocupan los archivos de registro
# ════════════════════════════════════════════════
# INFORMACIÓN DEL SISTEMA
# ════════════════════════════════════════════════
alias info-sistema='uname -a && lsb_release -a 2>/dev/null' # uname + lsb_release
alias version-kernel='uname -r' # uname -r
alias tiempo-encendido='uptime -p' # uptime -p
alias tiempo-arranque='systemd-analyze' # Análisis del tiempo de boot
# ════════════════════════════════════════════════
# GESTIÓN DE SERVICIOS (systemd)
# ════════════════════════════════════════════════
alias servicios-activos='systemctl list-units --type=service --state=running'
# systemctl list-units — lista los servicios en ejecución
alias reiniciar-servicio='sudo systemctl restart' # Uso: reiniciar-servicio nginx
alias estado-servicio='systemctl status' # Uso: estado-servicio ssh
alias activar-servicio='sudo systemctl enable' # Habilitar al arranque
alias desactivar-servicio='sudo systemctl disable' # Deshabilitar del arranque
alias iniciar-servicio='sudo systemctl start'
alias parar-servicio='sudo systemctl stop'
# ════════════════════════════════════════════════
# APAGADO Y REINICIO
# ════════════════════════════════════════════════
alias reiniciar='sudo reboot' # reboot
alias apagar='sudo shutdown -h now' # shutdown -h now
alias apagar-en='sudo shutdown -h' # Uso: apagar-en 22:00
alias cancelar-apagado='sudo shutdown -c' # shutdown -c — cancela un apagado programado
Linux — Fedora/RHEL (DNF)
alias actualizar='sudo dnf upgrade -y'
alias limpiar='sudo dnf autoremove -y && sudo dnf clean all'
alias refrescar='sudo dnf check-update'
alias actualizar-todo='sudo dnf upgrade -y && sudo dnf autoremove -y && sudo dnf clean all'
Linux — Arch Linux / Manjaro
alias actualizar='sudo pacman -Syu'
alias limpiar='sudo pacman -Rns $(pacman -Qtdq) 2>/dev/null; sudo paccache -r'
alias refrescar='sudo pacman -Sy'
alias actualizar-todo='sudo pacman -Syu && yay -Syu' # Con AUR (yay)
Windows PowerShell
# ── Actualización y limpieza ─────────────────────────────────
function actualizar-todo { winget upgrade --all }
function limpiar {
Remove-Item "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "C:\Windows\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "✔ Archivos temporales eliminados" -ForegroundColor Green
}
# ── Información ──────────────────────────────────────────────
function info-sistema { Get-ComputerInfo | Select-Object CsName, OsName, OsVersion }
function tiempo-encendido { (Get-Date) - (gcim Win32_OperatingSystem).LastBootUpTime }
# ── Servicios ────────────────────────────────────────────────
function servicios-activos { Get-Service | Where-Object Status -eq Running | Format-Table -AutoSize }
function estado-servicio($s){ Get-Service -Name $s }
function reiniciar-servicio($s) { Restart-Service -Name $s -Force }
# ── Apagado ──────────────────────────────────────────────────
function reiniciar { Restart-Computer -Force }
function apagar { Stop-Computer -Force }
5.4 Gestión de redes
Linux (~/.bashrc o ~/.zshrc)
# ════════════════════════════════════════════════
# INFORMACIÓN DE RED
# ════════════════════════════════════════════════
alias mis-interfaces='ip -c a' # ip a — ver todas las interfaces de red con color
alias solo-ipv4='ip -4 addr show' # ip -4 — solo direcciones IPv4
alias solo-ipv6='ip -6 addr show' # ip -6 — solo direcciones IPv6
alias mi-ip-publica='curl -s ifconfig.me && echo' # IP pública
alias mi-ip-info='curl -s ipinfo.io | python3 -m json.tool' # IP + país, ciudad, proveedor
alias mis-rutas='ip route show' # ip route — tabla de enrutamiento
alias mis-macs='ip link show' # ip link — direcciones MAC de las interfaces
# ════════════════════════════════════════════════
# PUERTOS Y CONEXIONES ACTIVAS
# ════════════════════════════════════════════════
alias puertos-abiertos='ss -tulnp' # ss -tulnp — puertos TCP/UDP en escucha con el proceso
alias conexiones-activas='ss -tp' # ss -tp — conexiones TCP establecidas
alias escuchando='sudo ss -tulnp | grep LISTEN'
alias quien-usa-puerto='sudo lsof -i' # lsof -i — qué proceso usa cada puerto
# ════════════════════════════════════════════════
# DIAGNÓSTICO
# ════════════════════════════════════════════════
alias probar='ping -c 5' # ping -c 5 — prueba de conectividad (5 paquetes)
alias ruta-hasta='traceroute' # traceroute — traza la ruta hasta un destino
alias mis-dns='cat /etc/resolv.conf' # Ver servidores DNS configurados
alias probar-dns='nslookup google.com' # Prueba básica de resolución DNS
# Verificar si un puerto está abierto: comprobar-puerto host puerto
comprobar-puerto() {
nc -zv "$1" "$2" 2>&1 \
&& echo "✔ Puerto $2 abierto en $1" \
|| echo "✗ Puerto $2 cerrado o inaccesible en $1"
}
# Escanear dispositivos en la red local: escanear-red 192.168.1.0/24
escanear-red() {
local red="${1:-192.168.1.0/24}"
echo "Escaneando $red... (requiere nmap)"
nmap -sn "$red"
}
# ════════════════════════════════════════════════
# WIFI
# ════════════════════════════════════════════════
alias redes-wifi='nmcli device wifi list' # nmcli — redes WiFi disponibles
alias wifi-estado='nmcli connection show --active' # Conexiones WiFi activas
alias wifi-conectar='nmcli device wifi connect' # Uso: wifi-conectar "MiRed" password "clave"
alias reiniciar-red='sudo systemctl restart NetworkManager && echo "✔ Red reiniciada"'
# ════════════════════════════════════════════════
# ARCHIVO HOSTS Y FIREWALL
# ════════════════════════════════════════════════
alias editar-hosts='sudo nano /etc/hosts' # Editar el archivo de hosts local
alias cortafuegos='sudo ufw status verbose' # ufw status — estado del firewall
alias cortafuegos-on='sudo ufw enable' # ufw enable
alias cortafuegos-off='sudo ufw disable' # ufw disable
alias cortafuegos-reglas='sudo ufw status numbered' # Ver reglas numeradas
# Permitir un puerto: permitir-puerto 8080/tcp
permitir-puerto() { sudo ufw allow "$1" && echo "✔ Puerto permitido: $1"; }
# Denegar un puerto: denegar-puerto 23
denegar-puerto() { sudo ufw deny "$1" && echo "✔ Puerto denegado: $1"; }
Windows PowerShell ($PROFILE)
# ── Información ──────────────────────────────────────────────
function mis-interfaces { ipconfig /all } # ipconfig /all
function mi-ip-publica { (Invoke-WebRequest -Uri "https://ifconfig.me").Content }
function mis-rutas { route print } # route print
function puertos-abiertos { netstat -ano | Select-String "LISTENING" } # netstat
function conexiones-activas{ netstat -ano }
# ── WiFi ─────────────────────────────────────────────────────
function redes-wifi { netsh wlan show networks }
function wifi-estado { netsh wlan show interfaces }
# ── Diagnóstico ──────────────────────────────────────────────
function probar($host) { ping -n 5 $host } # ping -n 5
function mis-dns { Get-DnsClientServerAddress }
# ── Hosts y firewall ─────────────────────────────────────────
function editar-hosts { notepad C:\Windows\System32\drivers\etc\hosts }
function cortafuegos { Get-NetFirewallProfile | Select-Object Name, Enabled }
function cortafuegos-on { Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True }
function cortafuegos-off { Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False }
function cortafuegos-reglas{ Get-NetFirewallRule | Where-Object Enabled -eq True | Select-Object DisplayName, Direction, Action | Format-Table }
function reiniciar-red {
Restart-NetAdapter -Name "*" -Confirm:$false
Write-Host "✔ Adaptadores de red reiniciados" -ForegroundColor Green
}
5.5 Instalación y desinstalación de paquetes
Linux — APT (Debian/Ubuntu)
# ════════════════════════════════════════════════
# GESTIÓN DE PAQUETES — APT
# ════════════════════════════════════════════════
alias instalar='sudo apt install -y' # apt install
alias reinstalar='sudo apt install --reinstall -y'
alias desinstalar='sudo apt remove -y' # apt remove — desinstala sin borrar config
alias desinstalar-limpio='sudo apt purge -y' # apt purge — desinstala y borra configuración
alias desinstalar-completo() { # purge + limpieza de huérfanos
sudo apt purge -y "$@" && sudo apt autoremove -y
}
alias buscar-paquete='apt search' # apt search
alias info-paquete='apt show' # apt show
alias instalados='apt list --installed 2>/dev/null | grep -v "Listing"'
alias ver-instalados='dpkg --list' # dpkg -l — lista completa
# Instalar un archivo .deb local: instalar-local paquete.deb
instalar-local() {
sudo dpkg -i "$1" && sudo apt -f install -y
echo "✔ Instalado: $1"
}
# ¿Qué paquete proporciona un archivo o comando?: de-donde-viene ls
de-donde-viene() {
dpkg -S "$1" 2>/dev/null || apt-file search "$1"
}
Linux — DNF (Fedora/RHEL)
alias instalar='sudo dnf install -y'
alias desinstalar='sudo dnf remove -y'
alias desinstalar-limpio='sudo dnf remove -y'
alias buscar-paquete='dnf search'
alias info-paquete='dnf info'
alias instalados='dnf list installed'
alias actualizar='sudo dnf upgrade -y'
alias limpiar='sudo dnf autoremove -y && sudo dnf clean all'
Linux — Pacman (Arch Linux)
alias instalar='sudo pacman -S'
alias desinstalar='sudo pacman -Rs' # -Rs elimina también dependencias huérfanas
alias desinstalar-limpio='sudo pacman -Rns'
alias buscar-paquete='pacman -Ss'
alias info-paquete='pacman -Si'
alias instalados='pacman -Q'
alias instalados-explicito='pacman -Qe' # Solo los instalados manualmente
alias refrescar='sudo pacman -Sy'
Linux — Snap y Flatpak
# ── Snap ─────────────────────────────────────────────────────
alias snap-instalar='sudo snap install'
alias snap-desinstalar='sudo snap remove'
alias snap-instalados='snap list'
alias snap-buscar='snap find'
alias snap-actualizar='sudo snap refresh'
# ── Flatpak ──────────────────────────────────────────────────
alias flat-instalar='flatpak install -y'
alias flat-desinstalar='flatpak uninstall -y'
alias flat-instalados='flatpak list'
alias flat-actualizar='flatpak update -y'
alias flat-buscar='flatpak search'
Windows PowerShell — Winget y Chocolatey
# ── Winget (gestor oficial de Windows) ───────────────────────
function instalar($pkg) { winget install --id $pkg -e } # winget install
function reinstalar($pkg) { winget install --id $pkg -e --force } # winget install --force
function desinstalar($pkg) { winget uninstall --id $pkg -e } # winget uninstall
function buscar-paquete($q) { winget search $q } # winget search
function info-paquete($pkg) { winget show --id $pkg } # winget show
function instalados { winget list } # winget list
function actualizar-todo { winget upgrade --all }
# ── Chocolatey (si está instalado) ───────────────────────────
function choco-instalar($pkg) { choco install $pkg -y }
function choco-desinstalar($pkg){ choco uninstall $pkg -y }
function choco-actualizar { choco upgrade all -y }
function choco-instalados { choco list --local-only }
5.6 Seguridad del sistema
Linux (~/.bashrc o ~/.zshrc)
# ════════════════════════════════════════════════
# PERMISOS Y PROPIEDAD
# ════════════════════════════════════════════════
alias ver-permisos='stat -c "%a %n"' # stat — muestra permisos en octal
alias privado='chmod 700' # chmod 700 — solo el propietario accede
alias publico='chmod 755' # chmod 755 — lectura/ejecución para todos
alias solo-lectura='chmod 444' # chmod 444 — solo lectura para todos
alias permisos-archivos='find . -type f -exec chmod 644 {} \;' # 644 a todos los archivos
alias permisos-carpetas='find . -type d -exec chmod 755 {} \;' # 755 a todas las carpetas
# ════════════════════════════════════════════════
# USUARIOS Y SESIONES
# ════════════════════════════════════════════════
alias conectados='who' # who — usuarios conectados ahora
alias quien-soy='whoami && id' # whoami + id — usuario e identidad completa
alias ultimos-accesos='last | head -20' # last — últimos inicios de sesión
alias accesos-fallidos='sudo lastb | head -20' # lastb — intentos fallidos de login
alias todos-usuarios='cut -d: -f1 /etc/passwd | sort' # Lista todos los usuarios del sistema
# ════════════════════════════════════════════════
# AUDITORÍA Y REGISTROS
# ════════════════════════════════════════════════
alias ver-accesos='sudo tail -50 /var/log/auth.log' # Log de autenticación
alias seguir-accesos='sudo tail -f /var/log/auth.log' # En tiempo real (Ctrl+C para salir)
alias ataques-ssh='sudo grep "Failed password" /var/log/auth.log | tail -20' # Intentos SSH fallidos
alias uso-sudo='sudo grep "sudo" /var/log/auth.log | tail -20' # Comandos ejecutados con sudo
# ════════════════════════════════════════════════
# CLAVES SSH
# ════════════════════════════════════════════════
# Generar clave SSH moderna: nueva-clave-ssh tu@correo.com
nueva-clave-ssh() {
ssh-keygen -t ed25519 -C "$1"
echo "✔ Clave generada. Copia la pública con: copiar-clave-ssh usuario@servidor"
}
# Copiar clave pública a un servidor: copiar-clave-ssh usuario@servidor
alias copiar-clave-ssh='ssh-copy-id' # ssh-copy-id
alias mis-claves-ssh='ls -la ~/.ssh/' # Ver claves almacenadas localmente
alias ver-clave-publica='cat ~/.ssh/id_ed25519.pub 2>/dev/null || cat ~/.ssh/id_rsa.pub'
# ════════════════════════════════════════════════
# PROCESOS SOSPECHOSOS
# ════════════════════════════════════════════════
alias procesos-red='sudo ss -tulnp' # ss — procesos que escuchan en red
alias archivos-abiertos='sudo lsof -i' # lsof — archivos de red abiertos por proceso
alias procesos-todos='ps aux --sort=-%cpu | head -15'
Windows PowerShell ($PROFILE)
# ── Usuarios y sesiones ──────────────────────────────────────
function conectados { query user }
function quien-soy { [System.Security.Principal.WindowsIdentity]::GetCurrent().Name }
function todos-usuarios { Get-LocalUser | Select-Object Name, Enabled, LastLogon }
function soy-admin { ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) }
# ── Auditoría ────────────────────────────────────────────────
function accesos-fallidos { Get-EventLog -LogName Security -InstanceId 4625 -Newest 20 | Format-Table TimeGenerated, Message -AutoSize }
function ver-accesos { Get-EventLog -LogName Security -Newest 30 | Format-Table TimeGenerated, EntryType, Message -AutoSize }
# ── Firewall ─────────────────────────────────────────────────
function cortafuegos-on { Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True; Write-Host "✔ Firewall activado" -ForegroundColor Green }
function cortafuegos-off { Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False; Write-Host "⚠ Firewall desactivado" -ForegroundColor Yellow }
function cortafuegos-reglas{ Get-NetFirewallRule | Where-Object Enabled -eq True | Select-Object DisplayName, Direction, Action | Format-Table }
# ── Procesos ─────────────────────────────────────────────────
function procesos-red { Get-NetTCPConnection | Where-Object State -eq Listen | Format-Table LocalPort, OwningProcess -AutoSize }
5.7 Copias de seguridad
Linux (~/.bashrc o ~/.zshrc)
# ════════════════════════════════════════════════
# RESPALDO RÁPIDO DE ARCHIVOS
# ════════════════════════════════════════════════
# Respaldar un archivo con fecha: respaldar archivo.conf
respaldar() {
local fecha=$(date +%Y%m%d_%H%M%S)
cp -v "$1" "${1}.resp_${fecha}"
echo "✔ Respaldo creado: ${1}.resp_${fecha}"
}
# Respaldar un directorio comprimido: respaldar-dir /etc /home/usuario/respaldos
respaldar-dir() {
local origen="$1"
local destino="${2:-$HOME/respaldos}"
local nombre=$(basename "$origen")
local fecha=$(date +%Y%m%d_%H%M%S)
mkdir -p "$destino"
tar -czf "${destino}/${nombre}_${fecha}.tar.gz" -C "$(dirname "$origen")" "$nombre"
echo "✔ Respaldo creado: ${destino}/${nombre}_${fecha}.tar.gz"
ls -lh "${destino}/${nombre}_${fecha}.tar.gz"
}
# Restaurar un archivo tar.gz: restaurar respaldo.tar.gz /destino/opcional
restaurar() {
tar -xzf "$1" -C "${2:-.}"
echo "✔ Restaurado en ${2:-.}"
}
# ════════════════════════════════════════════════
# SINCRONIZACIÓN CON RSYNC
# ════════════════════════════════════════════════
# rsync local: sincronizar /origen /destino
sincronizar() {
rsync -avh --progress --delete "$1" "$2"
}
# rsync a servidor remoto: sincronizar-remoto /local usuario@servidor:/ruta
sincronizar-remoto() {
rsync -avzh --progress "$1" "$2"
}
# Simulacro sin ejecutar cambios (para revisar antes de sincronizar)
alias simular-sync='rsync -avhn --delete' # rsync --dry-run
# ════════════════════════════════════════════════
# BASES DE DATOS
# ════════════════════════════════════════════════
# MySQL/MariaDB: respaldar-mysql nombre_base_datos
respaldar-mysql() {
local db="$1"
local archivo="${db}_$(date +%Y%m%d_%H%M%S).sql"
mysqldump -u root -p "$db" > "$archivo" && gzip "$archivo"
echo "✔ Respaldo MySQL: ${archivo}.gz"
}
# PostgreSQL: respaldar-postgres nombre_base_datos
respaldar-postgres() {
local db="$1"
local archivo="${db}_$(date +%Y%m%d_%H%M%S).sql"
pg_dump "$db" > "$archivo" && gzip "$archivo"
echo "✔ Respaldo PostgreSQL: ${archivo}.gz"
}
# ════════════════════════════════════════════════
# GESTIÓN DE RESPALDOS
# ════════════════════════════════════════════════
alias mis-respaldos='ls -lhtr ~/respaldos/' # Ver respaldos ordenados por fecha
alias peso-respaldos='du -sh ~/respaldos/' # Tamaño total de la carpeta de respaldos
# Eliminar respaldos de más de N días: limpiar-respaldos 30
limpiar-respaldos() {
local dias="${1:-30}"
find "${2:-$HOME/respaldos}" -name "*.tar.gz" -mtime +${dias} -delete
echo "✔ Respaldos con más de ${dias} días eliminados"
}
Windows PowerShell ($PROFILE)
# ── Respaldo rápido de archivo ────────────────────────────────
function respaldar($archivo) {
$fecha = Get-Date -Format "yyyyMMdd_HHmmss"
Copy-Item $archivo "${archivo}.resp_${fecha}"
Write-Host "✔ Respaldo creado: ${archivo}.resp_${fecha}" -ForegroundColor Green
}
# ── Respaldo comprimido de directorio ────────────────────────
function respaldar-dir($origen, $destino = "$env:USERPROFILE\Respaldos") {
$fecha = Get-Date -Format "yyyyMMdd_HHmmss"
$nombre = (Get-Item $origen).Name
New-Item -ItemType Directory -Force -Path $destino | Out-Null
Compress-Archive -Path $origen -DestinationPath "$destino\${nombre}_${fecha}.zip"
Write-Host "✔ Respaldo creado: $destino\${nombre}_${fecha}.zip" -ForegroundColor Green
}
# ── Restaurar un archivo zip ──────────────────────────────────
function restaurar($zip, $destino = ".") {
Expand-Archive -Path $zip -DestinationPath $destino -Force
Write-Host "✔ Restaurado en $destino" -ForegroundColor Green
}
# ── Sincronizar con Robocopy ──────────────────────────────────
function sincronizar($origen, $destino) {
robocopy $origen $destino /MIR /Z /NP /LOG:sincronizacion.log
Write-Host "✔ Sincronización completada. Log: sincronizacion.log"
}
# ── Gestión ──────────────────────────────────────────────────
function mis-respaldos { Get-ChildItem "$env:USERPROFILE\Respaldos" | Sort-Object LastWriteTime | Format-Table Name, Length, LastWriteTime -AutoSize }
5.8 Git y control de versiones
# ════════════════════════════════════════════════
# CONSULTA E INFORMACIÓN
# ════════════════════════════════════════════════
alias estado='git status -sb' # git status — estado del repositorio
alias historial='git log --oneline --graph --decorate --all' # git log — historial visual
alias historial-det='git log --graph --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset" --abbrev-commit'
alias diferencias='git diff' # git diff — cambios sin añadir al stage
alias diferencias-guardadas='git diff --staged' # git diff --staged — cambios en el stage
# ════════════════════════════════════════════════
# RAMAS
# ════════════════════════════════════════════════
alias ramas='git branch' # git branch — listar ramas locales
alias ramas-todas='git branch -a' # git branch -a — locales y remotas
alias cambiar-rama='git checkout' # git checkout
alias nueva-rama='git checkout -b' # git checkout -b — crear y cambiar
alias borrar-rama='git branch -d' # git branch -d — borrar rama local
alias fusionar='git merge' # git merge
alias reorganizar='git rebase' # git rebase
# ════════════════════════════════════════════════
# GUARDAR CAMBIOS
# ════════════════════════════════════════════════
alias anadir='git add .' # git add . — añadir todos los cambios
alias anadir-todo='git add -A' # git add -A — incluyendo borrados
alias confirmar='git commit -m' # git commit -m — confirmar con mensaje
alias confirmar-todo='git commit -am' # git commit -am — añadir y confirmar
alias enmendar='git commit --amend' # git commit --amend — modificar último commit
# ════════════════════════════════════════════════
# SINCRONIZACIÓN CON REMOTO
# ════════════════════════════════════════════════
alias enviar='git push' # git push
alias enviar-forzado='git push --force-with-lease' # push forzado seguro
alias recibir='git pull' # git pull
alias recibir-rebase='git pull --rebase' # git pull --rebase
alias traer='git fetch --all --prune' # git fetch — descarga sin fusionar
# ════════════════════════════════════════════════
# UTILIDADES
# ════════════════════════════════════════════════
alias guardar-temporal='git stash' # git stash — aparcar cambios temporalmente
alias recuperar-temporal='git stash pop' # git stash pop — recuperar cambios aparcados
alias lista-temporales='git stash list' # git stash list
alias deshacer-ultimo='git reset HEAD~1' # git reset HEAD~1 — deshace el último commit (conserva cambios)
alias limpiar-sin-seguimiento='git clean -fd' # git clean -fd — borra archivos no rastreados
alias mis-etiquetas='git tag -l' # git tag -l
alias remotos='git remote -v' # git remote -v — ver repositorios remotos
💡 Nota para PowerShell: estos mismos alias pueden añadirse a
$PROFILEusandofunction estado { git status -sb }, etc.
5.9 Monitorización del sistema
Linux (~/.bashrc o ~/.zshrc)
# ════════════════════════════════════════════════
# CPU Y MEMORIA
# ════════════════════════════════════════════════
alias memoria='free -h' # free -h — memoria RAM y swap en formato legible
alias memoria-det='cat /proc/meminfo | grep -E "MemTotal|MemFree|MemAvailable|SwapTotal|SwapFree"'
alias mas-cpu='ps aux --sort=-%cpu | head -15' # ps aux — procesos que más CPU consumen
alias mas-memoria='ps aux --sort=-%mem | head -15'
alias carga-sistema='uptime' # uptime — carga media del sistema
# ════════════════════════════════════════════════
# DISCO
# ════════════════════════════════════════════════
alias espacio-libre='df -hT | grep -v tmpfs' # df -h — espacio libre por partición
alias uso-actual='du -sh *' # du -sh — tamaño de cada elemento en el directorio actual
alias uso-ordenado='du -sh * | sort -h' # Ordenado de menor a mayor
alias archivos-grandes='du -ah / 2>/dev/null | sort -rh | head -20' # Los 20 archivos más grandes del sistema
# ════════════════════════════════════════════════
# PROCESOS
# ════════════════════════════════════════════════
alias buscar-proceso='ps aux | grep' # Uso: buscar-proceso nginx
alias matar-pid='kill -9' # kill -9 — forzar cierre por PID
alias matar-nombre='pkill -f' # pkill — cerrar por nombre del proceso
alias pid-de='pgrep -a' # pgrep — obtener PID por nombre
# ════════════════════════════════════════════════
# REGISTROS DEL SISTEMA
# ════════════════════════════════════════════════
alias registros='sudo journalctl -n 50 --no-pager' # journalctl — últimas 50 líneas
alias registros-vivo='sudo journalctl -f' # En tiempo real (Ctrl+C para salir)
alias registros-errores='sudo journalctl -p err -n 30' # Solo errores
alias registros-arranque='sudo journalctl -b' # Desde el último arranque
# ════════════════════════════════════════════════
# HARDWARE Y TEMPERATURA
# ════════════════════════════════════════════════
alias temperatura='sensors 2>/dev/null || echo "Instala: sudo apt install lm-sensors && sudo sensors-detect"'
alias bateria='upower -i /org/freedesktop/UPower/devices/battery_BAT0 2>/dev/null | grep -E "state|percentage|time"'
alias hardware-resumen='sudo lshw -short 2>/dev/null'
alias info-cpu='lscpu' # lscpu — información detallada del procesador
alias info-ram='sudo dmidecode --type 17 | grep -E "Size|Speed|Type"' # Módulos de RAM físicos
Windows PowerShell ($PROFILE)
function mas-cpu { Get-Process | Sort-Object CPU -Descending | Select-Object -First 15 | Format-Table Name, CPU, WorkingSet -AutoSize }
function mas-memoria{ Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 15 | Format-Table Name, WorkingSet -AutoSize }
function memoria { Get-CimInstance Win32_OperatingSystem | Select-Object @{n="RAM Total (GB)";e={[math]::Round($_.TotalVisibleMemorySize/1MB,2)}}, @{n="Libre (GB)";e={[math]::Round($_.FreePhysicalMemory/1MB,2)}} }
function espacio-libre { Get-PSDrive -PSProvider FileSystem | Format-Table Name, Used, Free, Root -AutoSize }
function registros { Get-EventLog -LogName System -Newest 50 | Format-Table TimeGenerated, EntryType, Message -AutoSize }
function registros-errores { Get-EventLog -LogName System -EntryType Error -Newest 20 | Format-Table TimeGenerated, Message -AutoSize }
function info-cpu { Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, MaxClockSpeed }
6. Archivo de configuración maestro
Si quieres empezar con una base sólida de una sola vez, aquí tienes un archivo maestro completo y listo para aplicar. Incluye los alias más útiles de todas las categorías, ya nombrados en castellano.
Para Linux/macOS (~/.bashrc o ~/.zshrc)
# ================================================================
# ARCHIVO MAESTRO DE ALIAS EN CASTELLANO
# Pega este contenido al final de ~/.bashrc o ~/.zshrc
# Aplica los cambios con: source ~/.bashrc
# ================================================================
# ── Navegación ───────────────────────────────────────────────
alias ..='cd ..'
alias ...='cd ../..'
alias casa='cd ~'
alias escritorio='cd ~/Escritorio'
alias documentos='cd ~/Documentos'
alias descargas='cd ~/Descargas'
alias anterior='cd -'
# ── Listado de archivos ──────────────────────────────────────
alias listar='ls --color=auto'
alias det='ls -lah --color=auto'
alias ocultos='ls -A --color=auto'
alias recientes='ls -lhtr --color=auto'
alias pesados='ls -lhS --color=auto'
# ── Operaciones seguras ──────────────────────────────────────
alias copiar='cp -iv'
alias mover='mv -iv'
alias borrar='rm -Iv'
alias crear-dir='mkdir -pv'
# ── Sistema ──────────────────────────────────────────────────
alias actualizar='sudo apt update && sudo apt upgrade -y'
alias limpiar='sudo apt autoremove -y && sudo apt autoclean'
alias limpiar-registros='sudo journalctl --vacuum-time=7d'
alias info-sistema='uname -a && lsb_release -a 2>/dev/null'
alias tiempo-encendido='uptime -p'
alias reiniciar='sudo reboot'
alias apagar='sudo shutdown -h now'
alias servicios-activos='systemctl list-units --type=service --state=running'
# ── Disco y almacenamiento ───────────────────────────────────
alias espacio-libre='df -hT | grep -v tmpfs'
alias uso-actual='du -sh *'
alias mis-discos='lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL'
# ── Memoria y procesos ───────────────────────────────────────
alias memoria='free -h'
alias mas-cpu='ps aux --sort=-%cpu | head -15'
alias buscar-proceso='ps aux | grep'
# ── Red ──────────────────────────────────────────────────────
alias mis-interfaces='ip -c a'
alias mi-ip-publica='curl -s ifconfig.me && echo'
alias puertos-abiertos='ss -tulnp'
alias redes-wifi='nmcli device wifi list'
alias editar-hosts='sudo nano /etc/hosts'
alias cortafuegos='sudo ufw status verbose'
# ── Seguridad ────────────────────────────────────────────────
alias conectados='who'
alias quien-soy='whoami && id'
alias ultimos-accesos='last | head -20'
alias accesos-fallidos='sudo lastb | head -20'
alias ver-accesos='sudo tail -50 /var/log/auth.log'
# ── Paquetes ─────────────────────────────────────────────────
alias instalar='sudo apt install -y'
alias desinstalar='sudo apt remove -y'
alias buscar-paquete='apt search'
alias instalados='apt list --installed 2>/dev/null | grep -v "Listing"'
# ── Git ──────────────────────────────────────────────────────
alias estado='git status -sb'
alias historial='git log --oneline --graph --decorate --all'
alias anadir='git add .'
alias confirmar='git commit -m'
alias enviar='git push'
alias recibir='git pull'
alias ramas='git branch'
alias diferencias='git diff'
alias guardar-temporal='git stash'
alias recuperar-temporal='git stash pop'
# ── Respaldos ────────────────────────────────────────────────
respaldar() {
cp -v "$1" "${1}.resp_$(date +%Y%m%d_%H%M%S)"
}
respaldar-dir() {
local nombre=$(basename "$1")
local fecha=$(date +%Y%m%d_%H%M%S)
mkdir -p ~/respaldos
tar -czf ~/respaldos/${nombre}_${fecha}.tar.gz -C "$(dirname "$1")" "$nombre"
echo "✔ ~/respaldos/${nombre}_${fecha}.tar.gz"
}
alias mis-respaldos='ls -lhtr ~/respaldos/'
# ── USB ──────────────────────────────────────────────────────
montar() {
sudo mkdir -p "${2:-/mnt/usb}" && sudo mount "$1" "${2:-/mnt/usb}"
df -h "${2:-/mnt/usb}"
}
alias desmontar='sudo umount /mnt/usb && echo "✔ USB desmontado"'
# ── Utilidades generales ─────────────────────────────────────
alias limpiar-pantalla='clear'
alias recargar='source ~/.bashrc'
alias editar-alias='nano ~/.bashrc'
alias registros-vivo='sudo journalctl -f'
descomprimir() {
case "$1" in
*.tar.bz2) tar xjf "$1" ;; *.tar.gz) tar xzf "$1" ;;
*.tar.xz) tar xJf "$1" ;; *.zip) unzip "$1" ;;
*.7z) 7z x "$1" ;; *.rar) unrar x "$1" ;;
*) echo "⚠ Formato no reconocido: $1" ;;
esac
}
nueva-carpeta() { mkdir -p "$1" && cd "$1"; }
Para Windows PowerShell ($PROFILE)
# ================================================================
# PERFIL MAESTRO DE POWERSHELL EN CASTELLANO
# Pega en: notepad $PROFILE
# Recarga con: . $PROFILE
# ================================================================
# ── Navegación ───────────────────────────────────────────────
function .. { Set-Location .. }
function ... { Set-Location ..\.. }
function casa { Set-Location $env:USERPROFILE }
function escritorio { Set-Location "$env:USERPROFILE\Desktop" }
function documentos { Set-Location "$env:USERPROFILE\Documents" }
function descargas { Set-Location "$env:USERPROFILE\Downloads" }
# ── Listado ──────────────────────────────────────────────────
function listar { Get-ChildItem | Format-Table -AutoSize }
function det { Get-ChildItem -Force | Format-Table -AutoSize }
function pesados { Get-ChildItem | Sort-Object Length -Descending | Format-Table Name, Length -AutoSize }
# ── Archivos ─────────────────────────────────────────────────
function nueva-carpeta($d) { New-Item -ItemType Directory -Force -Path $d; Set-Location $d }
function buscar($n) { Get-ChildItem -Recurse -Filter $n }
# ── Sistema ──────────────────────────────────────────────────
function limpiar {
Remove-Item "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "✔ Temporales eliminados" -ForegroundColor Green
}
function info-sistema { Get-ComputerInfo | Select-Object CsName, OsName, OsVersion }
function tiempo-encendido{ (Get-Date) - (gcim Win32_OperatingSystem).LastBootUpTime }
function espacio-libre { Get-PSDrive -PSProvider FileSystem | Format-Table }
function memoria { Get-CimInstance Win32_OperatingSystem | Select-Object @{n="Total(GB)";e={[math]::Round($_.TotalVisibleMemorySize/1MB,2)}}, @{n="Libre(GB)";e={[math]::Round($_.FreePhysicalMemory/1MB,2)}} }
function reiniciar { Restart-Computer -Force }
function apagar { Stop-Computer -Force }
# ── Red ──────────────────────────────────────────────────────
function mis-interfaces { ipconfig /all }
function mi-ip-publica { (Invoke-WebRequest "https://ifconfig.me").Content }
function puertos-abiertos{ netstat -ano | Select-String "LISTENING" }
function redes-wifi { netsh wlan show networks }
function editar-hosts { notepad C:\Windows\System32\drivers\etc\hosts }
function cortafuegos { Get-NetFirewallProfile | Select-Object Name, Enabled }
# ── Seguridad ────────────────────────────────────────────────
function conectados { query user }
function quien-soy { [System.Security.Principal.WindowsIdentity]::GetCurrent().Name }
function accesos-fallidos{ Get-EventLog -LogName Security -InstanceId 4625 -Newest 20 }
# ── Paquetes ─────────────────────────────────────────────────
function instalar($pkg) { winget install --id $pkg -e }
function desinstalar($pkg){ winget uninstall --id $pkg -e }
function buscar-paquete($q){ winget search $q }
function actualizar-todo { winget upgrade --all }
# ── Git ──────────────────────────────────────────────────────
function estado { git status -sb }
function historial { git log --oneline --graph --decorate --all }
function anadir { git add . }
function confirmar($msg) { git commit -m $msg }
function enviar { git push }
function recibir { git pull }
function diferencias { git diff }
function ramas { git branch }
# ── Respaldos ────────────────────────────────────────────────
function respaldar($f) {
$d = Get-Date -Format "yyyyMMdd_HHmmss"
Copy-Item $f "${f}.resp_${d}"
Write-Host "✔ ${f}.resp_${d}" -ForegroundColor Green
}
function respaldar-dir($origen, $destino = "$env:USERPROFILE\Respaldos") {
$d = Get-Date -Format "yyyyMMdd_HHmmss"; $n = (Get-Item $origen).Name
New-Item -ItemType Directory -Force -Path $destino | Out-Null
Compress-Archive -Path $origen -DestinationPath "$destino\${n}_${d}.zip"
Write-Host "✔ $destino\${n}_${d}.zip" -ForegroundColor Green
}
# ── Utilidades ───────────────────────────────────────────────
function recargar { . $PROFILE }
function editar-alias { notepad $PROFILE }
Set-Alias limpiar-pantalla Clear-Host
Set-Alias bloc notepad
7. Buenas prácticas
| Consejo | Por qué importa |
|---|---|
| Usa verbos en infinitivo para acciones |
borrar, copiar, instalar son más naturales que abreviaturas crípticas |
| Usa sustantivos para consultas |
memoria, disco, conectados son fáciles de recordar |
| Agrupa por prefijo temático |
red-, git-, resp- facilitan el autocompletado con Tab |
| Sin tildes en el nombre del alias | Evita problemas de codificación en algunos sistemas o scripts |
| No sobreescribas comandos del sistema sin motivo |
estado es seguro; ls no lo es tanto |
| Documenta cada alias con comentarios | Un comentario de 5 palabras vale más que 10 minutos buscando qué hacía |
| Versiona tus dotfiles con Git | Sincroniza tu entorno entre equipos en segundos |
| Haz copia del archivo antes de editar |
cp ~/.bashrc ~/.bashrc.bak antes de cada sesión de edición |
Versionar tus dotfiles con Git
Una práctica extendida entre administradores y desarrolladores es guardar los archivos de configuración en un repositorio Git:
mkdir ~/dotfiles && cd ~/dotfiles
git init
cp ~/.bashrc ./bashrc
git add . && git commit -m "Configuración inicial de alias en castellano"
git remote add origin git@github.com:tuusuario/dotfiles.git
git push -u origin main
En cualquier máquina nueva, recuperas tu entorno completo con:
git clone git@github.com:tuusuario/dotfiles.git ~/dotfiles
cp ~/dotfiles/bashrc ~/.bashrc
source ~/.bashrc
8. Hoja de referencia rápida
Después de configurar y personalizar tus alias, llega un momento en el que ciertos comandos se vuelven tan habituales que resulta útil tener una referencia visual rápida.
Para eso puedes usar esta hoja resumen online:
👉 https://enfaseterminal.github.io/cacharreria/alias/alias-referencia-rapida.html
La referencia rápida agrupa los alias más utilizados por categorías:
- Navegación
- Gestión de archivos
- Redes
- Git
- Monitorización
- Seguridad
- Copias de seguridad
- Gestión de paquetes
Está pensada para:
- Consultarla rápidamente desde el móvil.
- Tenerla abierta en una segunda pantalla.
- Imprimirla como chuleta de terminal.
- Compartir configuraciones con otros usuarios.
💡 Consejo: si usas mucho la terminal, añade esta referencia a tus marcadores del navegador o conviértela en acceso directo del escritorio.
9. ⚠ Tildes, eñes y compatibilidad: lo que debes saber
Las shells modernas (Bash 4+, Zsh 5+, PowerShell 7+) con codificación UTF-8 aceptan correctamente caracteres como tildes o la letra ñ en nombres de alias:
alias canción='mpv ~/musica/cancion.mp3'
alias configuración='nano ~/.bashrc'
Técnicamente funcionan. Sin embargo, en entornos reales se recomienda evitar estos caracteres en nombres de alias y funciones.
¿Por qué evitar tildes y eñes?
Aunque tu terminal local funcione perfectamente en UTF-8, existen escenarios donde pueden aparecer problemas de compatibilidad:
| Escenario | Problema habitual |
|---|---|
cron y tareas programadas |
El entorno puede no cargar locales UTF-8 |
| Servidores Linux antiguos | Algunos sistemas siguen usando codificaciones legacy |
| SSH remoto | El terminal remoto puede no coincidir con el local |
| Docker minimalista | Muchas imágenes carecen de locales UTF-8 |
| Scripts heredados | Pueden estar guardados en ISO-8859 o Latin-1 |
| Transferencia entre sistemas | Los archivos pueden corromper caracteres especiales |
Por ese motivo, en esta guía todos los alias usan únicamente caracteres ASCII simples:
# Evitamos:
actualización
configuración
añadir
# Usamos:
actualizar
configuracion
anadir
La convención más segura
La práctica más extendida entre administradores de sistemas y desarrolladores es:
- Comentarios: pueden llevar tildes sin problema.
- Alias y funciones: mejor ASCII puro.
Ejemplo recomendado:
# Actualización completa del sistema
alias actualizar='sudo apt update && sudo apt upgrade -y'
Esto garantiza máxima compatibilidad entre:
- Linux
- macOS
- WSL
- Docker
- Raspberry Pi
- VPS antiguos
- Scripts automatizados
💡 Regla práctica: usa español en los nombres, pero evita caracteres especiales.