Tmux 教程(一): 终端复用器初步了解

  接下来几篇文章讲述的是Linux桌面终端的复用器,我们先从Tmux开始,文章主要翻译自FOSS LINUX网站,如有侵犯版本请及时联系,我们将在第一时间进行处理,同时要说明的是,我们不照原文进行100%翻译,而是根据需要进行整理,以便更容易为大家所理解。
  Tmux可以让我们在单一窗口管理多个终端会话,从而提高Linux系统的运维等管理工作的效率,那么我们从Tmux的基本命令开始讲起,希望大家通过此次教程也能成长为Tmux的高手。
在这里插入图片描述
  很多喜欢Linux的朋友都会在命令行模式下工作,经常会遇到频繁开关终端、运行多个命令、进程跟踪丢失等等情况,所以使用Tmux来解决这类需求的必要性就有了 。Tmux其实是一个终端复用器,它可以让我们在一个视窗中运行多个终端,拆卸和重新组装会话,还可以与其他用户分享终端会话。本文要为大家讲述的是Tmux基本命令的使用方法,借以提高我们日常生产工作的效能。

  关于Tmux中的有关术语的翻译,在各类中文资料中,如attach,有时翻译为附着、挂钩,有时翻译为组合等,detach有时翻译为分离、脱离,有时翻译为脱钩,个人认为这不便于理解Tmux的某些概念和实践应用,同时考虑到Tmux是一个终端复用器,与机电的拆卸组装雷同,它是以终端这个本体为基础,进行部件的组合和重新组合为方法,来极致化终端的效能,所以本文参考机电学和其他有关Tmux的中文资料,暂定翻译attach为组装、detach为拆卸、reattach为重新组装。

Tmux初解:终端复用的基础命令

  什么是Tmux?
  其实Tmux就是终端复用器的意思。通过这个命令行工具,我们可以在一个终端界面中创建和管理多个终端会话。Tmux在远程会话中显然是特别有用处,比如在实际的网络连接被断开之后,我们还能继续让操作会话运行。另外,我们还可以对终端的会话进行拆卸和重新组装,甚至可以在某一台机器中启动一个会话,然后拆卸了会话,而最终又可以在另一台机器上对会话进行重新组装起来。
  Tmux的工作机制其实与另一个终端复用器GNU Screen大同小异,我们也会在以后的文章中讲解GNU Screen,以及Tmux与其区别。然而我们知道Tmux比其它复用器提供了更多的高级功能,比如支持单一视窗的多窗格处理、client-server架构的多用户会话分享等等。

安装Tmux

  在开始讲解Tmux基础命令之前,我们先要安装Tmux,大部分的Linux发行版都提供了Tmux,使用其软件包管理器就可以来安装Tmux了,比如,在Ubuntu或者其他基于Debian的发行版中,我们可以运行以下代码来安装Tmux:

sudo apt-get install tmux

Ubuntu安装Tmux
  Fedora或者基于Red Hat的发行版,则使用以下代码安装Tmux:

sudo dnf install tmux

  Arch Linux的话则是:

sudo pacman -S tmux

  或者

yay -S tmux

  如果我们使用的是macOS操作系统,那么可以通过Homebrew命令来安装Tmux:

brew install tmux

  完成Tmux的安装之后,我们就可以进入主题了,来讲解Tmux的基本命令。

会话

  Tmux会话是终端复用的功能之一,可以让我们在一个终端界面中创建和管理多个终端会话,并对这些会话进行拆卸和组装等操作,因此我们就可以脱离那些需要在后台长时间运行任务的束缚转而处理其他会话,甚至可以关闭计算机。

  换句话说,一个Tmux会话就像一个容器,它可以容纳多个窗口,窗口中又容纳了多个窗格。我们就可以在同一个终端视窗中切换不同的任务或者项目,而不需要去打开多个终端视窗或者多标签页。开发者、系统管理员或者其他需要在命令行界面长时间工作的人就特别注重这个功能了。

新建Tmux会话

  我们要学习的第一个命令就是新建一个Tmux会话。创建一个新的会话,只需要在终端中输入:

tmux new -s session-name

  上面的代码会创建一个名称为“Session-name”的会话,当然也可以输入完整的命令代码:

tmux new-session -s session-name

注意:我们可以指定会话名称来代替上述的“session-name”会话名称,如果没有指定名称,那么Tmux就会自动创建一个名称,比如要创建一个名称叫做“foss-linux”的会话,那么代码就是:

tmux new -s foss-linux

  这时候,我们会看到终端视窗底部就出现了一个绿色的的状态栏,当然我们也可以对状态栏的颜色进行配置,比如下图中状态栏的颜色就是黄色的。状态栏除了显示会话的名称,还有机器的主机名、日期时间和当前的工作目录。
