今天安装某国产数据库的时候, 看到终端有个类似转圈圈的效果, 想起以前写脚本的时候总想着写些狐狸胡绍的效果. 于是这里就简单总结下
看到的效果图如下:
动态展示原理
这种动态展示的原理其实就是输出普通字符, 然后输出 退格(\b) 字符,这样再输出字符的时候, 新字符就把就字符的位置覆盖了. 从而达到看起来像是在原始位置变化的效果.
简单点说就是, 将光标移动到某个位置, 比如 换行 (\r) 能将光标移动到行首
基于这两点我们就能制作一些动态效果了.
转圈圈代码
我们只需要每次在同一个位置依次循环输出/ - \ |
这4个字符, 就能达到 文章开头的转圈圈效果, 比如使用如下shell代码
while true;do echo -ne '[/]\b\b\b'; sleep 0.2 echo -ne '[-]\b\b\b'; sleep 0.2 echo -ne '[\\]\b\b\b'; sleep 0.2 echo -ne '[|]\b\b\b'; sleep 0.2 done;
复制
进度条代码
其实我之前有讲过mysql导入进度查看的, tar之类的解压也是能查看进度的,有兴趣的去翻翻以前的文章, 我这里就直接演示效果了.
jindutiao(){ percentage=$1 msg=$2 filled_length=$[ ${percentage} / 2 ] bar=$(printf "%-50s" "$(printf '#%.0s' $(seq 1 $filled_length))") echo -ne "\r[$bar] $percentage% ${msg}" } for i in {1..100};do jindutiao $i "测试进度的" sleep 0.01 done echo ""
复制
丰富的颜色
编写shell脚本的时候, 往往还会加一些颜色用于提示. 有时候也会加一些一闪一闪的效果, 比如如下为我那mysql安装脚本里的代码
echo_color() { detaillog1=$3 [[ -z ${detaillog1} ]] && detaillog1=${details} case $1 in green) echo -e "\033[32;40m$2\033[0m" ;; red) echo -e "\033[31;40m$2\033[0m" ;; error|err|erro|ERROR|E|e) echo -e "[\033[1;5;41;33mERROR\033[0m `date +%Y%m%d-%H:%M:%S`] \033[1;41;33m$2\033[0m" ;; redflicker) echo -e "\033[1;5;41;33m$2\033[0m" ;; info|INFO|IF|I|i) echo -e "[\033[32;40mINFO\033[0m `date +%Y%m%d-%H:%M:%S`] \033[32;40m$2\033[0m" ;; highlightbold) echo -e "\033[1;41;33m$2\033[0m" ;; warn|w|W|WARN|warning) echo -e "[\033[31;40mWARNNING\033[0m `date +%Y%m%d-%H:%M:%S`] \033[31;40m$2\033[0m" ;; detail|d|det) echo -e "[\033[32;40mINFO\033[0m `date +%Y%m%d-%H:%M:%S`] \033[32;40m$2\033[0m" echo "[`date +%Y%m%d-%H:%M:%S`] $2" >> ${detaillog1} ;; n|null) echo -e "$2" ;; *) echo "INTERNAL ERROR: echo_color KEY VALUE" ;; esac }
复制
其它色儿可以使用如下脚本快速查看
for COLOR in {1..255}; do echo -en "\e[38;5;${COLOR}m \\e\[38;5;${COLOR}m"; done;echo -e "\n\033[31;40mecho -e \"\\\eCOLOR STRINGS_BY_YOURSELF\"\033[0m"
复制
相当的花里胡哨.
还有些会在登录的时候加一个提示信息, 通常会是一个字符构成的图像. 也可以在登录的时候开一个终端以供审计使用, 之前也有讲过. 比如:
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
TA的专栏
PYTHON解析MYSQL
收录57篇内容
目录