tmux:適用於重度命令行 Linux 用戶的終端複用器

tmux:適用於重度命令行 Linux 用戶的終端複用器

它允許用戶在單個窗口中創建或啟用多個終端(垂直或水平),當你處理不同的問題時,可以在單個窗口中輕鬆訪問和控制它們。

-- Magesh Maruthamuthu

tmux 是 終端複用器(terminal multiplexer)的縮寫,它允許用戶在單個窗口中創建或啟用多個終端(垂直或水平),當你處理不同的問題時,可以在單個窗口中輕鬆訪問和控制它們。

它使用客戶端-服務器模型,允許在用戶之間共享會話,也可以將終端連接到 tmux 會話。我們可以根據需要輕鬆移動或重新排列虛擬控制檯。終端會話可以從一個虛擬控制檯自由切換到另一個。

tmux 依賴於 libevent 和 ncurses 庫。tmux 在屏幕底部提供了一個狀態行,它顯示當前 tmux 會話的有關信息,例如當前窗口編號、窗口名稱、用戶名、主機名、當前時間和日期。

啟動 tmux 時,它會在一個單獨窗口上創建一個新的會話,並將其顯示在屏幕上。它允許用戶在同一個會話中創建任意數量的窗口。

許多人說它類似於 screen,但我不這麼認為,因為它提供了許多配置選項。

注意: Ctrl+b 是 tmux 中的默認命令前綴,因此,要在 tmux 中執行任何操作,你必須先輸入該前綴然後輸入所需的選項。

tmux 特性

  • 創建任意數量的窗口
  • 在一個窗口中創建任意數量的窗格
  • 它允許垂直和水平分割
  • 分離並重新連接窗口
  • 客戶端-服務器架構,這允許用戶之間共享會話
  • tmux 提供許多配置技巧

建議閱讀:

  • tmate - 馬上與其他人分享你的終端會話
  • Teleconsole - 一個與其他人分享終端會話的工具

如何安裝 tmux 命令

大多數 Linux 系統默認預安裝 tmux 命令。如果沒有,按照以下步驟安裝。

對於 Debian/Ubuntu,使用 APT-GET 命令 或 APT 命令 來安裝:

$ sudo apt install tmux

對於 RHEL/CentOS,使用 YUM 命令 來安裝:

$ sudo yum install tmux

對於 Fedora,使用 DNF 命令 來安裝:

$ sudo dnf install tmux

對於 Arch Linux,使用 Pacman 命令 來安裝:

$ sudo pacman -S tmux

對於 openSUSE,使用 Zypper 命令 來安裝:

$ sudo zypper in tmux

如何使用 tmux

在終端上運行以下命令來啟動 tmux 會話。啟動 tmux 後,它會在一個新窗口中創建新會話,並將使用你的用戶賬戶自動登錄到你的默認 shell。

$ tmux


tmux:適用於重度命令行 Linux 用戶的終端複用器


你會得到類似於我們上面的截圖。tmux 附帶狀態欄,顯示有關當前會話詳細信息、日期、時間等。

狀態欄信息如下:

  • [0]:它表示由 tmux 服務器創建的會話號。默認情況下,它從 0 開始。
  • 0:bash:表示會話號、命令行提示符(這裡的 bash 表示 shell 名稱)。
  • *:這表示該窗口現在處於活動狀態。
  • 主機名:顯示服務器的完全主機名。
  • 日期與時間:顯示當前日期和時間。

(LCTT 譯註:tmux 的狀態可以根據需要定製,也會因環境、版本的不同而不同。)

如何拆分窗口

tmux 允許用戶垂直或水平分割窗口,稱為窗格。每個窗格都包含自己獨立運行的終端實例。我們來看看如何做到這一點。

按下 Ctrl+b, % 來垂直分割窗格。


tmux:適用於重度命令行 Linux 用戶的終端複用器


按下 Ctrl+b, " 來水平分割窗格。


tmux:適用於重度命令行 Linux 用戶的終端複用器


如何在窗格之間移動

假設,我們創建了一些窗格,希望在它們之間移動,這該怎麼做?如果你不知道怎麼做,那麼使用 tmux 就沒有意義了。使用以下控制鍵執行操作。在窗格之間移動有許多方法。

  • 按 Ctrl+b, ← - 選擇左邊的窗格
  • 按 Ctrl+b, → - 選擇右邊的窗格
  • 按 Ctrl+b, ↑ - 選擇上邊的窗格
  • 按 Ctrl+b, ↓ - 選擇下邊的窗格
  • 按 Ctrl+b, { - 來向左交換窗格
  • 按 Ctrl+b, } - 來向右交換窗格
  • 按 Ctrl+b, o - 切換到下一個窗格(從左到右,從上到下)
  • 按 Ctrl+b, ; - 移動到先前活動的窗格

出於測試目的,我們將在窗格之間移動。現在我們在 pane2 中,它展示了 lsb_release -a 命令的輸出。


