Я действительно наслаждаюсь control+rрекурсивным поиском в моей истории команд. Я нашел несколько хороших вариантов, которые мне нравится использовать с ним:
# 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
Единственная проблема для меня состоит в том, что erasedupsстираются только последовательные дубликаты - так что с этой строкой команд:
ls
cd ~
ls
Команда lsбудет записана дважды. Я думал о периодическом запуске w / cron:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
Это приведет к удалению дубликатов, но, к сожалению, порядок не будет сохранен. Если я sortсначала не верну файл, я не верю, что он uniqможет работать должным образом.
Как я могу удалить дубликаты в моем .bash_history, сохраняя порядок?
Дополнительный кредит:
Есть ли проблемы с перезаписью .bash_historyфайла через скрипт? Например, если вы удалите файл журнала apache, я думаю, что вам нужно отправить сигнал nohup / reset, killчтобы он сбрасывал соединение с файлом. Если это так с .bash_historyфайлом, возможно, я мог бы каким-то образом использовать его, psчтобы проверить и убедиться в отсутствии подключенных сеансов до запуска сценария фильтрации?
historyкоманды. Где я должен искать?
ignoredupsвместо того,erasedupsчтобы некоторое время, и посмотрите, как это работает для вас.