Visualizza la cronologia dei comandi eseguiti nel terminale


75

Esiste un modo per salvare tutti i miei comandi di terminale digitati e visualizzarli come cronologia in un registro?

Risposte:


92

Questo viene fatto automaticamente. Bash memorizza i tuoi comandi ~/.bash_history. Se vuoi dare un'occhiata alla cronologia, stampa l'output di questo file usando uno dei

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

Oppure puoi usare il comando incorporato di bash:

history

Per cancellare la cronologia, eliminare il file e cancellare la cronologia temporanea:

rm ~/.bash_history && history -c

Per impostazione predefinita, la dimensione della cronologia è di 500 comandi. Tuttavia, puoi aumentarlo aggiungendo una riga al tuo ~/.bashrcfile per impostare la HISTSIZEvariabile:

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

Questo non avrà effetto immediato, ma solo per le sessioni appena iniziate. Per applicare questo, rinominare il .bashrcfile:

. ~/.bashrc

o eseguire HISTSIZE=...nella sessione corrente.


1
Tuttavia, per impostazione predefinita mantiene solo gli ultimi 500 comandi. È possibile modificare il numero da conservare, ma è necessario avviarlo accidentalmente una sola volta con le impostazioni predefinite e tutta la cronologia precedente sarà sparita.
Kasperd,

Questo non funziona per me su Ubuntu 16
Nam G VU

31

È possibile digitare historysu un terminale per visualizzare tutti i precedenti comandi eseguiti.


È possibile troncare l'output su alcune righe (dove 5 è il numero di righe):

history 5

Se vuoi visualizzare solo i comandi che contengono una stringa (ad es. mv), Puoi farlo:

history | grep mv

È possibile richiamare un comando digitando !seguito dal numero della voce.

Diciamo che ho una storia come questa:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • Per eseguire mkdir foo, puoi digitare !2.
  • Per eseguire l'ultimo comando, è possibile utilizzare !-1o!!
  • Per eseguire il penultimo, puoi usare !-2

Se si esegue un comando che non riesce perché necessita dei privilegi di root (ad es. touch /etc/foo), È possibile utilizzare sudo !!per eseguire l'ultimo comando come root.


  • Se digiti !maneseguirai l'ultimo comando che inizia conman
  • Se digiti !?man?eseguirà l'ultimo comando che contiene man(non necessariamente all'inizio della riga)

Se hai un refuso in un comando, puoi risolverlo in questo modo. Diciamo che ho tipo cat .bash_hi, di sostituire .bash_hicon .bash_historyho solo bisogno di digitare ^hi^history^.


Fonte: https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps


2
Inoltre puoi premere Ctrl-R per eseguire una ricerca nell'ostello durante la digitazione.
Mhmd,

historylavorando per me su Ubuntu 16. Grazie e dovrei essere quello accettato!
Nam G VU

9

Basta digitare:

history > print.txt

Un nuovo file chiamato print.txt verrà creato nella directory attualmente in uso.


3
Taglia i comandi dopo 1000
Antoine il

3

Spesso voglio anche solo quei comandi recenti. Per pubblicare nelle mie note di sviluppo o, beh, siti di stackexchange come questi ... Questo si è rivelato molto utile, rimuovendo i numeri di riga irrilevanti:

history | cut -c 8- | tail

o, se ti piace come alias, i numeri di riga rimossi e rientrati immediatamente (proprio come necessario per il markdown del preventivo del codice)

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

1
Più facile da usare fc: askubuntu.com/a/839642/158442
muru,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.