一、概述
本文主要记录终端通过ANSI转义序列(控制字符 Esc)在控制台(C/C++输出一样有效)上设置文字颜色等信息。该功能网上有很多相关资料,但是在windows却很少有相关操作内容,因此记录下方便下次查阅。
ANSI 转义序列 是带内信令的标准,用于控制视频文本终端和终端仿真器上的光标位置、颜色、字体样式和其他选项
二、参数说明
转义码格式:Esc[显示方式;前景色;背景色m
示例:\033[31mRed Text\033[0m
,清屏且将光标置顶 \033[2J\033[0;0H
注意 Esc值的是键盘左上角Esc键对应的ASCII码8进制(\033或\x1b、\e)
一些SRG参数如下:
编码 | 说明 |
---|---|
0 | 关闭所有格式,还原为初始状态 |
1 | 粗体/高亮显示 |
4 | 下划线(单线) |
5 | 闪烁(慢) |
7 | 交换背景色与前景色 |
8 | 隐藏 |
30-37 | 前景色,即30+x,x表示不同的颜色(参见下面的“颜色表”) |
40-47 | 背景色,即40+x,x表示不同的颜色(参见下面的“颜色表”) |
nA | 光标上移n行 |
nB | 光标下移n行 |
nC | 光标右移n行 |
nD | 光标左移n行 |
y;xH | 设置光标位置 |
2J | 清屏 |
K | 清除从光标到行尾的内容 |
s | 保存光标位置 |
u | 恢复光标位置 |
?25l | 隐藏光标 |
?25h | 显示光标 |
颜色值x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
颜色 | 黑 | 红 | 绿 | 黄 | 蓝 | 紫 | 青 | 白 |
三、shell
#直接在linux终端执行下列命令,会输出红色前景色文字
echo -e "\033[31mRed Text\033[0m"
#-e:激活转义字符
#将内容输出至文本中再打印文本观察
echo -e "\033[31mRed Text\033[0m" > test.txt
#输出test.txt内容同样是红色
cat test.txt
#编辑test.txt,你会有不同的发现
vi test.txt
#输出内容如下
#^[[31mRed Text^[[0m
在文本中写入控制符Esc:vi编辑文本,通过i
进入编辑模式,再通过Ctrl+v
进入字面值插入模式后按一下Esc键,便完成了控制字符的插入
四、bat
linux通过echo -e
很容易实现文本不同颜色的输出,但是在windows上就没有这么容易了,当然除了ANSI转义序列还是有其它很多方式。
::编码为ANSI,utf-8中文控制台输出会乱码
@echo off
echo [31mRed Text[0m
在文本中写入控制符Esc:notepad++编辑文本,alt+2+7
插入Esc控制字符
Comments NOTHING