Linux:shell脚本之彩色进度条

xiaoxiao2021-02-28  67

       关于进度条的实现原理,在之前的博客里面有描述过,这里就不赘述,只说说怎么实现彩色吧。

       首先来了解一下如何设置终端的字符颜色: 

       终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关。转义序列以控制字符’ESC’开头。该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033。多数转义序列超过两个字符,故通常以’ESC’和左括号’[‘开头。该起始序列称为控制序列引导符(CSI,Control Sequence Intro),通由‘\033[’或‘\e[’代替。  通过转义序列设置终端显示属性时,可采用以下格式:  \033[ Param {;Param;…}m 或 \e[ Param {;Param;…}m  其中,‘\033[’或‘\e[’引导转义序列,‘m’表示设置属性并结束转义序列。Param为属性值,{…}表示可选(多个参数之间用分号隔开,与顺序无关)。  ———————————————————————————————————————————  转义序列相关的常用参数如下(通过man console_codes命令可查看更多的参数描述):  显示: 0(默认)、1(粗体/高亮)、22(非粗体)、4(单条下划线)、24(无下划线)、5(闪烁)、25(无闪烁)、7(反显、翻转前景色和背景色)、27(无反显)  颜色: 0(黑)、1(红)、2(绿)、 3(黄)、4(蓝)、5(洋红)、6(青)、7(白)  前景色为30+颜色值,如31表示前景色为红色;背景色为40+颜色值,如41表示背景色为红色。  设置格式:  \033[显示方式;前景色;背景色m输出字符串\033[0m 或 

\e[显示方式;前景色;背景色m输出字符串\033[0m

程序代码:

#!/bin/bash i=0 bar='' j=0 arr=('|' '/' '-' '\\') while [ $i -le 100 ] do printf "[\e[43;46;1m%-100s\e[0m][-%%][%c]\r" "$bar" "$i" "${arr[$j]}" bar="#"$bar let i++ let j=i%4 sleep 0.1 done echo "" 运行结果:

转载请注明原文地址: https://www.6miu.com/read-30624.html

最新回复(0)