继https://www.baeldung.com/linux/history-remove-avoid-duplicates之后,我添加了
clean_history() {
awk '!a[$0]++' $HOME/.bash_history > $HOME/.bash_history.tmp && mv $HOME/.bash_history.tmp $HOME/.bash_history
}
trap clean_history DEBUG # execute after every command
添加到我的 ~/.bashrc 文件中,以确保在执行每个命令后,删除重复的条目。这对我来说很重要,因为 kile(KDE LaTeX 编辑器)在历史记录中留下了大量“clear”和“cd ...”命令,这实际上会破坏单个 LaTeX 编写会话中的历史记录。而且我还没有找到任何方法可以阻止 kile 这样做。
无论如何……上面的代码行有效地删除了命令的所有后续条目,并将第一个条目保留在历史记录中。但是,我希望最后一个条目保留在历史记录中,并删除所有先前的条目。如何做到这一点?
顺便说一句:Kile 无视
HISTCONTROL=ignoredups:erasedups
因此使用这种方法似乎不是一个选择。
如果我们能够一起阻止凯尔写入历史,我也会很高兴。
非重复:
- 删除文本文件中的重复条目将保留文件中的第一个条目
- 那么如何删除文本文件中的重复行并获取删除的行数?
- 如何停止 Bash 追加历史记录
HISTCONTROL