Mi piace molto usare la control+rricerca ricorsiva nella cronologia dei miei comandi. Ho trovato alcune buone opzioni che mi piace usare con esso:
# ignore duplicate commands, ignore commands starting with a space
export HISTCONTROL=erasedups:ignorespace
# keep the last 5000 entries
export HISTSIZE=5000
# append to the history instead of overwriting (good for multiple connections)
shopt -s histappend
L'unico problema per me è che erasedupscancella solo i duplicati sequenziali, quindi con questa stringa di comandi:
ls
cd ~
ls
Il lscomando verrà effettivamente registrato due volte. Ho pensato di eseguire periodicamente w / cron:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
Ciò consentirebbe di rimuovere i duplicati, ma purtroppo l'ordine non verrebbe conservato. Se non sortvisualizzo prima il file, non credo che uniqpossa funzionare correttamente.
Come posso rimuovere i duplicati nel mio .bash_history, preservando l'ordine?
Credito extra:
Ci sono problemi con la sovrascrittura del .bash_historyfile tramite uno script? Ad esempio, se si rimuove un file di registro di Apache penso che sia necessario inviare un segnale nohup / reset killper farlo svuotare la connessione al file. Se questo è il caso del .bash_historyfile, forse potrei in qualche modo usare psper verificare e assicurarsi che non ci siano sessioni connesse prima che venga eseguito lo script di filtro?
historycomando. Dove dovrei cercare?
ignoredupsinveceerasedupsper un po 'e vedi come funziona per te.