用 Asciinema 記錄你的終端會(huì)話
用這個(gè)開源的終端會(huì)話記錄器 Asciinema 來展示終端會(huì)話。
支持電話是很重要的,而且最后往往是令人滿意的,但明確的溝通行為對(duì)每個(gè)參與的人來說都是艱巨的。如果你曾經(jīng)參加過支持電話,你可能會(huì)花好幾分鐘拼出了最短的命令,并詳細(xì)解釋了空格和回車的位置。雖然直接拿過來用戶電腦的控制權(quán)往往更容易,但這并不是真正的教育的最佳方式。你可以嘗試向用戶發(fā)送一個(gè)屏幕記錄,而他們可以復(fù)制命令并粘貼到自己的終端。
Asciinema 是一個(gè)開源的終端會(huì)話記錄器。與 ??script?
?? 和 ??scriptreplay?
?? 命令類似,Asciinema 準(zhǔn)確記錄了你的終端顯示。它將你的“電影”記錄保存到一個(gè)文本文件中,然后根據(jù)需要進(jìn)行回放。你可以把你的電影上傳到 ??Asciinema.org??,就像你在互聯(lián)網(wǎng)上分享任何其他視頻一樣,你甚至可以把你的電影嵌入到網(wǎng)頁中。
安裝 Asciinema
在 Linux 上,你可以使用你的包管理器安裝 Asciinema。
在 Fedora、CentOS、Mageia 或類似系統(tǒng)上:
$ sudo dnf install asciinema
在 Debian、Linux Mint 或類似系統(tǒng)上:
$ sudo apt install asciinema
在 macOS 上,你可以用 Homebrew 安裝:
$ sudo brew install asciinema
在 BSD 和任何其它平臺(tái)上使用 ??Pkgsrc??:
$ cd /usr/pkgsrc/misc/py-asciinema
$ sudo bmake install clean
從文本中制作電影
要用 Asciinema 開始錄制,你可以使用 ??rec?
? 子命令:
$ asciinema rec mymovie.cast
asciinema: recording asciicast to mymovie.cast
asciinema: press <ctrl-d> or type "exit" when you're done
一些友好的輸出信息提醒你,你正在錄制,并告訴你如何停止:按 ??Ctrl+D?
?? 或直接輸入 ??exit?
?。
當(dāng) Asciinema 處于活動(dòng)狀態(tài)時(shí),你在終端所做的一切都會(huì)被記錄下來。這包括輸入、輸出、錯(cuò)誤、尷尬的停頓、錯(cuò)誤或成功。如果在錄制時(shí),在你的終端中查看它,它就會(huì)被剪斷。
當(dāng)你演示完終端如何工作時(shí),按 ??Ctrl+D?
?? 或輸入 ??exit?
? 來停止記錄。
在這個(gè)例子中,產(chǎn)生的文件 ??mymovie.cast?
? 是一個(gè)時(shí)間戳和動(dòng)作的集合,它用作回放所使用的腳本(像電影腳本一樣)。
{"version": 2, "width": 139, "height": 36, "timestamp": 1641457358, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}}
[0.05351, "o", "\u001b]0;seth:~\u0007"]
[0.05393, "o", "\u001b[1;31m$ \u001b[00m"]
[1.380059, "o", "e"]
[1.443823, "o", "c"]
[1.514674, "o", "h"]
[1.595238, "o", "o"]
[1.789562, "o", " "]
[2.09658, "o", "\""]
[2.19683, "o", "h"]
[2.403994, "o", "e"]
[2.466784, "o", "l"]
[2.711183, "o", "lo"]
[3.120852, "o", "\""]
[3.427886, "o", "\r\nhello\r\n"]
[...]
如果你犯了一個(gè)錯(cuò)誤,你可以通過刪除重現(xiàn)錯(cuò)誤的行來去除這個(gè)錯(cuò)誤。如果你發(fā)現(xiàn)自己在錄制過程中做了很多命令行修改或冗長的停頓,你可以安裝并使用 ??asciinema-edit?? 工具,它可以通過你定義的時(shí)間戳或消除空閑時(shí)間來剪掉這些“鏡頭”片段。
播放 Asciinema 電影
你可以使用 ??play?
? 子命令回放你的 Asciinema:
$ asciinema play mymovie.cast
這會(huì)接管你的終端會(huì)話,并使其成為最接近銀幕的形式(除了那次你通過 ??telnet?
? 觀看 ASCII 格式的星球大戰(zhàn))。這個(gè)基于文本的電影播放,向你的用戶展示了一個(gè)復(fù)雜的任務(wù)是如何完成的。當(dāng)然,播放的 實(shí)際 命令并不真正執(zhí)行。這不是一個(gè)正在運(yùn)行的 shell 腳本,所以即使你在電影中創(chuàng)建了一個(gè) ??hello.txt?
?? 文件,在播放后也不會(huì)有一個(gè)新的 ??hello.txt?
?。這只是為了展示。
然而,它又不僅僅是一個(gè)展示。你可以暫停 Asciinema 電影,選擇你在屏幕上看到的文本,并將其粘貼到一個(gè)活動(dòng)終端以運(yùn)行該命令。Asciinema 是有用的文檔。它向用戶展示了如何完成一項(xiàng)任務(wù),并允許他們進(jìn)行復(fù)制和粘貼以確保準(zhǔn)確性。
上傳你的 Asciinema 電影
目前還沒有像大片一樣的 Asciinema 電影,但你可以把你的電影上傳到 ??Asciinema.org??,與全世界分享:
$ asciinema upload mymovie.cast
如果你習(xí)慣了 YouTube 上傳所花費(fèi)的時(shí)間,你會(huì)對(duì) Asciinema 電影的傳輸速度感到驚喜。一個(gè) ??.cast?
? 文件通常只有幾千字節(jié),最多幾兆字節(jié),所以上傳幾乎是瞬間完成的。你不需要注冊(cè)賬戶來分享你的電影,但所有無人認(rèn)領(lǐng)的電影將在七天后會(huì)被刪除。為了保存你的杰作,你可以在 Asciinema 上開設(shè)一個(gè)賬戶,然后坐等電影學(xué)院的電話。
Asciinema 作為文檔
Asciinema 是演示最基本概念的好方法。因?yàn)樗A袅藦匿浿浦袕?fù)制和粘貼代碼的能力,提供了按需暫停和播放的能力,并且完全準(zhǔn)確地描繪了它的內(nèi)容,它不僅僅是屏幕錄像,它要好得多。無論你是用它來向你的朋友炫耀你的終端技能,還是用它來教育同事和學(xué)生,Asciinema 都是一個(gè)無價(jià)的、社交的、可利用的工具。