使用ANSI改变终端输出样式

  默认情况下程序输出到终端的字符样式为白字黑背景,样式、字体比较单一。如想改变程序输出到终端字符的样式等可使用ANSI转移码使其输出具有不同样式;

ANSI转义序

  ANSI转义序列包括这三个部分组成:前置引导,CSI转义序列,结束符号
1、前置引导: 为ESC的ASCII值(\033,\0x1b),标志此为控制命令,此时终端不会把后续当字符串解释,shell下可用\e标识。
2、CSI转义序列:
  控制输出样式,颜色、光标、下划线等
  CSI转义序列由 [CSI序列;结束符 组成。
  CSI序列包括:< PREFIX>;< COLOR>;< TEXT DECORATION> 三部分组成,分别为:
  前缀;颜色;文本修饰器
  文本修饰器:加粗 1,下划线 4,闪烁 5 前缀:颜色模式 16色,256色
  颜色: 31-37 字体颜色、41-47 背景颜色

颜色代码:
  0:黑色,1:红色,2:绿色,3:黄色,4:深蓝色,5:紫色,6:浅蓝色,7:白色
  上述代码+30为字体颜色,代码+40为背景颜色;
例如:
  [33;1m:
表示:黄色;下划线
3、结束符: m
  结束符号m: 控制字符结尾,[0m :没有特殊参数的CSI序列,通知终端恢复正常,0m 关闭所有属性;
示例:
  echo -e "\x1b[33;1m字体\x1b[0m"
终端输出的字符为:黄色加粗字体

在Golang中的使用:

 func main() {
   fmt.Printf("%c[33;1m黄色字体加粗%c[0m\n", 0x1B, 0x1B)
   fmt.Printf("%c[33;4m黄色字体下划线%c[0m\n", 0x1B, 0x1B)
   fmt.Printf("%c[42;30;1m绿色背景黑色字体下划线%c[0m\n", 0x1B, 0x1B)
 }

程序输出如图所示:

posted @ 2021-08-14 15:40  AiFly  阅读(323)  评论(0编辑  收藏  举报