linux 屏幕输出 高亮_通过printf设置Linux终端输出的颜色和显示方式
转载自:http://www.cnblogs.com/clover-toeic/p/4031618.html
在Linux终端下调试程序时,有时需要输出大量信息。若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据。
终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关。
转义序列以控制字符'ESC'开头。该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033。多数转义序列超过两个字符,故通常以'ESC'和左括号'['开头。该起始序列称为控制序列引导符(CSI,Control Sequence Intro),通常由'\033['或'\e['代替。
通过转义序列设置终端显示属性时,可采用以下格式:
\033[ Param {;Param;...}m 或 \e[ Param {;Param;...}m
其中,'\033['或'\e['引导转义序列,'m'表示设置属性并结束转义序列。Param为属性值,{...}表示可选(多个参数之间用分号隔开,与顺序无关)。
注意,转义序列可被控制字符'CAN'(Cancel )和'SUB'(Substitute)中断。
转义序列相关的常用参数如下(通过man console_codes命令可查看更多的参数描述):
显示:0(默认)、1(粗体/高亮)、22(非粗体)、4(单条下划线)、24(无下划线)、5(闪烁)、25(无闪烁)、7(反显、翻转前景色和背景色)、27(无反显)
颜色:0(黑)、1(红)、2(绿)、 3(黄)、4(蓝)、5(洋红)、6(青)、7(白)
前景色为30+颜色值,如31表示前景色为红色;背景色为40+颜色值,如41表示背景色为红色。
调色效果如下图所示:
因此,通过转义序列设置终端显示属性时,常见格式为:
\033[显示方式;前景色;背景色m输出字符串\033[0m 或 \e[显示方式;前景色;背景色m输出字符串\033[0m
此外,还有一些ANSI控制码,如:nA (光标上移n行 )、nB(光标下移n行 )、nC(光标右移n行 )、nD (光标左移n行 )、2J(清屏)、K(清除从光标到行尾的内容)、s(保存光标位置)、u(恢复光标位置)、?25l(隐藏光标)、?25l(显示光标)。 其中 ,'\033[0m'用于恢复默认的终端输出属性,否则会影响后续的输出。
基于常用参数,可定义如下单一控制宏,用于printf系列语句:
1 #define NONE "\e[0m"
2 #define BLACK "\e[0;30m"
3 #define L_BLACK "\e[1;30m"
4 #define RED "\e[0;31m"
5 #define L_RED "\e[1;31m"
6 #define GREEN "\e[0;32m"
7 #define L_GREEN "\e[1;32m"
8 #define BROWN "\e[0;33m"
9 #define YELLOW "\e[1;33m"
10 #define BLUE "\e[0;34m"
11 #define L_BLUE "\e[1;34m"
12 #define PURPLE "\e[0;35m"
13 #define L_PURPLE "\e[1;35m"
14 #define CYAN "\e[0;36m"
15 #define L_CYAN "\e[1;36m"
16 #define GRAY "\e[0;37m"
17 #define WHITE "\e[1;37m"
18
19 #define BOLD "\e[1m"
20 #define UNDERLINE "\e[4m"
21 #define BLINK "\e[5m"
22 #define REVERSE "\e[7m"
23 #define HIDE "\e[8m"
24 #define CLEAR "\e[2J"
25 #define CLRLINE "\r\e[K" //or "\e[1K\r"
编写测试代码验证转义序列控制的效果:
1 int main(void)
2 {
3 printf("This is a character control test!\n" );
4 sleep(3);
5 printf("[%2u]" CLEAR "CLEAR\n" NONE, __LINE__);
6
7 printf("[%2u]" BLACK "BLACK " L_BLACK "L_BLACK\n" NONE, __LINE__);
8 printf("[%2u]" RED "RED " L_RED "L_RED\n" NONE, __LINE__);
9 printf("[%2u]" GREEN "GREEN " L_GREEN "L_GREEN\n" NONE, __LINE__);
10 printf("[%2u]" BROWN "BROWN " YELLOW "YELLOW\n" NONE, __LINE__);
11 printf("[%2u]" BLUE "BLUE " L_BLUE "L_BLUE\n" NONE, __LINE__);
12 printf("[%2u]" PURPLE "PURPLE " L_PURPLE "L_PURPLE\n" NONE, __LINE__);
13 printf("[%2u]" CYAN "CYAN " L_CYAN "L_CYAN\n" NONE, __LINE__);
14 printf("[%2u]" GRAY "GRAY " WHITE "WHITE\n" NONE, __LINE__);
15
16 printf("[%2u]\e[1;31;40m Red \e[0m\n", __LINE__);
17
18 printf("[%2u]" BOLD "BOLD\n" NONE, __LINE__);
19 printf("[%2u]" UNDERLINE "UNDERLINE\n" NONE, __LINE__);
20 printf("[%2u]" BLINK "BLINK\n" NONE, __LINE__);
21 printf("[%2u]" REVERSE "REVERSE\n" NONE, __LINE__);
22 printf("[%2u]" HIDE "HIDE\n" NONE, __LINE__);
23
24 printf("Cursor test begins!\n" );
25 printf("=======!\n" );
26 sleep(10);
27 printf("[%2u]" "\e[2ACursor up 2 lines\n" NONE, __LINE__);
28 sleep(10);
29 printf("[%2u]" "\e[2BCursor down 2 lines\n" NONE, __LINE__);
30 sleep(5);
31 printf("[%2u]" "\e[?25lCursor hide\n" NONE, __LINE__);
32 sleep(5);
33 printf("[%2u]" "\e[?25hCursor display\n" NONE, __LINE__);
34 sleep(5);
35
36 printf("Test ends!\n" );
37 sleep(3);
38 printf("[%2u]" "\e[2ACursor up 2 lines\n" NONE, __LINE__);
39 sleep(5);
40 printf("[%2u]" "\e[KClear from cursor downward\n" NONE, __LINE__);
41
42 return 0 ;
43 }
执行结果截图如下:
linux 屏幕输出 高亮_通过printf设置Linux终端输出的颜色和显示方式相关推荐
- 通过printf设置Linux终端输出的颜色和显示方式
前言 在Linux终端下调试程序时,有时需要输出大量信息.若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据. 终端的字符颜色由转义序列(Escape Sequence)控制,是文 ...
- arm linux考勤,定稿毕业论文_基于ARM与Linux的员工刷卡考勤系统喜欢就下吧(范文1)...
<毕业论文_基于ARM与Linux的员工刷卡考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文_基于ARM与Linux的员工刷卡考勤系统(喜欢就下吧)> ...
- linux查看python环境_运维笔记linux环境提示python: command not found hello
场景描述: 新部署的容器环境,终端执行python命令,提示没有该命令. 从报错异常可以看出,可能是python环境未安装. 分析思路: 检查python路径: 方式一:type -a python ...
- linux文件恢复工具下载_十大最佳Linux数据恢复工具,用于恢复已删除/损坏的文件
linux文件恢复工具下载 Today we'll be going over the best Linux data recovery tools to help you recover any d ...
- linux 屏幕输出 高亮_如何设置SecureCRT窗口输出代码关键字高亮设置
6 D:"Match Case"=00000001 Z:"Keyword List V2"=0000004e "(::FFFF)?::?(?:(?:2 ...
- 定向输出命令_网络工程师之linux重定向命令和管道命令详解
如果这篇文章对您有帮助,请关注并点赞,感谢您的支持,如果还有其他问题,请私信给我 今天来讲解linux下">"输入/输出重定向和管道命令 1.输入/输出重定向命令基本格式:c ...
- dell笔记本如何安装Linux,Dell笔记本_安装及设置linux系统ubuntu8.04详细指南.doc
Dell笔记本 安装linux系统ubuntu8.04 详细指南 Write by ykswang 杭州电子科技大学 第一次写这种东西,如有纰漏,请海涵并指正 1.安装 1.1 下载安装镜像 Dell ...
- linux中文麻酱字_【树】Linux笔记 1
以下内容是参与[生信技能树-全球听第7期]的课程笔记,记录人:小瑛 ,有问题可在公众号后台留言 小白小白,请注意:笔记中出现的所有文件路径,仅作为参考,请勿模仿! 1. 登录服务器 1.1 Mac电 ...
- linux sleeping进程多_一文掌握Linux实战技能系统管理篇
linux 安装包-yum 的使用 linux 进程管理 ps pstree top 指令的使用 linux 进程之间的通信 linux 守护进程 linux 内存以及硬盘使用查看 linux 防火墙 ...
最新文章
- 初涉SQL Server性能问题(3/4):列出阻塞的会话
- linux 进程的作用,linux的几个进程的作用
- 腾讯offer-众里寻他千百度
- 752. Open the Lock
- PAT甲级1080 Graduate Admission【模拟】
- 95-090-022-源码-bin脚本-CLI提交Job的时候加载插件
- ajax获取的json作用域,ajax;jsonp;箭头函数;let关键字;const关键字
- 虚拟机上的linux作为服务器吗,linux ftp服务器 虚拟机做服务器如何实现
- 【技术分享】几维安全CTO刘柏江:IoT时代LLVM编译器防护的艺术
- 跨境独立站必备!用 WhatsApp 玩转海外私域流量
- f(x)=sinx的求导过程
- oracle用户登录提示: user test lacks create session privilege logon denied
- 工业互联网大数据之数据管理与治理的简易理解
- 字母易位词(anagram)
- Docker数据卷映射
- Ubuntu Server 20.04 下 HustOJ 安装
- 菜鸟的一些常用快捷键的使用总结
- VScode突然之间连接服务器显示不断重连retry多次
- 植物大战 二叉树 递归——纯C
- Table固定列和表头
热门文章
- java怎样下载maven资源库_下载Maven资源库文件
- MIUI Android p手势,小米8 Android P内测9月开启
- android自动化测试录制,(二)屏幕录制在android自动化测试中应用2015.06.29
- bugly android8.1加固,2020-09-27 Bugly Android热更新使用指南
- RS232和RS485
- mySQL危险命令_MYSQL教程Linux系统中最危险的10条命令
- vscode 文件编码转换_荐几个让你开发效率“飞起”的VS Code 插件
- 思科模拟器叫什么_扫盲!通过型号快速识别思科路由器,交换机,服务器等设备...
- 解码(二):音视频解码上下文创建配置和打开avcodec_open2打开演示
- ncl 添加点shp文件_基于Arcgis绘制采样点地图