Tmux新建会话

切换Tmux会话

  切换Tmux会话可使用命令:

tmux switch -t session-name

  上面这个命令将会切换至session-name会话。
举例:
  比如我们要切换至“foss-linux”,那么我们可以执行以下代码:

tmux switch -t foss-linux

Tmux会话切换
  执行下面的代码来切换至下一个会话,而无须指定会话名称:

tmux switch-client -n

切换下一个会话
  我们看到上面的代码也是同样可以切换至session-name会话。当然,与上面的代码相反,我们也可以切换至上一个会话:

tmux switch-client -p

切换至上一个会话

拆卸和组装Tmux会话

  Tmux最强大的功能之一就是能够对多个会话拆卸和重新组装。拆卸会话可以让特定的会话在后台继续运行,我们就可以脱离特定会话的限制去做另一项任务。要拆卸会话可使用以下代码:

tmux detach

  这个命令将拆卸当前的会话并返回至shell的终端提示界面。

拆卸会话
  组装特定会话,我们就先要知道它的名称,通过以下命令来列出正在运行的会话:

tmux ls

  这个命令会列出全部的Tmux会话,包含会话的名称和状态。
列印会话
  要组装某个会话,则输入:

tmux attach -t session-name

  这个命令将会重新组装名称为“session-name”的会话。如果我们有多个会话在运行,那么可以通过以下切换命令切换至指定的会话:

tmux switch -t session-name

  比如,我们要切换至名称为“foss-linux”的会话,则:

tmux attach -t foss-linux

组装会话

重命名Tmux会话

  要为Tmux会话重新命名,我们可以使用以下命令:

tmux rename-session -t old-name new-name

  这个命令会将旧的会话名称修改成新的会话名称。比如,我们要将“foss-linux”修改成“foss-linux-tuts”,那么就是以下的代码:

tmux rename-session -t foss-linux foss-linux-tuts

重命名会话

列印Tmux会话

  我们要想列印全部Tmux会话,可以使用内置的打印命令:

tmux list-sessions

  当然,我们也可以使用“tmux ls”这个快捷命令来列出的全部Tmux会话。
列印会话

结束Tmux会话

  要结束某个Tmux会话,我们可以使用命令:

tmux kill-session -t session-name

  它将结束名称为“session-name”的会话。比如,要结束foss-linux-tuts会话,我们要执行以下代码:

tmux kill-session -t foss-linux-tuts

结束会话
  我们也可以使用下面的命令来结束所有的会话:

tmux kill-session -a

从其他终端中创建Tmux会话

  我们打开一个新的终端,并且想要从其他终端中选取一个会话并组装至当前的终端,从而创建一个新的Tmux会话,就可以使用以下命令:

tmux new -t foss-linux-tuts

  它将创建一个名称为foss-linux-tuts的会话,并组装至当前的终端。
从其他终端创建会话

分享Tmux会话

  与系统的其他用户分享会话也是Tmux独特的功能之一,对于结对式编程和远程协助工作就非常有益了,用以下命令先创建要分享会话的服务端:

tmux new-session -s fosslinux -d

要分离会话的服务端
  它将以拆卸的模式启动一个名称为“fosslinux”新会话的服务端,然而对它进行拆卸,并把会话的名称和主机名发送给其他用户,他们就可以运行以下命令来连接会话:

tmux attach -t fosslinux

  这将会把Tmux会话组装至其他用户的终端视窗中,双方可以在同一个shell中工作了。
组装分享会话

窗口

  在Tmux中,窗口类似于Web浏览或者文本编辑器的标签页。我们可以在一个终端界面中创建多个窗口,而每个窗口又可以有自己的shell,这样我们就可以进行多任务工作了。下面展示的是如何在Tmux中创建和切换窗口:

创建窗口

  要创建一个新窗口,可同时按下Ctrl-b c
创建新窗口
  这将创建一个有着默认shell的新窗口,通常是系统默认shell,比如Bash或者Zsh。我们也可以运行
"tmux new-window -n window-name shell-command"来指定shell,window-name是窗口的名称(可选),而shell-command是要在新窗口中运行的命令。

注意: Ctrl-b 为默认的tmux前缀。

切换窗口

  我们可以使用Ctrl-b nCtrl-b p命令来切换窗口。Ctrl-b n切换至下一个窗口,而ctrl-b p则切换到上一个窗口。
切换窗口
  我们也可以运行Ctrl-b [窗口编号]来切换至指定的窗口,[窗口编号]为要切换窗口的编号。

重命名窗口

  我们要先切换至要重命名的窗口才能对该窗口进行重命名,然后按下Ctrl-b , (逗号),进入重命名窗口模式。
