Such-Bash-Verlauf kann nicht wie bei STRG-r weitergeleitet werden

203

Ich versuche, meine Bash-Geschichte ähnlich wie mit CTRL- zu durchsuchen r, aber die Richtung weiterzuleiten.

Es war ein Schmerz für mich, wenn ich nur einmal zu oft schlug CTRL- rden vorherigen Befehl wieder zu finden.

Wie können Sie Ihren Bash-Verlauf ähnlich wie bei der Rückwärtssuche vorwärts durchsuchen?

Léo Léopold Hertz 준영
quelle

Antworten:

320

Sie können auch vorwärts suchen. Aus dem Bash-Info-Handbuch " 8.2.5 Suchen nach Befehlen im Verlauf ":

Geben Sie ein, um im Verlauf nach einer bestimmten Zeichenfolge rückwärts zu suchen C-r. Durch das Eingeben von C-sSuchvorgängen wird der Verlauf weitergeleitet.

Das Problem mit Strg-S ist jedoch, dass es manchmal mit der XON / XOFF-Flusssteuerung kollidiert (z. B. in Konsole). Die Suche ist jedoch eine Readline-Funktion, und Sie sollten sie an einen anderen Schlüssel binden können. Update: Einfacher und besser ist es, XON / XOFF durch Ausführen zu deaktivieren

stty -ixon
hlovdal
quelle
4
Das ist großartig, aber ich füge meinem .profile stty -ixon hinzu und es scheint nicht für neue Tabs zu funktionieren. Irgendwelche Ideen, wie das funktioniert? Ich würde es lieben, wenn XON / XOFF standardmäßig deaktiviert wäre.
John Gallagher
13
Falls jemand anderes das gleiche Problem hat wie ich - wenn Sie dies zu .profile hinzufügen, wird es nicht wirksam. Nur wenn Sie es dem .bash_profile hinzufügen, geschieht die Magie! Vielen Dank für einen tollen Tipp - das hat mich seit Jahren verrückt gemacht.
John Gallagher
12
@ JohnGallagher Wichtig zu beachten ist, dass .bash_profileund .profilenur für Login-Shells bezogen werden. Ich würde dies eingeben .bashrc(aus dem ich beziehe .profile).
Victor Zamanian
13
[[ $- == *i* ]] && stty -ixonkann verwendet werden, um das hier beschriebene
mMontu
3
Wenn Sie PuTTY verwenden und nicht .bash_profileauf jedem Computer, mit dem Sie eine Verbindung herstellen, warten können / wollen , ist diese Antwort im Superuser ein Vergnügen.
Fazy
41

Der beste Trick, den IMHO mit pgupund ermöglicht pgdown. steck das einfach in deine~/.inputrc

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

Abmelden / Anmelden, geben Sie die ersten Buchstaben ein und suchen Sie dann pgupoder pgdownim gesamten Verlauf

ctrl-R Durchsuchen Sie alle Zeilen, die Wörter enthalten, während Suchzeilen mit Verlaufssuche vorwärts beginnen, die mit Wörtern beginnen

Eric Burghard
quelle
2
Sie können diese beiden Zeilen auch auskommentieren /etc/inputrc(z. B. in Ubuntu).
Falconepl
2
Ich ziehe es vor, dies an den Aufwärts- und Abwärtspfeil zu binden: "\ e [A": Verlaufssuche rückwärts und "\ e [B": Verlaufssuche vorwärts
shmup
Was ist, wenn dies bei Bash keine Auswirkung hat?
Sören
26

Vielleicht möchten Sie https://github.com/dvorka/hstr ausprobieren, das das Filtern des Bash-Verlaufs im "Box-Stil" mit (optionaler) metrikbasierter Reihenfolge ermöglicht, dh es ist sowohl in Vorwärts- als auch in Rückwärtsrichtung viel effizienter und schneller:

Geben Sie hier die Bildbeschreibung ein

Es kann leicht sein gebunden an Ctrl-rund / oderCtrl-s

Martin Dvorak
quelle
5
Ich bin verliebt. Schnelle Anweisungen zur Installation unter Ubuntu:sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
CivFan
14

Normalerweise drücke ich das ESCTerminal ein und dann das >. Es setzt zumindest und dann könnte man versuchen , weniger klicken zu oft CTRL+ R.

Eyad Ebrahim
quelle
s / click / press / Außerdem müssen Sie zweimal die Esc-Taste drücken (zum ersten Mal, um der Rückwärtssuche zu entkommen).
Croad Langshan