비대화형 터미널에서 스크린 세션의 창을 나열하는 방법이 있습니까?
screen -S 'screen_name' -X windows
~에 따르면gnu.org, 이 명령은 창 목록을 표시합니다메시지 라인 사용.
이것은 대화형 콘솔에는 괜찮지만 다른 프로그램에서 읽을 수 있도록 이것을 표준 출력으로 인쇄해야 합니다.
이를 수행할 수 있는 방법이 있습니까?
해결책
내가 찾은 가장 좋은 방법은 다음 명령을 사용하여 Windows ID 목록을 얻는 것입니다. (게시자: Stephen Harris)
screen -S 'pid.screen_name' -Q windows
이렇게 하면 인쇄할 때 창 이름이 잘리지만 실제로는 출력의 전체 크기가 잘리지 않습니다. 따라서 스크린 세션에 약 20개의 창이 있는 경우 이것이 출력입니다.
> screen -S 'pid.screen_name' -Q windows
0 bash 1 bash 2 bash 3 bash 4 bash 5 bash 6 bash 7 bash 8 bash 9 bash 10 bash 11 bash 12 bash 13 bash 14 bash 15 bash 16 bash 17 bash 18 bash 19 bash 20 bash
나는 엄청나게 많은 수의 창에 이 방법을 시도했습니다.
이 방법을 사용하면 스크린 세션에 있는 창 수를 구문 분석한 다음 다음을 사용하여 각 창에 대해 "제목" 명령을 실행할 수 있습니다.
screen -S 'pid.screen_name' -p %window_id% -Q title
%window_id%
명령의 각 창 ID로 바꿉니다 windows
.
이번에는 창 제목이 전혀 잘리지 않습니다. 따라서 전체 화면 이름이 표준 출력으로 인쇄됩니다.
답변1
-Q
이 옵션을 사용할 수 있습니다
% screen -S 2908.pts-0.mymachine -Q windows
0- spam 1* news 6 ksh
불행하게도 터미널 너비가 맞춤을 초과하면 잘립니다. (기본적으로 명령이 실행되어 메시지 줄에 표시되지만,반품현재 표준 출력에 복사합니다).