Come cancellare completamente la storia di bash?


254

Voglio cancellare tutti i comandi precedenti dalla cronologia del mio server. Ho usato history -ce sembra che tutte le cose siano state cancellate, ma quando ho inviato al server, tutti i comandi sono ancora lì.

Come posso cancellarli permanentemente?

Risposte:


332

Il file ~/.bash_historycontiene la cronologia.

Per cancellare completamente la cronologia bash sul server, apri il terminale e digita

cat /dev/null > ~/.bash_history

Un altro modo alternativo è quello di collegarsi ~/.bash_historya/dev/null

Però,

Un fastidioso effetto collaterale è che le voci della cronologia hanno una copia in memoria e torneranno al file quando ti disconnetti .

Per ovviare a questo, utilizzare il seguente comando (ha funzionato per me):

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

17
puoi anche inserire il comando sopra in .bashrc & .bash_logout. cosa significa quando effettui il login avrai una cronologia chiara e quando ti disconnetti la cronologia verrà cancellata
Qasim

26
Perché hai bisogno / dev / null lì? Non > ~/.bash_hstorysarebbe abbastanza?
configuratore

4
si sarebbe abbastanza!
fromnaboo

3
Ho provato a farlo su una scatola di lamponi mentre ero connesso tramite SSH. Ho aggiunto il comando sopra (cat / dev / null> ~ / .bash_history && history -c && exit) a entrambi .bashrc e .bash_logout come suggerito da @Qasim. Ora, non appena mi collego tramite SSH, l'host remoto chiude la connessione (dopo aver stampato il motd). Aiuto: /
Avanzato

14
Mostra cosa succede quando fai ciecamente le cose senza leggere correttamente e senza comprendere l'elaborazione e il flusso di dati. Mostra anche le insidie ​​della cattiva comunicazione. Quello che devav2 ha fatto è stato eseguirlo una volta e Qasim avrebbe dovuto scrivere è rimuovere il comando exit prima di aggiungerlo nello script di login.
Sri

142

Cosa fare:

In ogni shell bash aperta (potresti avere più terminali aperti):

history -c
history -w

Perché: come notato sopra, history -csvuota il file ~/.bash_history. È importante notare che la shell bash non scarica immediatamente la cronologia nel file bash_history. Pertanto, è importante (1) scaricare la cronologia nel file e (2) cancellare la cronologia, in tutti i terminali . Ecco cosa fanno i comandi sopra.

Riferimento: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/


3
In realtà, il contrario ha funzionato per me.
Kristianp,

24
In molti casi, puoi combinare questi due comandi insieme:history -cw
Elliot

2
Per qualche motivo questo non funziona su Ubuntu 14.04, probabilmente altri. Dovrebbe, ma non lo è. Se si emette il comando "history -cw" è possibile confermare con la freccia su che la cronologia non è più presente, ma se si avvia un'altra finestra del terminale (nel desktop Unity) con MAIUSC + clic sull'icona del terminale (ce l'ho bloccato nel programma di avvio) la cronologia dei comandi è tornata, non importa quante volte fai "history -cw". "cat / dev / null> ~ / .bash_history" è l'unico modo che ha funzionato per me.
Hatoru Hansou,

Anche se non sono Ubantu, funziona bene con la mia shell bash in OSX.
Scott Biggs,

3
È storia -c e poi storia -w, prima cancella la storia e poi scrivi le modifiche. Ciò è facilmente confermato chiudendo il terminale e riaprendolo, con -w prima i comandi sono di nuovo lì, con -w l'ultima cronologia viene effettivamente cancellata.
Hatoru Hansou,

56

eseguire i comandi seguenti per cancellare per sempre la cronologia

history -c && history -w

in bocca al lupo!


3
Molto meglio della risposta accettata. ;)
Chiramisu,

Questa risposta sarebbe ancora più utile se spiegasse cosa fanno questi flag (e quindi perché / quando sono i comandi giusti da usare).
LarsH

20

Ce n'è un altro molto più semplice: in esecuzione history -csul prompt del terminale e via sono tutte le voci nel bash_historyfile.


No non lo è. Esci, accedi, freccia su mi dà tutto. È necessaria anche la "storia -w".
stolsvik,

1
Se leggi la domanda del PO, sapresti che l'utilizzo history -cè il metodo esatto che ha portato a questa domanda.
J.Money,

10

Un altro modo per farlo è eliminare il ~/.bash_historyfile usando il rm ~/.bash_historycomando. Quando si effettua il login un'altra volta, il .bash_historyfile verrà creato automaticamente.


4
Almeno su alcuni sistemi operativi ~ / .bash_history viene scritto sul disco quando ci si disconnette - Non sono sicuro di * buntus.
d -_- b

7

Cancella la cronologia della shell corrente:

history -c

Quando ci si disconnette, la cronologia della shell corrente viene aggiunta a ~ / .bash_history, ovvero una cache delle cronologie delle shell precedenti, a un numero massimo (vedere HISTFILESIZE in "man bash").

Se vuoi rimuovere del tutto la storia, allora devi essenzialmente svuotare ~ / .bash_history che molte delle voci precedenti hanno suggerito. Ad esempio:

history -c && history -w

Ciò cancella la cronologia della shell corrente e quindi forza la cronologia della shell corrente (vuota) a sovrascrivere ~ / .bash_history .... o, per essere più precisi, lo costringe a sovrascrivere HISTFILE (che per impostazione predefinita è ~ / .bash_history).

Spero che sia di aiuto.


4
La tua risposta è accurata, ma la domanda aveva due anni, aveva accettato le risposte e includeva la stessa risposta che hai dato.
Charles Green,

6
rm ~/.bash_history; history -c; logout

Ora accedi di nuovo e osserva che la tua freccia in su non ti dà nulla.


1
@KasiyA Parla di un server e di una sessione ssh, quindi non è necessario modificarlo ...
Radu Rădeanu,

0

Prova questo

modifica il tuo .profilee aggiungi la riga seguente alla fine del file

rm -f .bash_history

in questo modo, ogni volta che accedi, eliminerà automaticamente il tuo file .bash_history. L'aggiunta dell'opzione di rimozione ricorsiva -r sembra pericolosa e non necessaria.

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.