Ein Alias ist eine eigene Abkürzung für einen längeren Befehl. Wenn Sie mehrmals täglich „sudo dnf upgrade --refresh“ oder „ss -tulpn“ eingeben, genügt nach der Einrichtung eines Alias die Eingabe von „frissites“ bzw. „ports“. Aliase werden von Bash, der standardmäßigen Befehlsinterpretation der meisten Linux-Systeme, verwaltet.
Wir haben die Beispiele auf einem AlmaLinux 10.2-System (Bash 5.2) getestet; auf AlmaLinux 9 (Bash 5.1), Rocky Linux, Ubuntu und Debian funktionieren sie auf dieselbe Weise, mit den in den Abschnitten 2 und 3 genannten Unterschieden.
1. Alias erstellen
alias ll='ls -lh'
Um das Gleichheitszeichen herum darf kein Leerzeichen stehen, und der Befehl muss in Anführungszeichen gesetzt werden. Von nun an führt die Eingabe von „ll“ den Befehl „ls -lh“ aus, und die weiteren Parameter werden an das Ende angehängt: „ll /var/log“ entspricht tatsächlich „ls -lh /var/log“.
Das Apostroph und die Anführungszeichen sind hier nicht dasselbe. Zwischen Anführungszeichen ersetzt Bash die Variablen bereits bei der Erstellung des Alias, zwischen Apostrophen erst bei der Ausführung. Im Test gab der im Verzeichnis /home/admin angegebene alias p1="echo $PWD" auch nach dem Wechsel in das Verzeichnis /tmp weiterhin /home/admin aus (der Inhalt des Alias lautete nun echo /home/admin), während der alias p2='echo $PWD' korrekt /tmp ausgab.
Abfrage:
alias # az összes alias
alias ll # egy alias tartalma
type ll # mi fut valójában egy név mögött
ll is aliased to `ls -lh'
Löschen: „unalias ll“; alle Aliase aus der aktuellen Shell löschen: „unalias -a“.
Der so erstellte Alias ist nur im aktuellen Terminal gültig: Nach dem Abmelden oder dem Herstellen einer neuen SSH-Verbindung verschwindet er. Die dauerhafte Speicherung wird in Abschnitt 3 beschrieben.
2. Die Standard-Aliase
Unter AlmaLinux legt das System bereits einige Aliase an. Für normale Benutzer aktivieren diese die Farbanzeige für grep und ähnliche Befehle (grep='grep --color=auto'), und im Terminal sind auch ls, ll und l. als Aliase eingerichtet (ls --color=auto, ls -l --color=auto, ls -d .* --color=auto). Diese werden durch Skripte im Verzeichnis /etc/profile.d/ erstellt.
Beim Root-Benutzer gibt es darüber hinaus noch drei weitere Einträge in der Datei „/root/.bashrc“:
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
Aufgrund der Option -i erhält der Root vor jedem Überschreiben oder Löschen eine Bestätigungsabfrage (rm: remove regular file ...?). Dies dient lediglich als Erinnerung, nicht als Schutz: Der Befehl rm -f überschreibt die Option -i (im Test wurde auch mit dem Alias rm -i ohne Abfrage gelöscht), und in Skripten ist der Alias ohnehin nicht gültig. Bei einem normalen Benutzer waren diese Einstellungen im Test nicht konfiguriert; dort löscht rm ohne Abfrage. Unter Ubuntu und Debian gelten andere Standard-Aliase (unter Ubuntu beispielsweise „ll='ls -alF'“); diese sind in der eigenen Datei „~/.bashrc“ aufgeführt.
3. Dauerhafte Sicherung
Die eigenen Aliase werden in eine Datei im eigenen Verzeichnis geschrieben, die von Bash bei jedem interaktiven Start eingelesen wird.
AlmaLinux, Rocky Linux: ~/.bashrc.d
Die Standarddatei „~/.bashrc“ von AlmaLinux 9 und 10 liest alle Dateien aus dem Verzeichnis „~/.bashrc.d/“ ein. Dies ist die übersichtlichste Vorgehensweise, da die Datei „.bashrc“ nicht bearbeitet werden muss:
mkdir -p ~/.bashrc.d
nano ~/.bashrc.d/aliases
Beispiel:
alias ll='ls -lh'
alias la='ls -lAh'
alias ..='cd ..'
alias ports='ss -tulpn'
alias naplo='sudo journalctl -f'
alias frissites='sudo dnf upgrade --refresh'
alias meret='du -sh * | sort -h'
Auf anderen Systemen: ~/.bashrc
Falls die Datei „~/.bashrc.d“ nicht eingelesen wird (Ubuntu, Debian), fügen Sie die Aliase am Ende der Datei „~/.bashrc“ ein. Unter Ubuntu liest „~/.bashrc“ auch die Datei „~/.bash_aliases“ ein, sofern diese vorhanden ist.
Laden der neuen Aliase
Die Änderung tritt in den neuen Terminals in Kraft. Bitte laden Sie bereits geöffnete Fenster erneut:
source ~/.bashrc
Bitte überprüfen Sie die Datei vor dem Laden: Der Befehl „bash -n ~/.bashrc.d/aliases“ führt keine Ausführung durch, sondern prüft lediglich die Syntax. Im Test wurde ein offenes Anführungszeichen wie folgt gemeldet: „unexpected EOF while looking for matching `"'“. Ob eine neue Shell den Alias tatsächlich lädt, zeigt der Befehl „bash -ic 'alias ll'“ an. Bei der SSH-Anmeldung liest die Bash die Datei „~/.bash_profile“, doch unter AlmaLinux wird zusätzlich die Datei „~/.bashrc“ eingelesen, sodass die Aliase auch dort vorhanden sind.
Auf dem Bild ist die Ausgabe von „la“ farbig, obwohl im Alias kein „--color“ enthalten ist: Bash berücksichtigt auch das erste Wort des Alias, und da „ls“ selbst ein Alias ist (ls --color=auto), wird auch dieser aufgelöst.
Für alle Nutzer
Wenn Sie einen Alias für alle Benutzer des Servers einrichten möchten, erstellen Sie eine Datei im Verzeichnis „/etc/profile.d/“ mit der Erweiterung „.sh“ (z. B. „sudo nano /etc/profile.d/sajat-aliasok.sh“). Diese wird bei der nächsten Anmeldung wirksam.
4. Umgehung des Alias
Falls Sie einmal den ursprünglichen Befehl ohne Alias benötigen:
\rm fajl.txt # visszaperjellel
command rm fajl.txt # a command paranccsal
/usr/bin/rm fajl.txt # teljes útvonallal
Im Test lautete die Ausgabe von „ls -d /tmp“ neben dem Alias „alias ls='ls -F'“ /tmp/ (das -F kennzeichnet das Verzeichnis durch ein abschließendes Backslash), während die Ausgabe von „\ls -d /tmp“ und dem command ls -d /tmp /tmp lautete. Das Backslash umgeht lediglich den Alias; sollte es eine Funktion mit demselben Namen geben, umgeht der command auch diese. Was sich hinter einem Namen verbirgt (Alias, Funktion, Programm), listet der type -a ls auf.
5. Wann funktioniert der Alias nicht?
In Skripten
Aliase werden von Bash nur in der interaktiven Shell aufgelöst. In einem Skript existiert der in der Datei „.bashrc“ angegebene Alias nicht:
/tmp/s.sh: line 2: ll: command not found
Geben Sie den vollständigen Befehl in Ihr Skript ein oder verwenden Sie eine Funktion. (Mit „shopt -s expand_aliases“ wird die Alias-Erweiterung aktiviert, doch die Aliase aus der Datei „.bashrc“ werden vom Skript dennoch nicht eingelesen; diese müssten dort erneut angegeben werden.)
In derselben Zeile
Bash löst den Alias erst vor dem Einlesen der gesamten Zeile auf. Wenn Sie ihn in einer Zeile erstellen und verwenden (alias x='...'; x), wird der zweite Befehl noch mit der alten Bedeutung ausgeführt. Im Test führte der auf diese Weise in einer Zeile angegebene und aufgerufene Alias zu der Fehlermeldung „command not found“. Geben Sie ihn stets in einer separaten Zeile ein.
Nach „sudo“
sudo ll
Das Wort nach „sudo“ wird von Bash nicht als Alias erkannt, sodass der Befehl mit der Fehlermeldung „command not found“ abbricht. Lösung: Legen Sie „sudo“ ebenfalls als Alias fest, mit einem Leerzeichen am Ende:
alias sudo='sudo '
Das abschließende Leerzeichen signalisiert Bash, dass auch das folgende Wort als Alias aufgelöst werden soll. Im Test wurde der Befehl „sudo ll -d /root“ damit erfolgreich ausgeführt.
6. Parameter: Es muss eine Funktion vorhanden sein
Der Alias ersetzt lediglich Text; er kann keinen Parameter in die Mitte einfügen. Das $1 im Alias bleibt leer, der Parameter wird an das Ende der Zeile gesetzt:
alias keres='grep -rn $1 /etc/hostname'
keres vps
grep: vps: No such file or directory
In diesem Fall erstellen Sie bitte eine Funktion (in derselben Datei, in der sich die Aliase befinden):
keres() {
grep -rn "$1" "${2:-.}"
}
„keres vps /etc“ sucht im Verzeichnis /etc, „keres vps“ sucht im aktuellen Verzeichnis. Bei Funktionen können die Parameter an beliebiger Stelle stehen, und es können mehrere Befehle hintereinander geschrieben werden.
Nützliche Tipps zum Server
alias ports='ss -tulpn' # figyelő portok
alias naplo='sudo journalctl -f' # rendszernapló élőben
alias hibak='sudo journalctl -p err -b' # hibák a legutóbbi indítás óta
alias meret='du -sh * | sort -h' # mappák mérete (a rejtetteket kihagyja)
alias lemez='df -h -x tmpfs -x devtmpfs' # szabad hely
alias frissites='sudo dnf upgrade --refresh' # rendszerfrissítés
Seien Sie vorsichtig beim Überschreiben bestehender Befehle (z. B. „alias rm='rm -rf'“): Auf einem anderen Rechner, auf dem dieser Alias nicht vorhanden ist, führt derselbe gewohnte Befehl etwas ganz anderes aus. Über die grundlegenden Befehle informiert der Artikel „Grundlegende Linux-Befehle für Anfänger“, über den Befehl „du“ der Artikel „Der Befehl du im Detail“ und über die Protokolle der Artikel „journalctl“.
Sie können eigene Aliase auf jedem Server einrichten, auf den Sie SSH-Zugriff haben: auf KVM-VPS-Servern mit vollständigen Root-Rechten und bei cPanel-Hosting-Paketen, die SSH enthalten, in der Datei „~/.bashrc“ Ihres eigenen Kontos.
