如何让终端更多彩和灵活--ANSI转义序列介绍
简介
ANSI转义字符是一种用于控制文本终端的特殊字符序列.
它们以"\033"(8进制的33, 也可以是16进制的x1B)为起始, 后跟一个或多个控制码, 用于改变文本显示的颜色、样式、光标位置等
以下是一些常见的ANSI转义字符及其用法:
\033[0m
: 重置所有属性, 将文本颜色和样式恢复为默认值.\033[1m
: 设置粗体文本.\033[4m
: 设置下划线文本.\033[7m
: 设置反显文本, 即将前景色和背景色互换.\033[30m
到\033[37m
: 设置文本的前景色(文字颜色).\033[40m
到\033[47m
: 设置文本的背景色.\033[1G
: 将光标移动到行首.(跟\r
格式化控制符差不多)\033[nA
: 将光标向上移动n行.\033[nB
: 将光标向下移动n行.\033[nC
: 将光标向右移动n列.\033[nD
: 将光标向左移动n列.\033[y;xH
: 将光标移动到指定的行y和列x.\033[2J
: 清屏.
这只是一些常见的ANSI转义字符示例, 实际上还有很多其他的控制码.
这些转义字符通常用于控制终端输出的外观和行为.
详解
在转义字符中, \
表示转义, 后面033则是控制码, 后面接具体参数.
例如, 0m和1m和7m是设置文本属性, 不必多言
\033[31m
开头的序列是设置文本颜色, 分别代表如下
- \033[30m:黑色
- \033[31m:红色
- \033[32m:绿色
- \033[33m:黄色
- \033[34m:蓝色
- \033[35m:洋红
- \033[36m:青色
- \033[37m:白色
而40m开头的则同理, 分别为黑红绿黄蓝紫青白
.
后面的光标移动控制码, 则如描述, 不多言.
此外, 这几个不同的条目可以用分号;
隔开来组合显示, 例如, 显示加粗的红底绿字, 可以如下
1 | printf("\033[1;32;41m hello-world \033[0m"); |
编写进度条的例子
了解了以上知识, 我们就开始写一个彩色进度条的例子
用cpp编写, 大致逻辑就是一个小时间循环, 每个循环里打印递增数量的字符
1 |
|
代码如上, 不多解释. 运行效果如下
在Linux终端提示符的应用
大家可能经常遇到root用户下没有颜色显示的问题, 这其实是在~/.bashrc
里面定义的终端颜色
比如这样, 全是白色
修改~/.bashrc
文件, 示例如下, 核心就在最后一行, 颜色代码也是一样的, 其他规则可以自行百度
1 | # ~/.bashrc: executed by bash(1) for non-login shells. |
改完就有颜色啦
参考文章:
本博客采用 CC BY-NC-SA 4.0 许可。转载请声明来自 Juice's Blog!