Linux 콘솔 화면의 배경색을 설정하는 방법은 무엇입니까?

Linux 콘솔 화면의 배경색을 설정하는 방법은 무엇입니까?

노트:문제를 명확히하기 위해 질문을 재구성했습니다. 질문에는 여러 속성이 있으므로 여러 부분에서 답변할 수 있는 사소한 질문입니다.

안타깝게도 질문자가 답변의 일부와 질문의 구조를 이해(알고)하면 질문이 수정될 수 있습니다.

따라서 질문은 원본과는 다른 관점에서 질문됩니다.

쉘 유틸리티를 사용하여 Linux 콘솔의 색상 설정을 변경하는 방법은 무엇입니까? 쉘 유틸리티를 사용하여 터미널 에뮬레이터의 색상 설정을 변경하는 방법은 무엇입니까?

원래는 쉘 스크립트를 실행하는 동안 Linux 콘솔의 배경색을 변경하고 싶었습니다. 다음 제안은 내가 원하는 대로 작동합니다.

#!/bin/sh

# set the background color of the terminal
tput setab 6
clear

printf "%s\n" 'background: cyan'

# do some tasks 
cd /usr/src/initramfs
pwd
ls -l

# the background of the shell output is cyan

그럼에도 불구하고 누군가는 몇 가지 결함(또는 어려움)에 직면할 수 있습니다.

예를 들어 화면이 지워지지 않으면 배경색은 쉘 스크립트 실행 중에 텍스트 출력에만 적용됩니다. 명령줄을 사용하여 명령을 tput setab 6제출하고 화면이 지워지지 않으면 배경색은 출력 텍스트의 작은 부분에만 적용됩니다. 명령줄에서 명령을 제출 tput setab 6하고 화면이 지워지면 배경색이 전체 화면에 적용되지만 다른 명령을 제출할 때까지만 적용됩니다. [...]

배경색 1개

답변1

Linux 가상 터미널("콘솔")에서:

배경을 색상 1(빨간색)로 설정하려면:

printf %b '\e[41m' '\e[8]' '\e[H\e[J'

첫 번째 이스케이프( setab)는 배경을 색상 1로 설정하고, 두 번째 이스케이프는 현재 전경-배경 쌍을 다음과 같이 정의합니다.기본, 세 번째 ( clear)는 화면을 지웁니다.

이제부터 "빨간색"이 기본 배경이 됩니다.

printf %b 'World\e[42mWide\e[mWeb\n'

setab 2( )를 사용하여 배경을 녹색으로 설정한 다음 \e[42( )을 사용하여 속성을 지워도 설정이 지워지지 않습니다.sgr0\e[m

또는 initc"set Palette"(aka="initialize_color") 이스케이프를 통해 색상 0(기본 배경, 검정색)의 의미를 재정의할 수 있습니다.

printf %b '\e[40m' '\e[8]' # set default background to color 0 (black)
printf %b '\e]P0ff0000'    # redefine color 0 as 'red'

후자는 색상 번호이고 nRRGGBB색상 을 정의하는 16진수 삼중항 형식의 인수를 취합니다 .nRRGGBB

이 탈출은 다음에서도 지원됩니다.퍼티.

이러한 기능과 기타 기능에 대한 설명은 console_codes(4) 및 terminfo(5) 맨페이지를 참조하십시오.

나도 할 수 없습니다:

a) 화면의 모든 내용을 지우지 않고 화면의 배경색을 변경합니다 clear.

b) 가상 터미널 사이를 앞뒤로 전환하기 위해 Control-Alt-Fn을 사용할 필요 없이 화면의 비문자 여백을 강제로 업데이트합니다.

xterm과 같은 터미널 에뮬레이터에서:

그러면 배경이 연한 녹색으로 설정됩니다.아니요화면을 지워야 합니다.

printf %b '\e]11;#ccffcc\a'

mlterm, 등에 도 적용됩니다 rxvt.gnome-terminalkonsole

다른 형식 \e]11;rgb:cc/ff/cc\a(에서 가져옴)여기)은 지원되지 않습니다 konsole(버전 12.16.0을 사용하여 테스트됨).

이것은 것이다아니요tmux또는 에서 근무하세요 screen.

모든 xterm탈옥은 문서화되어 있습니다.ctlseqs.txt소스 코드의 파일.

노트:

일부 이스케이프(예: \e[8]또는 \e]11;...\a)는 terminfo에 포함되지 않아 tput전혀 사용할 수 없는 반면, 다른 이스케이프(예: initc)는 깔끔한 방법으로 사용하기에는 너무 어색합니다.

다음 명령을 사용하여 terminfo 데이터베이스의 grepable 버전을 얻을 수 있습니다:find /usr/share/terminfo -type f -printf '%f\n' | xargs -n1 infocmp -0 -A /usr/share/terminfo

관련 정보