터미널 - ^[[H^[[2J - 캐럿 브래킷 H 캐럿 브래킷 2 J

터미널 - ^[[H^[[2J - 캐럿 브래킷 H 캐럿 브래킷 2 J

이 명령은 무엇입니까? CSI n ; m H커서를 n행과 열로 옮기는 건 알겠 m는데 제목에 무슨 명령이 있는 걸까요? ^[[H^[[2J?

답변1

^[다음은 적어도 xterm과 유사한 터미널(ESC 문자가 표시되는 곳)에서 화면을 지우고 커서를 맨 위에 놓는 시퀀스를 시각적으로 표현한 것입니다.

$ TERM=xterm tput clear | cat -v
^[[H^[[2J

이러한 이스케이프 시퀀스에 대해 알아보려면 다음을 확인하세요.ctlseqs.txt문서에는 다음이 포함되어 있습니다 xterm.

ESC [
제어 시퀀스 도입자(CSI는 0x9b).

그리고:

CSI Ps; Ps H
커서 위치 [행; 열] (기본값 = [1,1]) (CUP)

그리고:

CSI Ps J 디스플레이 삭제(ED).
Ps = 0 -> 아래 지우기(기본값).
Ps = 1 -> 위 내용을 삭제하세요.
Ps = 2 -> 모두 삭제합니다.
Ps = 3 -> 저장된 줄 삭제(xterm).

(이렇게 하면 ^[[2J저장된 라인이나 대체 화면이 지워지지 않습니다.)

tput clear(또는 clear)은 xterm유사한 터미널과 동일한 효과를 갖습니다 printf '\e[H\e[2J'. 이를 위해 데이터베이스에 쿼리하여 이름이 환경 변수에 저장되어 있는 터미널 기능의 문자 순서가 무엇인지 알아냅니다 terminfo. 덤프 데이터베이스의 터미널 항목을 사용하면 다음이 표시됩니다.clear$TERMxtermterminfoinfocmp xterm

$ infocmp -1 xterm | grep clear
        clear=\E[H\E[2J,

주어진 이스케이프 시퀀스를 이해하는 또 다른 방법은 다음과 같습니다.

$ infocmp -L -1 | grep J
        clear_screen=\E[H\E[2J,
        clr_eos=\E[J,

(함수 이름은 여기서 사용됩니다 L). 그런 다음 이러한 기능을 설명할 수 있습니다 man 5 terminfo.

답변2

의 값 nm기본값은 1 CSIn;mH이므로 ^[[H커서가 시작 위치로 이동됩니다. ^[[2J화면을 지우고 커서를 원래 위치에 둡니다.

관련 정보