我們在編寫程序的時候,通常需要終端對輸出顯示紅色或者綠色等各種顏色,以便更加清楚的對用戶做出提示。下面是Shell系統終端顏色的設置方式:
終端的字符顏色是用轉義序列控制的,是文本模式下的系統顯示功能,和具體的語言無關,shell
,python
,perl
, C
,C++
等均可以調用。
轉義序列是以 ESC
開頭,可以用 \033
完成相同的工作(ESC 的 ASCII 碼用十進制表示就是 27, 等價於用八進制表示的 33
)。
- 顯示格式: \033[顯示方式;前景色;背景色;動作m;
- 其中顯示方式,前景色或背景色無順序關系,其中任何一項也不是必須的。
- 系統默認顏色:\033[0m
文本終端的顏色可以使用“ANSI非常規字符序列”來生成。舉例:
echo -e “\033[44;37;5m ME \033[0m COOL”
以上命令設置背景成為藍色,前景白色,閃爍光標,輸出字符“ME”,然後重新設置屏幕到缺省設置,輸出字符“COOL”
。“e”
是命令 echo
的一個可選項,它用於激活特殊字符的解析器。“\033”
引導非常規字符序列。“m”
意味著設置屬性然後結束非常規字符序列,這個例子裡真正有效的字符是“44;37;5”
和“0”
。
修改“44;37;5”
可以生成不同顏色的組合,數值和編碼的前後順序沒有關系。可以選擇的編碼如下所示:
編碼 顏色/動作
- 0 重新設置屬性到缺省設置
- 1 設置粗體
- 2 設置一半亮度(模擬彩色顯示器的顏色)
- 4 設置下劃線(模擬彩色顯示器的顏色)
- 5 設置閃爍
- 7 設置反向圖象
- 22 設置一般密度
- 24 關閉下劃線
- 25 關閉閃爍
- 27 關閉反向圖象
- 30 設置黑色前景
- 31 設置紅色前景
- 32 設置綠色前景
- 33 設置棕色前景
- 34 設置藍色前景
- 35 設置紫色前景
- 36 設置青色前景
- 37 設置白色前景
- 38 在缺省的前景顏色上設置下劃線
- 39 在缺省的前景顏色上關閉下劃線
- 40 設置黑色背景
- 41 設置紅色背景
- 42 設置綠色背景
- 43 設置棕色背景
- 44 設置藍色背景
- 45 設置紫色背景
- 46 設置青色背景
- 47 設置白色背景
- 49 設置缺省黑色背景
其他有趣的代碼還有:
- \033[2J 清除屏幕
- \033[0q 關閉所有的鍵盤指示燈
- \033[1q 設置“滾動鎖定”指示燈 (Scroll Lock)
- \033[2q 設置“數值鎖定”指示燈 (Num Lock)
- \033[3q 設置“大寫鎖定”指示燈 (Caps Lock)
- \033[15:40H 把關閉移動到第15行,40列
- \007 發蜂鳴生beep