尝试使用的 4 款 Linux 终端复用器

比较 tmux、GNU Screen、Konsole 和 Terminator,看看哪个最适合你。
100 位读者喜欢这个。
FreeDOS

Opensource.com

Linux 用户通常需要大量的虚拟视觉空间。一个终端窗口永远不够用,所以终端有选项卡。一个桌面太局限了,所以有了虚拟桌面。当然,应用程序窗口可以堆叠,但当它们平铺时不是更好吗? 甚至后端文本控制台也提供了 F1 到 F7,用于在任务之间来回切换。

由于进行了如此多的多任务处理,有人发明终端复用器的概念也就不足为奇了。 这确实是一个令人困惑的术语。 在传统电子学中,“复用器”是一个接收多个输入信号并将选定的一个转发到单个输出的组件。 终端复用器则相反。 它从一个输入(键盘上的用户在一个终端窗口中输入)接收指令,并将该输入转发到任意数量的输出(例如,一组服务器)。

再说一遍,“multiplex”这个词在美国也很流行,指的是有很多屏幕的电影院(与“cineplex”这个词争夺关注)。 在某种程度上,这非常形象地描述了终端复用器可以做什么:它可以在一个框架内提供许多屏幕。

无论该术语是什么意思,任何尝试过复用器的人都有自己喜欢的。 因此,我决定看看一些流行的复用器,看看每个复用器的性能如何。 就我的评估标准而言, 最低限度,我需要每个复用器都能够拆分堆叠终端窗口。

Tmux

据我所知,是 tmux 开始使用“复用器”这个术语的。 它在它所做的事情上非常出色。

它作为守护程序运行,因此即使您关闭正在查看它的终端模拟器,您的终端会话仍然处于活动状态。 它将您的终端屏幕拆分为窗格,以便您可以在每个窗格中打开唯一的终端提示符。

通过扩展,这也意味着您也可以远程连接到任意数量的系统,并将它们也打开在您的终端中。 使用 tmux 的镜像(或电子学术语中的反向复用)输入到其他打开的窗格的能力,可以从一个中央命令窗格一次控制多台计算机。

当 GNU Screen 只有水平拆分时,Tmux 就已经有了垂直拆分,这吸引了寻求最大灵活性的粉丝。 而灵活性正是用户通过 tmux 获得的。 它可以拆分、堆叠、选择和服务; 实际上没有什么它不能做的。

? 大小

从软件包安装 tmux 大约占用 700K,不包括它所依赖的十几个共享库。

?️ 控制

tmux 的默认触发键是 Ctrl+B,尽管在它的配置文件中很容易重新定义它。

⌨️ 黑客范儿

即使您只是在学习如何使用终端,通过使用 tmux,您也一定会感觉自己像个黑客。 它看起来很复杂,但是一旦您了解了正确的快捷键绑定,它就很容易使用。 它为您提供了许多有用的技巧来让自己保持忙碌,并且它是一种非常简单的方式来构建一个快速 HUD,其中包含您需要的所有信息。

GNU Screen

与 tmux 一样,GNU Screen 运行一个守护程序,因此即使您关闭用于启动它的终端,您的 shell 仍然可用。 您可以从不同的计算机连接并共享 Screen。 它将您的终端屏幕拆分为水平或垂直窗格。

与 tmux 不同,GNU Screen 可以通过串行连接连接(screen 9600 /dev/ttyUSB0 就可以完成),并具有用于轻松 XON 和 XOFF 信号的快捷键绑定。

与通过 SSH 会话相比,通过串行连接需要复用器可能不太常见,因此 Screen 的真正特殊功能对大多数用户来说都丢失了。 尽管如此,GNU Screen 仍然是一款出色的复用器,具有许多有用的选项,如果您真的非常需要一次向多台服务器发送信号,总有像 ClusterSSH 和 Ansible 这样的专用工具。

? 大小

从软件包安装 GNU Screen 大约占用 970K,不包括它所依赖的十几个共享库。

?️ 控制

GNU Screen 的默认触发键是 Ctrl+A,对于任何熟悉 Bash 快捷键的人来说,这尤其令人讨厌。 幸运的是,您可以在配置文件中轻松重新定义此触发器。

⌨️ 黑客范儿

当您使用 Screen 通过串行连接连接到您的路由器或原型电路板时,您将成为所有硬件黑客朋友羡慕的对象。

Konsole

Konsole 虽然没有自称为复用器,但却是一个出奇有效的复用器。 它可以执行使用 Qt 窗格和标签页的必要窗口拆分和堆叠,但它也可以通过 编辑(复制输入到) 菜单中的选项将输入从一个窗格回显到另一个(或所有)窗格。

然而,它最显着的缺点是无法作为守护程序运行以进行远程重连。 与 Tmux 和 GNU Screen 不同,您无法远程连接到运行 Konsole 的机器并加入会话。 对于某些管理员来说,这可能不是问题。 许多管理员 VNC 到机器的频率高于他们 SSH,因此“重新加入”会话就像单击 VNC 客户端中的 Konsole 窗口一样简单。

将 Konsole 用作复用器是 KDE 极客的高手操作。 Konsole 是我使用的第一个 Linux 终端(直到今天,我有时还会按 Ctrl+N 来打开新标签页),因此能够使用这个熟悉的终端作为复用器非常方便。 这绝不是必要的,因为 tmux 和 Screen 无论如何都在 Konsole 内运行,但是通过让 Konsole 处理窗格,我不必调整我的肌肉记忆。 这种微妙的功能包含正是 KDE 如此出色的原因

