Confirme antes de sair do prompt de comando

Confirme antes de sair do prompt de comando

Estou tentando receber uma mensagem de confirmação sempre que digito exitcomando no prompt de comando. Para fazer isso, tentei usar trapin .bashrcfile mas parece que trap não é uma solução, pois ele executa o comando original de qualquer maneira. Existe uma maneira de eu ter isso?

Aqui está meu código de script bashrc que não conseguiu realizar o trabalho:

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

Responder1

Se o shell estiver zshou bash(embora não esteja no shmodo), crie exituma função. As funções têm precedência sobre os shells internos (mesmo os especiais como exit) em zshou bash(embora não em shells POSIX). Portanto, basta renomear sua função para exite usá-la command exitdentro da função. Caso contrário, você teria recursões sem fim, é claro.

Responder2

A função de sobrecarga exit()não se ajusta ao ^Dcenário. Então, vamos conversar sobre trap.

Sua elsecláusula deve conter algumas coisas que podem conter o bash ou ignorar o sinal de saída. Eu também não sei como fazer isso.

Mas, por enquanto, alternativamente, acho que você pode reabrir o bash.

Se você substituir sua elsecláusula por esta:

echo
history -a
bash

E então, se você cancelar a saída no prompt, um novo bash será reaberto e parecerá que nada aconteceu, assim como no antigo.

Essa abordagem tem uma falha: você perderá as atribuições de variáveis ​​digitadas antes, talvez possamos trabalhar nisso. Mas se você está bem com isso, é isso.

Você pode modificar esse código para atender às suas necessidades de qualquer maneira.

informação relacionada