Mi piace molto usare la control+r
ricerca 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 erasedups
cancella solo i duplicati sequenziali, quindi con questa stringa di comandi:
ls
cd ~
ls
Il ls
comando 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 sort
visualizzo prima il file, non credo che uniq
possa funzionare correttamente.
Come posso rimuovere i duplicati nel mio .bash_history, preservando l'ordine?
Credito extra:
Ci sono problemi con la sovrascrittura del .bash_history
file tramite uno script? Ad esempio, se si rimuove un file di registro di Apache penso che sia necessario inviare un segnale nohup / reset kill
per farlo svuotare la connessione al file. Se questo è il caso del .bash_history
file, forse potrei in qualche modo usare ps
per verificare e assicurarsi che non ci siano sessioni connesse prima che venga eseguito lo script di filtro?
history
comando. Dove dovrei cercare?
ignoredups
inveceerasedups
per un po 'e vedi come funziona per te.