惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
博客园_首页
H
Help Net Security
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
B
Blog
I
InfoQ
SecWiki News
SecWiki News
T
Tailwind CSS Blog
Spread Privacy
Spread Privacy
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Vulnerabilities – Threatpost
N
Netflix TechBlog - Medium
P
Palo Alto Networks Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Vercel News
Vercel News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
Kaspersky official blog
M
MIT News - Artificial intelligence
S
Schneier on Security
T
Threat Research - Cisco Blogs
F
Fortinet All Blogs
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
The Cloudflare Blog
Recent Announcements
Recent Announcements
Security Latest
Security Latest
G
GRAHAM CLULEY
IT之家
IT之家
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
腾讯CDC
Google DeepMind News
Google DeepMind News
V
V2EX
S
Securelist
TaoSecurity Blog
TaoSecurity Blog
B
Blog RSS Feed
S
SegmentFault 最新的问题
博客园 - 叶小钗
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Project Zero
Project Zero
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
F
Full Disclosure

沈唁志

使用 Trusted Publishing 提升 npm 包发布安全性 Linux 服务器实现 Word 转图片方案 2025|在代码之外,我学会了旅行、牵手和拥抱 使用 GitHub Actions 自动同步 Docker 镜像到 CNB 怎么申请开具中国税收居民身份证明? HMAC 签名编码的坑:Go 和 PHP 的不同处理方式 Bitwarden Secrets Manager:简化 DevOps 的机密管理 MySQL 字符集与大小写敏感性解析 PHP 中生成带毫秒的时间戳
在命令行中输出带颜色的日志
沈唁 · 2025-01-15 · via 沈唁志

在命令行界面(CLI)中输出带颜色的日志不仅能提升可读性,还能帮助开发人员在调试时迅速区分不同类型的日志信息。

通过使用 ANSI 转义序列,我们可以很方便地控制输出文本的颜色、样式和其他显示效果,如加粗、下划线、反显等。

本文将详细介绍如何使用这些序列输出带颜色的日志。

什么是 ANSI 转义序列?

ANSI 转义序列是一种用于控制终端文本格式的字符序列。

它通常以 \033[\e[ 开头,后接不同的控制代码,最后以 m 结尾。

例如,\033[32m 表示设置文本颜色为绿色,\033[0m 用来重置样式。

利用 ANSI 转义序列,开发者可以灵活地在命令行中输出不同颜色和效果的文本。

常见的 ANSI 转义序列控制

  • \033[0m:关闭所有属性,恢复为默认设置
  • \033[1m:设置高亮度(加深显示)
  • \033[4m:设置下划线
  • \033[5m:设置闪烁
  • \033[7m:反显(替换背景色和前景色)
  • \033[8m:消隐(隐藏文本)
  • \033[30m\033[37m:设置前景色(字体颜色)
  • \033[40m\033[47m:设置背景色
  • \033[nA:光标上移 n 行
  • \033[nB:光标下移 n 行
  • \033[nC:光标右移 n 行
  • \033[nD:光标左移 n 行
  • \033[y;xH:设置光标位置为 y 行 x 列
  • \033[2J:清屏
  • \033[K:清除从光标到行尾的内容
  • \033[s:保存光标位置
  • \033[u:恢复光标位置
  • \033[?25l:隐藏光标
  • \033[?25h:显示光标

常见的颜色和效果

字体颜色(前景色)

  • 30: 黑色
  • 31: 红色
  • 32: 绿色
  • 33: 黄色
  • 34: 蓝色
  • 35: 紫色
  • 36: 深绿色
  • 37: 白色

背景颜色

  • 40: 黑色背景
  • 41: 红色背景
  • 42: 绿色背景
  • 43: 黄色背景
  • 44: 蓝色背景
  • 45: 紫色背景
  • 46: 深绿色背景
  • 47: 白色背景

显示效果

  • 0: 默认(无效果)
  • 1: 高亮(加深显示)
  • 2: 低亮(减弱显示)
  • 4: 下划线
  • 5: 闪烁
  • 7: 反显(替换前景色和背景色)
  • 8: 消隐(隐藏文本)

示例代码

  1. 简单的颜色输出

最简单的颜色控制是设置文本的前景色。例如,以下代码将输出绿色文本:

echo "\033[32m绿色\033[0m"

033[32m 设置文本为绿色,033[0m 用于重置所有属性,使后续输出恢复默认样式。

  1. 加粗和下划线

我们可以结合多种样式来增强文本的可读性。例如,下面的代码将输出一个带下划线的红色文本:

echo "\033[4;31m下划线红色\033[0m"

这里,4 表示下划线,31 表示红色。

  1. 发出声音提示

除了颜色和样式,ANSI 转义序列还可以控制终端的其他行为,比如发出声音。

这行命令会在终端发出一声铃声,同时输出一段普通文本:

echo "\007发出'咚~'一声\033[0m"

请注意,在某些终端环境下,铃声可能不会响起,尤其是在没有扬声器的设备上。

  1. 设置背景色和前景色

你还可以同时设置文本的前景色和背景色。例如,以下代码将输出一个白色背景和红色前景的文本:

echo "\033[47;31m白底红字\033[0m"

47 是背景色(白色),31 是前景色(红色)。

  1. 结合多个效果

通过组合多个效果,你可以创建更具视觉冲击力的输出。比如,以下代码将输出一个蓝色加粗下划线的文本:

echo "\033[1;4;34m蓝色加粗下划线\033[0m"

在这个示例中,1 表示加粗,4 表示下划线,34 表示蓝色。

  1. 光标控制和清屏

ANSI 转义序列还允许控制光标的位置和终端屏幕的清理。例如:

echo "\033[2J"  # 清屏
echo "\033[10;5H光标移动到第10行第5列\033[0m"
  1. 隐藏和显示光标

你还可以隐藏和显示光标:

echo "\033[?25l"  # 隐藏光标
echo "\033[?25h"  # 显示光标

实现效果

通过使用 ANSI 转义序列,我们可以轻松地为命令行中的输出添加颜色和样式。

这不仅能让调试日志变得更加易读,还能增强命令行工具的用户体验。

你可以根据需求结合不同的颜色、效果和光标控制,创建自定义的命令行输出,通过这些技术,命令行的输出变得更加生动和富有表现力,有助于开发人员快速识别关键信息。