? 大小

Konsole 本身大约为 11KB,但它依赖于 105 个 KDE 和 Qt 库,因此实际上,它至少更像是 50MB。

?️ 控制

最重要 Konsole 快捷键以 Shift+Ctrl 开头,拆分屏幕、打开新标签页、将输入复制到其他窗格等等都是如此。 它只是 Konsole,所以如果您对 Plasma 桌面感到满意,这会感觉很熟悉。

⌨️ 黑客范儿

将 Konsole 用作您的复用器,您有权称自己为 KDE 高级用户。

Terminator

对于 GNOME 用户而言,Terminator 复用器是一种简单的方式,可以为他们原本极简的 GNOME 终端增加功能。 除了必要的复用功能外,Terminator 还可以将输入广播到所有打开的窗格,但与 Konsole 一样,它无法在后台运行,因此您无法通过 SSH 重新连接到它。 再说一遍,随着 GNOME 和 Wayland 让 VNC 如此简单,您可能不会觉得需要 SSH 进入以继续终端会话。

如果需要,Terminator 可以完全由鼠标驱动。 Konsole 通过其主菜单也具有相同的功能。 使用 Terminator,您可以右键单击 shell 中的任何位置,并弹出相关选项以水平或垂直拆分窗口、将窗格分组在一起以定向广播、广播输入、关闭窗格等等。 您还可以为所有这些操作配置键盘快捷键,因此在许多方面,您可以构建自己的体验。

我主要认为自己是 KDE 用户,因此当我说 Terminator 感觉像一个 K 应用时,我的意思是这是一种高度赞扬。 Terminator 是一款非常可配置和灵活的应用程序。 在许多方面,它通过采用简朴的 GNOME 终端并将其转变为强大的复用器,体现了开源的力量。

? 大小

Terminator 的安装大小为 2.2MB,其中大部分是 Python 模块。 但是,它依赖于 GTK3 和 GNOME,因此,如果您没有运行完整的 GNOME 桌面,您可以预期安装更大的文件来引入这些依赖项。

?️ 控制

Terminator 的默认控件在一致性方面没有太多体现。 您对某些命令使用 Alt 键,对其他命令使用 Ctrl 键,Shift+CtrlCtrl+AltShift+Super 和鼠标。 再说一遍,它是我尝试过的最可配置的复用器之一,因此凭借观点和一点努力,您可以设计一个适合您的方案。

⌨️ 黑客范儿

当您使用 Terminator 时,您会感觉自己是最现代和务实的黑客。 凭借其所有极客选项,它是复用的绝佳选择,并且由于它非常灵活,因此无论您的手放在键盘上还是在键盘和鼠标之间分配,您都可以轻松地使用它。

全部选择

还有更多的复用器,以及一些具有类似复用器能力的应用程序。 您不必找到一个能够完全按照您希望的方式完成所有工作的复用器。 您可以同时使用多个。 实际上,您甚至可以同时使用多个,因为 tmux 和 Screen 实际上是 shell,而 Konsole 和 Terminator 是显示 shell 的终端。 重要的事情是,您对触手可及的工具感到舒适,并且它们可以帮助您管理您的工作区,以便您可以高效工作。

去尝试一个复用器,或者在您最喜欢的应用程序中发现类似复用器的功能。 它可能会改变你对计算的看法。

接下来阅读
标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。 他曾在电影和计算机行业工作,而且经常同时工作。

11 条评论

在某个时候,我以为 Screen 已经被弃用了,这是一篇很棒的文章,可以掌握终端复用领域的最新动态。

我认为它“休眠”了一段时间,但已苏醒并已更新,所以又活跃起来了...

回复 作者: alanfd_oss

Screen 似乎最有可能开箱即用,但它不允许您轻松滚动查看历史记录,因此 tmux 对我来说更胜一筹。

不喜欢 Tilix 吗? 过去 ~3 年一直在使用,效果很好。 ymmv

啊哈,但是 Byobu 呢,它包含在某个 RHEL 竞争对手的服务器发行版中。 你可以拥有独立的会话、窗口和窗格,我喜欢 byobu。 然后将其与 Micro 文本编辑器结合使用,它本身也可以拆分屏幕。 :)

我已将其添加到我的列表中,以便下次查看复用器选项! 它看起来很棒,谢谢!

回复 作者: Paul

还有另一种(但相当小众)的选择 - 在 Neovim 中使用拆分和终端缓冲区。 过去,我在远程 Linux 服务器上使用过这样的配置,令人惊讶的是,该服务器安装了 Neovim,但既没有 screen 也没有 tmux。
我会启动 nvim,输入 ':term',稍后,如果我需要更多的终端窗口,我会在拆分、选项卡或直接在当前窗口中打开另一个终端缓冲区(分别为 ':sp | term'/'vsp | term'、':tabnew | term' 和 ':term')。

我特意避免提及 Vim 和 Emacs 中的拆分,只是因为我觉得这太小众了。 但是,您提出了一个好观点:通常在没有安装复用器的系统上安装了 Vim,所以毕竟也不是那么小众...

我感觉未来会再写一篇关于复用器的文章,所以我将这个记在我的笔记里。 谢谢!

回复 作者: Mariusz Włodarczyk

Tmux 首次发布于 2007 年
Gnu Screen 首次发布于 1987 年

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.