Confirme antes de sair do prompt de comando

3

Estou tentando receber uma mensagem de confirmação sempre que digito exit no prompt de comando. Para fazer isso, tentei usar o arquivo trap in .bashrc , mas parece que o trap não é uma solução, já que ele executa o comando original. Existe uma maneira que eu possa ter isso?

Aqui está o 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
    
por sowrov 22.04.2013 / 07:24

2 respostas

6

Se o shell for zsh ou bash (embora não esteja no modo sh ), crie exit a função. As funções têm precedência sobre os recursos internos do shell (mesmo os especiais como exit ) em zsh ou bash (embora não em shells POSIX). Então apenas renomeie sua função para exit e use command exit dentro da função. Caso contrário, você teve recursão sem fim, é claro.

    
por 22.04.2013 / 08:19
0

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

Sua cláusula else deve ser alguma coisa que possa 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 cláusula else por:

echo
history -a
bash

E se você cancelar a saída no prompt, um novo bash será reaberto, e será muito parecido com nada, como no antigo.

Esta abordagem tem uma falha, você perderá as atribuições variáveis que você digitou antes, pode ser que possamos trabalhar nisso. Mas se você é legal com isso, é isso.

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

    
por 14.04.2018 / 10:52