@chensanle
感谢你,完成了第一篇翻译贡献!
This commit is contained in:
Xingyu Wang 2021-02-11 10:11:46 +08:00
parent 02d79786cd
commit 47db2eccaf

View File

@ -1,6 +1,6 @@
[#]: collector: (lujun9972)
[#]: translator: ( chensanle )
[#]: reviewer: ( )
[#]: translator: (chensanle)
[#]: reviewer: (wxy)
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Tmux Command Examples To Manage Multiple Terminal Sessions)
@ -10,11 +10,11 @@
基于 Tmux 的多会话终端管理示例
======
![tmux 命令示例][1]
![](https://img.linux.net.cn/data/attachment/album/202102/11/101058ffso6wzzw94wm2ng.jpg)
我们已经了解到如何通过 [**GNU Screen**][2] 进行多会话管理。今天,我们将要领略另一个著名的命令行实用工具 **“Tmux”** 来管理会话。类似 GNU Screentmux 是一个帮助我们在单一终端窗口中创建多个会话同一时间内同时运行多个应用程序或进程的终端复用工具。Tmux 免费、开源并且跨平台,支持 Linux、OpenBSD、FreeBSD、NetBSD 以及 Mac OS X。本文将讨论 Tmux 在 Linux 系统下的高频用法。
我们已经了解到如何通过 [GNU Screen][2] 进行多会话管理。今天,我们将要领略另一个著名的管理会话的命令行实用工具 **Tmux**。类似 GNU ScreenTmux 是一个帮助我们在单一终端窗口中创建多个会话同一时间内同时运行多个应用程序或进程的终端复用工具。Tmux 自由、开源并且跨平台,支持 Linux、OpenBSD、FreeBSD、NetBSD 以及 Mac OS X。本文将讨论 Tmux 在 Linux 系统下的高频用法。
### Linux 下安装 Tmux
### Linux 下安装 tmux
Tmux 可以在绝大多数的 Linux 官方仓库下获取。
@ -24,39 +24,38 @@ Tmux 可以在绝大多数的 Linux 官方仓库下获取。
$ sudo pacman -S tmux
```
Debian、Ubuntu 或 Linux Mint:
Debian、Ubuntu 或 Linux Mint
```
$ sudo apt-get install tmux
```
Fedora:
Fedora
```
$ sudo dnf install tmux
```
RHEL 和 CentOS:
RHEL 和 CentOS
```
$ sudo yum install tmux
```
SUSE/openSUSE
```
$ sudo zypper install tmux
```
以上,我们已经完成 Tmux 的安装。之后我们继续看看其他的 Tmux 示例。
以上,我们已经完成 Tmux 的安装。之后我们继续看看一些 Tmux 示例。
### Tmux 命令示例: 多会话管理
Tmux 默认所有命令的前置命令都是 **Ctrl+b**,使用前牢记这个快捷键即可。
* * *
Tmux 默认所有命令的前置命令都是 `Ctrl+b`,使用前牢记这个快捷键即可。
**注意** **Screen** 的前置命令都是 **Ctrl+a**.
> **注意****Screen** 的前置命令都是 `Ctrl+a`.
* * *
##### 创建 Tmux 会话
#### 创建 Tmux 会话
在终端中运行如下命令创建 Tmux 会话并附着进入:
@ -70,43 +69,43 @@ tmux
tmux new
```
Once you are inside the Tmux session, you will see a **green bar at the bottom** as shown in the screenshot below.
一旦进入 Tmux 会话,你将看到一个 **绿色的栏目沉在底部** 如下图所示。
一旦进入 Tmux 会话,你将看到一个 **沉在底部的绿色的边栏**,如下图所示。
![][3]
创建 Tmux 会话
*创建 Tmux 会话*
这个绿色的栏目能很容易提示,当前你是否身处 Tmux 会话当中。
这个绿色的边栏能很容易提示你当前是否身处 Tmux 会话当中。
##### 退出 Tmux 会话
#### 退出 Tmux 会话
退出当前 Tmux 会话仅需要使用 **Ctrl+b****d**。无需同时触发这两个快捷键,依次按下 “Ctrl+b” 和 “d” 即可。
退出当前 Tmux 会话仅需要使用 `Ctrl+b``d`。无需同时触发这两个快捷键,依次按下 `Ctrl+b``d` 即可。
退出当前会话后,你将能看到如下输出:
退出当前会话后,你将能看到如下输出。
```
[detached (from session 0)]
```
##### 创建有名会话
#### 创建有名会话
如果使用多个会话,你很可能会混淆运行在多个会话中的应用程序。这种情况下,我们需要会话并赋予名称。譬如需要 web 相关服务的会话,就创建一个名称为 **“webserver”**(或任意一个其他名称) 的 Tmux 会话。
如果使用多个会话,你很可能会混淆运行在多个会话中的应用程序。这种情况下,我们需要会话并赋予名称。譬如需要 web 相关服务的会话,就创建一个名称为 “webserver”或任意一个其他名称 的 Tmux 会话。
```
tmux new -s webserver
```
这里是 Tmux 有名会话
这里是新的 Tmux 有名会话
![][4]
拥有自定义名称的 Tmux 会话
*拥有自定义名称的 Tmux 会话*
当你能够看到上述截图,这个 Tmux 会话的名称已经被标注为 **webserver**。如此,你可以在多个会话中,轻易的区分应用程序的所在。
如你所见上述截图,这个 Tmux 会话的名称已经被标注为 “webserver”。如此,你可以在多个会话中,轻易的区分应用程序的所在。
退出会话,轻按 **Ctrl+b****d**
退出会话,轻按 `Ctrl+b``d`
##### 查看 Tmux 会话清单
#### 查看 Tmux 会话清单
查看 Tmux 会话清单,执行:
@ -118,13 +117,15 @@ tmux ls
![][5]
*列出 Tmux 会话*
如你所见,我们开启了两个 Tmux 会话。
##### 创建非附着会话
#### 创建非附着会话
有时候,你可能想要简单创建会话,但是并不想自动切入该会话。
创建一个非附着会话,并赋予名称 **“ostechnix”**,运行:
创建一个非附着会话,并赋予名称 “ostechnix”运行
```
tmux new -s ostechnix -d
@ -132,25 +133,27 @@ tmux new -s ostechnix -d
上述命令将会创建一个名为 “ostechnix” 的会话,但是并不会附着进入。
你可以通过使用 “tmux ls” 命令验证:
你可以通过使用 `tmux ls` 命令验证:
![][6]
##### 进入 Tmux 会话
*创建非附着会话*
通过如下命令,你可以进入最后一个被创建的会话:
#### 附着进入 Tmux 会话
通过如下命令,你可以附着进入最后一个被创建的会话:
```
tmux attach
```
Or,
抑或,
```
tmux a
```
如果你想进入任意一个指定的有名会话,譬如 “ostechnix”运行
如果你想附着进入任意一个指定的有名会话,譬如 “ostechnix”运行
```
tmux attach -t ostechnix
@ -162,7 +165,7 @@ tmux attach -t ostechnix
tmux a -t ostechnix
```
##### 关闭 Tmux 会话
#### 关闭 Tmux 会话
当你完成或者不再需要 Tmux 会话,你可以通过如下命令关闭:
@ -170,9 +173,9 @@ tmux a -t ostechnix
tmux kill-session -t ostechnix
```
当身处该会话时,使用 **Ctrl+b** 以及 **x**。点击 “y” 来关闭会话
当身处该会话时,使用 `Ctrl+b` 以及 `x`。点击 `y` 来关闭会话。
可以通过 “tmux ls” 命令验证。
可以通过 `tmux ls` 命令验证。
关闭所有 Tmux 服务下的所有会话,运行:
@ -189,70 +192,85 @@ $ tmux ls
no server running on /tmp/tmux-1000/default
```
##### 分离 Tmux 窗口
#### 切割 Tmux 窗口
分割窗口成多个小窗口,在 Tmux 中,这个叫做 “Tmux panes”Tmux 窗格)。每个窗格中可以同时运行多个不同的程序。每个窗格可以在不影响其他窗格的前提下可以调整大小、移动位置和控制关闭。我们可以水平、垂直或者二者混合的方式切割屏幕。
切割窗口成多个小窗口,在 Tmux 中,这个叫做 “Tmux 窗格”。每个窗格中可以同时运行不同的程序,并同时与所有的窗格进行交互。每个窗格可以在不影响其他窗格的前提下可以调整大小、移动位置和控制关闭。我们可以水平、垂直或者二者混合的方式切割屏幕。
**水平切割窗格**
##### 水平切割窗格
欲水平切割窗格,使用 **Ctrl+b****“**(半个双引号)。
欲水平切割窗格,使用 `Ctrl+b``"`(半个双引号)。
![][7]
使用组合键进一步切割面板。
##### 水平切割 Tmux 窗格
**垂直切割窗格**
可以使用组合键进一步切割面板。
垂直切割面板,使用 **Ctrl+b****%**
##### 垂直切割窗格
垂直切割面板,使用 `Ctrl+b``%`
![][8]
垂直切割 Tmux 窗格
*垂直切割 Tmux 窗格*
**水平、垂直混合切割窗格**
##### 水平、垂直混合切割窗格
我们也可以同时采用水平和垂直的方案切割窗格。看看如下截图:
![][9]
分割 Tmux 窗格
*切割 Tmux 窗格*
受限,我通过 **Ctrl+b “** 水平分割,之后通过 **Ctrl+b** 垂直分割下方的窗格。
首先,我通过 `Ctrl+b` `"` 水平切割,之后通过 `Ctrl+b` `%` 垂直切割下方的窗格。
如你所见,每个窗格下我运行了不同的程序。
**切换窗格**
##### 切换窗格
通过 **Ctrl+b****方向键(上下左右)** 切换窗格。
通过 `Ctrl+b` 和方向键(上下左右)切换窗格。
**发送命令给所有窗格**
##### 发送命令给所有窗格
之前的案例中,我们在每个窗格中运行了三个不同命令。其实,也可以发送相同的命令给所有窗格。
为此,使用 **Ctrl+b** 然后键入如下命令,之后按压 ENTER
为此,使用 `Ctrl+b` 然后键入如下命令,之后按下回车
```
:setw synchronize-panes
```
现在在任意窗格中键入任何命令。你看到相同命令影响了所有窗格。
现在在任意窗格中键入任何命令。你看到相同命令影响了所有窗格。
**Swap panes**
**交换窗格**
##### 交换窗格
使用 **Ctrl+b****o** 交换窗格。
使用 `Ctrl+b``o` 交换窗格。
**展示窗格数量**
##### 展示窗格号
使用 **Ctrl+b****q** 展示窗格数量
使用 `Ctrl+b``q` 展示窗格号
**终止窗格**
##### 终止窗格
要关闭窗格,直接键入 **exit** 并且使用 ENTER 键。或者,按压 **Ctrl+b****x**。你会看到确认信息。按压 **”y“** 关闭窗格。
要关闭窗格,直接键入 `exit` 并且按下回车键。或者,按下 `Ctrl+b``x`。你会看到确认信息。按下 `y` 关闭窗格。
![][10]
关闭窗格。
*关闭窗格*
##### 放大和缩小 Tmux 窗格
我们可以将 Tmux 窗格放大到当前终端窗口的全尺寸,以获得更好的文本可视性,并查看更多的内容。当你需要更多的空间或专注于某个特定的任务时,这很有用。在完成该任务后,你可以将 Tmux 窗格缩小(取消放大)到其正常位置。更多详情请看以下链接。
- [如何缩放 Tmux 窗格以提高文本可见度?](https://ostechnix.com/how-to-zoom-tmux-panes-for-better-text-visibility/)
#### 自动启动 Tmux 会话
当通过 SSH 与远程系统工作时,在 Tmux 会话中运行一个长期运行的进程总是一个好的做法。因为,它可以防止你在网络连接突然中断时失去对运行进程的控制。避免这个问题的一个方法是自动启动 Tmux 会话。更多详情,请参考以下链接。
- [通过 SSH 登录远程系统时自动启动 Tmux 会话](https://ostechnix.com/autostart-tmux-session-on-remote-system-when-logging-in-via-ssh/)
### 总结
这个阶段下,你已经获得了基本的 Tmux 技能来进行多会话管理,更多细节,参阅 man 页面。
@ -268,8 +286,8 @@ via: https://www.ostechnix.com/tmux-command-examples-to-manage-multiple-terminal
作者:[sk][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
译者:[chensanle](https://github.com/chensanle)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出