ADMIN-Tipp: Bash-History mit Ausrufezeichen

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Die Bash-History hilft dem Gedächtnis mit Ausrufezeichen auf die Sprünge!

Faulheit gehört zu den Kernkompetenzen eines guten Admins. Wer einen Bash-Befehl ein zweites Mal benutzen möchte, gibt ihn nicht erneut ein, sondern ruft ihn aus der Bash-History ab. Mit dem geschickten Einsatz des Ausrufezeichens reduziert sich die Tipperei auf ein Minimum.

Der Befehl "!100" führt den Befehl an Position 100 im von "history" ausgegebenen Bash-Protokoll erneut aus. Man kann ebenso von hinten zählen und etwa mit "!-5" das fünft-letzte Kommando wiederholen. Die letzte Eingabe wiederholt "!!"; das Ergebnis lässt sich auch variabel in eine neue Befehlszeile einbinden, um beispielsweise mit "sudo !!" die letzte Eingabe mit sudo-Rechten auszuführen.

Das Ausrufezeichen erlaubt auch den gezielten Zugriff auf die einzelnen Argumente eines zuvor abgesetzten Befehls. "!$" ruft das letzte Argument des vorhergegangenen Befehls ab, zum Beispiel listet man so den Inhalt eines Verzeichnisses auf und wechselt dann in selbiges:

$ ls dir1/ dir2/
dir1/:
file1 file2
dir2/:
file3 file4
$ cd !$
cd dir2/

Analog dazu greift "!^" aus das erste Argument der letzten Befehlszeile zu:

$ ls dir1/ dir2/
dir1/:
file1 file2
dir1/:
file3 file4
$ cd !^
cd dir1/

Wer ein Argument an anderer Position wieder aufgreifen möchte, definiert jene mit einem Doppelpunkt vor der Positionsnummer und nach dem Ausrufezeichen, zum Beispiel:

$ ls dir1/ dir2/ dir3/
dir1/:
file1 file2
dir2/:
file3 file4
dir3/:
file5 file6
$ ls !:2
ls dir2/
dir2/:
file3 file4

Beim Rückgriff auf etwas länger zurückliegende Kommandos spart man sich das Durchsuchen des Bash-Protokolls, wenn man noch weiß, wie der ausgeführte Befehl selbst hieß. Man führt ihn einfach mit denselben Argumenten mit "!<Befehl>" erneut aus:

$ ls dir1/
file1 file2
$ touch dir1/file3
$ !ls
ls dir1/
file1 file2 file3

Es gibt zudem stets die Möglichkeit, die verschiedenen Kurzzugriffe auf Befehle und Argumente zu kombinieren, zum Beispiel:

$ ls dir1/ dir2/ dir3/
dir1/:
file1 file2
dir2/:
file3 file4
dir3/:
file5 file6
$ cd !ls:2
cd dir2/
22.10.2013

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2021