退出命令提示符之前确认

退出命令提示符之前确认

每次exit在命令提示符中键入命令时,我都试图收到确认消息。为此,我尝试trap.bashrc文件中使用,但似乎 trap 不是一个解决方案,因为它无论如何都会运行原始命令。有什么办法可以让我拥有这个吗?

这是我的 bashrc 脚本代码,无法完成工作:

function _exit()        # Function to run upon exit of shell.
{
    read -p "${RED}Are you sure? " REPLY
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        echo -e "${RED}Bye${NC}"
        exit 0
    else
        #I do not know what to do here to not exit
        return
    fi  
}
trap _exit EXIT

答案1

如果 shell 是zshor bash(尽管不在sh模式下),则创建exit一个函数。在或中(尽管不在 POSIX shell 中),函数优先于 shell 内置函数(甚至是特殊的函数,如exit) 。因此,只需将函数重命名为并在函数内使用即可。当然,否则你就会陷入无休止的递归。zshbashexitcommand exit

答案2

重载功能exit()不适合该^D场景。那么,我们来谈谈trap

你的else子句应该是一些可以保留 bash 或忽略退出信号的东西。我也不知道该怎么做。

但现在,我认为你可以重新打开 bash。

如果您将您的else条款替换为:

echo
history -a
bash

然后,如果您在提示符下取消退出,则会重新打开一个新的 bash,并且看起来就像什么也没发生一样,就像旧的一样。

这种方法确实有一个缺陷,您将丢失之前输入的变量赋值,也许我们可以解决这个问题。但如果你对此很满意,那就是这样了。

无论如何,您都可以修改此代码以满足您的需求。

相关内容