本文介紹了 linux 提供的拆分終端的方法,它能夠幫助你完成多任務(wù)工作。那么,你最喜歡哪一款終端復(fù)用工具呢?
- 來源:https://linux.cn/article-12236-1.html
- 作者:Seth Kenlon
- 譯者:Hank Chow
沒有什么問題是不能用一個(gè) Linux 終端解決的,如果不行,那就用兩個(gè)。
很早以前, 終端其實(shí)是一個(gè)物理設(shè)備 ,而現(xiàn)在的終端實(shí)際上是在計(jì)算機(jī)上被模擬出來的一個(gè)應(yīng)用程序。當(dāng)你使用終端和計(jì)算機(jī)進(jìn)行交互的時(shí)候,就會(huì)發(fā)現(xiàn),只打開一個(gè)終端是不夠用的。在進(jìn)行編譯、數(shù)據(jù)處理等長(zhǎng)時(shí)間任務(wù)的時(shí)候,你不得不打開一個(gè)新終端或新 選項(xiàng)卡(tab)來同時(shí)進(jìn)行其它工作。
如果你是系統(tǒng)管理員,你就需要更多的終端窗口,以便連接到多個(gè)不同的主機(jī)上并行工作了。
在 Linux 系統(tǒng)中,終端應(yīng)用程序在很久之前就已經(jīng)開始帶有選項(xiàng)卡功能了。而現(xiàn)在的終端應(yīng)用程序里,選項(xiàng)卡已經(jīng)是標(biāo)配功能了,這是非常流行的趨勢(shì)。盡管如此,工作的時(shí)候在多個(gè)選項(xiàng)卡之間來回切換,或多或少也會(huì)分散我們的注意力,甚至帶來不便。
而最好的解決方案就是將整個(gè)屏幕劃分為多個(gè)部分,這樣多個(gè)終端就可以在同一個(gè)終端應(yīng)用程序窗口中同時(shí)存在。Linux 發(fā)行版中也有很多相關(guān)的工具可以實(shí)現(xiàn)這一功能。
Shell、終端和控制臺(tái)
在此之前,我們首先要明確 Shell、 終端(terminal)、 控制臺(tái)(console)這三個(gè)概念。想要詳細(xì)了解的話,請(qǐng)參閱 Enable Sysadmin 博客上的相關(guān)文章。
簡(jiǎn)而言之:
- Shell 是帶有 命令提示符(prompt)的用于輸入、輸出的界面。準(zhǔn)確地說, POSIX 桌面底層也運(yùn)行著一個(gè) Shell,即使這個(gè) Shell 對(duì)用戶不可見,因?yàn)橛脩魰?huì)話就是由這個(gè) Shell 啟動(dòng)的。
- 終端是在圖形界面服務(wù)器(例如 X11 或 Wayland)中運(yùn)行的應(yīng)用程序,其中加載了一個(gè) Shell。只有在終端窗口啟動(dòng)之后,才算是運(yùn)行了一個(gè)終端。終端可以認(rèn)為是操作 Shell 的一個(gè)入口。
- 控制臺(tái)(或稱“虛擬控制臺(tái)”)通常表示在桌面環(huán)境以外使用的 Shell,你可以通過 Alt+Ctrl+F2 進(jìn)入控制臺(tái),通常情況下從 F3 到 F7 都是不同的控制臺(tái),其中桌面環(huán)境有可能是 F1 或者 F7,這在不同的發(fā)行版中可能會(huì)有所不同。
因此,有些應(yīng)用程序提供的功能是拆分 Shell 或者控制臺(tái),有些應(yīng)用程序的功能則是拆分終端。
tmux
tmux terminal
tmux 可以說是最靈活、最強(qiáng)大的屏幕拆分工具了,它通過鍵盤控制對(duì)多個(gè)終端的復(fù)用,因此你可以將一個(gè)控制臺(tái)疊放在另一個(gè)控制臺(tái)上面,并在兩個(gè)控制臺(tái)之間切換。你還可以將整個(gè)屏幕等分為多個(gè)控制臺(tái),以便同時(shí)觀察不同控制臺(tái)上的狀況。
tmux 的所有操作都是通過鍵盤完成的,這就意味著你的手不需要離開鍵盤去尋找鼠標(biāo)。為此,你需要記住一些按鍵組合。
如果你只用 tmux 來做屏幕拆分,那你只需要記住一下這些命令:
- Ctrl-B % 豎直拆分屏幕(兩個(gè) Shell 分別位于左右)
- Ctrl-B " 水平拆分屏幕(兩個(gè) Shell 分別位于上下)
- Ctrl-B O 切換到另一個(gè) Shell
- Ctrl-B ? 查看幫助
- Ctrl-B d 斷開 tmux 并讓其在后臺(tái)運(yùn)行(可以使用 tmux attach 重新進(jìn)入)
tmux 的一大好處是,在一臺(tái)計(jì)算機(jī)上啟動(dòng) tmux 會(huì)話之后,也可以從另一臺(tái)計(jì)算機(jī)上進(jìn)入到這個(gè)會(huì)話,由此可以看出,tmux 對(duì) Shell 進(jìn)行了 守護(hù)進(jìn)程化(daemonize)。
例如,當(dāng)我在樹莓派上運(yùn)行 tmux,我就可以從計(jì)算機(jī)上連接到樹莓派并登錄 IRC,當(dāng)我斷開連接時(shí),樹莓派上的 tmux 會(huì)繼續(xù)運(yùn)行,并等待我的下一次連接,在此期間 IRC 是處于持續(xù)登錄狀態(tài)的。
GNU Screen
GNU Screen terminal
GNU Screen 也是一個(gè) Shell 復(fù)用工具,類似于 tmux,你可以在斷開一個(gè)活動(dòng)會(huì)話后重連到其中,它也支持豎直或水平拆分屏幕。
screen 的靈活性比 tmux 要弱一些。它默認(rèn)的綁定按鍵組合是 Ctrl-A,和 Bash 中光標(biāo)移動(dòng)到行首的快捷鍵是一樣的。因此,當(dāng)你正在運(yùn)行 screen 的時(shí)候,如果想要將光標(biāo)移動(dòng)到行首,就需要多按一次 Ctrl-A。而我自己的做法是,在 $HOME/.screenrc 文件中將綁定按鍵組合重新設(shè)置為 Ctrl-J。
escape ^jJ
盡管 screen 在屏幕拆分功能上做得很好,但 tmux 上的一些缺點(diǎn)在 Screen 上也同樣存在。例如在拆分 Shell 時(shí),在一個(gè)新的面板中不會(huì)啟動(dòng)新的 Shell ,而是需要使用 Ctrl-A Tab 導(dǎo)航到另一個(gè)面板(如果你按照我的方式重新設(shè)置了按鍵組合,需要對(duì)應(yīng)地把 Ctrl-A 改為 Ctrl-J),然后通過 Ctrl-A C 手動(dòng)創(chuàng)建一個(gè)新的 Shell。
和 tmux 不同的是,screen 在退出一個(gè) Shell 的時(shí)候,屏幕拆分狀態(tài)不會(huì)改變,這樣的設(shè)計(jì)在某些情況下是比較適合的,但麻煩之處在于需要手動(dòng)管理屏幕拆分狀態(tài)。
盡管如此,screen 還是一個(gè)相當(dāng)可靠靈活的應(yīng)用程序,在無法使用 tmux 的時(shí)候,你可以選擇 screen 作為備選方案。
在默認(rèn)按鍵方案下,screen 常用的基本命令包括:
- Ctrl-A | 豎直拆分屏幕(兩個(gè) Shell 分別位于左右)
- Ctrl-A S 水平拆分屏幕(兩個(gè) Shell 分別位于上下)
- Ctrl-A Tab 切換到另一個(gè) Shell
- Ctrl-A ? 查看幫助
- Ctrl-A d 斷開 screen 并讓其在后臺(tái)運(yùn)行(可以使用 screen -r 重新進(jìn)入)
Konsole
Konsole screen
Konsole 是 KDE Plasma 桌面使用的終端應(yīng)用程序。和 KDE 一樣,Konsole 也以高度可定制、功能強(qiáng)大的特點(diǎn)而著稱。
和 tmux、GNU Screen 類似,Konsole 也具有拆分屏幕的功能。由于 Konsole 是圖形界面的終端,因此還可以用鼠標(biāo)來控制它的屏幕拆分。
Konsole 的屏幕拆分功能在“ 查看(View)”菜單中。它也支持豎直和水平方向的拆分,只要點(diǎn)擊鼠標(biāo)就可以切換到另一個(gè)面板上。每個(gè)面板都是一個(gè)獨(dú)立的終端,因此都可以擁有獨(dú)立的主題和標(biāo)簽頁(yè)。
Konsole 和 tmux、GNU Screen 最大的不同之處在于不能斷開和重新連接 Konsole。除非使用遠(yuǎn)程桌面軟件,否則只能在打開 Konsole 時(shí)使用,這一點(diǎn)和大多數(shù)圖形界面應(yīng)用程序是一樣的。
Emacs
Emacs rpg
嚴(yán)格來說,Emacs 并不算是一個(gè)終端復(fù)用工具,但它的使用界面支持拆分和調(diào)整大小,同時(shí)還帶有一個(gè)內(nèi)建的終端。
如果 Emacs 是你日常使用的文本編輯器,你就可以在不關(guān)閉編輯器的情況下,在不同的應(yīng)用程序之間輕松互相切換。由于 Emacs eshell 模塊是通過 eLISP 實(shí)現(xiàn)的,因此你可以在 Emacs 中使用相同的命令進(jìn)行交互,讓一些繁瑣的操作變得更為簡(jiǎn)單。
如果你是在圖形界面中使用 Emacs,還可以使用鼠標(biāo)進(jìn)行操作。例如通過點(diǎn)擊切換面板、用鼠標(biāo)調(diào)整拆分屏幕的的大小等等。盡管如此,鍵盤的操作速度還是更快,因此記住一些鍵盤快捷鍵還是很有必要的。
Emacs 的一些重要快捷鍵包括:
- Ctrl-X 3 豎直拆分屏幕(兩個(gè) Shell 分別位于左右)
- Ctrl-X 2 水平拆分屏幕(兩個(gè) Shell 分別位于上下)
- Ctrl-X O (大寫字母 O)切換到另一個(gè) Shell(你也可以使用鼠標(biāo)操作)
- Ctrl-X 0 (數(shù)字 0)關(guān)閉當(dāng)前面板
如果你運(yùn)行了 emacs-client 的話,就可以像 tmux 和 GNU Screen 一樣斷開和重新連接到 Emacs 了。
窗口管理器
Ratpoison split screen
除了文本編輯器之外,一些 Linux 桌面也同樣具有拆分屏幕、加載終端這樣的功能。例如 Ratpoison 、 Herbsluftwm 、i3、Awesome,甚至是啟用了特定設(shè)置的 KDE Plasma 桌面,都可以將多個(gè)應(yīng)用程序在桌面上分塊顯示。
這些桌面可以讓各個(gè)應(yīng)用程序占據(jù)屏幕的固定位置,而不是浮在你的桌面“之上”,因此你可以在多個(gè)應(yīng)用程序窗口之間輕松切換。你還可以打開多個(gè)終端,排布成網(wǎng)格,就像終端復(fù)用工具一樣。更進(jìn)一步,你還可以在你的桌面復(fù)用工具中加載一個(gè)終端復(fù)用工具。
而且,沒有什么可以阻止你在里面載入 Emacs 并分割緩沖區(qū)。沒有人知道,如果你把它更進(jìn)一步,會(huì)發(fā)生什么,大多數(shù) Linux 用戶不會(huì)外傳這種秘密。
和 tmux、GNU Screen 不同,你在斷開與桌面的連接后無法重新連接到同一個(gè)桌面會(huì)話,除非你使用了遠(yuǎn)程桌面軟件進(jìn)行連接。
更多選擇
除了上面介紹到的工具以外,還有諸如 Tilix 、Terminator 這樣的終端模擬器,它們同樣可以實(shí)現(xiàn)屏幕拆分、嵌入終端組件等功能。歡迎在評(píng)論區(qū)分享你喜歡的終端拆分工具。
via: https://opensource.com/article/20/5/split-terminal
作者: Seth Kenlon 選題: lujun9972 譯者: HankChow 校對(duì): wxy
本文由 LCTT 原創(chuàng)編譯, Linux中國(guó) 榮譽(yù)推出