尝试这 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

我[字面意思]抛硬币,Terminator 击败 Tilix 赢得了这篇文章。 但下次,就轮到 Tilix 了!

回复 作者 Craigo

啊哈,但是 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 年

© . All rights reserved.