Aliase sind für das Aliasing von Befehlsnamen gedacht . Alles darüber hinaus sollte mit Funktionen erledigt werden.
alias ll='ls -l' # The ll command is an alias for ls -l
Aliase sind Namen, die noch mit dem ursprünglichen Namen verknüpft sind. ll
ist nur eine etwas bestimmte Art von ls
.
d() {
if exists colordiff; then
colordiff -ur "$@"
elif exists diff; then
diff -ur "$@"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
Eine Funktion ist ein neuer Befehl mit interner Logik. Es ist nicht einfach eine Umbenennung eines anderen Befehls. Es führt interne Operationen durch.
Technisch gesehen sind Aliase in der Bash-Shell-Sprache in ihren Funktionen so eingeschränkt, dass sie für alles, was mehr als einen einzelnen Befehl umfasst, äußerst schlecht geeignet sind . Verwenden Sie sie, um eine kleine Mutation eines einzelnen Befehls zu erstellen, nicht mehr.
Da beabsichtigt wird, einen neuen Befehl zu erstellen, der eine Operation ausführt, die intern in anderen Befehlen aufgelöst wird, besteht die einzig richtige Antwort darin, hier eine Funktion zu verwenden:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
Die Verwendung von Aliasen in einem solchen Szenario stößt auf viele Probleme. Im Gegensatz zu Funktionen, die als Befehle ausgeführt werden, werden Aliase in den aktuellen Befehl erweitert, was zu sehr unerwarteten Problemen führt, wenn dieser Alias "Befehl" mit anderen Befehlen kombiniert wird. Sie funktionieren auch nicht in Skripten.