Los alias están destinados a alias de nombres de comandos. Cualquier cosa más allá de eso debe hacerse con funciones.
alias ll='ls -l' # The ll command is an alias for ls -l
Los alias son nombres que todavía están asociados con el nombre original. ll
es solo un tipo ligeramente específico de ls
.
d() {
if exists colordiff; then
colordiff -ur "$@"
elif exists diff; then
diff -ur "$@"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
Una función es un nuevo comando que tiene lógica interna. No es simplemente un cambio de nombre de otro comando. Realiza operaciones internas.
Técnicamente, los alias en el lenguaje de shell Bash tienen capacidades tan limitadas que son extremadamente inadecuados para cualquier cosa que implique más de un solo comando . Úselos para hacer una pequeña mutación de un solo comando, nada más.
Dado que la intención es crear un nuevo comando que realice una operación que se resolverá internamente en otros comandos, la única respuesta correcta es usar una función aquí:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
El uso de alias en un escenario como este se encuentra con muchos problemas. Al contrario de las funciones, que se ejecutan como comandos, los alias se expanden en el comando actual, lo que generará problemas muy inesperados al combinar este "comando" de alias con otros comandos. Tampoco funcionan en guiones.