Wie kann ich meinen BASH-Verlauf so einstellen, dass er nach dem filtert, was ich bereits eingegeben habe?

9

Angesichts einer Geschichte von Befehlen:

1 pwd
2 mysql -u root -p
3 ps -ef | more
4 top
5 mysql -h 192.168.1.101 -u root -p

Wenn Sie den Aufwärtspfeil drücken, scrollen Sie durch alle diese Befehle. Ich habe es irgendwo zuvor gelesen (und auf meinem Arbeits-PC ausgeführt), dass Sie BASH so einrichten können, dass beim ersten Eingeben pund Drücken des Aufwärtspfeils nur alle Befehle im Verlauf gescrollt werden , die mit "p" beginnen. ( pwdund ps -ef | more). Wenn ich tippe und mysqldann Nach oben drücke, wird nur durch alle Befehle gescrollt, die mit "mysql" beginnen.

Ich möchte meinen Laptop so einstellen, dass er dies verwendet, aber ich kann die Anweisungen nicht wiederfinden.

Nikki Erwin Ramirez
quelle

Antworten:

11

Sie können die inkrementelle Suche in /etc/inputrc(für maschinenweite Änderungen) oder ~/.inputrc(nur für Ihr Benutzerkonto) konfigurieren .

Fügen Sie diese beiden Zeilen hinzu:

"\ e [A": Verlaufssuche rückwärts
"\ e [B": Verlaufssuche vorwärts
John T.
quelle
5
/etc/inputrcerfordert root zum Bearbeiten und nimmt maschinenweite Änderungen vor, ~/.inputrckann von normalen Benutzern bearbeitet werden und nimmt Änderungen nur für diesen Benutzer vor.
James Polley
7

Alternativ können Sie drücken, ctrl+Rum in den reverse-i-searchModus zu wechseln. Sie können dann mit der Eingabe beginnen und es wird die erste vorherige Zeile gefunden, die mit der von Ihnen eingegebenen Zeichenfolge übereinstimmt (dh geben Sie ein mund es wird zurückgesprungen mysql -h 192.168.1.101 -u root -p; dann geben Sie ein ound es wird zurück zu springen, ps -ef | moreda dies die erste Zeile mit moin ist.

Sie können ctrl+rerneut drücken, um vorher nach dem Match zu suchen (dh ctrl+r,my,ctrl+rSie gelangen zum vorletzten Befehl, der mit beginnt mysql).

Sie können mehr über die Suche in der Readline- Verlaufssuche , Befehle für die Interaktion mit dem Verlauf und darüber erfahren , wie Sie die Standard-Tastenkombinationen und das Verhalten in man bash(oder online ) ändern können.

James Polley
quelle
funktioniert auch in zsh
akira
1
Ja, ich benutze schon Ctrl+R. Aber manchmal muss ich, nachdem ich einen langen Befehl eingegeben habe, plötzlich alle ähnlichen Befehle überprüfen, die ich zuvor verwendet habe. Dies geschieht, wenn ich einen MySQL-Befehl eingebe und durch Befehle im Verlauf mit verschiedenen Parametern (Datenbanknamen, Ausgabedatei, Eingabedatei usw.) scrollen muss.
Nikki Erwin Ramirez