如何避免 .bash_history 中的重复条目

如何避免 .bash_history 中的重复条目

相同的命令在我的历史记录中反复出现。我该如何避免这种情况?我知道可以通过以下方法实现,HISTCONTROL但我还没有找到正确的方法。

答案1

bash手册页中:

组织控制

用冒号分隔的值列表,控制如何将命令保存在历史列表中。如果值列表包括ignorespace,则以空格字符开头的行将不会保存在历史列表中。值为 ignoredups会导致不保存与前一个历史条目匹配的行。值为ignorebothignorespace 和 的 简写ignoredups。值为erasedups会导致在保存当前行之前从历史列表中删除与当前行匹配的所有先前的行。任何不在上述列表中的值都将被忽略。如果 HISTCONTROL 未设置,或者未包含有效值,则 shell 解析器读取的所有行都将保存在历史列表中,但要遵守 HISTIGNORE 的值。多行复合命令的第二行和后续行不会进行测试,并且无论 HISTCONTROL 的值如何,它们都会被添加到历史记录中。

因此,将以下行放入您的~/.bashrc

export HISTCONTROL=ignoreboth:erasedups

答案2

将其粘贴到您的~/.bashrc

export HISTCONTROL=ignoredups

您也可以使用ignoreboth。这是ignorespaces(以空格开头的命令) 和ignoredups(重复) 的简写。

我更喜欢ignoredups单独使用它,因为当我从网站上复制命令并且由于我不小心复制了一个空格而无法保存时,我发现忽略前面带有空格的命令的默认行为非常烦人......但每个人都有自己的想法。

答案3

将其放入~/.bashrc将在不同的会话中应用@alvin的解决方案

HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"

来源:Linux:Bash 历史记录:“ignoredups”和“erasedups”设置与会话间的通用历史记录冲突

答案4

export HISTCONTROL=erasedups

相关内容