저는 Mac의 zsh에서 tmux를 사용하여 스크립트를 만들고 있습니다.https://unix.stackexchange.com/users/22565/st%c3%a9phane-chazelas답변, tmux를 사용할 때 호스트 시스템과 다른 인터프리터를 사용한다는 것을 발견했습니다.
따라서 스크립트된 tput 명령의 동일한 텍스트를 tty 및 tmux 창 모두에 출력할 때 생성 중인 ANSI 이스케이프 시퀀스와 일부 비호환성이 있는지 궁금합니다.
$TERM이 내 Mac에서는 xterm-256color이고 tmux 창에서는 screen-256color라는 것을 알았으므로 발행합니다.
%> infocmp xterm-256color screen-256color
저는 tputclear, civis, sgr0, cnorm, rc, sc, home, cd, cr, el, cub1, cud, cuf를 사용하는 코드를 사용하고 있습니다. 코드가 실행 중이고 출력은 xterm 컨텍스트에서 tput을 사용하여 생성되며 티업 시 tty와 tmux 모두에서 잘 렌더링됩니다.
그러나 예를 들어 infocmp에 따르면 Clear는 두 용어에 대해 서로 다른 이스케이프 시퀀스를 갖습니다.
comparing xterm-256color to screen-256color.
clear: '\E[H\E[2J', '\E[H\E[J'
그럼 어떻게 작동하나요?
부가적인 질문으로 내 명령의 msot가 비교에 표시되지 않습니다. 이는 이론적으로 지원되지 않거나 두 용어 모두에서 공통적이라는 의미입니까?
답변1
(ECMA-48) 표준 터미널에서는 두 문자열의 효과에 차이가 없기 때문에 작동합니다. 둘 다 커서를 화면의 왼쪽 상단으로 보냅니다. 그런 다음 하나( \E[J
)는 화면의 나머지 부분을 지우고 다른 하나( \E[2J
)는 전체 화면을 지웁니다.
CSI Ps J Erase in Display (ED), VT100.
Ps = 0 ⇒ Erase Below (default).
Ps = 1 ⇒ Erase Above.
Ps = 2 ⇒ Erase All.
Ps = 3 ⇒ Erase Saved Lines, xterm.
(에서XTerm 제어 순서)