Sådan bruger du tmux på Linux (og hvorfor det er bedre end skærm)

Linux tmux kommandoen er en terminal multiplexer, ligesom skærm. Dens fortalere er mange og højrøstede, så vi besluttede at sammenligne de to. Er tmux virkelig bedre, eller er det bare et tilfælde af at foretrække det, du kender?

tmux vs. skærm

Både tmux- og GNU-skærmkommandoerne er terminale multipleksere. De giver dig mulighed for at have flere vinduer inden for et enkelt terminalvindue og hoppe frem og tilbage mellem dem. Et vindue kan opdeles i ruder, som hver især giver dig en uafhængig kommandolinje.

Du kan også frakoble en session, og den bliver en hovedløs enhed, der kører i baggrunden – du kan endda lukke terminalvinduet, der startede den. Når du er klar, kan du åbne et nyt terminalvindue og vedhæfte den stadig kørende session igen. Du kan også gøre dette over en SSH-forbindelse.

Du kan frakoble en session på én computer, gå hjem og logge ind på fjerncomputeren. Når du har oprettet forbindelse igen, kan du vedhæfte baggrundssessionen igen og bruge den interaktivt igen.

Hvad er skærmens kommando?

Skærmkommandoen er også en terminal multiplexer, og den er spækket med muligheder. For at få et overblik over alt, hvad du kan gøre med det, tjek vores dybdegående artikel.

Denne gang skal vi koncentrere sig om tmux. Efterhånden som vi går videre, vil vi nævne, hvordan skærmen håndterer den samme funktion eller funktion.

Kun én ting irriterede os ved skærmen. Vi dækker det, når vi når det, og ser om tmux klarer sig bedre.

Installerer tmux

Selvom skærmen generelt er installeret som standard på populære Linux-distributioner, er tmux det ikke. For at installere tmux på Ubuntu skal du skrive følgende:

sudo apt-get install tmux

På Manjaro kan du bruge pacman:

sudo pacman -Sy tmux

På Fedora 31 er tmux allerede installeret.

Starter en tmux-session

For at starte tmux skal du bare skrive det og trykke på Enter:

tmux

Terminalvinduet viser en statuslinje, når du er i en tmux-session.

  Sådan redigeres BashRC-filen for at gøre Bash mere nyttig på Linux

Den højre side af statuslinjen viser værtsnavnet samt klokkeslæt og dato. Den venstre side viser følgende sessionsrelaterede oplysninger:

[0]: Dette er sessionens navn. Som standard er de nummererede, begyndende med nul. Vi dækker, hvordan du kan give meningsfulde navne til sessioner nedenfor.
0:bash*: 0-tallet angiver, at dette er det første vindue i denne session. Den eneste proces, der kører i denne session, er bash. Hvis du kører et program, vises dets navn her. Stjernen

betyder, at dette er vinduet, du ser på. Hver gang du opretter et nyt vindue i en tmux-session, tilføjes dets vinduesnummer og navnet på det program, der kører i det, til statuslinjen.

Skærmkommandoen giver dig ikke en statuslinje. Du skal flyve i blinde og stole på din forstand for at vide, hvad der foregår, hvilket kræver lidt øvelse.

På den positive side vil du ikke miste en række af terminalvinduesejendomme. Selvfølgelig vil du normalt udvide dit terminalvindue for at gøre det værd at bruge en terminalmultiplekser. I så fald er tabet af en linje til statuslinjen ikke det store problem. Vi har efterladt billederne af terminalvinduerne her i standardstørrelsen, så du kan se oplysningerne.

Kommandoer gives til tmux ved hjælp af tastetryk, og der er to dele til dette. Først trykker du på Ctrl+B for at få tmux’ opmærksomhed. Du trykker derefter hurtigt på den næste tast for at sende en kommando totmux. Kommandoer gives ved at trykke på bogstaver, tal, tegnsætningstegn eller piletaster.

Det er det samme på skærmen, bortset fra at du trykker på Ctrl+A for at få dens opmærksomhed.

For at lukke vinduet skal du trykke på Ctrl+B og derefter hurtigt trykke på X. Statuslinjen bliver gul. Du bliver derefter bedt om at bekræfte, at du vil lukke vinduet.

Tryk på Y for at lukke vinduet eller N, hvis du ombestemmer dig. Du behøver ikke trykke på Enter bagefter; Y eller N er nok til at registrere dit valg.

Hvis du trykker på Y, lukkes vinduet. Da dette er det eneste vindue i denne session, afsluttes sessionen.[exited]tmux-sessionen lukkes, og du vender tilbage til kommandolinjen, hvorfra du startede tmux. Du vil se “

