使用 asciinema 进行终端录屏

What

最近在看 kali 的工具文档时,时不时会看到有些工具的演示示例是以 ASCII 字符动态呈现的,并且可以实时复制:

于是去了解了下,发现使用的是 asciinema,一个用 rust 编写的开源终端记录器,可以录制终端的实时画面,还可以将录制文件托管到 asciinema.org 并获取在线链接(免费的)以供所有人访问或者嵌入网页,还可以通过 agg 工具将录制文件转换为 GIF。

How to do

安装

1
2
3
4
5
6
7
8
# apt(Debian, Ubuntu, Kali)
sudo apt install asciinema

# pacman (Arch, Manjaro)
sudo pacman -S asciinema

# homebrew (macOS)
brew install asciinema

录制和播放

  1. 录制
1
asciinema rec demo.cast

这会开启一个新的终端,所有内容都会被保存到 demo.cast 文件中。

退出录制按 Ctrl + D 或输入 exit

  1. 播放
1
asciinema play demo.cast

暂停播放按空格,退出播放按 Ctrl + C

分享

首先需要使用邮箱注册账户:https://asciinema.org/login/new

注册完成后再到终端使用 asciinema auth 命令获取绑定账号的 URL:

复制 URL 并通过浏览器访问,即可绑定机器,之后本机所有的录制上传后都会保存在绑定的账号。

上传录制文件的命令如下:

1
asciinema upload demo.cast

上传完成后会生成关联的地址,默认情况下所有知道此地址的人都可查看录制内容:

转换为 GIF 动图

首先需要安装 agg(asciinema gif generator),进入 agg 的项目 release 页面,下载符合自己操作系统架构的版本并进行安装。

x86 架构的 linux 安装示例如下:

1
2
3
wget https://github.com/asciinema/agg/releases/download/v1.4.3/agg-x86_64-unknown-linux-gnu -O agg
chmod a+x agg
sudo mv agg /usr/local/bin

基本使用方式如下:

1
2
agg demo.cast demo1.gif  # 转换本地文件
agg https://asciinema.org/a/N8Xc6TQUnpNZbbXAUnNuOKwyh demo2.gif # 转换在线文件

嵌入网页

相关代码可在录制文件上传后进入管理页面获取:

注意:hexo 的 post 页面渲染器可能无法渲染 script 标签,建议使用 page 页面或者转换成 GIF 后引入。

以独立播放器的形式嵌入网页:

1
<script src="https://asciinema.org/a/bJMOlPe5F4mFLY0Rl6fiJSOp3.js" id="asciicast-bJMOlPe5F4mFLY0Rl6fiJSOp3" async></script>

以图片链接的形式嵌入网页:

1
<a href="https://asciinema.org/a/645350" target="_blank"><img src="https://asciinema.org/a/645350.svg" /></a>