플랫폼, 데스크톱 환경 독립적인 방식으로 bash 스크립트에서 터미널 배경을 변경하시겠습니까?

플랫폼, 데스크톱 환경 독립적인 방식으로 bash 스크립트에서 터미널 배경을 변경하시겠습니까?

터미널 프로토콜만 활용하고 특정 터미널 프로그램이나 실행 환경에 저장된 구성(예: "구성 파일")에 의존하지 않는 방식으로 터미널 배경색을 변경하려면 어떻게 해야 합니까?

터미널을 사용하여 컴퓨터에 로그인하고 스크립트를 실행하는 사용자를 위해 터미널 배경색을 안정적으로 변경하는 스크립트를 작성하고 싶습니다.

"불가능하다"는 결과에 대한 빠르고 권위 있는 대답은 해결책만큼이나 높이 평가될 것입니다. 그러나 터미널 프로토콜을 완전히 이해하고 그러한 기능이 존재하지 않는다는 것을 증명할 수 있는 전문가만이 그러한 답변을 받아들일 것입니다.

답변1

그것은 불가능합니다. 저는 터미널 프로토콜 전문가는 아니지만 배경색을 변경할 수 없는 터미널이 있다는 것을 알고 있습니다. 예를 들어, 멍청한 터미널(예:예상되는아니면 M-x shellEmacs에서. 대부분의 하드웨어 단말기도 마찬가지지만 요즘에는 사용하는 사람이 거의 없습니다.

대부분의 터미널 에뮬레이터에는 배경색을 변경하는 방법이 있습니다. 터미널 에뮬레이터는 기본적으로 응용 프로그램과 터미널 사이의 인터페이스로 xterm을 복사하므로 이와 같은 기능이 필요한 경우 xterm 방식을 시도하고 모든 터미널 에뮬레이터가 아닌 일부에서 작동할 것으로 예상하십시오. 찾다xterm 제어 시퀀스귀하의 요구 사항을 충족하는지 확인하십시오.

터미널 전체의 배경색을 변경하려면 다음과 같은 방법이 있습니다.OSC 11; color BEL, 즉.

printf '\e]11;%s\a' "$color"

이는 xterm, urxvt, gnome-terminal, konsole 및 lxterm에서는 작동하지만 rxvt, xfce4-terminal, terminator 또는 Emacs에서는 작동하지 않습니다 M-x term. 터미널 재설정 후에도 배경색 변경이 지속됩니다. 11;로 대체하여 전경색을 변경할 수도 있습니다 10;.

물론 이는 기본 배경색이다. 이 이스케이프 시퀀스를 지원하는 모든 터미널과 어떤 방식으로든 색상을 지원하는 대부분의 다른 터미널에서는 \e[41m(빨간색)을 사용하여 이후에 표시되는 텍스트의 배경색을 전환할 수 있습니다.

터미널이 이스케이프 시퀀스를 지원하지 않으면 답을 찾을 수 없습니다. 쿼리 터미널과 동일한 터미널 세트 내에서 지원되는 이스케이프 시퀀스를 찾으려고 시도할 수 있지만 일반적으로 그러한 시퀀스는 없습니다.

역방향 비디오로의 전환은 \e[?5h대부분의 터미널에서 작동할 수 있지만 터미널 재설정 후에는 유지되지 않습니다. 이렇게 한 다음 전경색을 설정하면 대부분의 터미널에서 시각적 효과를 얻을 수 있습니다.

관련 정보