Articles

(Og hvorfor det er bedre end skærmen)

  • Dave McKay

    @Thegurkha

  • 14.maj 2020, 8:00am EDT
fatmaati achmad figcaption>

linjentmux kommandoen er en terminal multiplekser, somscreen. Dens fortalere er mange og vokale, så vi besluttede at sammenligne de to. Er tmux virkelig bedre, eller er det bare et tilfælde af at foretrække det, du ved?

vs. skærm

beggetmuxog GNUscreen kommandoer er terminale multipleksere. De giver dig mulighed for at have flere vinduer i et enkelt terminalvindue og hoppe frem og tilbage mellem dem. Et vindue kan opdeles i ruder, som hver giver dig en uafhængig kommandolinje.

Du kan også løsne en session, og det bliver en hovedløs enhed, der kører i baggrunden—du kan endda lukke terminalvinduet, der lancerede det. Når du er klar, kan du åbne et nyt terminalvindue og sætte den stadig kørende session på igen. Du kan også gøre dette via en SSH-forbindelse.

annonce

Du kan løsne en session på en computer, gå hjem og logge ind på fjerncomputeren. Når du tilslutter igen, kan du vedhæfte baggrundssessionen igen og bruge den interaktivt igen.

Hvad er skærmkommandoen?

screen kommandoen er også en terminal multiplekser, og den er fyldt med muligheder. For nedturen på alt hvad du kan gøre med det, tjek vores dybdegående artikel.

denne gang vil vi koncentrere os om tmux. Når vi går sammen, nævner vi, hvordan screen håndterer den samme funktion eller funktion.

annonce

kun en ting irriterede os omscreen. Vi dækker det, når vi kommer til det, og se om tmux fares bedre.

RELATERET: Sådan bruges Linuks skærmkommando

installation af tuk

mens screen er generelt installeret som standard på populære Linuks-distributioner, tmux isn ‘t. to install tmux on Ubuntu, skriv følgende:

sudo apt-get install tmux

på Manjaro kan du bruge pacman:

sudo pacman -Sy tmux

på Fedora 31, tmux er allerede installeret.

start af en session

for at startetmux skal du bare skrive den og trykke på Enter:

tmux

terminalvinduet viser en statuslinje, når du er i entmux session.

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

  • : Dette er sessionens navn. Som standard er de nummereret, begyndende med nul. Vi dækker, hvordan du kan give meningsfulde navne til sessioner nedenfor.
  • 0: bash*: 0 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 det vindue, du kigger 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.

kommandoenscreen giver dig ikke en statuslinje. Du er nødt til at flyve blind og stole på din forstand for at vide, hvad der foregår, hvilket kræver lidt øvelse.

annonce

på plussiden mister du ikke en linje med fast ejendom i terminalvinduet. 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 for statuslinjen ikke meget af et 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 skal du trykke på Ctrl + B for at få tmux‘s opmærksomhed. Du trykker derefter hurtigt på den næste tast for at sende en kommando tiltmux. Kommandoer gives ved at trykke på bogstaver, tal, tegnsætningstegn eller piletasterne.

det er det samme i screen, bortset fra at du trykker på Ctrl+A for at få sin opmærksomhed.

for at lukke vinduet skal du trykke på Ctrl + B og derefter hurtigt trykke på H. statuslinjen bliver gul. Du bliver derefter bedt om at bekræfte, at du vil dræbe vinduet.

annonce

tryk på Y for at lukke vinduet eller N, hvis du skifter mening. Du behøver ikke at 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.

tmux sessionen er lukket, og du vender tilbage til kommandolinjen, hvorfra du lanceredetmux. Du vil se “” i terminalvinduet.

dette kan virke som om det angiver det indlysende, men det er en bekræftelse på, at du har lukket sessionen og ikke forladt den løsrevet og kører. Vi diskuterer løsningssessioner nedenfor.

start af en navngivet session

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

annonce

for at startetmux med et sessionsnavn skal du bruge kommandoennew (ny session) og-s (sessionsnavn). Vores session vil blive kaldt “geek-1”, Så vi skriver følgende:

tmux new -s geek-1

Når tmux sessionsbelastninger vises” geek-1 ” som den første post i statuslinjen længst til venstre.

tilføjelse af flere vinduer

tryk på Ctrl+B og derefter på C for at oprette et nyt vindue i den aktuelle session. 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 med -w (følg) mulighed:

dmesg -w
annonce

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

se på venstre side af statuslinjen. Vi er stadig i” geek-1″tmux session. I vinduet nul kører toppen, og i vinduet 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 på 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 V, vises en liste over vinduer.

annonce

for at flytte den gule fremhævningslinje skal du trykke på pil op eller ned, hjem eller Slut. 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.

Afmontering og vedhæftning af sessioner

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 kan ikke se eller interagere med det.

