如何为Unix监控脚本的输出按状态添加颜色标识
给监控脚本输出按状态添加颜色的实现方法
当然可以实现,最简便的方式是用awk工具过滤脚本输出并添加ANSI颜色控制码,不用修改原脚本就能完成需求。
具体命令
直接在原执行命令后加管道,用awk处理输出:
sh monitoring_activity.sh | awk ' /^RUNNING/ {print "\033[33m" $0 "\033[0m"} /^SUCCESS/ {print "\033[32m" $0 "\033[0m"} /^FAILED / {print "\033[31m" $0 "\033[0m"} '
原理说明
- ANSI颜色控制码:
\033[33m对应黄色、\033[32m对应绿色、\033[31m对应红色,\033[0m用于重置颜色,避免后续文本继承当前颜色。 - awk会逐行读取脚本输出,匹配以
RUNNING、SUCCESS、FAILED开头的行,给整行加上对应颜色码后输出。
如果需要把颜色逻辑整合到原脚本里,也可以在脚本的输出语句中加入判断,比如用shell的case语句:
# 假设原脚本中输出每行的逻辑是echo "$status| $task",可以改成: case "$status" in RUNNING) echo -e "\033[33m$status| $task\033[0m" ;; SUCCESS) echo -e "\033[32m$status| $task\033[0m" ;; FAILED) echo -e "\033[31m$status| $task\033[0m" ;; *) echo "$status| $task" ;; # 其他状态正常输出 esac
注意:这种方法依赖终端对ANSI颜色码的支持,现代主流终端(如bash、zsh终端)都能正常显示。
内容的提问来源于stack exchange,提问作者Khilesh Chauhan
相关产品推荐
相关产品推荐

