Les alias sont destinés à aliaser les noms de commandes. Tout ce qui va au-delà devrait être fait avec des fonctions.
alias ll='ls -l' # The ll command is an alias for ls -l
Les alias sont des noms qui sont toujours associés au nom d'origine. ll
est juste un type légèrement spécifique 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
}
Une fonction est une nouvelle commande qui a une logique interne. Ce n'est pas simplement un renommage d'une autre commande. Il fait des opérations internes.
Techniquement, les alias dans le langage shell Bash sont si limités en capacités qu'ils sont extrêmement mal adaptés à tout ce qui implique plus d' une seule commande . Utilisez-les pour faire une petite mutation d'une seule commande, rien de plus.
Étant donné que l'intention est de créer une nouvelle commande qui effectue une opération qui se résoudra en interne dans d'autres commandes, la seule réponse correcte est d'utiliser une fonction ici:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
L'utilisation d'alias dans un scénario comme celui-ci pose de nombreux problèmes. Contrairement aux fonctions, qui sont exécutées sous forme de commandes, les alias sont étendus dans la commande actuelle, ce qui entraînera des problèmes très inattendus lors de la combinaison de cette "commande" d'alias avec d'autres commandes. Ils ne fonctionnent pas non plus dans les scripts.