W history
listuje wszystkie historia dla bieżącej sesji. Lubić:
1 ls
2 cd /root
3 mkdir something
4 cd something
5 touch afile
6 ls
7 cd ..
8 rm something/afile
9 cd ..
10 ls
11 history
Aby wyszukać interesujące przedmioty, mogę używać fajki history
z grep
podobnymi
history | grep ls
1 ls
6 ls
10 ls
Mogę również wyświetlić 3 ostatnie polecenia, takie jak:
history 3
11 history
12 history | grep ls
13 history 3
Ale jak uzyskać konkretny zakres historii? Na przykład coś takiego:
history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..
bash
command-history
Slartibartfast
źródło
źródło
x
polecenia, a następnie potokować dohead
.history | grep something
wyniki pokazują polecenia ponumerowane123 234 345
w historii i mogę nie znać liczby ostatnio wykonanych poleceń (history
w tym przypadku). Moje ostatnie polecenie może mieć numer 400, 500 lub cokolwiek innego. Więc najpierw muszę sprawdzić ten numer, ustalić różnicę, wymienić ostatniex
polecenia, a następnie przesłać dohead
Odpowiedzi:
Zamiast tego
history
możesz użyćfc
, które pozwalają wybrać zakres:źródło
fc -l -16 -10
.Jeśli musisz użyć polecenia historii, przeprowadź go przez sed lub awk:
W przeciwnym razie odpowiedź cuonglm jest lepszą opcją.
źródło
head
itail
rozwiązałoby ten problem w jeszcze mniej elegancki sposób. W przypadku zakresu 10–> 25 należy użyćhistory | head 25 | tail 15
.Używanie historii z grep na numerach wierszy wokół polecenia, którego szukam, działa najlepiej dla mnie.
Na przykład szukam tego, co zrobiłem
ping mybox
, mniej więcej 20 linii.$ history | grep "ping mybox" 20325 ping mybox
To jest linia,
20325
więc muszę po prostu wstawić linie zaczynające się od liczby z[20320..20339]
zakresu.$ history | grep ^203[2-3][0-9]
źródło