[Linux] 在終端機 terminal 上用程式顯示出顏色字串
最近學到了在 Linux 上寫程式時,可以寫出有顏色的字串,
基本上可以有一些標示重點的效果,
像是在一堆的 log 中,把比較重要的標示出來~
用到的方法也相當簡單,
就是讓程式輸出 ANSI escape code,就可以在終端機上秀出顏色了,
BBS 上面五花八門的顏色也是同樣的原理~
下面是我寫的測試程式:
#include <stdio.h> #include <unistd.h> int main() { if (isatty(fileno(stdout))) { for (int i = 30; i <= 38; i++) { printf("33[1;%dmThis is a string in color %d33[0mn", i, i); } } return 0; }
程式先用 isatty() 這個函式確認輸出端 (stdout) 是一個終端機,
而不是 pipe 或是檔案 (如果是 pipe 或檔案的話,顏色碼就沒有用處了,因為只有終端機看的懂顏色碼)~
字串裡的 33 代表的是 ESC,後面接上 [,再接顏色的代碼或字型的變化碼就行了,
0m 則是要還原,不設定任何顏色或字型變化~
因此上面的程式就是輸出顏色代碼 30~38 的不同字串囉~
[ 右邊的 1 代表的是粗體~
下面是執行的結果:
//
//
(本頁面已被瀏覽過 809 次)