前言
shell 中的打印有echo
和printf
,不過printf
就強大了,支持格式化輸出,當然我們這裏的輸出有顏色的文本也是支持的,如果想要echo
支持則需要使用echo -e
表示支持轉義
基本格式
背景底色號碼;
這部分可以刪除,這樣就是默認黑色底色了;下面的\033
與\e
一樣,所以二者可以互換
默認背景底色號碼:40 表示黑色
默認字體顏色號碼:37 表示白色
# 基本格式如下
printf "\e[背景底色號碼;字體顏色號碼m 格式化輸出符號 \e[0m" "文本內容";
echo -e "\e[背景底色號碼;字體顏色號碼m 文本內容 \e[0m";
# 默認情況下命令臺的樣式
printf "\e[40;37m %s\n \e[0m" "hello world!";
echo -e "\e[40;37m hello world! \e[0m";
顏色數據號碼
下面注意字體背景顏色既可以在背景號碼中寫,也可以在字體顏色號碼中寫
背景顏色號碼
- 字體背景顏色範圍 40-47
40:黑
41:深紅
42:綠
43:黃色
44:藍色
45:紫色
46:深綠
47:白色
字體顏色號碼
- 字基本顏色號碼 30-37
30:黑
31:紅
32:綠
33:黃
34:藍色
35:紫色
36:深綠
37:白色 - 字體高亮顏色號碼 90-97
90:黑
91:紅
92:綠
93:黃
94:藍色
95:紫色
96:深綠
97:白色 - 字背景顏色範圍 40-47
40:黑
41:深紅
42:綠
43:黃色
44:藍色
45:紫色
46:深綠
47:白色
舉例說明
# 顯示黑色背景 40,綠色字體 32
printf "\e[40;32m %s\n \e[0m" "hello world";
echo -e "\e[32m hello world \e[0m";
其他的我們需要稍微注意一下的是不管是echo
還是printf
輸出感嘆號時候是有問題的(寫在 sh 裏是沒問題的),因爲感嘆號被識別爲一個命令行歷史替換符號了,比如!!
表示執行上一個命令,在雙引號中甚至不能轉義,所以我們要這樣寫echo "hello world"\!
或者echo hello world\!