Come ottenere l'intervallo cronologico della shell Bash


9

Come posso ottenere / filtrare le voci della cronologia in un intervallo specifico?

Ho un file di cronologia di grandi dimensioni e uso spesso

history | grep somecommand

Ora, la mia memoria è piuttosto brutta e voglio anche vedere cos'altro ho fatto nel momento in cui ho inserito il comando.

Per ora lo faccio: trova corrispondenza, diciamo 4992 somecommand, quindi lo faccio

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

questo di solito è abbastanza buono, ma preferirei farlo in modo più preciso, ovvero vedere i comandi da 4972 a 5012, ovvero 20 comandi prima e 20 dopo.

Mi chiedo se esiste un modo più semplice? Sospetto che sia in ordine uno script personalizzato, ma forse qualcun altro ha già fatto qualcosa di simile prima.


Per manipolazione della cronologia ci sono 2 incorporati: gnu.huihoo.org/bash-2.02/html_node/bashref_73.html
LAFK dice Reinstate Monica

Risposte:


13

Puoi dire grepdi stampare alcune righe che circondano la partita, ad esempio 3 prima e 5 dopo:

history | grep -B 3 -A 5 somecommand

grep -C 4è equivalente a grep -A 4 -B 4.

Ma spesso non saprai esattamente quante linee vuoi in anticipo. Quindi usa meno e cerca al suo interno. Puoi anche avviare la ricerca dalla riga di comando:

history | less +/somecommand

1
trucco molto bello con less! Non sapevo che potevi farlo
Warren,

Davvero molto bello ... Riesco a vedere "in giro" il comando che sto cercando, anche quando non lo sto cercando in modo specifico ma ricordo di averlo usato quando ho usato un altro comando pertinente! Roba buona grazie.
Khalil Gharbaoui,

8

Prova fc:

fc -l 4972 5012

... è un comando incorporato bash. (quindi non provarlo in tcsh:>)


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.