微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 shell 终端历史记录 (zsh) 中删除未知命令

如何解决如何从 shell 终端历史记录 (zsh) 中删除未知命令

我正在尝试在 zsh 中设置我的历史记录。我已经激活了像 HIST_IGnorE_ALL_DUPS 这样的选项,它会删除历史记录中的重复命令。

但我也在寻找一些可以删除不存在的命令的选项,这些命令返回 127“未找到命令”。

解决方法

Zsh 中没有这样的选项,但这可以通过 zsh-hist plugin 轻松实现:

autoload -Uz add-zsh-hook

command-not-found () {
  # -f: force
  # -s: silent
  # d: delete
  # -1: most recent history item
  (( ? == 127 )) && hist -fs d -1
}

add-zsh-hook precmd command-not-found

如果返回 127,这将自动从历史记录中删除最后一项。

或者,除了删除它,您还可以将已删除的命令加载到编辑缓冲区中,这样您就可以立即修复您所犯的任何错字,使用 hist f 而不是 hist d:>

autoload -Uz add-zsh-hook

command-not-found () {
  # f: fix
  (( ? == 127 )) && hist -fs f -1
}

add-zsh-hook precmd command-not-found

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。