前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[Linux] 有趣(花里胡哨)的终端显示

[Linux] 有趣(花里胡哨)的终端显示

原创
作者头像
大大刺猬
修改2025-03-27 18:31:04
修改2025-03-27 18:31:04
1030
举报
文章被收录于专栏:大大刺猬大大刺猬

今天安装某国产数据库的时候, 看到终端有个类似转圈圈的效果, 想起以前写脚本的时候总想着写些狐狸胡绍的效果. 于是这里就简单总结下

看到的效果图如下:

动态展示原理

这种动态展示的原理其实就是输出普通字符, 然后输出 退格(\b) 字符,这样再输出字符的时候, 新字符就把就字符的位置覆盖了. 从而达到看起来像是在原始位置变化的效果.  

简单点说就是, 将光标移动到某个位置, 比如 换行 (\r) 能将光标移动到行首

基于这两点我们就能制作一些动态效果了.

转圈圈代码

我们只需要每次在同一个位置依次循环输出/ - \  |这4个字符, 就能达到 文章开头的转圈圈效果, 比如使用如下shell代码

代码语言: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之类的解压也是能查看进度的,有兴趣的去翻翻以前的文章, 我这里就直接演示效果了. 

代码语言:shell
复制
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安装脚本里的代码

代码语言:shell
复制
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
}

其它色儿可以使用如下脚本快速查看

代码语言:shell
复制
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"

相当的花里胡哨.

还有些会在登录的时候加一个提示信息, 通常会是一个字符构成的图像. 也可以在登录的时候开一个终端以供审计使用, 之前也有讲过. 比如:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 动态展示原理
  • 转圈圈代码
  • 进度条代码
  • 丰富的颜色
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档