이 script
명령은 전체 셸 세션을 파일에 기록합니다. 이것은 훌륭하지만 세션을 볼 때 내가 실행하는 각 명령에 대한 종료 코드를 볼 수 있기를 원합니다.
script
이를 로그에 캡처 할 수 있나요 ? 이상적으로는 세션 사용자에게 표시되지 않아야 script
하지만 필요한 경우 허용됩니다.
실행 스크립트 예시:
me:~ oliverlade$ script
Script started, output file is typescript
bash-3.2$ echo "hello"
hello
bash-3.2$ true
bash-3.2$ false
bash-3.2$ exit
exit
Script done, output file is typescript
로그 파일 내용:
me:~ oliverlade$ cat typescript
Script started on Sun Aug 7 13:02:43 2016
bash-3.2$ echo "hello"
hello
bash-3.2$ true
bash-3.2$ false
bash-3.2$ exit
exit
Script done on Sun Aug 7 13:03:03 2016
내가 원하는 것:
me:~ oliverlade$ cat typescript
Script started on Sun Aug 7 13:02:43 2016
bash-3.2$ echo "hello"
hello
(exit 0)
bash-3.2$ true
(exit 0)
bash-3.2$ false
(exit 1)
bash-3.2$ exit
exit
Script done on Sun Aug 7 13:03:03 2016
답변1
script
매뉴얼 페이지 에서 :
-e, --return
"하위 프로세스의 종료 코드를 반환합니다. bash 종료와 동일한 형식을 사용하면 신호 종료 종료 코드가 128+n입니다. "
이를 사용해야 하는 경우 script
마지막 종료 코드를 확인하는 가장 좋은 방법은 이를 쉘 프롬프트에 추가하는 것입니다. 어쨌든, 이렇게 하는 것은 나쁜 생각이 아닙니다.
답변2
마지막으로 실행된 명령( )의 종료 상태를 $?
기본 프롬프트( PS1
)에 병합할 수 있습니다.
한 가지 예:
$ PS1='$? \$ '
0 $
테스트해보세요:
0 $ false
1 $
$?
에 할당할 때 확장을 방지하려면 작은따옴표를 사용해야 합니다 PS1
. 프롬프트 변수를 사용하면 안 됩니다 export
.
다른 예시:
$ PS1=$'(exit $?)\n$ '
(exit 0)
$
시험:
(exit 0)
$ false
(exit 1)
$