asciinema 是一个由 Python 语言编写的开源的终端会话录制工具。它可以将命令行的输出内容根据时间保存在 JSON 格式的文件中,以供后续播放时使用。
同时该录制文件也可以通过 Web 浏览器进行播放(需要使用由 asciinema-player 提供的 Javascript 和 CSS 文件),或者直接上传到 asciinema.org 网站分享给其他互联网用户。
一、script 命令
script 命令是 Linux 系统自带一个的终端录制工具,功能与 asciinema 类似,可以将终端交互内容保存在本地的文本文件中,再使用 scriptreplay 命令进行播放。
录制:
script -t 2>time.file -a output.file
其中 time.file 用于保存时间信息,output.file 则用于记录终端输出的内容及光标的移动等。
录制完成时使用 exit 命令或者 Ctrl+D 终止录制。
播放:
scriptreplay time.file output.file
二、asciinema 本地录制
asciinema 安装比较简单,直接使用 pip 命令即可:
$ pip install asciinema
可使用如下命令将终端内容录制到本地文件中:
$ asciinema rec demo.cast
完成后使用 exit 或 Ctrl+D 结束录制。
使用如下命令播放前面录制的内容:
$ asciinema play demo.cast
播放时可使用 -s 选项控制回放的速度,其中 n 为表示倍率的数字,数值越大播放速度越快。
其他选项的使用方法可通过 asciinema rec -h 或 asciinema play -h 命令查看帮助信息。
三、浏览器播放
浏览器播放录制文件需要借助 asciinema-player 项目提供的两个库文件 asciinema-player.css 和 asciinema-player.js 。
这两个文件可以从该 Github 项目的 release 中下载,也可以直接通过 CDN 链接引入。
示例 HTML 代码(注意新增的 asciinema-player 标签)如下:
播放效果如下:
asciinema play
四、上传至 asciinema.org
首先访问 asciinema.org 创建一个新账户。
再使用 asciinema auth 命令生成自己电脑独有的 ID :
$ asciinema auth
Open the following URL in a web browser to link your install ID with your asciinema.org user account:
https://asciinema.org/connect/636713f1-db74-41c5-bb45-97fc213f3c94
This will associate all recordings uploaded from this machine (past and future ones) to your account, and allow you to manage them (change title/theme, delete) at asciinema.org.
通过浏览器访问上面生成的链接完成绑定,则此台设备上使用 asciinema rec 录制的内容都将自动上传至之前创建的账户中。
录制:asciinema rec
停止录制后按下回车键自动上传至云端并返回播放链接。
asciinema: recording finished
asciinema: press to upload to asciinema.org, to save locally
View the recording at:
https://asciinema.org/a/9WlhbT4qnTr5cFWQQZNS0auIY
播放:asciinema play
个人账户界面如下:
asciinema.org
如不方便将录制内容放置于外部的公网服务器上,也可以自行搭建类似的私人服务器。参考 asciinema-server 项目,可使用 docker 快速进行部署,不再做详细说明。
注意部署成功后修改 ~/.config/asciinema/config 配置文件,添加如下内容:
[api]
url = https://your.asciinema.host
参考资料
作者:rollingstarky