So selektiv navigieren Sie auf einem Linux-Terminal durch den Bash-Befehlsverlauf [Duplikat]

9

Jeder weiß (oder sollte es wissen!), Dass auf einem Terminal die Aufwärts- und Abwärtspfeiltasten verwendet werden, um durch den Verlauf der verwendeten Befehle zu navigieren.

Wenn Sie das Terminal täglich verwenden, besteht Ihr Befehlsverlauf wahrscheinlich aus einer langen Liste vieler verschiedener Befehle, wodurch die Navigation weniger einfach wird. Nehmen wir als Beispiel an, ich habe vor einem Monat das iwconfigmit einem bestimmten Satz von Parametern verwendet (wie gesagt, es ist nur ein Beispiel, ich muss mich jetzt nicht damit anlegen). Wie kann ich mich an diesen bestimmten Befehl erinnern? mit all seinen Argumenten und Parametern, ohne durch Hunderte von Verlaufsbefehlen zurück navigieren zu müssen?

Ich weiß, dass ich historyeine Liste der zuvor verwendeten Befehle verwenden und !nden Befehl n in dieser Liste erneut ausführen könnte , aber wenn der Verlauf größer wird, ist dies auch nicht sehr praktisch.

Das Ideal wäre, etwas zu haben, mit dem ich mit einem Hotkey durch den Verlauf navigieren kann, aber nur zwischen den Instanzen, die das enthalten, was ich bereits in der Befehlszeile eingegeben habe. iwconfigVerwenden Sie in meinem Beispiel nach der Eingabe einige Tasten (möglicherweise PgUp und PgDown?), um nur durch die Einträge zu navigieren, die mit iwconfig beginnen .

Wenn es nicht möglich ist, wäre es auch schön, eine Liste wie historydo zu drucken, die aber nur das enthält, was ich bereits eingegeben habe (ich vermute, dass historyund grepBefehl beteiligt sind, bin mir aber nicht sicher über die richtige Syntax); Die vorherige Hotkey-Lösung wäre jedoch die beste Option.

Sekhemty
quelle

Antworten:

12

Sie können den Verlauf mit Ctrl+ durchsuchen Rund dann die Suchzeichenfolge eingeben (z . B. iwzum Suchen iwconfig). Anschließend können Sie mit den Aufwärts- und Abwärtspfeiltasten weiterhin durch den Verlauf navigieren oder erneut Ctrl+ drücken R, um das vorherige Vorkommen zu ermitteln.

Stefan Seidel
quelle
Ich bin mir nicht sicher, ob ich verstanden habe, dass es funktioniert. Wenn ich Strg + R drücke und tippe iwconfig, wird mir eine Instanz angezeigt, die sie enthält (nicht unbedingt die aktuellste). Wenn ich jedoch die Pfeiltasten verwende, navigiert sie durch alle Elemente, nicht nur durch die Elemente, die die Zeichenfolge enthalten. Es scheint mir, dass es einen bestimmten Punkt im Verlauf auswählt, an dem die Navigation beginnen soll (anstatt wie bei der Aufwärts-Taste von unten zu beginnen), aber ansonsten ist die Navigation dieselbe wie immer. Habe ich etwas verpasst?
Sekhemty
Ich denke, dass es überhaupt nicht wichtig ist, aber nur für den Fall, ich benutze den konsoleTerminal-Emulator.
Sekhemty
Entschuldigung, ich habe meine Antwort zum Auffinden früherer Übereinstimmungen aktualisiert.
Stefan Seidel
5

Nach einigem Üben fand ich heraus, wie man die Problemumgehungslösung verwendet.

Ich habe die richtige Syntax zum Drucken einer gefilterten Liste gefunden, mit der ich es gemacht habe history | grep iwconfig(es war schließlich nicht so schwierig); Mit der Ausgabe kann ich !ndie jetzt einfach zu lesende gefilterte Liste verwenden.

Sekhemty
quelle
3
Ein zusätzlicher Trick: Verwenden !n:p. Dadurch wird der alte Befehl gedruckt, ohne ihn auszuführen, und er wird wieder in Ihren Verlauf aufgenommen. Gehen Sie dann mit einem einzigen Pfeil nach oben und jetzt können Sie es bearbeiten. Es gibt viele andere dumme Tricks wie diese: ss64.com/bash/history.html
Wandering Logic
3

Ich kann Stefans Antwort nicht kommentieren, aber normalerweise müssen Sie Strg + R gedrückt halten. Weitere Informationen finden Sie auf dieser Seite .

user2313067
quelle
2

Drücken Sie "Strg + R" und geben Sie die Suchzeichenfolge ein.

Wenn nicht der, den Sie suchen, dann wieder "Strg + r"

Wenn gefunden, drücken Sie die Eingabetaste, um es auszuführen, oder drücken Sie den Rechtspfeil ->, um es zu bearbeiten, bevor Sie es verwenden.

Santosh
quelle