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

또는 RedHat의 경우

sudo yum install ttyrec

파일을 올바르게 재생하는 명령은 다음과 같이 실행됩니다.

ttyplay <filename>

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

답변4

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

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

관련 정보