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

发布时间 - 2025-06-20 00:00:00    点击率:

在安装某国产数据库时,我注意到终端上有一个类似旋转效果的动态显示,这让我回想起过去在编写脚本时尝试添加一些炫酷效果的经历。以下是对这种动态显示效果的简单总结。

动态展示的效果图如下:

这种动态展示的原理其实是通过输出普通字符,然后输出退格字符(\b),使得新字符覆盖旧字符的位置,从而在视觉上实现动态变化的效果。

简单来说,就是将光标移动到特定位置,例如使用换行符(\r)将光标移动到行首。

基于这两点,我们可以创建一些动态效果。

转圈圈代码

我们只需要在同一个位置依次循环输出 / - \ | 这四个字符,就能实现文章开头的旋转效果。例如,使用以下 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"

这些效果确实非常炫目。

此外,还有一些在登录时添加提示信息的做法,通常是用字符构成的图像。也可以在登录时打开一个终端供审计使用,我之前也介绍过。例如:


# linux  # mysql  # 工具  # ai  # red  # 循环  # 数据库  # 我在  # 你可以  # 就能  # 还会  # 而在  # 上有  # 提示信息  # 我们可以  # 注意到  # 看我 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何配置Horizon来管理队列?(安装和使用)  怎么用AI帮你为初创公司进行市场定位分析?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Laravel如何发送系统通知?(Notification渠道示例)  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  南京网站制作费用,南京远驱官方网站?  Java垃圾回收器的方法和原理总结  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  如何破解联通资金短缺导致的基站建设难题?  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  大型企业网站制作流程,做网站需要注册公司吗?  详解Android中Activity的四大启动模式实验简述  如何在服务器上配置二级域名建站?  Laravel Session怎么存储_Laravel Session驱动配置详解  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Firefox Developer Edition开发者版本入口  Android实现代码画虚线边框背景效果  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  JavaScript如何实现继承_有哪些常用方法  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  如何在阿里云服务器自主搭建网站?  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  网站制作壁纸教程视频,电脑壁纸网站?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Laravel如何自定义错误页面(404, 500)?(代码示例)  Laravel如何使用模型观察者?(Observer代码示例)  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Python文件操作最佳实践_稳定性说明【指导】  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  简历在线制作网站免费版,如何创建个人简历?  高防服务器租用指南:配置选择与快速部署攻略  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  BootStrap整体框架之基础布局组件  如何在建站宝盒中设置产品搜索功能?  jQuery validate插件功能与用法详解  详解阿里云nginx服务器多站点的配置  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程