', 'auto'); ga('send', 'pageview'); 明明白白的赛特 – 在终端输出彩色字体

在终端输出彩色字体

在 2024-04-19 发布于 linux系统 分类

在终端中输出彩色文字,通常需要使用特定的转义序列,这些转义序列定义了文字的颜色。

试着运行下面的命令,你将看到红色的"Hello World!":

echo -e "\033[31mHello, World!\033[0m"

下面拆解一下:

  1. echo命令的-e选项,它允许解释反斜杠\作为转义字符。
  2. \033是一个使用8进制编码的转义字符,等价于16进制的\x1b,本质上就是ascii字符中的“转义字符”。所以这么写也是可以的: echo -e "\x1b[31mHello, World!\x1b[0m"
  3. \033[<数字>m是一个固定的语法,定义接下来的文本颜色(或背景颜色)。当数字是31的时候,就表示文字颜色为红色。当数字是0的时候,表示将样式复原。

这里用的其实是"ANSI转义序列",常见的定义如下:

  • 重置颜色:\033[0m
  • 设置前景色:\033[31m(红色)、\033[32m(绿色)、\033[33m(黄色)、\033[34m(蓝色)、\033[35m(紫色)、\033[36m(青色)、\033[37m(白色)
  • 设置背景色:\033[41m(红色背景)、\033[42m(绿色背景)等

要想直观的查看完整的转移序列定义,可以用这个单行命令:

for i in `seq 110`; do echo -en '\033['$i'm'$i'\033[0m '; done

或者用python:

for i in range(110): print(f'\033[{i}m{i}\033[0m', end=' ')

color example

可以看到30-37, 40-47, 90-97, 100-107这些数字都是表示颜色的,有的是文本颜色,有的是背景颜色。