在 Bash 中,我知道在命令前放置一个空格会阻止它被保存在历史记录中,那么 zshell 的等效功能是什么?
答案1
使用 HIST_IGNORE_SPACE 选项。
setopt HIST_IGNORE_SPACE
手册 zshoptions
HIST_IGNORE_SPACE
当命令行的第一个字符是空格,或者其中一个扩展别名包含前导空格时,从历史记录列表中删除命令行。请注意,命令会保留在内部历史记录中,直到输入下一个命令后才会消失,这样您就可以短暂地重复使用或编辑该行。如果您想让它立即消失而不输入其他命令,请键入空格并按回车键。
答案2
如果你希望更精细地控制添加到 ZSH 历史记录的内容,则可以zshaddhistory
在 中定义该函数.zshrc
。以下定义使用正则表达式来定义要忽略的模式:
function zshaddhistory() {
emulate -L zsh
if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
man zshopts
请注意,下面的行为HIST_IGNORE_SPACE
仍然存在:
请注意,该命令会保留在内部历史记录中,直到输入下一个命令后才会消失,这样您就可以短暂地重复使用或编辑该行。
因此,要测试它,您必须额外点击[Enter]
。这会从 的输出history
以及 ↑ 箭头历史记录中删除该命令。
请参阅此插件以保存日志条目,但根据正则表达式屏蔽敏感数据:https://github.com/jgogstad/passwordless-history