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/