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