微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让zsh从历史记录中排除某些命令?

比如那些包含“生产”这个词的那些?

解决方法

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隐含地执行zsh,因此如果没有fc -p并且使用setopt nohistignoredups nohistignorealldups(这是认状态),您将在历史记录中看到不需要的重复项.

模拟-L zsh是为了确保模拟设置不会介入并更改函数体的解释.我把这一行放在我在zsh配置中定义的每个函数的开头.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