1. 简介
在使用putty、secureCRT、XShell等终端仿真器连接linux系统时,vim等工具的输出都含有各种颜色,这些颜色的输出大大地增强了文本的可读性。
通常我们可以使用echo命令加-e选项输出各种颜色的文本,例如:echo -e "\033[31mRed Text\033[0m"
,可以输出红色的字体“Red Text”。其中:”\033[31m”和”\033[0m”是ANSI转义序列(ANSI escape code/sequence),它控制文本输出的格式、颜色等。
2. 转义序列及参数
键盘左上角Esc键对应的ascii码为27,写为八进制是 033, 十六进制是 x1b,所以上面的\033
和\x1b
,\e
效果一样
参数的话分为0-8,30-37,40-47,不同参数之间用分号分开
35其实是 magenta, 36是cyan
写完参数用m
表示转义结束
3. 不同平台语言
python(linux和window都可以)
a.pythonprint("\033[1;31m hello \033[0m")
python a.python
C或C++ (linux)
#include <stdio.h> printf("\033[1;31m hello \033[0m") #include <iostream> std::cout<<"\033[1;31m"<<" hello "<<"\033[0m";
shell (linux)
echo -e "\033[1;31m hello \033[0m"
windows命令提示符CMD
命令提示符(CMD)下调整整屏颜色输出可使用color命令,格式为:color BF
其中B和F表示颜色属性(B背景色,F前景色),属性值为一个十六进制数字(0-F)。各属性值与颜色对应的关系如下:
例如,要设置命令提示符窗口“背景为黑(0),前景为白(7)”可执行color 07
。win32 console
由于win32控制台不支持ANSI转义序列,因此要让win32控制台输出颜色文本相对复杂一些
#include<windows.h>
WORD f_color=FOREGROUND_RED;
HANDLE hdl = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hdl, f_color | FOREGROUND_INTENSITY)
printf("hello");
更多请参考:Console Screen Buffers