zsh 是否有与 bash 的“history -c”相当的功能?

zsh 是否有与 bash 的“history -c”相当的功能?

我管理着一个俱乐部的 Linux 服务器,但我不是唯一的管理员。所有管理员都以 root 身份登录。请不要问我为什么,这是其他管理员的多数决定。我知道这不是最佳选择。

但是,我希望登录时拥有自己的历史记录。使用 bash,我这样做了:

history -c; history -r ~/.my_own_bash_history

现在,我们计划切换到 zsh。我并不反对,但在我的家用电脑上测试 zsh 时,我怀念它的history -c功能。我了解到 zsh 有命令fc(而不是history)和-R-W(而不是-r-w)用于从文件读取/写入历史记录。但我找不到任何可以-c完全清除历史记录的东西,或者从文件中读取历史记录的替代方案,比如“全部替换”模式。是我忽略了它还是它真的丢失了?

答案1

该问题已在 Unix 和 Linux 上得到解答:

要获取空的历史记录,请暂时设置 HISTSIZE 为零。

function erase_history { local HISTSIZE=0; }
erase_history

如果您想从此 shell 实例中删除新的历史记录但保留最初加载的旧历史记录,请按上述方法清空历史记录然后重新加载已保存的历史记录fc -R

如果你不想erase_history让通话记录在历史记录中,你可以在zshaddhistory

function zshaddhistory_erase_history {
  [[ $1 != > [[:space:]]#erase_history[[:space:]]# ]] 
}
zshaddhistory_functions+=(zshaddhistory_erase_history)

删除一个特定的历史元素(在 bash 中)是另一回事。我认为除了以下方法之外没有其他办法:history -d NUM

  1. 保存历史记录:fc -AI附加到历史记录文件,或fc -WI覆盖历史记录文件,取决于您的历史记录共享偏好。
  2. 编辑历史文件($HISTFILE)。
  3. 重新加载历史文件:fc -R

来源如何在 zsh 中清除历史记录,回答者Gilles ‘所以,别再作恶了’

相关内容