使用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&#x9EC4;&#x8272;&#x5B57;&#x4F53;&#x52A0;&#x7C97;%c[0m\n", 0x1B, 0x1B)
   fmt.Printf("%c[33;4m&#x9EC4;&#x8272;&#x5B57;&#x4F53;&#x4E0B;&#x5212;&#x7EBF;%c[0m\n", 0x1B, 0x1B)
   fmt.Printf("%c[42;30;1m&#x7EFF;&#x8272;&#x80CC;&#x666F;&#x9ED1;&#x8272;&#x5B57;&#x4F53;&#x4E0B;&#x5212;&#x7EBF;%c[0m\n", 0x1B, 0x1B)
 }

程序输出如图所示:

使用ANSI改变终端输出样式

Original: https://www.cnblogs.com/softlin/p/15140919.html
Author: AiFly
Title: 使用ANSI改变终端输出样式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622491/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • IDEA中tomcat插件版本7中文乱码问题

    tomcat插件版本7中文乱码问题 IDEA中tomcat插件版本7中文乱码问题 问题描述: 因为idea中tomcat插件版本只到7,他的默认解码方式为:ISO-8859-1,又…

    Java 2023年6月6日
    074
  • 解决springboot打不出业务log

    今天不知道咋回事,单独的module可以打出log,而start的web工程始终打不出来,直觉就是jar包冲突,log的包太多了,logback自己跪了,后来经过尝试,得出如下的组…

    Java 2023年5月30日
    0120
  • 历时2月,动态线程池 DynamicTp 发布里程碑版本 V1.0.8

    关于 DynamicTp DynamicTp 是一个基于配置中心实现的轻量级动态线程池管理工具,主要功能可以总结为动态调参、通知报警、运行监控、三方包线程池管理等几大类。 经过多个…

    Java 2023年6月14日
    090
  • Spring(十二):使用JavaConfig实现配置

    上一篇文章我们学习了使用注解开发,但还没有完全脱离xml的配置,现在我们来学习JavaConfig配置来代替xml的配置,实现完全注解开发。 下面我们用一个简单的例子来进行学习。 …

    Java 2023年6月15日
    0104
  • Java 知识点

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/linguoguo/p/16050987.htmlAut…

    Java 2023年5月29日
    061
  • Spring—Spring的AOP(三)

    1.1 什么是AOP AOP为Aspect Oriented Programming的缩写,是一种面向切面的编程,是基于动态代理的,对原有代码毫无入侵性,把和主业务无关的事情放到代…

    Java 2023年6月5日
    090
  • .net 自动分类算法【原创】

    目前自动分类算法是参考网上的思路和想法个人自主研发的。 当然互联网上有很多人采用不同的方式去解决自动分类问题,也有不同的算法和论文支持去做,但纵观自动分类这块工作是属于机器学习这块…

    Java 2023年6月8日
    077
  • 安利一款Linux远程连接工具,MobaXterm

    ​前言 作为开发或者运维人员,平时工作都是在Windows上使用远程连接工具来连接Linux。现在主流的较为强大的远程连接工具是SecureCRT(主要是公司的技术人员使用)和Xs…

    Java 2023年6月5日
    089
  • nginx –增加 headers-more-nginx-module

    已经编译好的编nginx需要添加headers-more-nginx-module模块来自定义响应头 1.需要下载headers-more-nginx-module wget ht…

    Java 2023年5月30日
    075
  • idea编译eclipse项目时修改java代码后运行不生效

    将 webinfo下面的class文件设置为execute就编译成功了 Original: https://www.cnblogs.com/qianzf/p/14770599.ht…

    Java 2023年5月29日
    082
  • VueCLI使用

    怎样使用 @vue/cli创建并开发一个项目 不想每次都去翻视频,所以自己记录下 文章适用范围:使用纯粹的JavaScript进行开发的Vue项目 安装@vue/cli vue项目…

    Java 2023年6月7日
    088
  • 三分钟入门

    网络编程(通俗易懂) tcp通信:打电话,对方接,接了,通话,互通性 udp通信:发短信,发完就完事 通信作用:无非就是传播交流信息,进行数据交换 实现网络通信: IP 端口 规则…

    Java 2023年6月6日
    070
  • Nginx配置之负载均衡、限流、缓存、黑名单和灰度发布

    一、Nginx安装(基于CentOS 6.5) 1.yum命令安装 yum install nginx –y(若不能安装,执行命令yum install epel-release)…

    Java 2023年5月30日
    083
  • 谈谈Raft

    本文主要参考: 极客时间-etcd 实战课 GitChat-分布式锁的最佳实践之:基于 Etcd 的分布式锁 谈到分布式协调组件,我们第一个想到的应该是大名鼎鼎的Zookeeper…

    Java 2023年6月5日
    072
  • java中的内部类(1、局部内部类 2、匿名内部类 3、成员内部类 4、静态内部类)

    局部内部类 局部内部类定义在局部位置比如(方法内),就内部类有类名 可以直接访问外部类的所有成员,包括私有的 不能添加访问修饰符,因为他的位置就是一个局部变量。局部变量是不能用访问…

    Java 2023年6月6日
    095
  • C/C++取模为什么和数学中的不同

    C/C++ 中的取模运算和数学中有什么不同 C/C++/Java 的取模运算和数学中有些不同,一定要注意!!! 先举一个简单的例子: -1 % 3 = ? 而对于这个例子,不同的程…

    Java 2023年6月5日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球