shell中設置文字輸出的顏色及字體格式
1、Linux中設置文本顏色及背景色
Shell 使用 ANSI 轉義碼 (ANSI escape codes) 進行顏色輸出。轉義序列顏色輸出表如下
顏色
前景色
背景色
黑色 (Black)
30
40
紅色 (Red)
31
41
綠色 (Green)
32
42
××× (Yellow)
33
43
藍色 (Blue)
34
44
紫紅色 (Magenta)
35
45
青色 (Cyan)
36
46
白色 (White)
37
47
echo -e "\033[顏色值m 文本"
這句代碼中\033[ 作爲轉義序列的開始,你也可以使用 "\e[" 顏色值處設定前景色值。m 終止轉義序列,後面緊跟着就是生效的文本。echo 需要 -e 來開啓轉義序列。可以用 printf 代替 echo。
printf "\e[顏色值m 文本\n"
2、shell中設置字體顏色及背景實例
例1:打印藍色文本(兩種方法)
echo -e "\033[34m Hello World"
printf "\e[34m Hello World\n"
但是這樣執行之後,會使得其後面的文本輸出都是藍色,連命令提示符都是藍色。要使其返回顏色使用 \033[0m。
使用不同的轉義序列組合來達到不同的效果,如下面加上背景色的顯示:
echo -e "\033[前景色值;背景色值m 文本\033[0m"
前景色值和背景色值使用分號間隔,不分先後,因爲兩種值的顏色範圍不一樣,比如 黑色 30 40 。另外分開寫同樣生效,如 \033[44m\033[32m
3、Linux中設置字體屬性(加粗、閃爍、下劃線等)
轉義序列還可以設置文本在顯示屏上顯示的方式,如是否加粗等,如下表:
ANSI 碼
含義
0
常規文本
1
粗體文本
4
含下劃線文本
5
閃爍文本
7
反色(補色)文本
加粗屬性合併後,有些變化。如下表:
關閉加粗
顏色
開啓加粗
顏色
0;30
黑 (Black)
1;30
深灰 (Dark Gray)
0;31
紅 (Red)
1;31
深紅 (Dark Red)
0;32
綠 (Green)
1;32
深綠 (Dark Green)
0;33
黃 (Yellow)
1;33
亮黃 (Yellow)
0;34
藍 (Blue)
1;34
深藍 (Dark Blue)
0;35
紫紅 (Magenta)
1;35
暗紫紅 (Dark Magenta)
0;36
青 (Cyan)
1;36
深青 (Dark Cyan)
0;37
淺 灰 (White)
1;37
白 (White)
特效可以疊加,需要使用“;”隔開,例如:閃爍+下劃線+白底色+黑字爲 \033[5;4;47;30m閃爍+下劃線+白底色+黑字爲\033[0m
4、shell腳本實現各種字體顏色及背景設置
#!/bin/bash
#下面是字體輸出顏色及終端格式控制
#字體色範圍:30-37
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"
#字背景顏色範圍:40-47
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"
#控制選項說明
#\033[0m 關閉所有屬性
#\033[1m 設置高亮度
#\033[4m 下劃線
echo -e "\033[4;31m 下劃線紅字 \033[0m"
#閃爍
echo -e "\033[5;34m 紅字在閃爍 \033[0m"
#反影
echo -e "\033[8m 消隱 \033[0m "
#\033[30m-\033[37m 設置前景色
#\033[40m-\033[47m 設置背景色
#\033[nA光標上移n行
#\033[nB光標下移n行
echo -e "\033[4A 光標上移4行 \033[0m"
#\033[nC光標右移n行
#\033[nD光標左移n行
#\033[y;xH設置光標位置
#\033[2J清屏
#\033[K清除從光標到行尾的內容
echo -e "\033[K 清除光標到行尾的內容 \033[0m"
#\033[s 保存光標位置
#\033[u 恢復光標位置
#\033[?25| 隱藏光標
#\033[?25h 顯示光標
echo -e "\033[?25l 隱藏光標 \033[0m"
echo -e "\033[?25h 顯示光標 \033[0m"
5、使用echo讓字符串顯示不同顏色
下面的命令可寫入腳本執行,根據實際情況替換需要改變顏色的文本。
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"
6、通過定義變量的方式給字體加顏色
#!/bin/bash
#通過變量給字體加顏色
RED_COLOR='\E[1;31m'
GREEN_COLOR='\E[1;32m'
YELLOW_COLOR='\E[1;33m'
BLUE_COLOR='\E[1;34m'
PINK_COLOR='\E[1;35m'
RES='\E[0m'
echo -e "${RED_COLOR}=====紅色可替換部分=====${RES}"
echo -e "${GREEN_COLOR}=====綠色可替換部分=====${RES}"
echo -e "${YELLOW_COLOR}=====×××可替換部分=====${RES}"
echo -e "${BLUE_COLOR}=====藍色可替換部分=====${RES}"
echo -e "${PINK}=====粉色可替換部分=====${RES}"
7、開發一個給輸出內容加顏色的函數(也可以加背景顏色)
在腳本中傳2個參數,給指定內容(第一個參數),加指定顏色(第二個參數)
#!/bin/bash
#通過變量給字體加顏色
#這裏定義一個COLOR_1()函數,後面如果想改變字體顏色直接調用即可
COLOR_1(){
RED_COLOR='\E[1;31m'
GREEN_COLOR='\E[1;32m'
YELLOW_COLOR='\E[1;33m'
BLUE_COLOR='\E[1;34m'
PINK_COLOR='\E[1;35m'
RES='\E[0m'
#這裏判斷傳入的參數是否不等於2個,如果不等於2個就提示並退出
if [ $# -ne 2 ];then
echo "Usage $0 content {red|yellow|blue|green|pink}"
exit
fi
case "$2" in
red|RED)
echo -e "${RED_COLOR}$1${RES}"
;;
yellow|YELLOW)
echo -e "${YELLOW_COLOR}$1${RES}"
;;
green|GREEN)
echo -e "${GREEN_COLOR}$1${RES}"
;;
blue|BLUE)
echo -e "${BLUE_COLOR}$1${RES}"
;;
pink|PINK)
echo -e "${PINK_COLOR}$1${RES}"
;;
*)
echo -e "請輸入指定的顏色代碼:{red|yellow|blue|green|pink}"
esac
}
COLOR_1 "程序安裝報錯!" red
COLOR_1 "程序安裝成功!" green
COLOR_1 "輸出相關注釋信息" blue