目录
1 tmux
1.1 简介
tmux是一个终端复用器,它允许用户在一个终端窗口中创建、访问和控制多个会话。使用tmux,用户可以在一个窗口中打开多个终端会话,无需打开新的终端窗口,这对于在远程服务器上工作或需要同时监视多个进程的情况特别有用。
另外如果需要在后台运行进程也可以使用tmux。tmux解绑了会话和终端窗口。关闭终端窗口再打开,会话并不终止,而是继续运行在执行。将会话与终端窗后彻底分离。
1.2 安装
tmux使用c语言实现的,地址:https://github.com/tmux/tmux.git
可运行在OpenBSD,FreeBSD,NetBSD,Linux,OS X,Solaris上
# 方法一:使用源码包
git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make
# 方法二:yum、apt安装
# Ubuntu 或 Debian
sudo apt-get install tmux
# CentOS 或 Fedora
yum install tmux
# Mac
brew install tmux
# 查看版本
tmux -V
#####
tmux 1.8
1.3 说明
使用:tmux [-28lCquvV] [-c shell-command] [-f file] [-L socket-name] [-S socket-path] [command [flags]]
options:
- -c shell-command:使用默认的shell执行shell命令
- -f file:指定一个配置文件,默认为/etc/tmux.conf,也可以使用 ~/.tmux.conf
- -l:作为登录 shell 运行
- -q:设置安静服务器选项,以防止服务器发送各种信息性消息。
- -v:请求详细的日志记录
- -V:tmux的
- -S socket-path:指定服务器套接字的完整替代路径
- -u:明确 tmux 支持 UTF-8。
KEY BINDINGS:以下选项是在tmux窗格中执行的快捷键,使用一个前缀键的组合,默认情况下是‘C-b’(Ctrl-b),然后跟上命令键。
- C-b(Ctrl-b) 所有命令键之前需要跟这个快捷键
- C-o(Ctrl-o) 在当前窗口中向前旋转窗格。
- C-z 暂停 tmux 客户端。
- ! 将当前窗格从窗口中分离出来。
- " 将当前窗格分割成上下两个
- #列出所有粘贴缓冲区
- $ 重命名当前会话
- % 将当前窗格分割成左右两个
- & 关闭当前窗口
- ’ 提示输入窗口索引以选择。
- , 重命名当前窗口
- -删除最近复制的文本缓冲区。(注意:这里是短横杠)
- . 提示输入索引以移动当前窗口。
- 0 到 9 选择 0 到 9 的窗口。
- : 进入 tmux 命令提示符。
- ; 移动到之前活动的窗格。
- ? 显示所有绑定键,相当于帮助命令
- = 从列表中交互式地选择哪个缓冲区进行粘贴
- D 选择一个客户端进行分离
- [ 进入复制模式以复制文本或查看历史记录
- ] 粘贴最近复制的文本缓冲区
- c 创建一个新窗口
- d 分离当前窗口
- f 提示在打开的窗口中搜索文本
- i 显示当前窗口的一些信息
- l 移动到之前选择的窗口
- n 切换到下一个窗口
- o 在当前窗口中选择下一个窗格
- p 切换到之前的窗口
- q 简短地显示窗格索引
- r 强制重绘未脱离的客户端
- s 选择并切换会话;在同时开启了多个会话时使用
- L 将附加的客户端切换回上一个会话。
- w 交互式地选择当前窗口。
- x 关闭当前窗格。
- { 将当前窗格与上一个窗格交换。
- } 将当前窗格与下一个窗格交换。
- ~ 如果有的话,显示来自 tmux 的先前消息。
- Page Up 进入复制模式并向上滚动一页。
- Up, Down 改变到当前窗格上方、下方的窗格。
- Left, Right 改变到当前窗格左边、右边的窗格。
- M-1 到 M-5 以五种预设布局之一排列窗格:水平均匀、垂直均匀、主要水平、主要垂直或平铺。
- M-n 移动到下一个有铃声或活动标记的窗口。
- M-o 在当前窗口中向后旋转窗格。
- M-p 移动到有铃声或活动标记的上一个窗口。
- C-Up, C-Down、C-Left, C-Right 以每个单元格为步长调整当前窗格的大小。
- M-Up, M-Down、M-Left, M-Right 以五个单元格为步长调整当前窗格的大小。
在窗格中直接执行:
- tmux list-keys:列出所有的key
- 以下所有 options和上面的命令执行方法一样
- set-option [-agoqsuw] [-t target-session | target-window] option value:对所有option进行设置
- set-window-option [-agqu] [-t target-window] option value (alias: setw):设置窗口选项
- show-options [-gqsvw] [-t target-session | target-window] [option] (alias: show):显示 tmux 窗口选项、服务器选项或会话选项
- -g:显示全局会话或窗口选项。
- -q:如果选项未设置,则不显示错误。
- -s:显示服务器选项。
- -t target-session | target-window:指定目标会话或窗口。
- -v:只显示选项的值,不显示选项名。
- -w:等价于 show-window-options 命令,显示窗口选项。
- option:指定要显示的单个选项。
- show-window-options [-gv] [-t target-window] [option] (alias: showw):列出目标窗口的窗口选项或单个选项,
- -g:列出全局窗口选项
- -v:仅显示选项的值,不显示选项名。
1.4 实例
1、最基本使用
# 启动tmux
tmux
# 退出
exit
2、在新会话执行某个命令
tmux new-session vi
tmux new vi
执行之后会显示如下画面:
3、在会话中新建会话、切换、断开、重新连接
# 首先启动tmux
tmux
# 新建会话(两个命令都可以)
Ctrl-b c
tmux new-window
# 新建一个指定名称的窗口
tmux new-window -n <window-name>
# 会话切换
Ctrl-b 0
Ctrl-b n 选择下一个窗口
Ctrl-b p 选择上一个窗口
可以看出和上面的会话不是同一个了
# 分离会话,保存当前会话并退出,以下两个命令都行
Ctrl-b d
tmux detach
# 需要注意:
# Ctrl-b d 是分离会话,相当于把会话放到后台运行
# exit 是直接退出,无法重新进入
# 重新进入刚才的会话
tmux attach-session
# 使用会话编号
tmux attach -t 0
# 使用会话名称
tmux attach -t <session-name>
下面是通过快捷键分离会话:
下面是使用exit退出
4、列出所有会话
tmux list-sessions
tmux ls
Ctrl+b s
#
0: 1 windows (created Thu Apr 25 17:41:47 2024) [80x23] (attached)
# 这个需要在tmux窗格中执行
5、将当前窗口分成两个
# 分成上下两个
Ctrl-b "
Ctrl-b %
# 移动之前选择的窗口,可以根据这个进行两个窗口间的切换
Ctrl-b l
# 下面的命令是在两个窗口之间进行切换
Ctrl-b o
6、重命名会话
tmux rename-session -t 0 <session-name>
# 0:是会话编号
Ctrl+b $
7、显示窗口编号
Ctrl+b q
8、使用 tmux 的滚动模式
1、进入滚动模式:按下 Ctrl+B 然后按 [ 进入复制/滚动模式。
2、翻页:在滚动模式中,使用 Page Up ( PageUp) 或 Page Down ( PageDown) 来上下翻页。
3、退出滚动模式:按下 Esc 键退出滚动模式。
9、使用 tmux 的搜索功能
1、进入搜索模式:按下 Ctrl+B 然后按 /。
2、搜索并高亮:输入你想要搜索的文本,搜索的结果会被高亮显示。
3、浏览搜索结果:使用 n 跳转到下一个匹配项,使用 N 跳转到上一个匹配项。
4、退出搜索模式:按下 Esc 键退出搜索模式。
10、使用 tmux 的缓冲区
1、进入缓冲区查看模式:按下 Ctrl+B 然后按 ] 进入缓冲区查看模式。
2、浏览缓冲区内容:使用方向键上下浏览缓冲区的内容。
3、退出缓冲区查看模式:按下 Esc 键退出缓冲区查看模式。
总结
tmux是一个终端复用器,适合用户在一个终端窗口中创建、访问和控制多个会话。
以上是我常用的一些操作,如果有没有提到的,也欢迎补充。