我非常喜欢使用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
命令实际上将被记录两次。我考虑过定期运行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
一会儿,看看它如何为您工作。