shell腳本輸出帶文本顏色背景顏色自定義樣式格式內容

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命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章