如何在 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 上安裝:
# pacman -S asciinema
在 Debian 上安裝:
# apt install asciinema
在 Ubuntu 上安裝:
$ sudo apt install asciinema
在 Fedora 上安裝:
$ sudo dnf install asciinema
從原始碼安裝
最簡單並且值得推薦的方式是使用 Linuxbrew 包管理器,從原始碼安裝最新版本的 Asciinema 。
前提條件
下面列出的前提條件是安裝 Linuxbrew 和 Asciinema 需要滿足的依賴關係:
- git
- gcc
- make
- ruby
在安裝 Linuxbrew 之前,請確保上面的這些包都已經安裝在了你的 Linux 系統中。
在 Arch Linux 上安裝 ruby:
# pacman -S git gcc make ruby
在 Debian 上安裝 ruby:
# apt install git gcc make ruby
在 Ubuntu 上安裝 ruby:
$ sudo apt install git gcc make ruby
在 Fedora 上安裝 ruby:
$ sudo dnf install git gcc make ruby
在 CentOS 上安裝 ruby:
# yum install git gcc make ruby
安裝 Linuxbrew
Linuxbrew 包管理器是蘋果的 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
選項來錄製終端會話。下面的命令將會開始錄製終端會話,之後,你將會有一個選項來丟棄已錄製記錄或者把它上傳到 asciinema.org 網站以便將來參考。
$ asciinema rec
執行上面的命令以後,你會注意到, Asciinema 已經開始錄製終端會話了,你可以按下 CTRL+D
快捷鍵或執行 exit
命令來停止錄製。如果你使用的是 Debian/Ubuntu/Mint Linux 系統,你可以像下面這樣嘗試進行第一次 asciinema 錄製:
$ su
Password:
# apt install sl
# exit
$ sl
一旦輸入最後一個 exit
命令以後,將會詢問你:
$ 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
選項來縮短按鍵的時間間隔。比如,下面的命令將按鍵的時間間隔縮短為 0.2 秒:
$ asciinema rec -w 0.2
回放已錄製終端會話
有兩種方式可以來回放已錄製會話。第一種方式是直接從 asciinema.org 網站上播放終端會話。這意味著,你之前已經把錄製會話上傳到了 asciinema.org 網站,並且需要提供有效連結:
$ 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 還帶有一個獨立的 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 錄製器來錄製終端會話最主要的優點是它的輸出檔案非常小,這使得你的影片很容易分享出去。上面的例子產生了一個包含 58472 個字元的檔案,它是一個只有 58 KB 大 小的 22 秒終端會話影片。如果我們檢視輸出的 JSON 檔案,會發現甚至這個數字已經非常大了,這主要是因為一個 “蒸汽機車” 已經跑過了終端。這個長度的正常終端會話一般會產生一個更小的輸出檔案。
下次,當你想要在一個論壇上詢問關於 Linux 配置的問題,並且很難描述你的問題的時候,只需執行下面的命令:
$ asciinema rec
然後把最後的連結貼到論壇的帖子裡。
故障排除
在 UTF-8 環境下執行 asciinema
錯誤資訊:
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
via: https://linuxconfig.org/record-and-replay-terminal-session-with-asciinema-on-linux
作者:Lubos Rendek 譯者:ucasFL 校對:wxy
相關文章
- Linux終端回話記錄和回放工具 - asciinema使用總結LinuxASCII
- Linux下,終端錄製-asciinemaLinuxASCII
- Asciinema:在雲端記錄並分享你的終端會話ASCII會話
- ❖ 終端錄屏程式`asciinema`ASCII
- 在 Linux 上記錄和重放終端會話活動Linux會話
- 如何在 Linux 上錄製你的終端操作Linux
- Asciinema - 終端日誌記錄神器,開發者的福音ASCII
- 如何在 Linux 終端中連線使用 WiFi?LinuxWiFi
- 如何在Linux中使用Shell指令碼終止使用者會話?Linux指令碼會話
- 流量錄製回放工具jvm-sandbox-repeater入門篇——錄製和回放JVM
- Linux終端會話實時共享(kibitz)Linux會話
- 通過Linux命令實現螢幕錄製和回放Linux
- 如何在Linux終端中展示幻燈片Linux
- [進行中] Elasticsearch 終極教程——目錄Elasticsearch
- 如何在Linux終端同時執行多個Linux命令Linux
- Linux 終端複用器tmux,實現任務後臺執行,即會話不間斷,踩坑及使用要點記錄Linux會話
- 在Linux中,如何在Linux中使用LXD進行容器管理?Linux
- Linux終端記錄神器Linux
- 5種在Linux終端中進行算術運算的方法Linux
- screen 命令示例:管理多個終端會話會話
- 如何在 Ubuntu 中更改預設終端Ubuntu
- 在Linux中,如何在Linux中進行配置管理和自動化部署?Linux
- 如何在 Linux 桌面上使用 Gifine 錄製 GIF 動畫?Linux動畫
- 如何在終端介面藉助圖形化工具進行資料分析
- linux 技巧:使用 screen 管理你的遠端會話Linux會話
- 如何在Linux中進行檔案切割操作?Linux
- 怎麼確保終端使用者在Oracle資料庫中只有一個會話Oracle資料庫會話
- Linux下使用script命令記錄終端操作顯示Linux
- 在Linux中,如何在Linux中使用Ansible進行自動化部署?Linux
- C# 螢幕操作錄製與回放C#
- 使用screen管理遠端會話會話
- 在Linux中,如何在Linux中進行資源配額管理?Linux
- 在Linux中,如何在Linux中進行系統映象管理?Linux
- 如何使用scp進行遠端複製檔案?
- RERAN:安卓系統的定時和點選的錄製和回放——(2)安卓
- 如何在後臺執行 Linux 命令並且將程式脫離終端Linux
- 如何在Linux中複製文件Linux
- UI 自動化錄製與回放系統UI