Vi har startet top 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.

annonce

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

for at vedhæfte en løsrevet session bruger vi den selvforklarende attach-sessionkommando med -t (målsession) mulighed. Vi giver også navnet på den session, vi ønsker at huske.

Vi skriver følgende:

tmux attach-session -t geek-1

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

eventuelle langvarige eller kontinuerlige processer, du startede, før du løsnede sessionen, kører stadig i baggrunden (medmindre de er færdige), når du vedhæfter sessionen.

screen kan gøre dette, men ikke så intuitivt.

håndtering af flere sessioner

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

tmux new -s geek-2

i den session starter vi dmesg:

dmesg -w
annonce

nu har vi vores originale “Geek-1” tmux session, og en ny kaldet “Geek-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, løsner vi den session.

annonce

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

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

Du kan flytte den gule fremhævningslinje ved at trykke på pil op og ned, hjem og Slut. Det nederste afsnit viser en forhåndsvisning af indholdet i den fremhævede session.

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

annonce

tryk på Enter for at flytte 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 valgte er vedhæftet.

Vi løsnede” geek-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 eventuelle skærmændringer samtidigt i beggetmux sessioner.

screen kommandoen kan også gøre dette via et lignende sæt kommandoer.

arbejde med vinduesruder

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

annonce

dette påvirker kun det aktuelle vindue; de andre i sessionen ændres ikke. Vi har brugt kommandoen tmux ls i øverste rude til at liste 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 ligesom vi forlod det.

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

Vi skriver følgende:

uname -a

ls -hl

for at flytte fra en rude til en anden skal du trykke på Ctrl+B og derefter enten Op, Ned, Venstre eller højre pil.

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

annonce

tryk på Ctrl+B, og derefter på spørgsmål for at lavetmux blinke kort nummeret på hver rude.

disse tal bruges i meddelelser og meddelelser fratmux. Tryk på Ctrl + B for at lukke den aktuelle rude. Statuslinjen ændres til amber, og du bliver bedt om at bekræfte, at du vil lukke ruden. 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.

screen kommandoen har også ruder, men igen er de mindre intuitive at bruge. Det, der irriterer os ved screen er, hvis du løsner en session med ruder, forsvinder de, når du vedhæfter den session igen. Dette bliver gammelt meget hurtigt.

A Ctrl+B Cheat Sheet

Vi har inkluderet et snydeark med de forskellige kommandoer, du kan bruge itmux nedenfor.

Sessionskommandoer

  • S: liste sessioner.
  • $: Omdøb nuværende session.
  • D: Afbryd den aktuelle session.
  • Ctrl + B, og så ?: Vis hjælpeside i tmux.

Vinduekommandoer

  • C: Opret et nyt vindue.
  • ,: Omdøb det aktuelle vindue.
  • h: Vis vinduerne.
  • N: gå til næste vindue.
  • P: gå til det forrige vindue.
  • 0 til 9: Flyt til det angivne vinduenummer.

Panekommandoer

  • %: Opret en vandret opdeling.
  • “: Opret en lodret opdeling.
  • H eller venstre pil: Flyt til ruden til venstre.
  • I eller højre pil: Gå 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 rude numre.
  • O: Flyt gennem ruder i rækkefølge. Hvert tryk fører dig til det næste, indtil du løber gennem dem alle.
  • }: Skift placeringen af den aktuelle rude med den næste.
  • {: Skift placeringen af den aktuelle rude med den forrige.
  • h: luk den aktuelle rude.

hvordan de sammenligner

med hensyn til funktionalitet, screenog tmux begge udfører på samme måde og tilbyder de samme hovedfunktioner. Det er den måde, du får adgang til de funktioner, der er markant anderledes. tmux tilbyder slicker, mere komfortable måder at komme til de forskellige funktioner. Det er dog ikke den eneste forskel.

annonce

evnen til at omdøbe sessioner og vinduer itmux er pæn, og det faktum, at det bevarer ruderne, når du genmonterer en session, er en spilskifter.

screen taber på den anden side helt ruder, når du løsner og genmonterer en session. Dette er næsten irriterende nok til at få dig til at undgå at løsne i første omgang.

der er så meget mere til tmux, herunder dens utroligt fleksible scripting kapaciteter. Du skylder dig selv at tjekke det ud.

Dave McKay
Dave McKay brugte først computere, da stanset papirbånd var på mode, og han har programmeret lige siden. Efter over 30 år i IT-branchen er han nu teknologijournalist på fuld tid. I løbet af sin karriere har han arbejdet som freelance programmør, leder af et internationalt programmeludviklingsteam, projektleder for IT-tjenester og senest som databeskyttelsesansvarlig. Han er evangelist og open source-fortaler.Læs hele Bio ”