当前位置: 首页 > 科技观察

LinuxTerminalMultiplexer神器Tmux使用详细说明,看完回家躺平~

时间:2023-03-22 14:46:28 科技观察

Tmux是TerminalMultiplexer的缩写,是一款优秀的终端多路复用软件,类似GNUscreen,但比screen好。tmux来自OpenBSD,由BSD授权。使用它最直观的好处是,通过终端登录远程主机并运行tmux后,可以在其中打开多个控制台,而无需“浪费”额外的终端连接远程主机。还有一个好处是,当终端关闭后,shell中运行的任务进程也会被打断。使用tmux可以很容易地解决这个问题。Tmux可用于在一个终端窗口中运行多个终端会话。不仅如此,你还可以让终端会话在后台运行或者通过Tmux按需连接和断开会话,这非常有用。Tmux的使用场景可以是一个程序在执行时一直处于输出状态,需要结合nohup和&后台执行,ctrl+c结束。这时候可以打开一个Tmux窗口,在这个窗口中执行程序,保证程序一直在运行。只要不关闭Tmux窗口,不同地方的两个人就可以操作同一个session,一方可以操作另一方。可以实时看到在单屏灵活布局下可以打开多个终端,然后可以协同使用原来终端中的任务进程仍然不会中断Tmux功能:提供了一个强大易用的-使用命令行界面。窗口可以水平和垂直分割。窗格可以自由移动和调整大小,或利用四种预设布局中的一种。支持UTF-8编码和256色终端。复制和粘贴可以在多个缓冲区中完成。可以通过交互式菜单选择窗口、会话和客户端。支持跨窗口搜索。支持自动和手动锁定窗口。tmux安装Ubuntu版可以直接使用apt安装sudoapt-getinstalltmuxCentOS版使用yum安装yuminstall-ytmuxInstallHomebrewruby-einmacOS"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"installtmuxbrewinstalltmux查看tmux版本-VTmux安装完成后,输入命令tmux打开软件,界面很简洁,类似一个终端控制台,下面有一个状态栏;但是根据tmux的定义,在开启tmuxserver之后,会先创建一个session,这个session会先创建一个window,它只包含一个panel;也就是说,这里看到的所谓终端控制台应该叫做tmux的一个面板,虽然它的使用方法和终端控制台是一模一样的。#tmux//直接进入面板,效果如下:tmux快捷键使用说明:Ctrl+b激活控制台;此时,以下按键生效系统运行?列出所有快捷键;按q返回d离开当前会话;这个可以暂时回到Shell界面,输入tmuxattach重新进入之前的sessionD选择要detached的session;当多个会话同时打开时使用Ctrl+z暂停当前会话r强制重绘未分离会话的选择和切换会话;多个会话同时打开时使用:进入命令行模式;这时可以输入支持的命令,比如kill-server可以关闭服务器[进入复制模式;此时的操作和vi/emacs一样,按q/Esc退出~列出提示信息缓存;包含tmux之前返回的各种窗口操作提示信息c新建一个窗口&关闭当前窗口numberkeys切换到指定窗口p切换到上一个窗口n切换到下一个窗口l切换上一个和下一个窗口w通过窗口列表切换窗口,重命名当前窗口;这很容易识别。修改当前窗口号;相当于窗口重新排序f在所有窗口中查找指定的文本面板操作》将当前面板分为上下两部分%将当前面板分为左右两部分x关闭当前面板!将当前面板放在新窗口中;即创建一个仅包含当前面板的新窗口Ctrl+箭头键将边缘移动1个单元格以调整当前面板的大小Alt+箭头键通过预设的面板布局,以5格为单位移动边缘调整当前面板大小SpaceCycle;包括even-horizo??ntal,even-vertical,main-horizo??ntal,main-vertical,tiledq显示面板编号oin选择当前窗口的下一个面板方向键移动光标选择面板{向前替换当前面板}向后替换当前面板Alt+o逆时针旋转当前窗口的面板Ctrl+o顺时针旋转当前窗口的面板tmuxwindowone在一个tmux会话中你可以有多个窗口,每个窗口又可以分为多个窗格。我们工作的最小单位实际上是一个窗格。默认情况下,在一个窗口中,只有一个大窗格,它占据了整个窗口区域。我们在这个领域工作。我们先来看一下tmux窗口的相关操作,然后再说说pane的相关知识。首先,在新建的会话中默认会创建一个窗口。就像我们上面提到的图表一样。默认情况下,将在新创建的会话中创建一个窗口。本例窗口名称为0:bash,0为序号。我们可以通过crtl+b,(在组合键后按一个逗号)来修改当前窗口的名称,如上图显示的窗口名称linuxmi就是修改后的名称。名字后面有一个*,表示该窗口是活动窗口(键盘输入会被输入到窗口中)。修改窗口名称,修改窗口名称后创建一个窗口。可以在当前会话窗口中创建多个窗口,如ctrl+bc创建后,会多出一个窗口,如下图所示:默认情况下,创建的窗口由窗口序号+窗口名称组成。可以通过上述方法修改窗口名称。可以看到新建的窗口后面有一个*号,表示是当前窗口。切换窗口这么多窗口,如何在同一个会话中的多个窗口之间切换?可以使用以下快捷键进行操作:ctrl+bp(上一个首字母)切换到上一个窗口。ctrl+bn(next首字母)切换到下一个窗口。ctrl+b0切换到0号窗口,以此类推,可以换成任意窗口号ctrl+bw(windows首字母)列出当前会话的所有窗口,使用上下键切换窗口ctrl+bl(小写字母L)在相邻窗口之间切换3.ctrl+b&关闭窗口ctrl+b&关闭当前窗口,会提示是否关闭当前窗口,按y确认。tmuxpanetmux的一个窗口可以分成多个panes,可以做出分屏的效果。1.ctrl+b%垂直分屏(组合键后按一个百分号),用一条竖线将当前窗口分成左右两屏。2.ctrl+b"水平分屏(组合键后按一个双引号),用一条水平线将当前窗口分为上下两屏。分屏后光标停留在哪个窗格表示窗格处于活动状态,一般情况下,当前窗格会被绿线包围,一般情况下,当前窗口名称在分屏后会重置为默认窗口名称。通过多次分屏操作,我们可以获得各种分屏效果。比如下图是垂直分屏后右窗格再次水平分屏的效果:可以看到右下角的分屏是一个绿色的框,说明了如何切换当前活动窗格。Ctrl+bo依次切换当前窗口下的各个窗格。ctrl+bUp|Down|Left|Right选择根据箭头方向切换到一个pane。ctrl+bSpace(空格键)重新排列当前窗口下所有窗格的布局,每按一次改变样式。ctrl+bz最大化当前窗格。再按一次恢复。另一种切换方式是ctrl+bq,tmux会显示每个pane的序号,按这个序号就可以跳转到这个pane(慢按是不行的,要在数字消失前按)。关闭窗格ctrl+bx关闭当前正在使用的窗格。运行后会提示是否关闭。按y确认并关闭它。终端显示时间快捷键:先按ctrl+b,再按t退出时间界面:按q键tmuxls终端环境查看会话列表在终端环境下,我们可以使用tmuxls命令查看后台运行的tmux的session列表,例如:可以看到listedlist中只有1行,表示只有一个session,左边的0表示session的名称,中间3个窗口表示session0会话中有3个窗口,右边表示session是什么时候创建的。如果有多个tmux会话在该机器的后台运行,这里将列出多行。由于tmuxsession是在后台运行的,我们猜测实际上一定有一个tmux进程在后台运行来维护这些session。总结一下tmux中最重要的三个概念:session、windows、panes。介绍了使用方法。这也是我们操作tmux最常用的函数。只要掌握得好,足以应对大部分日常工作。除此之外,tmux还有一些高级的用法,比如可以个性化组合键(官方默认的ctrl+b组合键不方便按可以修改,UI设置,鼠标支持,复制粘贴等。).