Suchbefehle im Verlauf mit diskontinuierlichen Schlüsselwörtern

12

Ich habe mich gefragt, wie man Befehle in der Geschichte durchsucht, ohne die ersten Buchstaben des Befehls zu kennen.

Bei der Suche mit Ctrl- Rin bash müssen die ersten Buchstaben des Befehls eingegeben werden. Was ist, wenn ich nur einige Charaktere in der Mitte oder einige am Anfang und einige in der Mitte kenne?

Zum Beispiel, um zu suchen cat myfile, ich weiß nur, dass es atdrin ist, oder cam Anfang und myin der Mitte irgendwo. Schlüsselwörter müssen fortlaufend positioniert werden. Zum Beispiel cat myfilemöchte ich in nach beiden cund suchen my, Ctrl+Rerlaube aber nicht, beide gleichzeitig anzugeben.

Tim
quelle
2
Ich benutze die ganze Zeit Strg-R und es durchsucht den mittleren Text automatisch. Nichts Besonderes, aber in Ihrem Beispiel mywürde das Tippen ausreichen. RHEL4 und Cygwin bestätigt.
Aaron D. Marasco
@ Tim: Das hast du eigentlich nicht probiert, oder? Weil es tut für Buchstaben in der Mitte eines Befehls suchen.
Alex
@alex: Eigentlich wollte ich Keywords sagen, die nicht durchgehend positioniert sind. Zum Beispiel cat myfilemöchte ich in nach beiden cund suchen my, aber Strg + R erlaubt nicht, beide gleichzeitig anzugeben.
Tim

Antworten:

12

Wenn Sie nur nach der Zeile suchen (um sich zu erinnern), können Sie einfach nach dem Teil des Befehls suchen, an den Sie sich erinnern:

history | grep "substring"
jasonwryan
quelle
2
Wie kommt es, dass ich seit mehr als 5 Jahren * nix-Systeme verwende und bisher nichts über den historyBefehl wusste ? Vielen Dank!
GMA
7

Bash hat nur eine einfache Suche nach Zeichenfolgen, soweit ich sehen kann.

Ziehen Sie in Betracht, zu zsh zu wechseln , das eine Verlaufs-Platzhaltersuche enthält. history-incremental-pattern-search-backwardund history-incremental-pattern-search-forwardsind standardmäßig nicht an Schlüssel gebunden, aber Sie können sie binden:

bindkey '^X^R' history-incremental-pattern-search-backward
bindkey '^X^S' history-incremental-pattern-search-forward

Dann tippe Ctrl+X Ctrl+R ^c*my.

Gilles 'SO - hör auf böse zu sein'
quelle
0

Apropos (1) sollte auch einen Mann für das Thema zurückgeben, wenn der Mann dieses Wort enthält. Whatis (1) gibt nur absolute Übereinstimmungen zurück.

Als Referenz: Apropos == man -k Whatis == man -f

Diese beiden sollten eine große Hilfe sein, zusammen mit Platzhaltern * und?

baweaver
quelle
1
Bei der Frage geht es um das Durchsuchen des Befehlsverlaufs im Terminal ... (nicht um das Durchsuchen der Manpages) ... aber ganz getrennt fand ich Ihre Antwort nützlich, also +1 :)
Peter.O
.... Ah schön, mein schlechtes Gewissen bei diesem einen Kumpel.
Baweaver