So erhalten Sie den Verlaufsbereich der Bash-Shell

So erhalten Sie den Verlaufsbereich der Bash-Shell

Wie kann ich Verlaufseinträge in einem bestimmten Bereich abrufen/filtern?

Ich habe eine große Verlaufsdatei und verwende häufig

history | grep somecommand

Nun, mein Gedächtnis lässt ziemlich nach, und ich möchte auch sehen, was ich sonst noch getan habe, als ich den Befehl eingegeben habe.

Im Moment mache ich Folgendes: hole mir ein Match, sage 4992 somecommand, dann mache ich

history | grep 49[0-9][0-9]

das reicht normalerweise aus, ich würde es aber lieber genauer machen, also die Befehle von 4972 bis 5012 anzeigen, also 20 Befehle davor und 20 danach.

Ich frage mich, ob es einen einfacheren Weg gibt. Ich vermute, ein benutzerdefiniertes Skript wäre angebracht, aber vielleicht hat jemand anders schon einmal etwas Ähnliches gemacht.

Antwort1

Sie können angeben, grepdass einige Zeilen rund um die Übereinstimmung gedruckt werden sollen, z. B. 3 davor und 5 danach:

history | grep -B 3 -A 5 somecommand

grep -C 4ist äquivalent zu grep -A 4 -B 4.

Aber oft wissen Sie nicht im Voraus, wie viele Zeilen Sie genau benötigen. Verwenden Sie also „less“ und suchen Sie innerhalb dieser Zeilen. Sie können die Suche auch von der Kommandozeile aus starten:

history | less +/somecommand

Antwort2

Versuchen Sie es mit fc:

fc -l 4972 5012

... es ist ein in Bash integrierter Befehl. (Versuchen Sie es also nicht in tcsh :>)

Antwort3

versuchenhistory | grep -C20 '^4992'

verwandte Informationen