컬러 텍스트를 인쇄하기 위한 다음 Python 스크립트가 제공됩니다.
for i in range(30, 100):
print(f'\033[{i}m{i}\033[0m', end=' ')
print()
Bash에서 실행하면 밝은 색상이 올바르게 표시됩니다(FG 코드 91-97).
그러나 이 코드를 실행하면 watch --color python3 test.py
밝은 색상이 올바르게 표시되지 않습니다.
실행한 watch 명령에 문제가 있는 줄 알고 sh
실행해 보았지만 watch --color --exec bash -c 'python3 test.py'
결과는 위와 같았습니다.
Windows WSL2를 통해 Ubuntu 20.04를 실행하고 있지만 RHEL7에서도 비슷한 동작을 볼 수 있습니다. 어떤 아이디어가 있나요?
답변1
실행하면 ANSI 시퀀스를 처리 watch --color
하라는 메시지가 표시됩니다 watch
.
프로그램에 색상 제한이 있습니다.코드에 내장되어 있음그럴 것이다이해하지 못하다47보다 큰 값. 버전 3.3.16(최신 안정 버전)에 적용됩니다. 를 사용하여 버전을 확인할 수 있어야 합니다 watch --version
.
default:
if (attrib >= 30 && attrib <= 37) { /* set foreground color */
fg_col = attrib - 30 + 1;
} else if (attrib >= 40 && attrib <= 47) { /* set background color */
bg_col = attrib - 40 + 1;
} else {
return 0; /* Not understood */
}
이것주인가지watch
밝은 색상을 생각해보세요이므로 결국 WSL2에서 수정되어 채택될 것입니다. 그동안 유일한 옵션은 직접 컴파일하고 코드를 변경하는 것입니다.