【问题标题】:How to remove unknown commands from shell terminal history (zsh)如何从 shell 终端历史记录中删除未知命令(zsh)
【发布时间】:2021-05-09 08:30:29
【问题描述】:

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

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

【问题讨论】:

  • (zsh or bash) 请选择一个,它们不同。你标记了zsh,所以选择zsh。如果您对bash 感兴趣,请单独提出问题。

标签: shell terminal zsh zshrc


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2015-03-15
    • 2012-12-11
    相关资源
    最近更新 更多