Shell 终端字符颜色
终端字符的颜色是通过转义序列控制的,转义序列以 ESC
字符开头,ESC
字符的 ASCII 码是 27
,用八进制表示是 33
,可以用 \033
表示 ESC
字符,也可以用 \e
表示 ESC
字符。
一般格式
转义序列以 \033[
开头,后面跟随由分号分隔的多个控制码,最后以字符 m
结尾
\033[控制码;控制码;控制码;...m
控制码
并非所有 Shell 都支持这些控制码。
0 复位
1 增加亮度(加粗)
2 降低亮度
3 斜体
4 下划线
5 闪烁
6 闪烁
7 反色
8 隐藏文字
9 删除线
21 双下划线
30 - 37 前景色(黑红绿黄蓝紫青灰)
40 - 47 背景色(黑红绿黄蓝紫青灰)
53 上划线
90 - 97 前景色(亮:黑红绿黄蓝紫青灰)
100-107 背景色(亮:黑红绿黄蓝紫青灰)
示例
#!/usr/bin/bash
clear
for i in {0..255}
do
echo -e "\033[0;${i}mHello_$i"
done
特殊格式
\033[特殊控制码
特殊控制码
3A 光标上移 3 行
3B 光标下移 3 行
3C 光标右移 3 列
3D 光标左移 3 列
3G 光标移到第 3 列
3H 光标移到第 3 行
3I 光标移到第 3 个制表符位置
y;xH 设置光标位置
2J 清屏
K 清除从光标到行尾的内容
s 保存光标位置
u 恢复光标位置
?25l 隐藏光标
?25h 显示光标
RGB 格式
前景色
\033[38;2;红;绿;蓝m
背景色
\033[48;2;红;绿;蓝m
示例
#!/usr/bin/bash
# RGB 前景色
for i in {0..255..85}; do
for j in {0..255..85}; do
for k in {0..255..85}; do
echo -en "\033[38;2;${i};${j};${k}mHello_[$i,$j,$k] "
done
done
done
echo -e "\033[0m"
# RGB 背景色
for i in {0..255..85}; do
for j in {0..255..85}; do
for k in {0..255..85}; do
echo -en "\033[48;2;${i};${j};${k}mHello_[$i,$j,$k] "
done
done
done
echo -e "\033[0m"