如何在Linux中使用Asciinema进行录制和回放终端会话

简介

Asciinema 是一个轻量并且非常高效的终端会话录制器。使用它可以录制、回放和分享 JSON 格式的终端会话记录。与一些桌面录制器,比如 Recordmydesktop、Simplescreenrecorder、Vokoscreen 或 Kazam 相比,Asciinema 最主要的优点是,它能够以通过 ASCII 文本以及 ANSI 转义码编码来录制所有的标准终端输入、输出和错误信息。

事实上,即使是很长的终端会话,录制出的 JSON 格式文件也非常小。另外,JSON 格式使得用户可以利用简单的文件转化器,将输出的 JSON 格式文件嵌入到 HTML 代码中,然后分享到公共网站或者使用 asciinema 账户分享到 Asciinema.org 。最后,如果你的终端会话中有一些错误,并且你还懂一些 ASCI 转义码语法,那么你可以使用任何编辑器来修改你的已录制终端会话。

难易程度:

很简单!

标准终端:

  • # - 给定命令需要以 root 用户权限运行或者使用 sudo 命令
  • $ - 给定命令以常规权限用户运行

从软件库安装

通常, asciinema 可以使用你的发行版的软件库进行安装。但是,如果不可以使用系统的软件库进行安装或者你想安装最新的版本,那么,你可以像下面的“从源代码安装”部分所描述的那样,使用 Linuxbrew 包管理器来执行 Asciinema 安装。

在 Arch Linux 上安装:


  1. # pacman -S asciinema 

在 Debian 上安装:


  1. # apt install asciinema 

在 Ubuntu 上安装:


  1. $ sudo apt install asciinema 

在 Fedora 上安装:


  1. $ sudo dnf install asciinema 

从源代码安装

最简单并且值得推荐的方式是使用 Linuxbrew 包管理器,从源代码安装最新版本的 Asciinema 。

前提条件

下面列出的前提条件是安装 Linuxbrew 和 Asciinema 需要满足的依赖关系:

  • git
  • gcc
  • make
  • ruby

在安装 Linuxbrew 之前,请确保上面的这些包都已经安装在了你的 Linux 系统中。

在 Arch Linux 上安装 ruby:


  1. # pacman -S git gcc make ruby 

在 Debian 上安装 ruby:


  1. # apt install git gcc make ruby 

在 Ubuntu 上安装 ruby:


  1. $ sudo apt install git gcc make ruby 

在 Fedora 上安装 ruby:


  1. $ sudo dnf install git gcc make ruby 

在 CentOS 上安装 ruby:


  1. # yum install git gcc make ruby 

安装 Linuxbrew

Linuxbrew 包管理器是苹果的 MacOS 操作系统很受欢迎的 Homebrew 包管理器的一个复刻版本。还没发布多久,Homebrew 就以容易使用而著称。如果你想使用 Linuxbrew 来安装 Asciinema,那么,请运行下面命令在你的 Linux 版本上安装 Linuxbrew:


  1. $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)" 

现在,Linuxbrew 已经安装到了目录 $HOME/.linuxbrew/ 下。剩下需要做的就是使它成为可执行 PATH 环境变量的一部分。


  1. $ echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >>~/.bash_profile
  2. $ . ~/.bash_profile 

为了确认 Linuxbrew 是否已经安装好,你可以使用 brew 命令来查看它的版本:


  1. $ brew --version
  2. Homebrew 1.1.7
  3. Homebrew/homebrew-core (git revision 5229; last commit 2017-02-02) 

安装 Asciinema

安装好 Linuxbrew 以后,安装 Asciinema 就变得无比容易了:


  1. $ brew install asciinema 

检查 Asciinema 是否安装正确:


  1. $ asciinema --versionasciinema 1.3.0 

录制终端会话

经过一番辛苦的安装工作以后,是时候来干一些有趣的事情了。Asciinema 是一个非常容易使用的软件。事实上,目前的 1.3 版本只有很少的几个可用命令行选项,其中一个是 --help 。

我们首先使用 rec 选项来录制终端会话。下面的命令将会开始录制终端会话,之后,你将会有一个选项来丢弃已录制记录或者把它上传到 asciinema.org 网站以便将来参考。


  1. $ asciinema rec 

运行上面的命令以后,你会注意到, Asciinema 已经开始录制终端会话了,你可以按下 CTRL+D 快捷键或执行 exit 命令来停止录制。如果你使用的是 Debian/Ubuntu/Mint Linux 系统,你可以像下面这样尝试进行第一次 asciinema 录制:


  1. $ su 
  2. Password: 
  3. # apt install sl 
  4. # exit 
  5. $ sl 