” i terminalvinduet.

Dette kan se ud som om, det siger det indlysende, men det er en bekræftelse på, at du har lukket sessionen og ikke har ladet den være løs og kørende. Vi vil diskutere løsrivelsessessioner nedenfor.

Start af en navngivet tmux-session

Hvis du regelmæssigt starter flere tmux-sessioner, vil du hurtigt sætte pris på funktionaliteten ved at give hver af dem et meningsfuldt navn. Du kan også navngive sessioner på skærmen, men de vises ikke nogen steder i sessionsvinduerne.

tmux new -s geek-1

For at starte tmux med et sessionsnavn skal du bruge den nye (ny session) kommando og muligheden -s (sessionsnavn). Vores session kommer til at hedde “nørd-1”, så vi skriver følgende:

Når tmux-sessionen indlæses, vises

En tmux-session med navnet

Tilføjelse af flere Windows For at oprette et nyt vindue i den aktuelle session skal du trykke på Ctrl+B og derefter C. Du får et tomt terminalvindue i den aktuelle session. Så vi har noget kørende i dette nye vindue, lad os starte dmesg kommando

dmesg -w

med muligheden -w (følg):

  Sådan indstilles miljøvariabler i Bash på Linux

Nu har vi to vinduer i sessionen; den ene kører top, og den anden dmesg. Vi kan dog kun se én ad gangen (mere om det om et øjeblik).

Tag et kig på venstre side af statuslinjen. Vi er stadig i “nørd-1” tmux-sessionen. I vindue nul kører top, og i vindue et kører dmesg. Stjernen

efter dmesg fortæller os, hvilket vindue der er synligt.
For at hoppe mellem vinduer skal du trykke på Ctrl+B og derefter en af ​​følgende taster:
N: Vis det næste vindue.

P: Vis det forrige vindue.

0 til 9: Vis et vindue nummereret 0 til 9.

Du kan også vælge et vindue fra en liste. Hvis du trykker på Ctrl+B og derefter W, vises en liste over vinduer.

For at flytte den gule fremhævede bjælke skal du trykke på pil op eller pil ned, Hjem eller Afslut. Den nederste del af displayet viser en forhåndsvisning af indholdet i det fremhævede vindue.

Tryk på Enter for at flytte til det fremhævede vindue, eller Esc for at forlade vindueslisten uden at skifte.

Afmonterings- og tilknytningssessioner

Hvis du trykker på Ctrl+B og derefter D, vil du afbryde sessionen. Det vil fortsætte med at køre i baggrunden, men du vil ikke være i stand til at se eller interagere med det.

Vi er startet øverst i sessionen, så vi har en løbende proces at demonstrere med. Derefter trykker vi på Ctrl+B og derefter D. Sessionen forsvinder og bliver en baggrundssession.

Vi vender tilbage til det oprindelige terminalvindue. Der er en besked fra tmux, der fortæller os, at sessionen er afbrudt. Det minder os også om det navn, vi gav sessionen. Dette er praktisk, fordi det er det, vi bruger til at knytte til en baggrundssession og derefter gendanne den til en interaktiv.

tmux attach-session -t geek-1

For at vedhæfte en løsrevet session bruger vi den selvforklarende attach-session-kommando med muligheden -t (target session). Vi giver også navnet på den session, vi ønsker at huske.

Vi skriver følgende:

Vores session vender tilbage og bliver en synlig, interaktiv session igen.

Eventuelle langvarige eller kontinuerlige processer, du startede før du frakoblede sessionen, vil stadig køre i baggrunden (medmindre de er færdige), når du vedhæfter sessionen.

skærmen kan gøre dette, men ikke så intuitivt.

tmux new -s geek-2

Håndtering af flere sessioner

dmesg -w

Lad os åbne et andet terminalvindue og starte en ny tmux-session kaldet “geek-2”:

I den session starter vi dmesg:

Nu har vi fået vores originale “nørd-1” tmux-session og en ny kaldet “nørd-2.”

Statuslinjen viser os, at denne session kaldes “geek-2”, og den har et vindue, der kører dmesg.

Hvis vi trykker på Ctrl+B og derefter D, afbryder vi den session.

Tilbage i “geek-1” tmux-sessionen trykker vi på Ctrl+B og derefter S for at se en liste over tmux-sessioner.

For at være klar er dette en liste over sessioner. Den lignende visning, vi så tidligere, var en liste over vinduer i en enkelt session.

Du kan flytte den gule fremhævede bjælke ved at trykke på pil op og pil ned, Hjem og End. Den nederste sektion viser en forhåndsvisning af indholdet i den fremhævede session.

  Sådan spiller du Legion TD 2 på Linux

