Tmux基本使用(2021.1.31)
Tmux基本使用(2021.1.31)
目錄一.基本概念
1.1 會話
命令列的典型使用方式是開啟一個終端視窗,在裡面輸入命令。使用者與計算機的這種臨時的互動稱為一次會話(session)。
會話的一個重要特點是視窗與其中啟動的程序是連在一起的。開啟視窗,會話開始;關閉視窗,會話結束,會話內部的程序也會隨之終止,不管有沒有執行完。
一個典型的例子就是,ssh
登入遠端計算機,開啟一個遠端視窗執行命令。這時網路突然斷線,再次登入的時候,是找不回上一次執行的命令的。因為上一次的ssh
會話已經終止了,裡面的程序也隨之消失了。
為了解決這個問題,需要將會話與視窗“解綁”:視窗關閉時,會話並不終止,而是繼續進行,等到以後需要的時候,再讓會話“繫結”其他視窗。
1.2 Tmux
Tmux
是一款優秀的終端複用軟體, 能夠實現會話與視窗的“解綁”,將它們徹底分離。類似的終端複用器還有GNU Screen
。Tmux
功能與它相似,但是更易用,也更強大。
- 它允許在單個視窗中同時訪問多個會話,這對於同時執行多個命令列程式很有用。雖然
iterm
和windows terminal
等也支援橫向和豎向分屏功能,但這種分屏完全就是新開一個視窗,新開的pane
不會自動進入當前工作目錄,也不會記住當前的登陸狀態。比如當用ssh
連線到遠端伺服器時,iTerm
和windows terminal
新開的pane
中要重新用ssh
登入伺服器,而Tmux
就不會這樣,它新開的pane
ssh
等工具的登入狀態,這樣就可以隨意增刪pane
,非常靈活。 - 它可以讓新視窗重新接入已經存在的會話。即使命令列的工作只進行到一半,關閉終端後還可以重新進入到操作現場繼續工作。比如對於
ssh
遠端連線而言,即使網路不穩定掉線了,還是可以重新連線的,而且之前執行中的任務依舊在進行,就好像從來沒有離開過一樣,特別是在遠端伺服器上執行耗時的任務,Tmux
可以幫助你一直保持住會話。 - 它允許每個會話有多個連線視窗,因此可以多人實時共享會話。將
Tmux
會話的地址分享給其他人,這樣他們就可以通過ssh
接入該會話。比如要給同事演示遠端伺服器的操作,他不必直勾勾的盯著你的螢幕,藉助Tmux
他完全可以直接進入到你的會話,看著你進行操作。 - 它允許每個
session
(會話)有多個window
(視窗),視窗預設會充滿會話介面,在這些視窗中可以執行一些相關性不大的任務。每個window
又可以包含多個pane
(窗格),視窗下的窗格都處於同一介面下,在這些窗格中可以執行一些相關性高的任務,以便同時觀察到它們的執行情況。
二.基本用法
2.1 安裝
Tmux
一般需要自己安裝。
# Ubuntu 或 Debian
$ sudo apt-get install tmux
# CentOs 或 Fedora
$ sudo yun install tmux
# Mac
$ brew install tmux
2.2 啟動與退出
安裝完成後,鍵入Tmux
命令,就進入了Tmux
視窗。
$ tmux
面的命令會啟動Tmux
視窗,底部有一個狀態列。狀態列的左側是視窗資訊(編號和名稱),右側是系統資訊。
按下Ctrl+d或者顯示輸入exit
命令,就可以退出Tmux
視窗。
$ exit
2.3 字首鍵
Tmux
視窗有大量的快捷鍵。所有快捷鍵都要通過字首鍵喚起。預設的字首鍵是Ctrl+b,即先按下Ctrl+b,快捷鍵才會生效。舉例來說,幫助命令的快捷鍵是Ctrl+b ?。它的用法是,在Tmux
視窗中先按下Ctrl+b,再按下?,就會顯示幫助資訊。然後,按下ESC或者q鍵,就可以退出幫助。
三.會話管理
3.1 新建會話
第一個啟動的Tmux
視窗,編號是0,第二個視窗的編號是1,以此類推。這些視窗對應的會話,就是0號會話、1號會話。使用編號區分會話,不太直觀,更好的方法是為會話起名。
tmux new
命令用於建立一個會話,並指定會話名稱;也可以簡寫為tmux
,但是不能指定會話名稱。
# 新建一個指定名稱的會話
$ tmux new -s <session-name>
# 新建一個無名稱的會話
$ tmux
3.2 分離會話
在Tmux
視窗中,按下Ctrl+b d或者輸入tmux detach
命令,就會將當前會話與視窗分離。
$ tmux detach
上面的命令執行後,就會退出當前Tmux
視窗,但是會話和裡面儲存的程序仍然在後臺進行。
tmux ls
命令可以檢視當前所有的Tmux
會話。
$ tmux ls
# or
$ tmux list-session
3.3 接入會話
tmux attach-session
命令用於重新接入某個已存在的會話。
# 使用會話編號
$ tmux attach-session -t 0
# 使用會話名稱
$ tmux attach-session -t <session-name>
# 也可以簡寫為tmux attach或者tmux a
$ tmux a -t 0
$ tmux a -t <session-name>
$ tmux attach -t 0
$ tmux attach -t <session-name>
注:如果不指定會話編號或者會話名稱的話,將會預設進入第一個會話。
3.4 關閉會話
tmux kill-session
命令用於關閉某個會話。
# 使用會話編號
$ tmux kill-session -t 0
# 使用會話名稱
$ tmux kill-session -t <session-name>
tmux kill-server
命令也可以關閉會話,但是該命令會關閉伺服器,所有的會話都將被關閉。
$ tmux kill-server
3.5 切換會話
tmux switch
命令用於切換會話。
# 使用會話編號
$ tmux switch -t 0
# 使用會話名稱
$ tmux switch -t <session-name>
3.6 重新命名會話
tmux rename-session
命令用於重新命名會話。
$ tmux rename-session -t 0 <new-name>
上面的命令將0號會話重新命名。
3.7 會話快捷鍵
下面是一些會話相關的快捷鍵。
- Ctrl+b d:分離當前會話。
- Ctrl+b D:選擇要分離哪一個會話。
- Ctrl+b Ctrl+z:掛起當前會話。
- Ctrl+b s:列出所有會話。
- Ctrl+b $:重新命名當前會話。
四.最簡操作流程
綜上所述,以下是Tmux
的最簡操作流程。
- 新建會話
tmux new -s <session-name>
; - 在
Tmux
視窗中執行所需的程式; - 按下快捷鍵Ctrl+b d或者使用
tmux detach
命令將會話分離; - 下次使用時,使用
tmux attach -t <session-name>
命令重新連線到會話。
五.窗格操作
Tmux
可以將視窗分成多個窗格(pane),每個窗格執行不同的命令。以下命令都是在Tmux
視窗中執行。
5.1 劃分窗格
tmux split-window
命令用來劃分窗格。
# 劃分上下兩個窗格
$ tmux split-window
# 劃分左右兩個窗格
$ tmux split-window -h
5.2 移動游標
tmux select-pane
命令用來移動游標位置。
# 游標切換到上方窗格
$ tmux select-pane -U
# 游標切換到下方窗格
$ tmux select-pane -D
# 游標切換到左方窗格
$ tmux select-pane -L
# 游標切換到右方窗格
$ tmux select-pane -R
5.3 交換窗格位置
tmux swap-pane
命令用來交換窗格位置。
# 當前窗格上移
$ tmux swap-pane -U
# 當前窗格下移
$ tmux swap-pane -D
5.4 窗格快捷鍵
下面是一些窗格操作的快捷鍵。
- Ctrl+b %:劃分左右兩個窗格。
- Ctrl+b ":劃分上下兩個窗格。
-
Ctrl+b arrow key:游標切換到其他窗格。
<arrow key>
是指要切換的窗格的方向鍵,比如切換到下方窗格,就按方向鍵⬇。 - Ctrl+b ;:游標切換到上一個窗格。
- Ctrl+b o:游標切換到下一個窗格。
- Ctrl+b {:當前窗格與上一個窗格交換位置。
- Ctrl+b }:當前窗格與下一個窗格交換位置。
- Ctrl+b Ctrl+o:所有窗格向前移動一個位置,第一個窗格變成最後一個窗格。
- Ctrl+b Alt+o:所有窗格向後移動一個位置,最後一個窗格變成第一個窗格。
- Ctrl+b x:關閉當前窗格。
- Ctrl+b !:將當前窗格拆分為一個獨立視窗。
- Ctrl+b z:當前窗格全屏顯示,再使用一次會變回原來大小。
- Ctrl+b Ctrl+arrow key:按箭頭方向調整窗格大小。
- Ctrl+b q:顯示視窗編號,在編號消失前輸入對應的數字可切換到相應的面板。
- Ctrl+b space:在自帶的窗格佈局中迴圈切換。
- Ctrl+b t:顯示時鐘。
六.視窗管理
除了將一個視窗劃分成多個窗格,Tmux也允許新建多個視窗。
6.1 新建視窗
tmux new-window
命令用來建立新視窗。
$ tmux new-window
# 新建一個指定名稱的視窗
$ tmux new-window -n <window-name>
6.2 切換視窗
tmux select-window
命令用來切換視窗。
# 切換到指定編號的視窗
$ tmux select-window -t <window-number>
# 切換到指定名稱的視窗
$ tmux select-window -t <window-name>
6.3 重新命名視窗
tmux rename-window
命令用於為當前視窗起名(或重新命名)。
$ tmux rename-window <new-name>
6.4 視窗快捷鍵
下面是一些視窗操作的快捷鍵。
- Ctrl+b c:建立一個新視窗,狀態列會顯示多個視窗的資訊。
-
Ctrl+b &:關閉當前視窗(關閉前需要輸入
y or n
確認)。 - Ctrl+b p:切換到上一個視窗(按照狀態列上的順序)。
- Ctrl+b n:切換到下一個視窗。
-
Ctrl+b number:切換到指定編號的視窗,其中的
number
是狀態列上的視窗編號。 - Ctrl+b w:從列表中選擇視窗。
- Ctrl+b ,:重新命名當前視窗。
- Ctrl+b .:修改當前視窗編號(適用於視窗重新排序)。
- Ctrl+b f:快速定位到視窗(輸入關鍵字匹配視窗名稱)。
七.其他命令
下面是一些其他命令。
# 列出所有快捷鍵及其對應的 Tux 命令
$ tmux list-keys
# 列出所有 Tmux 命令及其引數
$ tmux list-commands
# 列出當前所有 Tmux 會話的資訊
$ tmux info
# 重新載入當前的 Tmux 配置
$ tmux source-file ~/.tmux.conf
八.其他快捷鍵
下面是一些上面沒涉及到的比較常用的快捷鍵。
- Ctrl+b ?:顯示快捷鍵幫助文件。
- Ctrl+b ::進入命令列模式,此時可直接輸入ls等命令。