Gibt es eine bessere Möglichkeit, meine Verlaufsdatei nach einem Befehl zu durchsuchen als grep? Ich habe eine Vorstellung davon, wie der Befehl beginnt, aber ich weiß nicht, wie weit er in der Vergangenheit zurückliegt.
update: war früher zsh-spezifisch, kann aber aufgrund überlappender Antworten jederzeit für eine Shell (oder einen Modus (vi / emacs)) beantwortet werden.
shell
command-history
Xenoterracid
quelle
quelle
<kbd>Ctrl+R</kbd>
. AntwortquelleWenn Sie Bash verwenden, geben Sie Control- ein Rund beginnen Sie dann mit der Eingabe. Typing Control- Rimmer wieder nach einigem Text eingegeben werden Sie zurück in passenden Befehlszeilen bewegen.
quelle
Ich bin mir nicht sicher, ob dies helfen wird, aber ich verwende es gerne ctrl- rund beginne dann, den Befehl einzugeben. Es sollte durch Ihre Geschichte gehen und Sie mit dem ersten Match präsentieren. So wechseln Sie durch die Spiele einfach auf ctrl- rwieder.
quelle
Wenn Sie Folgendes hinzufügen
~/.inputrc
Wenn Sie Bash neu starten, können Sie mit der Eingabe beginnen und dann mit Page Upund Page Downvorwärts und rückwärts durch den Verlauf der Zeilen navigieren, beginnend mit demselben Präfix, das Sie gerade eingegeben haben.
(Einige bevorzugen möglicherweise die Verwendung von
\e[A
und\e[B
, wodurch die normalen Upund DownAktionen ersetzt werden, anstatt neue Schlüssel zu binden.)quelle
Alt + Up
und abzubildenAlt + Down
. Abhängig von der Tastaturemulation, die das Terminalemulat verwendet, können diese Kombinationen entweder\E[A
und\E[A
(z. B. KDE-Konsole mit Linux-Schlüsselbindungen) oder\E[1;3A
und\E[1;3B
(z. B. XFCE-Terminal oder KDE-Konsole mit X Free 4-Bindungen) zugeordnet werden.Die von Ctrl- aufgerufene interaktive Eingabeaufforderung R, die bereits erwähnt wurde, ist der bequemste Weg. Es ist zusätzlich populär neu zuzuordnen Upund den DownPfeiltasten die Geschichte für ein Präfix zur Zeit auf der Kommandozeile zu suchen, erfordert dies jedoch einige Änderungen an der
~/.inputrc
Datei .Die klassische und weniger interaktive Lösung ist die Verwendung der Shell-Verlaufserweiterung. Tippen
führt den letzten Befehl aus, der mit
foo
und beginntführt den letzten Befehl aus, der enthält
foo
. Weitere Informationen zur Verlaufserweiterung finden Sie im Bash-Referenzhandbuch , sofern Ihre Shell Bash oder kompatibel ist.quelle
Wenn Sie
stty -ixon
Ihrer~/.bashrc
Datei hinzufügen , wird Ctrl- sin die entgegengesetzte Richtung zu Ctrl- gehen r.quelle
C-s
für diesen Zweck verwenden, aber mein Terminal wurde eingefroren ; in acht nehmen! (Nun, ich habe noch keine eingestelltstty ixon
, nicht sicher, wofür das ist.)C-q
wird "auftauen". Dies und dasC-s
sind die üblichen Steuerzeichen für den Softwarefluss, die einst nützlich waren, um den Ausgabefluss manuell zu unterbrechen (anzuhalten), wenn langsame serielle Verbindungen verwendet wurden. Jetzt ist die Ausgabe in den meisten Fällen so schnell, dass das, was Sie sehen möchten, wenn Sie drücken,C-s
bereits einen Bildlauf durchgeführt hat.stty -ixon
Schaltet die Software-Flusskontrolle aus.Wenn Sie tippen,
!ls
durchsucht bash Ihren Verlauf und führt den letzten Befehl aus, der mit "ls" beginnt.quelle
könnte zsh-spezifisch sein. Bei der Erforschung dieser Antwort ich gefunden
vi-history-search-backward
, die man mit Suche ermöglicht den Einsatz /in vi - Modus (die ich nicht , ich war in nicht erwähnt) , die Sie dann verwenden können , nund Njeweils vorwärts und rückwärts suchen (nach dem Pressen enter).quelle
Ich bin überrascht, dass dies nicht erwähnt wurde - aber Sie können den vi-Modus in bash oder ksh folgendermaßen auswählen:
... oder als Inhalt von
~/.inputrc
(für GNU-Readline, die in Programmen wie bash verwendet wird):Danach können Sie Escmit in den Befehlsmodus wechseln und mit kin den Verlauf zurückkehren und jvorwärts gehen. Sie können auch mit suchen /, um normal ?zu suchen und umgekehrt.
Wenn Sie verwenden
~/.inputrc
, funktioniert dies nicht nur in GNU bash, sondern in allem, was GNU readline verwendet, wie z. B. CLISP und möglicherweise in Programmen wie der MySQL-Befehlsshell und der CPAN-Shell.quelle
So schalten Sie bei Verwendung der Rückwärtssuche vorwärts (mit dem Befehl Strg-R):
Öffnen Sie Ihre .bashrc-Datei:
sudo gedit ~/.bashrc
füge diese Zeile hinzu (der Buchstabe "f" kann durch einen anderen ersetzt werden, der noch nicht vom System verwendet wird)
source ~/.bashrc
oder. ~/.bashrc
JETZT KÖNNEN SIE MIT DEM KURZSCHLAG IN DER GESCHICHTE VORWÄRTS SPRINGEN: STRG + F
Arbeiten an Ubuntu 18.04 LTS
quelle
Die meiste Zeit benutze ich die folgenden zwei.
Beachten Sie jedoch, dass beide nach Startzeichen suchen.
fc -e - <SPACE>
<first few char for your previous >
diesem Befehl wird der letzte Befehl ausgeführt, der dieser Sequenz entspricht.Ich war so etwas wie finden nicht in der Lage Ctrl+ Rin Bash für meine ksh und tcsh.
quelle
set -o emacs
übrigens im Modus.Es gibt eine Möglichkeit Ctrl- Rmit tcsh . Fügen Sie Folgendes hinzu
~/.cshrc
:bindkey "^r" i-search-back
(es ist nur ein Caret-Zeichen und der Buchstabe r)Das ist die größte Zeitersparnis für mich.
quelle
ähnliche Antwort auf @ephemient, aber Sie können in Ihrem .bashrc setzen
und geben Sie einen Teil des Ausdrucks ein, und verwenden Sie dann den Aufwärts- / Abwärtspfeil, um die neuesten Optionen zu durchsuchen, die übereinstimmen. Dies ist das Standardverhalten von matlab.
Für die meisten Leute, wenn Sie Ihre Einstellungen auf ein neues System portieren möchten, ist es einfacher, sich daran zu erinnern, nur an Ihrem
~/.bashrc
zu hängen, als an dem, dass Sie sich daran festhalten müssen~/.inputrc
quelle
Ja, zumindest wenn Sie zsh verwenden. Beginnen Sie einfach mit der Eingabe des Befehls und drücken Sie M-p( ESC p), um frühere Befehle zu finden, die Ihren Eingaben entsprechen. Drücken Sie erneut, um die nächste Übereinstimmung zu finden.
quelle