Eliminazione della cronologia da ~ / .bash_history

8

Ho un paio di domande sul terminale o sulla cronologia della riga di comando che è memorizzata in ~/.bash_history .

  1. Posso vedere il file nel terminale con il comando history ma se provo ad aprirlo con gedit bash_history il file è completamente vuoto. Perché?

  2. Ho trovato come cancellare un certo numero di linee nel file dal terminale con questa linea di codice:

    for i in {1..N}; do history -d N; done
    

    dove N è il numero di linee (o comandi) che vuoi eliminare, ma ora il file di cronologia mostra quest'ultimo comando e questo non è molto intelligente se stai cercando di coprire i tuoi contenuti. Quindi la domanda è: Come posso dare l'ultima riga di codice e assicurarmi che questo non venga registrato?

posta IDK 04.09.2017 - 06:57

7 risposte

18
  1. Hai appena dimenticato il punto precedente, il comando per aprire il tuo file di cronologia del terminale (bash) è

    gedit ~/.bash_history
    

    Questo file viene aggiornato solo quando chiudi un terminale.

  2. Per rimuovere le ultime 10 linee da questo file e non ottenere questo comando registrato, apri un nuovo terminale ed esegui la seguente catena di comandi:

    sed -n -e :a -e '1,10!{P;N;D;};N;ba' ~/.bash_history && history -c && exit
    

    o

    for i in {1..10}; do sed -i '$d' ~/.bash_history; done && history -c && exit
    

    o

    head -n -10 ~/.bash_history > ~/.b_h_2 && mv ~/.b_h_2 ~/.bash_history && history -c && exit
    

    sed o head rispettivamente cancella le righe selezionate da ~/.bash_history , history -c cancella la cronologia del terminale e exit lo chiude.

risposta data dessert 04.09.2017 - 07:12
4

Il file bash_history è un file nascosto, che inizia con un punto. Devi fare

gedit ~/.bash_history

Questo aprirà il file in gedit.

    
risposta data user732773 04.09.2017 - 07:48
1

Se vuoi eliminare solo alcune parti del tuo log dei comandi , allora i metodi di cui sopra vanno bene. Se si desidera interrompere la registrazione dei comandi per una sessione bash specifica, emettere il comando

unset HISTFILE

Per essere più drastico, se non vuoi che i tuoi comandi vengano registrati , allora puoi

rm ~/.bash_history
ln -s /dev/null ~/.bash_history

Si noti che il primo metodo sarebbe valido solo per una singola sessione, mentre il secondo metodo interromperà la registrazione dei comandi per tutte le sessioni future.

    
risposta data Mukesh Sai Kumar 04.09.2017 - 11:43
1

Mi rendo conto che questo ha già una risposta accettata, ma è così che lo faccio dagli anni '80. È un ottimo modo per nascondere le tue tracce ed è un approccio multifase. Per la maggior parte è quello che non si nota se non si presta attenzione. Ecco come è fatto.

Apri un terminale / shell / sessione e fai:

 chmod 444 ~/.bash_history

esci dalla shell aprire un terminale / shell / sessione e fare: Ecco alcuni modi creativi per cancellare definitivamente la cronologia

1

 vi ~/.bash_history
 9999999 dd
 <esc>wq!

2 (crea una storia falsa)

 sudo echo "which ls" > ~/.bash_history
 sudo echo "cd ~/;ls" >> ~/.bash_history

quindi per buona misura:

 chmod 444 ~/.bash_history

esci dalla shell

apri una nuova shell e digita

 history

ciò che lo rende meno evidente è che se uno fa un ls -ratl, il ~ / .bash_history finirà per scomparire nel rantolo della lista delle directory. Non si presenterà come un collegamento che attirerebbe l'attenzione non necessaria. La maggior parte delle persone non fa un -a sulla propria radice, che è utile quando si desidera l'emulazione.

Il lato negativo di questo approccio è che perdi la possibilità di tornare indietro e recuperare la cronologia. il file ~ / .bash_history effettivo potrebbe anche finire nella parte superiore di un elenco di directory, poiché potrebbe finire con una data di modifica molto vecchia nel tempo, che di per sé potrebbe portare a scoprire che qualcosa non funziona.

    
risposta data Div 04.09.2017 - 19:48
0

1) Esegui sh ; questo genera una sottotitola di cenere, che non registra affatto la storia. Modifica da lì

2) Aggiungi la riga HISTCONTROL=ignoreboth a .bashrc , e fai exec bash per sostituire permanentemente la shell corrente con una reinizializzata, quindi fai tutti i comandi che non vuoi loggati con uno spazio iniziale.

    
risposta data Joshua 04.09.2017 - 17:51
0

dato che non posso ancora commentare, aggiungerò i miei commenti come risposta:

man history risponderà a tutto.

la risposta al n. 1 è che la cronologia è in memoria. history -a per salvare immediatamente nel file. history -w salverà ma potrebbe rovinare altre sessioni.

risposta n. 2: history -a , gedit, elimina le righe che vuoi, history -r

    
risposta data gcb 04.09.2017 - 19:54
0

La cronologia non viene salvata finché non esci dalla shell. Prova a uscire dalla shell e poi guarda nuovamente .bash_history. La cronologia dei comandi dovrebbe essere lì.

    
risposta data The Lightning Stalker 04.09.2017 - 16:27

Leggi altre domande sui tag