用 tmate 分享你的 Linux 終端
作為 Fedora Linux QA 團隊的一員,我有時想將自己執行的一堆命令廣而告之給其他開發者。如果你曾經使用過像 tmux 或 GNU Screen 這樣的 終端復用器,你可能會認為這是一個挺輕松的任務。不是所有看我的示范的人都是從筆記本電腦或臺式機連接到我的終端會話的,有些人可能是隨手在他們的手機瀏覽器中打開的,因為我使用了 tmate,所以他們可以很容易地做到這一點。
使用 tmate 分享 Linux 終端
觀看別人在 Linux
終端的工作是非常有教育意義的。你可以學到新的命令、新的工作流程,或者新的調試和自動化的方法。但要抓住你所看到的東西,以便你以后可以自己嘗試,這可能很困難。你可能會借助截圖或一個共享終端會話的屏幕記錄,這樣你就可以在以后打出每個命令。剩下的唯一選擇是由演示命令的人使用 Asciinema 或 script 和 scriptreplay 等工具來記錄會話。
但是通過 ??tmate?
?,用戶可以在只讀模式下或通過 SSH 分享終端。SSH 和只讀會話都可以通過終端或以 HTML 網頁的形式訪問。
當我為 Fedora QA 團隊培訓人員時,我使用只讀模式,因為我需要運行命令并顯示輸出,但有了 ??tmate?
?,人們可以通過從他們的瀏覽器復制和粘貼到文本編輯器來記錄筆記。
Linux tmate 上手
在 Linux 上,你可以用你的包管理器安裝 ??tmate?
?。例如,在 Fedora 上:
$ sudo dnf install tmate
在 Debian 和類似的發行版上:
$ sudo apt install tmate
在 macOS 上,你可以用 Homebrew 或 MacPorts 安裝它。如果你需要其他 Linux 發行版的說明,請參考 ??安裝?? 指南。
Screenshot of terminal showing the options for tmate sharing: web session (regular and read-only) and ssh session (regular and read-only)
安裝后,啟動 ??tmate?
?:
當 ??tmate?
? 啟動時,會生成鏈接,通過 HTTP 和 SSH 提供對終端會話的訪問。每個協議都有一個只讀方式,以及一個反向的 SSH 會話。
下面是一個網絡會話的樣子:
Screenshot showing tmate terminal window and 2 versions of sharing sessions demonstrating the same code
??tmate?
? 的網絡控制臺是 HTML5 的,因此,用戶可以復制整個屏幕并粘貼到終端來運行相同的命令。
保持會話
你可能想知道如果你不小心關閉了你的終端會發生什么。你也可能想知道如何與不同的控制臺應用共享你的終端。畢竟,??tmate?
? 是一個多路復用器,所以它應該能夠保持會話,脫離并重新連接到一個會話,等等。
當然,這正是 ??tmate?
?? 所能做到的。如果你曾經使用過 ??tmux?
?,這可能是相當熟悉的。
$ tmate -F -n web new-session vi console
這個命令在 ??vi?
? 中打開了 ??new-session?
?,??-F?
? 選項確保會話在關閉時也能重新產生。
A screenshot of the terminal showing the output after using the new-session and -F options: connection information for either a web session (regular or read-only) or ssh session (regular or read-only)
社交復用
??tmate?
? 給你帶來了 ??tmux?
? 或 GNU Screen 的自由度,以及與他人分享會話的能力。這是一個有價值的工具,可以教其他用戶如何使用終端、演示一個新命令的功能,或調試意外的行為。它是開源的,所以請試一試!