컬러 터미널 출력은 재설정 시퀀스를 무시합니다. 색깔은 계속된다

컬러 터미널 출력은 재설정 시퀀스를 무시합니다. 색깔은 계속된다

몇시간째 헤매고 있는데 해결방법이 없네요...

이것을 터미널에 인쇄한다고 가정 해 봅시다.(새로운 Linux Mint를 실행하는 가상 머신의 게놈 터미널에서 bash 및 zsh를 사용하여 테스트되었습니다.):

python3
print("\033[41mFOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO\033[0m BAR")
  • \033[41m다음 텍스트에 대해 빨간색 배경을 활성화합니다.
  • \033[0m배경을 기본값으로 재설정합니다.
  • 충분히 있다고 가정하면산소터미널에서 정확히 한 줄 반을 채우는 출력을 생성합니다.

새 터미널에서 출력은 다음과 같습니다(예상대로).

|FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO|
|=================================|
|OOOOOOOOOOOOOO BAR               |
|==============                   |
|                                 |
  • 밑줄이 그어진 각 문자의 =배경은 빨간색입니다.
  • |터미널의 경계를 정의합니다.

그래서 우리는 FOO...빨간색 배경이 있고 BAR빨간색 배경이 없다는 것을 알 수 있습니다.

명령을 다시 실행하면 다음과 같은 결과가 나타납니다.

|FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO|
|=================================|
|OOOOOOOOOOOOOO BAR               |
|==============    ===============|
|                                 |

그 후에도 줄이 계속 빨갛게 되는데 BAR...왜인지는 모르겠네요. 어떤 아이디어가 있나요?

답변1

Mac OS X의 iTerm2는 컬러 텍스트가 사용 가능한 열을 우회하는 경우에도 이 작업을 수행합니다. 한 가지 해결 방법은 BAR작성한 후 줄 끝까지 지우는 것입니다 .CSI Ps K Erase in Line (EL) 제어 순서,예를 들어

$ perl -e 'print "\e[41m".("a"x120)."\e[0mBAR\e[K"'

관련 정보