쉘 스크립트(이 경우 bash)가 주어지면 디버깅 출력은 bash 또는 기타 지원 쉘을 사용하여 생성되거나 전달될 수 set -x
있습니다 -x
.
해당 출력을 파일 ./script.sh 2> out.log
이나 bash -x script.sh 2> out.log
.
screen
하지만 stderr를 또는 같은 터미널 멀티플렉서로 어떻게 보내나요 tmux
?
주로 스크립트가 터미널 디스플레이 모드(TUI)를 변경할 때 유용하므로 stderr을 보내면 다른 창/터미널에서 보다 편안하게 디버깅할 수 있습니다.
답변1
tty
콘텐츠를 전송하려는 터미널에서 호출됩니다. 예를 들어 인쇄 /dev/pts/3
한 다음 원하는 내용을 다른 터미널에서 이 파일로 리디렉션합니다. 이와 같이:
bash -x script.sh 2> /dev/pts/3
이는 독립형 터미널 에뮬레이터 또는 tty(로그인하는 위치) 에서 tmux
작동합니다 . screen
하나의 쉘에서 호출되고 tty
다른 쉘에서 말한 내용을 리디렉션/인쇄합니다.
나는 파이프라인을 디버깅할 때 비슷한 접근 방식을 사용합니다. 예:
foo | tee /dev/pts2 | filter1 | tee /dev/pts3 | filter2
tmux 명령은 상태 줄의 왼쪽 및 오른쪽 내용을 인쇄 display '#{pane_tty}'
합니다 . 이는 /dev/pts/3
대상 창에 셸이 없는 경우 유용합니다(따라서 쉽게 tty
실행할 수 없음). 현재 창으로 만들 창을 선택하고 을 클릭한 prefix:후 명령을 입력하고 을 클릭합니다 Enter.