Kom igång med tmux och terminalen

By . Latest revision .

Tmux i en terminal.

Tmux i en terminal.

När man börjar använda terminalen så märker man snabbt begränsningen i ett terminalfönster, man börjar då ha flera terminalfönster uppe samtidigt, eller flera tabbar i ett terminalfönster. Efter ett tag så kommer man i kontakt med terminal multiplexer, program som gör terminalen till ett än mer kraftfullt verktyg. Två kända sådana program är screen och tmux. Denna guide handlar om tmux.

#Om tmux

Du kan läsa om tmux på deras webbplats. Du kan läsa om vad en terminal multiplexer innebär, och du kan se exempel på skärmdumpar.

Du hittar den kompletta manualen i man-sidan.

#Fördelen med tmux

För den som är van att jobba i terminalen så erbjuder tmux en möjlighet att skapa många fönster och hoppa mellan dem, varje fönster kan köra sina egna program.

Tmux startar en session som man kan detacha från och attacha till. Det gör att man kan starta igång ett antal program på en server och nästa gång man loggar in på servern så kan man koppla sig till den sessionen och ha hela arbetsmiljön färdig.

#Installera tmux

Du kan installera tmux i Debian/Linux med apt-get.

sudo apt-get install tmux

Om du har en Mac så använder du Brew.

brew install tmux

Om du använder Windows/Cygwin så installerar du med apt-cyg.

apt-cyg install tmux

Tmux är bra att köra både på klient och server. Så fort du är i terminalen så vill du troligen ha tillgång till tmux.

Kontrollera vilken version du har av tmux.

tmux -V

Kika snabbt på manualsidan för tmux.

man tmux

Innan vi startar tmux så skall vi hämta hem en konfigurationsfil.

#En konfigurationsfil för tmux

Det första vi vill ha är en konfigurationsfil för tmux. Låt oss utgå från en som jag själv använder. Du kan kika på konfigurationsfilen .tmux.conf, den ligger på GitHub.

Hämta den så här.

wget -O $HOME/.tmux.conf https://raw.githubusercontent.com/mosbth/env/master/.tmux.conf

Kontrollera att den ligger på rätt plats.

more $HOME/.tmux.conf

När man skickar kommandon till tmux så används ett prefix som normalt är ctrl b, men jag har valt att ändra det till ctrl a. Om du tittar i konfigfilen så är det de första raderna som löser det. Det är helt enkelt enklare att klicka ctrl a än ctrl b.

De första raderna i filen $HOME/.tmux.conf ändrar prefix för kommandon i tmux.

# Bind C-a
set-option -g prefix C-a
unbind-key C-b
bind-key C-a send-prefix

Du måste alltid trycka prefixet innan tmux svarar. Det är prefixet som gör att tmux lyssnar på dig.

#Starta, detacha och attacha till en session

Starta tmux för första gången, du får då en ny tmux-session.

tmux

Du är nu i en tmux-session. Du kan koppla bort dig från sessionen, detacha, via kommandot prefix + d. Det betyder i vårt fall kommandosekvensen ctrl-a d. Tryck ned ctrl-tangenten tillsammans med a. Släpp ctrl-tangenten och tryck d.

Du är nu tillbaka vid terminalens prompt och du kan lista de sessioner som är aktiva.

tmux ls

Du kan starta en ny tmux-session, detacha dig från den och lista de aktiva sessionerna igen. Du har nu två sessioner när du kör tmux ls. Det kan se ut så här.

$ tmux ls
0: 1 windows (created Wed Jul  1 09:52:52 2015) [196x58]
1: 1 windows (created Wed Jul  1 09:59:44 2015) [196x58]

Du har nu två sessioner som du kan göra attach till. Den första siffran är sessionens nummer och du kan attacha till den med tmux a eller tmux attach, så här.

tmux attach -t 0
tmux a -t 0

Du har nu två sessioner som du kan växla mellan. Det som är riktigt bra med detta är att du kan ha en session på en server, oavsett från vilken klient du loggar in, så kan du koppla dig till samma session. Det blir som att koppla upp sig till en helt färdig miljö. Detta är en av styrkorna med terminal multiplexer, att kunna spara en session som man jobbar med och ha tillgång till den från en annan klient.

#Namngivna sessioner

Jag brukar ibland namnge mina sessioner för att det skall vara lättare att återkoppla till dem vid ett senare tillfälle.

Starta en namngiven session. Sessionen får namnen “basic”.

tmux new -s basic