一旦输入最后一个 exit 命令以后,将会询问你:


  1. $ exit 
  2. ~ Asciicast recording finished. 
  3. ~ Press <Enter> to upload, <Ctrl-C> to cancel. 
  4. https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4 

如果你不想上传你的私密命令行技巧到 asciinema.org 网站,那么有一个选项可以把 Asciinema 记录以 JSON 格式保存为本地文件。比如,下面的 asciinema 记录将被存为 /tmp/my_rec.json:


  1. $ asciinema rec /tmp/my_rec.json 

另一个非常有用的 asciinema 特性是时间微调。如果你的键盘输入速度很慢,或者你在进行多任务,输入命令和执行命令之间的时间会比较长。Asciinema 会记录你的实时按键时间,这意味着每一个停顿都将反映在最终视频的长度上。可以使用 -w 选项来缩短按键的时间间隔。比如,下面的命令将按键的时间间隔缩短为 0.2 秒:


  1. $ asciinema rec -w 0.2 

回放已录制终端会话

有两种方式可以来回放已录制会话。第一种方式是直接从 asciinema.org 网站上播放终端会话。这意味着,你之前已经把录制会话上传到了 asciinema.org 网站,并且需要提供有效链接:


  1. $ asciinema play https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4 

另外,你也可以使用本地存储的 JSON 文件:


  1. $ asciinema play /tmp/my_rec.json 

如果要使用 wget 命令来下载之前的上传记录,只需在链接的后面加上 .json:


  1. $ wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json 
  2. $ asciinema play steam_locomotive.json 

将视频嵌入 HTML

最后,asciinema 还带有一个独立的 JavaScript 播放器。这意味者你可以很容易的在你的网站上分享终端会话记录。下面,使用一段简单的 index.html 代码来说明这个方法。首先,下载所有必要的东西:


  1. $ cd /tmp/ 
  2. $ mkdir steam_locomotive 
  3. $ cd steam_locomotive/ 
  4. $ wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json 
  5. $ wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.css 
  6. $ wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.js 

之后,创建一个新的包含下面这些内容的 /tmp/steam_locomotive/index.html 文件:


  1. <html> 
  2. <head> 
  3.   <link rel="stylesheet" type="text/css" href="./asciinema-player.css" /> 
  4. </head> 
  5. <body> 
  6.   <asciinema-player src="./steam_locomotive.json" cols="80" rows="24"></asciinema-player> 
  7.   <script src="./asciinema-player.js"></script> 
  8. </body> 
  9. </html> 

完成以后,打开你的网页浏览器,按下 CTRL+O 来打开新创建的 /tmp/steam_locomotive/index.html 文件。

结论

正如前面所说的,使用 asciinema 录制器来录制终端会话最主要的优点是它的输出文件非常小,这使得你的视频很容易分享出去。上面的例子产生了一个包含 58472 个字符的文件,它是一个只有 58 KB 大 小的 22 秒终端会话视频。如果我们查看输出的 JSON 文件,会发现甚至这个数字已经非常大了,这主要是因为一个 “蒸汽机车” 已经跑过了终端。这个长度的正常终端会话一般会产生一个更小的输出文件。

下次,当你想要在一个论坛上询问关于 Linux 配置的问题,并且很难描述你的问题的时候,只需运行下面的命令:


  1. $ asciinema rec 

然后把最后的链接贴到论坛的帖子里。

故障排除

在 UTF-8 环境下运行 asciinema

错误信息:


  1. asciinema needs a UTF-8 native locale to run. Check the output of `locale` command. 

解决方法: 生成并导出 UTF-8 语言环境。例如:


  1. $ localedef -c -f UTF-8 -i en_US en_US.UTF-8 
  2. $ export LC_ALL=en_US.UTF-8 

作者:Lubos Rendek

来源:51CTO

时间: 2024-08-31 09:07:36

如何在Linux中使用Asciinema进行录制和回放终端会话的相关文章

如何在 Linux 中使用 Asciinema 进行录制和回放终端会话

简介 Asciinema 是一个轻量并且非常高效的终端会话录制器.使用它可以录制.回放和分享 JSON 格式的终端会话记录.与一些桌面录制器,比如 Recordmydesktop.Simplescreenrecorder.Vokoscreen 或 Kazam 相比,Asciinema 最主要的优点是,它能够以通过 ASCII 文本以及 ANSI 转义码编码来录制所有的标准终端输入.输出和错误信息. 事实上,即使是很长的终端会话,录制出的 JSON 格式文件也非常小.另外,JSON 格式使得用户可

