Bash: Aliase permanent setzen
Für viele ist sie das Schreckgespenst, für manche aber ein Segen. Es geht um den unter Linux wohl bekanntesten Kommandozeilen-Interpreter, die “Bourne-again shell” oder kurz “Bash”. Hat man sich erst an die Arbeit mit der Shell gewöhnt und die Grundlagen drauf, so möchte man sie nicht mehr missen, weil sie Vieles doch schneller realisierbar macht als eine GUI. Zudem lassen sich mit Shell-Scripts Vorgänge ganz wunderbar automatisieren. So weit die schöne Seite der Shell.
Wäre da nur nicht immer dieses Getippe der Befehle und der Parameter! Oft hat man nicht alle Parameter eines Befehls im Kopf und muss noch vorher umständlich die Hilfe zum Befehl aufrufen. Doch zum Glück gibt es die “Aliase”. Hier nur zwei Beispiele, wie sich viel Tipp-Arbeit ersparen und zusätzliche Sicherheit bzw. zusätzlicher Komfort erreichen lässt.
Beispiel für APT
Wer es leid ist bei der Überprüfung nach Updates aus der Shell heraus immer wieder folgendes zu tippen:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
der kann mit folgenden zwei Zeilen:
alias apt-upd=’sudo apt-get update’
alias apt-ugd=’sudo apt-get upgrade’
alias apt-dugd=’sudo apt-get dist-upgrade’
folgendes daraus machen:
apt-upd
apt-ugd
apt-dugd
Denkbar, aber nicht unbedingt empfehlenswert, ist auch eine extreme Kürzung, die für alle drei Zeilen nur noch einen Alias vorsieht:
alias apt-allupd=’sudo apt-get update && sudo apt-get dist-upgrade’
Somit würde eine Eingabe von:
apt-allupd
genügen, um alle Quellen des lokalen Repository zu aktualisieren und sämtliche verfügbaren Upgrades zu installieren.
Beispiel für Datei-Operationen (cp + rm)
Ein anderer Fall ist das Löschen von Dateien. Der Löschbefehl rm unter Linux macht, was ein jeder Löschbefehl unter einem UNIX-kompatiblen Betriebssystem tut: Er löscht, was man ihm zum Löschen vorgibt, und zwar ohne Rückfrage. Wer sich schon mal darüber geärgert hat, weil er/sie zu voreilig etwas gelöscht hat oder womöglich mit Root-Rechten in einem System-Verzeichnis gewütet hat, der kann das Löschen in Zukunft etwas sicherer und zugleich komfortabler machen.
Der folgende Alias:
alias rm=’rm -r —interactive=always’
verändert den ursprünglichen Löschbefehl nicht, sondern überdeckt ihn lediglich mit einem Alias, der dafür sorgt, dass auch Verzeichnisse gelöscht werden und vor jedem Löschen einer Datei eine Abfrage erfolgt. Wem das zu penetrant ist, der kann rm auch anweisen nur einmal vor dem Löschen aller Dateien nachzufragen:
alias rm=’rm -r —interactive=once’
Wer mag, kann aus dem Löschbefehl rm auch einen anderen Befehlsnamen mit gleicher Wirkung “kreieren” und in Zukunft delete statt rm eingeben, wenn dies denn leichter merkbar sein sollte:
alias delete=’rm’
Ähnlich kann auch die Arbeit mit dem Kopierbefehl cp sicherer und komfortabler gestaltet werden. Wer Angst hat versehentlich eine bereits existierende Datei zu überschreiben und es leid ist, ständig den Parameter -r für das Kopieren von Verzeichnissen anzugeben, kann folgenden Alias für cp setzen:
alias cp=’cp -ri’
Damit werden nun standardmäßig auch Verzeichnisse kopiert und vor dem Überschreiben einer Datei wird nachgefragt. Wer nochmals auf Nummer sicher gehen möchte, kann noch zusätzlich Backups von existierenden Dateien anlegen lassen:
alias cp=’cp -ri —backup’
Somit wird vor dem Überschreiben der existierenden Datei eine Kopie der Datei mit dem Dateinamen DATEINAME~ angefertigt.
Die Benutzung beider Befehle geschieht wie gewohnt weiter.
Aliase permanent setzen
Das Setzen der Aliase erfolgt bisher jedoch nur temporär. Soll heißen: Sobald das Terminal-Fenster geschlossen wird, sind auch die Aliase aus dem Speicher und somit wieder vergessen. Wer sie dauerhaft setzen möchte, hat zwei Möglichkeiten.
Wechseln wir zunächst in das Heimatverzeichnis, falls nicht schon geschehen und öffnen die Konfigurations-Datei für die Bash:
cd ~
gedit .bashrc
Irgendwo ziemlich weit unten, sofern die Datei nicht bereits verändert oder erweitert wurde, sollte sich folgender Textblock finden:
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
Unter diesem Block können nun alle Aliase eingetragen werden. Dies geschieht genauso, wie wir die Aliase bereits in der Shell gesetzt haben, zum Beispiel:
alias delete=’rm -r —interactive=always’
alias cp=’cp -ri’
alias apt-upd=’sudo apt-get update’
alias apt-ugd=’sudo apt-get upgrade’
alias apt-dugd=’sudo apt-get dist-upgrade’
Ich persönlich bevorzuge und empfehle jedoch eine andere Variante, bei der sich die Aliase einfacher auf andere Benutzer und Systeme übertragen lassen und bei der die .bashrc vor Änderungen unberührt bleibt. Dazu öffnet man ebenfalls, wie oben beschrieben, die Konfigurations-Datei der Bash – die .bashrc – und sucht unter dem vorhin genannten Textblock nach folgenden drei Zeilen:
#if [ -f ~/.bash_aliases ]; then
# . ~/.bash_aliases
#fi
Diese sind am Zeilenanfang mit einem Nummerzeichen, einem #, auskommentiert. Nach dem entfernen der drei Nummerzeichen speichert man die Datei und legt in der Shell eine neue Datei an:
gedit .bash_aliases
Hier kann man nun wie auch eben all seine bevorzugten Aliase eintragen und die Datei abspeichern.
In jedem Falle gelten die hier gesetzten Aliase für die jeweiligen Benutzer, bei denen die Datei(en) geändert wurde(n). Alle übrigen Benutzer bleiben davon unberührt. Zum Übernehmen der Aliase muss in beiden Fällen das Terminal neu gestartet werden.
Aliase entfernen
Aliase lassen sich natürlich auch entfernen – sowohl temporär angefertigte Aliase, wie auch permanente. Das geschieht mit folgendem Befehl:
unalias [ALIASNAME]
Also zum Beispiel:
unalias apt-allupd
unalias apt-upd
unalias apt-ugd
unalias apt-dugd
unalias cp
unalias rm
Bei permanenten Aliases sollte man allerdings beachten, dass diese sich auf diese Weise nur vorübergehend entfernen lassen. Wer sie dauerhaft löschen möchte, muss sie aus der .bashrc bzw. der .bash_aliases löschen.
Ein gut gemeinter Rat
Aliase haben jedoch einen Nachteil. Durch die ständige Benutzung der Aliase läuft man Gefahr den Umgang mit den Befehlen zu verlernen. Zudem gibt es noch das Problem, dass nicht auf allen Rechnern die selbst gesetzten Aliase existieren – dies gilt besonders für fremde Rechner. Außerdem sollte man darauf achten, nicht bereits “reservierte” Befehls- oder Programm-Namen zu benutzen. In der Regel wird ein Alias nämlich einem vorhandenem Programm-Namen vorgezogen. Dazu ein Beispiel:
alias echo=’la -la’
Führt man nun den Befehl echo aus, so stellt man fest, dass nicht der erwartete echo-Befehl dahinter steckt, sondern eben der Befehl für die Auflistung aller im aktuellen Verzeichnis sich befindenden Dateien, mit Angabe der detaillierten Datei-Informationen.
Auch wenn man selbst bestimmte Befehle nicht nutzt, so sollte man es vermeiden diese mit einem permanenten Alias zu überdecken, da andere Scripte diese Befehle eventuell nutzen möchten. Manchmal werden aber auch erst Aliase gesetzt und irgendwann später Programme installiert, die über den selben Namen aufgerufen werden. In diesem Falle gilt es zunächst seine gesetzten Aliase zu überprüfen.