1. 输出
-n 不换行,默认是换行 -E 不处理特殊字符(默认) -e 处理特殊字符,主要特殊字符如下:
\a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同
2. 终端输出颜色
0 终端默认设置(黑底白字) 1 高亮显示 2 暗色显示 4 使用下划线 5 闪烁 7 反白显示 8 不可见
字色 | 背景 | 颜色 |
---|---|---|
30 |
40 |
黑色 |
31 |
41 |
紅色 |
32 |
42 |
綠色 |
33 |
43 |
黃色 |
34 |
44 |
藍色 |
35 |
45 |
紫紅色 |
36 |
46 |
青藍色 |
37 |
47 |
灰色 |
90 |
100 |
浅黑色 |
91 |
101 |
浅紅色 |
92 |
102 |
浅綠色 |
93 |
103 |
浅黃色 |
94 |
104 |
浅藍色 |
95 |
105 |
浅紫紅色 |
96 |
106 |
浅青藍色 |
97 |
107 |
白色 |
ANSI/VT100终端和终端仿真器不只是能够显示黑色和白色文本; 由于转义序列,它们可以显示颜色和格式化文本。这些序列由Escape字符(通常用“^[” 或"<Esc>"表示)组成,后跟一些其他字符:“<Esc>[FormatCodem”。 在Bash中,可以使用以下语法获取Escape字符:
\e \033 \x1B \E
echo 显示内容带颜色显示,格式如下:
# echo -e "\033[字背景颜色;字体颜色;字体属性m 需要输出的内容 \033[0m"
-
\033为转义字符
-
[ 表示开始定义颜色
-
字背景颜色 范围 40-47 。
-
字体颜色 范围 30-37 。
-
m 转义终止符,表示颜色定义完毕。
-
再次使用 \033[ ,表示再次开启颜色定义,0 表示颜色定义结束,所以 \033[0m 的作用是恢复之前的配色方案。
2.1. 字体控制选项
编码 | 描述 | 示例 |
---|---|---|
1 |
粗体/高亮度 |
echo -e "\e[1m粗体/高亮度\e[0m" |
2 |
变暗 |
echo -e "正常\e[2m暗\e[0m" |
4 |
下划线 |
echo -e "正常\e[4m下划线\e[0m" |
5 |
闪烁 |
echo -e "正常\e[5m闪烁\e[0m" |
7 |
反转(反转前景色和背景色) |
echo -e "正常\e[7m反转\e[0m" |
8 |
隐藏或消影,字符颜色将会与背景颜色相同(对密码有用) |
echo -e "正常\e[8m隐藏\e[0m" |
编码 | 描述 | 示例 |
---|---|---|
0 |
重置所有属性 |
echo -e "\e[0m关闭所有属性" |
21 |
重置粗体/高亮 |
echo -e "正常\e[1mB粗体/高亮度\e[21m正常" |
22 |
重置变暗 |
echo -e "正常\e[2m暗\e[22m正常" |
24 |
重置下划线 |
echo -e "正常\e[4m下划线\e[24m正常"" |
25 |
重置闪烁 |
echo -e "正常 \e[5m闪烁\e[25m正常"" |
27 |
重置反显 |
echo -e "正常 \e[7m反转\e[27m正常" |
28 |
重置隐藏 |
echo -e "正常 \e[8m隐藏\e[28m正常" |
编码 | 描述 | 示例 |
---|---|---|
nA |
光标上移 n 行 |
echo -e "\e[1A" |
nB |
光标下移 n 行 |
echo -e "\e[2B" |
nC |
光标右移 n 行 |
echo -e "\e[2C" |
nD |
光标左移 n 行 |
echo -e "\e[2D" |
y;xH |
设置光标位置 |
|
2J |
清屏 |
|
K |
清除从光标到行尾的内容 |
|
s |
保存光标位置 |
|
u |
恢复光标位置 |
|
?25 |
隐藏光标 |
|
?25h |
显示光标 |
2.2. 前景颜色控制
编码 | 描述 | 示例 |
---|---|---|
39 |
默认前景色 |
echo -e "默认\e[39mDefault" |
30 |
黑色 |
echo -e "默认\e[30mBlack" |
31 |
红色 |
echo -e "默认\e[31mRed" |
32 |
绿色 |
echo -e "默认\e[32mGreen" |
33 |
黄色 |
echo -e "默认\e[33mYellow" |
34 |
蓝色 |
echo -e "默认\e[34mBlue" |
35 |
品红 |
echo -e "默认\e[35mMagenta" |
36 |
青色 |
echo -e "默认\e[36mCyan" |
37 |
浅灰 |
echo -e "默认\e[37mLight grey" |
90 |
深灰色 |
echo -e "默认\e[90mDark grey" |
91 |
红灯 |
echo -e “默认\ e [91mLight red" |
92 |
浅绿色 |
echo -e "默认\e[92mLight green" |
93 |
淡黄色 |
echo -e "默认\e[93mLight yellow" |
94 |
浅蓝 |
echo -e "默认\e[94mLight blue" |
95 |
浅洋红色 |
echo -e "默认\e[95mLight magenta" |
96 |
浅青色 |
echo -e "默认\e[96mLight cyan" |
97 |
白色 |
echo -e "默认\e[97mWhite" |
#!/bin/bash # 定义颜色变量 RED='\e[1;31m' # 红 GREEN='\e[1;32m' # 绿 YELLOW='\e[1;33m' # 黄 BLUE='\e[1;34m' # 蓝 PINK='\e[1;35m' # 粉红 RES='\e[0m' # 清除颜色 echo -e "${RED}Red${RES}" echo -e "${GREEN}Green${RES}" echo -e "${YELLOW}Yellow${RES}" echo -e "${BLUE}Blue${RES}" echo -e "${PINK}Pink${RES}" echo -e "\e[30m 黑色 \e[0m" echo -e "\e[31m 红色 \e[0m" echo -e "\e[32m 绿色 \e[0m" echo -e "\e[33m 黄色 \e[0m" echo -e "\e[34m 蓝色 \e[0m" echo -e "\e[35m 紫色 \e[0m" echo -e "\e[36m 青色 \e[0m" echo -e "\e[37m 浅灰色 \e[0m" echo -e "\e[90m 深灰色 \e[0m" echo -e "\e[91m 浅红字 \e[0m" echo -e "\e[92m 浅绿字 \e[0m" echo -e "\e[93m 浅黄字 \e[0m" echo -e "\e[94m 浅蓝字 \e[0m" echo -e "\e[95m 浅紫字 \e[0m" echo -e "\e[96m 浅青字 \e[0m" echo -e "\e[97m 白字 \e[0m"
2.3. 背景颜色控制
编码 | 描述 | 示例 |
---|---|---|
49 |
默认背景颜色 |
echo -e "默认\e[49mDefault" |
40 |
黑色 |
echo -e "默认\e[40mBlack" |
41 |
红色 |
echo -e "默认\e[41mRed" |
42 |
绿色 |
echo -e "默认\e[42mGreen" |
43 |
黄色 |
echo -e "默认\e[43mYellow" |
44 |
蓝色 |
echo -e "默认\e[44mBlue" |
45 |
品红 |
echo -e "默认\e[45mMagenta" |
46 |
青色 |
echo -e "默认\e[46mCyan" |
47 |
浅灰 |
echo -e "默认\e[47mLight grey" |
100 |
深灰色 |
echo -e "默认\e[100mDark grey" |
101 |
红灯 |
echo -e “默认\ e [101mLight red" |
102 |
浅绿色 |
echo -e “默认\ e [102mLight green" |
103 |
淡黄色 |
echo -e “默认\ e [103mLight yellow" |
104 |
浅蓝 |
echo -e "默认\e[104mLight blue" |
105 |
浅洋红色 |
echo -e "默认\e[105mLight magenta" |
106 |
浅青色 |
echo -e "默认\e[106mLight cyan" |
107 |
白色 |
echo -e "默认\e[107mWhite" |
#!/bin/bash echo -e "\e[40m 黑底 \e[0m" echo -e "\e[41m 红底 \e[0m" echo -e "\e[42m 绿底 \e[0m" echo -e "\e[43m 黄底 \e[0m" echo -e "\e[44m 蓝底 \e[0m" echo -e "\e[45m 紫底 \e[0m" echo -e "\e[46m 青底 \e[0m" echo -e "\e[47m 白底 \e[0m" echo -e "\e[100m 深灰色 \e[0m" echo -e "\e[101m 浅红字 \e[0m" echo -e "\e[102m 浅绿字 \e[0m" echo -e "\e[103m 浅黄字 \e[0m" echo -e "\e[104m 浅蓝字 \e[0m" echo -e "\e[105m 浅紫字 \e[0m" echo -e "\e[106m 浅青字 \e[0m" echo -e "\e[107m 白字 \e[0m"
2.4. 示例
#!/bin/bash # This program is free software. It comes without any warranty, to # the extent permitted by applicable law. You can redistribute it # and/or modify it under the terms of the Do What The Fuck You Want # To Public License, Version 2, as published by Sam Hocevar. See # http://sam.zoy.org/wtfpl/COPYING for more details. #Background for clbg in {40..47} {100..107} 49 ; do #Foreground for clfg in {30..37} {90..97} 39 ; do #Formatting for attr in 0 1 2 4 5 7 ; do #Print the result echo -en "\e[${attr};${clbg};${clfg}m ^[${attr};${clbg};${clfg}m \e[0m" done echo #Newline done done exit 0