各平台各语言的终端颜色控制(可用于log)

来源:互联网 发布:java 打印map内容 编辑:程序博客网 时间:2024/05/20 00:37

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.python

    print("\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

0 0
原创粉丝点击