ANSI 색상으로 파일 표시

ANSI 색상으로 파일 표시

ANSI 색상이 포함된 파일이 있습니다.

테스트.txt:
\e[0;31mExample\e[0m

그 파일의 내용을 터미널에 표시하고 싶지만 cat색상도 표시하고 싶습니다.

답변1

저는 이 정확한 bash 문제에 대한 해결책을 찾고 있습니다. 나는 가장 우아한 솔루션을 제공한 @Thomas Dickey의 의견을 거의 놓쳤습니다.

echo -e $(cat test.txt)

나에게 맞지 않는 몇 가지 사항은 다음과 같습니다(분명히 파이프를 통해 에코할 수는 없습니다).

cat test.txt | echo -e

또는

less -R test.txt

내가 가진 또 다른 문제는 echo -e가 파일의 개행과 연속 공백을 잘 인쇄하지 않는다는 것입니다. 이것을 인쇄하기 위해 다음을 사용했습니다.

echo -ne $(cat test.txt | sed  's/$/\\n/' | sed 's/ /\\a /g')

이는 다음 내용을 포함하는 test.txt 파일에서 작동합니다.

\e[0;31mExa         mple\e[0m
\e[0;31mExample line2\e[0m

답변2

cat제어 문자가 표시되지 않으면 색상이 불완전할 수 있습니다.

일부 도구는 제어 문자를 제거하지만 끝에는 그대로 둡니다.

비교하다:

 echo -e "\e[0;31mExample\e[0m foo"

도착하다

 echo -e "[0;31mExample[0m foo" 

남은 것에서 제어 시퀀스를 재구성할 수는 있지만 사용하는 정규 표현식이 실수로 예기치 않은 문자 시퀀스 등을 도입할 수 있으므로 이것이 완벽하지는 않습니다. 그러나 예를 들면:

echo -e "[0;31mExample[0m foo" | sed "s:\[\([0-9]*[;m]\):^[[\1:g"

샘플 문자열의 색상을 복원합니다.

답변3

이 작업을 수행하기 위한 실행 파일이 포함된 패키지가 있습니다:

ttyrec

다음 명령 중 하나를 사용하여 Debian 기반 Linux 설치에 설치할 수 있습니다.

sudo apt install ttyrec

아니면 레드햇에서

sudo yum install ttyrec

파일을 올바르게 재생하는 명령은 다음을 사용하는 것입니다.

ttyplay <filename>

유사한 파일을 gif로 변환하는 tty2gif라는 패키지도 확인해 보세요.

답변4

기본적으로 작동해야 합니다. 예를 들어 ls --color=always > /tmp/a이렇게 하면 cat /tmp/a색상이 보입니다. od파일이 ANSI 색상을 사용하는지 확인하십시오 .

따라서 귀하의 터미널이 ANSI 색상을 지원하는지(그리고 활성화되어 있는지) 확인해야 한다고 생각합니다.

관련 정보