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

简介:

如何在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
目录
相关文章
|
1月前
|
运维 Java Linux
Linux 下命令后台运行秘籍:无惧终端断开的魔法
本文详细介绍了在 Linux 系统下使命令不受终端断开影响、持续在后台运行的多种方法及其原理。包括使用 `nohup`、`setsid`、括号括起来、作业调度和 `screen` 等技巧,帮助读者提高工作效率,确保任务不被意外中断。
64 0
Linux 下命令后台运行秘籍:无惧终端断开的魔法
|
2月前
|
Shell Linux API
C语言在linux环境下执行终端命令
本文介绍了在Linux环境下使用C语言执行终端命令的方法。首先,文章描述了`system()`函数,其可以直接执行shell命令并返回结果。接着介绍了更强大的`popen()`函数,它允许程序与命令行命令交互,并详细说明了如何使用此函数及其配套的`pclose()`函数。此外,还讲解了`fork()`和`exec`系列函数,前者创建新进程,后者替换当前进程执行文件。最后,对比了`system()`与`exec`系列函数的区别,并针对不同场景推荐了合适的函数选择。
|
3月前
|
Linux Shell 数据安全/隐私保护
Linux用户账户管理精髓:创建、删除、密码与会话管理全攻略
本文档介绍了Linux系统中用户账户管理的关键操作,包括创建与删除用户、设置及修改密码、用户切换与会话管理等内容。通过理论说明与具体命令示例,如使用`useradd`、`userdel`、`passwd`和`su`等命令,帮助系统管理员更好地掌握这些基本技能,从而有效提升系统的安全性和管理效率。此外,还介绍了如何利用`screen`等工具进行会话管理,确保即便在网络中断的情况下也能维持会话的持续运行。
84 3
|
3月前
|
存储 安全 Linux
|
3月前
|
NoSQL Linux 开发工具
Linux终端革命:掌握这些命令,让工作速度飞跃提升!
本文介绍了Linux命令行操作效率提升的关键技巧,包括光标移动快捷键、Vim编辑器的高效使用、快速切换目录、跨服务器文件拷贝等。通过掌握`Ctrl + a`、`Ctrl + e`等快捷键可加快命令编辑;Vim的`:set nu`、`:20`等命令能提升文本编辑速度;`cd -`命令可在最近访问过的目录间快速切换;利用`nc`或`python -m SimpleHTTPServer`可实现在无密码权限时的文件传输。这些技巧帮助用户提高工作效率,简化日常工作流程。
88 1
|
3月前
|
Linux 数据安全/隐私保护
【Deepin 20 系统】Linux系统在开机时未进入系统前进入命令行界面(终端)
如何在Deepin 20系统启动时进入命令行界面(终端),通过在GRUB界面中编辑内核启动参数来引导系统进入多用户文本模式(运行级别3)。
282 1
|
3月前
|
存储 安全 Linux
Linux新手必备:关机重启、终端操作与快捷键大全
本文专为Linux新手打造,提供全面实用的指南,涵盖关机与重启命令(如`shutdown -h now`立即关机、`reboot`重启)、终端操作技巧(如使用`clear`清屏及Ctrl+L快捷键)、命令历史管理(利用`history`查看过往命令)及高效快捷键(如Ctrl+C复制、Ctrl+V粘贴),助您迅速掌握核心技能,成为Linux操作高手。
154 0
|
4月前
|
Ubuntu Linux 测试技术
Linux终端玩转bastet俄罗斯方块小游戏
【7月更文挑战第14天】Linux终端玩转bastet俄罗斯方块小游戏
86 7
|
3月前
|
Ubuntu Linux Shell
Linux 终端入门
Linux 终端入门
30 0
|
3月前
|
Linux
Linux——如何生成一个好看的终端欢迎语
Linux——如何生成一个好看的终端欢迎语
26 0