如何避免.bash_history中的重复条目
我的历史记录中一次又一次列出了相同的命令。 我怎么能避免这个? 我知道这可能是通过HISTCONTROL
但我找不到正确的方法。
从bash
手册页:
HISTCONTROL
以冒号分隔的值列表,用于控制命令在历史列表中的保存方式。 如果值列表包含
ignorespace
,则以空格字符开头的行不会保存在历史记录列表中。ignoredups
的值导致不保存与先前历史记录条目匹配的行。ignoreboth
的值是ignorespace
和ignoredups
简写。 在保存该行之前,erasedups
的值会导致与当前行匹配的所有先前行从历史列表中删除。 忽略上面列表中没有的任何值。 如果未设置HISTCONTROL,或者未包含有效值,则shell解析器读取的所有行都将保存在历史列表中,具体取决于HISTIGNORE的值。 不测试多行复合命令的第二行和后续行,并且无论HISTCONTROL的值如何,都会将其添加到历史记录中。
所以在~/.bashrc
以下行:
export HISTCONTROL=ignoreboth:erasedups
把它粘在你的~/.bashrc
:
export HISTCONTROL=ignoredups
你可以改用ignoreboth
。 这是对ignorespaces
(以空格开头的命令)和ignoredups
(duplicates)的ignoredups
。
我更喜欢自己忽略ignoredups
,因为我发现当我从网站上复制一个命令时忽略前面带空格的命令的默认行为非常烦人而且因为我不小心复制在空间中而没有保存….但是每个人都有自己的。
将它放在~/.bashrc
中将在不同的会话中应用@ alvin的解决方案
HISTCONTROL=ignoredups:erasedups shopt -s histappend PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
来源: Linux:Bash历史记录:“ignoredups”和“erasedups”设置与跨会话的共同历史冲突
export HISTCONTROL=erasedups
将以下内容添加到~/.bashrc
:
export HISTCONTROL=ignoredups
为此,您可以使用此命令:
nano ~/.bashrc
要唯一地记录每个新命令是棘手的。 首先,您需要添加到~/.profile
或类似的:
HISTCONTROL=erasedups PROMPT_COMMAND='history -w'
然后你需要添加到~/.bash_logout
:
history -a history -w