linuxtmux命令是一個終端多路複用器,類似於screen。它的倡導者很多,聲勢浩大,所以我們決定將兩者進行比較。是tmux真的更好,還是隻是喜歡你所知道的?
tmux和GNU螢幕命令都是終端多路複用器。它們允許您在一個終端視窗中有多個視窗,並在它們之間來回跳轉。視窗可以分為多個窗格,每個窗格都提供一個獨立的命令列。
您還可以分離一個會話,它將成為一個在後臺執行的無頭實體,甚至可以關閉啟動它的終端視窗。準備好後,可以開啟一個新的終端視窗並重新連線仍在執行的會話。您還可以透過SSH連線執行此操作。
您可以分離一臺計算機上的會話,回家,然後登入到遠端計算機。重新連線後,可以重新連線後臺會話並以互動方式再次使用它。
screen命令也是一個終端多路複用器,它包含很多選項。關於你能用它做的所有事情的真相,請檢視我們的深入文章。
這一次,我們將專注於tmux。接下來,我們將介紹screen如何處理相同的特性或功能。
關於螢幕,只有一件事讓我們惱火。我們到了以後再談,看看tmux是否更好。
相關:如何使用Linux的screen命令
雖然screen通常在流行的Linux發行版上預設安裝,但tmux不是。要在Ubuntu上安裝tmux,請鍵入以下命令:
sudo apt-get install tmux在Manjaro,你可以使用pacman:
sudo pacman -Sy tmux在Fedora31上,已經安裝了tmux。
要啟動tmux,只需鍵入它並按回車鍵:
tmux在tmux會話中,終端視窗將顯示一個狀態列。
狀態列的右側顯示主機名、時間和日期。左側顯示以下會話相關資訊:
screen命令不提供狀態列。你必須瞎飛,依靠你的智慧去知道發生了什麼,這需要一點練習。
好的一面是,你不會失去一個終端視窗房地產線。當然,您通常會擴充套件您的終端視窗,使使用終端多路複用器變得有價值。在這種情況下,狀態列丟失一行並不是什麼大問題。我們將終端視窗的影象保留為預設大小,以便您可以檢視資訊。
命令是透過擊鍵提供給tmux的,這有兩個部分。首先,按下Ctrl+B以引起tmux的注意。然後快速按next鍵向mux傳送命令。透過按字母、數字、標點符號或箭頭鍵來發出命令。
它在螢幕上是一樣的,只是你按下Ctrl+A來引起它的注意。
要關閉視窗,請按Ctrl+B,然後快速按X。狀態列變為琥珀色。然後系統會提示您確認是否要關閉視窗。
按Y鍵關閉視窗,如果你改變主意,按N鍵。之後不必按Enter鍵;Y或N就足以註冊您的選擇。
如果按Y鍵,視窗將關閉。因為這是此會話中的唯一視窗,所以會話被終止。
tmux會話將關閉,您將返回到啟動tmux的命令列。您將在終端視窗中看到“[退出]”。
這看起來像是在陳述一個顯而易見的事實,但這是一個確認,您已經關閉了會話,沒有讓它分離並執行。我們將在下面討論分離會話。
如果您定期啟動多個tmux會話,您將很快體會到為每個會話賦予一個有意義的名稱的功能。您也可以在螢幕中命名會話,但它們不會顯示在會話視窗的任何位置。
要使用會話名稱啟動tmux,請使用new(new session)命令和-s(session name)選項。我們的會話將被稱為“geek-1”,因此我們鍵入以下內容:
tmux new -s geek-1當tmux會話載入時,“geek-1”顯示為狀態列最左側的第一個條目。
要在當前會話中建立新視窗,請按Ctrl+B,然後按C。當前會話中會出現一個空白的終端視窗。因此,我們將在這個新視窗中執行一些程式,讓我們使用-w(follow)選項啟動dmesg命令:
dmesg -w現在會話中有兩個視窗:一個執行top,另一個執行dmesg。不過,我們一次只能看到一個。
檢視狀態列的左側。我們還在“geek-1”tmux會話中。在視窗0中,top正在執行,而在視窗1中,dmesg正在執行。dmesg後面的星號(*)告訴我們哪個視窗是可見的。
要在視窗之間切換,請按Ctrl+B,然後按以下鍵之一:
也可以從列表中選擇視窗。如果按Ctrl+B,然後按W,將顯示一個視窗列表。
要移動琥珀色突出顯示欄,請按向上或向下箭頭、Home或End。顯示屏的底部顯示高亮顯示視窗中內容的預覽。
按Enter鍵移到高亮顯示的視窗,或按Esc鍵離開視窗列表而不切換。
如果按Ctrl+B,然後按D,則將分離會話。它將繼續在後臺執行,但您將無法看到或與之互動。
我們已經在課程中開始了,所以我們有一個正在執行的過程來演示。然後,我們按Ctrl+B,然後按D。會話消失併成為後臺會話。
我們回到原來的終端視窗。來自tmux的訊息告訴我們會話已分離。這也讓我們想起了我們給會議起的名字。這很方便,因為這就是我們用來附加到後臺會話,然後將其恢復到互動式會話的方法。
要附加分離的會話,我們將使用帶有-t(目標會話)選項的自解釋的attach session命令。我們還將提供我們希望回憶的會話的名稱。
我們鍵入以下內容:
tmux attach-session -t geek-1我們的會話返回並再次成為可見的互動式會話。
附加會話時,在分離會話之前啟動的任何長時間執行或連續程序仍將在後臺執行(除非它們已完成)。
螢幕可以做到這一點,但不是直觀的。
讓我們開啟另一個終端視窗,開始一個名為“geek-2”的新tmux會話:
tmux new -s geek-2在那節課中,我們將開始dmesg:
dmesg -w現在,我們有了原來的“geek-1”tmux會話,還有一個新的叫做“geek-2”
狀態列向我們顯示這個會話稱為“geek-2”,它有一個執行dmesg的視窗。
如果我們按Ctrl+B,然後按D,我們將分離該會話。
回到“geek-1”tmux會話中,我們按Ctrl+B,然後按S檢視tmux會話的列表。
要明確的是,這是一個會話列表。我們之前看到的類似顯示是單個會話中的視窗列表。
您可以透過按向上和向下箭頭、Home和End來移動琥珀色突出顯示欄。底部部分顯示突出顯示的會話中內容的預覽。
如果按向右箭頭,將顯示突出顯示的會話的視窗。
按Enter鍵移動到突出顯示的會話或視窗,或按Esc鍵離開會話列表而不更改會話。如果選擇一個新會話,則當前會話將分離,並且所選會話將附加。
在此之前,我們分離了“極客2”會話。但是,您可以使用仍然附加到其原始終端視窗的會話來執行此操作。當您這樣做時,任何螢幕更改都將同時出現在兩個tmux會話中。
screen命令也可以透過一組類似的命令來實現這一點。
如果按Ctrl+B,然後按雙引號(“”),則將視窗水平拆分為兩個窗格。
這隻影響當前視窗;會話中的其他視窗不會更改。我們使用了頂部窗格中的tmuxls命令來列出此會話中的視窗。有兩個,狀態行告訴我們我們在第一視窗。如果我們按Ctrl+B跳轉到視窗0,然後按0(零),我們會看到它和我們離開時一樣。
這是兩個獨立的命令列,而不是一個視窗中的兩個檢視;它們是不同的獨立shell。我們可以透過在每個窗格中執行不同的命令來顯示這一點。
我們鍵入以下內容:
找到對應核心版本
ls-hl型
要從一個窗格移動到另一個窗格,請按Ctrl+B,然後按向上、向下、向左或向右箭頭。
如果按Ctrl+B,然後按百分號(%),則會垂直拆分當前窗格。
按Ctrl+B,然後按Q使tmux短暫地閃爍每個窗格的編號。
這些數字用於來自tmux的提示和訊息中。按Ctrl+B,然後按X關閉當前窗格。狀態列變為琥珀色,系統將提示您確認是否要關閉該窗格編號。按Y鍵刪除窗格,或按N鍵保持原樣。
如果按Y鍵,窗格將被刪除。
screen命令也有窗格,但是,它們的使用不夠直觀。screen讓我們惱火的是,如果您用窗格分離了一個會話,那麼當您重新連線該會話時,窗格就會消失。這個很快就會變老。
我們在下面的tmux中包含了不同命令的備忘單。
在功能方面,screen和tmux的效能相似,並且提供相同的主要特性。訪問這些功能的方式明顯不同。tmux提供了更流暢、更舒適的方式來實現各種功能。然而,這並不是唯一的區別。
在tmux中重新命名會話和視窗的功能非常簡潔,而在重新連線會話時保留窗格的事實改變了遊戲規則。
另一方面,當您分離並重新連線會話時,螢幕將完全丟失窗格。這幾乎夠煩人的,讓你一開始就避免分離。
tmux還有很多功能,包括其難以置信的靈活指令碼功能。你應該親自去看看。
... 這對使用者和開發者來說都是好事。人們不必擔心如何找到程式的替代品,這一事實有助於降低在作業系統之間切換的障礙。除此之外,它還為編寫軟體的人員提供了更高的使用者覆蓋率,而且只需付出最小的努力。 ...
透過這些TED關於程式設計的討論,您將不會學習如何程式設計,而是如何成為一名程式設計師。知道如何編寫程式碼只是程式設計的一個方面,坦白地說,這是一個較小的方面。懂得思考是關鍵。 ...
Linux是世界上使用最廣泛的免費開源作業系統。與商業替代品不同,沒有一個人或一家公司可以獲得信貸。Linux之所以如此,是因為來自世界各地的許多人的想法和貢獻。 ...
...能都非常驚人。你沒有OLED,但是預設的LCD面板對大多數使用者來說是完美的。它的佈局非常適合膝上型電腦和平板電腦的使用。另外,還有一個無風扇液體冷卻系統。 ...
...都使用GRUB引導載入程式,預設情況下,它會詢問您希望如何引導作業系統,並給您10秒鐘的時間來做出決定。 ...
...看看侏儒經典?但是你使用KDE的次數越多,你就越能學會如何去做,你就越能找到愛。 ...
...GitHub並下載ProtonMail webmail應用程式的程式碼。如果您知道如何在程式碼庫中查詢bug或潛在的安全缺陷,您可以在自己的伺服器上部署它。ProtonMail還使用成熟的開源加密技術,包括AES、RSA和OpenPGP。 擁有一個開原始碼庫有兩個主要...