shell實現彩色進度條

2021-09-30 14:46:10 字數 1574 閱讀 2570

hello,今天分享的是shell實現彩色進度條。

進度條,通過顯示字元所佔列印字元的比率,字元的數目的增加,以及長度的變化在顯示器上模擬出進度條的變化;

下面**實現的是漸變色,執行時色度不停會發生變化,主要是引數color的變化,隨著i的變化,color=32+i%8

,color也在發生變化,所以進度條的顏色在不斷發生變化。

進度條最終停止的顏色與i%8加的這個數有關,與color的最終結果有關,加的數不同,最終顏色不同。

字型顏範圍30~39

30:黑 31:紅 32:綠 33:黃 34:藍色 35:紫色 36:深綠 37:白色 38 39親測貌似和黑色沒有多大差別

如果直接設定顏色, 不設定color變數,直接echo -en 「\e[30m」 這樣把顏色直接設定成一種,列印時就不會出現漸變顏色的進度條,而是特定的顏色。

i=0

str=''

index=0

label=('|'

'/''-'

'\\')

while [ $i -le 100 ]

do let index=i%4

let color=32+i%8

echo -en "\e[1;"

$color

"m"printf

"[%-100s][%d

%%][%c]\r"

"$str"

"$i"

"$" str='#'

$str

sleep

0.1 let i++

done

echo -e "\e[1;m"

下圖就是改變加的那個數所得的不同結果:

當然還可以改變底色:

字背景顏色範圍40~49

40:黑 41:深紅 42:綠 43:黃色 44:藍色 45:紫色 46:深綠 47:白色 48 49親測和上面38 39 沒有多大區別,白底黑#列印

**:

i=0

str=''

index=0

label=('|'

'/''-'

'\\')

while [ $i -le 100 ]

do let index=i%4

echo -en "\e[43m" //可更改43 為40~49之間的其他數字,改變底色

printf

"[%-100s][%d

%%][%c]\r"

"$str"

"$i"

"$" str='#'

$str

sleep

0.1 let i++

done

echo -e "\e[1;m"

不同底色執行結果如下:

shell之彩色進度條

bin bash b for i 0 i 100 i 1 do printf e 32m progress e 31m 100s e 33m d r b i 100s 設定初始顯示格數 r return,回到開始輸出的地方 sleep 0.1 b done echo 下面是字型輸出顏色及終端格式控制...

Shell指令碼下的彩色進度條

顏色是通過新增專用序列來選擇的 夾在 e 和 m 之間的數字。如果指定乙個以上的數字,則用分號將它們分開。echo e e 31 42m 使用 e 0m 序列將顏色重新設定為正常值 顏色分類 e 30m e 37m 設定前景色 字型顏色 echo e e 30m 灰色 echo e e 31m 紅色...

shell指令碼實現乙個彩色的進度條

首先來了解一下如何設定終端的字元顏色 終端的字元顏色由轉義序列 escape sequence 控制,是文字模式下的系統顯示功能,與具體語言無關。轉義序列以控制字元 esc 開頭。該字元的ascii碼十進位制表示為27,十六進製制表示為0x1b,八進位制表示為033。多數轉義序列超過兩個字元,故通常...