热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tmux无法创建会话_Tmux使用技巧总汇

为了强化Linux使用技巧,打算学习一下超强Linux工具。0x01初识TmuxTmux是一个终端复用器(terminalmultiplexer),非常

为了强化Linux使用技巧,打算学习一下超强Linux工具。

0x01 初识Tmux

Tmux 是一个终端复用器(terminal multiplexer),非常有用。如果能够熟练使用将会给日常的操作带来极大的便利。Tmux 解决了会话(session)与窗口(windows)绑定(共生存)的问题。可以使得session脱离窗口而存活,这个改变解决了很多问题,相当于一个接口实现了解耦合。

举个例子,我们打开terminal执行命令,然后关掉再次打开时不会是以前的会话,而是一个新的会话。如果使用tmux创建的会话,那么就可以将窗口关掉下次直接attach 就可以还原当前会话,是不是很方便。

0x1 基本概念

前面说了这么多先了解一下基本的几个概念,在tmux中有个操作键在所有功能键之前施放,如下所示,该键后续均用Cb表示

操作键Control + b

1 session(会话)

tmux的最大单元,所有session加起来存储的是整个tmux记录,再次打开时读取的session信息。利用Cb + s 展示当前计算机中所有的session

7289834d513457fc3a3dff565e2c99ed.png

2 window(窗口)

在session中有window的概念,一个session可包含多个window如下图所示。利用Cb + n/p 可以选择或移动窗口,或者更改配置文件激活鼠标点击,后面有详细的配置介绍。

b174e857d09fc853a14a239cc90b97c4.png

3 pane(面板)

pane是对窗口进行分割,也就是一个屏幕中可以有多个pane。如下图所示就是面板样式

e971d4637e8885dc9c340f45bc6d5248.png

0x02 安装

0x1 安装tmux

# Ubuntu 或 Debian
$ sudo apt-get install tmux

# CentOS 或 Fedora
$ sudo yum install tmux

# Mac
$ brew install tmux

0x2 安装插件管理器 TPM(Tmux Plugin Manager)

tmux有专门的插件管理器(2.1版本后才支持),通过插件管理器可以很方便地安装插件。安装过程如下:

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

下载完成后将下面代码粘贴在~/.tmux.conf

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'git@github.com/user/plugin'
# set -g @plugin 'git@bitbucket.com/user/plugin'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

更新配置 tmux source ~/.tmux.conf

0x4 Tmux配置文件

1 tmux 新配置项

新的配置项已简化为

set -g mouse on

之后执行tmux source ~/.tmux.conf

2 tmux 老配置项

以下的配置项在新版本中已经被废弃

setw -g mouse-resize-pane on
setw -g mouse-select-pane on
setw -g mouse-select-window on
setw -g mode-mouse on

setw 指令为老版本tmux内置指令,在bash中不能运行

0x03 基本用法

0x1 bash内会话管理

1 新建会话

第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。使用编号区分会话,不太直观,更好的方法是为会话起名。 $ tmux new -s  上面命令新建一个指定名称的会话。

2 后台运行

在 Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。 $ tmux detach 上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。 tmux ls命令可以查看当前所有的 Tmux 会话。

$ tmux ls
# or
$ tmux list-session

3 接入会话

tmux attach命令用于重新接入某个已存在的会话。

# 使用会话编号
$ tmux attach -t 0

# 使用会话名称
$ tmux attach -t

4 发送指令到会话执行

tmux send 命令用于发送给后台session去执行命令,用于已经存在的会话。

# 指定发送的session_name 和指令command内容
tmux send -t session_name "command" ENTER

5 关闭会话

tmux kill-session命令用于杀死某个会话。

# 使用会话编号
$ tmux kill-session -t 0

# 使用会话名称
$ tmux kill-session -t

0x2 tmux内会话管理

指令功能
Cb+d将当前会话放置后台运行
Cb+s列出所有会话 并选择
Cb+$重命名当前对话

0x3 bash内window操作

1 划分窗口

tmux split-window命令用来划分窗格。一般用处不大只做记录。

# 划分上下两个窗格
$ tmux split-window

# 划分左右两个窗格
$ tmux split-window -h

2 创建新窗口

tmux new-window命令用来创建新窗口。

$ tmux new-window

# 新建一个指定名称的窗口
$ tmux new-window -n

3 切换窗口

tmux select-window命令用来切换窗口。

# 切换到指定编号的窗口
$ tmux select-window -t

# 切换到指定名称的窗口
$ tmux select-window -t

4 重命名窗口

tmux rename-window命令用于为当前窗口起名(或重命名)。

$ tmux rename-window

0x4 tmux内window操作

指令功能
Ctrl+b c创建一个新窗口,状态栏会显示多个窗口的信息
Ctrl+b &关闭当前窗口
Ctrl+b p切换到上一个窗口(按照状态栏上的顺序)
Ctrl+b n切换到下一个窗口
Ctrl+b w从列表中选择窗口
Ctrl+b 切换到指定编号的窗口,其中的是状态栏上的窗口编号
Ctrl+b ,窗口重命名

0x5 pane操作

1 移动光标

tmux select-pane命令用来移动光标位置。一般用处不大只做记录。

# 光标切换到上方窗格
$ tmux select-pane -U

# 光标切换到下方窗格
$ tmux select-pane -D

# 光标切换到左边窗格
$ tmux select-pane -L

# 光标切换到右边窗格
$ tmux select-pane -R

2 交换pane位置

tmux swap-pane命令用来交换窗格位置。


# 当前窗格上移
$ tmux swap-pane -U

# 当前窗格下移
$ tmux swap-pane -D

3 pane快捷键

指令功能
Ctrl+b %划分左右两个pane
Ctrl+b "划分上下两个pane
Ctrl+b 光标切换到其他pane是指向要切换到的pane的方向键,比如切换到下方pane,就按方向键↓
Ctrl+b ;光标切换到上一个pane
Ctrl+b o光标切换到下一个pane
Ctrl+b {当前pane左移
Ctrl+b }当前pane右移
Ctrl+b Ctrl+o当前pane上移
Ctrl+b Alt+o当前pane下移
Ctrl+b x关闭当前pane
Ctrl+b !将当前pane拆分为一个独立窗口
Ctrl+b z当前pane全屏显示,再使用一次会变回原来大小
Ctrl+b Ctrl+按箭头方向调整pane大小
Ctrl+b q显示pane编号
0x04 插件

0x1 安装log记录插件

有两种安装方法,一种利用tpm插件安装一种手动安装 日志记录插件使用方法为:Cb + P 记录格式:tmux-#{session_name}-#{window_index}-#{pane_index}-%Y%m%dT%H%M%S.log 记录目录: $HOME (user home dir)

tpm插件安装 在 ~/.tmux.conf中添加 set -g @plugin 'tmux-plugins/tmux-logging'

在tmux中利用Cb + I 更新并使用插件


git clone http://www.github.com/tmux-plugins/tmux-logging
0x05 操作流

0x1 日常操作流

  1. tmux new -s "session name"

  2. Cb + c 创建新窗口

  3. Cb + , 修改窗口名字

  4. 重复2,3操作

  5. 利用Cb + n/p切换窗口

0x2 批量操作流

  1. tmux new -d -s "a1" 在后台创建会话

  2. tmux send -t a1 "command" ENTER a1发送会话

  3. 重复执行1,2




推荐阅读
author-avatar
饰间人爱642_370
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有