Cum să utilizați tmux pe Linux (și de ce este mai bine decât ecranul)

Comanda Linux tmux este un multiplexor de terminal, ca ecran. Avocații săi sunt mulți și vocali, așa că am decis să le comparăm pe cei doi. Este tmux cu adevărat mai bun sau este doar un caz de a prefera ceea ce știi?

tmux vs. ecran

Atât comenzile ecranului tmux, cât și GNU sunt multiplexoare terminale. Acestea vă permit să aveți mai multe ferestre într-o singură fereastră de terminal și să săriți înainte și înapoi între ele. O fereastră poate fi împărțită în panouri, fiecare dintre acestea oferind o linie de comandă independentă.

De asemenea, puteți detașa o sesiune și aceasta devine o entitate fără cap care rulează în fundal – puteți chiar să închideți fereastra terminalului care a lansat-o. Când sunteți gata, puteți deschide o nouă fereastră de terminal și puteți atașa din nou sesiunea în curs de desfășurare. Puteți face acest lucru și printr-o conexiune SSH.

Puteți să detașați o sesiune de pe un computer, să mergeți acasă și să vă conectați la computerul de la distanță. Când sunteți reconectat, puteți reconecta sesiunea de fundal și o puteți utiliza din nou interactiv.

Care este comanda ecranului?

Comanda ecranului este, de asemenea, un multiplexor de terminal și este plină de opțiuni. Pentru detalii despre tot ce puteți face cu el, consultați articolul nostru detaliat.

De data asta, vom face concentrează-te pe tmux. Pe măsură ce mergem mai departe, vom menționa modul în care ecranul gestionează aceeași caracteristică sau funcție.

Un singur lucru ne-a enervat la ecran. Vom acoperi asta când vom ajunge la el și vom vedea dacă tmux merge mai bine.

Instalarea tmux

În timp ce ecranul este în general instalat implicit pe distribuțiile Linux populare, tmux nu este. Pentru a instala tmux pe Ubuntu, tastați următoarele:

sudo apt-get install tmux

Pe Manjaro poți folosi pacman:

sudo pacman -Sy tmux

Pe Fedora 31, tmux este deja instalat.

Pornirea unei sesiuni tmux

Pentru a porni tmux, introduceți-l și apăsați Enter:

tmux

Fereastra terminalului va afișa o bară de stare atunci când vă aflați într-o sesiune tmux.

  Cum să joci Minecraft pe Linux cu GDLauncher

Partea dreaptă a barei de stare arată numele gazdei și ora și data. Partea stângă arată următoarele informații legate de sesiune:

[0]: Acesta este numele sesiunii. În mod implicit, sunt numerotate, începând cu zero. Vom acoperi mai jos cum puteți da nume semnificative sesiunilor.
0:bash*: 0 indică că aceasta este prima fereastră din această sesiune. Singurul proces care rulează în această sesiune este bash. Dacă rulați un program, numele acestuia va apărea aici. Asteriscul

înseamnă că aceasta este fereastra la care te uiți. De fiecare dată când creați o nouă fereastră într-o sesiune tmux, numărul ferestrei acesteia și numele programului care rulează în ea sunt adăugate în bara de stare.

Comanda ecranului nu vă oferă o bară de stare. Trebuie să zbori orb și să te bazezi pe inteligența ta pentru a ști ce se întâmplă, ceea ce necesită puțină practică.

În plus, nu veți pierde nicio linie de imobiliare pentru ferestre terminale. Desigur, în mod normal ați extinde fereastra terminalului pentru a face folosirea unui multiplexor de terminale utilă. În acest caz, pierderea unei linii pentru bara de stare nu este o problemă prea mare. Am lăsat imaginile ferestrelor terminalului aici la dimensiunea implicită, astfel încât să puteți vedea informațiile.

Comenzile sunt date lui tmux folosind apăsări de taste și există două părți în acest sens. Mai întâi, apăsați Ctrl+B pentru a atrage atenția lui tmux. Apoi apăsați rapid tasta următoare pentru a trimite o comandă totmux. Comenzile sunt date prin apăsarea literelor, numerelor, semnelor de punctuație sau tastelor săgeți.

Este același lucru pe ecran, cu excepția faptului că apăsați Ctrl+A pentru a-i atrage atenția.

Pentru a închide fereastra, apăsați Ctrl+B, apoi apăsați rapid X. Bara de stare devine chihlimbar. Apoi vi se solicită să confirmați că doriți să omorâți fereastra.

Apăsați Y pentru a închide fereastra sau N dacă vă răzgândiți. Nu trebuie să apăsați Enter după aceea; Y sau N este suficient pentru a vă înregistra alegerea.

Dacă apăsați Y, fereastra se închide. Deoarece aceasta este singura fereastră din această sesiune, sesiunea este încheiată.[exited]Sesiunea tmux este închisă și revii la linia de comandă de pe care ai lansat tmux. Vei vedea „

” în fereastra terminalului.

