如何让shell终端和goland控制台输出彩色的文字

作者:Elonjelinek 时间:2023-07-13 03:24:56 

终端输出彩色文字

开发工具:Mac,Goland,Mac自带shell。这是基于Mac的测试结果,根据读者留言,在Windows上不生效,标识符不一样。

在终端输出这段命令,将的到一个红色背景、绿色文字,并不停闪烁的输出。


sszxr:~ sszxr$ echo  -e "\033[5;32;41mI ♡  You \033[0m"
I ♡  You
sszxr:~ sszxr$

双引号中的反斜杠\表示转义,033是标识符,表示用来设置颜色,[表示开始颜色设置,m为颜色设置结束。[后面的5表示闪烁,分号后面的32表示前景色,也就是文字的颜色,为绿色;再后面41表示背景色,为红色,到m为设置结束,后面是输出的内容,最后为再一次设置颜色,0m表示取消颜色设置。

从括号[到m中间为颜色设置,以;号分隔。

样式有【0,1,4,5,7,8】六种,分别是:


0  终端默认设置
1  高亮显示
4  使用下划线
5  闪烁
7  反白显示
8  不可见

颜色有7中,分别为


前景 背景 颜色
30  40  黑色
31  41  红色
32  42  绿色
33  43  黄色
34  44  蓝色
35  45  紫红色
36  46  青蓝色
37  47  白色

3开头是前景色,也就是文字的颜色;4开头是背景色。

Go语言中的彩色输出

样式和颜色与上面一样,只是标识符不一样,


fmt.Printf("%c[0;41;36m%s%c[0m\n", 0x1B, "testPrintColor", 0x1B)

标识符为0x1B,具体设置也是在[到m之间,以分号;分隔。

另一种方式


package main
import (
"fmt"
)
var (
greenBg      = string([]byte{27, 91, 57, 55, 59, 52, 50, 109})
whiteBg      = string([]byte{27, 91, 57, 48, 59, 52, 55, 109})
yellowBg     = string([]byte{27, 91, 57, 48, 59, 52, 51, 109})
redBg        = string([]byte{27, 91, 57, 55, 59, 52, 49, 109})
blueBg       = string([]byte{27, 91, 57, 55, 59, 52, 52, 109})
magentaBg    = string([]byte{27, 91, 57, 55, 59, 52, 53, 109})
cyanBg       = string([]byte{27, 91, 57, 55, 59, 52, 54, 109})
green        = string([]byte{27, 91, 51, 50, 109})
white        = string([]byte{27, 91, 51, 55, 109})
yellow       = string([]byte{27, 91, 51, 51, 109})
red          = string([]byte{27, 91, 51, 49, 109})
blue         = string([]byte{27, 91, 51, 52, 109})
magenta      = string([]byte{27, 91, 51, 53, 109})
cyan         = string([]byte{27, 91, 51, 54, 109})
reset        = string([]byte{27, 91, 48, 109})
disableColor = false
)
func main() {
str := "hello world"
fmt.Println(greenBg, str, reset)
fmt.Println(whiteBg, str, reset)
fmt.Println(yellowBg, str, reset)
fmt.Println(redBg, str, reset)
fmt.Println(blueBg, str, reset)
fmt.Println(magentaBg, str, reset)
fmt.Println(cyanBg, str, reset)
word := "I love you"
fmt.Println(green, word, reset)
fmt.Println(white, word, reset)
fmt.Println(yellow, word, reset)
fmt.Println(red, word, reset)
fmt.Println(blue, word, reset)
fmt.Println(magenta, word, reset)
fmt.Println(cyan, word, reset)
}

运行结果

如何让shell终端和goland控制台输出彩色的文字

[]byte{}中那些数字是什么意思

他们是0x1B [ ; m以及0-9的ASCII编码


package main
import "fmt"
func main() {
fmt.Print(0x1B, '[', ';', 'm', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', "\n")
fmt.Printf("%#X\t%c\t%c\t%c\t", 27, 91, 59, 109)
fmt.Printf("%c\t%c\t%c\t%c\t%c\t%c\t%c\t%c\t%c\t%c\t", 48, 49, 50, 51, 52, 53, 54, 55, 56, 57)
}

运行结果

27 91 59 109 48 49 50 51 52 53 54 55 56 57

0X1B [ ; m 0 1 2 3 4 5 6 7 8 9

27代表0x1B

91代表[

59代表;

109代表m

57代表9,表示设置字体颜色

52代表4,表示设置背景色

51代表3,表示设置前景色,也就是文字的颜色

90到97与30到37的效果一样,一个是设置字体颜色,一个是设置前景色,所以57和51可以互换,效果完全一样,

reset表示0x1B[0m,表示清除颜色设置。


package main
import (
"fmt"
)
var (
black        = string([]byte{27, 91, 57, 48, 109})
red          = string([]byte{27, 91, 57, 49, 109})
green        = string([]byte{27, 91, 57, 50, 109})
yellow       = string([]byte{27, 91, 57, 51, 109})
blue         = string([]byte{27, 91, 57, 52, 109})
magenta      = string([]byte{27, 91, 57, 53, 109})
cyan         = string([]byte{27, 91, 57, 54, 109})
white        = string([]byte{27, 91, 57, 55, 59, 52, 48, 109})
reset        = string([]byte{27, 91, 48, 109})
disableColor = false
)
func main() {
word := "I love you"
fmt.Println(black, word, reset)
fmt.Println(red, word, reset)
fmt.Println(green, word, reset)
fmt.Println(yellow, word, reset)
fmt.Println(blue, word, reset)
fmt.Println(magenta, word, reset)
fmt.Println(cyan, word, reset)
fmt.Println(white, word, reset)
}

如何让shell终端和goland控制台输出彩色的文字

补充:Golang终端彩色输出

终端彩色输出


func main() {
fmt.Printf("\x1b[%dmhello world 30: 黑 \x1b[0m\n", 30)
fmt.Printf("\x1b[%dmhello world 31: 红 \x1b[0m\n", 31)
fmt.Printf("\x1b[%dmhello world 32: 绿 \x1b[0m\n", 32)
fmt.Printf("\x1b[%dmhello world 33: 黄 \x1b[0m\n", 33)
fmt.Printf("\x1b[%dmhello world 34: 蓝 \x1b[0m\n", 34)
fmt.Printf("\x1b[%dmhello world 35: 紫 \x1b[0m\n", 35)
fmt.Printf("\x1b[%dmhello world 36: 深绿 \x1b[0m\n", 36)
fmt.Printf("\x1b[%dmhello world 37: 白色 \x1b[0m\n", 37)
fmt.Printf("\x1b[%d;%dmhello world \x1b[0m 47: 白色 30: 黑 \n", 47, 30)
fmt.Printf("\x1b[%d;%dmhello world \x1b[0m 46: 深绿 31: 红 \n", 46, 31)
fmt.Printf("\x1b[%d;%dmhello world \x1b[0m 45: 紫   32: 绿 \n", 45, 32)
fmt.Printf("\x1b[%d;%dmhello world \x1b[0m 44: 蓝   33: 黄 \n", 44, 33)
fmt.Printf("\x1b[%d;%dmhello world \x1b[0m 43: 黄   34: 蓝 \n", 43, 34)
fmt.Printf("\x1b[%d;%dmhello world \x1b[0m 42: 绿   35: 紫 \n", 42, 35)
fmt.Printf("\x1b[%d;%dmhello world \x1b[0m 41: 红   36: 深绿 \n", 41, 36)
fmt.Printf("\x1b[%d;%dmhello world \x1b[0m 40: 黑   37: 白色 \n", 40, 37)
}

终端显示

如何让shell终端和goland控制台输出彩色的文字

取值范围


前景 背景 颜色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫色
36 46 深绿
37 47 白色

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚

来源:https://blog.csdn.net/Charliewolf/article/details/84771983

标签:goland,控制台,输出,彩色
0
投稿

猜你喜欢

  • 《Python之禅》中对于Python编程过程中的一些建议

    2022-01-30 12:04:16
  • 记录微信小程序 height: calc(xx - xx);无效问题

    2024-05-02 16:27:16
  • golang映射Map的方法步骤

    2023-08-28 09:10:22
  • 使用 prometheus python 库编写自定义指标的方法(完整代码)

    2021-03-03 06:03:58
  • Python+matplotlib实现计算两个信号的交叉谱密度实例

    2023-05-12 23:29:55
  • django celery redis使用具体实践

    2022-12-03 02:45:39
  • MySql批量插入优化Sql执行效率实例详解

    2024-01-18 07:52:06
  • Golang+Vue轻松构建Web应用的方法步骤

    2024-05-29 22:06:42
  • 基于Python数据结构之递归与回溯搜索

    2022-02-27 01:40:33
  • 也说说语义

    2009-12-29 13:04:00
  • Eclipse配置python默认头过程图解

    2022-03-11 10:52:59
  • Dlib+OpenCV深度学习人脸识别的方法示例

    2022-11-08 06:34:42
  • flask框架自定义过滤器示例【markdown文件读取和展示功能】

    2023-03-07 19:22:27
  • php+js实现的无刷新下载文件功能示例

    2023-06-12 06:42:47
  • Python通过for循环理解迭代器和生成器实例详解

    2022-08-23 14:34:59
  • python操作数据库获取结果之fetchone和fetchall的区别说明

    2024-01-26 22:59:47
  • Python图像处理之透视变换的实战应用

    2022-08-16 17:22:10
  • 在ASP.NET 2.0中操作数据之六十七:在TableAdapters中使用JOINs

    2024-05-11 09:26:35
  • Go语言模拟while语句实现无限循环的方法

    2024-05-09 09:45:48
  • Python爬虫中urllib3与urllib的区别是什么

    2023-04-04 05:48:12
  • asp之家 网络编程 m.aspxhome.com