이것들은 ANSI 이스케이프 시퀀스입니다 . 그 링크는 컬러 코드 차트에 대한 것이지만 그 위키 백과 페이지에도 흥미로운 것들이 있습니다. 그들 모두가 (예를 들어) 일반적인 리눅스 콘솔에서 작동하는 것은 아닙니다.
이것은 올바르지 않습니다 :
\033]00m\] # white
0
터미널을 기본값 (아마도 흰색)으로 재설정합니다. 흰색 전경의 실제 코드는 37입니다. 또한 끝에있는 이스케이프 된 닫는 괄호 ( \]
)는 색상 순서의 일부가 아닙니다 (프롬프트 설정의 목적에 대한 설명은 아래 마지막 몇 단락 참조).
일부 GUI 터미널에서는 사용자 정의 된 색 구성표를 지정할 수 있습니다. 출력에 영향을 미칩니다.
거기에 여기에 목록 (7) 전경 및 내가 전에 보지 못한 7 개 배경 색상을 추가,하지만 그들은 작동하는 것 :
# Foreground colors
90 Dark gray
91 Light red
92 Light green
93 Light yellow
94 Light blue
95 Light magenta
96 Light cyan
# Background colors
100 Dark gray
101 Light red
102 Light green
103 Light yellow
104 Light blue
105 Light magenta
106 Light cyan
또한 256 색 GUI 터미널이있는 경우 (대부분 지금은 생각합니다)이 차트에서 색상을 적용 할 수 있습니다.
왼쪽 하단에있는 숫자를 사용하여이를 선택하는 ANSI 시퀀스 38;5;
는 전경과 48;5;
배경에서 시작한 다음 색상 번호와 같이 시작합니다. 예 :
echo -e "\\033[48;5;95;38;5;214mhello world\\033[0m"
황갈색에 연한 주황색을 표시합니다 (즉, 컬러 차트는 대략적으로 근사 됨).
이 차트 1 의 색상은 터미널에 매우 쉽게 나타날 수 있습니다.
#!/bin/bash
color=16;
while [ $color -lt 245 ]; do
echo -e "$color: \\033[38;5;${color}mhello\\033[48;5;${color}mworld\\033[0m"
((color++));
done
출력은 자명하다.
일부 시스템 xterm-256color
은 쉘 코드를 통해 256 색 터미널에있는 경우 $ TERM 변수를로 설정합니다 /etc/profile
. 다른 경우에는 이것을 사용하도록 터미널을 구성 할 수 있어야합니다. 그러면 TUI 응용 프로그램에 256 색이 있음을 알리고 다음과 같이 추가 할 수 있습니다 ~/.bashrc
.
if [[ "$TERM" =~ 256color ]]; then
PS1="MyCrazyPrompt..."
fi
프롬프트에서 색상 이스케이프 시퀀스를 사용할 때는 다음 \
과 같이 이스케이프 처리 된 접두사 대괄호로 묶어야합니다.
PS1="\[\033[01;32m\]MyPrompt: \[\033[0m\]"
통지 [
컬러 시퀀스의 내부 것은 탈출하지만, 주위를 둘러싸는 사람은 없습니다. 후자의 목적은 쉘에 동봉 된 시퀀스가 프롬프트의 문자 길이에 포함되지 않음을 표시하는 것입니다. 해당 개수가 틀린 경우 기록을 다시 스크롤하면 이상한 일이 발생합니다. 예를 들어, 너무 길면 마지막으로 스크롤 한 문자열의 초과 길이가 프롬프트에 첨부되어 나타나고 백 스페이스로 들어갈 수 없습니다. 프롬프트와 같은 방식으로 무시됩니다.
프롬프트가 설정 될 때마다 프롬프트가 사용될 때마다 명령 실행 결과를 포함 시키려면 (프롬프트가 설정 될 때 한 번만), 작은 따옴표가있는 리터럴 문자열로 설정해야합니다. 예를 들면 다음과 같습니다.
PS1='\[\033[01;32m\]$(date): \[\033[0m\]'
bash의 특수 \d
또는 \D{format}
프롬프트 이스케이프 를 사용하는 것에 만족한다면 이것은 좋은 예가 아니지만 질문의 주제는 아니지만 man bash
아래 에서 찾을 수 있습니다 PROMPTING
. \w
현재 디렉토리, \u
현재 사용자 등 다양한 유용한 이스케이프가 있습니다 .
1.이 차트의 주요 부분 인 색상 16-231 (숫자 순서가 아님)은 6 x 6 x 6 RGB 색상 큐브입니다. "컬러 큐브"는 RGB 색상 공간이 3 차원 배열을 사용하여 표현 될 수 있다는 사실을 나타냅니다 (빨간색 축, 녹색 축, 파란색 축). 여기서 큐브의 각 색상은 6 x 6 x 6 배열의 좌표로 표시 될 수 있으며 차트의 인덱스는 다음과 같이 계산됩니다.
16 + R * 36 + G * 6 + B
차트의 색인 16에서 큐브의 첫 번째 색상은 검은 색입니다 (RGB 0, 0, 0). 쉘 스크립트에서이 공식을 사용할 수 있습니다.
#!/bin/sh
function RGBcolor {
echo "16 + $1 * 36 + $2 * 6 + $3" | bc
}
fg=$(RGBcolor 1 0 2) # Violet
bg=$(RGBcolor 5 3 0) # Bright orange.
echo -e "\\033[1;38;5;$fg;48;5;${bg}mviolet on tangerine\\033[0m"
\]
여기서 마지막 부분은 실제로 색상 순서의 일부가 아닙니다. 그것은 프롬프트를 구체적으로 설정하는 목적으로 사용됩니다 (이에 대한 답변 끝에 몇 개의 단락을 추가했습니다). "더 읽기 쉬운 형태가 있다면 좋을 것입니다." -> 자신의 대답으로 잘라 내기 '붙여 넣기'를 사용하는 것이 방법입니다.