比如说,那些包含“生产”这个词的东西?

最佳答案

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 -psetopt nohistignoredups nohistignorealldups(这是默认状态),您将在历史记录中看到不需要的重复项。
emulate -L zsh 用于确保仿真设置不会介入并更改函数体的解释。我将此行放在我在 zsh 配置中定义的每个函数的开头。

关于zsh - 如何让 zsh 从历史记录中排除某些命令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6934565/

10-15 00:42