跳到主要内容
ansicode

C0 控制字符 —— BS、HT、LF、CR、BEL(单字节码)

无需 ESC 引导即可移动光标或触发事件的单字节 C0 控制字符。

字节形式

涵盖所有常见的字符串字面量写法,方便正反查找。

\\x1b[\x08 BS \x09 HT \x0a LF \x0d CR \x07 BEL
\\033[\010 / \011 / \012 / \015 / \007
\\e[\b / \t / \n / \r / \a
ESC [BS / HT / LF / CR / BEL
hex08 / 09 / 0a / 0d / 07

说明

这五个单字节控制字符早于 ANSI/VT,至今所有终端仍直接响应它们:**BS**(0x08,`\b`)光标左移一格(不擦除 —— 配合空格再退格才能擦除,或使用 EL)。**HT**(0x09,`\t`)光标移到下一个 tab 停位(默认每 8 列)。**LF**(0x0a,`\n`)光标下移一行(在 `onlcr` tty 模式下还会回到第 1 列 —— Unix shell 依赖此特性,否则 `\n` 在 `stty -onlcr` 下会显得阶梯排列)。**CR**(0x0d,`\r`)光标回到当前行第 1 列 —— 进度条常用「`\r` + 重绘」模式。**BEL**(0x07,`\a`)发出可闻铃声或视觉闪烁,取决于终端设置;同时也是 OSC 字符串的事实标准终止符(见 OSC 0/2 与 OSC 8)。它们都不需要 `ESC` 字节 —— 属于继承自 ASCII(1963)/ ECMA-6 的 C0 控制集。

规范出处: ECMA-48 §8.2 (C0 set) / ASCII / ECMA-6

参数

BS (0x08)退格 —— 光标左移 1
HT (0x09)水平制表 —— 到下一个 tab 停位
LF (0x0a)换行 —— 向下 1 行
CR (0x0d)回车 —— 到第 1 列
BEL (0x07)响铃 —— 可闻/可见提示;OSC 终止符

示例

bash
printf '\rprogress: 50%%\r'   # CR redraws current line\nprintf 'beep\a\n'           # BEL rings the bell
python
import sys, time\nfor i in range(101):\n  sys.stdout.write(f'\r{i}%'); sys.stdout.flush(); time.sleep(0.02)
go
fmt.Print("\rprogress: 50%\r")
javascript
process.stdout.write('\rprogress: 50%\r')
c
printf("\rprogress: 50%%\r");

终端支持

xterm
支持
Linux console (fbcon)
支持
macOS Terminal.app
支持
iTerm2
支持
Windows Terminal
支持
cmd.exe / ConPTY
支持
kitty
支持
alacritty
支持
WezTerm
支持
Ghostty
支持
GNOME Terminal
支持
Konsole
支持
tmux
不支持
GNU screen
不支持

相关序列