目录
Linux终端复用器tmux的玩法
1 Tmux简介
Tmux是Linux下非常实用的终端复用器。在终端执行多任务时通常是等待一个任务退出之后执行下一个任务或者不得不打开多个终端执行任务,这种托节奏的方法效率较低,Tmux的正是为了解决这一问题而设计的。首先需要清楚的是在一个终端窗口中,您可以打开多个窗口和拆分视图(在tmux术语中称为“窗格”)。每个窗格都包含自己独立运行的终端实例。这允许您使多个终端命令和应用程序在视觉上彼此相邻地运行,而无需打开多个终端仿真器窗口。Tmux能够创建不同的“会话”,每个“会话”代表了一个独立的终端工作区,同时每个“会话”能够划分为多个“窗口”,每个"窗口"又能划分出不同的"窗格",而每个"窗口"中的"窗格"都是能够独立运行bash命令的区域,他们之间互不干扰,且能并行运行不同的命令。tmux会在会话中保留这些窗口和窗格。您可以随时退出会话。这称为“分离”。tmux将使该会话保持活动状态,直到您终止tmux服务器为止(例如,当您重新启动时)。tmux基于客户端 - 服务器架构,虽然这很少相关,但了解东西的工作原理会很有帮助。tmux服务器跟踪所有正在运行的会话。您将只使用tmux客户端并创建新会话或连接到现有会话。简而言之,Tmux充当终端的窗口管理器,允许您在单个终端窗口中创建多个窗口和窗格,让一个终端能够分割成不同区域,并行执行不同命令的终端复用工具。
2 Tmux的安装
sudo apt-get install tmux
3 Tmux的玩法
直接在当前终端输入“tmux”就会开启tmux并自动进入tmux窗口,此时之分出一个窗口。在开启新的会话之后就可以开启各种玩法之旅了。tmux中的所有命令都由前缀键后跟命令键触发(与emacs非常相似)。使用方式为先按下前缀按键(prefix key),然后按下命令键(command key)就会触发功能。prefix key默认是Ctrl+b
,即同时按住ctrl
和b
键。
3.1 command key列表
对窗格的操作:
%:左右分窗格;
":上下分窗格;
<arrow key>:窗格导航,如配合使用left方向键时会导航到当前窗格的左端;
对窗口的操作:
c:创建新窗口;
p:切换到前一个窗口;
n:切换到下一个窗口;
<number>:切换到号窗口,窗口号在窗口下端的status bar上显示。
对会话的操作:
d:脱离当前tmux会话,回到bash下,会话会运行在后台;
D:从tmux选择一个会话进行脱离;
bash敲入tmux ls可以查看到当前在运行的所有tmux sessions;
bash敲入tmux attach -t <number>用于连接到对应的会话;
bash敲入tmux new -s aMeaningfulName创建一个会话并赋予名字;
bash敲入tmux rename-session -t <number> aMeaningfulName为第号的session赋予一个新的名字。
bash敲入tmux attach -t sessionName重新连接名字对应的session。
3.2 Tmux常用组合命令
Ctrl+b z
:使窗格全屏显示。Ctrl+b z
再次点击将其缩小回原先的尺寸Ctrl+b Ctrl+-<arrow key>
:按<箭头键> 方向调整窗格大小Ctrl+b ,
:重命名当前窗口
3.3 Tmux创建删除会话
#创建一个名称为Session1的新会话,新会话会自动创建一个窗口,窗口名称为调用它的程序的名称,本例是使用bash创建的,窗口0的名称自然就是bash
root@myy /root $ tmux new -s Session1
#创建完成之后就进入tmux的界面了,如果想退出,直接输入"exit"回车后就退出了当前会话,会话也不会在后台运行,如果此时我们在会话中运行了一些命令(比如日志监控命令),想让这个会话在后台运行,只需要按下键盘的[ctrl]+[b]组合键,之后再单独按一下[d],就能将会话保存到后台运行了,d的意思就是"detached"
#将会话保存到后台之后,可以使用下面的命令查看他们
qing@qingsword:~$ tmux ls
#这是刚才创建的会话"Session1",会话中创建了一个窗口"1 windows"(默认创建会话就会创建一个窗口)
root@myy /root $ tmux ls
0: 2 windows (created Sat May 25 08:21:28 2019) [122x22]
Session1: 1 windows (created Sat May 25 09:55:03 2019) [122x22]
blog: 2 windows (created Wed May 25 10:24:10 2016) [80x23] (attached)
#这是另外一个会话"blog",是我之前创建的,其中有两个窗口,后面的(attached)代表这个会话在另外一个终端中正在使用,但这并不代表当前终端不能调用它,如果两个终端同时调用了这个会话,那么会话中的命令将在两个终端中同步显示
#将会话重新加载到前台,参数-t后面接要加载到前台的会话名称,大家可以尝试着创建多个会话,然后使用这种方法在不同会话之间切换
root@myy /root $ tmux attach -t Session1或者root@myy /root $ tmux a -t Session1
#删除会话,将会话放入后台运行后,如果不需要使用了,可以使用下面的命令删除这个会话
root@myy /root $ tmux kill-session -t Session1或者在该窗口输入exit
3.4 Tmux在会话中创建窗口
介绍完会话的创建,现在来看看如何在会话中创建多个窗口,每个窗口就像浏览器的不同标签页,我们可以在每个标签页之间切换来执行不同的命令,在会话中使用组合键[ctrl]+[b],之后再单独按一下[c],注意底部状态栏的变化,会在"0:bash"后面多一个个"1:bash",这说明已经新创建了一个窗口,窗口号是1,名称是bash,如果想改变当前窗口的名称,可以使用组合键[ctrl]+[b],之后再单独按一下[,](英文状态下的逗号),输入一个名称回车即可,如果想在不同的窗口切换,可以使用组合键[ctrl]+[b],之后再单独按一下[0],就切换到了0号窗口,窗口名称后面带星号(*)的是当前所在窗口,以此类推。在窗口中没有窗格的情况下,直接输入"exit"回车后就能删除当前窗口,如果窗口下存在窗格,依次在窗格中使用exit退出,成为单窗格的时候,再次exit就删除了当前窗口。
3.5 Tmux在窗口中创建窗格
在窗口中,创建不同窗格的方法也很简单,只需要使用组合键[ctrl]+[b],之后再单独输入[%](英文状态下的百分号),就能将当前窗口划分为左右分隔的窗格;而如果使用组合键[ctrl]+[b],之后再单独输入["](英文状态下的双引号)就能将当前窗格分隔成上下两个窗格,以此类推。那么如何在不同窗格之间切换呢?只需要使用组合键[ctrl]+[b],之后再单独按下键盘的上下左右键,即可在不同窗格之间切换,删除窗格只要在当前窗格输入"exit"回车即可。
上面这些就是Tmux的最基本用法,更多好玩的用法大家可以通过man去查找。
4 参考
A Quick and Easy Guide to tmux:https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/
[ubuntu入门手册]-21-使用Tmux终端复用器:https://www.qingsword.com/qing/ubuntu-tmux.html