确认在zsh中删除文件的命令是rm

4
发现了“trash-put”功能后,我希望在大多数情况下都使用它来代替“rm”命令。如果我只是为其设置别名,那么在没有我的配置文件的机器上,我可能会感到太安全了。所以我想出了以下方法(在我的.zshrc中):
function rm() {
    local go_ahead
    read -q "go_ahead?Are you sure you don't want to use rms? (y/n)"
    echo ""
    if [[ "$go_ahead" == "y" ]]; then
        /bin/rm $*
    fi
}
alias rms='trash-put'

看起来可以工作,但我对zsh脚本没有太多经验...这是实现我想要的好方法吗?

谢谢 彼得


可能更适合在unix.stackexchange.com上提问。 - Munim
2
你可能想要查看选项 RM_STAR_SILENTRM_STAR_WAIT,并且也许使用 setopt rm_star_waitsetopt NO_rm_star_silent。此外,这是一篇关于编写更安全的rm脚本的有趣文章(来自具有丰富Zsh脚本编写经验的人)http://www.zsh.org/mla/users/2014/msg00114.html。 - Francisco
我发现这种方法很有用,可以让 `exec' 要求确认 :-) - SamB
1个回答

2

那么,为什么要创建一个函数和别名,而不是简单地执行以下操作:

alias rm="rm -i"

或者转换您的rm文件,使其变成:
function rm() {
    local go_ahead
    read -q "Are you sure you don't want to use trash-put? [y/N]"
    echo ""
    if [[ "$go_ahead" = "y" ]]; then
        /bin/rm $*
    else
        /usr/bin/env trash-put $*
    fi
}

如果您不说y,它将运行trash-put


谢谢你的回答,但我宁愿不必每次都确认删除。这就是为什么我使用了rms别名的原因。 - Peter
嗯,我通常使用别名为rm -irm命令,并在不需要确认时使用rm -f - zmo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接