无论您是启动一个精巧的 Raspberry Pi 家庭实验室,还是管理一栋楼的工作站,有时您需要在多台主机上执行相同的任务。有很多方法可以自动化跨系统的任务。Ansible 例如,确保所有系统都处于相同的状态,有时一个简单的 cron 作业就可以完成。但有时您需要手动运行命令。为此,您需要 tmux,一个让您控制多个命令提示符的单个终端。
tmux 是一款开源应用程序,它在您的终端窗口中添加层(或在 tmux 术语中称为“窗口”),以便您可以在单个桌面窗口中打开多个终端。结果是一个选项卡式界面(没有物理选项卡),因此您可以从一个打开的终端翻转到另一个终端,而无需像在 Firefox 中从一个选项卡切换到另一个选项卡时那样使用鼠标。
这可能看起来是多余的。毕竟,现代终端应用程序,例如 GNOME Terminal 和 Konsole,默认情况下都内置了选项卡,甚至一些非常旧的终端,例如 rxvt,也具有添加选项卡式界面的能力。然而,tmux 增加了将窗口拆分为窗格的能力,每个窗格包含一个单独的终端,并且每个终端都可以登录到单独的主机。您只需几个键盘快捷键或一个基本的 tmuxinator 脚本即可构建终端阵列。
(Seth Kenlon,CC BY-SA 4.0)
安装 tmux
在 Linux 和 BSD 上,您可以从您的软件仓库或 端口树 安装 tmux。在 Mac 上,使用 Homebrew。
例如,在 RHEL 或 Fedora 上
$ sudo dnf install tmux
启动 tmux
要启动 tmux,请打开终端并键入
$ tmux
当您执行此操作时,明显的結果是 tmux 在同一窗口中启动了一个新 shell,并在底部显示了一个状态栏。但是,还有更多事情正在发生,您可以通过这个小实验看到它。首先,在当前终端中执行一些操作,以帮助您将其与另一个空终端区分开来
$ echo hello
hello
现在按键盘上的 Ctrl+B,然后按 C。看起来您的工作似乎消失了,但实际上,您已经创建了 tmux 称为窗口 的东西(这可能确实令人困惑,因为您可能也将启动的终端称为窗口)。感谢 tmux,您实际上打开了两个窗口,您都可以在 tmux 底部的状态栏中看到它们。您可以通过索引号在这些窗口之间导航。例如,按 Ctrl+B,然后按 0 转到初始窗口
$ echo hello
hello
按 Ctrl+B,然后按 1 转到您创建的第一个新窗口。
您还可以使用 Ctrl+B 和 N(下一个)或 P(上一个)“走过”您打开的窗口。
tmux 触发器和命令
键盘快捷键 Ctrl+B 是 tmux 触发器。当您在 tmux 会话中按下它时,它会提醒 tmux “监听”紧随其后的下一个键或组合键。因此,所有 tmux 快捷键都以 Ctrl+B 为前缀。
您还可以访问 tmux 命令行,并通过名称键入 tmux 命令。例如,要以困难的方式创建一个新窗口,您可以按 Ctrl+B,然后按 : 进入 tmux 命令行。键入 new-window
并按 Enter 键以创建一个新窗口。这与按 Ctrl+B,然后按 C 的效果完全相同。
将窗口拆分为窗格
一旦您在 tmux 中创建了多个窗口,通常需要在一个窗口中查看所有窗口。您可以水平拆分窗口(意味着拆分是水平的,将一个窗口放在北部位置,另一个放在南部位置)或垂直拆分(窗口位于西部和东部位置)。
- 要创建水平拆分,请按 Ctrl+B,然后按 "(双引号)。
- 要创建垂直拆分,请按 Ctrl+B,然后按 %(百分号)。
您可以拆分已拆分的窗口,因此布局取决于您和终端中的行数。

(Seth Kenlon,CC BY-SA 4.0)
有时事情可能会失控。您可以使用以下快速预设调整布满随意拆分的窗格的终端
- Ctrl+B Alt+1:均匀水平拆分
- Ctrl+B Alt+2:均匀垂直拆分
- Ctrl+B Alt+3:主窗格水平跨越,较小窗格垂直拆分
- Ctrl+B Alt+3:主窗格垂直跨越,较小窗格水平拆分
- Ctrl+B Alt+5:平铺布局
在窗格之间切换
要从一个窗格转到另一个窗格,请按 Ctrl+B,然后按 O(如其他中的 O)。窗格周围的边框颜色会根据您的位置而变化,并且您的终端光标会变为活动状态。此方法按创建顺序“走过”窗格。
或者,您可以使用箭头键根据您的布局导航到窗格。例如,如果您有两个打开的窗格被水平拆分分隔开,您可以按 Ctrl+B,然后按 向上 箭头从下窗格切换到上窗格。同样,Ctrl+B,然后按 向下 箭头从上窗格切换到下窗格。
使用 tmux 在多台主机上运行命令
现在您知道如何打开多个窗口并将它们划分为方便的窗格,您几乎了解了同时在多台主机上运行一个命令所需的一切知识。假设您有一个您满意的布局,并且每个窗格都连接到单独的主机,您可以同步窗格,以便您在键盘上键入的输入在所有窗格中镜像。
要同步窗格,请使用 Ctrl+B,然后按 : 访问 tmux 命令行,然后键入 setw synchronize-panes
。
现在您在键盘上键入的任何内容都会显示在每个窗格中,并且每个窗格都会做出相应的响应。
下载我们的速查表
记住 Ctrl+B 来调用 tmux 功能相对容易,但随后的按键起初可能难以记住。所有内置的 tmux 键盘快捷键都可以通过按 Ctrl+B,然后按 ? 来获得(按 Q 退出帮助屏幕)。但是,帮助屏幕对于其所有选项来说可能有点令人不知所措,这些选项都没有按任务或主题组织。为了帮助您记住 tmux 的基本功能,以及本文未涵盖的许多高级功能,我们开发了一个 tmux 速查表。它是免费下载的,所以今天就获取您的副本。
评论已关闭。