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