tmux:適用於重度命令行 Linux 用戶的終端複用器


我們將移動到 pane0,它顯示 uname -a 命令的輸出。


tmux:適用於重度命令行 Linux 用戶的終端複用器


如何打開/創建新窗口

你可以在一個終端內打開任意數量的窗口。

  • 按 Ctrl+b, c 來創建一個新窗口。
  • 按 Ctrl+b, n 移動到下一個窗口。
  • 按 Ctrl+b, p 移動到上一個窗口。
  • 按 Ctrl+b, 0 ~ Ctrl+b, 9 立即移動到特定窗口。
  • 按 Ctrl+b, l 移動到先前選擇的窗口。

我有兩個窗口,第一個窗口有三個窗格,其中包含操作系統版本信息,top 命令輸出和內核信息。


tmux:適用於重度命令行 Linux 用戶的終端複用器


第二個窗口有兩個窗格,其中包含 Linux 發行版 logo 信息。使用以下命令執行操作:


tmux:適用於重度命令行 Linux 用戶的終端複用器


按 Ctrl+b, w 以交互方式選擇當前窗口。


tmux:適用於重度命令行 Linux 用戶的終端複用器


如何縮放窗格

你正在一些非常小的窗格中工作,並且你希望將其縮小以進行進一步的工作。要做到這一點,使用以下鍵綁定。

目前我們有三個窗格,我在 pane1 工作,它使用 top 命令顯示系統活動信息,我將縮放它。


tmux:適用於重度命令行 Linux 用戶的終端複用器


縮放窗格時,它將隱藏所有其它窗格,並只顯示窗口中的縮放窗格。


tmux:適用於重度命令行 Linux 用戶的終端複用器


按 Ctrl+b, z 縮放窗格,並再次按下它使縮放窗格恢復原狀。

顯示窗格信息

要了解窗格編號及其大小,運行以下命令。

按 Ctrl+b, q 可簡單顯示窗格索引。


tmux:適用於重度命令行 Linux 用戶的終端複用器


顯示窗口信息

要知道窗口編號、佈局大小,與窗口關聯的窗格數量及其大小等,運行以下命令。

只需運行 tmux list-windows 即可查看窗口信息。


tmux:適用於重度命令行 Linux 用戶的終端複用器


如何調整窗格大小

你可能需要調整窗格大小來滿足你的要求。你必須按下 Ctrl+b, :,然後在頁面底部的黃色顏色條上輸入以下詳細信息。


tmux:適用於重度命令行 Linux 用戶的終端複用器


在上一部分中,我們打印了窗格索引,它同時也顯示了窗格大小。為了測試,我們要向增加 10 個單元。參考以下輸出,該窗格將 pane1 和 pane2 的大小從 55x21 增加到 55x31。


tmux:適用於重度命令行 Linux 用戶的終端複用器


語法: Ctrl+b, : 然後輸入 resize-pane [options] [cells size]

  • Ctrl+b, : 然後輸入 resize-pane -D 10 將當前窗格大小向下調整 10 個單元。
  • Ctrl+b, : 然後輸入 resize-pane -U 10 將當前窗格大小向上調整 10 個單元。
  • Ctrl+b, : 然後輸入 resize-pane -L 10 將當前窗格大小向左調整 10 個單元。
  • Ctrl+b, : 然後輸入 resize-pane -R 10 將當前窗格大小向右調整 10 個單元。

分離並重新連接 tmux 會話

tmux 最強大的功能之一是能夠在需要時分離和重新連接會話。

運行一個長時間運行的進程,然後按下 Ctrl+b,接著按 d,通過離開正在運行的進程安全地分離你的 tmux 會話。

建議閱讀: 如何在斷開 SSH 會話後保持進程/命令繼續運行

現在,運行一個長時間運行的進程。出於演示目的,我們將把此服務器備份移動到另一個遠程服務器以進行災難恢復(DR)。

$ rsync -avzhe ssh /backup [email protected]:/backups/week-1/

在分離 tmux 會話之後,你將獲得類似下面的輸出。

[detached (from session 0)]

運行以下命令以列出可用的 tmux 會話。

$ tmux ls

0: 3 windows (created Tue Jan 30 06:17:47 2018) [109x45]

現在,使用適當的會話 ID 重新連接 tmux 會話,如下所示:

$ tmux attach -t 0

如何關閉窗格和窗口

只需在相應的窗格中輸入 exit 或按下 Ctrl-d 即可關閉它,和終端關閉類似。要關閉窗口,按下 Ctrl+b, &。

好了,就到這裡了,希望你喜歡上它。


via: https://www.2daygeek.com/tmux-a-powerful-terminal-multiplexer-emulator-for-linux/

作者: Magesh Maruthamuthu 譯者: MjSeven 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出

點擊“瞭解更多”可訪問文內鏈接

相關推薦

推薦中...