比較 tmux、GNU Screen、Konsole 和 Terminator,看看哪個最適合你。
Linux 用戶通常需要大量的虛擬視覺空間。一個終端窗口是永遠(yuǎn)不夠的,所以終端有了標(biāo)簽。一個桌面太受限制了,所以有了虛擬桌面。當(dāng)然,應(yīng)用程序窗口可以堆疊,但當(dāng)它們堆疊起來時,又有多大的好處呢?哎呀,即使是后臺文本控制臺也有 F1 到 F7,可以在任務(wù)之間來回翻轉(zhuǎn)。
有了這么多的多任務(wù)處理方式,有人發(fā)明了終端 多路復(fù)用器 的概念就不奇怪了。誠然,這是一個令人困惑的術(shù)語。在傳統(tǒng)的電子學(xué)中,“多路復(fù)用器multiplexer”是一個接收多個輸入信號并將選定的信號轉(zhuǎn)發(fā)到單一輸出的部件。終端多路復(fù)用器的作用正好相反。它從一個輸入(人類在鍵盤上向一個終端窗口打字)接收指令,并將該輸入轉(zhuǎn)發(fā)給任意數(shù)量的輸出(例如,一組服務(wù)器)。
然后,“多路復(fù)用器”一詞在美國也是一個流行的術(shù)語,指的是有許多屏幕的電影院(與“影城cineplex”一詞一個意思)。在某種程度上,這很好地描述了終端復(fù)用器的作用。它可以在一個框內(nèi)提供許多屏幕。
不管這個詞是什么意思,任何嘗試過它的人都有自己的喜好的某一種多路復(fù)用器。因此,我決定考察一些流行的終端多路復(fù)用器,看看每一個都怎么樣。就我的評估標(biāo)準(zhǔn)而言,最低限度,我需要每個多路復(fù)用器能夠分割和堆疊終端窗口。
tmux
據(jù)我所知,是從 tmux 開始使用“多路復(fù)用器”這個術(shù)語的。它工作的很出色。
它作為一個守護(hù)程序運(yùn)行,這樣即使你關(guān)閉了正在查看的終端模擬器,你的終端會話仍然處于活動狀態(tài)。它將你的終端屏幕分割成多個面板,這樣你就可以在每個面板上打開獨(dú)特的終端提示符。
推而廣之,這意味著你也可以遠(yuǎn)程連接到任何數(shù)量的系統(tǒng),并在你的終端中打開它們。利用 tmux 的能力,將輸入鏡像(或者以電子學(xué)術(shù)語說是“反向多路復(fù)用”)到其他打開的窗格,就能從一個中央命令窗格同時控制幾臺計算機(jī)。
tmux 在 GNU Screen 還只能水平分割的時候就有了垂直分割能力,這吸引了追求最大靈活性的粉絲。而靈活性正是用戶在 tmux 中得到的。它可以分割、堆疊、選擇和提供服務(wù);幾乎沒有什么是它做不到的。
軟件包大小
從軟件包中安裝 tmux 大約需要 700K,這還不算它所依賴的十幾個共享庫。
控制鍵
tmux 的默認(rèn)觸發(fā)鍵是 Ctrl+B,盡管很容易在其配置文件中重新定義。
黑客因子
即使你只是在學(xué)習(xí)如何使用終端,你也一定會覺得使用 tmux 的人很像黑客。它看起來很復(fù)雜,但一旦你了解了正確的鍵綁定,就很容易使用。它為你提供了很多有用的技巧,讓你玩的飛起,而且它是一種快速構(gòu)建 HUD(抬頭顯示器)的超簡單方法,可以把你需要的所有信息擺在你面前。
GNU Screen
像 tmux 一樣,GNU Screen 也運(yùn)行一個守護(hù)程序,所以即使你關(guān)閉了用來啟動它的終端,你的 shell 仍然可用。你可以從不同的計算機(jī)上連接并共享屏幕。它可以將你的終端屏幕分割成水平或垂直的窗格。
與 tmux 不同的是,GNU Screen 可以通過串行連接進(jìn)行連接(screen 9600 /dev/ttyUSB0 就可以了),通過按鍵綁定可以方便地發(fā)出 XON 和 XOFF 信號。
與 SSH 會話相比,在串行連接中需要多路復(fù)用器的情況可能并不常見,所以大多數(shù)用戶并不了解 Screen 這個真正特殊的功能。不過,GNU Screen 是一個很棒的多路復(fù)用器,有很多有用的選項(xiàng)。而如果你真的需要同時向多個服務(wù)器發(fā)送信號,還有專門的工具,比如 ClusterSSH 和 Ansible。
軟件包大小
從軟件包中安裝 GNU Screen 大約需要 970K,這還不算它所依賴的十幾個共享庫。
控制鍵
GNU Screen 的默認(rèn)觸發(fā)鍵是 Ctrl+A,這對于熟悉 Bash 快捷鍵的人來說可能特別煩人。幸運(yùn)的是,你可以在配置文件中輕松地重新定義這個觸發(fā)鍵。
黑客因子
當(dāng)使用 Screen 通過串行連接到你的路由器或你的原型電路板時,你會成為你所有硬件黑客朋友羨慕的對象。
Konsole
對于沒有標(biāo)榜自己是多路復(fù)用器的 Konsole 來說,令人驚訝的是它也是其中一個。它可以使用 Qt 窗格和標(biāo)簽進(jìn)行必要的窗口分割和堆疊,但它也可以通過“編輯(將輸入復(fù)制到)”菜單中的一個選項(xiàng)將輸入從一個窗格傳到另一個(或全部)。
然而,它所最明顯缺乏的功能是作為一個守護(hù)程序運(yùn)行以進(jìn)行遠(yuǎn)程重新連接的能力。與 tmux 和 GNU Screen 不同,你不能遠(yuǎn)程連接到運(yùn)行 Konsole 的機(jī)器并加入會話。對于一些管理員來說,這可能不是一個問題。許多管理員用 VNC 連接到機(jī)器的次數(shù)比用 SSH 還要多,所以“重新加入”一個會話就像在 VNC 客戶端上點(diǎn)擊 Konsole 窗口一樣簡單。
使用 Konsole 作為多路復(fù)用器是 KDE 極客們的大招。Konsole 是我使用的第一個 Linux 終端(直到今天,我有時也會按 Ctrl+N 來切換新標(biāo)簽),所以有能力使用這個熟悉的終端作為多路復(fù)用器是一個很大的便利。這絕不是必要的,因?yàn)闊o論如何 tmux 和 Screen 都可以在 Konsole 里面運(yùn)行,但是通過讓 Konsole 處理窗格,我就不必調(diào)整肌肉記憶。這種微妙的功能包容正是 KDE 的偉大之處。
軟件包大小
Konsole 本身大約是 11KB,但它依賴于 105 個 KDE 和 Qt 庫,所以實(shí)際上,它至少有 50MB。
控制鍵
大多數(shù)重要的 Konsole 快捷鍵以 Shift+Ctrl 開始,分割屏幕、打開新標(biāo)簽、復(fù)制輸入到其他窗格等都是如此。這是 KDE 里的主控臺,所以如果你對 Plasma 桌面很熟悉,會感覺快捷鍵很熟悉。
黑客因子
使用 Konsole 作為你的多路復(fù)用器讓你有資格稱自己為 KDE 高級用戶。
Terminator
對于 GNOME 用戶來說,Terminator 多路復(fù)用器是為他們原本極簡的 GNOME 終端增加功能的一個簡單方法。除了必要的多路復(fù)用功能外,Terminator 還可以向所有打開的窗格廣播輸入,但和 Konsole 一樣,它不會在后臺運(yùn)行以便你可以通過 SSH 重新連接到它。話說回來,由于 GNOME 和 Wayland 讓 VNC 變得如此簡單,你有可能會覺得沒有必要通過 SSH 來恢復(fù)終端會話。
如果你愿意,Terminator 可以完全由鼠標(biāo)驅(qū)動。Konsole 通過其主菜單也有同樣的能力。有了 Terminator,你可以在 Shell 的任何地方點(diǎn)擊右鍵,彈出相關(guān)選項(xiàng),以水平或垂直分割窗口,將窗格分組作為廣播目標(biāo),廣播輸入,關(guān)閉窗格,等等。你還可以為所有這些動作配置鍵盤快捷鍵,所以在許多方面,你可以形成自己的體驗(yàn)。
我認(rèn)為自己主要是一個 KDE 用戶,所以當(dāng)我說 Terminator 感覺像一個 KDE 應(yīng)用時,我其實(shí)是一種極大的贊美。Terminator 是一個令人驚訝的可配置的和靈活的應(yīng)用程序。在許多方面,它體現(xiàn)了開源的力量,把簡陋的 GNOME 終端變成了一個強(qiáng)大的多路復(fù)用器。
軟件包大小
Terminator 的安裝容量為 2.2MB,其中大部分是 Python 模塊。但它依賴于 GTK3 和 GNOME,所以如果你沒有運(yùn)行完整的 GNOME 桌面,可以預(yù)料你需要一個更大的安裝來拉入這些依賴。
控制鍵
Terminator 的默認(rèn)控制鍵沒有什么一致性。你可以用 Alt 鍵來執(zhí)行一些命令,用 Ctrl 來執(zhí)行其他命令,還可以用 Shift+Ctrl、Ctrl+Alt、Shift+Super 等等,還有鼠標(biāo)。話說回來,這是我試過的最可配置的多路復(fù)用器之一,所以只要有想法,稍加努力,你就能設(shè)計出適合你的模式。
黑客因子
當(dāng)你使用 Terminator 時,你會覺得自己是最現(xiàn)代、最務(wù)實(shí)的黑客。由于它的各種極客選項(xiàng),它是多路復(fù)用的最佳選擇,而且由于它非常靈活,無論你的手是在鍵盤上,還是鍵盤和鼠標(biāo)并用,你都可以同樣輕松地使用它。
我全要
還有更多的多路復(fù)用器和一些具有類似多路復(fù)用能力的應(yīng)用。你不必非要找到一個完全按照你想要的方式完成你需要的所有工作的多路復(fù)用器。你可以使用不止一個。事實(shí)上,你甚至可以同時使用多個,因?yàn)?tmux 和 Screen 實(shí)際上是 shell,而 Konsole 和 Terminator 是顯示 shell 的終端。對唾手可得的工具感到舒適,而且它們能幫助你管理你的工作空間,使你能有效地工作,才是最重要的。
去嘗試一下多路復(fù)用器,或者在你喜歡的應(yīng)用程序中發(fā)現(xiàn)類似多路復(fù)用器的功能。它可能會改變你看待計算的方式。
責(zé)編AJX
評論