比如说,那些包含“生产”这个词的东西?
最佳答案
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/