退出命令提示字元之前確認

退出命令提示字元之前確認

每次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,並且看起來就像什麼也沒發生一樣,就像舊的一樣。

這種方法確實有一個缺陷,您將丟失先前輸入的變數賦值,也許我們可以解決這個問題。但如果你對此很滿意,那就是這樣了。

無論如何,您都可以修改此程式碼以滿足您的需求。

相關內容