노트:문제를 명확히하기 위해 질문을 재구성했습니다. 질문에는 여러 속성이 있으므로 여러 부분에서 답변할 수 있는 사소한 질문입니다.
안타깝게도 질문자가 답변의 일부와 질문의 구조를 이해(알고)하면 질문이 수정될 수 있습니다.
따라서 질문은 원본과는 다른 관점에서 질문됩니다.
쉘 유틸리티를 사용하여 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진수 삼중항 형식의 인수를 취합니다 .n
RRGGBB
이 탈출은 다음에서도 지원됩니다.퍼티.
이러한 기능과 기타 기능에 대한 설명은 console_codes(4) 및 terminfo(5) 맨페이지를 참조하십시오.
나도 할 수 없습니다:
a) 화면의 모든 내용을 지우지 않고 화면의 배경색을 변경합니다 clear
.
b) 가상 터미널 사이를 앞뒤로 전환하기 위해 Control-Alt-Fn을 사용할 필요 없이 화면의 비문자 여백을 강제로 업데이트합니다.
xterm과 같은 터미널 에뮬레이터에서:
그러면 배경이 연한 녹색으로 설정됩니다.아니요화면을 지워야 합니다.
printf %b '\e]11;#ccffcc\a'
mlterm
, 등에 도 적용됩니다 rxvt
.gnome-terminal
konsole
다른 형식 \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