명령 프롬프트를 종료하기 전에 확인하세요.

명령 프롬프트를 종료하기 전에 확인하세요.

exit명령 프롬프트에 명령을 입력할 때마다 확인 메시지를 표시하려고 합니다 . 이를 위해 파일 trap에서 사용하려고 시도했지만 .bashrc어쨌든 원래 명령을 실행하므로 트랩이 해결책이 아닌 것 같습니다. 이걸 가질 수 있는 방법이 있나요?

다음은 작업을 완료할 수 없는 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

쉘이 zshor bash(모드는 아니지만 sh) 이면 exit함수를 만드십시오. 함수는 또는 (POSIX 쉘에서는 아님) exit의 쉘 내장 기능( 과 같은 특수 기능도 포함) 보다 우선합니다 . 따라서 함수의 이름을 바꾸고 대신 함수 내에서 사용하세요 . 그렇지 않으면 물론 끝없는 재귀가 발생합니다.zshbashexitcommand exit

답변2

과부하 기능이 시나리오 exit()에 맞지 않습니다 ^D. 그럼, 에 대해 이야기 해 봅시다 trap.

귀하 else의 절은 bash를 유지하거나 종료 신호를 무시할 수 있는 것이어야 합니다. 나도 그걸 어떻게 해야할지 모르겠어요.

하지만 지금은 bash를 다시 열 수 있다고 생각합니다.

조항을 다음과 같이 바꾸면 else:

echo
history -a
bash

그런 다음 프롬프트에서 종료를 취소하면 새 bash가 다시 열리고 이전 bash와 마찬가지로 아무 일도 일어나지 않은 것처럼 보입니다.

이 접근 방식에는 결함이 있습니다. 이전에 입력한 변수 할당이 손실됩니다. 이에 대해 작업할 수 있습니다. 하지만 당신이 이것으로 괜찮다면, 이것이다.

어쨌든 필요에 맞게 이 코드를 수정할 수 있습니다.

관련 정보