对于许多人来说,Linux 终端是他们完成最重要工作的主要场所。无论是管理多台远程机器的系统管理员,还是在浏览源代码时尝试运行新代码片段的程序员,或者只是试图阅读 man page 文档以逐步输入冗长命令的普通用户,在同一时间运行和查看多个终端应用程序的输出是很常见的需求。
为什么跟踪多个应用程序应该是一个需要花哨的现代 GUI 才能解决的难题?当然,您可以启动多个终端实例,或者使用一个可以平铺终端的 终端模拟器。但是有一种更简单,并且可以说是更好的方法,即使用原生终端应用程序来管理您的多个应用程序,就像在传统的窗口环境中一样。这就是 tmux,终端复用器。
在我们介绍 tmux 以及它将如何改变您与命令行的交互方式之前,让我们先谈谈进程。当您从终端启动一个程序时,似乎您的终端现在完全被该进程占用。但这实际上并非如此。在 Bash shell(和许多其他 shell)中,您可以在启动时将您的应用程序发送到后台(通过在命令末尾放置 &)或者通过按 ctrl+z 暂停作业,然后使用 bg 将您的命令发送到后台,并使用 fg 返回前台,或者使用 jobs 命令查看作业列表。
进程控制本身是 Linux 世界中的一个重要概念,任何 Linux 用户都将受益于花一点时间来理解它,但它是一个足够大的领域,超出了本文的范围。我在这里提到它是因为对于新手来说,存在一个常见的误解,即在命令行启动命令总是“占用”启动它的终端,直到进程终止,但事实并非如此。
tmux 可以帮助解决许多问题,但主要目的是允许您在同一个终端窗口中运行多个应用程序,可以是并排运行,也可以让您通过简单的按键在应用程序之间轻松切换,或者在同一个窗口中一起切换应用程序组。它还允许您“附加”或“分离” tmux 实例,实际上,如果您关闭终端,您的应用程序将像您离开时一样继续运行,允许您稍后返回。
安装 tmux 很简单。如果您的机器上尚未安装,那么它肯定在您的 Linux 发行版的默认存储库中,因此使用您选择的包管理器进行安装将很简单。在 Fedora 上,这意味着一个简单的 $ sudo dnf install tmux -y 命令将为您安装它,您将在几秒钟内准备好启动并运行。
一旦您首次安装并启动 tmux,您将在终端底部看到一个绿色栏。默认情况下,该栏将为您提供打开的窗口列表、您的主机名和时间,但您可以将其配置为显示更多内容。
tmux 中的命令通过首先发出命令前缀来发出。默认情况下,这是 ctrl+b,但您也可以更改它。在按下 ctrl+b 后,您可以通过按 c 键创建一个新窗口。然后您可以在这个新窗口中发出命令,并通过按 p 键返回上一个窗口,或按 w 键列出您创建的所有窗口,您可以从中在它们之间跳转。
您还可以通过按 ctrl+b 或您分配给命令前缀的任何键来将窗口拆分为多个窗格,然后按 % 键垂直拆分屏幕或按 " 键水平拆分屏幕。然后,您可以使用前缀和箭头键在窗格之间跳转。
这些是基础知识。当您完成使用窗格或窗口后,您可以使用命令前缀和 x 键删除窗格,或使用 & 键删除窗口。想了解更多?前缀后跟 ? 将告诉您更多信息;它是内置的命令列表。
一旦您开始使用 tmux,探索了这些基本命令,并开始设置一个根据您的需求定制的终端环境,您将希望超越我在此处包含的基本说明。您应该这样做——那里有很多很棒的信息!以下是我发现的一些其他有用的资源
-
去阅读 man page。认真地说,即使在如今搜索功能无处不在的现代世界中,man page 的存在也是有原因的。man page 将始终在您的指尖,无论是否有互联网访问。它会告诉您您需要知道的所有基础知识。
-
看看另一个指南,详细了解其他人如何使用和配置 tmux 以满足他们的需求。这里有一些 a 一些 好的 例子。然后,去看看您主目录中的 .tmux.conf 文件,您可以在其中非常详细地自定义 tmux。这是一个 好的指南。
-
读一本书。我发现比较好的两本书包括 tmux 2: Productive Mouse-Free Development,可通过 Pragmatic Press 购买纸质版或电子书,以及 The Tao of tmux,除了纸质版或电子书版本外,还可以根据 CC BY-NC-SA 3.0 许可在 网上免费阅读。
-
加入社区。Reddit 有一个 r/tmux 群组,大多数 Linux 用户组至少会有一位愿意帮助您的 tmux 用户,并且 Freenode IRC 上的 #tmux 频道通常挤满了数百位乐于助人的人。
tmux 是唯一提供此功能的工具吗?正如开源世界中经常发生的情况一样,答案是否定的!GNU Screen 是另一个提供类似功能的流行工具。虽然 GNU Screen 和 tmux 之间存在一些细微的差异,但您选择使用哪一个实际上是个人偏好问题。GNU Screen 有几十年的历史,非常稳定;其历史悠久的另一面是,它几乎没有看到活跃的开发。
虽然老前辈和其他老手可能对 GNU Screen 非常满意,但 tmux 似乎在如今更广泛的 Linux 社区中引起了更广泛的兴趣。这并不意味着它更好或更坏,但这确实意味着我发现,在支持社区和互联网上寻找时,通常更容易找到已经解决了我的确切问题或配置挑战的人。它独特的名称也使 tmux 在 GitHub 和其他软件存储库中查找插件时更容易找到。
您使用 tmux 吗?您希望在刚开始使用时就知道什么?请在下面的评论中告诉我们。
6 条评论