tmux系列:1、终端复用工具tmux介绍和使用简介

tmux系列:1、终端复用工具tmux介绍和使用简介


1. 前言

之前总结过win10下cmder+wsl的多终端配置使用,这里在最后也留了一个悬念,对于Linux服务器首次安装配置时只有一个终端的情况下我们如何进行多任务处理,解决方案就是终端复用工具,就像网络编程中的多路复用一样将一个终端复用,目前看使用比较广泛、功能比较强大和易用的终端复用器Tmux

2. tmux简介

tmux 是一个终端复用器自由软件,功能类似 GNU Screen,但使用 ISC许可证发布。用户可以通过 tmux 在一个终端内管理多个分离的会话,窗口及面板,对于同时使用多个命令行,或多个任务时非常方便。

tmux 采用 client/server 模型,主要由以下模块组成:

模块简介
server服务。tmux 运行的基础服务,以下模块均依赖此服务。
session会话。一个服务可以包含多个会话。
window窗口。一个会话可以包含多个窗口。
panel面板。一个窗口可以包含多个面板。

执行 tmux 命令时就开启了一个服务并创建了一个会话,窗口和面板。

tmux功能特性:

  • 一个虚拟终端可以管理多个会话,窗口和面板
  • 支持分屏,同时处理多个操作
  • 窗口、面板可以在会话间自由移动,切换
  • 丰富灵活的状态行展示
  • 支持自定义快捷键,依照个人习惯配置令操作更高效
  • 不受断网影响,避免丢失重要工作进度
  • 结对编程,方便演示与协作
  • 自带复制粘贴缓冲区管理
  • 脚本化配置,可配置多种操作环境

3. 如何学习tmux

可以直接在GitHub上查看安装方式和相关内容(这里的内容是会随着tmux的版本不断更新的):https://github.com/tmux/tmux/wiki

在此处下载tmux 3.2a此版本中的更改)。

看:

ok,这里已经说明了一手资料的来源,有什么问题可以在上述相关位置搜寻,接下来我将简单总结tmux的安装和基本使用,便于后续回顾。

4. 安装

简单来说包括二进制包安装和源码安装两种方式,源码安装需要依赖libevent 2.x和ncurses。

二进制包安装方式(Windows下一般使用wsl,我在使用Ubuntu20.04时发现默认安装有tmux,没有的话Ubuntu系列安装方式下面也有描述):

PlatformInstall Command
Arch Linuxpacman -S tmux
Debian or Ubuntuapt install tmux
Fedoradnf install tmux
RHEL or CentOSyum install tmux
macOS (using Homebrew)brew install tmux
macOS (using MacPorts)port install tmux
openSUSEzypper install tmux

源码安装方式(注意依赖库的安装):

下载源码后解压后:
./configure && make
sudo make install
或者拉取最新版本:
git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make

5. 使用简介

5.1 主要用途

mutex的主要用途是(我这里主要使用第三个用途):

  • 通过在tmux内运行远程服务器上运行的程序,以防止连接中断。
  • 允许运行在远程服务器上的程序从多个不同的本地计算机访问。
  • 在一个终端中同时使用多个程序和shell,有点像窗口管理器。

举个例子(可以理解成一系列后台程序的运行管理,即使断开终端客户端也不会影响这些运行在tmux中的程序运行,从另一个计算机的远程终端客户端通过ssh连接远程服务器后再连接tmux后还可以继续执行刚才运行在tmux中的任务):

  • 用户从工作计算机上的xterm(1)使用ssh(1)连接到远程服务器,并运行几个程序。也许是一个编辑器,一个编译器和一些shell。
  • 他们交互地使用这些程序,可能开始编译,然后用tmux关闭xterm(1),然后回家。
  • 然后,它们可以从本地连接到同一个远程服务器,连接到tmux,并从原来的位置继续。

在这里插入图片描述

5.2 获取帮助

这里有几个地方可以找到关于tmux的文档和帮助:

  • 手册页有关于tmux的详细参考文档,以及每个命令、标志和选项的描述。一旦安装了tmux,它也可以在第1节中使用:man 1 tmux
  • FAQ提供了常见问题的解决方案,主要是关于特定的配置问题。
  • The tmux-users@googlegroups.com mailing list.

在这里插入图片描述

5.3 基础概念

Tmux有一组基本的概念和术语,熟悉这些概念和术语很重要。本节描述了tmux内部的终端是如何组合在一起的,以及tmux使用的各种术语。

tmux服务器和客户端

Tmux将其所有状态保存在一个主进程中,称为Tmux服务器。它在后台运行,管理tmux内运行的所有程序,并跟踪它们的输出。tmux服务器在用户执行tmux命令时自动启动,在没有程序运行时默认退出。

用户通过启动客户端连接到tmux服务器。它接管运行它的终端,并使用/tmp中的套接字文件与服务器对话。每个客户端运行在一个终端中,它可以是X(7)终端,如xterm(1),系统控制台,或另一个程序内部的终端(如tmux本身)。每个客户端都以启动它的外部终端的名称来标识,例如/dev/ttypf

会话、窗口和窗格

tmux中的每个终端都属于一个窗格,这是一个矩形区域,它显示了tmux中终端的内容。因为tmux中的每个终端都只显示在一个窗格中,所以术语窗格可以用来表示所有窗格、终端和在其中运行的程序。右边的屏幕截图显示了带窗格的tmux。

