Aliase sind gedacht für Aliasing Befehlsnamen. Alles, was darüber hinausgeht, sollte mit Funktionen erledigt werden.
alias ll='ls -l' # The ll command is an alias for ls -l
Aliasnamen sind Namen, die noch mit dem ursprünglichen Namen verbunden sind. ll
ist nur eine etwas spezielle 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, der über eine interne Logik verfügt. Sie ist nicht einfach eine Umbenennung eines anderen Befehls. Sie führt interne Operationen aus.
Technisch gesehen sind Aliase in der Shell-Sprache Bash in ihren Möglichkeiten so begrenzt, dass sie für alles, was mehr als ein einziger Befehl . Verwenden Sie sie für eine kleine Mutation eines einzelnen Befehls, nicht mehr.
Da die Absicht darin besteht, einen neuen Befehl zu erstellen, der eine Operation ausführt, die intern in anderen Befehlen aufgelöst wird, ist die einzig richtige Antwort, hier eine Funktion zu verwenden:
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
Die Verwendung von Aliasen in einem Szenario wie diesem führt zu einer Reihe von Problemen. 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.
1 Stimmen
Für den Fall, dass jemand die
.bashrc
Datei in W10: stackoverflow.com/a/68745805/7389293