在 Linux 上使用 Asciinema 记录和重放终端会话
介绍
Asciinema 是 Script
终端会话记录器的轻量级且非常高效的替代品。它允许您录制、重播和共享 JSON 格式的终端会话录音。 与 Recordmydesktop、Simplescreenrecorder、Vokoscreen 或 Kazam 等桌面记录器相比,Asciinema 的主要优点是,Asciinema 将所有标准终端输入、输出和错误记录为 带有 ANSI 转义码的纯 ASCII 文本。
因此,即使对于较长的终端会话,JSON 格式文件的大小也很小。此外,JSON 格式使用户能够通过简单文件共享 Asciinema JSON 输出文件 作为嵌入 HTML 代码的一部分在公共网站上传输,或使用 asciinema 帐户在 Asciinema.org 上共享。最后,如果您在终端会话期间犯了一些错误,您的 记录的终端会话可以使用任何文本编辑器进行回顾性编辑,前提是您了解 ANSI 转义码语法。
困难
简单的
惯例
# – 要求以root权限直接以root用户身份或使用
sudo
命令执行给定的linux命令$ – 要求以常规非特权用户身份执行给定的 Linux 命令
标准存储库安装
asciinema 很可能可以作为分发存储库的一部分进行安装。但是,如果 Asciinema 在您的系统上不可用或者您希望安装最新版本,您可以使用 Linuxbrew 软件包管理器用于执行 Asciinema 安装,如下面“从源代码安装”部分中所述。
架构Linux
# pacman -S asciinema
德班
# apt install asciinema
乌班图
$ sudo apt install asciinema
软呢帽
$ sudo dnf install asciinema
从源代码安装
从源代码安装最新 Asciinema 版本的最简单且推荐的方法是使用 Linuxbrew 包管理器。
先决条件
以下先决条件列表满足 Linuxbrew 和 Asciinema 的依赖性要求。
git
海湾合作委员会
制作
红宝石
在继续安装 Linuxbrew 之前,请确保上述软件包已安装在您的 Linux 系统上。
架构Linux
# pacman -S git gcc make ruby
德班
# apt install git gcc make ruby
乌班图
$ sudo apt install git gcc make ruby
软呢帽
$ sudo dnf install git gcc make ruby
中央操作系统
# yum install git gcc make ruby
Linuxbrew安装
Linuxbrew 包管理器是 Apple MacOS 操作系统上使用的流行 Homebrew 包管理器的一个分支。 Homebrew 以其易用性而闻名,当我们使用时很快就会看到这一点 Linuxbrew 安装 Asciinema。运行以下命令在您的 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)
Asciinema安装
现在安装了 Linuxbrew,Asciinema 的安装应该很简单:
$ brew install asciinema
检查asciinema安装是否正确:
$ asciinema --version
asciinema 1.3.0
录制终端会话
经过所有艰苦的安装工作后,终于是时候享受一些乐趣了。 Asciinema 是一个非常易于使用的软件。事实上,当前的1.3版本只有很少的命令行选项 可用,其中之一是 --help
。
让我们首先使用 rec
选项记录终端会话。以下 linux 命令将开始记录您的终端 之后您可以选择放弃录音或将其上传到 asciinema.org 网站以供将来参考。
$ asciinema rec
运行上述命令后,您将收到通知,您的 asciinema 录制会话已开始,并且可以通过输入 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
如果您不想将超级秘密功夫命令行技能上传到 asciinema.org,您可以选择将 Asciinema 记录存储为 JSON 格式的本地文件。例如, 以下 asciinema 记录将存储为 /tmp/my_rec.json
:
$ asciinema rec /tmp/my_rec.json
另一个非常有用的 asciinema 功能是时间修剪。如果您碰巧是一个写得很慢的人,或者您正在处理多任务,那么输入命令和执行命令之间的时间可能会很长。 大大伸展。 Asciinema 实时记录您的击键,这意味着您的每次暂停都会反映在生成的视频的长度上。使用-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
添加到您现有的 URL:
$ wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json
$ asciinema play steam_locomotive.json
将视频嵌入为 HTML
最后,Asciinema 还附带一个独立的 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>
准备就绪后,打开网络浏览器,按 CTRL+O 并打开新创建的 /tmp/steam_locomotive/index.html
文件。结果应类似于下面的示例视频:
结论
如前所述,使用 Asciinema 录制器录制终端会话的主要优点是输出文件很小,这使得您的视频非常容易共享。上面的例子 生成了一个包含 58 472 个字符的文件,即 22 秒视频会话的大小为 58KB。在查看输出 JSON 文件时,即使这个数字也被大大夸大了,主要是因为我们有 看到一辆蒸汽机车冲过我们的航站楼。此长度的正常终端会话应生成小得多的输出文件。
接下来,当您要在论坛上询问有关 Linux 配置问题并且很难解释如何重现您的问题时,只需运行:
$ asciinema rec
并将生成的 URL 粘贴到您的论坛帖子中。
故障排除
asciinema 需要 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