Confirme antes de salir del símbolo del sistema

Confirme antes de salir del símbolo del sistema

Intento recibir un mensaje de confirmación cada vez que escribo exitun comando en el símbolo del sistema. Para hacer esto, intenté usarlo trapen .bashrcel archivo pero parece que trap no es una solución ya que de todos modos ejecuta el comando original. ¿Hay alguna manera de que pueda tener esto?

Aquí está mi código de script bashrc que no pudo realizar el trabajo:

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

Respuesta1

Si el shell está en modo zsho bash(aunque no en shmodo), cree exituna función. Las funciones tienen prioridad sobre las funciones integradas del shell (incluso las especiales como exit) en zsho bash(aunque no en los shells POSIX). Así que simplemente cambie el nombre de su función exity úsela command exitdentro de la función. De lo contrario, por supuesto, tendrías una recursión infinita.

Respuesta2

La función de sobrecarga exit()no se ajusta al ^Descenario. Entonces, hablemos de trap.

Su elsecláusula debe contener algunas cosas que puedan mantener bash o ignorar la señal de salida. Yo tampoco sé cómo hacer eso.

Pero por ahora, como alternativa, creo que puedes volver a abrir bash.

Si reemplaza su elsecláusula con esta:

echo
history -a
bash

Y luego, si cancela la salida cuando se le solicite, se volverá a abrir un nuevo bash y parecerá como si no hubiera pasado nada, como en el anterior.

Este enfoque tiene un defecto: perderá las asignaciones de variables que escribió antes; es posible que podamos trabajar en eso. Pero si esto te parece bien, esto es todo.

Puede modificar este código para adaptarlo a sus necesidades de todos modos.

información relacionada