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ąć?


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

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]


0

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

history -1

Lub użyj zakresu (ostatnie 10):

history -1 -11 

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)


2
Chociaż jest to prawda, żadne z tych pytań nie dotyczy omawianego pytania.
Jeff Schaller
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.