mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
PRF
@chensanle 感谢你,完成了第一篇翻译贡献!
This commit is contained in:
parent
02d79786cd
commit
47db2eccaf
@ -1,6 +1,6 @@
|
|||||||
[#]: collector: (lujun9972)
|
[#]: collector: (lujun9972)
|
||||||
[#]: translator: ( chensanle )
|
[#]: translator: (chensanle)
|
||||||
[#]: reviewer: ( )
|
[#]: reviewer: (wxy)
|
||||||
[#]: publisher: ( )
|
[#]: publisher: ( )
|
||||||
[#]: url: ( )
|
[#]: url: ( )
|
||||||
[#]: subject: (Tmux Command Examples To Manage Multiple Terminal Sessions)
|
[#]: subject: (Tmux Command Examples To Manage Multiple Terminal Sessions)
|
||||||
@ -10,11 +10,11 @@
|
|||||||
基于 Tmux 的多会话终端管理示例
|
基于 Tmux 的多会话终端管理示例
|
||||||
======
|
======
|
||||||
|
|
||||||
![tmux 命令示例][1]
|
![](https://img.linux.net.cn/data/attachment/album/202102/11/101058ffso6wzzw94wm2ng.jpg)
|
||||||
|
|
||||||
我们已经了解到如何通过 [**GNU Screen**][2] 进行多会话管理。今天,我们将要领略另一个著名的命令行实用工具 **“Tmux”** 来管理会话。类似 GNU Screen,tmux 是一个帮助我们在单一终端窗口中创建多个会话,同一时间内同时运行多个应用程序或进程的终端复用工具。Tmux 免费、开源并且跨平台,支持 Linux、OpenBSD、FreeBSD、NetBSD 以及 Mac OS X。本文将讨论 Tmux 在 Linux 系统下的高频用法。
|
我们已经了解到如何通过 [GNU Screen][2] 进行多会话管理。今天,我们将要领略另一个著名的管理会话的命令行实用工具 **Tmux**。类似 GNU Screen,Tmux 是一个帮助我们在单一终端窗口中创建多个会话,同一时间内同时运行多个应用程序或进程的终端复用工具。Tmux 自由、开源并且跨平台,支持 Linux、OpenBSD、FreeBSD、NetBSD 以及 Mac OS X。本文将讨论 Tmux 在 Linux 系统下的高频用法。
|
||||||
|
|
||||||
### Linux 下安装 Tmux
|
### Linux 下安装 tmux
|
||||||
|
|
||||||
Tmux 可以在绝大多数的 Linux 官方仓库下获取。
|
Tmux 可以在绝大多数的 Linux 官方仓库下获取。
|
||||||
|
|
||||||
@ -24,39 +24,38 @@ Tmux 可以在绝大多数的 Linux 官方仓库下获取。
|
|||||||
$ sudo pacman -S tmux
|
$ sudo pacman -S tmux
|
||||||
```
|
```
|
||||||
|
|
||||||
Debian、Ubuntu 或 Linux Mint:
|
Debian、Ubuntu 或 Linux Mint:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo apt-get install tmux
|
$ sudo apt-get install tmux
|
||||||
```
|
```
|
||||||
|
|
||||||
Fedora:
|
Fedora:
|
||||||
```
|
```
|
||||||
$ sudo dnf install tmux
|
$ sudo dnf install tmux
|
||||||
```
|
```
|
||||||
|
|
||||||
RHEL 和 CentOS:
|
RHEL 和 CentOS:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo yum install tmux
|
$ sudo yum install tmux
|
||||||
```
|
```
|
||||||
|
|
||||||
SUSE/openSUSE:
|
SUSE/openSUSE:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo zypper install tmux
|
$ sudo zypper install tmux
|
||||||
```
|
```
|
||||||
|
|
||||||
以上,我们已经完成 Tmux 的安装。之后我们继续看看其他的 Tmux 示例。
|
以上,我们已经完成 Tmux 的安装。之后我们继续看看一些 Tmux 示例。
|
||||||
|
|
||||||
### Tmux 命令示例: 多会话管理
|
### Tmux 命令示例: 多会话管理
|
||||||
|
|
||||||
Tmux 默认所有命令的前置命令都是 **Ctrl+b**,使用前牢记这个快捷键即可。
|
Tmux 默认所有命令的前置命令都是 `Ctrl+b`,使用前牢记这个快捷键即可。
|
||||||
* * *
|
|
||||||
|
|
||||||
**注意** **Screen** 的前置命令都是 **Ctrl+a**.
|
> **注意**:**Screen** 的前置命令都是 `Ctrl+a`.
|
||||||
|
|
||||||
* * *
|
#### 创建 Tmux 会话
|
||||||
|
|
||||||
##### 创建 Tmux 会话
|
|
||||||
|
|
||||||
在终端中运行如下命令创建 Tmux 会话并附着进入:
|
在终端中运行如下命令创建 Tmux 会话并附着进入:
|
||||||
|
|
||||||
@ -70,43 +69,43 @@ tmux
|
|||||||
tmux new
|
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]
|
![][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)]
|
[detached (from session 0)]
|
||||||
```
|
```
|
||||||
|
|
||||||
##### 创建有名会话
|
#### 创建有名会话
|
||||||
|
|
||||||
如果使用多个会话,你很可能会混淆运行在多个会话中的应用程序。这种情况下,我们需要会话并赋予名称。譬如需要 web 相关服务的会话,就创建一个名称为 **“webserver”**(或任意一个其他名称) 的 Tmux 会话。
|
如果使用多个会话,你很可能会混淆运行在多个会话中的应用程序。这种情况下,我们需要会话并赋予名称。譬如需要 web 相关服务的会话,就创建一个名称为 “webserver”(或任意一个其他名称) 的 Tmux 会话。
|
||||||
|
|
||||||
```
|
```
|
||||||
tmux new -s webserver
|
tmux new -s webserver
|
||||||
```
|
```
|
||||||
|
|
||||||
这里是 Tmux 的有名会话
|
这里是新的 Tmux 有名会话:
|
||||||
|
|
||||||
![][4]
|
![][4]
|
||||||
|
|
||||||
拥有自定义名称的 Tmux 会话
|
*拥有自定义名称的 Tmux 会话*
|
||||||
|
|
||||||
当你能够看到上述截图,这个 Tmux 会话的名称已经被标注为 **webserver**。如此,你可以在多个会话中,轻易的区分应用程序的所在。
|
如你所见上述截图,这个 Tmux 会话的名称已经被标注为 “webserver”。如此,你可以在多个会话中,轻易的区分应用程序的所在。
|
||||||
|
|
||||||
退出会话,轻按 **Ctrl+b** 和 **d**。
|
退出会话,轻按 `Ctrl+b` 和 `d`。
|
||||||
|
|
||||||
##### 查看 Tmux 会话清单
|
#### 查看 Tmux 会话清单
|
||||||
|
|
||||||
查看 Tmux 会话清单,执行:
|
查看 Tmux 会话清单,执行:
|
||||||
|
|
||||||
@ -118,13 +117,15 @@ tmux ls
|
|||||||
|
|
||||||
![][5]
|
![][5]
|
||||||
|
|
||||||
|
*列出 Tmux 会话*
|
||||||
|
|
||||||
如你所见,我们开启了两个 Tmux 会话。
|
如你所见,我们开启了两个 Tmux 会话。
|
||||||
|
|
||||||
##### 创建非附着会话
|
#### 创建非附着会话
|
||||||
|
|
||||||
有时候,你可能想要简单创建会话,但是并不想自动切入该会话。
|
有时候,你可能想要简单创建会话,但是并不想自动切入该会话。
|
||||||
|
|
||||||
创建一个非附着会话,并赋予名称 **“ostechnix”**,运行:
|
创建一个非附着会话,并赋予名称 “ostechnix”,运行:
|
||||||
|
|
||||||
```
|
```
|
||||||
tmux new -s ostechnix -d
|
tmux new -s ostechnix -d
|
||||||
@ -132,25 +133,27 @@ tmux new -s ostechnix -d
|
|||||||
|
|
||||||
上述命令将会创建一个名为 “ostechnix” 的会话,但是并不会附着进入。
|
上述命令将会创建一个名为 “ostechnix” 的会话,但是并不会附着进入。
|
||||||
|
|
||||||
你可以通过使用 “tmux ls” 命令验证:
|
你可以通过使用 `tmux ls` 命令验证:
|
||||||
|
|
||||||
![][6]
|
![][6]
|
||||||
|
|
||||||
##### 进入 Tmux 会话
|
*创建非附着会话*
|
||||||
|
|
||||||
通过如下命令,你可以进入最后一个被创建的会话:
|
#### 附着进入 Tmux 会话
|
||||||
|
|
||||||
|
通过如下命令,你可以附着进入最后一个被创建的会话:
|
||||||
|
|
||||||
```
|
```
|
||||||
tmux attach
|
tmux attach
|
||||||
```
|
```
|
||||||
|
|
||||||
Or,
|
抑或,
|
||||||
|
|
||||||
```
|
```
|
||||||
tmux a
|
tmux a
|
||||||
```
|
```
|
||||||
|
|
||||||
如果你想进入任意一个指定的有名会话,譬如 “ostechnix”,运行:
|
如果你想附着进入任意一个指定的有名会话,譬如 “ostechnix”,运行:
|
||||||
|
|
||||||
```
|
```
|
||||||
tmux attach -t ostechnix
|
tmux attach -t ostechnix
|
||||||
@ -162,7 +165,7 @@ tmux attach -t ostechnix
|
|||||||
tmux a -t ostechnix
|
tmux a -t ostechnix
|
||||||
```
|
```
|
||||||
|
|
||||||
##### 关闭 Tmux 会话
|
#### 关闭 Tmux 会话
|
||||||
|
|
||||||
当你完成或者不再需要 Tmux 会话,你可以通过如下命令关闭:
|
当你完成或者不再需要 Tmux 会话,你可以通过如下命令关闭:
|
||||||
|
|
||||||
@ -170,9 +173,9 @@ tmux a -t ostechnix
|
|||||||
tmux kill-session -t ostechnix
|
tmux kill-session -t ostechnix
|
||||||
```
|
```
|
||||||
|
|
||||||
当身处该会话时,使用 **Ctrl+b** 以及 **x**。点击 “y” 来关闭会话
|
当身处该会话时,使用 `Ctrl+b` 以及 `x`。点击 `y` 来关闭会话。
|
||||||
|
|
||||||
可以通过 “tmux ls” 命令验证。
|
可以通过 `tmux ls` 命令验证。
|
||||||
|
|
||||||
关闭所有 Tmux 服务下的所有会话,运行:
|
关闭所有 Tmux 服务下的所有会话,运行:
|
||||||
|
|
||||||
@ -189,70 +192,85 @@ $ tmux ls
|
|||||||
no server running on /tmp/tmux-1000/default
|
no server running on /tmp/tmux-1000/default
|
||||||
```
|
```
|
||||||
|
|
||||||
##### 分离 Tmux 窗口
|
#### 切割 Tmux 窗口
|
||||||
|
|
||||||
分割窗口成多个小窗口,在 Tmux 中,这个叫做 “Tmux panes”(Tmux 窗格)。每个窗格中可以同时运行多个不同的程序。每个窗格可以在不影响其他窗格的前提下可以调整大小、移动位置和控制关闭。我们可以水平、垂直或者二者混合的方式切割屏幕。
|
切割窗口成多个小窗口,在 Tmux 中,这个叫做 “Tmux 窗格”。每个窗格中可以同时运行不同的程序,并同时与所有的窗格进行交互。每个窗格可以在不影响其他窗格的前提下可以调整大小、移动位置和控制关闭。我们可以以水平、垂直或者二者混合的方式切割屏幕。
|
||||||
|
|
||||||
**水平切割窗格**
|
##### 水平切割窗格
|
||||||
|
|
||||||
欲水平切割窗格,使用 **Ctrl+b** 和 **“**(半个双引号)。
|
欲水平切割窗格,使用 `Ctrl+b` 和 `"`(半个双引号)。
|
||||||
|
|
||||||
![][7]
|
![][7]
|
||||||
|
|
||||||
使用组合键进一步切割面板。
|
##### 水平切割 Tmux 窗格
|
||||||
|
|
||||||
**垂直切割窗格**
|
可以使用组合键进一步切割面板。
|
||||||
|
|
||||||
垂直切割面板,使用 **Ctrl+b** 和 **%**
|
##### 垂直切割窗格
|
||||||
|
|
||||||
|
垂直切割面板,使用 `Ctrl+b` 和 `%`。
|
||||||
|
|
||||||
![][8]
|
![][8]
|
||||||
|
|
||||||
垂直切割 Tmux 窗格
|
*垂直切割 Tmux 窗格*
|
||||||
|
|
||||||
**水平、垂直混合切割窗格**
|
##### 水平、垂直混合切割窗格
|
||||||
|
|
||||||
我们也可以同时采用水平和垂直的方案切割窗格。看看如下截图:
|
我们也可以同时采用水平和垂直的方案切割窗格。看看如下截图:
|
||||||
|
|
||||||
![][9]
|
![][9]
|
||||||
|
|
||||||
分割 Tmux 窗格
|
*切割 Tmux 窗格*
|
||||||
|
|
||||||
受限,我通过 **Ctrl+b “** 水平分割,之后通过 **Ctrl+b** 垂直分割下方的窗格。
|
首先,我通过 `Ctrl+b` `"` 水平切割,之后通过 `Ctrl+b` `%` 垂直切割下方的窗格。
|
||||||
|
|
||||||
如你所见,每个窗格下我运行了不同的程序。
|
如你所见,每个窗格下我运行了不同的程序。
|
||||||
|
|
||||||
**切换窗格**
|
##### 切换窗格
|
||||||
|
|
||||||
通过 **Ctrl+b** 和 **方向键(上下左右)** 切换窗格。
|
通过 `Ctrl+b` 和方向键(上下左右)切换窗格。
|
||||||
|
|
||||||
**发送命令给所有窗格**
|
##### 发送命令给所有窗格
|
||||||
|
|
||||||
之前的案例中,我们在每个窗格中运行了三个不同命令。其实,也可以发送相同的命令给所有窗格。
|
之前的案例中,我们在每个窗格中运行了三个不同命令。其实,也可以发送相同的命令给所有窗格。
|
||||||
|
|
||||||
为此,使用 **Ctrl+b** 然后键入如下命令,之后按压 ENTER:
|
为此,使用 `Ctrl+b` 然后键入如下命令,之后按下回车:
|
||||||
|
|
||||||
```
|
```
|
||||||
:setw synchronize-panes
|
: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]
|
![][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 页面。
|
这个阶段下,你已经获得了基本的 Tmux 技能来进行多会话管理,更多细节,参阅 man 页面。
|
||||||
|
|
||||||
@ -268,8 +286,8 @@ via: https://www.ostechnix.com/tmux-command-examples-to-manage-multiple-terminal
|
|||||||
|
|
||||||
作者:[sk][a]
|
作者:[sk][a]
|
||||||
选题:[lujun9972][b]
|
选题:[lujun9972][b]
|
||||||
译者:[译者ID](https://github.com/译者ID)
|
译者:[chensanle](https://github.com/chensanle)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user