Skip to content
0
/ Guide/ANSI
1/22/2026
2m
AI 摘要

本文介绍如何从 terminal 获取 ANSI 转义码,通过重定向命令输出和 script 工具捕获带颜色的终端输出,并说明 FORCE_COLOR=true2>&1 的用途,用于保存 ANSI 格式内容到文件。

ANSI

ANSI means American National Standards Institute

ANSI 转义码

从 terminal 获取 ANSI 码

例如下面的效果预览,可以在代码块中展示带有颜色的字符:

➜ unbuild -h
A unified javascript build system (unbuild v2.0.0)

USAGE unbuild [OPTIONS] [DIR]

ARGUMENTS

  DIR    The directory to build

OPTIONS

       --stub    Stub build
     --minify    Minify build
  --sourcemap    Generate sourcemaps (experimental)

其原理就是 ansi 代码块,能够展示合法的 ANSI 格式字符,所以我们的目标就是得到原始的 ANSI 字符输出,上面的效果是通过下面的代码块渲染出来的

```ansi
➜ unbuild -h
A unified javascript build system (unbuild v2.0.0)

USAGE unbuild [OPTIONS] [DIR]

ARGUMENTS

  DIR    The directory to build

OPTIONS

       --stub    Stub build
     --minify    Minify build
  --sourcemap    Generate sourcemaps (experimental)
```

为了得到原始的 ANSI 内容,我们可以将输出流重定向到文件,还是以 unbuild 这个工具为例:

$ FORCE_COLOR=true unbuild -h > output.ansi

重定向后是否能够是否能够输出带颜色的字符,取决于具体的 CLI 工具,但通常可以通过 FORCE_COLOR=true 设定,

多个命令的输出

也可以利用 macOs 系统下自带的 script 命令,开启监听

$ script
Script started, output file is typescript
$ unbuild -h
[22:54:53] A unified javascript build system (unbuild v2.0.0)

USAGE unbuild [OPTIONS] [DIR]

ARGUMENTS

  DIR    The directory to build

OPTIONS

       --stub    Stub build
     --minify    Minify build
  --sourcemap    Generate sourcemaps (experimental)
# control + d (keyboard shortcuts)
$ ctrl^d
Script done, output file is typescript

会将内容输出到 typescript 文件中,如果想要结束监听,需要按下 control + d 快捷键

stderr 流的输出

通过在命令中加上 2>&1 可以将错误流也输出到文件当中

$ FORCE_COLOR=true unbuild -h > output.ansi 2>&1

Released under the MIT License.