跳到主要内容
ansicode
终端

Linux console (fbcon) —— ANSI 转义码支持情况

Linux 控制台(通常称为 "fbcon",源自其 framebuffer console 驱动)是每台 Linux 系统在图形会话之前 —— 有时也代替图形会话 —— 运行的内核内文本终端。Ctrl+Alt+F2 切到的 tty、无 Xorg / Wayland 的嵌入式开发板、无头树莓派、救援启动、安装器、图形会话崩溃后的恢复控制台 —— 全都依赖它。其转义序列方言记录于 `console_codes(4)`,对应的 terminfo 条目为 `linux` / `linux-16color`。

ANSI 转义码兼容性方面,Linux 控制台是有意为之的最小 VT 子集:仅 16 色(8 个 SGR 前景 + 8 个 SGR 背景,bold-as-bright 是唯一的强度变体),不支持斜体(内核 framebuffer 模式没有斜体字形渲染器),不支持 OSC 8 超链接、Sixel、kitty 图形协议、256 色、24 位真彩色 —— `tput colors` 返回 8 或 16。鼠标、括号粘贴及大多数 DEC 私有模式同样缺失。可用部分:SGR 0–37 / 40–47 / 1 / 4 / 7(重置、基本前景/背景、加粗、下划线、反色)、光标移动(CUP / CUF / CUB / CUU / CUD)、擦除(ED / EL)、备用屏幕,以及与备用屏幕同时友好的 `\ec` 完整重置(RIS)。

最近更新

特性支持情况

该终端在站点统一矩阵跟踪的 15 个特性上的表现。点击任意特性名可查看其在全部终端上的完整支持情况。

  • 8 种基础色(30–37 / 40–47)SGR 30–37 前景,40–47 背景。
    支持
  • 高亮(aixterm)色(90–97 / 100–107)aixterm SGR 扩展。
    支持
  • 256 色调色板(38;5;n / 48;5;n)xterm 256 色扩展。
    不支持
  • 24 位真彩色(38;2;r;g;b)1670 万直接 RGB。设置 $COLORTERM=truecolor。
    不支持
  • 斜体(SGR 3)斜体文本属性。
    不支持
  • 扩展下划线(4:1–4:5)波浪/点/虚下划线样式。
    不支持
  • 删除线(SGR 9)文本中央的水平线。
    不支持
  • OSC 8 超链接内联可点击 URI。
    不支持
  • 备用屏幕(?1049h)全屏应用缓冲区。
    支持
  • 鼠标跟踪(SGR ?1006)鼠标点击/拖拽事件。
    部分
  • 括号粘贴(?2004)粘贴文本被 ESC[200~/ESC[201~ 包裹。
    不支持
  • 焦点事件(?1004)获得焦点时 ESC[I,失去时 ESC[O。
    不支持
  • Sixel 图形DEC sixel 内联位图。
    不支持
  • Kitty 图形协议PNG/RGB 内联图像和动画。
    不支持
  • 同步输出(?2026)原子化帧更新,避免撕裂。
    不支持

在此终端可用的序列

该终端能完整处理的转义序列对应的权威参考页。每条均链接到完整页面,含字节形式、规范出处与多语言示例。

细节与版本说明

在生产中使用某序列前应知晓的、该终端特有的注意事项。

仅 16 色 —— bold-as-bright 是唯一的强度
Linux 控制台的调色板固定为 16 项(8 正常 + 8 高亮)。SGR 38;5;N(256 色)与 SGR 38;2;r;g;b(24 位真彩色)会被静默截断到这 16 项中的最近色。`bold`(SGR 1)通过切换当前前景的高亮变体来渲染,而非改变字重 —— framebuffer 模式没有粗体字形文件。脚本若需检测终端再上色,可用 `$COLORTERM=truecolor` 判断真彩色、`$TERM` 含 `256color` 判断 256 色;Linux 控制台两者都不设。
不支持斜体 —— framebuffer 模式内核无斜体字形
SGR 3(斜体)被解析但无可见效果 —— 内核 framebuffer 控制台仅加载 PSF/PSF2 字体(通过 `setfont`)中的常规 + 加粗字形。neovim、less、man,及任何以斜体表达强调的工具都会显示为普通文本。terminfo 条目 `linux` 中 `sitm` / `ritm` 声明为 no-op。绕行方案:安装 kmscon(基于 KMS 的用户态替代控制台),通过 FreeType 支持斜体 —— 但 kmscon 已停止维护,主流发行版不再打包。
无鼠标、无括号粘贴、无 OSC 8 —— 纯文本设计
DECSET 1000 系列鼠标模式(X10 / SGR 编码 / urxvt 编码)会以原始字节形式打印;括号粘贴模式(DECSET 2004)被静默忽略 —— 如需粘贴,请借助 gpm + screen / tmux;OSC 8 超链接(`\e]8;;url\e\\…\e]8;;\e\\`)会原样打印 URL 字符串。控制台有意保持纯文本;指针、剪贴板、超链接语义都交给上层(图形终端)处理。DA1 应答(`CSI c`)为 `\e[?6c` —— 仅声明 VT102 而非 VT220+。
Unicode 可用 —— 但字形受 setfont 加载的范围限制
Linux 控制台自内核 2.6 起在字节层支持 UTF-8 输入输出,但实际可渲染的字形集仅限于当前 PSF/PSF2 字体(通常 256 或 512 个字形 —— 例如 `console-setup` 中的 `LatGrkCyr-8x16`)。字体范围外的码点以 `□` 样的回退字符显示。东亚宽字符尤其不友好 —— 裸控制台中显示 CJK,主流发行版推荐 `fbterm` 或 `kmscon`。`console_codes(4)` 文档化了 Unicode 到字体槽位的映射(通过 `loadunimap` 配置)。

参考资料

其他已有专页的终端