在使用putty嘲驾、secureCRT淌哟、XShell等終端仿真器連接linux系統(tǒng)時,ls辽故、vim等工具的輸出都含有各種顏色徒仓,這些顏色的輸出大大地增強(qiáng)了文本的可讀性。
一誊垢、終端文本顏色輸出的一般示例
在bash中掉弛,通常我們可以使用echo命令加-e選項(xiàng)輸出各種顏色的文本,例如:
echo -e "\033[31mRed Text\033[0m"
echo -e "\033[32mGreen Text\033[0m"
echo -e "\033[33mYellow Text\033[0m"
echo -e "\033[34mBlue Text\033[0m"
echo -e "\033[35mMagenta Text\033[0m"
echo -e "\033[36mCyan Text\033[0m"
可以分別輸出:
其中:"\033[31m"喂走、"\033[31m"殃饿、"\033[0m"等是ANSI轉(zhuǎn)義序列(ANSI escape code/sequence),它控制文本輸出的格式芋肠、顏色等乎芳。
【注】:
\033是鍵盤左上角Esc鍵對應(yīng)的ASCII碼(8進(jìn)制),\033帖池、\x1b和\e效果一樣, 例如:
echo -e "\x1b[31mRed Text\e[0m"
也輸出紅色字體“Red Text”秒咐。
可以這樣說,無論什么語言碘裕,只要你的終端能夠解釋ANSI轉(zhuǎn)義序列(大多數(shù)的類unix終端仿真器都能夠解釋ANSI轉(zhuǎn)義序列携取,win32控制臺則不支持),就能夠使用ANSI轉(zhuǎn)義序列輸出顏色帮孔。下面給出幾個示例雷滋。
示例1: C程序輸出顏色示例
// hello.c
#include <stdio.h>
int main() {
printf("\033[31;4mRed Underline Text\033[0m\n");
}
編譯:gcc hello.c
運(yùn)行:./a.out
輸出:Red Underline Text
示例2: C++程序中輸出顏色示例
// hello.cpp
#include <iostream>
int main() {
std::cout << "\033[31;4mRed Underline Text\033[0m" << std::endl;
}
編譯:g++ hello.cpp
運(yùn)行:./a.out
輸出:Red Underline Text
示例3: Java程序中輸出顏色示例
// hello.java
class hello {
public static void main(String[] args) {
System.out.println("\033[31;4mRed Underline Text\033[0m");
}
}
【注】:Java中不能識別\e和\0x1b不撑,僅可使用\033。
編譯:javac hello.java
運(yùn)行:java hello
輸出:Red Underline Text
示例4: Python程序中輸出顏色示例
# hello.py
print "\033[31;4mRed Underline Text\033[0m"
【注】:python(v2.6.5)中不能識別\e晤斩,可以使用\033和\x1b焕檬。
運(yùn)行:python hello.py
輸出:Red Underline Text
二、更詳盡的ANSI轉(zhuǎn)義序列描述
關(guān)于控制文本顏色的ANSI轉(zhuǎn)義序列澳泵,下面給出更詳盡的描述实愚。
通用的控制文本顏色的轉(zhuǎn)義序列格式如下:
CSI n1 [;n2 [;…]] m
其中CSI全稱為“控制序列引導(dǎo)器”(Control Sequence Introducer/Initiator),也就是上述示例中的"\033["兔辅;n1腊敲、n2等表示SGR參數(shù)(下面會列出一些常用的SGR參數(shù)),用于控制顏色维苔、粗體碰辅、斜體、閃爍等文本輸出格式介时;m表示轉(zhuǎn)義序列結(jié)束没宾。
常用的SRG參數(shù)列表如下:
編碼 | 說明 |
---|---|
0 | 關(guān)閉所有格式,還原為初始狀態(tài) |
1 | 粗體/高亮顯示 |
2 | 模糊(※) |
3 | 斜體(※) |
4 | 下劃線(單線) |
5 | 閃爍(慢) |
6 | 閃爍(快)(※) |
7 | 交換背景色與前景色 |
8 | 隱藏(伸手不見五指沸柔,啥也看不見)(※) |
30-37 | 前景色循衰,即30+x,x表示不同的顏色(參見下面的“顏色表”) |
40-47 | 背景色褐澎,即40+x会钝,x表示不同的顏色(參見下面的“顏色表”) |
【注】:
- 其中含有(※)標(biāo)注的編碼表示不是所有的終端仿真器都支持,只有少數(shù)仿真器支持乱凿。
- 多個SGR參數(shù)可以組合使用顽素,例如:
echo -e "\x1b[31;4mRed Underline Text\e[0m"
輸出紅色下劃線字體“Red Underline Text”。
- 更多參數(shù)信息請參考“ANSI escape code”徒蟆。
顏色表:
顏色值 x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
顏色 | 黑 | 紅 | 綠 | 黃 | 藍(lán) | 紫 | 青 | 白 |