Hvordan man bruger en skærm (og hvorfor det er bedre end en skærm))
- Dave McKay
@TheGurkha
- 14. maj 2020, 8:00 EDT
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.
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.
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 entmux
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.
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.
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 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.
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
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.
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.
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
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.
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.
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.
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.
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.
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 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 “