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 bash
Se 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 history
e set -o history
per spostarsi avanti e indietro quando sto facendo cose segreto;)
unset HISTFILE
non funziona. set -/+o history
funziona 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 -c
per cancellare l'intera cronologia dei comandi.
Assicurarsi che HISTCONTROL
contenga ignorespace
. Probabilmente vorrai aggiungere HISTCONTROL=ignorespace
( HISTCONTROL=ignoredups:ignorespace
o 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/null
funziona con lo stesso effetto. Comprendi che i comandi sono ancora registrati nell'elenco di memoria, prova il history
comando 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 history
non lo taglierà per la maggior parte di noi.
HISTIGNORE
, di cui subsumes
la 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_history
file.
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 pwd
comando 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)
HISTFILE
viene 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 history
funziona come indicato.