1. 输出

-n 不换行,默认是换行 -E 不处理特殊字符(默认) -e 处理特殊字符,主要特殊字符如下:

\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同

2. 终端输出颜色

控制定义
0 终端默认设置(黑底白字)
1 高亮显示
2 暗色显示
4 使用下划线
5 闪烁
7 反白显示
8 不可见
表 1. 颜色定义
字色 背景 颜色

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. 字体控制选项

表 2. Set设置
编码 描述 示例

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"

表 3. Reset重置
编码 描述 示例

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正常"

表 4. 光标控制
编码 描述 示例

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. 前景颜色控制

表 5. 字体颜色
编码 描述 示例

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. 背景颜色控制

表 6. 背景颜色
编码 描述 示例

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