Jak mogę pobrać / filtrować wpisy historii w określonym zakresie?
Mam duży plik historii i często go używam
history | grep somecommand
Teraz moja pamięć jest dość zła i chcę też zobaczyć, co jeszcze zrobiłem w czasie, gdy wprowadziłem polecenie.
Na razie robię to: dopasuj, powiedz 4992 somecommand
, potem zrobię
history | grep 49[0-9][0-9]
zwykle jest to wystarczająco dobre, ale wolałbym to zrobić dokładniej, to znaczy zobaczyć polecenia od 4972 do 5012, czyli 20 poleceń przed i 20 po.
Zastanawiam się, czy istnieje łatwiejszy sposób? Podejrzewam, że niestandardowy skrypt jest w porządku, ale być może ktoś inny zrobił wcześniej coś podobnego.
Odpowiedzi:
Możesz nakazać
grep
wydrukowanie niektórych linii otaczających dopasowanie, np. 3 przed i 5 po:grep -C 4
jest równoważne zgrep -A 4 -B 4
.Ale często nie wiesz dokładnie, ile linii chcesz z góry. Więc używaj mniej i szukaj w nim. Możesz nawet uruchomić wyszukiwanie z wiersza poleceń:
źródło
less
! Nie wiedziałem, że możesz to zrobićSpróbuj fc:
... to wbudowane polecenie bash. (więc nie próbuj tego w tcsh:>)
źródło
próbować
history | grep -C20 '^4992'
źródło