Domanda Come cancellare completamente la cronologia di bash?


Voglio cancellare tutti i comandi precedenti dalla cronologia del mio server. ero solito history -c e sembra che tutte le cose siano state cancellate, ma quando ho ssh al server, tutti i comandi sono ancora lì.

Come posso cancellarli definitivamente?


221
2017-09-23 05:44


origine




risposte:


Il file ~/.bash_history detiene la storia.

Per cancellare completamente la cronologia di bash sul server, aprire il terminale e digitare

cat /dev/null > ~/.bash_history

Un altro modo alternativo è quello di collegare ~/.bash_history a /dev/null

Però,

Un fastidioso effetto collaterale è che le voci della cronologia hanno un copiare nella memoria e lo farà torna al file quando esci.

Per risolvere il problema, utilizzare il seguente comando (ha funzionato per me):

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

289
2017-09-23 05:51



puoi anche mettere il comando sopra in .bashrc e .bash_logout. cosa significa quando accedi tu avrà una cronologia chiara e quando esci, la tua cronologia verrà cancellata - Qasim
Perché hai bisogno di / dev / null lì? non sarebbe > ~/.bash_hstory essere abbastanza? - configurator
si sarebbe abbastanza! - fromnaboo
Ho provato a farlo su una scatola di lamponi mentre connesso tramite SSH. Ho aggiunto il comando precedente (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 :/ - Advanced
Va a mostrare cosa succede quando si fa ciecamente le cose senza leggere correttamente e senza comprendere il flusso di elaborazione e dati. Mostra anche le insidie ​​di cattiva comunicazione. Quello che devav2 ha fatto è stato eseguito una volta e che Qasim avrebbe dovuto scrivere è rimuovere il comando exit prima di aggiungerlo nello script di login. - Sri


Cosa fare:

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

history -c
history -w

Perché: Come sopra annotato, history -c svuota il file ~/.bash_history. È importante notare che bash shell non scarica immediatamente la cronologia nel file bash_history. Quindi, è importante (1) scaricare la cronologia sul file e (2) cancellare la cronologia, in tutti i terminali. Questo è ciò che 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/


115
2018-04-11 20:55



In realtà, il contrario ha funzionato per me. - kristianp
In molti casi, puoi combinare questi due comandi insieme: history -cw - Elliot
Per qualche ragione questo non funziona su Ubuntu 14.04, probabilmente altri. Dovrebbe ma non è così. Se si impartisce il comando "history -cw" è possibile confermare con la freccia su che la cronologia non c'è più, ma se si avvia un'altra finestra di terminale (nel desktop Unity) con shift + clic sull'icona del terminale (ce l'ho appuntato nel programma di avvio) la cronologia dei comandi è tornata, non importa quante volte si esegue "cronologia -cw". "cat / dev / null> ~ / .bash_history" è l'unico modo che ha funzionato per me. - Hatoru Hansou
Mentre non sono Ubantu, funziona bene per la mia shell bash in OSX. - Scott Biggs
È cronologia -e quindi cronologia -w, prima si cancella la cronologia, quindi si scrivono le modifiche. Ciò è facilmente confermato chiudendo il terminale e aprendolo di nuovo, con -w prima i comandi sono di nuovo lì, con -w l'ultima storia viene effettivamente cancellata. - Hatoru Hansou


eseguire i seguenti comandi per cancellare la cronologia per sempre

history -c && history -w

in bocca al lupo!


44
2017-08-12 12:39





Ce n'è un altro molto più semplice: correre history -c al prompt del terminale e andato sono tutte le voci nel bash_history file.


19
2018-03-10 18:10



No non lo è. Esci, accedi, freccia in su mi dà tutto. Hai bisogno anche della "storia -w". - stolsvik
Se leggi la domanda dell'OP, sapresti che l'uso history -c è il metodo esatto che ha portato a questa domanda. - J.Money


Un altro modo per farlo è eliminare il ~/.bash_history file usando rm ~/.bash_history comando. Quando accedi un'altra volta, il .bash_history il file verrà creato automaticamente.


10
2017-09-23 06:18



Almeno su alcuni SO ~ / .bash_history viene scritto su disco quando si esce - Non sono sicuro di * buntus. - d-_-b


Cancella la cronologia della shell corrente:

history -c

Quando si esegue il logout, la cronologia della shell corrente viene aggiunta a ~ / .bash_history, che è una cache delle cronologie delle shell precedenti, fino a un numero massimo (vedere HISTFILESIZE in "man bash").

Se si desidera rimuovere completamente la cronologia, in pratica è necessario svuotare ~ / .bash_history suggerito da molte delle voci precedenti. Ad esempio:

history -c && history -w

Questo cancella la cronologia della shell corrente e quindi forza la cronologia della shell corrente (vuota) per sovrascrivere ~ / .bash_history .... o per essere più precisi, obbliga a sovrascrivere HISTFILE (che di default è ~ / .bash_history).

Spero che questo ti aiuti.


5
2017-07-10 17:05



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


rm ~/.bash_history; history -c; logout

Ora accedi di nuovo e verifica che la tua freccia in su non ti dia nulla.


5
2017-10-01 19:16



@KasiyA Si tratta di un server e una sessione ssh, quindi non c'è bisogno di modificare ... - Radu Rădeanu