프로세스가 파이프를 통해 출력될 때 이스케이프 코드를 어떻게 제거합니까? [복사]

프로세스가 파이프를 통해 출력될 때 이스케이프 코드를 어떻게 제거합니까? [복사]

제목이 이상하지만 질문을 명확하게 설명하는 데 어려움이 있습니다.

터미널에서 실행하면 kitty --version해당 버전이 stdout으로 인쇄되지만 텍스트의 스타일과 색상은 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

이를 달성하기 위해 프로세스는 ANSI 이스케이프 코드를 표준 출력으로 출력해야 하지만 출력을 16진수 덤프하면 볼 수 없습니다.

$ kitty --version | xxd -g 1 -c 10 -u
00000000: 6B 69 74 74 79 20 30 2E 31 39  kitty 0.19
0000000a: 2E 31 20 63 72 65 61 74 65 64  .1 created
00000014: 20 62 79 20 4B 6F 76 69 64 20   by Kovid 
0000001e: 47 6F 79 61 6C 0A              Goyal.

나는 여기서 적어도 일부 이스케이프 문자와 기타 ANSI 시퀀스를 보고 싶었지만 그렇지 않습니다. 이로 인해 kitty이스케이프 코드를 처리할 수 있는 터미널에 출력이 나타날지 여부를 "예측"할 수 있다고 믿게 되었습니다 .

어떻게 이런 일을 할 수 있나요? 아니면 터미널 에뮬레이터의 기능일까요?

답변1

man isatty거나https://linux.die.net/man/3/isatty

isatty - test whether a file descriptor refers to a terminal

관련 정보