你是否在终端里见过下面这样富有设计感的文本输出?
██████╗ ███████╗██████╗ ██╗███████╗
██╔══██╗██╔════╝██╔══██╗██║██╔════╝
██████╔╝█████╗ ██║ ██║██║█████╗
██╔═══╝ ██╔══╝ ██║ ██║██║██╔══╝
██║ ███████╗██████╔╝██║███████╗
╚═╝ ╚══════╝╚═════╝ ╚═╝╚══════╝
或者这种:
_ __ _ _
| |/ /___ _ _| |__ ___| |__
| ' // _ \ | | | '_ \ / __| '_ \
| . \ __/ |_| | |_) | (__| | | |
|_|\_\___|\__,_|_.__/ \___|_| |_|
初看是否有些惊艳?关键在于——这并非图片,也不是前端特效,而是纯正的终端文本输出!只需要一行简单的命令即可生成,例如:
[root@k8s-master01 ~]# figlet Kubernetes
_ __ _ _
| |/ / _| |__ ___ _ __ _ __ ___| |_ ___ ___
| ' / | | | '_ \ / _ \ '__| '_ \ / _ \ __/ _ \/ __|
| . \ |_| | |_) | __/ | | | | | __/ || __/\__ \
|_|\_\__,_|_.__/ \___|_| |_| |_|\___|\__\___||___/
[root@k8s-master01 ~]# figlet dinginx
_ _ _
__| (_)_ __ __ _(_)_ __ __ __
/ _` | | '_ \ / _` | | '_ \\ \/ /
| (_| | | | | | (_| | | | | | > <
\__,_|_|_| |_|\__, |_|_| |_/_/\_/
|___/
什么是 Figlet?
FIGlet 是一款经典且实用的终端工具,其核心功能是将普通文本转换为风格多样的 ASCII 艺术字。它支持多种预设字体,非常适合应用在 Shell 脚本、CI/CD 流程、登录欢迎语以及各类 DevOps 场景中。
简单来说,Figlet 能让你枯燥的命令行界面变得生动而富有表现力,让你的终端从“能用”进化到“有灵魂”。
安装 Figlet
在不同操作系统上的安装命令非常简单。
CentOS / Rocky / AlmaLinux:
yum install -y figlet
Ubuntu / Debian:
apt install -y figlet
macOS:
brew install figlet
基础使用入门
安装完成后,就可以立即开始使用。最基本的命令格式是 figlet 后接想要转换的文本。
figlet Hello
输出效果如下:
_ _ _ _
| | | | ___| | | ___
| |_| |/ _ \ | |/ _ \
| _ | __/ | | (_) |
|_| |_|\___|_|_|\___/
如果要转换的文本包含空格,记得用引号包裹:
figlet "welcome to dinginx's website"
进阶玩法:让终端输出更出彩
1. 指定不同字体
Figlet 内置了多种字体,使用 -f 参数可以指定。
[root@k8s-master01 ~]# figlet -f slant DevOps
____ ____
/ __ \___ __/ __ \____ _____
/ / / / _ \ | / / / / __ \/ ___/
/ /_/ / __/ |/ / /_/ / /_/ (__ )
/_____/\___/|___/\____/ .___/____/
/_/
[root@k8s-master01 ~]# figlet -f big Redis
_____ _ _
| __ \ | (_)
| |__) |___ __| |_ ___
| _ // _ \/ _` | / __|
| | \ \ __/ (_| | \__ \
|_| \_\___|\__,_|_|___/
[root@k8s-master01 ~]# figlet -f standard Kubernetes
_ __ _ _
| |/ / _| |__ ___ _ __ _ __ ___| |_ ___ ___
| ' / | | | '_ \ / _ \ '__| '_ \ / _ \ __/ _ \/ __|
| . \ |_| | |_) | __/ | | | | | __/ || __/\__ \
|_|\_\__,_|_.__/ \___|_| |_| |_|\___|\__\___||___/
2. 查看所有可用字体
使用 showfigfonts 命令可以列出系统内所有可用的字体及其预览。
[root@k8s-master01 ~]# showfigfonts
banner :
##### ## # # # # ###### #####
# # # # ## # ## # # # #
##### # # # # # # # # ##### # #
# # ###### # # # # # # # #####
# # # # # ## # ## # # #
##### # # # # # # ###### # #
big :
_ _
| | (_)
| |__ _ __ _
| '_ \| |/ _` |
| |_) | | (_| |
|_.__/|_|\__, |
__/ |
|___/
... (更多字体预览)
3. 居中显示
使用 -c 参数可以让艺术字在终端中居中显示,这在编写脚本时非常实用。
figlet -c Welcome
4. 控制输出宽度
通过 -w 参数可以指定输出宽度(字符数),以适应不同尺寸的终端窗口。
figlet -w 100 HelloWorld
在脚本中的应用:提升可读性与仪式感
将 Figlet 应用于自动化脚本中,可以显著提升关键信息的可读性和视觉层次。
场景一:脚本启动横幅 (Banner)
在脚本开头输出一个醒目的标题,明确指示当前任务。
[root@k8s-master01 ~]# figlet -f slant "K8s Deploy"
echo "Starting deployment..."
__ ______ ____ __
/ //_( __ )_____ / __ \___ ____ / /___ __ __
/ ,< / __ / ___/ / / / / _ \/ __ \/ / __ \/ / / /
/ /| / /_/ (__ ) / /_/ / __/ /_/ / / /_/ / /_/ /
/_/ |_\____/____/ /_____/\___/ .___/_/\____/\__, /
/_/ /____/
Starting deployment...
场景二:CI/CD 流程输出
在 Jenkins 或 GitLab CI 等CI/CD Pipeline的构建脚本中,使用 Figlet 来高亮显示构建结果,让人一目了然。
[root@k8s-master01 ~]# figlet "Build Success"
____ _ _ _ ____
| __ ) _ _(_) | __| | / ___| _ _ ___ ___ ___ ___ ___
| _ \| | | | | |/ _` | \___ \| | | |/ __/ __/ _ \/ __/ __|
| |_) | |_| | | | (_| | ___) | |_| | (_| (_| __/\__ \__ \
|____/ \__,_|_|_|\__,_| |____/ \__,_|\___\___\___||___/___/
场景三:服务器登录欢迎语
编辑 /etc/profile 或对应用户的 ~/.bashrc 文件,加入 Figlet 命令,让每次登录服务器都充满仪式感。
# 在文件末尾添加
figlet "Welcome to K8s Master"
进阶组合:生成彩色 ASCII 艺术字
想要更炫酷的效果?可以搭配 lolcat 工具,为 Figlet 的输出加上彩虹渐变色彩。
figlet Kubernetes | lolcat
注意:使用前需先安装 lolcat 工具。
# Ubuntu/Debian 系统安装命令
apt install -y lolcat
结合后,你就能在终端中看到彩色的 ASCII 艺术字,视觉效果直接拉满。
实用建议与适用场景
Figlet 并非核心的生产力工具,但它能在以下场景中极大地提升工作体验和输出可读性:
- Shell 脚本
- CI/CD 流水线
- Kubernetes 运维脚本
- 系统登录欢迎语 (Banner)
- 演示文稿或教程示例
关键在于将其用在“关键输出节点”上,而不是为了装饰而装饰。例如,在脚本的关键步骤处输出状态:
figlet "ERROR"
figlet "SUCCESS"
figlet "DEPLOYING"
这样做能让日志信息更有层次感,运维人员在排查问题时也能更快地定位关键事件,从而间接提升工作效率。
总结
总而言之,Figlet 是一个简单却充满趣味的小工具,它能让你的命令行环境和自动化脚本摆脱枯燥的纯文本输出,增添一份独特的“仪式感”。花几分钟掌握它,或许就能为你日复一日的运维和开发工作带来一点新鲜感。如果你有更多关于脚本编写或 DevOps 实践的奇思妙想,欢迎到云栈社区的开发者板块交流分享。