在这里插入图片描述

每个窗格显示在一个窗口中。一个窗口由一个或多个窗格组成,它们一起覆盖整个区域-所以多个窗格可能同时可见。一个窗口通常占据了连接tmux的整个终端,但它可以更大或更小。窗口中所有窗格的大小和位置称为窗口布局。

每个窗口都有一个名称——默认情况下,tmux会选择一个,但用户可以更改它。窗口名称不必是唯一的,窗口通常由会话和窗口索引来标识,而不是它们的名称。

每个窗格与它周围的窗格用一行隔开,这称为窗格边框。每个窗口中都有一个窗格称为活动窗格,这是发送输入的任何文本的地方,是用于针对该窗口的命令的默认窗格。活动窗格的窗格边框以绿色标记,或者如果只有两个窗格,则边框的上、下、左或右半部分为绿色。

在这里插入图片描述

多个窗口被组合成会话。如果一个窗口是一个会话的一部分,那么它被称为链接到该会话。Windows可能同时链接到多个会话,尽管它们大多只在一个会话中。会话中的每个窗口都有一个编号,称为窗口索引——同一个窗口可以在不同会话中的不同索引上被链接。会话的窗口列表是按其索引顺序链接到该会话的所有窗口。

每个会话都有一个当前窗口,这是附加会话时显示的窗口,是任何针对会话的命令的默认窗口。如果当前窗口被更改,前一个当前窗口将被称为最后一个窗口。

会话可以连接到一个或多个客户机,这意味着它显示在该客户机正在运行的外部终端上。输入到该外部终端的任何文本都被发送到附加会话的当前窗口中的活动窗格。会话没有索引,但是它们有一个名称,该名称必须是唯一的。

简而言之:

  • 程序在窗格中的终端中运行,每个窗格属于一个窗口。
  • 每个窗口都有一个名称和一个活动窗格。
  • 窗口被链接到一个或多个会话。
  • 每个会话都有一个窗口列表,每个窗口都有一个索引。
  • 会话被附加到零个或多个客户机上。
  • 每个客户机都连接到一个会话。
术语总结
TermDescription
Client从外部终端(如xterm(1))附加tmux会话
Session将一个或多个窗口组合在一起
Window将一个或多个窗格组合在一起,链接到一个或多个会话
Pane包含一个终端和正在运行的程序,显示在一个窗口中
Active pane当前窗口中发送输入的窗格;每一个窗口
Current window在附加会话中发送输入的窗口;每一个会话
Last window前一个当前窗口
Session name会话的名称,默认为从0开始的数字
Window list会话中按编号顺序排列的窗口列表
Window name窗口的名称,默认为活动窗格中正在运行的程序的名称
Window index会话窗口列表中窗口的编号
Window layout窗口中窗格的大小和位置

5.4 简单交互

前缀键

一旦附加了tmux客户机,输入的任何键都被转发到当前窗口的活动窗格中运行的程序。对于控制tmux本身的键,必须先按一个特殊的键-这被称为前缀键。

默认的前缀键是C-b,这意味着Ctrl键和b。在tmux中,修改键的前缀是C-表示控制键,M-表示元键(在现代计算机上通常是Alt键),S-表示shift键。这些可以组合在一起,所以C-M-x意味着同时按control键、meta键和x。

当按下前缀键时,tmux将等待另一个键按下,这将决定执行哪个tmux命令。像这样的键在这里显示,它们之间有一个空格:C-b c意味着首先按下前缀键C-b,然后释放它,然后按下c键。如果有必要,在按下C-b后必须小心释放Ctrl键-C-b cC-b C-c不同。

按两次C-b会将C-b键发送给正在活动窗格中运行的程序。

帮助键

每个默认的tmux键绑定都有一个简短的描述来帮助记住键的作用。按C-b ?可以看到所有键的列表。

C-b ?进入视图模式以显示文本。视图模式下的窗格有自己的键绑定,不需要前缀键。这些大体上遵循emacs(1)。最重要的是Up, Down, C-Up, C-Down来上下滚动,q来退出模式。顶部可见行的行号和总行数显示在右上角。

在这里插入图片描述

或者,同样的列表可以在shell中运行:

$ tmux lsk |more

C-b /显示单个键的描述-在终端的底部出现一个提示符。按下一个键会在相同的地方显示它的描述。例如,按C-b / 然后?显示(部分版本可能还没有该功能):

C-b ? List key bindings

最简单的使用方式:创建一个会话,创建一个窗口,创建多个窗格,如下:

# 创建一个会话和默认的窗口0
tmux new -s test
# 上下分割窗格
C-b "
# 左右分割窗格
C-b %
# 上下左右切换窗格
C-b up/down/left/right
# 退出
exit

6. 最后

如果我们只是简单的终端复用,那么到这里基本满足要求了,将一个终端窗口最终通过tmux可以分成很多个窗格执行不同的任务,不用开很多终端。但是,tmux的功能远不止这点,如果对其它功能感兴趣可以接着往下看,不感兴趣的话讲tmux当成一个多开窗口的工具记着上面几个命令就够用了。

下面是windows下结合Moba-Xterm使用的截图,复用终端的话任务多时候会整洁很多(不然就要开一堆终端了):

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称系统有问题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值