前言
大家都知道使用ls指令列出檔案清單時,不同的檔案類型會用不同的顏色顯示。那麼如何實現這樣帶有顏色的文字輸出呢?答案並不複雜,不管是用shell還是C語言。
一、shell下的實作方法
先來講在shell下,如何實作。用echo指令就可以實現,參考以下例子:
echo -e "33[32mHello, world!"
當你在終端裡敲下這條指令後,是不是發現系統用綠色輸出了"Hello,world!",不止如此,連之後的指令提示符號都變成綠色了?不要急,聽我繼續說。 echo指令-e選項的作用是啟動終端機對反斜線轉義符(即)的解釋。引號內33用於引導非常規字元序列,這裡的作用就是引導設定輸出屬性,後邊的[32m就是將前景色設為綠色,字母m表示設定的屬性類別,數字代表屬性值。
設定可以單獨使用,例如:
echo -e "33[0m"
這行指令的作用是恢復屬性為預設值,也就是說0m設定項目用於恢復預設值。現在你的終端是不是又一切正常了?
理解了這些,剩下的就簡單了。用這種指令,除了設定文字前景色,還可以設定很多屬性。
下邊列出其他的設定項:
33[0m 关闭所有属性 33[1m 设置高亮度 33[4m 下划线 33[5m 闪烁 33[7m 反显 33[8m 消隐 33[30m 至 33[37m 设置前景色 33[40m 至 33[47m 设置背景色 33[nA 光标上移n行 33[nB 光标下移n行 33[nC 光标右移n行 33[nD 光标左移n行 33[y;xH设置光标位置 33[2J 清屏 33[K 清除从光标到行尾的内容 33[s 保存光标位置 33[u 恢复光标位置 33[?25l 隐藏光标 33[?25h 显示光标
各數字所代表的顏色如下:
字背景色彩:深紅
42:綠色
43:黃
46:深綠色
47:白色
32:綠4:藍色
如下:
echo -e "33[20;1H33[1;4;32mHello,world33[0m"
透過以上各種指令的組合就可以實現對終端輸出地複雜控制。
二、如何在C程式設計中實現?
int color = 32; printf("33[20;1H33[1;4;%dmHello, world.33[0m", color);
這個例子類似上邊shell中最後那個例子,只是這裡顏色值透過變數color來指定(當然,也可以直接指定)。
三、聯想
看到這裡你可能會想,是不是在其他程式語言裡也可以用類似的方法實現對終端輸出的控制呢?答案是肯定的!例如在python中,可以如下輸出:
color=32 print “33[20;1H33[1;4;%dHello, world.33[0m"%color
這個例子的效果跟上邊C的例子是相同的。
總結以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或工作能帶來一定的幫助,如果有疑問大家可以留言交流。 更多深入理解Shell輸出顏色與控制相關文章請關注PHP中文網!