ZShell의 16가지 색상

ZShell의 16가지 색상

zshell 프롬프트에서는 8가지 색상만 호출할 수 있는 것 같습니다.

예:

PROMPT="[%n@%{$fg[magenta]%}%m%{$reset_color%} %.]
%# "

잘 작동합니다. 하지만,

PROMPT="[%n@%{$fg[brmagenta]%}%m%{$reset_color%} %.]
%# "

작동하지 않습니다. 기본적으로 "밝은" 색상 변경은 없습니다.

몇 가지 연구 끝에 zsh의 색상이 "color" setopt에 의해 호출된다는 사실을 알게 되었습니다.

행위

echo ${(o)color}

다음 출력을 생성합니다.

00 01 02 03 04 05 07 08 22 23 24 25 27 28 30 30 30 30 31 31 32 32 33 33 34 34 35 35 36 36
37 37 39 39 40 40 41 42 43 44 45 46 47 49 bg-black bg-blue bg-cyan bg-default bg-green
bg-magenta bg-red bg-white bg-yellow black blink blue bold conceal cyan default faint green
magenta no-blink no-conceal no-reverse no-standout no-underline none normal red reverse
standout underline white yellow

보시다시피 표준 8가지 색상만 사용 가능합니다. 나는 출력을 기본 텍스트 색상으로 남겨두는 "bg-" 변형을 사용해 보았습니다.

당신이 제공할 수 있는 어떤 도움이라도 대단히 감사하겠습니다. 물론 일반 색상만 사용해도 되지만 그러면 아무것도 배울 수 없습니다!

답변1

어떤 터미널 에뮬레이터를 사용하고 있습니까? 를 실행하여 지원되는 색상 수를 확인할 수 있습니다 echotc Co. 예를 들어 내 제품은 urxvt88가지 색상을 지원하지만 xterm8가지 색상만 지원하며 여기에는 밝은 색상이 포함되지 않습니다.

이것을 실행하면 다음과 같은 urxvt결과를 얻습니다.

# Dark magenta/violet:
PS1="[%F{34}%n%F{reset}@%F{magenta}%m%F{reset} %.] " 
# Bright Thistle purple:
PS1="[%F{54}%n%F{reset}@%F{magenta}%m%F{reset} %.] "

원천:man zshall

답변2

당신이 언급하는 모든 "색상"은 일종의 이스케이프 시퀀스입니다 \e[{color_code}m. Zsh 함수는 colors사람이 읽을 수 있는 색상 이름을 터미널 이스케이프 시퀀스에 매핑하는 일부 zsh 연관 배열 변수를 추가합니다. 그래서 직접 사용할 수 있습니다

PS1=%{$'\e[54m'%}...

또는 @Mischa Arefiev의 답변을 시도해 보세요. 더 읽기 쉽습니다. 이스케이프 시퀀스는 모든 셸에서 사용할 수 있지만 유사한 구문은 %F{54}...zsh에서만 사용할 수 있습니다.

관련 정보