Jak uzyskać ostatnie N poleceń z historii?

37

Chcę zobaczyć, jakie są moje ostatnie N poleceń history. Myślałem, że się history | tail -n 5uda, ale zauważyłem, że polecenie wieloliniowe liczy tyle wierszy, ile ma.

$ echo "hello
how are you"
$ history | tail -2
how are you"
1051  history | tail -2

Więc moje pytanie brzmi: czy muszę przeanalizować dane wyjściowe polecenia, aby to osiągnąć?

fedorqui
źródło
1
//, Właśnie dlatego kocham
wymianę stosów

Odpowiedzi:

46

Znalazłem to!

historia [n]

Argument n zawiera tylko ostatnie n wierszy.

$ echo "hello
how are you"
$ history 2
1060  echo "hello
how are you"
1061  history 2
fedorqui
źródło
4
To wydaje się być za tcsh, yasha bash. Możesz podać odpowiednie informacje do innych skorup podoba zsh, fish, ksh, oraz sposób POSIX.
Stéphane Chazelas
1
Chciałbym, chociaż nie mam żadnego z nich zainstalowanego na moim komputerze. Czy polecasz jakieś konkretne źródło, z którego można uzyskać informacje? W opengroup widzę odniesienie do pubs.opengroup.org/onlinepubs/9699919799
fedorqui
6
fc -l -2działa również (ale nie dodaje prądu fc -l -2do wyjścia)
Evgeny Vereshchagin
fcprzy okazji pokazuje ostatnie n poleceń za pomocą -n. Wyświetlanie from n commands until lastjest tylko n(co nie ma większego sensu, ponieważ musisz znać całkowitą liczbę). Po niemiecku powiedzielibyśmy ein kleiner aber feiner unterschied: Mały, ale zachwycający diff. Nie zapomnij użyć -ljako wskazanego @EvgenyVereshchagin, ponieważ w przeciwnym razie skończysz w edytorze, który nie jest tym, czego chcesz.
Timo
0

Testowany w OpenBSD 6.3 (PD KSH v5.2.14 99/07 / 13.2).

history [b]

Pokazuje całą historię zaczynającą się od pozycji z numerem [b]

history [b] [e]

Pokazuje interwał historii od [b] do [e]

CrimsonPermanentAssurer
źródło
0

Możesz również użyć liczb ujemnych, takich jak:

history -1

Lub użyj zakresu (ostatnie 10):

history -1 -11 
robertrv
źródło
Nie działa dla mnie w bash 5.0.11.
joelostblom
0

Po zastosowaniu historii wyświetli się również ostatnie polecenie historii. Aby zapobiec marnotrawstwu kosmosu, taki alias może być przydatny:

alias hs=' history 16 | head -n 15'

(samo polecenie history 16 | head -n 15)

Kolejny przydatny alias historii:

  alias hsg=' history | grep ' 

(gdy ctr + R jest zbyt mały, aby wybrać)

Spacja przed _historia uruchomi polecenie niezapisane w historii

fc -l # wyświetli również 16 ostatnich poleceń (i więcej)

Alexey K.
źródło
2
Chociaż jest to prawda, żadne z tych pytań nie dotyczy omawianego pytania.
Jeff Schaller