Jak wyświetlić plik `.bash_history` za pomocą wiersza poleceń?

72

Chcę wyświetlić zawartość mojego .bash_historypliku, ale nie wiem, jak się tam dostać za pomocą wiersza polecenia.

isupportopensource
źródło
7
Co powiesz nahistory | less
MadMike,
2
Sprawdziłeś /home/username/.bash_history ?
Mitch
2
Uwaga: .bash_historyjest dołączany tylko wtedy, gdy terminal jest zamknięty.
Nicolas VERHELST

Odpowiedzi:

56

Jeśli chcesz uzyskać dostęp do samego pliku rzeczywiste, wystarczy użyć dowolnego edytora tekstu (używam emacsale można korzystać plumaz geditlub vimlub cokolwiek):

emacs ~/.bash_history

Jest to domyślna lokalizacja, jeśli plik historii. Jeśli nic tam nie znajdziesz, być może zmieniłeś nazwę pliku historii. Jest to przechowywane w $HISTFILEzmiennej, więc wydrukuj ją, aby sprawdzić jej bieżącą wartość:

echo $HISTFILE

Jeśli zamiast pliku chcesz tylko zobaczyć swoją historię, możesz uruchomić historyzgodnie z sugestią @ minerz029. Polecenia bez opcji po prostu drukuje zawartość Twojego następnie poleceń zawartych w bieżącej powłoki, które nie zostały jeszcze napisane do tego pliku, z numerami linii.history$HISTFILE

terdon
źródło
49

Jeśli rzeczywiście potrzebują wyjście z .bash_historypliku, należy wymienić historyze
cat ~/.bash_historywe wszystkich poniższych poleceń.

Jeśli faktycznie chcesz poleceń bez liczb z przodu, użyj tego polecenia zamiast history:

history | cut -d' ' -f 4-

w przeciwnym razie nie będzie różnicy (chyba że używasz innej powłoki).


Ostatnie 15 poleceń

Możesz użyć

history | tail -n 15

aby uzyskać tylko ostatnie 15 wierszy historii z ostatnim wykonanym wydrukowanym na końcu (na dole).


Wyszukiwanie polecenia

Alternatywnie użyj

history | grep "apt-get" | tail -n 15

aby uzyskać ostatnie 15 poleceń, które zawierały apt-getostatnio wykonane polecenie wydrukowane jako ostatnie (na dole). Możesz zastąpić apt-getdowolną komendą (lub argumentem komendy), którą chcesz wyszukać (może to być wyrażenie regularne).


Przewijanie historii

Możesz użyć

history | tac | less

aby przewijać wszystkie wykonane polecenia, zaczynając od najnowszych na górze. Naciśnij, qaby wyjść.

Podobnie użyj

history | grep "apt-get" | tac | less

aby przewijać wszystkie polecenia wykonane z „ apt-get” w nich (łącznie z argumentami), zaczynając od najnowszych na górze. Naciśnij, qaby wyjść.

kiri
źródło
15

Oprócz doskonałej odpowiedzi minerz029.

Powtórzmy - polecenie „historia” drukuje historię wraz z liczbą obok niej.

Możesz przesłać dane historyczne do grep, less itp.

Wyjście historii pokazuje również liczbę po lewej stronie wyjścia. na przykład

  469  free
  470  ps -fA
  471  ps -fA | grep xend
  472  free
  473  sudo vi /etc/xen/xend-config.sxp 
  474  cat /etc/default/grub 

Za pomocą tego numeru możesz ponownie uruchomić polecenie.

np. aby ponownie uruchomić 473 napisałbym w terminalu

 admin@xen1~$ !473

następnie klawisz Enter, aby powtórzyć polecenie obok 473 w danych wyjściowych historii.

Możesz także wyszukiwać interaktywnie wstecz w historii poleceń, wpisując ctrl + rklawisze, a następnie zacznij wpisywać część treści polecenia, które przeszuka je i wypełni. Po znalezieniu możesz wpisać Enter, aby je powtórzyć, lub naciśnij [tab]klawisz, aby skopiować go do wiersza poleceń, aby najpierw edytować polecenie.

Oczywiście te dwie ostatnie opcje działają w powłoce bash. Nie jestem pewien, czy te funkcje działają w innych powłokach. Ale ponieważ bash jest domyślną powłoką Ubuntu, powinieneś je tam znaleźć.

Matt H.
źródło
1

wprowadź opis zdjęcia tutaj

Możesz spróbować historii podobnej do „pole sugestii” https://github.com/dvorka/hstr - czyta historię Bash i pozwala na szybką nawigację.

Martin Dvorak
źródło