[Linux] 在終端機 terminal 上用程式顯示出顏色字串

[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 代表的是粗體~

 

下面是執行的結果:

color_code    

 

 

//
//

(本頁面已被瀏覽過 162 次)

發表迴響

你的電子郵件位址並不會被公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料