Hvis du trykker på højrepilen, vises vinduerne for den fremhævede session.

Tryk på Enter for at gå til den fremhævede session eller vindue eller Esc for at forlade sessionslisten uden at ændre sessioner. Hvis du vælger en ny session, løsnes din nuværende, og den du valgte er vedhæftet.

Vi frakoblede “nørd-2”-sessionen, før vi gjorde dette. Du kan dog gøre dette med sessioner, der stadig er knyttet til deres originale terminalvinduer. Når du gør det, vises alle skærmændringer samtidigt i begge tmux-sessioner.

Skærmkommandoen kan også gøre dette via et lignende sæt kommandoer.

Arbejde med vinduesruder

Hvis du trykker på Ctrl+B og derefter dobbelte anførselstegn (“”), deler du vinduet vandret i to ruder.

Dette påvirker kun det aktuelle vindue; de andre i sessionen vil ikke blive ændret. Vi har brugt kommandoen tmux ls i den øverste rude til at vise vinduerne i denne session. Der er to, og statuslinjen fortæller os, at vi er i vindue et. Hvis vi hopper over til vinduet nul ved at trykke på Ctrl+B og derefter 0 (nul), ser vi, at det er lige som vi forlod det.

Disse er to uafhængige kommandolinjer, ikke to visninger i ét vindue; de er adskilte og adskilte skaller. Vi kan vise dette ved at køre en anden kommando i hver rude.

Vi skriver følgende:

unavn -a

ls -hl

For at flytte fra en rude til en anden skal du trykke på Ctrl+B og derefter enten pil op, ned, venstre eller højre.

Hvis du trykker på Ctrl+B og derefter procenttegnet (%), opdeler det den aktuelle rude lodret.

Tryk på Ctrl+B og derefter Q for at få tmux til kort at blinke nummeret på hver rude.

Disse numre bruges i prompter og beskeder fra tmux. Tryk på Ctrl+B og derefter X for at lukke den aktuelle rude. Statuslinjen skifter til gult, og du bliver bedt om at bekræfte, at du vil lukke dette rudenummer. Tryk på Y for at fjerne ruden eller N for at lade tingene være, som de er.

Hvis du trykker på Y, fjernes ruden.

Skærmkommandoen har også ruder, men igen, de er mindre intuitive at bruge. Det, der irriterer os ved skærmen, er, at hvis du frakobler en session med ruder, forsvinder de, når du vedhæfter den session igen. Det her bliver meget hurtigt gammelt.

Et Ctrl+B snydeark

Vi har inkluderet et snydeark med de forskellige kommandoer, du kan bruge i tmux nedenfor.
Sessionskommandoer
S: List sessioner.
$: Omdøb nuværende session.

D: Afbryd den aktuelle session.

Ctrl+B og derefter ?: Vis hjælpesiden i tmux.
Vindueskommandoer
C: Opret et nyt vindue.
,: Omdøb det aktuelle vindue.
W: Liste over vinduerne.
N: Flyt til næste vindue.

P: Flyt til det forrige vindue.

0 til 9: Flyt til det angivne vinduesnummer.
Rudekommandoer
%: Opret en vandret opdeling.
“: Opret en lodret opdeling.
H eller venstre pil: Flyt til ruden til venstre.
I eller højre pil: Flyt til ruden til højre.
J eller Pil ned: Flyt til ruden nedenfor.
K eller Pil op: Flyt til ruden ovenfor.
Spørgsmål: Vis kort rudenumre.
O: Flyt gennem ruderne i rækkefølge. Hvert tryk fører dig til det næste, indtil du går gennem dem alle.
}: Skift positionen af ​​den aktuelle rude med den næste.

{: Skift positionen af ​​den aktuelle rude med den forrige.

X: Luk den aktuelle rude.

Hvordan de sammenligner

Med hensyn til funktionalitet fungerer både skærm og tmux ens og tilbyder de samme hovedfunktioner. Det er den måde, du får adgang til disse funktioner, der er markant anderledes. tmux tilbyder slankere, mere komfortable måder at komme til de forskellige funktioner på. Det er dog ikke den eneste forskel.

Muligheden for at omdøbe sessioner og vinduer i tmux er pæn, og det faktum, at det bevarer ruderne, når du gentilslutter en session, er en game changer.

skærmen taber derimod helt ruder, når du afmonterer og gentilslutter en session. Dette er næsten irriterende nok til at du undgår at løsrive dig i første omgang.

Der er så meget mere til tmux, inklusive dets utroligt fleksible script-egenskaber. Du skylder dig selv at tjekke det ud.