Realmente disfruto usando control+r
para buscar recursivamente mi historial de comandos. He encontrado algunas buenas opciones que me gusta usar con él:
# 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
El único problema para mí es que erasedups
solo borra los duplicados secuenciales, de modo que con esta cadena de comandos:
ls
cd ~
ls
El ls
comando en realidad se grabará dos veces. He pensado en ejecutar periódicamente w / cron:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
Esto lograría eliminar los duplicados, pero desafortunadamente el orden no se conservaría. Si no hago sort
el archivo primero, no creo que uniq
pueda funcionar correctamente.
¿Cómo puedo eliminar duplicados en mi .bash_history, preservando el orden?
Crédito adicional:
¿Hay algún problema al sobrescribir el .bash_history
archivo a través de un script? Por ejemplo, si elimina un archivo de registro de apache, creo que debe enviar una señal de nohup / reset kill
para que vacíe su conexión con el archivo. Si ese es el caso con el .bash_history
archivo, ¿tal vez podría usarlo ps
para verificar y asegurarme de que no haya sesiones conectadas antes de ejecutar el script de filtrado?
history
comando. ¿Dónde debería estar mirando?
ignoredups
lugar deerasedups
por un tiempo y vea cómo funciona para usted.