10x 程序员之 tmux

栏目: IT技术 · 发布时间: 4年前

内容简介:Tmux可以在一个session即会话,当使用tmux的快捷键采用

Preface

日常的工作当中,总是免不了同时进行多个终端任务的情况。典型的是  SSH  到线上的不同主机,查看日志信息等。面对这种情况,开启一堆的终端(如下图所示),单窗口切换就让人晕头转向,更不用说不小心关了窗口后还得重复之前的工作。出现这种烦恼之后,就尝试看看有没有什么东西可以帮助解决这个问题题,经过一翻折腾,最后  tmux  优雅的出现了。

10x 程序员之 tmux

Tmux

tmux is a terminal multiplexer.

Tmux可以在一个  terminal 终端窗口中管理多个  session 会话,多个  session 之间轻松的切换, 同时  tmux 的  session 会话可以在多个  terminal 终端之间共享和复用。 tmux 以  deamon 线程在后台运行一个  server ,所有的  session 由该线程进行维护和管理,使得  session 与  terminal 终端分离。

会话 (Session)

  session即会话,当使用  terminal 建立与主机的连接后,也就是建立了一个  session 。传统的  terminal 终端与  session 1:1 绑定, session 随着  terminal 的开启与关闭而建立和终止。 tmux 中的会话与终端无任何关系, terminal 的角色只是一个通信的工具。 tmux 中的  session 是一个  server 对应多个  session 的  1:N 的模式,如下图所示。

10x 程序员之 tmux

新建会话 (New)

  • 不指定名称,直接执行  tmux 命令,此时自动分配一个  session 数字名称,从  0 开始递增;
  • 指定名称,执行  tmux new -s <session-name> , 此时  session 就具有一个易于辩识的名称;

脱离会话 (Detach)

  • 命令式: 处于  session 内时,直接在执行命令  tmux detach ,即可使  session 进入后台运行;
  • Ctrl+b d
    Ctrl
    b
    d
    

tmux的快捷键采用  Ctrl+b 的组合方。

查看会话 (List)

脱离会话后,若想查看后台运行的会话,则可使用 list 相关的命令,以列表的形式展示会话。

tmux list-sessions  // 标准命令
tmux ls // 简写命令

重命名会话 (Rename)

有时我们可能在一个 session 中,做多件事情或者重新建立连接到新的主机,这里可能会话名称有可能无法表达对应的意思,从而有了更名的需要。 tmux 为我们提供两种更名方式,如下:

  • 命令式:  tmux rename -t <old_name> <new_name>
  • 快捷键:  ctrl+b $, <new_name>

进入会话 (Entry)

session进入使用的命令是  attach , 使用  attch 后,就可把后台运行的  session 唤回前台执行。

tmux attach-session                   // 进入最近脱离的一个 session 会话
tmux attach-session <session-name> // 进入指定的 session 会话

不能在一个 session 中  attach 另外一个  session ,   tmux 不支持  session 的嵌套使用。

销毁会话 (Destroy)

tmux的  session 可以脱离  terminal 终端存活,所以  session 的结束不会随着终端的关闭而结束, session 的结束需要执行特定的命令方可。

tmux kill-session -t <session_name> 	// 在任意的 terminal 终端中执行即可
exit // 这个只针对于结束当前 session

切换会话 (Switch)

当在一个 session 执行任务时,如果想切换到别的  session 时,可采用快捷键进行切换,而不用退出后再重新进入。

ctrl+b (  	// 前一个会话
ctrl+b ) // 下一个会话
ctrl+b L // 最后一个会话
ctrl+b s // 列出所有会话

Ctrl+b s 列出会话后,需要使用  h j k l 或者方向键进行选择,然后  Enter 键进入。

窗体 (Window)

tmux的一个  session 支持多个  windowsession 与  windonw 之间的关系如下图所示。

10x 程序员之 tmux

创建窗体 (New)

session中的  window 可以简单的对应为一个  terminial 终端的展示界面,因为每个  window 使用时,它独占了整个  terminal 的展示界面。 window 的创建有如下两种方式:

  • 命令式:  tmux new-window
  • 快捷键:  ctrl+b c

窗体切换 (Switch)

window的切换命令综合如下:

ctrl+b p 		// 前一个
ctrl+b n // 下一个
ctrl+b <n> // 这儿的 <n> 代表数字,切换到对应数字的窗体
ctrl+b w // 列表展示出所有的窗体
ctrl+b l // 切换到最一个会话
ctrl+b & y // 关闭当前窗体
ctrl+b ' <n> // <n> 代表窗体的编号

窗格格 (Pane)

tmux的  window 也可再切分成更小的单元,那就是  pane 窗格。 pane 可以在一个  window 中同时展示多个不同的内容, 如图所示。

10x 程序员之 tmux

窗格操作 (Operation)

ctrl+b % 		// 垂直分割
ctrl+b " // 水平分割
ctrl+b o // 窗格间按顺序切换
ctrl+b ↑ | ↓ | ← | → // 向指定方向切换
ctrl+b Space // 重新调整窗格大小
ctrl+b z // 当前窗格最大化
ctrl+b x // 关闭当前窗格

配置 (Config)

窗格绑定 (Bind)

   软件的修改化使用始终是离不开配置文件, tmux 使用  ~/.tmux.conf 为配置文件。如果你是一个  Vim 的重度使用者,那么在  pane 的切换时,肯定不习惯方向键的使用,而偏向于  h j k l 进行导航。而  tmux 也支持此功能,仅需在配置文件中加入下面的绑定语句就可。

# hjkl pane traversal
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

如果你在修改配置文件前没有启动 tmux 的话,你修改配置文件后马上就生效,但是如果你是在  tmux 运行当中修改的话,还需要执行命令加载配置文件,命令如下:

ctrl+b :, source-file ~/.tmux.conf

复制粘贴 (copypaste)

tmux支持的复制功能比较强大与方便,需启用  vi 模式的支持。修改  ~/.tmux.conf 配置文件,添加如下配置。

# vi copypaste mode
set -g mode-keys vi

  复制粘贴模式流程如下:

1. `ctrl+b [`  	// 进入复制粘贴模式
2. `space` // 开始选择内容
3. `enter` // 复制内容
4. `ctrl+b ]` // 粘贴内容

进入文本复制和粘贴模式,可以使用相关的 Vim 命令进行操作,快捷而高效。

Appendix


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

"笨办法"学Python

"笨办法"学Python

肖 (Zed A.Shaw) / 王巍巍 / 人民邮电出版社 / 2014-11-1 / CNY 49.00

本书是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。 本书结构非常简单,共包括52个习题,其中26个覆盖了输入/输出、变量和函数三个主题,另外26个覆盖了一些比较高级的话题,如条件判断、循环、类和对象、代码测......一起来看看 《"笨办法"学Python》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

html转js在线工具
html转js在线工具

html转js在线工具