提问人:satheesh.droid 提问时间:5/10/2011 最后编辑:whackamadoodle3000satheesh.droid 更新时间:4/13/2023 访问量:1883730
如何在 Linux 中更改 echo 的输出颜色
How to change the output color of echo in Linux
答:
echo -e "\033[31m Hello World"
控制文本颜色:[31m
30
-37
设置前景色40
-47
设置背景颜色
可以在此处找到更完整的颜色代码列表。
最好将文本颜色重置回字符串末尾。\033[0m
评论
与 的功能和参数一起使用 。tput
setaf
1
echo "$(tput setaf 1)Hello, world$(tput sgr0)"
评论
\033[31m
i
for (( i = 0; i < 17; i++ )); do echo "$(tput setaf $i)This is ($i) $(tput sgr0)"; done
\033[31m
tput + setaf
\e[0;31mHello Stackoverflow\e[0m
"
\ESC[m
tput
\ESC(B\ESC[m
\033[31mHello, world\033[m
sgr0
您可以使用以下 ANSI 转义码:
Black 0;30 Dark Gray 1;30
Red 0;31 Light Red 1;31
Green 0;32 Light Green 1;32
Brown/Orange 0;33 Yellow 1;33
Blue 0;34 Light Blue 1;34
Purple 0;35 Light Purple 1;35
Cyan 0;36 Light Cyan 1;36
Light Gray 0;37 White 1;37
然后在脚本中像这样使用它们:
# .---------- constant part!
# vvvv vvvv-- the code from above
RED='\033[0;31m'
NC='\033[0m' # No Color
printf "I ${RED}love${NC} Stack Overflow\n"
以红色打印。love
根据 @james-lim 的评论,如果您使用的是 echo
命令,请务必使用 -e
标志来允许反斜杠转义。
# .---------- constant part!
# vvvv vvvv-- the code from above
RED='\033[0;31m'
NC='\033[0m' # No Color
echo -e "I ${RED}love${NC} Stack Overflow"
注意:使用时不要添加,除非您想添加额外的空行。"\n"
echo
评论
\e[0;31mHello Stackoverflow\e[0m
echo
\x1B
\e
\033
for (( i = 30; i < 38; i++ )); do echo -e "\033[0;"$i"m Normal: (0;$i); \033[1;"$i"m Light: (1;$i)"; done
您可以使用很棒的命令(在 Ignacio 的回答中建议)为各种事物生成终端控制代码。tput
用法
具体的子命令将在后面讨论。tput
直接
作为一系列命令的一部分调用:tput
tput setaf 1; echo "this is red text"
如果文本仍显示错误,则使用而不是 so。;
&&
tput
Shell 变量
另一种选择是使用 shell 变量:
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
echo "${red}red text ${green}green text${reset}"
tput
生成被终端解释为具有特殊含义的字符序列。他们不会被展示出来。请注意,它们仍然可以保存到文件中或由终端以外的程序作为输入进行处理。
命令替换
使用命令替换将 的输出直接插入到字符串中可能更方便:tput
echo
echo "$(tput setaf 1)Red text $(tput setab 7)and white background$(tput sgr 0)"
例
上面的命令在 Ubuntu 上生成以下命令:
前景色和背景色命令
tput setab [1-7] # Set the background colour using ANSI escape
tput setaf [1-7] # Set the foreground colour using ANSI escape
颜色如下:
Num Colour #define R G B
0 black COLOR_BLACK 0,0,0
1 red COLOR_RED 1,0,0
2 green COLOR_GREEN 0,1,0
3 yellow COLOR_YELLOW 1,1,0
4 blue COLOR_BLUE 0,0,1
5 magenta COLOR_MAGENTA 1,0,1
6 cyan COLOR_CYAN 0,1,1
7 white COLOR_WHITE 1,1,1
还有非 ANSI 版本的颜色设置函数(而不是 ,而不是 ),它们使用不同的数字,这里没有给出。setb
setab
setf
setaf
文本模式命令
tput bold # Select bold mode
tput dim # Select dim (half-bright) mode
tput smul # Enable underline mode
tput rmul # Disable underline mode
tput rev # Turn on reverse video mode
tput smso # Enter standout (bold) mode
tput rmso # Exit standout mode
光标移动命令
tput cup Y X # Move cursor to screen postion X,Y (top left is 0,0)
tput cuf N # Move N characters forward (right)
tput cub N # Move N characters back (left)
tput cuu N # Move N lines up
tput ll # Move to last line, first column (if no cup)
tput sc # Save the cursor position
tput rc # Restore the cursor position
tput lines # Output the number of lines of the terminal
tput cols # Output the number of columns of the terminal
清除和插入命令
tput ech N # Erase N characters
tput clear # Clear screen and move the cursor to 0,0
tput el 1 # Clear to beginning of line
tput el # Clear to end of line
tput ed # Clear to end of screen
tput ich N # Insert N characters (moves rest of line forward!)
tput il N # Insert N lines
其他命令
tput sgr0 # Reset text format to the terminal's default
tput bel # Play a bell
对于 compiz 摇摆不定的窗口,该命令使终端摇晃一秒钟以吸引用户的注意力。bel
脚本
tput
接受每行包含一个命令的脚本,这些脚本在退出之前按顺序执行。tput
通过回显多行字符串并通过管道传输来避免临时文件:
echo -e "setf 7\nsetb 1" | tput -S # set fg white and bg red
另请参阅
- 见
男人 1 tput
- 请参阅
man 5 terminfo
以获取命令的完整列表以及有关这些选项的更多详细信息。(相应的命令列在从第 81 行开始的巨大表的列中。tput
Cap-name
评论
$()
tput af 1
tput af 1
ncurses
仅为一个更改颜色的巧妙方法是定义以下函数:echo
function coloredEcho(){
local exp=$1;
local color=$2;
if ! [[ $color =~ '^[0-9]$' ]] ; then
case $(echo $color | tr '[:upper:]' '[:lower:]') in
black) color=0 ;;
red) color=1 ;;
green) color=2 ;;
yellow) color=3 ;;
blue) color=4 ;;
magenta) color=5 ;;
cyan) color=6 ;;
white|*) color=7 ;; # white or invalid color
esac
fi
tput setaf $color;
echo $exp;
tput sgr0;
}
用法:
coloredEcho "This text is green" green
或者你可以直接使用德鲁回答中提到的颜色代码:
coloredEcho "This text is green" 2
评论
-n
echo "Red `coloredEcho "fox" red` jumps over the lazy dog"
red='\e[0;31m'
NC='\e[0m' # No Color
echo -e "${red}Hello Stackoverflow${NC}"
这个答案是正确的,除了对颜色的调用不应该在引号内。
echo -e ${red}"Hello Stackoverflow"${NC}
应该可以解决问题。
评论
echo -e '\e[0;31mHello Stackoverflow\e[0m'
为了提高可读性
如果要提高代码的可读性,可以先使用字符串,然后再使用以下方法添加颜色:echo
sed
echo 'Hello World!' | sed $'s/World/\e[1m&\e[0m/'
评论
这些代码适用于我的 Ubuntu 盒子:
echo -e "\x1B[31m foobar \x1B[0m"
echo -e "\x1B[32m foobar \x1B[0m"
echo -e "\x1B[96m foobar \x1B[0m"
echo -e "\x1B[01;96m foobar \x1B[0m"
echo -e "\x1B[01;95m foobar \x1B[0m"
echo -e "\x1B[01;94m foobar \x1B[0m"
echo -e "\x1B[01;93m foobar \x1B[0m"
echo -e "\x1B[01;91m foobar \x1B[0m"
echo -e "\x1B[01;90m foobar \x1B[0m"
echo -e "\x1B[01;89m foobar \x1B[0m"
echo -e "\x1B[01;36m foobar \x1B[0m"
这将以不同的颜色打印字母 a b c d:
echo -e "\x1B[0;93m a \x1B[0m b \x1B[0;92m c \x1B[0;93m d \x1B[0;94m"
for 循环:
for (( i = 0; i < 17; i++ ));
do echo "$(tput setaf $i)This is ($i) $(tput sgr0)";
done
评论
这是颜色开关。查看历史记录。\033[
颜色代码如(浅绿色)、(蓝色)、(浅蓝色)等。1;32
0;34
1;34
我们用颜色开关和 ,无颜色代码终止颜色序列。就像在标记语言中打开和关闭选项卡一样。\033[
0m
SWITCH="\033["
NORMAL="${SWITCH}0m"
YELLOW="${SWITCH}1;33m"
echo "${YELLOW}hello, yellow${NORMAL}"
简单的色彩功能解决方案:echo
cecho() {
local code="\033["
case "$1" in
black | bk) color="${code}0;30m";;
red | r) color="${code}1;31m";;
green | g) color="${code}1;32m";;
yellow | y) color="${code}1;33m";;
blue | b) color="${code}1;34m";;
purple | p) color="${code}1;35m";;
cyan | c) color="${code}1;36m";;
gray | gr) color="${code}0;37m";;
*) local text="$1"
esac
[ -z "$text" ] && local text="$color$2${code}0m"
echo "$text"
}
cecho "Normal"
cecho y "Yellow!"
评论
text
text="$color${@: 2}${code}0m"
tput
您可以使用的一些变量:
# 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
Bash、Hex 和 Octal 中的转义字符分别为:
| | bash | hex | octal | NOTE |
|-------+-------+---------+---------+------------------------------|
| start | \e | \x1b | \033 | |
| start | \E | \x1B | - | x cannot be capital |
| end | \e[0m | \x1b[0m | \033[0m | |
| end | \e[m | \x1b[m | \033[m | 0 is appended if you omit it |
| | | | | |
简短的例子:
| color | bash | hex | octal | NOTE |
|-------------+--------------+----------------+----------------+---------------------------------------|
| start green | \e[32m<text> | \x1b[32m<text> | \033[32m<text> | m is NOT optional |
| reset | <text>\e[0m | <text>\1xb[0m | <text>\033[om | o is optional (do it as best practice |
| | | | | |
bash 异常:
如果您打算在特殊的 bash 变量中使用这些代码
- PS0的
- QSP系列
- PS2 (= 这是为了提示)
- PS4的
您应该添加额外的转义字符,以便 bash 可以正确解释它们。如果不添加额外的转义字符,它就可以工作,但是当您在历史记录中用于搜索时,您会遇到问题。Ctrl + r
bash 的异常规则
您应该在任何起始 ANSI 代码之前添加,并在任何结束代码之后添加。
示例:常规使用:适用于 PS0/1/2/4:
\[
\]
\033[32mThis is in green\033[0m
\[\033[32m\]This is in green\[\033[m\]
\[
is for a sequence of non-printable characters is for end of a sequence of non-printable characters is for end of a sequence of non-printable characters\]
提示:为了记住它,您可以先添加,然后将ANSI代码放在它们之间:\[\]
\[start-ANSI-code\]
\[end-ANSI-code\]
颜色序列类型:
- 3/4 位
- 8 位
- 24 位
在深入研究这些颜色之前,您应该了解以下代码的 4 种模式:
1.颜色模式
它修改颜色的样式,而不是文本。例如,使颜色更亮或更暗。
0
重置1;
比平时轻2;
比平时更暗
此模式不受广泛支持。它完全支持 Gnome-Terminal。
2. 文本模式
此模式用于修改文本的样式,而不是颜色。
3;
斜体的4;
下划线5;
闪烁(慢速)6;
闪烁(快速)7;
反向8;
隐藏9;
划线
并且几乎得到支持。
例如,KDE-Konsole 支持但 Gnome-Terminal 不支持,Gnome 支持但 KDE 不支持。5;
8;
3.前景模式
此模式用于为前景着色。
4.背景模式
此模式用于为背景着色。
下表显示了 ANSI 颜色的 3/4 位版本的摘要
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| 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[33m | | | yellow | echo -e "\033[33m####\033[m" | |
| 34 | \033[34m | | | blue | echo -e "\033[34m####\033[m" | |
| 35 | \033[35m | | | purple | echo -e "\033[35m####\033[m" | real name: magenta = reddish-purple |
| 36 | \033[36m | | | cyan | echo -e "\033[36m####\033[m" | |
| 37 | \033[37m | | | 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 | |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
下表显示了 ANSI 颜色的 8 位版本的摘要
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| 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 |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
8 位快速测试:
for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done
下表显示了 ANSI 颜色的 24 位版本的摘要
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| 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 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
一些屏幕截图
前台 8 位摘要.gif
背景 8 位摘要.gif
颜色摘要及其值
blinking
在 KDE 终端上
彩色模式拍摄
文本模式拍摄
组合是可以的
更多镜头
高级用户和程序员的提示和技巧:
我们可以在编程语言中使用这些代码吗?
是的, 你可以的。我在 bash、c、c++、d perl、python 方面经验丰富
它们会减慢程序的速度吗?
我想,不。
我们可以在 Windows 上使用这些吗?
3/4 位 是的,如果您在 Win-7 上使用
一些屏幕截图编译代码gcc
如何计算代码的长度?
\033[
= 2,其他部分 1
我们可以在哪里使用这些代码?
任何有解释器
、、、等的地方。
例如,如果您想使用 mysql 为输出着色,您可以使用tty
xterm
gnome-terminal
kde-terminal
mysql-client-CLI
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;
将此代码存储在文件名中:(= Perl Colorize Character),然后将文件设置为有效,然后在您喜欢的任何地方使用它。pcc
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)
它们在 Unicode 中可用吗?
是的。\u001b
这些颜色哪个版本更可取?
它易于使用,但使用起来非常准确和美观。
如果您没有 html 经验,那么这里有一个快速教程:24 位表示:
和 和 .每个 8 位用于特定颜色。
is for 和 for and for
所以在html中意味着,这里是:在html中意味着
这里是:
这有意义吗?您想要的颜色 将其与这三个 8 位值组合在一起。3/4-bit
24-bit
00000000
00000000
00000000
1..8
9..16
17..24
#FF0000
255;0;0
#00FF00
0;255;0
参考资料:
维基百科
ANSI转义序列
tldp.org
tldp.org
misc.flogisoft.com
一些我不记得的博客/网页
评论
x1B[
echo -e "\033[97;44;1m text \033[m"
\033[0m
<text>\033[om
<text>\033[0m
为了扩展这个答案,对于我们这些懒惰的人来说:
function echocolor() { # $1 = string
COLOR='\033[1;33m'
NC='\033[0m'
printf "${COLOR}$1${NC}\n"
}
echo "This won't be colored"
echocolor "This will be colorful"
评论
tput
tput
sc
rc
到目前为止,我最喜欢的答案是coloredEcho。
只是为了发布另一个选项,您可以查看这个小工具 xcol
https://ownyourbits.com/2017/01/23/colorize-your-stdout-with-xcol/
您可以像 grep 一样使用它,例如,它会为每个参数使用不同的颜色来着色其 stdin
sudo netstat -putan | xcol httpd sshd dnsmasq pulseaudio conky tor Telegram firefox "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" ":[[:digit:]]+" "tcp." "udp." LISTEN ESTABLISHED TIME_WAIT
请注意,它接受 sed 将接受的任何正则表达式。
此工具使用以下定义
#normal=$(tput sgr0) # normal text
normal=$'\e[0m' # (works better sometimes)
bold=$(tput bold) # make colors bold/bright
red="$bold$(tput setaf 1)" # bright red text
green=$(tput setaf 2) # dim green text
fawn=$(tput setaf 3); beige="$fawn" # dark yellow text
yellow="$bold$fawn" # bright yellow text
darkblue=$(tput setaf 4) # dim blue text
blue="$bold$darkblue" # bright blue text
purple=$(tput setaf 5); magenta="$purple" # magenta text
pink="$bold$purple" # bright magenta text
darkcyan=$(tput setaf 6) # dim cyan text
cyan="$bold$darkcyan" # bright cyan text
gray=$(tput setaf 7) # dim white text
darkgray="$bold"$(tput setaf 0) # bold black = dark gray text
white="$bold$gray" # bright white text
我在我的脚本中使用这些变量,如下所示
echo "${red}hello ${yellow}this is ${green}coloured${normal}"
这是我过去看到的所有组合,并决定哪个读起来很酷:
for (( i = 0; i < 8; i++ )); do
for (( j = 0; j < 8; j++ )); do
printf "$(tput setab $i)$(tput setaf $j)(b=$i, f=$j)$(tput sgr0)\n"
done
done
我写了赃物来实现这一目标。
你可以做
pip install swag
现在,您可以通过以下方式将所有转义命令作为 txt 文件安装到给定的目标:
swag install -d <colorsdir>
或者通过以下方式更轻松:
swag install
这会将颜色安装到 .~/.colors
要么你像这样使用它们:
echo $(cat ~/.colors/blue.txt) This will be blue
或者这种方式,我觉得实际上更有趣:
swag print -c red -t underline "I will turn red and be underlined"
在asciinema上查看!
用于计算颜色代码。避免使用 ANSI 转义码(例如 对于红色),因为它的便携性较差。例如,OS X 上的 Bash 不支持它。tput
\E[31;1m
BLACK=`tput setaf 0`
RED=`tput setaf 1`
GREEN=`tput setaf 2`
YELLOW=`tput setaf 3`
BLUE=`tput setaf 4`
MAGENTA=`tput setaf 5`
CYAN=`tput setaf 6`
WHITE=`tput setaf 7`
BOLD=`tput bold`
RESET=`tput sgr0`
echo -e "hello ${RED}some red text${RESET} world"
感谢 @k-five 的回答
declare -A colors
#curl www.bunlongheng.com/code/colors.png
# Reset
colors[Color_Off]='\033[0m' # Text Reset
# Regular Colors
colors[Black]='\033[0;30m' # Black
colors[Red]='\033[0;31m' # Red
colors[Green]='\033[0;32m' # Green
colors[Yellow]='\033[0;33m' # Yellow
colors[Blue]='\033[0;34m' # Blue
colors[Purple]='\033[0;35m' # Purple
colors[Cyan]='\033[0;36m' # Cyan
colors[White]='\033[0;37m' # White
# Bold
colors[BBlack]='\033[1;30m' # Black
colors[BRed]='\033[1;31m' # Red
colors[BGreen]='\033[1;32m' # Green
colors[BYellow]='\033[1;33m' # Yellow
colors[BBlue]='\033[1;34m' # Blue
colors[BPurple]='\033[1;35m' # Purple
colors[BCyan]='\033[1;36m' # Cyan
colors[BWhite]='\033[1;37m' # White
# Underline
colors[UBlack]='\033[4;30m' # Black
colors[URed]='\033[4;31m' # Red
colors[UGreen]='\033[4;32m' # Green
colors[UYellow]='\033[4;33m' # Yellow
colors[UBlue]='\033[4;34m' # Blue
colors[UPurple]='\033[4;35m' # Purple
colors[UCyan]='\033[4;36m' # Cyan
colors[UWhite]='\033[4;37m' # White
# Background
colors[On_Black]='\033[40m' # Black
colors[On_Red]='\033[41m' # Red
colors[On_Green]='\033[42m' # Green
colors[On_Yellow]='\033[43m' # Yellow
colors[On_Blue]='\033[44m' # Blue
colors[On_Purple]='\033[45m' # Purple
colors[On_Cyan]='\033[46m' # Cyan
colors[On_White]='\033[47m' # White
# High Intensity
colors[IBlack]='\033[0;90m' # Black
colors[IRed]='\033[0;91m' # Red
colors[IGreen]='\033[0;92m' # Green
colors[IYellow]='\033[0;93m' # Yellow
colors[IBlue]='\033[0;94m' # Blue
colors[IPurple]='\033[0;95m' # Purple
colors[ICyan]='\033[0;96m' # Cyan
colors[IWhite]='\033[0;97m' # White
# Bold High Intensity
colors[BIBlack]='\033[1;90m' # Black
colors[BIRed]='\033[1;91m' # Red
colors[BIGreen]='\033[1;92m' # Green
colors[BIYellow]='\033[1;93m' # Yellow
colors[BIBlue]='\033[1;94m' # Blue
colors[BIPurple]='\033[1;95m' # Purple
colors[BICyan]='\033[1;96m' # Cyan
colors[BIWhite]='\033[1;97m' # White
# High Intensity backgrounds
colors[On_IBlack]='\033[0;100m' # Black
colors[On_IRed]='\033[0;101m' # Red
colors[On_IGreen]='\033[0;102m' # Green
colors[On_IYellow]='\033[0;103m' # Yellow
colors[On_IBlue]='\033[0;104m' # Blue
colors[On_IPurple]='\033[0;105m' # Purple
colors[On_ICyan]='\033[0;106m' # Cyan
colors[On_IWhite]='\033[0;107m' # White
color=${colors[$input_color]}
white=${colors[White]}
# echo $white
for i in "${!colors[@]}"
do
echo -e "$i = ${colors[$i]}I love you$white"
done
结果
希望这张图片能帮助你为你的 bash :D选择颜色
评论
这个问题已经一遍又一遍地回答了:-)但为什么不呢。
首先,在现代环境中使用比手动注入 ASCII 代码更便携tput
echo -E
下面是一个快速的 bash 函数:
say() {
echo "$@" | sed \
-e "s/\(\(@\(red\|green\|yellow\|blue\|magenta\|cyan\|white\|reset\|b\|u\)\)\+\)[[]\{2\}\(.*\)[]]\{2\}/\1\4@reset/g" \
-e "s/@red/$(tput setaf 1)/g" \
-e "s/@green/$(tput setaf 2)/g" \
-e "s/@yellow/$(tput setaf 3)/g" \
-e "s/@blue/$(tput setaf 4)/g" \
-e "s/@magenta/$(tput setaf 5)/g" \
-e "s/@cyan/$(tput setaf 6)/g" \
-e "s/@white/$(tput setaf 7)/g" \
-e "s/@reset/$(tput sgr0)/g" \
-e "s/@b/$(tput bold)/g" \
-e "s/@u/$(tput sgr 0 1)/g"
}
现在,您可以使用:
say @b@green[[Success]]
要获得:
关于可移植性的注意事项tput
1986 年 9 月首次上传源代码tput(1)
tput(1)
在 1990 年代的 X/Open curses 语义中可用(1997 年标准具有下面提到的语义)。
所以,它(相当)无处不在。
评论
tput
$PS1
\[...\]
我们可以将 24 位 RGB 真彩色用于文本和背景!
ESC[38;2;⟨r⟩;⟨g⟩;⟨b⟩m /*Foreground color*/
ESC[48;2;⟨r⟩;⟨g⟩;⟨b⟩m /*Background color*/
红色文本和结束标记示例:
echo -e "\e[38;2;255;0;0mHello world\e[0m"
发电机:
text.addEventListener("input",update)
back.addEventListener("input",update)
function update(){
let a = text.value.substr(1).match(/.{1,2}/g)
let b = back.value.substr(1).match(/.{1,2}/g)
out1.textContent = "echo -e \"\\" + `033[38;2;${parseInt(a[0],16)};${parseInt(a[1],16)};${parseInt(a[2],16)}mHello\"`
out2.textContent = "echo -e \"\\" + `033[48;2;${parseInt(b[0],16)};${parseInt(b[1],16)};${parseInt(b[2],16)}mWorld!\"`
}
div {padding:1rem;font-size:larger}
TEXT COLOR: <input type="color" id="text" value="#23233">
<br><div id="out1"></div>
BACK COLOR: <input type="color" id="back" value="#FFFF00">
<br><div id="out2">
24 位:作为具有 16 到 24 位颜色的“真彩色”显卡 变得普遍,Xterm,KDE 的 Konsole 以及所有 libvte 基于终端(包括 GNOME 终端)支持 24 位 前景色和背景色设置 https://en.wikipedia.org/wiki/ANSI_escape_code#24-bit
在我的脚本中使用安全吗?
是的!8 位和 16 位终端将只显示可用调色板范围内的一种颜色作为后备颜色,保持最佳对比度,没有破损!
此外,没有人注意到 ANSI 代码 7 反转视频的有用性。
通过交换前景色和背景色,它可以在任何终端方案颜色、黑色或白色背景或其他奇特的调色板上保持可读性。
例如,对于适用于任何地方的红色背景:
echo -e "\033[31;7mHello world\e[0m";
这是更改终端内置方案时的样子:
这是用于 gif 的循环脚本。
for i in {30..49};do echo -e "\033[$i;7mReversed color code $i\e[0m Hello world!";done
见 https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters
评论
for i in {30..49};do echo -e "\033[$i;7mReversed color code $i\e[0m Hello world\!";done
您绝对应该使用tput而不是原始ANSI控制序列。
因为有大量不同的终端控制 语言,通常一个系统有一个中间通信层。 在数据库中查找当前检测到的真实代码 终端类型,并且您向 API 或(从 shell) 添加到命令中。
其中一个命令是 。 接受一组首字母缩略词,称为 功能名称和任何参数(如果适用),然后查找 在 terminfo 中检测到的终端的正确转义序列 数据库并打印正确的代码(希望终端 理解)。
tput
tput
与 http://wiki.bash-hackers.org/scripting/terminalcodes 相比
也就是说,我写了一个名为 bash-tint 的小型辅助库,它在 tput 之上添加了另一层,使其使用起来更加简单(恕我直言):
例:
tint "white(Cyan(T)Magenta(I)Yellow(N)Black(T)) is bold(really) easy to use."
这是最简单易读的解决方案。 使用 bashj (https://sourceforge.net/projects/bashj/),您只需选择以下行之一:
#!/usr/bin/bash
W="Hello world!"
echo $W
R=130
G=60
B=190
echo u.colored($R,$G,$B,$W)
echo u.colored(255,127,0,$W)
echo u.red($W)
echo u.bold($W)
echo u.italic($W)
Y=u.yellow($W)
echo $Y
echo u.bold($Y)
256x256x256
如果您的终端应用程序中有颜色支持,则颜色可用。
我刚刚合并了所有解决方案中的好渔获物,最终得到:
cecho(){
RED="\033[0;31m"
GREEN="\033[0;32m" # <-- [0 means not bold
YELLOW="\033[1;33m" # <-- [1 means bold
CYAN="\033[1;36m"
# ... Add more colors if you like
NC="\033[0m" # No Color
# printf "${(P)1}${2} ${NC}\n" # <-- zsh
printf "${!1}${2} ${NC}\n" # <-- bash
}
你可以把它叫做:
cecho "RED" "Helloworld"
评论
printf
echo
${(P)1}
${!1}
${!1}
要以不同的颜色显示消息输出,您可以:
echo -e "\033[31;1mYour Message\033[0m"
-黑色 0;30 深灰色 1;30
-红色 0;31 浅红 1;31
-绿色 0;32 浅绿色 1;32
-棕色/橙色 0;33 黄色 1;33
-蓝色 0;34 浅蓝色 1;34
-紫色 0;35 浅紫色 1;35
-青色 0;36 浅青色 1;36
-浅灰色 0;37 白色 1;37
如果您正在使用 或zsh
bash
black() {
echo -e "\e[30m${1}\e[0m"
}
red() {
echo -e "\e[31m${1}\e[0m"
}
green() {
echo -e "\e[32m${1}\e[0m"
}
yellow() {
echo -e "\e[33m${1}\e[0m"
}
blue() {
echo -e "\e[34m${1}\e[0m"
}
magenta() {
echo -e "\e[35m${1}\e[0m"
}
cyan() {
echo -e "\e[36m${1}\e[0m"
}
gray() {
echo -e "\e[90m${1}\e[0m"
}
black 'BLACK'
red 'RED'
green 'GREEN'
yellow 'YELLOW'
blue 'BLUE'
magenta 'MAGENTA'
cyan 'CYAN'
gray 'GRAY'
我应该使用 .tput
这是我最喜欢的演示脚本:
#!/bin/bash
tput init
end=$(( $(tput colors)-1 ))
w=8
for c in $(seq 0 $end); do
eval "$(printf "tput setaf %3s " "$c")"; echo -n "$_"
[[ $c -ge $(( w*2 )) ]] && offset=2 || offset=0
[[ $(((c+offset) % (w-offset))) -eq $(((w-offset)-1)) ]] && echo
done
tput init
我正在用它来进行彩色打印
#!/bin/bash
#--------------------------------------------------------------------+
#Color picker, usage: printf $BLD$CUR$RED$BBLU'Hello World!'$DEF |
#-------------------------+--------------------------------+---------+
# Text color | Background color | |
#-----------+-------------+--------------+-----------------+ |
# Base color|Lighter shade| Base color | Lighter shade | |
#-----------+-------------+--------------+-----------------+ |
BLK='\e[30m'; blk='\e[90m'; BBLK='\e[40m'; bblk='\e[100m' #| Black |
RED='\e[31m'; red='\e[91m'; BRED='\e[41m'; bred='\e[101m' #| Red |
GRN='\e[32m'; grn='\e[92m'; BGRN='\e[42m'; bgrn='\e[102m' #| Green |
YLW='\e[33m'; ylw='\e[93m'; BYLW='\e[43m'; bylw='\e[103m' #| Yellow |
BLU='\e[34m'; blu='\e[94m'; BBLU='\e[44m'; bblu='\e[104m' #| Blue |
MGN='\e[35m'; mgn='\e[95m'; BMGN='\e[45m'; bmgn='\e[105m' #| Magenta |
CYN='\e[36m'; cyn='\e[96m'; BCYN='\e[46m'; bcyn='\e[106m' #| Cyan |
WHT='\e[37m'; wht='\e[97m'; BWHT='\e[47m'; bwht='\e[107m' #| White |
#-------------------------{ Effects }----------------------+---------+
DEF='\e[0m' #Default color and effects |
BLD='\e[1m' #Bold\brighter |
DIM='\e[2m' #Dim\darker |
CUR='\e[3m' #Italic font |
UND='\e[4m' #Underline |
INV='\e[7m' #Inverted |
COF='\e[?25l' #Cursor Off |
CON='\e[?25h' #Cursor On |
#------------------------{ Functions }-------------------------------+
# Text positioning, usage: XY 10 10 'Hello World!' |
XY () { printf "\e[$2;${1}H$3"; } #|
# Print line, usage: line - 10 | line -= 20 | line 'Hello World!' 20 |
line () { printf -v _L %$2s; printf -- "${_L// /$1}"; } #|
# Create sequence like {0..(X-1)} |
que () { printf -v _N %$1s; _N=(${_N// / 1}); printf "${!_N[*]}"; } #|
#--------------------------------------------------------------------+
所有基本颜色都设置为变量,并且还有一些有用的功能:XY、line 和 que。将此脚本源在您的脚本之一中,并使用所有颜色变量和函数。
当我在寻找有关该主题的信息时,我找到了 Shakiba Moshiri 的精彩答案......然后我有了一个主意......它最终形成了一个非常好的功能,非常易于使用 😁
所以我必须分享它 😉
https://github.com/ppo/bash-colors
用法:在或$(c <flags>)
echo -e
printf
┌───────┬─────────────────┬──────────┐ ┌───────┬─────────────────┬──────────┐
│ Code │ Style │ Octal │ │ Code │ Style │ Octal │
├───────┼─────────────────┼──────────┤ ├───────┼─────────────────┼──────────┤
│ - │ Foreground │ \033[3.. │ │ B │ Bold │ \033[1m │
│ _ │ Background │ \033[4.. │ │ U │ Underline │ \033[4m │
├───────┼─────────────────┼──────────┤ │ F │ Flash/blink │ \033[5m │
│ k │ Black │ ......0m │ │ N │ Negative │ \033[7m │
│ r │ Red │ ......1m │ ├───────┼─────────────────┼──────────┤
│ g │ Green │ ......2m │ │ L │ Normal (unbold) │ \033[22m │
│ y │ Yellow │ ......3m │ │ 0 │ Reset │ \033[0m │
│ b │ Blue │ ......4m │ └───────┴─────────────────┴──────────┘
│ m │ Magenta │ ......5m │
│ c │ Cyan │ ......6m │
│ w │ White │ ......7m │
└───────┴─────────────────┴──────────┘
例子:
echo -e "$(c 0wB)Bold white$(c) and normal"
echo -e "Normal text… $(c r_yB)BOLD red text on yellow background… $(c _w)now on
white background… $(c 0U) reset and underline… $(c) and back to normal."
这里有一个简单的脚本,可以在 bash shell promt 中轻松管理文本样式:
https://github.com/ferromauro/bash-palette
使用以下命令导入代码:
source bash-palette.sh
在 echo 命令中使用导入的变量(使用 -e 选项!
echo -e ${PALETTE_GREEN}Color Green${PALETTE_RESET}
可以组合更多元素:
echo -e ${PALETTE_GREEN}${PALETTE_BLINK}${PALETTE_RED_U}Green Blinking Text over Red Background${PALETTE_RESET}
受到@nachoparker回答的启发,我在我的回答中写道:.bashrc
#### colours
source xcol.sh
### tput foreground
export tpfn=$'\e[0m' # normal
export tpfb=$(tput bold)
## normal colours
export tpf0=$(tput setaf 0) # black
export tpf1=$(tput setaf 1) # red
export tpf2=$(tput setaf 2) # green
export tpf3=$(tput setaf 3) # yellow
export tpf4=$(tput setaf 4) # blue
export tpf5=$(tput setaf 5) # magenta
export tpf6=$(tput setaf 6) # cyan
export tpf7=$(tput setaf 7) # white
# echo "${tpf0}black ${tpf1}red ${tpf2}green ${tpf3}yellow ${tpf4}blue ${tpf5}magenta ${tpf6}cyan ${tpf7}white${tpfn}"
## bold colours
export tpf0b="$tpfb$tpf0" # bold black
export tpf1b="$tpfb$tpf1" # bold red
export tpf2b="$tpfb$tpf2" # bold green
export tpf3b="$tpfb$tpf3" # bold yellow
export tpf4b="$tpfb$tpf4" # bold blue
export tpf5b="$tpfb$tpf5" # bold magenta
export tpf6b="$tpfb$tpf6" # bold cyan
export tpf7b="$tpfb$tpf7" # bold white
# echo "${tpf0b}black ${tpf1b}red ${tpf2b}green ${tpf3b}yellow ${tpf4b}blue ${tpf5b}magenta ${tpf6b}cyan ${tpf7b}white${tpfn}"
允许我在 Bash 脚本中使用它们。export
tpf..
您可以“组合”颜色和文本模式。
#!/bin/bash
echo red text / black background \(Reverse\)
echo "\033[31;7mHello world\e[0m";
echo -e "\033[31;7mHello world\e[0m";
echo
echo yellow text / red background
echo "\033[32;41mHello world\e[0m";
echo -e "\033[32;41mHello world\e[0m";
echo "\033[0;32;41mHello world\e[0m";
echo -e "\033[0;32;41mHello world\e[0m";
echo
echo yellow BOLD text / red background
echo "\033[1;32;41mHello world\e[0m";
echo -e "\033[1;32;41mHello world\e[0m";
echo
echo yellow BOLD text underline / red background
echo "\033[1;4;32;41mHello world\e[0m";
echo -e "\033[1;4;32;41mHello world\e[0m";
echo "\033[1;32;4;41mHello world\e[0m";
echo -e "\033[1;32;4;41mHello world\e[0m";
echo "\033[4;32;41;1mHello world\e[0m";
echo -e "\033[4;32;41;1mHello world\e[0m";
echo
我对托比亚斯的回答的即兴演奏:
# Color
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
function red {
printf "${RED}$@${NC}\n"
}
function green {
printf "${GREEN}$@${NC}\n"
}
function yellow {
printf "${YELLOW}$@${NC}\n"
}
表情符号
您可以做的一件事,答案中没有提到,那就是使用表情符号为您的输出着色!
echo 📕: error message
echo 📙: warning message
echo 📗: ok status message
echo 📘: action message
echo 📔: Or anything you like and want to recognize immediately by color
echo 💩: Or with a specific emoji
🎁 奖金附加值
此方法非常有用,尤其是当脚本的源代码编辑器支持显示 Unicode 时。然后,您还可以在运行之前直接在源代码中看到彩色脚本!:
VSCode 内部脚本文件的图像
注意:您可能需要直接传递表情符号的Unicode:
echo $'\U0001f972' // this emoji: 🥲
请注意 Unicode 字符的大写字母 U
>= 10000
此外,这种情况非常罕见,但您可能需要像这样传递代码:
echo <0001f972>
感谢评论中的@joanis提到这一点
评论
echo <0001f972>
echo $'\u1234'
echo $'\U0001f972'
其他答案已经很好地解释了如何做到这一点。我仍然缺少的是对颜色代码的精心安排的概述。维基百科文章“ANSI转义码”对此非常有帮助。但是,由于颜色通常可以在每个终端中配置和看起来不同,因此我更喜欢在终端中调用一个函数。为此,我创建了以下函数来显示颜色表并提醒我如何设置它们(其排列灵感来自 wiki 文章)。例如,您可以将它们加载到您的 .bashrc/.zshrc 中,或者将它们作为脚本放在某个地方。
256 色
由此 bash/zsh 脚本生成:
function showcolors256() {
local row col blockrow blockcol red green blue
local showcolor=_showcolor256_${1:-bg}
local white="\033[1;37m"
local reset="\033[0m"
echo -e "Set foreground color: \\\\033[38;5;${white}NNN${reset}m"
echo -e "Set background color: \\\\033[48;5;${white}NNN${reset}m"
echo -e "Reset color & style: \\\\033[0m"
echo
echo 16 standard color codes:
for row in {0..1}; do
for col in {0..7}; do
$showcolor $(( row*8 + col )) $row
done
echo
done
echo
echo 6·6·6 RGB color codes:
for blockrow in {0..2}; do
for red in {0..5}; do
for blockcol in {0..1}; do
green=$(( blockrow*2 + blockcol ))
for blue in {0..5}; do
$showcolor $(( red*36 + green*6 + blue + 16 )) $green
done
echo -n " "
done
echo
done
echo
done
echo 24 grayscale color codes:
for row in {0..1}; do
for col in {0..11}; do
$showcolor $(( row*12 + col + 232 )) $row
done
echo
done
echo
}
function _showcolor256_fg() {
local code=$( printf %03d $1 )
echo -ne "\033[38;5;${code}m"
echo -nE " $code "
echo -ne "\033[0m"
}
function _showcolor256_bg() {
if (( $2 % 2 == 0 )); then
echo -ne "\033[1;37m"
else
echo -ne "\033[0;30m"
fi
local code=$( printf %03d $1 )
echo -ne "\033[48;5;${code}m"
echo -nE " $code "
echo -ne "\033[0m"
}
16 种颜色
由此 bash/zsh 脚本生成:
function showcolors16() {
_showcolor "\033[0;30m" "\033[1;30m" "\033[40m" "\033[100m"
_showcolor "\033[0;31m" "\033[1;31m" "\033[41m" "\033[101m"
_showcolor "\033[0;32m" "\033[1;32m" "\033[42m" "\033[102m"
_showcolor "\033[0;33m" "\033[1;33m" "\033[43m" "\033[103m"
_showcolor "\033[0;34m" "\033[1;34m" "\033[44m" "\033[104m"
_showcolor "\033[0;35m" "\033[1;35m" "\033[45m" "\033[105m"
_showcolor "\033[0;36m" "\033[1;36m" "\033[46m" "\033[106m"
_showcolor "\033[0;37m" "\033[1;37m" "\033[47m" "\033[107m"
}
function _showcolor() {
for code in $@; do
echo -ne "$code"
echo -nE " $code"
echo -ne " \033[0m "
done
echo
}
评论
echo -e "$(colr 11 'yellow') normal $(colr 124 'some red')"
这是我最终使用的sed
echo " [timestamp] production.FATAL Some Message\n" \
"[timestamp] production.ERROR Some Message\n" \
"[timestamp] production.WARNING Some Message\n" \
"[timestamp] production.INFO Some Message\n" \
"[timestamp] production.DEBUG Some Message\n" | sed \
-e "s/FATAL/"$'\e[31m'"&"$'\e[m'"/" \
-e "s/ERROR/"$'\e[31m'"&"$'\e[m'"/" \
-e "s/WARNING/"$'\e[33m'"&"$'\e[m'"/" \
-e "s/INFO/"$'\e[32m'"&"$'\e[m'"/" \
-e "s/DEBUG/"$'\e[34m'"&"$'\e[m'"/"
评论