Windows OS에서는 just color a
또는 color b
등 을 입력하여 color c
터미널의 글꼴 색상을 일시적으로 변경할 수 있습니다.
bash 터미널에 이 작업을 수행하는 명령이 있습니까?
나는 영구적인 변경을 원하지 않습니다. 단지 공개 세션만으로 충분합니다.
답변1
당신은 다음을 언급하고 있습니다.명령값은 0-f(즉, 0에서 15까지의 십진수)를 예상합니다. 유사한 명령은 다음을 사용합니다.tput
:
tput setaf 10
("a"는 10의 16진수입니다)전경색상과
tput setab 10
에 대한배경색상. 그것들은 별개입니다용어 정보능력.
이 예에서는 터미널 설명에 최소 16가지 색상이 있다고 가정합니다. 8개만 있으면 tput
눈치채지 못하지만 결과는 만족스럽지 않습니다. 당신은 이것을 볼 수 있습니다
tput colors
기본적으로 에서는 tput
현재 값을 사용하여 $TERM
터미널 설명을 선택합니다. 옵션 을 사용하여 이를 재정의할 수 있습니다 -T
. 예를 들어, 다음을 사용하는 경우xterm
("xterm"으로 설정된 다른 터미널과 달리 ) 이 스크린샷에 표시된 대로 터미널 설명을 TERM
사용할 수 있습니다 .xterm-16color
tput
( 라인 15에는 유용한 효과가 없다는 것을 알 수 있을 것입니다.10
8색 범위를 벗어났습니다.)
터미널 설명, 여부xterm
또는xterm-16color
(또는xterm-256color
) tput
터미널에 쓸 수 있는 이스케이프 시퀀스를 만드는 방법을 알려줍니다. Bash 프롬프트는 색상을 설정하거나 재설정하는 이스케이프 시퀀스도 보낼 수 있습니다. 쉘 스크립트 내에서 텍스트를 호출 tput
하고 에코한 경우 동일한 명령(bash 프롬프트로 구분)이 동일한 방식으로 작동하지 않을 수 있지만 색상이 지정된 텍스트를 볼 수 있습니다. 또한 일부 프로그램(예 ls
:)은 색상을 설정/재설정합니다. 이러한 다양한 응용 프로그램과 공유할 수 있는 터미널의 색상 상태는 단 하나뿐입니다. 터미널은 자동으로 전환되지 않습니다.
쉘 스크립트를 테스트하는 것은 쉘 프롬프트의 세부 사항에 의존하는 것보다 더 예측 가능합니다. 여기에 예가 있습니다.
#!/bin/sh
case $TERM in
xterm*)
TERM=xterm-256color
;;
linux*)
TERM=linux-16color
;;
esac
export TERM
for p in $(seq 0 15)
do
tput setab $p
for q in $(seq 0 15)
do
tput setaf $q
printf '%x%x' $p $q
done
tput sgr0
printf '\n'
done
그리고 xterm의 스크린샷: