2011-09-13

[轉載] Linux shell script 的彩色控制

轉載自:Linux shell script 的彩色控制

Linux 下的終端機畫面不是只能換換背景而已,顯示出來的顏色也是能控制的。使用的顏色就像以前的DOS 時代,或者現在的BBS 顏色控制方式一樣。

以shell 的顯示為例,顯示的格式如下:

\33[ 文字樣式 ; 文字顏色 ; 背景顏色 m
文字內容………………
\33[0m

文字樣式有列下幾種色碼可以使用:
  • 0 一般亮度
  • 1 高度度
  • 4 加底線
  • 5 灰底

文字顏色則都是3開頭,有下列色碼:
  • 30 黑色
  • 31 紅色
  • 32 綠色
  • 33 黃色
  • 34 藍色
  • 35 紫色
  • 36 青綠
  • 37 白色

再來是背景顏色色碼,都是4開頭:
  • 40 黑色
  • 41 紅色
  • 42 綠色
  • 43 黃色
  • 44 藍色
  • 45 紫色
  • 46 青綠
  • 47 白色

如果我要在畫面上顯示高亮度的綠色(32)及黑色背景,可以如下:
sprintf "\33[1;32;40m 我的文字 \33[0m"

也可以分開來寫比較清楚
sprintf "\33[1;32;40m "
sprintf "我的文字"
sprintf "\33[0m"

記得shell 輸出碼要用 printf 而不是用一般的 echo。echo 的話要寫成 echo -e 。
但並不是所有的終端機畫面都是用黑色背景的。如果我們不要指定它的黑色背景,讓它使用系統原始背景色,可以省略背景描述變成如下:
sprintf "\033[1;32m"
sprintf "我的文字"
sprintf "\033[0m"

是不是就比較完美了呢。

其實這些控制碼和BBS 的還真像。

0 回應: