Este artículo fue publicado originalmente en go2linux.org. El dominio ya no me pertenece, pero soy el autor original. Lo republico aquí en garron.me con correcciones y mejoras.

alias es un comando interno del shell que le da un nombre corto a un comando más largo. Es especialmente útil para los comandos que siempre ejecutas con las mismas opciones.

Crear un alias

alias nombre='comando con opciones'

No debe haber espacios alrededor del signo =, y el comando va entre comillas cuando contiene espacios.

Por ejemplo, casi siempre quiero que du y df muestren los tamaños en unidades legibles:

alias du='du -h'
alias df='df -h'

A partir de ahí, escribir df ejecuta df -h. Lo que agregues después del alias se pasa tal cual, así que df /home ejecuta df -h /home.

Listar tus alias

alias sin argumentos muestra todos los alias definidos en el shell actual:

alias

Para ver uno solo:

alias df

Para saber si un nombre es un alias, una función, un comando interno o un programa en disco:

type df
df is aliased to `df -h'

Eliminar un alias

unalias du

Para eliminarlos todos del shell actual:

unalias -a

Hacer los alias permanentes

Un alias escrito en el prompt dura solo hasta que cierras ese shell. Para conservarlo, agrega la línea alias a ~/.bashrc:

echo "alias df='df -h'" >> ~/.bashrc

Luego recarga el archivo, o abre una terminal nueva:

source ~/.bashrc

En Debian y Ubuntu, el ~/.bashrc por defecto también carga ~/.bash_aliases si existe, lo que permite tener los alias en un archivo propio. Si usas Zsh, el archivo es ~/.zshrc.

Saltarse un alias

A veces quieres el comando original y no el alias. Cualquiera de estas formas ejecuta el ls real una vez:

\ls
command ls
/usr/bin/ls

Esto importa con alias de protección como alias rm='rm -i': usa \rm cuando de verdad no quieres que te pregunte por cada archivo.

Alias y sudo

Por defecto esto no funciona:

alias ll='ls -lah'
sudo ll
sudo: ll: command not found

El shell solo expande un alias en la primera palabra de un comando, y aquí la primera palabra es sudo. La solución es un alias para el propio sudo que termine en un espacio:

alias sudo='sudo '

Cuando el valor de un alias termina en un espacio, Bash también revisa la palabra siguiente en busca de alias, de modo que sudo ll se convierte en sudo ls -lah.

Alias en scripts

Los alias están pensados para el uso interactivo. Bash no los expande en scripts a menos que lo actives con shopt -s expand_aliases, y de todos modos un script no lee tu ~/.bashrc. En un script, escribe el comando completo o usa una función.

Cuándo necesitas una función

Un alias solo pone texto delante de tus argumentos. No puede colocar un argumento en medio de un comando ni usarlo dos veces. Para eso, define una función en el mismo ~/.bashrc:

mkcd() {
    mkdir -p "$1" && cd "$1"
}

mkcd proyectos/nuevo crea el directorio y entra en él, algo que ningún alias puede hacer.

Algunos alias útiles

alias ll='ls -lah'
alias la='ls -A'
alias ..='cd ..'
alias ...='cd ../..'
alias grep='grep --color=auto'
alias free='free -h'
alias ports='ss -tulpn'
alias myip='curl -s https://ifconfig.me'
alias update='sudo apt update && sudo apt upgrade'
alias gs='git status'

Ten cuidado de no ocultar un comando real detrás de un alias con otro significado; type nombre te dice si el nombre ya está en uso.

Ver también

help alias — la referencia del comando interno (alias es parte del shell, así que no tiene página man propia).