некоторые переменные, которые вы можете использовать:
# Reset
Color_Off='\033[0m' # Text Reset
# Regular Colors
Black='\033[0;30m' # Black
Red='\033[0;31m' # Red
Green='\033[0;32m' # Green
Yellow='\033[0;33m' # Yellow
Blue='\033[0;34m' # Blue
Purple='\033[0;35m' # Purple
Cyan='\033[0;36m' # Cyan
White='\033[0;37m' # White
# Bold
BBlack='\033[1;30m' # Black
BRed='\033[1;31m' # Red
BGreen='\033[1;32m' # Green
BYellow='\033[1;33m' # Yellow
BBlue='\033[1;34m' # Blue
BPurple='\033[1;35m' # Purple
BCyan='\033[1;36m' # Cyan
BWhite='\033[1;37m' # White
# Underline
UBlack='\033[4;30m' # Black
URed='\033[4;31m' # Red
UGreen='\033[4;32m' # Green
UYellow='\033[4;33m' # Yellow
UBlue='\033[4;34m' # Blue
UPurple='\033[4;35m' # Purple
UCyan='\033[4;36m' # Cyan
UWhite='\033[4;37m' # White
# Background
On_Black='\033[40m' # Black
On_Red='\033[41m' # Red
On_Green='\033[42m' # Green
On_Yellow='\033[43m' # Yellow
On_Blue='\033[44m' # Blue
On_Purple='\033[45m' # Purple
On_Cyan='\033[46m' # Cyan
On_White='\033[47m' # White
# High Intensity
IBlack='\033[0;90m' # Black
IRed='\033[0;91m' # Red
IGreen='\033[0;92m' # Green
IYellow='\033[0;93m' # Yellow
IBlue='\033[0;94m' # Blue
IPurple='\033[0;95m' # Purple
ICyan='\033[0;96m' # Cyan
IWhite='\033[0;97m' # White
# Bold High Intensity
BIBlack='\033[1;90m' # Black
BIRed='\033[1;91m' # Red
BIGreen='\033[1;92m' # Green
BIYellow='\033[1;93m' # Yellow
BIBlue='\033[1;94m' # Blue
BIPurple='\033[1;95m' # Purple
BICyan='\033[1;96m' # Cyan
BIWhite='\033[1;97m' # White
# High Intensity backgrounds
On_IBlack='\033[0;100m' # Black
On_IRed='\033[0;101m' # Red
On_IGreen='\033[0;102m' # Green
On_IYellow='\033[0;103m' # Yellow
On_IBlue='\033[0;104m' # Blue
On_IPurple='\033[0;105m' # Purple
On_ICyan='\033[0;106m' # Cyan
On_IWhite='\033[0;107m' # White
the escape character in bash, hex and octal respectively:
| | bash | hex | octal | NOTE |
|-------+-------+--------+---------+------------------------------|
| start | \e | \x1b | \033 | |
| start | \E | \x1B | - | x cannot be capital |
| end | \e[0m | \x1m0m | \033[0m | |
| end | \e[m | \x1b[m | \033[m | 0 is appended if you omit it |
| | | | | |
short example:
| color | bash | hex | octal | NOTE |
|-------------+--------------+----------------+----------------+---------------------------------------|
| start green | \e[32m | \x1b[32m | \033[32m | m is NOT optional |
| reset | \e[0m | \1xb[0m | \033[om | o is optional (do it as best practice |
| | | | | |
bash exception:
If you are going to use these codes in your special bash variables
- PS0
- PS1
- PS2 (= this is for prompting)
- PS4
you should add extra escape characters so that bash может интерпретировать их правильно.Без добавления дополнительных escape-символов это работает, но вы будете сталкиваться с проблемами, когда будете использовать Ctrl + r
для поиска в своей истории.
правило исключения для bash
Вы должны добавить \[
перед любым запускомКод ANSI и добавьте \]
после любых конечных.
Пример:
при обычном использовании: \033[32mThis is in green\033[0m
для PS0 / 1/2/4: \[\033[32m\]This is in green\[\033[m\]
\[
предназначен для начала последовательности непечатаемых символов
\]
предназначен для конца последовательности непечатаемых символов
Совет: длязапомни его, сначала добавь \[\]
, а затем вставь между ними свой код ANSI:
- \[start-ANSI-code\]
- \[end-ANSI-code\]
тип цветовой последовательности:
- 3/4 бит
- 8 бит
- 24 бит
Перед тем, как погрузиться в эти цвета, вы должны знать о 4 режимах с этими кодами:
1.color-mode
Изменяет стиль цвета, а не текста.Например, сделать цвет ярче или темнее.
0
сброс 1;
светлее, чем обычно 2;
темнее, чем обычно
Этот режим неподдерживается широко.Он полностью поддерживает Gnome-Terminal.
2.текстовый режим
Этот режим предназначен для изменения стиля текста, а не цвета.
3;
курсив 4;
подчеркивание 5;
мигает (медленно) 6;
мигает (быстро) 7;
реверс 8;
скрыть 9;
вычеркивание
и почти поддерживаются.
НапримерKDE-Konsole поддерживает 5;
, а Gnome-Terminal - нет, а Gnome поддерживает 8;
, а KDE - нет.
3.режим переднего плана
Этот режим предназначен для раскрашивания переднего плана.
4.Режим фона
Этот режим предназначен для раскрашивания фона.
The below table shows a summary of 3/4 bit version of ANSI-color
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| color-mode | octal | hex | bash | description | example (= in octal) | NOTE |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| 0 | \033[0m | \x1b[0m | \e[0m | reset any affect | echo -e "\033[0m" | 0m equals to m |
| 1 | \033[1m | | | light (= bright) | echo -e "\033[1m####\033[m" | - |
| 2 | \033[2m | | | dark (= fade) | echo -e "\033[2m####\033[m" | - |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| text-mode | ~ | | | ~ | ~ | ~ |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| 3 | \033[3m | | | italic | echo -e "\033[3m####\033[m" | |
| 4 | \033[4m | | | underline | echo -e "\033[4m####\033[m" | |
| 5 | \033[5m | | | blink (slow) | echo -e "\033[3m####\033[m" | |
| 6 | \033[6m | | | blink (fast) | ? | not wildly support |
| 7 | \003[7m | | | reverse | echo -e "\033[7m####\033[m" | it affects the background/foreground |
| 8 | \033[8m | | | hide | echo -e "\033[8m####\033[m" | it affects the background/foreground |
| 9 | \033[9m | | | cross | echo -e "\033[9m####\033[m" | |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| foreground | ~ | | | ~ | ~ | ~ |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| 30 | \033[30m | | | black | echo -e "\033[30m####\033[m" | |
| 31 | \033[31m | | | red | echo -e "\033[31m####\033[m" | |
| 32 | \033[32m | | | green | echo -e "\033[32m####\033[m" | |
| 33 | \033[32m | | | yellow | echo -e "\033[33m####\033[m" | |
| 34 | \033[32m | | | blue | echo -e "\033[34m####\033[m" | |
| 35 | \033[32m | | | purple | echo -e "\033[35m####\033[m" | real name: magenta = reddish-purple |
| 36 | \033[32m | | | cyan | echo -e "\033[36m####\033[m" | |
| 37 | \033[32m | | | white | echo -e "\033[37m####\033[m" | |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| 38 | 8/24 | This is for special use of 8-bit or 24-bit |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| background | ~ | | | ~ | ~ | ~ |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| 40 | \033[40m | | | black | echo -e "\033[40m####\033[m" | |
| 41 | \033[41m | | | red | echo -e "\033[41m####\033[m" | |
| 42 | \033[42m | | | green | echo -e "\033[42m####\033[m" | |
| 43 | \033[43m | | | yellow | echo -e "\033[43m####\033[m" | |
| 44 | \033[44m | | | blue | echo -e "\033[44m####\033[m" | |
| 45 | \033[45m | | | purple | echo -e "\033[45m####\033[m" | real name: magenta = reddish-purple |
| 46 | \033[46m | | | cyan | echo -e "\033[46m####\033[m" | |
| 47 | \033[47m | | | white | echo -e "\033[47m####\033[m" | |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| 48 | 8/24 | This is for special use of 8-bit or 24-bit | |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
The below table shows a summary of 8 bit version of ANSI-color
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| foreground | octal | hex | bash | description | example | NOTE |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| 0-7 | \033[38;5 | \x1b[38;5 | \e[38;5 | standard. normal | echo -e '\033[38;5;1m####\033[m' | |
| 8-15 | | | | standard. light | echo -e '\033[38;5;9m####\033[m' | |
| 16-231 | | | | more resolution | echo -e '\033[38;5;45m####\033[m' | has no specific pattern |
| 232-255 | | | | | echo -e '\033[38;5;242m####\033[m' | from black to white |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| foreground | octal | hex | bash | description | example | NOTE |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| 0-7 | | | | standard. normal | echo -e '\033[48;5;1m####\033[m' | |
| 8-15 | | | | standard. light | echo -e '\033[48;5;9m####\033[m' | |
| 16-231 | | | | more resolution | echo -e '\033[48;5;45m####\033[m' | |
| 232-255 | | | | | echo -e '\033[48;5;242m####\033[m' | from black to white |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
The 8-bit fast test:
for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done
The below table shows a summary of 24 bit version of ANSI-color
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| foreground | octal | hex | bash | description | example | NOTE |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| 0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | R = red | echo -e '\033[38;2;255;0;02m####\033[m' | R=255, G=0, B=0 |
| 0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | G = green | echo -e '\033[38;2;;0;255;02m####\033[m' | R=0, G=255, B=0 |
| 0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | B = blue | echo -e '\033[38;2;0;0;2552m####\033[m' | R=0, G=0, B=255 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| background | octal | hex | bash | description | example | NOTE |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| 0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | R = red | echo -e '\033[48;2;255;0;02m####\033[m' | R=255, G=0, B=0 |
| 0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | G = green | echo -e '\033[48;2;;0;255;02m####\033[m' | R=0, G=255, B=0 |
| 0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | B = blue | echo -e '\033[48;2;0;0;2552m####\033[m' | R=0, G=0, B=255 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
some screen-shots
foreground 8-bit summary in a .gif
фоновая 8-битная сводка в .gif
сводка цветов с их значениями
blinking
на KDE-терминале
a simple C
code that shows you more
a more advanced tool that I developed to deal with these colors:
съемка в цветном режиме
съемка в текстовом режиме
Комбинация в порядке
Советы и рекомендации для опытных пользователей и программистов:
Можем ли мы использовать эти коды на языке программирования?
Да, вы можете.Я испытал в bash , c , c ++ , d perl , python
Они замедляют скорость программы?
Я думаю, НЕТ.
Можем ли мы использовать их в Windows?
3/4-бит Да, если вы компилируете код с gcc
некоторыми снимками экрана на Win-7
Как рассчитать длину кода?
\033[
= 2, другие части 1
Где мы можем использовать эти коды?
Везде, где есть tty
интерпретатор
xterm
, gnome-terminal
, kde-terminal
, mysql-client-CLI
и т. Д.
Например, если вы хотите раскрасить вывод с помощью mysql, вы можете использовать Perl
#!/usr/bin/perl -n
print "\033[1m\033[31m$1\033[36m$2\033[32m$3\033[33m$4\033[m" while /([|+-]+)|([0-9]+)|([a-zA-Z_]+)|([^\w])/g;
сохраните этот код в имени файла: pcc
(= Perl Colorize Character) и затем поместите файл в допустимый PATH
, а затем используйте его где угодно.
ls | pcc
df | pcc
внутри mysql
сначала зарегистрируйте его для pager
, а затем попробуйте:
[user2:db2] pager pcc
PAGER set to 'pcc'
[user2:db2] select * from table-name;
Он НЕ обрабатывает Unicode.
Разве эти коды только раскрашивают?
Нет, они могут делать много интересного.Попробуйте:
echo -e '\033[2K' # clear the screen and do not move the position
или:
echo -e '\033[2J\033[u' # clear the screen and reset the position
Многие новички хотят очистить экран с помощью system( "clear" )
, поэтому вы можете использовать это вместо system(3)
call
Они доступны в Юникоде?
Да. \u001b
Какой вариант этих цветов предпочтительнее?
Легко использовать 3/4-bit
, но гораздо точнее и красивее использовать 24-bit
.
Если у вас нет опыта работы с html , вот краткое руководство:
24 бита означают: 00000000
и 00000000
и 00000000
. Каждый 8-бит предназначен для определенного цвета.
1..8
для и 9..16
для и 17..24
для
Таким образом, html #FF0000
означает и вот оно: 255;0;0
в html #00FF00
означает , что здесь: 0;255;0
Имеет ли это смысл? какой цвет вы хотите объединить с этими тремя 8-битными значениями.
справка:
Википедия
escape-последовательности ANSI
tldp.org
tldp.org
misc.flogisoft.com
некоторые блоги / веб-страницы, которые я не помню