终端输出不同颜色文本

烂柯 发布于 2024-12-29 33 次阅读


一、概述

​ 本文主要记录终端通过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 Red Text

在文本中写入控制符Esc:notepad++编辑文本,alt+2+7插入Esc控制字符

烂柯

最后更新于 2024-12-29