Wie durchläuft man die umgekehrte i-Suche in BASH?

Wie durchläuft man die umgekehrte i-Suche in BASH?

Im Terminal kann ich Ctrl+ eingeben R, um nach einem passenden Befehl zu suchen, der zuvor in BASH eingegeben wurde. Wenn ich beispielsweise Ctrl+ Rund dann eingebe grep, wird mein letzter Befehl aufgelistet grepund ich kann die Eingabetaste drücken, um ihn zu verwenden. Dies gibt jedoch nur einen Vorschlag. Gibt es eine Möglichkeit, durch andere zuvor eingegebene passende Befehle zu blättern?

Antwort1

CtrlWenn ich die Frage richtig verstehe, sollten Sie durch wiederholtes Drücken von + durch die Alternativen blättern können R.

Z.B:

  • Ctrl+R
  • grep
  • Ctrl+R
  • Ctrl+ R ...

Damit wird Ihr Verlauf rückwärts durchsucht. Um stattdessen vorwärts zu suchen, verwenden Sie Ctrl+ S, aber Sie müssen vorher möglicherweise set: stty -ixon(entweder per oder manuell) verwendet haben, um die XON/XOFF-Funktion zu deaktivieren, die + übernimmt . Wenn dies trotzdem passiert, verwenden Sie + , um die Bildschirmausgabe wieder zu aktivieren (Weitere Details.bash_profileCtrlSCtrlQHier.)

Antwort2

Wenn Sie meinen, dass der Befehl häufig verwendet wird, können Sie ein Tag hinzufügen

command #useful

Dann

Ctrl+R #useful

Dies funktioniert, weil #es sich um ein Kommentartrennzeichen handelt, d. h. alles, was nach dem Symbol kommt, wird nicht als Befehl interpretiert. Es wird jedoch in der Historie aufgezeichnet und ist somit durchsuchbar.

Antwort3

Sie können die Auf- und Abwärtspfeile auch so einrichten, dass eine etwas andere Suche durchgeführt wird, indem Sie diese Zeilen zu ~/.inputrc hinzufügen:

"\e[A": history-search-backward
"\e[B": history-search-forward

Anstatt irgendwo im Befehl nach einer Teilzeichenfolge zu suchen (wieCtrl-r) wird nach einem Befehl gesuchtbeginnend mit dem Text links vom Cursor. Wenn ich beispielsweise diese Befehle ausführe:

$ ls bart
$ ls fools

Geben Sie dann ein lsund drücken Sie Upzweimal. Es wird angezeigt ls bartund der Cursor befindet sich an derselben Stelle. Vergleichen Sie mit Ctrl- r, wo das Zweifache in der letzten Zeile gefunden würde ls. Sie müssten also noch einmal drücken, um die vorherige Zeile zu finden.

Beide Ansätze haben ihre Stärken und können viel Zeit sparen.

Antwort4

Es gibt einen Ersatz für eingebaute Ctrl + Rgenannthstr. Es ermöglicht unter anderem, den Befehlsverlauf nach allen Suchtoken gleichzeitig zu durchsuchen und mit den Pfeiltasten durch die Ergebnisse zu blättern:

Beispiel

Hier ist einDemo-Screencast.

Es kann auf einem Betriebssystem der Debian-Familie wie den folgenden installiert werden:

add-apt-repository ppa:ultradvorka/ppa
apt-get update
apt-get install hstr

hstr --show-configuration >> ~/.bashrc

Und dann verwenden Ctrl + R(nach erneutem Öffnen des Terminals).

verwandte Informationen