介绍
Asciinema是一种轻巧且非常有效的替代方法Script
终端会话记录器。它允许您记录,重放和共享JSON格式的终端会话记录。与诸如Recordmydesktop,Simplescreenrecorder,Vokoscreen或Kazam之类的台式录像机相比,主要优点是Asciinema将所有标准终端输入,输出和错误记录为带有ANSI转义码的纯ASCII文本。
结果,即使对于更长的终端会话,JSON格式文件的大小也很小。此外,JSON格式使用户能够通过简单的文件传输在公共网站上作为嵌入式HTML代码的一部分来共享Asciinema JSON输出文件,或者使用asciinema帐户在Asciinema.org上共享它。最后,如果您在终端会话中犯了一些错误,可以使用任何文本编辑器来回溯地编辑录制的终端会话,也就是说,如果您了解ANSI转义代码语法的方式。
困难
简单
约定
标准存储库安装
asciinema很可能作为分发存储库的一部分进行安装。但是,如果您的系统上没有Asciinema,或者您希望安装最新版本,则可以使用Linuxbrew软件包管理器来执行Asciinema安装,如下面“从源代码安装”部分所述。
Arch Linux
# pacman -S asciinema
德比安
# apt install asciinema
的Ubuntu
$ sudo apt install asciinema
软呢帽
$ sudo dnf install asciinema
从源安装
从源代码安装最新版本的Asciinema的最简单和推荐的方法是使用Linuxbrew软件包管理器。
先决条件
以下先决条件列表满足了Linuxbrew和Asciinema的依赖关系要求。
- Git
- 海湾合作委员会
- 使
- 红 gems
在继续进行Linuxbrew安装之前,请确保以上软件包已在Linux系统上安装。
Arch Linux
# pacman -S git gcc make ruby
德比安
# apt install git gcc make ruby
的Ubuntu
$ sudo apt install git gcc make ruby
软呢帽
$ sudo dnf install git gcc make ruby
CentOS的
# yum install git gcc make ruby
Linuxbrew安装
Linuxbrew软件包管理器是Apple MacOS操作系统上使用的流行Homebrew软件包管理器的分支。 Homebrew以其易用性而闻名,不久之后,当我们使用Linuxbrew安装Asciinema时,将看到这一点。运行bellow命令以在Linux发行版上安装Linuxbrew:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"
Linuxbrew现在已安装在$HOME/.linuxbrew/
。剩下的就是使其成为可执行文件的一部分PATH
环境变量。
$ echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >>~/.bash_profile
$ . ~/.bash_profile
要确认Linuxbrew安装,可以使用brew
查询其版本的命令:
$ brew --version
Homebrew 1.1.7
Homebrew/homebrew-core (git revision 5229; last commit 2017-02-02)
辅助安装
现在安装了Linuxbrew,Ascinema的安装应该很容易,因为它是单个one-liner:
$ brew install asciinema
检查asciinema安装的正确性:
$ asciinema --version
asciinema 1.3.0
录制终端会话
在完成所有辛苦的安装工作之后,终于可以找点乐子了。 Asciinema是一款非常易于使用的软件。实际上,当前的1.3版只有很少的命令行选项可用,其中之一是--help
。
让我们首先使用rec
选项。下列linux命令将开始录制您的终端会话,之后您可以选择放弃录制或将其上传到asciinema.org网站上以备将来参考。
$ asciinema rec
一旦运行了上面的命令,就会通知您您的腹痛记录会话已经开始,并且可以通过输入以下内容来停止记录CTRL+D
按键顺序或执行exit
命令。如果您使用的是Debian /Ubuntu /Mint Linux,则可以尝试将其作为您的第一个asciinema记录:
$ su
Password:
# apt install sl
# exit
$ sl
输入最后一个退出命令后,系统将提示您:
$ exit
~ Asciicast recording finished.
~ Press <Enter> to upload, <Ctrl-C> to cancel.
https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4
如果您不想将自己的超级秘密kung-fu命令行技能上传到asciinema.org,则可以选择将Asciinema录音存储为JSON格式的本地文件。例如,以下的ASCII记录将被存储为/tmp/my_rec.json
:
$ asciinema rec /tmp/my_rec.json
另一个非常有用的子午线功能是时间调整。如果您碰巧写得慢,或者您可能正在执行多任务,那么输入和执行命令之间的时间会大大延长。 Asciinema记录您的击键real-time,这意味着您进行的每一次暂停都会反映出所生成视频的时长。采用-w
选项以缩短两次击键之间的时间。例如,以下linux命令将两次按键之间的时间缩短为0.2秒:
$ asciinema rec -w 0.2
重播录制的终端会话
有两个选项可以重播录制的终端会话。首先,直接从asciinema.org玩您的终端会话。也就是说,前提是您之前已将录音上传到asciinema.org,并且您具有有效的URL:
$ asciinema play https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4
或者,使用本地存储的JSON文件:
$ asciinema play /tmp/my_rec.json
采用wget
命令来下载您以前上传的录音。只需添加.json
到您现有的网址:
$ wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json
$ asciinema play steam_locomotive.json
将视频嵌入为HTML
最后,Asciinema还附带了stand-alone JavaScript播放器。这意味着可以很轻松地在网站上共享终端会话记录。以下几行用一个简单的例子说明了这个想法index.html
码。首先,下载所有必要的部分:
$ cd /tmp/
$ mkdir steam_locomotive
$ cd steam_locomotive/
$ wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json
$ wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.css
$ wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.js
接下来,创建一个新的/tmp/steam_locomotive/index.html
包含以下内容的文件:
<html> <head> <link rel="stylesheet" type="text/css" href="./asciinema-player.css" /> </head> <body> <asciinema-player src="./steam_locomotive.json" cols="80" rows="24"></asciinema-player> <script src="./asciinema-player.js"></script> </body> </html>
准备就绪后,打开您的Web浏览器,按CTRL + O并打开新创建的/tmp/steam_locomotive/index.html
文件。结果应类似于以下示例视频:
结论
如前所述,使用Asciinema录像机录制终端会话的主要优势是微小的输出文件,这使您的视频非常易于共享。上面的示例生成了一个包含58472个字符的文件,即22秒视频会话的58KB。在查看输出JSON文件时,即使这个数字也被夸大了,这主要是由于我们看到Steam机车在我们的终端上奔跑。此长度的普通终端会话将产生一个较小的输出文件。
接下来,当您要在论坛上询问有关Linux配置问题的问题,并且很难解释如何重现问题时,只需运行:
$ asciinema rec
并将结果URL粘贴到您的论坛帖子中。
故障排除
腹水需要UTF-8
错误信息:
asciinema needs a UTF-8 native locale to run. Check the output of `locale` command.
解:
生成并导出UTF-8语言环境。例如:
$ localedef -c -f UTF-8 -i en_US en_US.UTF-8
$ export LC_ALL=en_US.UTF-8