(Reverse-i-Search) in Bash

26

Normalerweise verwende ich CTRL+ rfür (Reverse-i-Search). Manchmal übergebe ich jedoch den gesuchten Befehl. wenn ich es nochmal (reverse-i-search)mache findet es es nicht mehr. Ich gehe davon aus, dass der aktuelle Zeiger auf den Befehlsverlauf vor dem gesuchten Befehl liegt.

Weiß jemand, wie er zum aktuellsten Befehl im Verlauf zurückkehren kann, ohne 1000-mal auf die down arrowSchaltfläche klicken zu müssen ?

Mike
quelle
1
Die umgekehrte Suche ist eine Funktion von bash (und den Readline-Bibliotheken), daher habe ich den Titel und die Frage ein wenig bearbeitet, um das zu reflektieren.
Doug Harris
Wenn Sie über den gewünschten Befehl hinausgehen, CTRL+SHIFT+Rgehen Sie zurück
Ricky Robinson

Antworten:

7

Auf stackoverflow.com gibt es eine ähnliche Frage .

Die beste Antwort ist, Ctrl+Gdie aktuelle Suche abzubrechen.

Doug Harris
quelle
Das ist wirklich nicht die beste Antwort. Die beste Antwort ist die von Dennis Williamson: Fügen Sie sie stty -ixonin Ihre .bashrc(oder eine andere entsprechende Konfigurationsdatei) ein und gehen Sie dann Ctrl-Sin der Historie vorwärts, ähnlich wie beim Ctrl-GRückwärtsgehen. Erster Ctrl-STastendruck nach Ctrl-GÄnderung reverse-i-searchvon i-search, der nächste Ctrl-Smacht den ersten Schritt vorwärts. Dann macht jeder Ctrl-Snoch einen Schritt weiter.
Nrz
Wenn Sie die Suche bereits abgebrochen haben (z. B. durch Drücken von Esc oder einer Pfeiltaste), können Sie Esc drücken, gefolgt von '>'
Superole
38

Tatsächlich bietet eine andere Antwort auf diese Frage eine bessere Option.

Fügen ~/.bashrcSie folgende Zeile hinzu:

stty -ixon

Dann können Sie verwenden Ctrl- svorwärts durch die Geschichte auf die gleiche Art und Weise zu dem Schritt , wie Sie verwenden würden Ctrl- rnach hinten zu treten.

Dies funktioniert sogar, um beim Durchsuchen des Verlaufs eine neue Vorwärtssuche ( i-searchim Gegensatz zu reverse-i-search) zu starten . Angenommen, Sie tun dies Ctrl- rund geben einen Befehlstext in der Nähe Ihres Ziels ein. Drücken Sie dann mehrmals auf den Aufwärtspfeil, um das zu überschießen, wonach Sie wirklich gesucht haben (oder Sie haben es sich anders überlegt). Drücken Sie nun Ctrl- sund geben Sie einige Zeichen aus dieser Zeile ein. Zoooom! Direkt dorthin.

Bis auf weiteres angehalten.
quelle
2
Was bedeutet stty -ixon? Deaktiviert es etwas, das in anderen Situationen benötigt wird?
Gregory Pakosz
7
@GregoryPakosz: Deaktiviert XON / XOFF ( Software-Flusssteuerung ), die über die Tastatur nicht mehr verwendet werden kann, da die Kommunikationsgeschwindigkeit etwas höher als 300 Baud ist.
Bis auf weiteres angehalten.
danke, googelte für eine Weile und kam zu dem gleichen Schluss, es ist heute meistens nutzlos
Gregory Pakosz