从 ZSH 历史文件中删除历史记录或行号

从 ZSH 历史文件中删除历史记录或行号

由于某种原因,我将这些奇数行号或某种历史编号放入我的~/.zsh_history文件中,如下所示:

: 1266694881:0;rake db:migrate

我宁愿不必诉诸于正则表达式来删除开头,但我希望我的行是这样的:

rake db:migrate

有人对如何解决这个问题有什么建议吗?我已经找到了,setopt EXTENDED_HISTORY但似乎没什么用。

答案1

尝试:

unsetopt EXTENDED_HISTORY

这些数字是自命令开始的 Unix 纪元以来的秒数以及命令运行的持续时间(以秒为单位)。

编辑:

我忘了提到您应该使用fc命令与历史记录交互而不是解析历史记录文件。 至少有几个原因。 其一是历史记录文件没有内存条目,直到您退出 shell、达到阈值或您明确使用命令写入它fc -AI(我相信)。 其次,您可以保持EXTENDED_HISTORY打开状态并仍然与条目交互,而不必删除该信息。 如果它关闭,那么当您这样做时fc -ld,shell 会使用 shell 启动的时间作为历史记录中该时间之前的命令的时间戳。 如果它关闭,它会记住实际日期和时间(您在文件中看到的数字)。

man zshbuiltins

列出最近的条目:

fc -l

列出它们,但不加命令编号:

fc -ln

列出最近的20条命令,不带命令编号:

fc -ln -20

包含时间戳并仅打印最新的命令:

fc -lnd -1

显示所有包含字符串“setop”的命令(最近​​ 50 个以内的命令)(显示setoptunsetopt):

fc -l -m '*setopt*' -50

答案2

添加~/.zshrc

setopt no_extended_history no_share_history

对于其他 shell,请添加到~/.bashrc、等。~/.config/fish/config.fish

相关内容