![프로세스가 파이프를 통해 출력될 때 이스케이프 코드를 어떻게 제거합니까? [복사]](https://linux55.com/image/182684/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EA%B0%80%20%ED%8C%8C%EC%9D%B4%ED%94%84%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%B6%9C%EB%A0%A5%EB%90%A0%20%EB%95%8C%20%EC%9D%B4%EC%8A%A4%EC%BC%80%EC%9D%B4%ED%94%84%20%EC%BD%94%EB%93%9C%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%A0%9C%EA%B1%B0%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
제목이 이상하지만 질문을 명확하게 설명하는 데 어려움이 있습니다.
터미널에서 실행하면 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