기본적으로 터미널에 애니메이션을 적용하고 싶지만 텍스트가 너무 길기 때문에 호출기가 필요합니다. 주기적으로 텍스트 색상을 변경하고 싶다고 가정해 보겠습니다. 가능합니까?
답변1
편집하다대답은 다음과 같습니다.폰 브랜드그리고토마스 디키기술적으로 더 정확합니다.
less
-r
이 옵션을 사용하면 원시 ANSI 이스케이프가 지원됩니다. 온라인 삭제도 지원합니다.
하지만 애니메이션은 볼 수 없습니다. 예를 들어:
echo -e "foo\x1b[1G\x1b[2Kbar" > test.ansi
less -r test.ansi
만 인쇄됩니다 bar
.
more
ANSI 이스케이프는 기본적으로 전달되지만 제가 테스트한 줄 편집은 지원하지 않습니다.
당신은 또한 볼 수 있습니다이 Stackoverflow 답변은 less
및more
most
.
답변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
각각 입니다 . 전통적인 termcap 기능은 없으며 ( 파일 내용만 전달하도록 사용 또는 옵션을 지정하지 않는 한 ) .\x1b[K
el1
el
el2
less
-r
-R
less
\x1b[2K
more
예를 들어 다음과 같은 경우도 마찬가지입니다.util-linux
패키지: termcap의 기능만 사용합니다. less
와 달리 more
인쇄되지 않는 문자를 터미널에 직접 보내는 옵션은 없습니다.
-r
또는 -R
옵션 을 사용하는 경우 less
다음을 기억해야 합니다.제한된: less
이스케이프 문자가 무엇을 하는지 모릅니다(또는 별로 신경 쓰지 않습니다). ~에서매뉴얼 페이지:
-r
또는--raw-control-chars
이유"날것의"표시할 제어 문자입니다. 기본값은 캐럿을 사용하여 제어 문자를 표시하는 것입니다. 예를 들어 control-A(8진수 001)는 "^A"로 표시됩니다. 경고하다:-r
이 옵션을 사용 하면less
할 수 없다화면이 실제로 어떻게 보이는지 추적하십시오(화면이 각 제어 문자 유형에 어떻게 반응하는지에 따라 다름). 결과적으로 긴 줄이 잘못된 위치에서 분할되는 등 다양한 표시 문제가 발생할 수 있습니다.
답변3
일반적으로 이스케이프 시퀀스에 반응하는 것은 tty입니다(실행 중인 프로그램이 이를 존중하지 않도록 설정하지 않은 경우 프로그램 자체가 그렇게 할 수 있음). more(1)
매우 원시적인 화면을 다시 작성하므로(실제로 화면 길이의 줄을 작성하고 키 누름을 기다리는 데 충분함) 입력만 통과하는 것 같습니다. less(1)
백업이 필요하므로 화면에 대한 보다 세밀한 제어가 필요합니다.