如何让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)
}
运行结果
[]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)
}
补充: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)
}
终端显示
取值范围
前景 背景 颜色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫色
36 46 深绿
37 47 白色
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚
来源:https://blog.csdn.net/Charliewolf/article/details/84771983
猜你喜欢
- 1. 类的继承与方法的重载上面就是先定义了一个类A,然后由定义了一个类B,B继承了类A,这样B就有了A的非私有属性和方法。class Was
- 关于跨域这个话题,很早就答应过要分享,但是因为懒,一直拖着,直到D2上有人谈起了“完美跨域”。“跨域”应该已经算不上什么难题了,只是提起“完
- 一、临时表实现分步处理1.概述当需要的结果需要经过多次处理后才能最终得到我们需要的结果时,就可以使用临时表,这里临时表就起到了一个中间处理的
- 摘要:本文介绍HetuEngine实现On Yarn的原理,通过阅读本文,读者可以了解HetuEngine如何在资源使用方面融入Hadoop
- 1. Django: Python Web应用开发框架Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。
- 一:购物车管理功能1.添加商品(不重复添加)、2.删除商品(购物车中有的才能删除)、3.查看购物车4.退出系统产品列表products =
- 本文通过一个csv实例文件来展示如何删除Pandas.DataFrame的行和列数据文件名为:example.csv内容为:datespri
- 前言vim是个伟大的编辑器,不仅在于她特立独行的编辑方式,还在于她强大的扩展能力。然而,vim自身用于写插件的语言vimL功能有很大的局限性
- 当我们使用电脑的时候,不可避免的会碰到重复点击的任务。所以我们可以使用python制作一个简单的连点器进行使用,同时可以提升写代码的水平。第
- 定义返回单值def my_abs(x): if x >= 0: return x &
- 一个写给别人的小代码顺便也贴上来这是一个滑动展示用的小容器通过鼠标移动和离开触发滑动效果<!DOCTYPE html PUBLIC &
- 前言因为Python的水平目前一直是处于能用阶段,平时写的脚本使用的Python的写法也比较的简单,没有写过稍微大一点的项目。对Python
- a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb
- 在上一篇文章中,我们讲了如何在linux上用python写一个守护进程。主要原理是利用linux的fork函数来创建一个进程,然后退出父进程
- 刷票一般要突破以下限制:1、验证码识别2、同一ip不可连续投票解决办法1、用tesseract工具,链接在此 https://code.go
- 需要实现的效果选择颜色块或者颜色选择器切换网站主题色,选择主题后保存到本地,下次打开页面是缓存的主题色原理根据ElementUI官网的自定义
- 本文实例讲述了Python操作MySQL简单实现方法。分享给大家供大家参考。具体分析如下:一、安装:安装MySQL安装MySQL不用多说了,
- 这篇文章主要介绍了Python autoescape标签用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 前言:本文从0到1实现django搭建一个web页面,实现了django连接mysql数据库,简单的get、post请求等一、使用pyach
- Windows 下从源码编译 PaddlePaddle1.环境准备Windows 10 专业版 (64bit)Python 版本 Pytho