Beste Möglichkeit, den Shell-Verlauf zu durchsuchen

Beste Möglichkeit, den Shell-Verlauf zu durchsuchen

Gibt es eine bessere Möglichkeit, meine Verlaufsdatei nach einem Befehl zu durchsuchen als grep? Ich habe zwar eine ungefähre Vorstellung davon, wie der Befehl beginnt, aber ich weiß nicht, wie weit er im Verlauf zurückliegt.

aktualisieren:war früher zsh-spezifisch, aber aufgrund überlappender Antworten können Sie hier gerne für jede Shell (oder jeden Modus (vi/emacs)) antworten. Geben Sie einfach an, ob es spezifisch ist.

Antwort1

Ctrl+ Rist in der Regel der beste Weg, daDeskriptor sagte. Sie können auch verwenden !string, wodurch der letzte Befehl ausgeführt wird, der mit beginnt string, oder !?string?, wodurch der letzte Befehl ausgeführt wird, der enthält string.

(Ich denke, das ist das einzige, was für diese Frage relevant ist, aber ich habe viel mehr der Verlaufsbefehle indiese Antwort)

Antwort2

Wenn Sie Bash verwenden, geben Sie Control- ein Rund beginnen Sie dann mit der Eingabe. Wenn Sie nach der Texteingabe wiederholt Control- Reingeben, gelangen Sie zurück zu den entsprechenden Befehlszeilen.

Antwort3

Wenn Sie Folgendes hinzufügen zu~/.inputrc

"\e[5~": history-search-backward
"\e[6~": history-search-forward

und Bash neu starten. Sie können mit der Eingabe beginnen und dann Page Upund verwenden Page Down, um sich vorwärts und rückwärts durch den Verlauf der Zeilen zu bewegen, die mit demselben Präfix beginnen, das Sie gerade eingegeben haben.

(Manche bevorzugen möglicherweise die Verwendung von \e[Aund , wodurch die normalen Aktionen und \e[Bersetzt werden, anstatt neue Tasten zu binden.)UpDown

Antwort4

Die interaktive Eingabeaufforderung, die durch Ctrl- aufgerufen wird R, wie bereits erwähnt, ist der bequemste Weg. Darüber hinaus ist es beliebt, die UpPfeiltasten neu zu belegen Down, um den Verlauf nach einem Präfix zu durchsuchen, das sich derzeit in der Befehlszeile befindet. Dies erfordert jedoch einigeÄnderungen an der ~/.inputrcDatei.

Die klassische und weniger interaktive Lösung ist die Verwendung der Shell-History-Erweiterung.

!foo

führt den letzten Befehl aus, der mit foound beginnt

!?foo

führt den letzten Befehl aus, der enthält foo. Weitere Informationen zur Verlaufserweiterung finden Sie imBash-Referenzhandbuch, vorausgesetzt, Ihre Shell ist Bash oder kompatibel.

verwandte Informationen