Introduktion
Terminalen är ett textbaserat gränssnitt som till skillnad från ett grafiskt gränssnitt styrs via kommandon du skriver in.
Terminalen är, jämfört med grafiska gränssnitt, enkel. Terminalen kräver mycket lite av hårdvaran för att fungera och är lättare att skapa gränssnitt för.
Terminalen gör det möjligt att använda och kontrollera allt från chip i storleken av tumnaglar till superdatorer.
När hårddiskar, grafikenheter och hela operativsystem slutar fungera är det fortfarande möjligt att använda datorn med terminalgränssnitt. Trots att terminalen kan verka svår att komma igång med ger den dig därmed många möjligheter som grafiska gränssnitt helt enkelt inte kan erbjuda.
Textbaserat gränssnitt
Kort sagt är terminalen ett textbaserat gränssnitt, dvs är ett sätt att använda datorn utan mus, fönster och ikoner.


Spara utdata från program till redigerbar textfil med hjälp av kommandon och program från terminalen.
Terminalen kräver, i sig, mycket lite för att fungera men kan ändå användas till allt som inte måste visas med bilder.
Skal
Terminalen används tillsammans med ett skal (shell), där det vanligaste är Bash (som står för Bourne Again SHell). Bash finns inbyggd i nästan alla Linux-distributioner (inklusive Uppsala universitets Ubuntu-version), Mac OS och numera även Windows 10.
Fördelar med terminalen
I korthet är fördelen med terminalen att den helt enkelt fungerar.
Om en dator över huvudtaget startar är sannolikheten stor att den går att styra via någon typ av terminal. Grafiska gränssnitt kräver däremot mycket mer av datorn för att fungera. De bygger nämligen på komplexa system som interagerar mellan varandra på bekostnad av stabilitet, säkerhet, resurser och portabilitet (dvs körbarhet på olika datorer).
Vidare är det mycket lättare att skriva program som interagerar via terminalen. I de flesta språk (inklusive de som är gjorda för rent vetenskapliga syften) kan du skriva ut ett värde till terminalen med endast en rad kod, vilket garanterat kommer att fungera på alla datorer programmet fungerar på.
Med grundläggande kunskaper om terminalen kommer du ha tillgång till många fler verktyg, samt spara massor av tid och huvudvärk när du vill skapa egna verktyg och program. Större vana med att arbeta i terminalen låter dig dessutom använda datorer mycket mer effektivt.
Grundläggande användning
Även vana datoranvändare kan känna sig obekväma med textbaserade gränssnitt. Målet i detta steg är att visa att grunderna är mycket enkla att komma igång med.
Med hjälp av terminalen kan du enkelt
- Kopiera filer mellan din lokala dator och andra datorer uppkopplade till ett nätverk.
- Ansluta din dator med Uppsala universitets Linuxsystem.
- Redigera textfiler på andra datorer uppkopplade till ett nätverk, till exempel på Uppsala universitets Linuxsystem.
Öppna en terminalemulator
På Ubuntu-versionen som används i universitets datorer kan du trycka <Ctrl>+<Alt>+t
för att öppna en terminalemulator. Den kan även startas som ett vanligt program under Applications -> Accessories -> Terminal.
- På Mac OS öppnar du den enklast genom att söka efter
terminal
i Spotlight. - För Windows finns det i dagsläget ingen inbyggd UNIX-terminal:
- PuTTY låter dig ansluta till en UNIX-server via SSH – du kan då helt enkelt logga in på en av universitets Linux-servrar med samma uppgifter som Studentportalen.
- Cygwin låter dig installera ett stort antal program som ingår i de flesta Linux-installationer.
- Microsoft har tillsammans med Canonical (som ligger bakom Ubuntu) introducerat bash för Windows 10. En installationsguide finns här.
- Du kan även installera ett helt Linux-system med minimal ansträngning på en Windows-dator. Mer om detta står i Linux-modulen.
Användning av terminalen
Terminalen öppnas med hem-mappen aktiv.
Du använder den helt enkelt genom att skriva ett kommando och trycka <Enter>
.
De flesta kommandon i terminalen fungerar enligt följande mall (syntax) <kommando> --<flagga> <argument>
.
Programmet ls
är ett bra, icke-destruktivt exempel:
- Testa att skriva in
ls
och trycka<Enter>
. Programmet kommer nu lista alla filer som finns i den öppna katalogen. - Prova kommandot
ls --all
. Bindesstreck används för att signalera flaggor.--all
ber programmet att visa alla filer, även dolda. - Prova kommandot
ls -a
. Enkla bindesstreck används (ofta) som genvägar för längre ord, så att ett tecken står för en flagga.-a
är synonymt med--all
. - Prova kommandot
ls -lha
. Detta är egentligen tre olika flaggor, där de två nya är:-l
, som står för “long list format”-h
, som visar filstorlekar i “human-readable” format (dvs i form av Kilobytes och liknande)
- Prova kommandot
ls Desktop
.Desktop
, dvs din skrivbordsmapp, är ett argument, vilketls
tolkar som mappen den ska skriva ut. - Prova kommandot
ls --help
. Detta visar en lista på alla tillgängliga alternativ förls
.
Vanliga kommandon
Det finns ett stort antal kommandon inbyggda i de flesta terminaler.
Grundläggande filhantering
ls
, list, skriver ut filer och mappar i den aktiva mappenpwd
, print working directory, visar sökvägen till den aktiva mappencd
, change directory, följt av mappen du vill byta till, byter mappcp
, copy, följt av källa och destination, kopierar en filmv
, move, följt av källa och destination, flyttar en fil- Notera att detta skriver över en fil med samma namn
rm
, remove, följt av önskad fil, raderar den- Notera att det inte går att återställa filer som raderas!
mkdir
, make directory, följt av ett namn, skapar en ny mappcat
, följt av filnamn, skriver ut filens innehåll till terminalen. Bra att använda vid piping.nano
, följt av filnamn, öppnar filen (eller skapar en ny om den inte existerar) i en enkel textredigerareless
, följt av filnamn, öppnar en textläsare som bl a låter dig söka och hantera stora mängder text.
För att använda cp
, mv
och rm
med hela mappar lägger du till alternativet -r
(recursive): t ex cp -r Desktop Desktopbk
.


