我管理着一个俱乐部的 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
- 保存历史记录:
fc -AI
附加到历史记录文件,或fc -WI
覆盖历史记录文件,取决于您的历史记录共享偏好。- 编辑历史文件(
$HISTFILE
)。- 重新加载历史文件:
fc -R
。