Unix-Shells verfügen, ganz ähnlich wie Browser, über eine History genannte Aufzeichnung der zuletzt eingegebenen Befehle. Mit der Pfeiltaste nach oben können die letzten Befehle durchgescrollt werden. Die komplette Aufzeichnung lässt sich über die Eingabe von history
anzeigen und listet die neuesten Befehle am Schluss der Liste auf.
History Basics
Jedem Befehl ist eine Nummer vorangestellt über die sich der jeweilige Befehl durch ein vorangestelltes !
erneut ausführen lässt. So führt etwa die Eingabe von !22
den Befehl mit der Nummer 22 erneut aus. Mit !!
wird stets der letzte Befehl noch einmal ausgeführt. Diese Eingaben können auch ergänzt werden. Wurde etwa ein sudo
vergessen, lässt sich das schnell mit sudo !!
für den letzten Befehl ergänzen. Die history man-page listet eine Unzahl an weiteren Optionen auf, die für den effizienten Einsatz der Shell verwendet werden können. In meiner täglichen Arbeit nutze ich beispielsweise häufig den !$
Operator.
Dieser bezieht sich stets auf das letzte “Wort” eines Befehls. Hatte man etwa eine Datei per cat /etc/somefile.conf
angezeigt, ist sie direkt danach per vim !$
editierbar. In der man-page finden sich, wie gesagt, noch viele weitere Möglichkeiten mit der History umzugehen. Es ist aber vor allem wichtig, dass die Shortcuts auch ihren Weg ins Muskel-Gedächtnis finden. Denn nur wenn die verschiedenen Operatoren benutzt werden können ohne groß nachzudenken machen sie auch Sinn.
Mehr History durch .bashrc
Durch Einträge in die ~/.bashrc
1 kann man die Fähigkeiten der History erweitern und verbessern.
So ist es normalerweise üblich, dass die History nur nach einem sauberen exit der aktuellen Shell geschrieben wird. Stürzt die Shell ab oder hat man mehrere gleichzeitig geöffnete Fenster mit Shells2 ist die History verloren, oder kommt durcheinander oder steht nicht in allen Fenstern zur Verfügung. Diesem unhaltbaren Zustand ist glücklicherweise sehr einfach abzuhelfen. Durch das Hinzufügen von einer Zeile in der .bashrc
wird die History direkt nach jedem Kommando geschrieben und steht in anderen Fenstern zur Verfügung:
1
|
|
Mein absoluter Lieblingsschnipsel für die History-Erweiterung per .bashrc
ist dieser:
1
|
|
Hier wird eine Funktion namens h
definiert. Diese führt den oben erwähnten Befehl history
aus, wenn kein weiterer Parameter angegeben wird. Folgt nach dem h ein beliebiger String wird nach diesem in der Histroy gegrep
t. So wird etwa ein h cd
alle verwendeten cd
-Kommandos anzeigen.
Eine sehr praktische Sache.
Soll die Ausgabe der History ausserdem erweitert werden, so ist dieser Schnipsel zu verwenden:
1
|
|
Damit wird die Ausgabe der History um Datum und Uhrzeit der Befehle erweitert und ausserdem auf 50.000 Einträge erweitert.
Die vorgestellten Schnipsel können natürlich angepasst oder erweitert werden. Die Größe der History lässt sich auch ohne die Datumsangabe verwenden und es ist natürlich auch möglich nur das Datum oder nur die Uhrzeit zu verwenden…
Update, 09.04.2010
Ein weiterer Schnipsel aus einem Kommentar von Asmus:
1 2 |
|
Hierdurch ist es möglich einen Befehl, etwa cd
, zu tippen und dann mit den Pfeiltasten nur durch solche Befehle zu navigieren, die mit cd
beginnen. Total super!
Ich habe hier nur die Anführungszeichen korrigiert, diese wurden in Asmus Kommentar typografisch korrekt, aber .bashrc
untauglich angezeigt.