Zobacz historię poleceń uruchamianych w terminalu


75

Czy istnieje sposób na zapisanie wszystkich wpisanych poleceń terminala i przeglądanie ich jak historii w dzienniku?

Odpowiedzi:


92

Odbywa się to automatycznie. Bash przechowuje twoje polecenia ~/.bash_history. Jeśli chcesz zajrzeć do historii, wydrukuj dane wyjściowe tego pliku za pomocą jednego z nich

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...

Lub możesz użyć wbudowanego polecenia bash:

history

Aby wyczyścić historię, usuń plik i wyczyść historię tymczasową:

rm ~/.bash_history && history -c

Domyślny rozmiar historii to 500 poleceń. Możesz to jednak zwiększyć, dodając następujący wiersz do ~./bashrc:

HISTSIZE=<number of entries, -1 for unlimited>

To nie zacznie obowiązywać natychmiast, ale tylko dla nowo rozpoczętych sesji. Aby zastosować to, zasób plik .bashrc:

. ~/.bashrc

lub uruchom HISTSIZE=...w bieżącej sesji.


1
Domyślnie zachowuje tylko 500 ostatnich poleceń. Możesz zmienić numer, który chcesz zachować, ale musisz tylko przypadkowo uruchomić go z ustawieniami domyślnymi raz, a cała starsza historia zniknie.
kasperd

To nie działa dla mnie na Ubuntu 16
Nam G VU

31

Możesz wpisać historyna terminalu, aby wyświetlić wszystkie poprzednio wykonane polecenia.


Możesz obciąć dane wyjściowe do niektórych linii (gdzie 5 to liczba linii):

history 5

Jeśli chcesz wyświetlić tylko polecenia zawierające ciąg znaków (tj. mv), Możesz to zrobić:

history | grep mv

Możesz przywołać polecenie, wpisując, !a następnie numer wpisu.

Powiedzmy, że mam taką historię:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • Aby uruchomić mkdir foo, możesz wpisać !2.
  • Aby uruchomić ostatnie polecenie, możesz użyć !-1lub!!
  • Aby uruchomić przedostatni, możesz użyć !-2

Jeśli uruchomisz polecenie, które się nie powiedzie, ponieważ wymaga uprawnień roota (tj. touch /etc/foo), Możesz użyć, sudo !!aby uruchomić ostatnie polecenie jako root.


  • Jeśli wpiszesz, !manwykonasz ostatnie polecenie, które zaczyna się odman
  • Jeśli wpiszesz !?man?, wykona ostatnie polecenie, które zawiera man(niekoniecznie na początku linii)

Jeśli masz literówkę w poleceniu, możesz to naprawić w ten sposób. Załóżmy, że mam wpisać cat .bash_hi, aby zastąpić .bash_hiprzez .bash_historyI tylko trzeba wpisać ^hi^history^.


Źródło: https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps


2
Możesz także nacisnąć Ctrl-R, aby przeprowadzić wyszukiwanie w hostelu podczas pisania.
Mhmd

historypracuje dla mnie na Ubuntu 16. Dzięki i powinien być przyjęty!
Nam G VU,

9

Po prostu wpisz:

history > print.txt

Nowy plik o nazwie print.txt zostanie utworzony w aktualnie działającym katalogu.


3
Odcina polecenia po 1000
Antoine

3

Często po prostu chcę też tych ostatnich poleceń. Aby publikować w moich notatkach programistycznych lub, no cóż, stosach wymiany stron takich jak te ... Okazało się to bardzo przydatne, usuwając niepotrzebne numery wierszy:

history | cut -c 8- | tail

lub, jeśli podoba Ci się to jako alias, numery linii są usuwane i wcięte od razu (tak, jak jest to potrzebne do przeceny cytatu)

alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\}  /    /gi'"

1
Łatwiejszy w użyciu fc: askubuntu.com/a/839642/158442
muru

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.