ANSI 终端颜色

转义序列/前后景/样式

413 次访问

ANSI 颜色代码

终端转义序列:\033[CODEm\e[CODEm(\033 = ESC = 27)。点击下方任意颜色 / 样式可复制对应代码。

escape:
基础前景色(30-37 / 90-97 亮色)
基础背景色(40-47 / 100-107 亮色)
样式
256 色(点击复制 \033[38;5;Nm)
24-bit RGB
前景:\033[38;2;<R>;<G>;<B>m
背景:\033[48;2;<R>;<G>;<B>m
重置:\033[0m\033[m
Bash 示例
echo -e "\033[31m红色\033[0m"
printf "\e[1;33m警告\e[0m\n"
RED='\033[31m'; RESET='\033[0m'; echo -e "${RED}error${RESET}"

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

💻

终端日志高亮

后端运维每天面对海量终端日志,不同级别(INFO/WARN/ERROR)混杂在一起,肉眼扫描效率极低。使用本工具生成 ANSI 转义序列,将 ERROR 标为红色背景 + 白色加粗、WARN 标为黄色、INFO 标为绿色,直接粘贴到日志脚本的 echo 语句中。运行后,终端输出按颜色分层,3 秒定位故障行,无需再逐行 grep。

🎨

CLI 进度条美化

Python 脚本开发者想在终端输出带颜色的进度条,但手动拼装 ANSI 转义码容易漏掉重置符(\033[0m),导致后续输出全部变色。使用本工具的可视化面板,选择前景色(如青色)、背景色(如深灰)、样式(加粗/闪烁),一键复制组合后的转义序列。插入代码后,进度条在深色终端主题下清晰可见,且不会污染后续输出。

📜

Bash 提示符定制

Linux 用户想修改 PS1 环境变量,让终端提示符显示绿色用户名 + 蓝色路径 + 红色 Git 分支状态,但直接编辑 .bashrc 时,转义序列的格式错误会导致提示符乱码。利用本工具的实时预览功能,逐段选择颜色和样式,生成完整的 PS1 字符串。复制到配置文件中,重启终端后,多段信息用不同颜色区分,视觉层级一目了然。

🧪

测试输出分类

自动化测试工程师运行 200 个用例后,终端输出 PASS/FAIL/SKIP 结果混杂。手动翻找失败用例耗时且易遗漏。通过本工具生成三组颜色序列:PASS 用绿色、FAIL 用红色闪烁、SKIP 用黄色斜体,嵌入测试框架的日志函数。运行后,失败用例在终端中闪烁红色,一眼扫过即可统计失败数量和位置。

🔧

脚本调试信息

Shell 脚本调试时,变量名、变量值、执行步骤混杂输出,难以区分。使用本工具为不同调试级别分配颜色:变量名用蓝色、变量值用黄色、步骤状态用白色加粗。将生成的序列插入调试函数中,运行脚本后,每行调试信息按颜色分组,变量赋值错误和逻辑分支异常都能在视觉上快速定位。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Online ANSI Editor)传统方法 (终端模拟器)
数据隐私纯浏览器处理,文本不上传服务器部分在线编辑器需粘贴文本到网页,存在数据留存风险本地终端执行,数据完全在本地
处理速度即时预览,输入即出结果需点击提交按钮等待服务器响应,延迟 1-3 秒需手动编译/运行代码,或使用 echo 命令,速度取决于终端渲染
离线可用完全离线,加载后无需网络必须联网完全离线
使用门槛无需安装,打开网页即用需要找到并打开特定网站需要安装终端模拟器(如 iTerm2, Windows Terminal)并熟悉 shell 命令
样式预览实时可视化预览最终颜色效果部分工具支持预览,但可能不支持所有转义序列无图形化预览,需肉眼观察终端输出,且不同终端渲染效果不同
功能范围专注颜色与样式(前景/背景/加粗/闪烁等)的生成与预览可能包含颜色生成、代码片段管理、导出等功能功能全面,但生成 ANSI 颜色需额外编写脚本或使用 tput 命令
跨平台一致性浏览器渲染,效果与浏览器相关,但提供标准化输出依赖服务器端解析,不同工具解析规则可能不同不同终端模拟器对 ANSI 标准的支持程度不同,输出效果差异大

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例6 个典型场景,覆盖常规、边界与易错

输入输出说明
Hello WorldHello World典型场景:给一段文字添加红色前景色
粗体下划线粗体下划线(渲染为粗体+下划线)典型场景:组合多个样式属性
红底文字红底文字(背景为RGB红色)边界case:24位真彩色背景,非标准256色
亮绿文字亮绿文字(256色索引82)边界case:256色扩展色,非标准8/16色
删除线测试删除线测试(部分终端不支持)易错case:删除线等非标准属性,兼容性因终端而异
重置所有红色绿色重置所有红色绿色(绿色未重置,显示红色)易错case:忘记在末尾加重置码导致颜色污染后续输出

常见错误对照7 个常踩的坑 · 错误 → 修复

1. 混淆 ANSI 转义序列的 CSI 与 OSC 前缀

错误
]31m 红色文字
修复
 红色文字

ANSI 标准中,SGR(选择图形再现)参数使用 CSI(Control Sequence Introducer)前缀 `[`,而非 OSC(操作系统命令)前缀 `]`。`]` 用于设置终端标题等,不会改变文字颜色。

2. 忘记重置样式导致后续输出全部被染色

错误
echo '警告信息'
修复
echo '警告信息'

ANSI 颜色序列是状态性的,一旦设置,终端会持续应用该样式直到遇到重置码(``)。不重置会导致后续所有终端输出都变成红色,包括命令提示符和命令结果。

3. 在 Windows 旧版 CMD 中使用 ANSI 序列

错误
在 cmd.exe 中直接运行 `echo test`
修复
使用 Windows Terminal 或 PowerShell 7+,或先运行 `reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1` 启用旧版 CMD 的 ANSI 支持

Windows 10 之前的 cmd.exe 原生不支持 ANSI 转义序列。Windows 10 版本 1511 后可通过注册表启用,但更推荐使用新版终端。

4. 混淆前景色与背景色参数

错误
 红色文字
修复
 红色文字

ANSI 颜色中,前景色(文字颜色)范围是 30-37(标准色)或 90-97(亮色),背景色范围是 40-47(标准色)或 100-107(亮色)。`41` 是红色背景,`31` 才是红色文字。

5. 在非终端环境(日志文件、Web 页面)中保留 ANSI 序列

错误
将包含 `Error` 的日志直接写入文件或输出到 HTML
修复
在写入文件或输出到非终端环境前,使用 `sed 's/\x1b\[[0-9;]*m//g'` 或编程语言的 strip_ansi 库移除 ANSI 序列

ANSI 转义序列是终端控制字符,在文本文件、Web 页面或 IDE 控制台(非原生终端)中会显示为乱码字符(如 `[31m`),破坏可读性。

6. 使用 256 色时遗漏结束标记 m

错误
[38;5;196 红色文字
修复
 红色文字

256 色扩展颜色序列的完整格式是 `m`,其中 `m` 是 SGR 命令的终止字符。遗漏 `m` 会导致终端无法解析该序列,颜色不生效。

7. 在字符串拼接中错误处理转义字符

错误
print("\033[31m红色" + "文字")
修复
print("\033[31m红色文字") 或 print("\033[31m" + "红色文字")

在 Python 等语言中,`\033` 是八进制转义。如果字符串拼接不当(如将序列拆到两个字符串中),可能导致转义序列被中断,终端无法正确识别。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

\033[<参数>m

变量说明

  • \033 — ESC 转义字符(八进制 033)
  • <参数> — 以分号分隔的样式/颜色代码
  • m — SGR 命令结束符

示例

输出红色前景文本:echo '\033[31mHello\033[0m'。参数 31 表示红色前景,0 重置所有属性。终端显示红色 'Hello'。

适用范围

适用于支持 ANSI X3.64 / ECMA-48 标准的终端模拟器(xterm、iTerm2、Windows Terminal 等)。不适用于纯文本文件、不支持转义的终端(如某些嵌入式串口终端)。

原理图

输入文本 + 样式选择解析转义序列\x1b[...m前后景 / 样式渲染预览彩色终端效果导出复制流程说明1. 用户在输入框中填写文本,并选择前景色、背景色、样式(加粗/斜体/下划线)。2. 工具根据选择生成 ANSI 转义序列(如 \x1b[31;1m),包裹文本。3. 浏览器本地解析序列,在预览区渲染出彩色终端效果,无需后端请求。4. 用户可一键复制带转义序列的文本,直接用于终端脚本或日志输出。
用户输入 本地处理 渲染预览 导出

开发者集成

3 种主流语言 · 复制即用

import sys

# 前景色:绿色,背景色:黄色,加粗
code = '\033[32;43;1m'
reset = '\033[0m'

print(f"{code}Hello, ANSI World{reset}")

# 256色:前景色 196(亮红),背景色 235(深灰)
fg = '\033[38;5;196m'
bg = '\033[48;5;235m'
print(f"{fg}{bg}256-color example{reset}")

# 真彩色(24位):前景色 #ff6600
rgb_fg = '\033[38;2;255;102;0m'
print(f"{rgb_fg}True color example{reset}")
package main

import "fmt"

func main() {
	// 前景色:青色,背景色:蓝色,闪烁
	code := "\033[36;44;5m"
	reset := "\033[0m"
	fmt.Printf("%sHello, ANSI World%s\n", code, reset)

	// 256色:前景色 82(亮绿)
	fg := "\033[38;5;82m"
	fmt.Printf("%s256-color green%s\n", fg, reset)

	// 真彩色:前景色 #ff0000
	rgbFg := "\033[38;2;255;0;0m"
	fmt.Printf("%sTrue color red%s\n", rgbFg, reset)
}
// 前景色:红色,背景色:白色,下划线
const code = '\x1b[31;47;4m';
const reset = '\x1b[0m';

console.log(`${code}Hello, ANSI World${reset}`);

// 256色:前景色 208(橙色)
const fg = '\x1b[38;5;208m';
console.log(`${fg}256-color orange${reset}`);

// 真彩色:前景色 #00ff00
const rgbFg = '\x1b[38;2;0;255;0m';
console.log(`${rgbFg}True color green${reset}`);

常见问题

8 个高频疑问

这个工具怎么用?我输入什么才能看到颜色效果?
在输入框里直接输入 ANSI 转义序列(例如 \033[31m 红色文字\033[0m),或者用工具提供的可视化按钮快速生成。输入后点击「预览」按钮,下方会实时渲染出终端里的实际颜色效果。支持前景色(30-37)、背景色(40-47)、明亮色(90-97/100-107)以及粗体(1)、下划线(4)等样式组合。不支持输入纯文本直接转颜色——必须用转义序列格式。
为什么我输入的转义序列在工具里正常显示,但复制到终端里没效果?
常见原因是编码问题。本工具输出的是标准 ANSI 序列,但部分终端(如 Windows CMD 旧版、某些 SSH 客户端)默认不解析 \033(ESC)字符,需要改用 \e 或直接插入原始 ESC 字节(0x1B)。另外注意:序列必须以 \033[0m 或 \033[m 结尾复位,否则后续所有文字都会沿用最后一个颜色。建议先用工具自带的「复制为原始字节」按钮,再粘贴到终端。
工具支持 256 色和真彩色(24位色)吗?
支持。256 色用 `\033[38;5;N`(前景)和 `\033[48;5;N`(背景),N 取 0-255。真彩色用 `\033[38;2;R;G;B` 和 `\033[48;2;R;G;B`,R/G/B 各 0-255。工具会正确解析并渲染这些扩展色。但注意:并非所有终端都支持真彩色(如 Linux 虚拟控制台仅支持 16 色),工具渲染效果只代表支持扩展色的终端表现。
工具渲染出来的颜色和我在真实终端看到的颜色不一样,怎么回事?
ANSI 颜色标准只定义了色号(如 31 为红色),但具体「红到什么程度」由终端模拟器的配色方案决定。本工具使用 xterm-256color 的默认色板渲染,而 macOS 终端、iTerm2、Windows Terminal、Konsole 等各有自己的色板(甚至同一终端的不同主题色板也不同)。如果追求跨终端一致,建议用真彩色(24位),它指定具体 RGB 值,只受终端色域限制。
这个工具和网上其他 ANSI 颜色生成器比有什么不同?
多数在线工具只提供预设颜色按钮(点一下生成一串固定序列),无法自由嵌套和组合样式。本工具支持在输入框里直接编辑和调试任意复杂序列(比如同时设置背景色+下划线+闪烁),实时预览变化。另外工具完全在浏览器端运行,不依赖后端服务,断网也能用。适合需要精细调试日志高亮、终端 UI 组件的开发者。
我写了一个带颜色的脚本,但打印出来颜色错乱/花屏,能用这个工具排查吗?
可以。把脚本中拼接好的完整转义序列粘贴到输入框,工具会逐字符解析并高亮显示每个转义控制符的位置。如果序列中有未闭合的 `\033[` 或缺少复位码 `\033[0m`,预览区会直接显示颜色溢出(颜色延伸到不该染的文本上)。还能用「查看原始字节」功能检查是否有不可见字符混入(如 UTF-8 BOM 或多余空格)。
工具支持在 Windows 命令提示符(CMD)下使用吗?
工具本身是浏览器页面,在任何系统上都能用。但生成的 ANSI 序列在 Windows 原生 CMD 中默认不生效(CMD 从 Windows 10 版本 1511 起才支持 ANSI,且需注册表启用)。如果目标环境是旧版 CMD,建议将序列转为 PowerShell 的 `Write-Host -ForegroundColor` 语法,或使用第三方工具(如 ANSICON)桥接。工具提供「转换为 PowerShell 语法」辅助按钮(如果页面有该功能)。
我输入 \033[31m 后预览区没反应,是不是工具坏了?
先检查是否用了反斜杠 \ 而非正斜杠 /。ANSI 序列固定用反斜杠转义 ESC 字符,如果输入了 `/[31m` 会被视为普通文本。另外注意数字和字母之间不能有空格:`\033[31 m` 无效,`\033[31m` 才正确。如果输入无误仍无反应,可能是浏览器 Console 有报错(按 F12 查看),或尝试刷新页面。工具不依赖网络,纯本地运行,刷新不影响已输入内容。
选择 打开 +新窗口 esc关闭