到目前为止我已经使用过控制台管理多个 shell 会话,但我还没有尝试过屏风,GNU 屏幕, 和tmux,它们为多个 shell 提供了更好的支持。它们都具有一个主要功能,即允许分离当前会话并稍后重新连接到旧会话。
为了帮助我选择一个工具来学习,我想知道:它们在以下方面有何不同?
- 特点(显然)
- 项目成熟度。我不想学习变化太大的工具。欢迎改进,但我不喜欢功能消失之类的意外情况。
- 学习曲线
- 适用于不同平台。如果我学习了一个工具,我希望能够在 FreeBSD 服务器、SuSE 桌面或 Ubuntu 上使用它。
- 与其他交互式 shell 程序的兼容性。我还能像以前一样使用(非窗口模式或文本模式)吗?键盘快捷键会与其他工具的快捷键冲突吗
vim
?emacs -nw
我刚刚尝试了所有这些,Byobu 看起来像是 GNU Screen 和 tmux 的一种前端。那么为什么有人创建 Byobu 而不是为 GNU Screen 项目做出贡献并添加新功能呢?为什么 Byobu 不是 GNU Screen 中的某种高级界面模式?如果我使用 Byobu 作为我的日常工具,并以 GNU Screen 作为后端,如果某台机器只有 GNU Screen,我是否可以将这些知识转移到不使用 Byobu 的情况下使用 GNU Screen?
答案1
有关 Tmux 与 GNU Screen 的比较,请阅读
以及可以在博客等上找到的其他几种比较形式。
一些经常重复的一般术语:
- Tmux 较新。这意味着它有点花哨(简单的垂直分割,漂亮的绿线)并且兼容性测试不太完善(支持者认为兼容性测试程度可以忽略不计)。
- Tmux 的资源比较匮乏。
- GNU Screen 随处可见,而且很可能仍然用途更广。
除此之外,还可以查看某个替代方案的具体功能,个人偏好将主导讨论。我个人过去大量使用 GNU Screen — 现在我使用 Tmux。
我发现 Byobu 对我来说没有任何“杀手级功能”。它提供了一种抽象,但我认为我的用例并不需要这种抽象。
另一种看待它的方式是注意到 Byobu 可以使用 GNU Screen 或 Tmux 作为后端,这表明从用户的角度来看差异大多是表面的。
答案2
好问题! 无论如何,我是屏风。
屏风是一个配置层,最初写成位于GNU 屏幕,但现在也可以在多路复用。
我开始写Byobu是在2008 年 12 月,因为我在谷歌总部并发现全部我们中的许多人都在自己的~/.screenrc
配置中维护着一堆简洁、有趣、有用的黑客技术。我们必须手动在我们使用的数十台或数百台服务器之间移动它们。我们开始交换技巧和窍门,我开始将它们收集到原始的GPLv3该项目名为“screen-profiles”。大约 6 个月后,一个围绕“屏幕配置文件“这个项目不仅仅是屏幕黑客——我们有配置实用程序、实时状态插件和键绑定。所以我们重命名项目“Byobu” 是日语中指那些优雅的可折叠“屏幕”的单词,它还有一个额外的好处,就是在 Google 上搜索“Byobu $FOO”比搜索“Screen $FOO”更容易成功。
Byobu 现在已出现在大多数 Linux 发行版中(Ubuntu,Debian,Fedora,拱),并且可在大多数 Mac/BSD 和其他 UNIX 上运行,它在您可能需要访问的任何终端上提供相同的外观和感觉、方便的键绑定和动态系统状态信息。
为什么不回馈 GNU Screen 项目?有几个原因……Byobu 的所有功能都和配置选项一样好用。没有一个需求必须包含在 Screen 源代码库中才能正常运行。如果 Screen 默认包含某些内容,它们可能会运行得更好或性能更好,但许多更改都非常“主观”,通常很难或不可能为25岁上游项目。此外,GNU Screen 项目进展非常缓慢,甚至根本没有进展。它已经有 25 年的历史了,但自那以后一直没有正式发布2008 年 8 月。每个发行版都带有大量的补丁,只是为了保证你的 /usr/bin/screen 正常工作和安全。例如,Ubuntu 和 Debian 目前在 ~48 中带有 19K 行代码补丁。
大约两年前我了解了 Tmux,并且深深爱上了它的源代码、设计、界面和活跃的社区!我的生活变得轻松多了贡献修复向上游 Tmux 和在邮件列表中讨论主题。作为在任何地方都使用它的 Byobu 用户,我希望我的 Tmux 会话具有与我在 4 年多的 Byobu 中享受到的相同的外观和感觉。所以我移植所有 Byobu 代码都可以与 Tmux 作为后端一样很好地工作,就像 Screen 一样。Byobu 5.0 发布,Tmux 现在是默认后端,Screen 仍以传统模式受支持。Byobu 现在利用了 Screen 上 Tmux 的许多现代功能,包括大大改进的 256 色支持、UTF8 字符和水平/垂直窗口分割。
如果您对 Screen 或 Tmux 中的默认设置感到满意,或者想要从头开始编写自己的配置文件,那么 Screen 和 Tmux 绝对是您的不二之选,它们多年来为我们的生活带来了效率。如果您对一组真正扩展和延伸 Screen 和 Tmux 开箱即用的配置感兴趣,请查看 Byobu!
干杯,达斯汀
答案3
从实际使用情况来看,screen
和之间最大的区别tmux
在于它们如何处理分割窗口。
中的窗口screen
是单个伪终端。连接到会话后screen
,您可以将终端拆分为多个区域,每个区域都可以显示一个screen
窗口。多个区域可以显示同一个窗口。拆分不是会话的一部分;如果您分离,拆分将消失。
中的窗口tmux
由一个或多个伪终端组成,每个窗格一个。这意味着如果您稍后分离并重新连接,窗格将保持不变。这还意味着您一次只能在 中显示一个窗口,并且窗格不能tmux
在多个窗口之间共享。tmux
允许但是,多个会话之间可以共享一个窗口。
我更喜欢 使用的模型tmux
,但我不能说它比 使用的模型更好screen
。
答案4
对我来说,tmux 的关键在于会话共享的实现。
在 GNU Screen 中,如果您让另一个用户连接到一个会话,或者只是将您的会话连接到多个终端,它们可以独立运行(从终端 B 切换会话 A 中的屏幕不会使终端 A 也在会话 A 中切换屏幕)。
上述情况在 tmux 中还不存在(或者我还没有找到改变其行为的方法)。
如果有人知道如何在 tmux 中改变这种行为,或者 tmux 更新以改变这种行为或提供现在改变这种行为的选项,请发表评论。