STRG + R in der Shell - Wie komme ich zurück, wenn ich an dem gewünschten Befehl vorbeigehe?

4

Ich schlage fiebrig CTRL+ Reinige Befehle , den ich vor einer Weile verwendet zu finden, als ich plötzlich um es zu bekommen. Durch Reflex fahre ich fort, CTRL+ zu schlagen R, und gebe es für etwas weiter zurück in der Shell-Geschichte. Wie gehe ich zurück zu dem Befehl, den ich gerade übergeben habe, ohne die ganze Suche von vorne beginnen zu müssen?

Andrew
quelle
Strg + s soll (laut man bash) vorwärts suchen , aber anscheinend funktioniert das nicht bei der Mint- oder Ubuntu: / Bash-Verlaufssuche. Ein partieller + Aufwärtspfeil könnte für eine andere Lösung relevant sein.
DavidPostill

Antworten:

7

Die Funktion Ctrl+ Rzum Rückwärtssuchen des Shell-Verlaufs wird von der von Bash verwendeten Readline- Bibliothek bereitgestellt . Die entsprechende Funktion zum Vorwärtssuchen im Verlauf ist standardmäßig an Ctrl+ gebunden S.

Jedoch ist das Problem , dass die Terminal - Treiber bereits verwendet diese Tastenkombination für Flusssteuerung : Drücken Ctrl+ S stoppt oder unterbricht Text an das Endgerät gedruckt wird und Ctrl+ Q nimmt die Strömung von Zeichen an das Endgerät gesendet.

Diese Einstellungen sind für die meisten Endgeräte auf GNU / Linux-Systemen standardmäßig aktiviert, so dass Bash / Readline die Ctrl+ -Tastenfolge nie sieht S, da sie vom Terminaltreiber abgefangen und nie an die Shell weitergeleitet wird.

Dieses Verhalten (auch als XON / XOFF-Flusssteuerung bezeichnet ) kann durch Ausführen von deaktiviert werden:

stty -ixon

Jetzt wird die Tastenkombination Ctrl+ San Bash / Readline übergeben.

Alternative Tastenkombination

Wenn Sie möchten, dass Readline eine andere Tastenkombination für die Vorwärtssuche verwendet bind, aktivieren Sie mit dem Befehl eine andere Tastenzuordnung , z. B. Ctrl+ F(für Weiterleiten). NB: Alle Angebote sind erforderlich.

bind '"\C-f": forward-search-history'

Ändern Sie die Konfiguration, um diese Änderungen beizubehalten

Die Steuerung des Terminalflusses ist auf modernen Geräten nicht besonders nützlich. Daher würde ich empfehlen, den folgenden Befehl auszuführen, wenn ein neues Terminal oder Pseudo-Terminal gestartet wird:

stty -ixon

.bashrcWäre wahrscheinlich eine gute Startdatei, um diesen Befehl auszuführen, da die Datei für interaktive Bash-Shells bereitgestellt wird. Wenn dies .bashrcnicht durch .profileoder erfolgt .bash_profle, sollte der obige sttyBefehl zu der Startdatei hinzugefügt werden, die für die Login-Shells verwendet wird.

In der Readline-Konfigurationsdatei können .inputrcSie eine andere Tastenzuordnung verwenden, z. B. Ctrl+ F, um den Verlauf vorwärts zu durchsuchen :

bind "\C-f": forward-search-history

Ähnliche Links

Anthony Geoghegan
quelle
Was ist der Zweck der Bearbeitung der Readline-Konfiguration, wenn diese Tastenkombination die Standardeinstellung ist?
Andrew
@ Andrew Als ich das zum ersten Mal schrieb, war ich mir nicht zu 100% sicher, dass dies die Standardtastenkombination war. Ich hielt es für möglich, dass dies Ctrl-Svon den meisten Betreuern von Distributionspaketen konfiguriert wurde, und habe der Vollständigkeit halber die Readline-Konfigurationsdatei hinzugefügt. Ich werde es herausarbeiten, da es nicht notwendig ist und die Antwort länger dauert, als es sein muss.
Anthony Geoghegan