例如,那些包含“生产”一词的内容?
最佳答案
function zshaddhistory() {
emulate -L zsh
if [[ $1 != *"production"* ]] ; then
print -sr -- "${1%%$'\n'}"
fc -p
else
return 1
fi
}
将上述内容放入交互式 shell 启动时将获取的文件中(放入 .zshrc
或像我一样从 .zshrc
获取的文件)。
替代形式(隐式添加到历史记录中):
function zshaddhistory() {
emulate -L zsh
if [[ $1 = *"production"* ]] ; then
return 1
fi
}
。注:
print -sr -- "${1%%$'\n'}"
显式地将项目添加到历史记录中。但是,如果 zshaddhistory 以零退出代码返回,那么 zsh 也会隐式执行相同的操作,因此无需使用 fc -p 并使用 setopt nohistignoredups nohistignorealldups (这是默认状态)您将在历史记录中看到不需要的重复项。
emulate -L zsh
用于确保模拟设置不会介入并更改函数体的解释。我将此行放在我在 zsh 配置中定义的每个函数的开头。
关于zsh - 如何让 zsh 从历史记录中排除某些命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934565/