Kopiera och redigera filer i terminalen.
Aktuell katalog
Aktuell katalog (working directory) syftar på den mapp du “befinner dig” i. När du öppnar ett nytt terminalfönster är den konventionellt sett hemkatalogen.
Om du byter mapp med cd, kommer den aktuella katalogen ändras. Skriver du
exempelvis cd /env/
blir den aktuella katalogen /env/
.
Kommandot pwd
(print working directory) skriver ut den aktuella katalogen som en absolut sökväg.
Sökvägar
I Linux sparas alla filer i en trädstruktur. Den översta sökvägen är /
, som kallas för roten. Om du exempelvis ansluter ett usb-minne till dator, kan den hamna i mappen /mount/usb/
– sökvägen kan dock variera mellan olika Linux-versioner.
- Mac OS, liksom de flesta UNIX-baserade system, bygger på en liknande konvention.
- Windows har istället, i de flesta fall, en egen rot för varje ansluten disk – ett usb-minne skulle alltså få en egen bokstav i stilen
E:\
.
En absolut sökväg är en sökväg som börjar i rotmappen, alltså den gemensamma mappen som hierarkin utgår från.
Om du exempelvis har filen textfil.txt
som ligger i mappen hemkatalogen för
användaren abcd1234
, är den absoluta sökvägen /home/abcd1234/textfil.txt
.


Exempel på trädstruktur med absoluta sökvägar.
Relativa sökvägar beror istället på, exempelvis, ditt konto eller den aktuella katalogen (working directory).


