Hvordan man bruger en skærm (og hvorfor det er bedre end en skærm))

  • Dave McKay

    @TheGurkha

  • 14. maj 2020, 8:00 EDT
fatmavati achmad/

kommandoen tmux er en terminal multiplekser, som screen. 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?

skærm

både kommandoerne tmux og GNU screen 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?

kommandoen screen 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 videre, nævner vi, hvordan screen håndterer den samme funktion eller funktion.

reklame

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

RELATERET: Sådan bruger du Linus skærmkommando

installation af Linus

mens screen generelt er installeret som standard på populære Linus-distributioner, er tmux 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.

start af en session

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

tmux

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

højre side af statuslinjen viser værtsnavnet og 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 vinduenummer og navnet på det program, der kører i det, til statuslinjen.

kommandoen screen 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, vil du ikke miste en linje af terminal vindue fast ejendom. 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.

tmuxsessionen er lukket, og du vender tilbage til kommandolinjen, hvorfra du startede tmux. 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 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 i screen, men de vises ikke nogen steder i sessionsvinduerne.

annonce

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

tmux new -s geek-1

når tmux-sessionen indlæses, vises “geek-1” som den første post i statuslinjen længst til venstre.

tilføjelse af flere vinduer

hvis du vil 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 kommandoen dmesg med indstillingen -w (følg) :

dmesg -w
annonce

nu har vi to vinduer i sessionen; den ene 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 løsne 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, der 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-session kommando 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 afmonterede 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 denne session starter vidmesg:

dmesg -w
annonce

nu har vi fået vores oprindelige “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 over tmux 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å pilene 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 fjernede “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 begge tmux sessioner.

kommandoen screen 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

hvis du vil 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 få tmux til kort at blinke nummeret på hver rude.

disse tal bruges i meddelelser og meddelelser fra tmux. 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.

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

et Ctrl+B snydeark

vi har inkluderet et snydeark med de forskellige kommandoer, du kan bruge i tmux nedenfor.

Sessionskommandoer

  • S: liste sessioner.
  • $: Omdøb nuværende session.
  • D: løsn den aktuelle session.
  • Ctrl + B, og så ?: Vis Hjælp side i tmux.

Vinduekommandoer

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

ruden kommandoer

  • %: 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 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.
  • s: luk den aktuelle rude.

hvordan de sammenligner

med hensyn til funktionalitet, screen og 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 i tmux er pæn, og det faktum, at det bevarer ruderne, når du sætter en session på igen, er en spilskifter.

screen, på den anden side mister ruder helt, 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 “