%EB%A5%BC%20%EC%A7%80%EC%9B%90%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
기본적으로 터미널에 애니메이션을 적용하고 싶지만 텍스트가 너무 길어서 호출기가 필요합니다. 텍스트 색상을 주기적으로 변경하고 싶다고 가정해 보겠습니다. 가능합니까?
답변1
답변2
라인 지우기는 터미널 색상 변경과 간접적인 관계만 가집니다.배경색상을 선택하면 많은 터미널(Linux 콘솔, rxvt, xterm 및 이들 중 하나를 모방하는 프로그램)이 해당 색상을 사용하여 배경의 지워진 영역에 색상을 지정합니다.
less
몇 가지 지우기 작업을 사용하지만 \x1b[2K
. 읽기원천, termcap 인터페이스를 사용하여 여러 기능을 사용합니다. 가장 관련성이 높은 부분은 다음 항목에 설명되어 있습니다.용어정보(5)매뉴얼 페이지:
clr_bol el1 cb Clear to beginning
of line
clr_eol el ce clear to end of line
(P)
\x1b[K
즉 , 및 , 각각 \x1b[K
에 대한 것입니다 . 기존의 termcap 기능은 없으며 ( 또는 옵션 을 사용하여 파일 내용을 통과하도록 지시 하지 않는 한 ) .el1
el
el2
less
-r
-R
less
\x1b[2K
more
예를 들어 에서와 같이 에서도 마찬가지입니다 .util-linux
패키지: termcap의 기능만 사용합니다. 와 달리 에는 less
인쇄 more
할 수 없는 문자를 터미널에 직접 보내는 옵션이 없습니다.
의 -r
or 옵션 을 사용하는 경우에는 다음과 같은 점을 명심해야 합니다.-R
less
제한된: less
이스케이프가 무엇을 하는지 알지 못합니다(또는 크게 신경 쓰지 않습니다). 로부터매뉴얼 페이지:
-r
또는--raw-control-chars
원인"날것의"표시할 제어 문자. 기본값은 캐럿 표기법을 사용하여 제어 문자를 표시하는 것입니다. 예를 들어 컨트롤 A(8진수 001)는 "^A"로 표시됩니다. 경고:-r
옵션 사용시less
할 수 없다화면의 실제 모양을 추적하십시오(각 제어 문자 유형에 화면이 어떻게 반응하는지에 따라 다르기 때문입니다). 따라서 긴 줄이 잘못된 위치에서 분할되는 등 다양한 표시 문제가 발생할 수 있습니다.
답변3
이스케이프 시퀀스에 반응하는 것은 일반적으로 tty입니다(실행 중인 프로그램이 이를 따르지 않도록 설정하지 않는 한, 프로그램 자체가 그렇게 할 수 있습니다). more(1)
다소 원시적인 화면 재작성을 수행하므로(화면 길이 줄을 작성하고 키 누르기를 기다리는 것만으로도 충분합니다) 입력을 통과하는 것 같아요. less(1)
백업이 필요하므로 화면에 대한 보다 세밀한 제어가 필요합니다.