linux shell脚本学习录制与回放终端会话_linux shell

复制代码 代码如下: amosli@amosli-pc:~/learn$ script -t 2> timing.log -a output.session#开始录制Script started, file is output.sessionamosli@amosli-pc:~/learn$ hello1No command 'hello1' found, did you mean: Command 'hello' from package 'hello-debhelper' (main) Co

【Linux学习 】Linux使用Script命令来记录并回放终端会话

[TOC] 一.背景 在之前的博客 [Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?] 里面,我已经详细记录了每天的自动备份与清理过期备份文件的工作. 1.每天凌晨2点在Gitlab服务器上执行Gitlab备份功能. 2.每天凌晨3点在Gitlab服务器上执行scp命令将最新的Gitlab备份文件复制到远程的文件备份服务器. 3.每天凌晨4点在远程的文件备份服务器上检测备份文件的时间,自动删除超过7天的备份文件. 这个脚本从8月18日开始运

如何在Linux中列出通过RPM或者DEB包安装的文件

你是否想要了解安装包中各个文件在 Linux 系统中安装(位于)的位置?我们将在本文介绍如何列出文件的来源,或存在于某个特定包或者一组软件包中的文件. 这篇文章可以帮你轻松地找到重要的软件包文件,如配置文件.帮助文档等.我们来看看找出文件在哪个包中或者从哪个包中安装的几个方法: 如何列出 Linux 中全部已安装软件包的文件 你可以使用 repoquery 命令,它是 yum-utils 的一部分,用来列出给定的软件包在 CentOS/RHEL 系统上安装的文件. 要安装并使用 yum-util

逝去的纪念:如何在Linux中同步微软 OneDrive

逝去的纪念:如何在Linux中同步微软 OneDrive [编者注]:本文译文完成之后不久,OneDrive 就成了中国人的昨日黄花了.编者想了想,还是发出来罢,仅以此文纪念我们逝去的这个.那个.以及这些和那些.也许若干年后我们回忆起来,我们曾经有过那么多那些,而当时却挑三拣四,没有珍惜,如果再给我一次机会-- OneDrive(以前称为SkyDrive)是微软的一个广受欢迎的云存储产品.目前OneDrive为每一个新注册用户提供7GB免费存储空间.正如你所想,OneDrive与微软其他软件产品

Linux有问必答-如何在Linux中安装Go语言

Linux有问必答-如何在Linux中安装Go语言 Go (也叫 "golang")是一款由Google最初开发的编程语言.它自诞生就有几个设计原则:简单性.安全性和速度.Go语言发行版拥有各种调试.测试.调优和代码审查工具.如今Go语言和它的工具链在大多数Linux发行版的基础仓库都可用,用默认的包管理器就可以安装. 在Ubuntu.Debian 或者 Linux Mint上安装Go语言 下面是在基于Debian的发行版上使用apt-get来安装Go语言和它的开发工具. $ sudo

如何在Linux中压缩及解压缩.bz2文件

对文件进行压缩,可以通过使用较少的字节对文件中的数据进行编码来显著地减小文件的大小,并且在跨网络的文件的备份和传送时很有用. 另一方面,解压文件意味着将文件中的数据恢复到初始状态. Linux 中有几个文件压缩和解压缩工具,比如gzip.7-zip.Lrzip.PeaZip 等等. 本篇教程中,我们将介绍如何在 Linux 中使用 bzip2 工具压缩及解压缩.bz2文件. bzip2 是一个非常有名的压缩工具,并且在大多数主流 Linux 发行版上都有,你可以在你的发行版上用合适的命令来安装它

Linux 有问必答:如何在Linux 中修复“fatal error: x264.h: No such file or directo

Linux 有问必答:如何在Linux 中修复"fatal error: x264.h: No such file or directo 提问: 我想在Linux中从源码编译视频编码程序.到那时,在编译时,我遇到了一个错误"fatal error: x264.h: No such file or directory",我该如何修复? 下面的编译错误错明你系统中没有x264开发库文件. fatal error: x264.h: No such file or directory

Linux 有问必答:如何在Linux中修复“fatal error: lame/lame.h: No such file or dir

Linux 有问必答:如何在Linux中修复"fatal error: lame/lame.h: No such file or dir 提问: 我尝试着在Linux中编译视频编码器,但是编译提示出错:"fatal error: lame/lame.h: No such file or directory", 我该如何修复这个错误? 下面的编译错误说明你的系统没有安装LAME库和它的开发文件. fatal error: lame/lame.h: No such file or