shell中設置文字輸出的顏色及字體格式

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

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