如何使用 hist_ignore_dups 忽略 zsh 中启用 Extended_history 的重复行?

如何使用 hist_ignore_dups 忽略 zsh 中启用 Extended_history 的重复行?

当启用hist_ignore_dupsin时zsh,我发现 中有很多重复的行$HISTFILE

(笔记:HISTFILE="$HOME/.zsh_history"

$ cat $HISTFILE

: 1593874281:0;ls
: 1593874287:0;l
: 1593874288:0;ls
: 1593874291:0;l

我认为hist_ignore_dups应该解决这个问题。 (HIST_IGNORE_DUPS http://zsh.sourceforge.net/Doc/Release/Options.html)。

但重复的行仍然出现在 中$HISTFILE,即使已经通过withhist_ignore_dups启用了ohmyzsh历史插入。

## History command configuration
setopt extended_history       # record timestamp of command in HISTFILE
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
setopt hist_ignore_dups       # ignore duplicated commands history list
setopt hist_ignore_space      # ignore commands that start with space
setopt hist_verify            # show command with history expansion to user before running it
setopt share_history          # share command history data

我怀疑这一点extended_history并且hist_ignore_dups存在冲突。

答案1

按照文档:

HIST_IGNORE_DUPS( -h)

如果命令行与前一个事件重复,请勿将其输入到历史列表中。

请注意,这是“这”之前的事件和不是“任何”之前的事件。

如果你想忽略全部重复,你需要设置...

相关内容