Faul sein mit alias

Seit ich mit Linux im Allgemeinen und KANOTIX im Besonderen unterwegs bin, erledige ich administrative Aufgaben wie zum Beispiel die anstehenden Systemaktualisierungen beinahe ausschließlich im Terminal. Dabei muss ich etliche Tastenanschläge leisten, was auch schon mal in Arbeit ausarten kann:

# apt-get update && apt-get dist-upgrade

Die auto completion-Funktion der Bash, also das Vervollständigen einer Eingabe durch Drücken der Tab-Taste funktioniert erst, wenn eine eindeutige Eingabe vorliegt, und gerade bei apt-get ist sie nicht wirklich hilfreich, denn sie funktioniert erst, wenn ich apt-get upd eingetippt habe. An der Stelle kann ich dann die Tab-Taste drücken und spare mir tatsächlich zwei Anschläge…

Mit alias gibt es eine elegante Lösung. Der Name sagt dabei schon alles aus über den Zweck dieses kleinen Werkzeugs: Rufe ein Kommando mit einem anderen Namen auf. Sehr sinnvoll ist eine Anwendung immer dann, wenn lange Kommandofolgen oder Kommandos mit einer Reihe schwer zu merkender Optionen einzugeben sind.

# alias dup='apt-get update && apt-get dist-upgrade'

Diese Zeile versetzt mich in die Lage, durch Eingabe von dup das gleiche Ergebnis zu erzielen, wie es die lange Zeile bringt.
Solange diese Shell geöffnet ist, kann ich diesen Alias benutzen. Das macht nun wiederum keinen großen Sinn, denn ich benutze diese Kommandofolge höchstens einmal am Tag, und wenn ich dafür auch noch den Alias anlegen soll, kann ich mir das sparen und die Kette auch gleich so eingeben.

Um einen Alias dauerhaft einzurichten, schreibt man ihn in die betreffende Benutzer-Konfigurationsdatei für die Bash, die sich im Homeverzeichnis des jeweiligen Benutzers befindet. Da apt-get root-Rechte erfordert, ist es hier das Homeverzeichnis von root, also /root. Die Datei heißt /root/.bashrc. Mit einem Editor (und den entsprechenden Rechten) geöffnet, kann ich nun die passende Zeile eintragen.
Es geht natürlich auch ganz fix, wenn man als root auf der Konsole ist, dann kann man die Zeile auch bequem einfach anhängen:

# echo "alias dup='apt-get update && apt-get dist-upgrade'" >> /root/.bashrc

Damit dieser Alias zur Verfügung steht, muss ich mich nur noch von der Shell abmelden und neu anmelden, und schon kann ich jede Menge Tipparbeit sparen.

Für einen „normalen“ Benutzer funktioniert das natürlich auch mit allen Kommandos, die er ausführen darf. Es ist also nicht nötig, für einen Einzeiler gleich ein Shell-Skript zu schreiben. Auch hier genügt es, den Alias in die Datei ~/.bashrc einzutragen, das Terminalfenster zu schließen und neu zu starten, also nur das Terminalfenster, nicht den ganzen Rechner.

Was passiert, wenn man einen Aliasnamen verwendet, der bereits als Bash-Kommando im System vorhanden ist? Nichts schlimmes, er wird funktionieren, der Alias. Will man das ursprüngliche Bash-Kommando ausführen, benutzt man folgende Schreibweise:

$ 'kommando'

Wie komme ich gerade jetzt darauf? Ganz einfach, die Konfiguration der Bash und der Umgang mit alias ist Prüfungsthema für die LPI-102.

4 Gedanken zu „Faul sein mit alias

  1. Hallo, dein Beitrag erinnert mich an ein lästiges Problem: Ich habe mir sagi=„sudo apt-get install “ als alias eingerichtet. (Du hättest noch erwähnen können, dass ein Leerzeichen in den Hochkommata dafür sorgt, dass dem alias Nachfolgendes mitverarbeitet wird.) Leider funktioniert hier aber keine Autovervollständigung mehr für die Paketnamen. Gibts da ein Tipp/Work-around?

    • Ein Aufruf des Alias mit einem zu übergebenden Parameter klappt auch ohne das Leerzeichen, denn die Bash interpretiert das schon richtig.
      In der manpage der Bash steht unter dem Stichwort „Completing“, dass die Bash Variablennamen (beginnend mit $), Usernamen (falls der Text mit ~ beginnt), Hostnamen (beginnend mit @) und Kommandos inklusive Funktionen und Aliasen ergänzen kann. Paketnamen, zumal von noch nicht installierten Paketen, gehören leider nicht dazu.

    • Ich hatte da was bzgl. folgendem Leerzeichen durcheinandergehauen, für weiteres am besten im ubuntuusers-Wiki den alias-Artikel lesen. Und doch besteht das beschriebene Problem: Zumindest bei mir unter Xubuntu 13.04 vervollständigt er auch wenn ich sowas eingebe: „sudo apt-get install syna“ mit den Vorschlägen synapse, synaptic usw. Aber durch den alias geht dieses (vermutlich Ubuntu-spezifische) Feature kaputt.

      • Danke für den Hinweis.
        Offenbar handelt es sich tatsächlich um eine Ubuntu-Eigenheit, denn bei mir und meinem Eigenbau-Kanotix klappt die Auto-Vervollständigung von Paketnamen nicht. Allerdings steht in der Kurzbeschreibung von bash-completion auch, dass es sich um eine „Programmierbare Vervollständigung für die Bash-Shell“ handelt, daher scheint es mir durchaus möglich, dass da jemand bei Ubuntu etwas Arbeit investiert hat.

Die Kommentarfunktion ist geschlossen.