shell腳本中 echo 和 printf 都可以輸出內容。示例1:
echo -e "\033[43;35m david use echo say Hello World \033[0m \n"
printf "\033[44;36m david use printf say Hello World \033[0m \n"
echo -e "\033[47;30;5m david use echo say \033[0m Hello World \n"
輸出效果如下:
它的格式是這樣的:
echo -e "\033[字背景顏色;字體顏色m 字符串 \033[0m" 或者
printf "\033[字背景顏色;字體顏色m 字符串 \033[0m" 或者
echo -e "\033[字背景顏色;字體顏色m;ascii碼m 字符串 \033[0m 字符串(can null) \n"
格式說明
shell腳本中echo命令是內容顯示,echo顯示帶顏色需要使用參數 -e
格式如下:
echo -e "\033[字背景顏色;文字顏色m字符串\033[0m"
例如:
echo -e "\033[41;36m something here \033[0m"
其中41的位置代表底色, 36的位置是代表字的顏色
注:
1、字背景顏色和文字顏色之間是英文的";"
2、文字顏色後面有個m
3、字符串前後可以沒有空格,如果有的話,輸出也是同樣有空格
特效可以疊加,需要使用“;”隔開,例如:閃爍+下劃線+白底色+黑字爲 \033[5;4;47;30m閃爍+下劃線+白底色+黑字爲\033[0m
再來看示例1的第3個命令:
echo -e "\033[47;30;5m david use echo say \033[0m Hello World \n"
這個命令解釋:
47 代表背景色爲白色,
30 代表字體爲黑色,
5 代表字體閃爍,
0 代表關閉所有屬性
輸出字符 “david use echo say”,然後重新設置屏幕到缺省設置,輸出字符 “Hello World”後顏色回覆正常。
-e是echo的一個可選項,用於激活特殊字符的解析器, 也就是對反斜線轉義符(即\)的解釋。\033引導非常規字符序列。意味着設置屬性然後結束非常規字符序列,這裏起效果的字符是47;30;5和0。修改47;30;5可以生成不同顏色的組合,數值和編碼的前後順序沒有關係。
組合命令:
示例2,組合命令:
echo -e "\033[20;1H\033[1;4;32m david use echo say \033[0m Hello World \n"
這行命令首先\033[20;1H將光標移動到終端第20行第1列,之後的\033[1;4;32m將文本屬性設置爲高亮、帶下劃線且顏色爲綠色,然後輸出Hello,world;最後\033[0m將終端屬性設爲缺省,這樣就不會看到連命令完成後的命令提示符也變了樣兒了。 輸出效果如下:
我們可以通過各種命令的組合可以實現對終端輸出地複雜控制。
輸出特效格式控制:
\033[0m 關閉所有屬性
\033[1m 設置高亮度
\03[4m 下劃線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m -- \033[37m 設置前景色
\033[40m -- \033[47m 設置背景色
例:
echo -e "\033[31m 紅色字 \033[0m"
echo -e "\033[34m 黃色字 \033[0m"
echo -e "\033[41;33m 紅底黃字 \033[0m"
echo -e "\033[41;37m 紅底白字 \033[0m"
字顏色範圍(前景顏色):30—–39
echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 紅色字 \033[0m"
echo -e "\033[32m 綠色字 \033[0m"
echo -e "\033[33m 黃色字 \033[0m"
echo -e "\033[34m 藍色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天藍字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
38:在缺省的前景顏色上設置下劃線
39:在缺省的前景顏色上關閉下劃線
補充:上面的例子中,每行後面都有 \033[0m ,是爲了使終端顯示的顏色恢復到修改背景和字體顏色之前的狀態。
字背景顏色範圍(背景顏色):40~47
40:黑
41:深紅
42:綠
43:黃色
44:藍色
45:紫色
46:深綠
47:白色
49:設置缺省黑色背景
光標位置等的格式控制:
\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 顯示光標
示例3:
echo -e "\033[0m none \033[0m"
echo -e "\033[30m black \033[0m"
echo -e "\033[1;30m dark_gray \033[0m"
echo -e "\033[0;34m blue \033[0m"
echo -e "\033[1;34m light_blue \033[0m"
echo -e "\033[0;32m green \033[0m"
echo -e "\033[1;32m light_green \033[0m"
echo -e "\033[0;36m cyan \033[0m"
echo -e "\033[1;36m light_cyan \033[0m"
輸出效果如下:
echo -e "\033[0;31m red \033[0m"
echo -e "\033[1;31m light_red \033[0m"
echo -e "\033[0;35m purple \033[0m"
echo -e "\033[1;35m light_purple \033[0m"
echo -e "\033[0;33m brown \033[0m"
echo -e "\033[1;33m yellow \033[0m"
echo -e "\033[0;37m light_gray \033[0m"
echo -e "\033[1;37m white \033[0m"
輸出效果如下:
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;30m 紅底黑字 \033[0m"
echo -e "\033[42;34m 綠底藍字 \033[0m"
echo -e "\033[43;34m 黃底藍字 \033[0m"
echo -e "\033[44;30m 藍底黑字 \033[0m"
echo -e "\033[45;30m 紫底黑字 \033[0m"
echo -e "\033[46;30m 天藍底黑字 \033[0m"
echo -e "\033[47;34m 白底藍字 \033[0m"
echo -e "\033[4;31m 下劃線紅字 \033[0m"
echo -e "\033[5;31m 紅字在閃爍 \033[0m"
echo -e "\033[8m 消隱 \033[0m "
輸出效果如下:
範圍參考:
0 重新設置屬性到缺省設置
1 設置粗體
2 設置一半亮度(模擬彩色顯示器的顏色)
4 設置下劃線(模擬彩色顯示器的顏色)
5 設置閃爍
7 設置反向圖象
8 消隱
22 設置一般密度
24 關閉下劃線
25 關閉閃爍
27 關閉反向圖象
// 字體顏範圍(前景顏色):30~39
30:黑
31:紅
32:綠
33:黃
34:藍色
35:紫色
36:深綠
37:白色
38:在缺省的前景顏色上設置下劃線
39:在缺省的前景顏色上關閉下劃線
// 字背景顏色範圍(背景顏色):40~49
40:黑
41:深紅
42:綠
43:黃色
44:藍色
45:紫色
46:深綠
47:白色
nA 光標上移n行
nB 光標下移n行
nC 光標右移n行
nD 光標左移n行
y;xH設置光標位置
2J 清屏
K 清除從光標到行尾的內容
s 保存光標位置
u 恢復光標位置
?25l 隱藏光標
?25h 顯示光標
預先定義顏色變量
如果是通過bash腳本執行,多次頻繁的輸出展示,那麼可以通過變量簡化樣式格式引用:
#! /bin/bash
## author:xiongzaiqiren
RED_COLOR='\E[1;31m'
YELOW_COLOR='\E[1;33m'
BLUE_COLOR='\E[1;34m'
RESET='\E[0m'
#需要使用echo -e
echo -e "${RED_COLOR}===david say red color===${RESET}"
echo -e "${YELOW_COLOR}===david say yelow color===${RESET}"
echo -e "${BLUE_COLOR}===david say green color===${RESET}"
輸出效果如下:
參考:Shell echo命令