Bash의 ANSI 이스케이프 시퀀스를 끄는 방법은 무엇입니까?

Bash의 ANSI 이스케이프 시퀀스를 끄는 방법은 무엇입니까?

Jest를 실행 중이고 출력은 다음과 같습니다. 테스트용으로 한 줄을 인쇄한 다음 지우고 다른 줄을 인쇄합니다.

그러나 루프를 사용하여 테스트를 실행하는 경우( 를 사용하여 expect) 전체 테스트 목록을 볼 수 없습니다. (선택기 등).

나는 또한 다음을 시도했습니다.

jest foo.js &> result.txt

그러나 Joke는 터미널 유형이 아니라고 판단하여 더 이상 해당 행을 출력하지 않는 것 같습니다.

나는 또한 옵션을 조사했지만 jest효과가 있는 것을 찾지 못했습니다.

그래서 나는 해킹이 다음과 같을 수 있다고 생각했습니다. 터미널이 이러한 ANSI 이스케이프 시퀀스(줄 지우기 등)를 지원하지 않으면 출력은 한 줄씩 이루어져야 합니다.

그것을 할 수 있는 방법이 있나요? 환경은 macOS Sonoma의 터미널입니다.

답변1

터미널에 그러한 기능을 지원하지 않는다고 알려주십시오.

TERM=vanilla jest foo.js

또는 스크립트 시작 부분에 환경 변수를 설정합니다(기억 export: 모든 하위 프로세스는 이 환경 변수를 사용해야 함). 바라보다https://invisible-island.net/ncurses/terminfo.ti.html다양한 터미널에 대한 설명.

좋은 프로그램은 터미널을 확인하고 터미널이 지원하는 경우에만 이스케이프 코드를 추가합니다. 불행히도(이 stackoverflow 사이트의 많은 답변에서 볼 수 있듯이) 많은 프로그래머는 게으르고 터미널 기능을 쿼리하지 않고 어쨌든 이스케이프 코드를 보냅니다.

참고: ANSI 시퀀스를 제거할 수 있는 유틸리티도 있지만 이름이 기억나지 않습니다.

관련 정보