shell脚本实现一个彩色的进度条


首先来了解一下如何设置终端的字符颜色:
终端的字符颜色由转义序列(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
function bar()
{
    i=0
    idx=0
    str=''
    arr=('|' '/' '-' '\\')
    while [ $i -le 100 ]
    do
        printf "\e[1;46;31m[%-100s]\e[42;30m[%d%%]\e[40;41;43;30m%c\e[0m\\r" "$str" "$i" "${arr[$idx]}"
        let i++
        str+='#'
        let idx++
        let idx=idx%4
        usleep 100000
    done
    printf '\n'
}
bar

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值