Konfigurieren Sie den Aufwärtspfeil zum Durchsuchen von Befehlen mit denselben Anfangsbuchstaben anstelle aller vorherigen Befehle

15

Auf der bashBefehlszeile, gibt mir den vorherigen Befehl. In den Befehlszeilen in numpyoder matlab, wenn ich ein paar Zeichen eingebe, wird der zuvor eingegebene Befehl angezeigt, der mit diesen Zeichen beginnt . Wie kann ich genau dieses Verhalten aktivieren bash?

Ich kenne fortgeschrittenere Methoden zum Durchsuchen des Befehlszeilenverlaufs, aber manchmal ist eine einfache Methode praktischer.

Gerrit
quelle

Antworten:

17

Die Readline-Befehle, nach denen Sie suchen, sind die folgenden history-search-*:

history-search-forward Durchsucht vorwärts
den Verlauf nach der Zeichenfolge zwischen dem Beginn der aktuellen Zeile und der aktuellen Cursorposition (dem Punkt). Dies ist eine nicht inkrementelle Suche.
history-search-backward Durchsucht den Verlauf rückwärts
nach der Zeichenfolge zwischen dem Anfang der aktuellen Zeile und dem Punkt. Dies ist eine nicht inkrementelle Suche.

Binden Sie diese in Ihre .inputrc, so:

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

können Sie die ersten Zeichen eines Befehls eingeben und dann die Verwendung Upund DownSchlüssel nur in diese Befehle bewegen durch Ihre , .bash_historydie mit dieser Zeichenkette beginnen.

Wenn Sie beispielsweise viund Upeingeben, gelangen Sie zum ersten vorherigen Befehl, der mit " vilike" beginnt vim somefile. Wenn UpSie eingeben , gelangen Sie zur nächsten vorherigen Instanz und so weiter.

Weitere Informationen zu allen Readline-Bindungen finden Sie hier: http://linux.about.com/library/cmd/blcmdl3_readline.htm

jasonwryan
quelle
9

Fügen Sie Folgendes zu Ihrer .inputrc in ~ / hinzu, um das zu tun, was Sie vorgeschlagen haben:

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

Vielleicht möchten Sie Ihrem .bash_profil auch Folgendes hinzufügen:

export INPUTRC=~/.inputrc
johankj
quelle
Können Sie erläutern, warum dieser "Export" erfolgt?
Texnic
2

Ein "!" Voranstellen zu dem Befehl, den Sie suchen. Wenn Sie die Funktionalität der Aufwärts- und Abwärtspfeile ersetzen möchten, müssen Sie die inputrc-Datei (wie in den anderen Antworten vorgeschlagen) ändern.

Wenn "Befehl" der gesuchte Befehl ist, geben Sie Folgendes ein:

!comm

Sie sollten "Befehl" als Ausgabe erhalten.

Wenn Sie einen Befehl suchen möchten, der einen Teil des Befehls enthält (aber möglicherweise nicht damit beginnt), drücken Sie ebenfalls Strg + R und geben Sie dann einen Teil des Befehls ein.

Sie können auch "tab" eingeben, um den eingegebenen Text automatisch zu vervollständigen (dies schließt auch Dateien ein). Dies ist nützlich, wenn Sie einen Befehl suchen, der nicht in Ihrem Verlauf enthalten ist (oder wenn Sie keine Verlaufsdatei haben).

Weitere Informationen zum "Mastering" der Verlaufsdatei finden Sie hier: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/

Dies ist ein mögliches Duplikat von /programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-ready-on-the-line

Realität
quelle
Die anderen Antworten beantworten meine Frage korrekter, aber danke für den Hinweis auf SO (siehe auch meta.stackexchange.com/q/4708/172266 ).
Gerrit