GNU 화면에서 터미널 이스케이프 시퀀스 사용

GNU 화면에서 터미널 이스케이프 시퀀스 사용

하이퍼링크를 인쇄하고 싶은 루비 터미널 스크립트가 있습니다. 이것이 내가 구현한 방법입니다.

puts("\e]8;;https://example.com\aThis is a link\e]8;;\a")

이것은 "일반" 터미널(gnome-terminal btw) 창에서 잘 작동합니다.

screen하지만 이스케이프 시퀀스가 ​​전혀 작동하지 않는 GNU에서 이 스크립트를 실행해야 합니다 . 다른 시퀀스(예: 색상)는 잘 작동하지만 하이퍼링크 시퀀스(기반)원천아마도 그놈 터미널에만 있는 것일 수도 있습니다.) 아니요. ( screen그놈 터미널에서 실행)

screen내 링크 순서를 확인하고 올바르게 표시하려면 어떻게 해야 합니까 ?

답변1

screen텍스트 를 한 쌍(printf 형식) 안에 넣어 터미널 자체에서 실행할 일부 텍스트를 전달할 수 있습니다 .ESC PESC \\033P%s\033\\

따라서 화면에 표시되는 텍스트( ) \eP..\e\\를 제외한 시퀀스의 모든 부분을 묶어야 합니다."This is a link"

printf '\eP\e]8;;https://example.com\a\e\\This is a link\eP\e]8;;\a\e\\\n'
printf '\eP\e]8;;%s\a\e\\%s\eP\e]8;;\a\e\\\n' https://example.com 'This is a link'

또는 C에서:

puts("\eP\e]8;;https://example.com\a\e\\This is a link\eP\e]8;;\a\e\\");
printf("\eP\e]8;;%s\a\e\\%s\eP\e]8;;\a\e\\\n", url, title);

대체 텍스트를 너무 안쪽에 배치하면 \eP..\e\\화면에서 커서 위치를 추적하지 못할 수 있습니다.


이것은 GNU 화면에 기록됩니다수동:

ESC P  (A)     Device Control String
               Outputs a string directly to the host
               terminal without interpretation

"문자열"은 ST("문자열 종결자") 이스케이프 문자로 끝나야 합니다. \e\\--지금부터 \eP..\e\\.

관련 정보