C'è un modo per sospendere temporaneamente il tracciamento della cronologia in bash, in modo da entrare in una sorta di modalità "in incognito"? Sto inserendo cose nel mio terminale che non voglio informazioni finanziarie sensibili registrate.
C'è un modo per sospendere temporaneamente il tracciamento della cronologia in bash, in modo da entrare in una sorta di modalità "in incognito"? Sto inserendo cose nel mio terminale che non voglio informazioni finanziarie sensibili registrate.
Risposte:
Questo dovrebbe essere quello che stai cercando:
unset HISTFILE
man bashSe HISTFILE non è impostato o se il file della cronologia non è scrivibile, la cronologia non viene salvata.
In alternativa, se si desidera disattivarlo e riaccenderlo, potrebbe essere più facile da usare set:
set +o history
set -o history
set +o historye set -o historyper spostarsi avanti e indietro quando sto facendo cose segreto;)
unset HISTFILEnon funziona. set -/+o historyfunziona come un fascino! grazie
Usando bash, imposta HISTCONTROL="ignorespace"e precede con spazio qualsiasi comando che non desideri venga registrato nella cronologia. Nel caso in cui ti sei dimenticato di prendere qualsiasi misura, c'è anche history -d <number>per cancellare una voce specifica o history -cper cancellare l'intera cronologia dei comandi.
Assicurarsi che HISTCONTROLcontenga ignorespace. Probabilmente vorrai aggiungere HISTCONTROL=ignorespace( HISTCONTROL=ignoredups:ignorespaceo qualcosa del genere) al tuo ~/.bashrc. Quindi qualsiasi riga di comando che inizia con uno spazio viene omessa dalla cronologia.
Un'altra possibilità è quella di iniziare una nuova sessione bash che non salva la sua cronologia.
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
Se è necessario evitare di memorizzare diversi comandi e si desidera comunque utilizzare la freccia su per accedere ai comandi precedenti, utilizzare:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
Esistono quattro modi (livelli) per controllare la modalità di memorizzazione dei comandi.
Il primo e più semplice è usare ignorespace(o ignorare entrambi):
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
Ciò consentirà di utilizzare uno spazio prima dei comandi che si desidera evitare di essere registrati nell'elenco di memoria di history. E, di conseguenza, poiché non esiste alcun comando registrato in memoria che possa essere inviato al file, si eviterà anche un comando da inviare al file elencato in $HISFILE.
Evitare di registrare i comandi nel file in $HISTFILE:
$ unset HISTFILE
Se non impostato, la cronologia dei comandi non viene salvata all'uscita da una shell.
Null HISTFILE=''e / o impostato su HISTFILE=/dev/nullfunziona con lo stesso effetto. Comprendi che i comandi sono ancora registrati nell'elenco di memoria, prova il historycomando o la freccia su.
Avvertenza: se HISTFILE viene ripristinato prima dell'esistenza della shell, tutto ciò che è stato registrato in memoria potrebbe comunque essere scritto nel file.
Evitare di registrare nuovi comandi nell'elenco cronologico in memoria. E, poiché non è in memoria, non può essere registrato su file.
$ shopt -ou history # or set +o history
Riattivare con shopt -os history(o set -o history)
Rimuovere tutti i comandi dall'elenco cronologico in memoria:
$ HISTSIZE=0
Tutti i comandi vengono cancellati (dalla memoria) e quindi nulla può essere archiviato nel file, ovviamente, fino a quando la variabile non viene reimpostata su un valore numerico valido.
man historynon lo taglierà per la maggior parte di noi.
HISTIGNORE, di cui subsumesla funzione HISTCONTROL.
LESS=+'/^ *HISTI' man bash(non sono le "pagine del manuale"?). @NathanBasanese
C'è un modo semplice per disattivare la cronologia, quindi i comandi non verranno memorizzati nel .bash_historyfile.
Devi mettere lo spazio bianco o tab davanti a qualsiasi comando, in modo che quel comando non venga memorizzato nella cronologia. Per esempio:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
Il pwdcomando non verrà archiviato nella cronologia, poiché ha spazi bianchi nella parte anteriore.
export HISTFILE=/dev/null
Questo è il mio modo di andare. Nel caso in cui il HISTORY / HISTFILE / HISTCONTROL non impostato non funzioni, esportarlo in / dev / null ha sempre funzionato per me.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
HISTFILEviene verificato solo all'uscita da bash, quindi il primo metodo non funziona così com'è (se si ripristina il valore, il comando verrà salvato).set +o historyfunziona come indicato.