Exempel på relativa sökvägar: två sätt att nå hemmappen
./
syftar på den aktuella katalogen. För att exekverascript.sh
i den aktuella katalogen, kan du skriva./script.sh
. Sökvägarna./Desktop/
ochDesktop/
är synonyma.../
syftar på mappen över den aktuella katalogen. Om den aktuella katalogen är/mount/usb
, är../
synonymt med/mount/
.~/
(tilde) syftar på din hem-mapp och är synonym med/home/<användarnamn>
.- Skrivbordsmappen för den aktiva användaren är därmed
~/Desktop
. - I Mac OS motsvaras denna av
/Users/<användarnamn>
. - För användaren
abcd1234
är sökvägen/home/abcd1234/textfil.txt
synonym med~/textfil.txt
.
- Skrivbordsmappen för den aktiva användaren är därmed


Exempel på relativa sökvägar: trädstruktur i relation till hemkatalogen.
Sökvägar till mappar kan alltid avslutas med /
, medan namn på filer aldrig gör
det.
De flesta program accepterar sökvägar till mappar som slutar och inte slutar med /
,
men det finns undantag. Om ett kommando inte fungerar kan det därför bero på
det.
Navigering i terminalen
Du kan testa navigering i terminalen med hjälp av följande exempel:
- Öppna ett terminalfönster och skriv
cd ~
(du navigerar till din hem-mapp med tilde). - Skriv kommandot
pwd
för att skriva ut den aktuella katalogen. Terminalen bör visa/home/<användarnamn>
, exempelvis/home/abcd1234
om du är inloggad med användarnamnetabcd1234
.- Hemkatalogerna i Mac OS ligger i mappen
/Users/
istället för/home/
- Hemkatalogerna i Mac OS ligger i mappen
- Skriv kommandot
mkdir test_folder
för att skapa filentest_folder
. - Skriv
ls
för att skriva ut filer och mappar i den aktiva mappen. Ser du mappentest_folder
?. - Skriv
cd test_folder
. - Testa kommandot
pwd
och notera hur den ändrats till/home/<användarnamn>/test_folder
. - Skriv
nano test_file.txt
för att skapa filentest_file.txt
och redigera filen. Skriv några rader text. Spara filen genom att trycka<Ctrl>+O
(bokstaven ‘O’, inte siffran 0).<Ctrl>+X
stänger programmet.- nano, liksom många andra editorer, skapar en tillfällig fil där data som ännu inte sparats lagras. Den raderas när du sparar eller avslutar programmet.
- Skriv
ls
. Eftersom du navigerat tilltest_folder
bör endasttest_file.txt
visas. - Kommer du ihåg vad du skrev i
test_file.txt
? Skrivcat test_file.txt
för att visa innehållet som du skrev. - Skriv
cd ..
för att återgå till katalogen ovanför. Verifiera gärna medpwd
så att du ser den aktuella katalogen. - Skriv
cat ./test_folder/test_file.txt
för att se innehållet i textfilen igen. - Skriv
mv test_folder/test_file.txt ./
för att flytta filen till din hemkatalog. - Testa kommandot
ls
igen. Ser dutest_folder
ochtest_file.txt
?. - Skriv
cd ~/test_folder
, verifiera gärna medpwd
. - Skriv
ls
. Mappen bör vara tom och därför inte ge någon utskrift. - Prova
cat ../test_file.txt
. Filen bör skrivas ut, eftersom den befinner sig i mappen ovanför. - Skriv
rm ../test_file.txt
för att radera filen. - Återgå till hemmappen.
- Radera
test_folder
med kommandotrmdir test_folder
.
Komprimerade mappar
Komprimering är när en eller flera filer (eller mappar) packas ihop till ett koncentrerat paket. I Linux används ofta tar
för komprimering av mappar. Om du stöter på filer av typen tar.bz2
och tar.gz
kan du använda det för att extrahera dem.
Vanliga flaggor är:
-x
, extract, packar upp ett arkiv.-c
, compress, komprimerar till ett arkiv.-v
, verbose, skriver ut samtliga filer som komprimeras eller extraheras.-f
, file, innebär att arkivet ska läsas eller skrivas från en fil.-j
, innebär att algoritmen bzip2 ska användas.-z
, innebär att algoritmen gzip ska användas.- Komprimering med bzip2 erbjuder ofta mindre arkiv, medan gzip tenderar att vara mycket snabbare.
Om du exempelvis har arkivet archive.tar.gz
kan du extrahera den med kommandot tar -xvzf archive.tar.gz
.
Hitta filer
Kommandot find
låter dig söka och hitta filer.
Du använder det genom att skriva find <mapp> -<sökalternativ> <term>
.
För att hitta filen dokument.txt
i din hemkatalog skriver du find ~/ -name dokument.txt
.