Acest lucru poate părea că afirmă ceea ce este evident, dar este o confirmare că ați închis sesiunea și nu ați lăsat-o detașată și în funcțiune. Vom discuta despre sesiunile de detașare mai jos.

Pornirea unei sesiuni tmux cu nume

Dacă începeți în mod regulat mai multe sesiuni tmux, veți aprecia rapid funcționalitatea de a oferi fiecăruia dintre ele un nume semnificativ. Puteți denumi sesiunile și pe ecran, dar acestea nu sunt afișate nicăieri în ferestrele de sesiune.

tmux new -s geek-1

Pentru a porni tmux cu un nume de sesiune, utilizați comanda nouă (sesiune nouă) și opțiunea -s (numele sesiunii). Sesiunea noastră se va numi „geek-1”, așa că scriem următoarele:

Când se încarcă sesiunea tmux, „geek-1” este afișat ca prima intrare în bara de stare, în extrema stângă.

O sesiune tmux cu numele

Adăugarea mai multor Windows Pentru a crea o fereastră nouă în sesiunea curentă, apăsați Ctrl+B, apoi C. Veți obține o fereastră de terminal goală în sesiunea curentă. Deci vom avea ceva care rulează în această nouă fereastră, să începem comanda dmesg

dmesg -w

cu opțiunea -w (urmează):

  Cum se instalează browserul Vivaldi pe Linux

Acum avem două ferestre în sesiune; unul rulează de sus, iar celălalt dmesg. Totuși, putem vedea doar unul câte unul (mai multe despre asta într-un moment).

Aruncă o privire în partea stângă a barei de stare. Suntem încă în sesiunea tmux „geek-1”. În fereastra zero, top rulează, iar în fereastra unu, dmesg rulează. Asteriscul

după ce dmesg ne spune ce fereastră este vizibilă.
Pentru a trece între ferestre, apăsați Ctrl+B, apoi una dintre următoarele taste:
N: Afișează următoarea fereastră.

P: Afișează fereastra anterioară.

0 la 9: Afișează o fereastră numerotată de la 0 la 9.

De asemenea, puteți alege o fereastră dintr-o listă. Dacă apăsați Ctrl+B și apoi W, va apărea o listă de ferestre.

Pentru a muta bara de evidențiere chihlimbar, apăsați săgețile sus sau jos, Acasă sau Sfârșit. Secțiunea de jos a afișajului arată o previzualizare a conținutului în fereastra evidențiată.

Apăsați Enter pentru a trece la fereastra evidențiată sau Esc pentru a părăsi lista de ferestre fără a comuta.

Detașarea și atașarea sesiunilor

Dacă apăsați Ctrl+B, apoi D, veți detașa sesiunea. Va continua să ruleze în fundal, dar nu veți putea să-l vedeți sau să interacționați cu el.

Am început top în sesiune, așa că avem un proces care rulează cu care să demonstram. Apoi, apăsăm Ctrl+B, apoi D. Sesiunea dispare și devine o sesiune de fundal.

Revenim la fereastra terminalului original. Există un mesaj de la tmux care ne spune că sesiunea este detașată. Ne amintește și de numele pe care l-am dat sesiunii. Acest lucru este la îndemână, deoarece acesta este ceea ce folosim pentru a atașa la o sesiune de fundal și apoi o restabilim la una interactivă.

tmux attach-session -t geek-1

Pentru a atașa o sesiune detașată, vom folosi comanda auto-explicativă atașare-sesiune cu opțiunea -t (sesiune țintă). Vom furniza, de asemenea, numele sesiunii pe care dorim să o reamintim.

Introducem următoarele:

Sesiunea noastră revine și devine din nou o sesiune vizibilă, interactivă.

Orice procese de lungă durată sau continue pe care le-ați lansat înainte de a detașa sesiunea se vor rula în continuare în fundal (dacă nu s-au terminat) când atașați sesiunea.

ecranul poate face acest lucru, dar nu la fel de intuitiv.

tmux new -s geek-2

Gestionarea sesiunilor multiple

dmesg -w

Să deschidem o altă fereastră de terminal și să începem o nouă sesiune tmux numită „geek-2”:

În acea sesiune, vom începe dmesg:

Acum, avem sesiunea noastră tmux inițială „geek-1” și una nouă numită „geek-2”.

Bara de stare ne arată că această sesiune se numește „geek-2” și are o fereastră care rulează dmesg.

Dacă apăsăm Ctrl+B, apoi D, detașăm acea sesiune.

Înapoi în sesiunea tmux „geek-1”, apăsăm Ctrl+B, apoi S pentru a vedea o listă de sesiuni tmux.

Pentru a fi clar, aceasta este o listă de sesiuni. Afișajul similar pe care l-am văzut mai devreme era o listă de ferestre într-o singură sesiune.

Puteți muta bara de evidențiere chihlimbar apăsând săgețile sus și jos, Acasă și Sfârșit. Secțiunea de jos afișează o previzualizare a conținutului din sesiunea evidențiată.

  Cum se instalează tema Arc și Arc Darker pe Linux

