tmux

tmux 是一个终端复用工具,用于实现终端和session之间的解耦。

什么是终端?
shell 提供了用户与操作系统进行交互的接口。用户通过终端来输入命令并查看命令的输出。
历史上的终端是包含键盘和显示器的硬件设备,我们如今使用的终端是软件实现的终端模拟器。

33 型 ASR 电传打印机,可用作计算机终端
Mac上的iTerm2

电传打字机,teletype,简称就是 tty。 😃 get 到了吗?

用户通过 login 命令登录主机时,在完成身份凭证的校验后,login 会使用 /etc/password 文件中指定的 shell 程序为用户创建一个初始 session。

为什么要终端复用?

一般情况下,一个终端对应一个 session。
当你需要一边编辑文件,一边执行命令时,这种情况就会显得很麻烦。因为你需要再开启一个终端,再 login 连接主机。
或者当你需要在服务器上跑一个长时间的程序时,到达时间限制时,session 会断开,运行的程序作为 session 的子进程也会终止。

终端复用工具可以在单个终端窗口中同时运行多个终端会话, 或从终端分离和重新连接会话。具体功能如下:

  • tmux允许用户创建和管理多个会话,每个会话可以包含多个窗口和窗格,用户可以在不同会话之间切换。
  • 可以将终端窗口分割成多个窗格。这对于同时运行多个命令或程序很有用。
  • tmux可以在断开连接或关闭终端时保存当前会话的状态,用户可以在重新连接后恢复之前的会话。

安装

brew install tmux

基本概念

  • session 会话:一个服务器可以包含多个会话
  • window 窗口:一个会话可以包含多个窗口
  • pane 面板:一个窗口可以包含多个面板

基础指令

参考 👉 link

插件

插件列表 👉 list

插件管理器

tpm tmux plugin manager

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

📄 tmux.conf

set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

run '~/.tmux/plugins/tpm/tpm'

重启 tmux 环境

tmux source ~/.tmux.conf

保存工作区

有时候服务器还是需要重启的,重启之后所有 session 都会丢失,开机后还得重新建立 session ,window 和 pane。

使用 tmux-resurrect ,可以一键保存工作区。

📄 tmux.conf

set -g @plugin 'tmux-plugins/tmux-resurrect'

⌨️ 快捷键

  • 保存 prefix + Ctrl-s
  • 恢复 prefix + Ctrl-r

References

[1] Shall We Code?, Unix 终端系统(TTY)是如何工作的
[2] tmux-plugins, list
[3] JAIME’S GUIDE TO TMUX: THE MOST AWESOME TOOL YOU DIDN’T KNOW YOU NEEDED
[4] 深耕AI, 命令行界面 (CLI)、终端 (Terminal)、Shell、TTY,傻傻分不清楚?
[5] 神秘通信男, macOS Tmux安装及配置(复制粘贴,保存工作区)
[6] 阮一峰, Tmux 使用教程


tmux
http://guoguo.host/blog/p/8980c419.html
作者
Guoguo
发布于
2023年8月29日
许可协议