Detacha från sessionen och du kan nu åtekoppla dig till sessionen via dess namn.

tmux attach -t basic

Om du listar dina sessioner så ser du namnet på de sessioner som är namngivna, istället för det id som visas för de icke-namngivna sessionerna.

$ tmux ls
1: 1 windows (created Tue Jun 30 13:18:04 2015) [196x58] (attached)    
2: 1 windows (created Tue Jun 30 16:41:07 2015) [80x23]                
basic: 4 windows (created Tue Jun 30 13:15:35 2015) [239x68] (attached)

För min egen del så använder jag detta så ofta så jag har skapat två alias för att starta an namngiven session och för att återkoppla till den. Aliasen ser ut så här.

alias tbs='tmux new -s basic'
alias tb='tmux attach -t basic'

Varje gång jag loggar in på en maskin för första gången så startar jag en tmux session med tbs. Nästa gång jag loggar in, kanske från en annan maskin, så återkopplar jag till samma session med tb. Enkelt och smidigt. Ett kraftfullt arbetsverktyg.

#Ta bort en session

Du kan ta bort en session som du inte behöver på följande sätt.

Först visa vilka sessioner som finns.

tmux ls

Radera vald session, via dess id, eller namn.

tmux kill-session -t 0
tmux kill-session -t basic

Du kan ta bort samtliga sessioner, inklusive tmux servern, via följande kommando.

tmux kill-server

Gör du sedan tmux ls så får du ett felmeddelande som säger att det inte finns en server igång.

$ tmux ls
failed to connect to server: Connection refused

#Jobba med panes

När du startar tmux så får du upp en svart skärm, det är ett fönster, ett window. Du kan nu dela in detta fönster i olika delar, panes. Du navigerar mellan dessa panes med prefix följt av piltangenterna för upp, ned, höger, vänster.

Ny session med ett fönster som innehåller en pane.

Ny session med ett fönster som innehåller en pane.

Följande kommando är till för att jobba med panes.

Kommando Vad
prefix % Dela upp nuvarande pane i två delar, splitta vertikalt.
prefix " Dela upp nuvarande pane i två delar, splitta horisontellt.
prefix x Ta bort den pane du står i.
Dela upp panes och hoppa mellan dem via piltangenter.

Dela upp panes och hoppa mellan dem via piltangenter.

Du kan förstora och förminska en pane genom att trycka prefix + ctrl <piltangent>.

#Jobba med windows

Du kan skapa nya fönster, windows, och hoppa mellan dem. Följande kommando hjälper dig att jobba med fönster.

Kommando Vad
prefix c Skapa ett nytt fönster som får ett id som visas i statuspanelen i botten.
prefix , Byt namn på fönstret, namnet visas i statuspanelen.
prefix <id> Flytta till ett visst fönster som har ett id, prefix + 1 flyttar till det fönster som har id 1.
prefix & Ta bort det fönster du står i.
Skapa flera fönster och namnge dem. Här finns fyra fönster som heter su, irc, dbwebb och linux.

Skapa flera fönster och namnge dem. Här finns fyra fönster som heter su, irc, dbwebb och linux.

#Ändra konfigurationsfilen för tmux

När du blir varm i kläderna så vill du säkert uppdatera konfigfilen så den passar till dig och dina behov. Eller kanske vill du bara snygga till statusraden.

Du kan testa dina ändringar på en gång genom att starta tmux och öppna konfigfilen i en texteditor. Gör en ändring i till exempel statusraden.

Leta reda på följande rader.

# Set status bar
set -g status-bg black
set -g status-fg green

Byt plats på bakgrundsfärg och förgrundsfärg så här.

# Set status bar
set -g status-bg green
set -g status-fg black

Gå sedan till ditt tmux-fönster och tryck prefix följt av r så laddas konfigfilen om automatiskt och du kan direkt se dina ändringar.

Letar du i konfigfilen så kan du hitta att r är kopplat till att läsa om konfigfilen. Det ser ut så här.

# reload tmux conf
bind-key r source-file ~/.tmux.conf

#Avslutningsvis

Att lära sig tmux, eller annat motsvarande terminal multiplexer, är väl investerad tid för den som likt en webbprogrammerare spenderar mycket tid vid dator och terminal.

Om du stöter på problem så kan du alltid fråga i forumet om Unix och Linux.

#Revision history

  • 2019-04-01: (B, lew) Tog bort mos configfil.
  • 2015-07-01: (A, mos) Första utgåvan.

Document source.

Category: unix.