Dacă apăsați săgeata dreapta, sunt afișate ferestrele pentru sesiunea evidențiată.

Apăsați Enter pentru a trece la sesiunea sau fereastra evidențiate sau Esc pentru a părăsi lista de sesiuni fără a schimba sesiunile. Dacă selectați o nouă sesiune, cea actuală se detașează, iar cea pe care ați selectat-o ​​este atașată.

Am detașat sesiunea „geek-2” înainte de a face asta. Cu toate acestea, puteți face acest lucru cu sesiunile care sunt încă atașate la ferestrele terminale originale. Când faceți acest lucru, orice modificare a ecranului va apărea simultan în ambele sesiuni tmux.

Comanda ecranului poate face acest lucru, de asemenea, printr-un set similar de comenzi.

Lucrul cu panourile ferestrelor

Dacă apăsați Ctrl+B, apoi ghilimele duble (“”), împărțiți fereastra orizontal în două panouri.

Acest lucru afectează numai fereastra curentă; celelalte din sesiune nu vor fi modificate. Am folosit comanda tmux ls din panoul de sus pentru a lista ferestrele din această sesiune. Sunt două, iar linia de stare ne spune că suntem în fereastra unu. Dacă sărim la fereastra zero apăsând Ctrl+B și apoi 0 (zero), vedem că este exact așa cum am lăsat-o.

Acestea sunt două linii de comandă independente, nu două vederi într-o singură fereastră; sunt cochilii distincte și separate. Putem arăta acest lucru rulând o comandă diferită în fiecare panou.

Introducem următoarele:

uname -a

ls -hl

Pentru a trece de la un panou la altul, apăsați Ctrl+B, apoi fie săgeata sus, jos, stânga sau dreapta.

Dacă apăsați Ctrl+B și apoi semnul procentului (%), panoul curent se împarte vertical.

Apăsați Ctrl+B, apoi Q pentru a face ca tmux să clipească scurt numărul fiecărui panou.

Aceste numere sunt folosite în solicitări și mesaje de la tmux. Apăsați Ctrl+B, apoi X pentru a închide panoul curent. Bara de stare se schimbă în chihlimbar și vi se solicită să confirmați că doriți să închideți acel număr de panou. Apăsați Y pentru a elimina panoul sau N pentru a lăsa lucrurile așa cum sunt.

Dacă apăsați Y, panoul este eliminat.

Comanda ecranului are și panouri, dar, din nou, acestea sunt mai puțin intuitive de utilizat. Lucrul care ne enervează la ecran este că dacă detașați o sesiune cu panouri, acestea dispar când reatașați acea sesiune. Aceasta îmbătrânește foarte repede.

A Ctrl+B Cheat Sheet

Am inclus mai jos o foaie de cheat cu diferitele comenzi pe care le puteți utiliza în tmux.
Comenzi de sesiune
S: Listează sesiunile.
$: Redenumiți sesiunea curentă.

D: Detașează sesiunea curentă.

Ctrl+B, apoi ?: Afișează pagina de ajutor în tmux.
Comenzi pentru fereastră
C: Creați o nouă fereastră.
,: Redenumiți fereastra curentă.
W: Enumeră ferestrele.
N: Treceți la următoarea fereastră.

P: Treceți la fereastra anterioară.

De la 0 la 9: Treceți la numărul de fereastră specificat.
Comenzi din panoul
%: Creați o divizare orizontală.
„: Creați o divizare verticală.
H sau săgeata stânga: deplasați-vă în panoul din stânga.
I sau Săgeata dreapta: deplasați-vă în panoul din dreapta.
J sau săgeată în jos: deplasați-vă în panoul de mai jos.
K sau săgeata sus: deplasați-vă în panoul de mai sus.
Î: Afișați pe scurt numerele panourilor.
O: Deplasați-vă prin panouri în ordine. Fiecare apăsare te duce la următoarea, până când le faci buclă pe toate.
}: Schimbați poziția panoului curent cu următorul.

{: Schimbați poziția panoului curent cu cea precedentă.

X: Închideți panoul curent.

Cum se compară

În ceea ce privește funcționalitatea, ecranul și tmuxul funcționează în mod similar și oferă aceleași caracteristici principale. Modul în care accesați aceste funcții este semnificativ diferit. tmux oferă modalități mai elegante și mai confortabile de a ajunge la diferitele funcții. Cu toate acestea, aceasta nu este singura diferență.

Capacitatea de a redenumi sesiunile și ferestrele în tmux este clară, iar faptul că reține panourile atunci când reatașați o sesiune este un schimbător de joc.

ecranul, pe de altă parte, pierde complet panourile atunci când detașați și reatașați o sesiune. Acest lucru este aproape suficient de enervant încât să te facă să eviți detașarea în primul rând.

Există mult mai mult la tmux, inclusiv capabilitățile sale de scripting incredibil de flexibile. Îți datorezi ție să-l verifici.