답변:
네, 두 가지 방법이 있습니다. 하나는에 설정 PROMPT_COMMAND하고 .bashrc, 다른 하나는 명령에 PS1대한 명령 대체를 설정 하는 것 echo $?입니다.
방법 1 :
bash 매뉴얼 페이지에서 :
PROMPT_COMMAND
If set, the value is executed as a command prior to issuing each primary prompt.
이 변수를 무엇으로 설정하든 매번 프롬프트를 그리기 전에 실행됩니다. 데모:
$> PROMPT_COMMAND=" echo 'Last command exited with' \$? 'code' "
Last command exited with 0 code
$> ls /etc/passwd > /dev/null
Last command exited with 0 code
$> ls /etc/asdf > /dev/null
ls: cannot access /etc/asdf: No such file or directory
Last command exited with 2 code
$>
의 사용에 유의하십시오 \$?. 영구적으로 변경하려면 저장하십시오.bashrc
방법 2
내 PS1프롬프트가 다음과 같이 설정 되었다고 가정 하십시오.
PS1='
user@ubuntu:$> '
이 프롬프트가 화면에서 다시 그려 질 때마다 (앞의 각 명령이 실행 된 후) 프로그램을 실행하려면 다음 command substitution $(. . .) 과 같이 프롬프트에서 사용 하고 설정해야합니다.
PS1=' [ $? ]
user@ubuntu: $> '
데모:
$> PS1=' [ $? ]
> $>_ '
[ 0 ]
$>_ ls /etc/passwd > /dev/null
[ 0 ]
$>_ ls /etc/asdf > /dev/null
ls: cannot access /etc/asdf: No such file or directory
[ 2 ]
$>_
PS1을 두 줄로 나눕니다 . top은 have [ exitcode ]와 bottom $> <blank space>'입니다. 그렇기 때문에 두 번째 줄에 여러 줄 이 >있기 때문입니다 $> '(행복 >은 여러 줄 PS2명령을 요구하는 프롬프트입니다). 또는 다음과 같이 할 수 있습니다 ( $'...'구조를 확인하십시오).
$> PS1=$'[ $? ] \n$> '
[ 0 ]
$>
PS1사용자 입력을 받기 전에 인쇄되는 텍스트 일뿐입니다. 매개 변수 확장 및 명령 대체에 영향을 미치지 않으므로 $(...)예를 들어 무엇이든 넣을 수 $( pwd )있습니다. 예를 들어 노트북 배터리 전원을 보여주는 사용자 지정 스크립트와 함께 사용했습니다
아치 위키 에서 선택한 방법 은 trap ERR입니다. trap신호가 수신 될 때 또는 다른 특정 이벤트에 대해 명령을 실행하기 위해 Bash에서 사용됩니다. ERR반환 값이 (정상적으로 종료 않은 경우, 반환 값은 당연히 0이 될 것입니다) 0이 아닌 - 오류와 함께 현재의 명령 줄 종료가 될 때마다 트랩 달렸다이다
예를 들어,
trap 'printf "\ncode %d\n\n" $?' ERR
그때:
$ echo foo
foo
$ false
code 1
$
(참고 : 후 어떤 메시지를 echo성공적으로 실행 명령 - I 명령을 입력하고 터미널이 아무것도하지 않을 때 그것은 무엇을 의미합니까? )
Arch Wiki 팁이 진행되어 메시지의 색상이 지정되어 눈에 띄는 노란색 메시지가 나타납니다.
EC() { echo -e '\e[1;33m'code $?'\e[m\n'; }
trap EC ERR
효과:
실제로, 내가해야 할 일은 code명령에서 실패했음을 알기 위해 출력에서 노란색 을 주시 하십시오.