Kommandot find låter dig hitta filer.
För att söka efter mappar lägger du till alternativet -type d
. Om du exempelvis vill hitta alla mappar med namnet “Foo” i mappen ~/Documents
skriver du find ~/Documents -type d -name Foo
.
Du kan också använda
wildcards,
som exempelvis tecknet *
vilken matchar minst 0 tecken.
Vill du exempelvis söka efter filer som slutar med .pdf
i mappen
~/Downloads
skriver du
find ~/Downloads -name *.pdf
Historik
När du experimenterar med terminalen kommer det bli jobbigt att skriva samma kommandon flera gånger.
history
skriver ut kommandohistorik.- För att göra om ett kommando i historiken skriver du
!<nummer>
.
- För att göra om ett kommando i historiken skriver du
- Piltangenter uppåt och neråt kommer “scrolla” de senaste kommandona du har gjort
<Shift>+PgUp
resp.<Shift>+PgDn
scrollar i terminalfönstret
Processhantering
I Linux startar program i processer, där de i sin tur kan starta flera. Vardera har ett eget id-nummer, kallat PID. När program kraschar eller tar för mycket resurser är det bra att hålla koll på hur man hanterar dem.
top
ochhtop
visar aktiva processer i realtid.ps
, med alternativ, visar en lista av processer.kill
följt av PID, dödar den processen.- Detta motsvarar Force Quit i Mac OS och att avsluta med aktivitetshanteraren i Windows
- Observera att du kan råka stänga av viktiga processer med detta kommando, vilket kan leda till förlorad data och/eller omstart av datorn
<Ctrl>+C
skickar en kill-signal till ett aktivt program- Detta är praktiskt om ett aktivt program har kraschat!
Fjärråtkomst via SSH
En av de mest kraftfulla verkygen i terminalen är ssh
.
ssh
, secure shell, skapar en krypterad anslutning till en annan dator och låter dig använda den var du än är.
För att koppla upp dig till universitetets Linuxservrar skriver du helt enkelt ssh <användarnamn>@<servernamn>
, varefter den frågar efter Lösenord A – på så sätt kan du arbeta på universitets datorer hemifrån.
Exempelvis kan du använda servern Arrhenius genom att skriva
ssh abcd1234@arrhenius.it.uu.se
, där du ersätter abcd1234
med ditt
studentkontos användarnamn.
Vill du veta mer om SSH? Se då sidan om SSH.
Kopiera filer med SCP
Du kan även kopiera filer via ssh
med hjälp av scp
(secure copy).
Den fungerar på ungefär samma sätt som cp
, men du kan även kopiera till och
från fjärranslutna enheter. Argumentet skrivs i det fallet
<användarnamn>@<servernamn>:<sökväg>
.
Användning påminner på många sätt om ssh
. Om du har filen test_file.txt
i din hemkatalog på Uppsala universitets Linux-server och vill kopiera den till
Documents i din hemkatalog på datorn du sitter vid, kan du skriva följande:
scp abcd1234@arrhenius.it.uu.se:~/test_file.txt ~/Documents/
Där abcd1234
ska ersättas med namnet för ditt studentkonto.
Notera att den frågar efter lösenord på samma sätt som ssh
.
Du kan även kopiera filen test_file.txt
till mappen Documents
i hemkatalogen på Uppsala universitets linux-server genom att ändra
destinationens argument.
scp test_file.txt abcd1234@arrhenius.it.uu.se:~/Documents/
Notera att test_file.txt
här antas vara i den aktuella katalogen.
In- och utdata
Indata är de värden som skickas in till program medan utdata är det som skickas ut. Exempelvis är utdatat från kommandot ls
namnen på de filer och mappar som finns i den nuvarande mappen.
Piping
Piping används för att koppla samman utdata från ett kommando till indata för ett annat kommando i en kedja (kallad pipeline).
Symbolen |
(pipe), som skrivs med <AltGr>+<
på svenska tangentbord, skrivs mellan kommandon för att utdatan från det föregående ska användas som indata till det senare.
Ett exempel på en enkel pipeline är hur programmet grep
, som kan användas för att
filtrera textrader,
kan kopplas ihop med kommandot history
genom att skriva history | grep rm
Utdatan från history
skickas då vidare som indata till grep
, vilken i sin tur filtrerar bort alla rader utan texten rm
.
Du kan använda pipes i längre kedjor. För att räkna antalet processer som genereras av en webbläsare, exempelvis Chromium skriver vi ps -A | grep chromium | wc -l


