Im Terminal kann ich CTRL-Reingeben, um nach einem passenden Befehl zu suchen, der zuvor in BASH eingegeben wurde. Wenn ich zum Beispiel, geben Sie CTRL-Rdann grep
ist Listen mein letzter grep
Befehl, und ich kann drücken Sie die Eingabetaste , es zu benutzen. Dies ist jedoch nur ein Vorschlag. Gibt es eine Möglichkeit, andere zuvor eingegebene Übereinstimmungsbefehle durchzugehen?
443
CTRL+SHIFT+r
funktioniert bei mir nicht.[[ $- == *i* ]] && stty -ixon
zu Ihrer .bashrc- Datei hinzufügen und arbeiten dannCTRL+s
wie die Rückseite vonCTRL+r
Wenn Sie der Meinung sind, dass der Befehl häufig verwendet wird, können Sie ein Tag hinzufügen
Dann
Dies funktioniert, weil
#
es sich um ein Kommentar-Trennzeichen handelt, dh alles, was nach dem Symbol kommt, wird nicht als Befehl interpretiert. Es wird jedoch in der Historie aufgezeichnet und ist somit durchsuchbar.quelle
Sie können auch die Aufwärts- und Abwärtspfeile einstellen, um eine etwas andere Suche durchzuführen, indem Sie diese Zeilen zu ~ / .inputrc hinzufügen:
Anstatt irgendwo im Befehl nach einer Teilzeichenfolge zu suchen (wie Ctrl-r ), wird nach einem Befehl gesucht, der mit dem Text links vom Cursor beginnt . Wenn ich zum Beispiel folgende Befehle ausführe:
Geben Sie dann ein
ls
und drücken Sie Upzweimal, es wirdls bart
und der Cursor an derselben Stelle angezeigt. Vergleichen Sie mit Ctrl- r, wo es dasls
Doppelte in der letzten Zeile finden würde, also müssten Sie es noch einmal drücken, um die vorherige Zeile zu finden.Beide Ansätze haben ihre Stärken und können viel Zeit sparen.
quelle
~/.inputrc
diese beiden Zeilen nicht erstellen und hinzufügen müssen.~/.inputrc
die beiden Zeilen einschließlich der History-Suche *Es gibt einen Ersatz für eingebaute Ctrl + Rnamens hstr . Sie können den Befehlsverlauf nach allen Suchtoken gleichzeitig durchsuchen (unter anderem) und mit den Pfeiltasten durch die Ergebnisse blättern:
Hier ist ein Demo-Screencast .
Es kann auf einem Betriebssystem der Debian-Familie wie folgt installiert werden:
Und dann verwenden Ctrl + R(nach dem erneuten Öffnen des Terminals).
quelle