重命名窗口
  我们就可以在这里编辑当前窗口的名称,按回车后保存新窗口。

关闭窗口

  要关闭窗口的话,先要确定我们不处于要关闭的窗口之中。我们先要用Ctrl-b n 或者Ctrl-b p命令切换至其它窗口,然后按下ctrl-b &来关闭当前窗口,关闭当前的窗口和窗口中的窗格。
关闭窗口

关闭全部窗口

我们可以用以下命令来关闭Tmux会话中的全部窗口:

tmux kill-session

它将关闭全部窗口并结束会话。如果还要保持多个会话运行,我们还需要指定哪个会话需要结束:

tmux kill-session -t session-name

上面代码中的“session-name”是要结束的会话的名称。

在这里插入图片描述

窗格

  在Tmux中,窗格就是在一个窗口中分割出来的屏幕区域。我们可以将一个窗口切割成多个窗格,而每个窗格都有自己的shell,这样我们就可以在同一个窗口中进行多任务工作。以下展示如何创建和管理窗格。

创建窗格

  按下Ctrl-b %水平拆分当前窗格。
水平拆分窗格
  我们也可以按下 ctrl-b ” (关闭引号)来垂直拆分当前窗格。
垂直拆分窗格
  新建的窗格都有默认shell,通常是系统默认的shell,比如Bash或者Zsh。我们还可以指定的shell命令:

tmux split-window -h shell-command

在这里插入图片描述

  上面这个命令可以水平拆分窗口并运行指定的命令。当然,也可以执行下面的命令来垂直拆分窗口并运行指定的命令。

tmux split-window -v shell-command

垂直拆分窗格

切换窗格

  我们可以使用 Ctrl-b 方向键快捷键来切换窗格。 Ctrl-b 方向键快捷键可以依所按键方向切换至下一个窗格。比如,ctrl-b 向左箭头可切换当前窗格至其左侧窗格。
在这里插入图片描述

  我们也可以运行ctrl-b q,来切换至指定的窗格,它可以显示当前视窗中的全部窗格的数字列表,输入相应的数字并回车就可以切换至我们想要的窗格。

在这里插入图片描述

调整窗格大小

  Ctrl-b 方向键 , 快捷键则可以用来调整窗格的大小,而且快捷键Ctrl-b ,有以下命令模式:
:resize-pane -U 向上增加当前窗格的区域
:resize-pane -D 向下增加当前窗格的区域
:resize-pane -L 向左增加当前窗格的区域
:resize-pane -R 向右增加当前窗格的区域

注意:必须 以( : ) 冒号启动命令模式
在这里插入图片描述

  当然,我们还可以在命令后面添加数字来定义区域的大小。比如“Ctrl-b : resize-pane -U 5” 命令可以向上增加5行区域。如果终端支持的话,我们还可以通过鼠标来拖放区域大小。
在这里插入图片描述

移动窗格

  我们还可以通过 Ctrl-b { 快捷键将当前窗格移至左侧,而Ctrl-b }快捷键可将当前窗格移至右侧。还可以通过Ctrl-b :进入命令模式,输入 swap-pane -[U|D|L|R] [目标窗格] 来选择,目标窗格为要交换窗格的编号。

关闭窗格

Ctrl-b x.快捷键可以关闭当前窗格以及窗格内所有运行的过程。
在这里插入图片描述

窗格拆分

  Tmux另一个强大功能是可以将一个窗口拆分成多个窗格,每个窗格都可以有自己的shell。水平拆分窗格,可用Ctrl-b %,将当前窗格水平拆分成两个窗格。
在这里插入图片描述

  垂直拆分窗格则使用Ctrl-b “快捷键。
在这里插入图片描述

  我们还可以使用Ctrl-b 方向键来切换窗格。比如Ctrl-b 向左方向键”向左移动窗格。

关闭窗格和窗口

  要关闭一个窗格,只须在shell中输入exit 或者使用Ctrl-d快捷键。它将关闭shell并从窗口中删除窗格。
在这里插入图片描述

要关闭一个窗口,要先确定我们不在该窗口中,可以通过Ctrl-b n或者Ctrl-b p快捷键切换至其他窗口,然后Ctrl-b &.来关闭窗口。
在这里插入图片描述

总结

  本文简单介绍了Tmux基本命令的使用。Tmux是一个强大的工具,可以让我们在一个视窗中创建和管理多个终端会话,也可以对会话进行拆卸和组装,还可以与其他用户分享会话等等。通过学习这些基本命令,我们就可以在命令行界面中更有效率地进行多任务工作。希望大家都能够工作中熟练应用Tmux,使它成为日常工作中的有用工具。谢谢!

猜你喜欢

转载自blog.csdn.net/weixin_37885187/article/details/129660417