Gli alias sono pensati per aliasare i nomi dei comandi. Tutto ciò che va oltre dovrebbe essere fatto con funzioni.
alias ll='ls -l' # The ll command is an alias for ls -l
Gli alias sono nomi che sono ancora associati al nome originale. ll
è solo un tipo leggermente specifico di 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 funzione è un nuovo comando che ha una logica interna. Non è semplicemente la ridenominazione di un altro comando. Fa operazioni interne.
Tecnicamente, gli alias nel linguaggio shell Bash sono così limitati nelle capacità che sono estremamente inadatti a tutto ciò che coinvolge più di un singolo comando . Usali per fare una piccola mutazione di un singolo comando, niente di più.
Poiché l'intenzione è quella di creare un nuovo comando che esegua un'operazione che verrà risolta internamente in altri comandi, l'unica risposta corretta è utilizzare una funzione qui:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
L'uso di alias in uno scenario come questo si imbatte in molti problemi. Contrariamente alle funzioni, che vengono eseguite come comandi, gli alias vengono espansi nel comando corrente, il che porterà a problemi molto imprevisti quando si combina questo alias "comando" con altri comandi. Inoltre non funzionano negli script.