Come funziona il comando history?


8

Quando digito qualsiasi comando nel terminale, non viene visualizzato nel mio ~/.bash_historyfile fino a quando non esco dalla sessione.

Inoltre, quando modifico manualmente il mio ~/.bash_historyfile (ad esempio rimuovo gli ultimi tre comandi), quando historyscrivo mostra ancora i comandi che ho rimosso dal ~/.bash_historyfile. Solo quando esco dalla sessione e accedo di nuovo scompaiono.

Come vengono sincronizzati ~/.bash_historyil mio file e il historycomando?



"Quando digito qualsiasi comando nel terminale" In realtà non è vero. Quando si mette uno spazio davanti al comando per impostazione predefinita, questo non lo salva.
Rinzwind,

@Rinzwind può essere modificato il comportamento del salvataggio del comando anche se ha uno spazio davanti modificando il valore della variabile di ambiente HISTCONTROL.
sys0dm1n

@ sys0dm1n "di default"
Rinzwind

Risposte:


10

Quando apri un terminale bash, esso carica il contenuto ~/.bash_historye crea la cronologia della shell attiva (nella RAM), aggiungendo ogni comando eseguito in quella shell - e solo ad esso, non al file.

Solo quando chiudi un terminale bash la sua cronologia viene aggiunta al tuo ~/.bash_historyfile.


Opzioni di history:

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

Opzioni per il ~/.bashrcfile

Se si desidera modificare questo comportamento in modo che la cronologia temporanea venga salvata ~/.bash_historydirettamente dopo aver eseguito un comando, aggiungere questa riga:

PROMPT_COMMAND="history -a"

Se si desidera inoltre che ogni terminale carichi automaticamente il ~/.bash_historyfile dopo ogni esecuzione del comando, aggiungere invece questa riga:

PROMPT_COMMAND="history -a; history -c; history -r"

Se vuoi escludere determinati comandi (ad es. Tutto ciò che inizia con sudoe cat) dal salvataggio, aggiungi questa riga:

HISTIGNORE="sudo*:cat*"
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.