工具| 終端復用命令行神器–tmux
- 2019 年 11 月 12 日
- 筆記
一 前言
經常使用命令行的運維肯定會遇到如何防止網絡中斷導致正在進行從操作失敗的情況,比如執行一個耗時好幾個小時的操作或者方便管理窗口的需求,比如在同一個窗口邊執行命令邊查看程序的log 。通常我們使用screen 或者nohup的方式解決長時間執行的命令。本文介紹另一款窗口復用神器–tmux。用過tmux,大家都不想繼續使用screen 了。。
其核心功能:
提供了強勁的、易於使用的命令行界面。可橫向和縱向分割窗口。支持 UTF-8 編碼及 256 色終端。可在多個緩衝區進行複製和粘貼。可通過交互式菜單來選擇窗口、會話及客戶端。支持跨窗口搜索。支持自動及手動鎖定窗口。可以自由配置綁定快捷鍵。
二 tmux 構成
tmux(terminal multiplexer)是Linux上的終端復用神器,可從一個屏幕上管理多個終端,tmux的結構包括會話(session)、窗口(window)、窗格(pane)三部分。

三 使用
鑒於tmux的構成分三部分,tmux命令使用主要的對象是 會話(session),窗口(window)和窗格(pane)。常用的動作包含創建、關閉(退出)、重命名、連接、分離、選擇。
tmux默認的快捷鍵前綴是Ctrl+b(下文用prefix指代),按下前綴組合鍵後鬆開,再按下命令鍵進行快捷操作,比如使用prefix d分離會話(應該寫作prefix d而不是prefix+d,因為d鍵不需要與prefix同時按下)。
3.1 session操作
tmux new 創建默認名稱的會話 tmux new -s mysession 創建名為mysession的會話 tmux ls 顯示會話列表 tmux a 連接上一個會話 tmux a -t mysession 連接指定會話,tmux a -t 1 tmux rename -t s1 s2 重命名會話s1為s2 tmux kill-session 關閉上次打開的會話 tmux kill-session -t s1 關閉會話s1 tmux kill-session -a -t s1 關閉除s1外的所有會話 tmux kill-server 關閉所有會話
常用快捷鍵
prefix s 列出會話,可進行切換

prefix d 分離當前會話

prefix a -t number 其中number是 tmux ls 獲取的序列號 從0 開始

3.2 window操作
prefix c 創建一個新窗口 prefix , 重命名當前窗口 prefix w 列出所有窗口,可進行切換 prefix n 進入下一個窗口 prefix p 進入上一個窗口 prefix l 進入之前操作的窗口 prefix 0~9 選擇編號0~9對應的窗口 prefix . 修改當前窗口索引編號 prefix ' 切換至指定編號(可大於9)的窗口 prefix f 根據顯示的內容搜索窗格 prefix & 關閉當前窗口
在 session 1 中 使用 crtl+b c 創建三個窗口。

3.4 窗格管理
prefix % 水平方向創建窗格 prefix " 垂直方向創建窗格 prefix Up|Down|Left|Right 根據箭頭方向切換窗格 prefix q 顯示窗格編號 prefix o 順時針切換窗格 prefix } 與下一個窗格交換位置 prefix { 與上一個窗格交換位置 prefix x 關閉當前窗格 prefix space(空格鍵) 重新排列當前窗口下的所有窗格 prefix ! 將當前窗格置於新窗口 prefix Ctrl+o 逆時針旋轉當前窗口的窗格 prefix t 在當前窗格顯示時間 prefix z 放大當前窗格(再次按下將還原) prefix i 顯示當前窗格信息
3.3 自定義 tmux 適配
一般安裝完tmux ,可以通過 ~/.tmux.conf
來調整tmux 的配置,獲取最佳的用戶體驗。推薦一個mac OS 的配置 https://github.com/gpakosz/.tmux
小結
本文算是一篇how to 文檔,大家有興趣的 可以進一步探索 tmux 的各種功能,比如結合鼠標提高自己的工作效率。