Piping kedjar in- och utdata.
ps -A
listar alla aktiva processergrep chromium
filtrerar fram alla rader med ordet “chromium”- Programmet
wc
, som används för att räkna exempelvis ord och tecken, med flaggan-l
, räknar antalet utskrivna rader.
Använda filer
Du kan även använda filer för in- och utdata med hjälp av symbolerna <, >, >>
.
<kommando> > <filnamn>
skriver utdata från kommando till filnamn.- Befintlig data i filen raderas – var försiktig!
- Detta är mycket smidigt med program som
lspci
, vilka skriver ut stora mängder data. Testa exempelvis kommandotlspci > hardware.txt
.
<kommando> >> <filnamn>
skriver utdata från kommando till filnamn.- Utskriften läggs till i slutet av filen
<kommando> < <filnamn>
använder filen som indata till kommandot.- Kan med fördel användas för att testa program som styrs via terminalen
Multitasking
I terminalen kan du ha flera program igång, enligt vad som kallas för jobs.
- Starta ett program i bakgrunden med suffixet
&
.- Du kan testa detta genom att skriva
nano &
.
- Du kan testa detta genom att skriva
- Skicka ett program till bakgrunden och återgå till terminalen med kortkommandot
<Ctrl>-Z
- Du kan prova detta genom att öppna editorn
vi
och trycka<Ctrl>-Z
.
- Du kan prova detta genom att öppna editorn
- Visa aktiva program med kommandot
jobs
.- Notera siffrorna längst till vänster!
- Återgå till ett program med
fg
fg %<siffra>
kommer öppna jobbet med motsvarande siffra ijobs
.fg
öppnar programmet som ligger “överst”, dvs det som senast blev lagt i bakgrunden.
Automatisk komplettering med Tab
<Tab>
-tangenten används för att avsluta ett ordTab-användning.
- Om du exempelvis vill radera en fil med ett långt namn, som
oem-audio-hda-daily-lts-vivid-dkms_0.201606221847-ubuntu14.04.1_all.deb
, räcker det att skrivarm oem
följt av att trycka<Tab>
för att komplettera resten av filnamnet. - Kompletteringen är också användbar för att undvika misstag.
- Om det finns flera matchningar, exempelvis för
cd Do<Tab>
om du både harDocuments
ochDownloads
i samma katalog, kan du trycka på<Tab>
upprepade gånger för att växla mellan dem.- Vissa skal kräver att du trycker två gånger för att få den första
matchningen av flera. Då händer alltså ingenting om du trycker
<Tab>
en gång.
- Vissa skal kräver att du trycker två gånger för att få den första
matchningen av flera. Då händer alltså ingenting om du trycker
- Om du exempelvis vill radera en fil med ett långt namn, som
Wildcards
- Wildcards fungerar i de flesta program, inte bara
find
.- Exempelvis flyttar kommandot
mv ./*.jpg ~/Pictures
alla filer som slutar med.jpg
i den aktiva mappen till mappen Pictures i din hemkatalog
- Exempelvis flyttar kommandot