Realmente disfruto usando control+rpara 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 erasedupssolo borra los duplicados secuenciales, de modo que con esta cadena de comandos:
ls
cd ~
ls
El lscomando 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 sortel archivo primero, no creo que uniqpueda 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_historyarchivo 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 killpara que vacíe su conexión con el archivo. Si ese es el caso con el .bash_historyarchivo, ¿tal vez podría usarlo pspara verificar y asegurarme de que no haya sesiones conectadas antes de ejecutar el script de filtrado?
historycomando. ¿Dónde debería estar mirando?
ignoredupslugar deerasedupspor un tiempo y vea cómo funciona para usted.