前言
今天发现一个神器asciinemac,是一种轻量级的纯文本方式的终端记录工具。可以方便地记录终端操作,并可以以动画的形式分享。官方的slogan:
Record and share your terminal sessions, the right way.
支持的平台:
- Linux
- macOS
- *BSD
以asdf-vm工具的使用为例,体验下效果:
怎么工作的?
asciinema项目由三部分组成:
- asciinema,命令行工具,用于记录终端操作
- asciinema.org,管理和分享记录作品
- javascript播放器
当在终端中运行asciinema rec命令时,asciinema开始记录终端中正在执行的命令和命令的执行结果。当记录完成后,使用Ctrl-D或输入exit结束录制,然后可选择上传录制结果到asciinema.org或生成到本地。
安装asciinema
使用Pip安装:(需要Python 3)
sudo pip3 install asciinema
使用Homebrew安装:
brew install asciinema
源码方式安装:
git clone https://github.com/asciinema/asciinema.git
cd asciinema
python3 -m asciinema --version
更多安装方式:安装方法
asciinema 使用方法
asciinema rec [fileName]
asciinema记录命令,文件名参数是可选的。当输入文件名时,退出录制时将保存记录文件至本地,否则,退出录制时会提醒选择上传至asciinema.org或保存至本地。
$ asciinema rec demo.cast
asciinema: recording asciicast to demo.cast
asciinema: press <ctrl-d> or type "exit" when you're done
退出录制:
$ exit
asciinema: recording finished
asciinema: asciicast saved to demo.cast
asciinema play [fileName]
重放已经记录的操作。
重放本地文件:
asciinema play demo.cast
重放远程文件:
asciinema play https://asciinema.org/a/jMRNwCJnmJ7UpU8Y7HxJmcoU8
asciinema cat [fileName]
一次性打印整个文件的记录结果至终端。
asciinema cat demo.cast
asciinema upload [fileName]
上传录制好的文件至asciinema.org, 然后就可以在asciinema.org上维护录制记录,便于观看和分享。
asciinema upload demo.cast
如果发布前review下效果,可通过这三步操作完成录制和上传:
- asciinema rec demo.cast
- asciinema play demo.cast
- asciinema upload demo.cast
asciinema auth
将你的install ID 和 asciinema.org 账号关联. 如果想在asciinema.org管理你的录制作品,比如改变标题、主题等,需要做账号关联操作。
如何分享
已上传至asciinema.org的录制可以通过几种形式分享。
链接分享
https://asciinema.org/a/jMRNwCJnmJ7UpU8Y7HxJmcoU8
嵌入image至html或markdown
HTML:
<a href="https://asciinema.org/a/jMRNwCJnmJ7UpU8Y7HxJmcoU8" target="_blank"><img src="https://asciinema.org/a/jMRNwCJnmJ7UpU8Y7HxJmcoU8.svg" /></a>
Markdown:
[](https://asciinema.org/a/jMRNwCJnmJ7UpU8Y7HxJmcoU8)
嵌入播放器
<script id="asciicast-jMRNwCJnmJ7UpU8Y7HxJmcoU8" src="https://asciinema.org/a/jMRNwCJnmJ7UpU8Y7HxJmcoU8.js" async></script>
生成gif和mp4
如果前面所述的分享方式不支持的情况下,为便于分享,可借助其他工具生成更通用的gif和mp4。
生成gif
需要安装工具asciicast2gif,然后设置主题、播放速度、输出文件名等,执行命令即可。
$ asciicast2gif
asciicast2gif - Generate GIF animations from asciicasts (asciinema recordings)
usage: asciicast2gif [-t theme] [-s speed] [-S scale] [-w columns] [-h rows] <input-json-path-or-url> <output-gif-path>
options:
-t <theme> color theme, one of: asciinema, tango, solarized-dark, solarized-light, monokai (default: asciinema)
-s <speed> animation speed (default: 1)
-S <scale> image scale / pixel density (default: 2)
-w <columns> clip terminal to specified number of columns (width)
-h <rows> clip terminal to specified number of rows (height)
~/code/github asciicast2gif -s 2 demo.cast demo.gif
==> Loading demo.cast...
==> Spawning PhantomJS renderer...
==> Generating frame screenshots...
==> Combining 36 screenshots into GIF file...
==> Done.
生成mp4
需要安装工具ffmpeg,将上步中的gif文件转为mp4,执行命令即可。
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
ffmpeg -i demo.gif demo.mp4