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 색상을 지원하는지(그리고 활성화되어 있는지) 확인해야 한다고 생각합니다.