shell腳本中 echo 和 printf 都可以輸出內(nèi)容。示例1:
echo -e "?33[43;35m david use echo say Hello World ?33[0m " printf "?33[44;36m david use printf say Hello World ?33[0m " echo -e "?33[47;30;5m david use echo say ?33[0m Hello World "
	輸出效果如下:
	它的格式是這樣的:
echo -e "?33[字背景顏色;字體顏色m 字符串 ?33[0m" 或者 printf "?33[字背景顏色;字體顏色m 字符串 ?33[0m" 或者 echo -e "?33[字背景顏色;字體顏色m;ascii碼m 字符串 ?33[0m 字符串(can null) "
格式說明
	shell腳本中echo命令是內(nèi)容顯示,echo顯示帶顏色需要使用參數(shù) -e
	格式如下:
	echo -e "?33[字背景顏色;文字顏色m字符串?33[0m"
	例如:
	echo -e "?33[41;36m something here ?33[0m"
	其中41的位置代表底色, 36的位置是代表字的顏色
注:
1、字背景顏色和文字顏色之間是英文的";"
2、文字顏色后面有個(gè)m
3、字符串前后可以沒有空格,如果有的話,輸出也是同樣有空格
特效可以疊加,需要使用“;”隔開,例如:閃爍+下劃線+白底色+黑字為 ?33[5;4;47;30m閃爍+下劃線+白底色+黑字為?33[0m
再來看示例1的第3個(gè)命令:
echo -e "?33[47;30;5m david use echo say ?33[0m Hello World "
這個(gè)命令解釋:
	47 代表背景色為白色,
	30 代表字體為黑色,
	5 代表字體閃爍,
	0 代表關(guān)閉所有屬性
	輸出字符 “david use echo say”,然后重新設(shè)置屏幕到缺省設(shè)置,輸出字符 “Hello World”后顏色回復(fù)正常。
-e是echo的一個(gè)可選項(xiàng),用于激活特殊字符的解析器, 也就是對(duì)反斜線轉(zhuǎn)義符(即)的解釋。?33引導(dǎo)非常規(guī)字符序列。意味著設(shè)置屬性然后結(jié)束非常規(guī)字符序列,這里起效果的字符是47;30;5和0。修改47;30;5可以生成不同顏色的組合,數(shù)值和編碼的前后順序沒有關(guān)系。
組合命令:
示例2,組合命令:
echo -e "?33[20;1H?33[1;4;32m david use echo say ?33[0m Hello World "
	這行命令首先?33[20;1H將光標(biāo)移動(dòng)到終端第20行第1列,之后的?33[1;4;32m將文本屬性設(shè)置為高亮、帶下劃線且顏色為綠色,然后輸出Hello,world;最后?33[0m將終端屬性設(shè)為缺省,這樣就不會(huì)看到連命令完成后的命令提示符也變了樣兒了。 輸出效果如下:
我們可以通過各種命令的組合可以實(shí)現(xiàn)對(duì)終端輸出地復(fù)雜控制。
輸出特效格式控制:
?33[0m 關(guān)閉所有屬性 ?33[1m 設(shè)置高亮度 ?3[4m 下劃線 ?33[5m 閃爍 ?33[7m 反顯 ?33[8m 消隱 ?33[30m -- ?33[37m 設(shè)置前景色 ?33[40m -- ?33[47m 設(shè)置背景色 例: echo -e "?33[31m 紅色字 ?33[0m" echo -e "?33[34m 黃色字 ?33[0m" echo -e "?33[41;33m 紅底黃字 ?33[0m" echo -e "?33[41;37m 紅底白字 ?33[0m"
字顏色范圍(前景顏色):30—–39
echo -e "?33[30m 黑色字 ?33[0m" echo -e "?33[31m 紅色字 ?33[0m" echo -e "?33[32m 綠色字 ?33[0m" echo -e "?33[33m 黃色字 ?33[0m" echo -e "?33[34m 藍(lán)色字 ?33[0m" echo -e "?33[35m 紫色字 ?33[0m" echo -e "?33[36m 天藍(lán)字 ?33[0m" echo -e "?33[37m 白色字 ?33[0m" 38:在缺省的前景顏色上設(shè)置下劃線 39:在缺省的前景顏色上關(guān)閉下劃線
補(bǔ)充:上面的例子中,每行后面都有 ?33[0m ,是為了使終端顯示的顏色恢復(fù)到修改背景和字體顏色之前的狀態(tài)。
字背景顏色范圍(背景顏色):40~47
40:黑 41:深紅 42:綠 43:黃色 44:藍(lán)色 45:紫色 46:深綠 47:白色 49:設(shè)置缺省黑色背景
光標(biāo)位置等的格式控制:
33[nA 光標(biāo)上移n行 33[nB 光標(biāo)下移n行 33[nC 光標(biāo)右移n行 33[nD 光標(biāo)左移n行 33[y;xH設(shè)置光標(biāo)位置 33[2J 清屏 33[K 清除從光標(biāo)到行尾的內(nèi)容 33[s 保存光標(biāo)位置 33[u 恢復(fù)光標(biāo)位置 33[?25l 隱藏光標(biāo) 33[?25h 顯示光標(biāo)
示例3:
echo -e "?33[0m none ?33[0m" echo -e "?33[30m black ?33[0m" echo -e "?33[1;30m dark_gray ?33[0m" echo -e "?33[0;34m blue ?33[0m" echo -e "?33[1;34m light_blue ?33[0m" echo -e "?33[0;32m green ?33[0m" echo -e "?33[1;32m light_green ?33[0m" echo -e "?33[0;36m cyan ?33[0m" echo -e "?33[1;36m light_cyan ?33[0m"
	輸出效果如下:
echo -e "?33[0;31m red ?33[0m" echo -e "?33[1;31m light_red ?33[0m" echo -e "?33[0;35m purple ?33[0m" echo -e "?33[1;35m light_purple ?33[0m" echo -e "?33[0;33m brown ?33[0m" echo -e "?33[1;33m yellow ?33[0m" echo -e "?33[0;37m light_gray ?33[0m" echo -e "?33[1;37m white ?33[0m"
	輸出效果如下:
echo -e "?33[40;37m 黑底白字 ?33[0m" echo -e "?33[41;30m 紅底黑字 ?33[0m" echo -e "?33[42;34m 綠底藍(lán)字 ?33[0m" echo -e "?33[43;34m 黃底藍(lán)字 ?33[0m" echo -e "?33[44;30m 藍(lán)底黑字 ?33[0m" echo -e "?33[45;30m 紫底黑字 ?33[0m" echo -e "?33[46;30m 天藍(lán)底黑字 ?33[0m" echo -e "?33[47;34m 白底藍(lán)字 ?33[0m" echo -e "?33[4;31m 下劃線紅字 ?33[0m" echo -e "?33[5;31m 紅字在閃爍 ?33[0m" echo -e "?33[8m 消隱 ?33[0m "
	輸出效果如下:
范圍參考:
0 重新設(shè)置屬性到缺省設(shè)置 1 設(shè)置粗體 2 設(shè)置一半亮度(模擬彩色顯示器的顏色) 4 設(shè)置下劃線(模擬彩色顯示器的顏色) 5 設(shè)置閃爍 7 設(shè)置反向圖象 8 消隱 22 設(shè)置一般密度 24 關(guān)閉下劃線 25 關(guān)閉閃爍 27 關(guān)閉反向圖象 // 字體顏范圍(前景顏色):30~39 30:黑 31:紅 32:綠 33:黃 34:藍(lán)色 35:紫色 36:深綠 37:白色 38:在缺省的前景顏色上設(shè)置下劃線 39:在缺省的前景顏色上關(guān)閉下劃線 // 字背景顏色范圍(背景顏色):40~49 40:黑 41:深紅 42:綠 43:黃色 44:藍(lán)色 45:紫色 46:深綠 47:白色 nA 光標(biāo)上移n行 nB 光標(biāo)下移n行 nC 光標(biāo)右移n行 nD 光標(biāo)左移n行 y;xH設(shè)置光標(biāo)位置 2J 清屏 K 清除從光標(biāo)到行尾的內(nèi)容 s 保存光標(biāo)位置 u 恢復(fù)光標(biāo)位置 ?25l 隱藏光標(biāo) ?25h 顯示光標(biāo)
預(yù)先定義顏色變量
如果是通過bash腳本執(zhí)行,多次頻繁的輸出展示,那么可以通過變量簡化樣式格式引用:
#! /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}"
	輸出效果如下:
	將自定義顏色格式定義成變量,然后在具體工作是運(yùn)用的實(shí)例。
	定義顏色動(dòng)作, 把echo -en也定義到變量中。使用時(shí)直接調(diào)用顏色動(dòng)作即可。
	倒計(jì)時(shí)(利用 來實(shí)現(xiàn)回到行首覆蓋輸出)
#! /bin/bash
## author:xiongzaiqiqren
##### 定義顏色動(dòng)作, 把echo -en也定義到變量中
SETCOLOR_BLACK="echo -en \E[1;30m"
SETCOLOR_FAILURE="echo -en \E[1;31m"
SETCOLOR_SUCCESS="echo -en \E[1;32m"
SETCOLOR_WARNING="echo -en \E[1;33m"
SETCOLOR_INFO="echo -en \E[1;34m"
SETCOLOR_REMIND="echo -en \E[1;35m"
SETCOLOR_BUG="echo -en \E[1;36m"
SETCOLOR_WHITE="echo -en \E[1;37m"
SETCOLOR_NORMAL="echo  -en \E[0;39m"
SETCOLOR_FLICKER="echo  -en \E[5m"
 
##### 使用時(shí)直接調(diào)用顏色動(dòng)作即可
$SETCOLOR_BLACK && echo BLACK
$SETCOLOR_FAILURE && echo FAILURE   
$SETCOLOR_SUCCESS && echo SUCCESS   
$SETCOLOR_WARNING && echo WARNING   
$SETCOLOR_INFO && echo INFO
$SETCOLOR_BUG && echo BUG
$SETCOLOR_REMIND && echo REMIND
$SETCOLOR_WHITE && echo WHITE
$SETCOLOR_NORMAL  && echo NORMAL
$SETCOLOR_FLICKER  && echo FLICKER
$SETCOLOR_NORMAL  && echo NORMAL
##### 其他測試
echo "輸出內(nèi)容,行末自帶換行符";
echo -n "輸出內(nèi)容,取消行末換行符(內(nèi)容輸出后不換行)";
echo "這是接著前面的(沒有新的行)";
echo -e "e[1;33;5m 閃爍文字 e[0m"
# 倒計(jì)時(shí)(利用
來實(shí)現(xiàn)回到行首覆蓋輸出)
for i in {1..100}; do echo -en "
 $i%"; sleep 1; done;
	以上代碼在Linux服務(wù)器上保存為 myDisplay.sh 文件,并賦予可執(zhí)行權(quán)限。然后看到效果。
	運(yùn)行結(jié)果如圖:
鏈接:https://www.cnblogs.com/xiongzaiqiren/p/16895162.html
- 
                                Shell
                                +關(guān)注關(guān)注 1文章 373瀏覽量 25032
- 
                                腳本
                                +關(guān)注關(guān)注 1文章 405瀏覽量 28993
原文標(biāo)題:腳本美化高手:輕松實(shí)現(xiàn)文本顏色和背景定制的酷炫Shell技巧
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
shell基本介紹及常用命令之shell基本介紹
【RA-Eco-RA6M4開發(fā)板評(píng)測】移植shell實(shí)現(xiàn)命令交互
【微五科技CF5010RBT60開發(fā)板試用體驗(yàn)】基于FIFO的串口驅(qū)動(dòng)移植xprintf實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出與shell實(shí)現(xiàn)
鴻蒙5開發(fā)寶藏案例分享---一多開發(fā)實(shí)例(圖片美化)
Shell腳本入門指南
 
    
樹莓派新手必看!在樹莓派上編寫和運(yùn)行 Shell 腳本!
 
    
【ELF 2學(xué)習(xí)板試用】命令行功能測試-shell腳本進(jìn)行IO控制-紅綠燈項(xiàng)目-實(shí)現(xiàn)開機(jī)起動(dòng)
【ELF 2學(xué)習(xí)板試用】命令行功能測試-shell腳本進(jìn)行IO控制-紅綠燈項(xiàng)目
背景抑制光電開關(guān)的設(shè)計(jì)及應(yīng)用
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-shell編程入門之提取字符并設(shè)置rtc時(shí)間
飛凌嵌入式ElfBoard ELF 1板卡-shell編程入門之提取字符并設(shè)置rtc時(shí)間
飛凌嵌入式ElfBoard ELF 1板卡-自動(dòng)化點(diǎn)亮LED燈之shell點(diǎn)燈
Linux從零到精通:最簡單的Shell腳本入門教程
 
    
TCSH shell 編程入門
PowerPAD?輕松實(shí)現(xiàn)
 
    
 
           
        
 
         腳本美化高手之輕松實(shí)現(xiàn)文本顏色和背景定制的酷炫Shell技巧
腳本美化高手之輕松實(shí)現(xiàn)文本顏色和背景定制的酷炫Shell技巧 
                 
  
            
             
             
                 
             工商網(wǎng)監(jiān)
工商網(wǎng)監(jiān)
        
評(píng)論