Asciinema 一个轻量级的终端录屏工具 - 开始使用(1/7)

Asciinema是一个非常有趣的轻量级终端录屏工具。它和其他录屏软件相比的话显著特点就是轻量级。
正如它的名字asciinema。它使用字符来记录终端的输入和输出。而其他的录屏软件通常存储的是二进制(专有格式或MP4等)视频格式。

Asciinema由以下几部分组成:

和视频录制软件相比较的话,Asciinema有以下几个优点:

  • 使用字符存储终端记录,存储的文件非常小。
  • 可以在本地回放录屏内容。
  • 可以复制回放的内容,通常的录屏软件都做不到这一点。
  • 可以在博客、社交平台等嵌入播放器回放录屏内容。

当然,它还有一些不足之处:

  • 只支持LinuxmacOS*BSD,不支持Windows
  • 移动端支持有些欠缺:
    • 因为不能自适应屏幕大小,所以播放窗口显示不全。
    • 不支持全屏

这是一个官方的示例嵌入到博客系统的效果:

它的体验和视频录制软件没什么区别。播放、暂停、全屏、拖动进度条到某个时间点,甚至还可以复制播放器中的内容。

如何安装

安装Asciinema没有特殊的必要条件。因为Asciinema使用Python开发的,所以在你的系统中Python环境是必须的。虽然官方并没有说明Python的具体版本,我想Python3应该是必须的。其他必要条件就是不支持Windows。再次强调Asciinema不支持Windows

安装操作非常简单,官方有一个详细的安装指南。找到对应的操作系统类型,根据安装指南进行安装即可。

比如在macOS中,我使用Homebrew安装:

1
brew install asciinema

如果找不到对应的操作系统,可以使用PIP安装。官方文档在Installing via Pip部分说明了如何安装。

还可以在Docker容器中运行:

1
docker run --rm -ti -v "$HOME/.config/asciinema":/root/.config/asciinema asciinema/asciinema

尝试

这里通过运行几种类型的命令来验证体验Asciinema究竟如何。

  • 一些简单的命令。比如:cat,echo
  • 带有管道符|组合的命令。比如:curl | python | less
  • 终端编辑器。比如:nano
  • 需要输入密码的命令。比如:mysql
  • 实时回显的命名。比如:htop

所有的验证体验都在Docker环境中进行,下面docker-compose文件提供了一些便利。

如果本机没有安装Docker环境,请参照Docker的官方文档。 安装DockerDocker Compose

将上面的内容保存到名为docker-compose.yml的文件中,执行命令如下:

1
docker-compose up -d

然后,进入到asciinema容器中:

1
docker-compose exec asciinema /bin/bash

进入容器后,启动asciinema开始录屏

1
asciinema rec

asciinema会提示asciicast文件的临时存储位置和如何退出录屏。

1
2
3
root@970c3b167b51:~# asciinema rec
asciinema: recording asciicast to /tmp/tmppz9xa6fp-ascii.cast
asciinema: press <ctrl-d> or type "exit" when you're done

首先,执行以下命令更新系统并安装一些相关的软件:

1
2
3
apt update && \
apt upgrade -y && \
apt install -y curl less nano mysql-client htop

然后,依次实行以下命令查看效果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# easy command
cat /etc/os-release
echo `date`

# pipeline command
curl https://swapi.dev/api/people/ | python3 -m json.tool | less

# editor
nano test.txt

# stdin password
mysql -h mysql -u root -p

# the htop command
htop

输入exit退出asciinema录屏:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
root@970c3b167b51:~# exit
exit
asciinema: recording finished
asciinema: press <enter> to upload to asciinema.org, <ctrl-c> to save locally
exit
View the recording at:

    https://asciinema.org/a/5wE9RRrFR3jK4ZUdaEMKPykv8

This installation of asciinema recorder hasn't been linked to any asciinema.org
account. All unclaimed recordings (from unknown installations like this one)
are automatically archived 7 days after upload.

If you want to preserve all recordings made on this machine, connect this
installation with asciinema.org account by opening the following link:

    https://asciinema.org/connect/ec162607-9181-4eec-b92f-7b3e4f7e5bba

asciinema会有一个提示,是选择<enter>退出,还是<ctrl-c>退出。
如果直接<enter>退出的话,录屏文件将会无主的形式上传到Asciinema官网的仓库。直到通过提示的链接去认领,否则,7天之后将会自动归档。<ctrl-c>的话,不会将录屏文件上传到Asciinema官网的仓库。

总结

一句话来总结就是:Perfect!
屏幕的整个交互内容都被正确的记录下来了。而且,使用mysql-client连接MySQL时,输入的密码也没有被记录下来。即使在asciicast原始文件中也找不到。 这一点非常赞。🎏

1
2
3
4
5
[319.27171, "o", "Enter password: "]
[321.62039, "o", "\r\n"]
[321.648941, "o", "Welcome to the MySQL monitor.  Commands end with ; or \\g.\r\n"]
[321.649434, "o", "Your MySQL connection id is 2\r\nServer version: 5.7.30 MySQL Community Server (GPL)\r\n\r\nCopyright (c) 2000, 2021, Oracle and/or its affiliates.\r\n\r\nOracle is a registered trademark of Oracle Corporation and/or its\r\naffiliates. Other names may be trademarks of their respective\r\nowners.\r\n\r\n"]
[321.650238, "o", "Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\r\n\r\nmysql> "]

回放在此: