使用 tmate 分享你的 Linux 终端

Tmate 扩展了您与 Linux 终端共享会话的选项。
7 位读者喜欢这篇文章。

作为 Fedora Linux QA 团队的一员,我有时会执行一系列命令,并希望将这些命令广播给其他开发人员。 如果你曾经使用过像 终端复用器,比如 tmuxGNU Screen,你可能会认为这是一个相对容易的任务。 但并非所有希望观看我演示的人都通过笔记本电脑或台式机连接到我的终端会话。 有些人可能只是随意地通过手机浏览器打开它 —— 他们可以轻松地做到这一点,因为我使用了 tmate

使用 tmate 共享 Linux 终端

观看他人操作 Linux 终端非常有教育意义。你可以学习新的命令、新的工作流程或新的调试和自动化方法。 但很难捕捉你所看到的内容,以便稍后自己尝试。 你可能会选择截取屏幕截图或录制共享终端会话的屏幕录像,以便稍后键入每个命令。 唯一的另一个选择是让演示命令的人使用像 Asciinemascript 和 scriptreplay 这样的工具来记录会话。

但是使用 tmate,用户可以通过只读模式或通过 SSH 共享终端。 SSH 和只读会话都可以通过终端或作为 HTML 网页访问。

当我在为 Fedora QA 团队招募新人时,我使用只读模式,因为我需要运行命令并显示输出,但是使用 tmate,人们可以通过从浏览器复制和粘贴到文本编辑器来做笔记。

Linux tmate 的实际应用

在 Linux 上,你可以使用你的包管理器来安装 tmate。 例如,在 Fedora 上

$ sudo dnf install tmate

在 Debian 和类似的发行版上

$ sudo apt install tmate

在 macOS 上,你可以使用 HomebrewMacPorts 来安装它。 如果你需要其他 Linux 发行版的说明,请参考 安装 指南。

Screenshot of terminal showing the options for tmate sharing: web session (regular and read-only) and ssh session (regular and read-only)

(Sumantro Mukherjee, CC BY-SA 4.0)

安装完成后,启动 tmate

$ tmate

当 tmate 启动时,会生成链接,以便通过 HTTP 和 SSH 访问你的终端会话。 每个协议都提供只读选项以及反向 SSH 会话。

这是一个 Web 会话的样子

Screenshot showing tmate terminal window and 2 versions of sharing sessions demonstrating the same code

(Sumantro Mukherjee, CC BY-SA 4.0)

Tmate 的 Web 控制台是 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)

(Sumantro Mukherjee, CC BY-SA 4.0)

社交复用

Tmate 让你拥有 tmux 或 GNU Screen 的自由,还可以与他人共享你的会话。 它是教授其他用户如何使用终端、演示新命令的功能或调试意外行为的宝贵工具。 它是开源的,所以快来试试吧!

接下来阅读
标签
User profile image.
嘿,开源爱好者们! 我是 Sumantro,来自印度(东部地区 - 英国统治时期的前首都,又名加尔各答)。 我喜欢分享知识并撰写有关技术和经验的文章(大部分是我每天尝试的内容)。

2 条评论

类似地,还有 upterm (upterm.dev [owenthereal/upterm],而不是用 JS 编写的终端模拟器 [railsware/upterm]) -- 我现在记不清是什么让我切换到它了,但它大致类似于 tmate 是 tmux 2。虽然 upterm 独立于 tmux,但它可以很好地与 tmux 一起使用。 只是它缺少一个 Web 控制台。

感谢分享

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.