Come posso cancellare la cronologia del terminale?


93

Sto usando Linux Mint 17.1 Rebecca per circa 2 giorni e ho inserito per sbaglio la mia password nel terminale che ora viene visualizzato nell'elenco cronologico dei comandi che ho precedentemente digitato.

Voglio cancellare completamente la cronologia dei terminali. Ho provato a usare i seguenti comandi nel terminale che pensavo avrebbero cancellato la storia per sempre, ma non lo fanno:

history -c
reset
tput reset

I comandi sopra "cancelleranno" la cronologia dal terminale ma quando esco e ne faccio apparire uno nuovo tutta la mia cronologia precedente è ancora lì e può essere nuovamente elencata usando il comando - history e anche premendo la freccia SU sulla mia tastiera . Non voglio che ciò accada fino a quando non avrò completamente cancellato la mia storia, quindi voglio continuare a usarla.

Come posso cancellare completamente la cronologia dei miei terminali - per sempre e ricominciare da capo?

Nota: non voglio uscire dal terminale senza salvare la cronologia, deselezionala per sempre in questa unica istanza.


1
sed -i "s/$your_pass//g" ~/.bash_history...
Jasonwryan,

3
@jasonwryan Quello da solo non avrebbe risolto il problema poiché il comando sed sarebbe finito nella storia della shell.
Gilles,

1
Ho provato a usare il codice di @jasonwryan ma ho ottenuto: sed: -e espressione # 1, carattere 0: nessuna precedente espressione regolare che penso di sapere perché e che mi ha portato a trovare questo da una ricerca e un po 'di casino: cat / dev / null> ~ / .bash_history && history -c && exit
Shambhala,

1
@Gilles: hai ragione: dovrebbe esserci uno spazio davanti al comando ...
jasonwryan

Risposte:


145

reseto tput resetfa solo cose al terminale. La cronologia è interamente gestita dalla shell, che rimane inalterata.

history -ccancella la cronologia nella shell corrente. Questo è abbastanza (ma eccessivo) se hai appena digitato la password e non sei uscito da quella shell o hai salvato la sua cronologia in modo esplicito.

Quando esci da bash, la cronologia viene salvata nel file della cronologia, che per impostazione predefinita si trova .bash_historynella tua home directory. Più precisamente, la cronologia creata durante la sessione corrente viene aggiunta al file; le voci già presenti non sono interessate. Per sovrascrivere il file della cronologia con la cronologia della shell corrente, eseguire history -w.

Invece di rimuovere tutte le voci della cronologia, puoi aprire .bash_historyun editor e rimuovere le righe che non desideri mantenere. Puoi anche farlo all'interno di bash, in modo meno conveniente, usando historyper visualizzare tutte le voci, quindi history -dper eliminare le voci che non desideri e infine history -wsalvare.

Si noti che anche dopo aver modificato il file della cronologia, è possibile che la password sia ancora presente da qualche parte sul disco da una versione precedente del file. Non può più essere recuperato attraverso il filesystem, ma potrebbe essere ancora possibile (ma probabilmente non facile) trovarlo accedendo direttamente al disco. Se usi questa password altrove e il tuo disco viene rubato (o qualcuno ha accesso al disco), questo potrebbe essere un problema.


1
Mi piace la tua risposta e accetterò come mi hai detto alcune cose che non sapevo che fossero molto utili. Cambierò anche la mia password!
Shambhala,

Prima digita historyper controllare il contenuto del registro della cronologia e i numeri di riga che desideri eliminare, supponendo di voler eliminare il numero di riga 1000 nel registro della cronologia, quindihistory -d 1000
Claude COULOMBE

Se modifico direttamente il file .bash_history, il comando history mostra ancora i comandi come erano prima della modifica, fino a quando non esco /
eseguo l'

35

Ho provato la storia -c ma la storia ritorna una volta che usciamo e si riapre. Questo mi ha aiutato.

cat /dev/null > ~/.bash_history && history -c && exit

Ciò cancella la cronologia salvata nel file cronologico e la cronologia nella sessione corrente (in modo che non venga salvata nel file quando bashesce). Quindi esce dalla shell. La prossima sessione di shell non avrà cronologia.


18

Invece di rimuovere tutte le voci della cronologia, digita questi comandi nel tuo terminale:

  1. history -c (per cancellare la cronologia)
  2. history -w (salva cronologia)

Questo non sarà sufficiente con zsh se inc_append_historyo share_historyopzione è impostata.
saga,

5

Poiché esiste un problema di sicurezza, è consigliabile eliminare in modo sicuro il file della cronologia.

$ shred -u ~/.bash_history && touch ~/.bash_history

3

Come neofita di fronte allo stesso problema ho fatto ricorso al piuttosto brutale espediente di eliminare e ricreare il file di cronologia: -

rm .bash_history
touch .bash_history

Ha funzionato per me senza dar luogo a effetti collaterali spiacevoli di cui sono a conoscenza.


3

Genere: history -c; rm ~/.bash_history

history -ccancella la cronologia della sessione corrente, rm ~/.bash_historycancella la cronologia a lungo termine, quindi history -c; rm ~/.bash_historycancella entrambi.


la spiegazione può aiutare l'OP a capire meglio.
Mongrel il
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.