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

Loadtests ohne Server

Für Loadtests der eigenen Server bietet sich die Cloud an, denn kurz getaktet lassen sich dort viele Rechnerinstanzen starten, die das eigene Budget nur wenig belasten. Noch flexibler, günstiger und besser skalierbar sind Tests mit einer Serverless-Infrastruktur wie AWS Lambda. Wir führen vor, wie Sie dort mit Serverless Artillery eigene Loadtests starten. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018