Linux 終端 顏色

2021-07-23 22:20:04 字數 2971 閱讀 3118

httplinux 終端配色方案  https:

在終端輸出彩色文字

在linux終端下除錯程式時,有時需要輸出大量資訊。若能控制字型的顏色和顯示方式,可使輸出資訊對比鮮明,便於除錯時觀察資料。

終端的字元顏色由轉義序列(escape sequence)控制,是文字模式下的系統顯示功能,與具體語言無關。

本文簡要介紹c語言中通過printf改變終端輸出的顏色和顯示方式。文中涉及的**執行環境如下:

轉義序列以控制字元'esc'開頭。該字元的ascii碼十進位制表示為27,十六進製制表示為0x1b,八進位制表示為033。多數轉義序列超過兩個字元,故通常以'esc'和左括號'['開頭。該起始序列稱為控制序列引導符(csi,control sequence intro),通常由'\033['或'\e['代替。

通過轉義序列設定終端顯示屬性時,可採用以下格式:

\033[ param m

或\e[ param m

其中,'\033['或'\e['引導轉義序列,'m'表示設定屬性並結束轉義序列。param為屬性值,表示可選(多個引數之間用分號隔開,與順序無關)。例如,在linux shell中執行下述命令:

即設定輸出為紅色字型(31),白色背景(47)。選項'-e'為echo命令啟用特殊字元的解析器。

注意,轉義序列可被控制字元'can'(cancel )和'sub'(substitute)中斷。

前景色為30+顏色值,如31表示前景色為紅色;背景色為40+顏色值,如41表示背景色為紅色。

調色效果如下圖所示:

因此,通過轉義序列設定終端顯示屬性時,常見格式為:

\033[顯示方式;前景色;背景色m輸出字串\033[0m

或\e[顯示方式;前景色;背景色m輸出字串\033[0m

其中 ,'\033[0m'用於恢復預設的終端輸出屬性,否則會影響後續的輸出。

此外,還有一些ansi控制碼,如:na (游標上移n行 )、nb(游標下移n行 )、nc(游標右移n行 )、nd (游標左移n行 )、2j(清屏)、k(清除從游標到行尾的內容)、s(儲存游標位置)、u(恢復游標位置)、?25l(隱藏游標)、?25l(顯示游標)。

基於常用引數,可定義如下單一控制巨集,用於printf系列語句:

1

#define none "\e[0m"

2#define black "\e[0;30m"

3#define l_black "\e[1;30m"

4#define red "\e[0;31m"

5#define l_red "\e[1;31m"

6#define green "\e[0;32m"

7#define l_green "\e[1;32m"

8#define brown "\e[0;33m"

9#define yellow "\e[1;33m"

10#define blue "\e[0;34m"

11#define l_blue "\e[1;34m"

12#define purple "\e[0;35m"

13#define l_purple "\e[1;35m"

14#define cyan "\e[0;36m"

15#define l_cyan "\e[1;36m"

16#define gray "\e[0;37m"

17#define white "\e[1;37m"

1819

#define bold "\e[1m"

20#define underline "\e[4m"

21#define blink "\e[5m"

22#define reverse "\e[7m"

23#define hide "\e[8m"

24#define clear "\e[2j"

25 #define

clrline              "\r\e[k" //or "\e[1k\r"

編寫測試**驗證轉義序列控制的效果:

1

int main(void)2

執行結果截圖如下:

因截圖所限,未能展示閃爍和游標移動等效果。

注意,linux終端下可正常顯示彩色字元。但若通過securecrt等windows工具ssh登入linux主機,則需對工具做些設定。

以securecrt 6.6為例,在options->session options->terminal->emulation頁的terminal型別中選擇ansi或linux或xterm,並勾選ansi color。

改變linux終端顏色

改變linux終端顏色 1.用echo 31m測試 37m echo xm yourchar x 30,31.36?請注意這個轉義系列的敲法是,30m echo m 注意,語句必須要在 之間,屬性分隔符為 如閃爍紅色 echo 31 5m測試 2.前景 背景 顏色 30 40 黑色 31 41 紅色...

linux終端輸出顏色

用到一些編譯工具,在輸出編譯資訊時,編譯通過的資訊用綠色輸出,錯誤資訊用紅色輸出。我覺得這個特性很有趣,自己在寫一些控制程式,或者批處理指令碼時,如果能給輸出加上提示色,應該看起來更直觀一些。在網上查了一些資料,其實這個特性比較容易使用,寫下來備忘。首先看一下以下數字 第一張表中數字代表顏色,第二章...

Linux終端字元顏色設定

我們在編寫程式的時候,通常需要終端對輸出顯示紅色或者綠色等各種顏色,以便更加清楚的對使用者做出提示。下面是linux系統終端顏色的設定方式 終端的字元顏色是用轉義序列控制的,是文字模式下的系統顯示功能,和具體的語言無關,shell,python,perl,c,c 等均可以呼叫。轉義序列是以 esc ...