[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准备面试 模拟面试问答与职场话术练习教程


|det)
echo -e "[\033[32;40mINFO\033[0m