cra*_*aig 9 bash command-history
我在按照我想要的方式设置 Bash 的终端历史记录时遇到了很多麻烦。我希望没有重复的条目,如果我输入一个命令,我希望它被保存并删除上面的重复项。
问题是history命令向我显示它以我想要的方式运行,但是一旦我注销,重复项就会再次出现。我相信它只是将历史附加到现有历史之上。我的.bashrc文件中有这些行:
HISTCONTROL=ignoreboth:erasedups
shopt -u histappend
Run Code Online (Sandbox Code Playgroud)
我什至尝试取消注释shopt,但它仍然在注销时附加历史记录。我怎样才能让历史记录在我注销之前完全正确?
本erasedups应该做你在考虑到重复想要的东西-只需要注意消除重复在追加一个新条目历史的时刻触发,它会删除所有旧事件的命令,只留下最近的。
在我看来,这只能偶尔有用。(否则你为什么要使用历史?)你可以通过发出
history -c; history -r
Run Code Online (Sandbox Code Playgroud)
这会清除当前保存在内存中的所有历史条目,然后从历史文件中重新读取整个历史记录。因此,您登录当前 shell 会话后发出的所有命令都被遗忘了。我发现它在我进行大量测试(许多类似的命令,但不是真正的重复)然后不想让我的历史因此而垃圾的情况下非常有用 - 所以我在我的中有一个别名.bashrc:
alias hrr='history -c; history -r'
Run Code Online (Sandbox Code Playgroud)
(hrr被记住为“历史重读”)。