当前位置: 首页>>技术教程>>正文


在Debian Linux上使用asciinema记录和重播终端会话

, ,

介绍

Asciinema是一种轻巧且非常有效的替代方法Script终端会话记录器。它允许您记录,重放和共享JSON格式的终端会话记录。与诸如Recordmydesktop,Simplescreenrecorder,Vokoscreen或Kazam之类的台式录像机相比,主要优点是Asciinema将所有标准终端输入,输出和错误记录为带有ANSI转义码的纯ASCII文本。

结果,即使对于更长的终端会话,JSON格式文件的大小也很小。此外,JSON格式使用户能够通过简单的文件传输在公共网站上作为嵌入式HTML代码的一部分来共享Asciinema JSON输出文件,或者使用asciinema帐户在Asciinema.org上共享它。最后,如果您在终端会话中犯了一些错误,可以使用任何文本编辑器来回溯地编辑录制的终端会话,也就是说,如果您了解ANSI转义代码语法的方式。

困难

简单

约定

  • -要求给出linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo命令
  • $-要求给出linux命令以普通非特权用户身份执行

标准存储库安装

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9127.html,未经允许,请勿转载。