Shell 中输出彩色字体
发布于 2023-12-30
在 Shell 中输出彩色字体通常使用 ANSI 转义码来实现。 以下是一些基本的 ANSI 转义码示例:
- 文字颜色:
使用
\e[颜色代码m
设置文字颜色。例如,\e[31m
设置为红色。echo -e "\e[31mThis is red text.\e[0m"
- 这里
\e[0m
是用来重置颜色,确保不影响后续的文本。
- 背景颜色:
使用
\e[背景颜色代码m
设置背景颜色。例如,\e[43m
设置为黄色背景。echo -e "\e[43mThis has a yellow background.\e[0m"
- 文字样式:
使用
\e[样式代码m
设置文字样式。例如,\e[1m
设置为粗体。echo -e "\e[1mThis is bold text.\e[0m"
- 组合使用:
可以组合使用多个 ANSI 转义码,例如设置红色背景、白色粗体文字。
echo -e "\e[41m\e[1mThis is bold text with a red background.\e[0m"
下面是一些常见的颜色和样式代码:
- 文字颜色代码:
- 30:黑色
- 31:红色
- 32:绿色
- 33:黄色
- 34:蓝色
- 35:紫色
- 36:青色
- 37:白色
- 背景颜色代码:
- 40:黑色
- 41:红色
- 42:绿色
- 43:黄色
- 44:蓝色
- 45:紫色
- 46:青色
- 47:白色
- 文字样式代码:
- 1:粗体
- 2:淡定(不同终端可能效果不同)
- 4:下划线
- 5:闪烁
- 7:反显
- 8:隐藏
请注意,不同终端对 ANSI 转义码的支持程度可能有所不同。
在 ANSI 转义码中, \e
和 \033
都表示 ASCII Escape 字符,用于在终端中执行控制序列。
这两者是等效的,可以互相替代。以下是它们的区别:
\e
\e
是一种相对较新的写法,更加简洁。在大多数现代的终端和 Shell 中,都支持
\e
作为 ASCII Escape 字符的一种写法。echo -e "\e[31mThis is red text.\e[0m"
\033
\033
是 ASCII Escape 字符的八进制表示法,对应于十进制的 27。在一些老旧的终端或者一些特殊的环境中,可能需要使用
\033
,因为有些终端不支持\e
。echo -e "\033[31mThis is red text.\033[0m"
总体而言,大多数情况下我们可以选择使用更简洁的 \e
。
如果环境支持,推荐使用 \e
,它是一个更常见的写法。
但是,考虑到兼容性问题,使用 \033
也是一个较为保守的选择。