Kom igång med terminalen
Om man sen tidigare inte är bekant med hur terminaler fungerar så kan det vara svårt att snabbt komma igång med det. Här följer därför en guide för grundläggande användning av terminalen. Till hjälp har jag förskapat lite filer och kataloger. Startläget ser ut som följer:
klw@DESKTOP:~/git/work/unix-guide$ tree ..├── action│ ├── Daredevil.txt│ └── Reacher.txt├── comedy│ ├── Arrested_Development.txt│ └── Community.txt└── drama ├── Breaking_Bad.txt └── Peaky_Blinders.txt
3 directories, 6 files
Vi kan se tre kataloger: “action”, “comedy” och “drama”. Det finns sedan två filer i respektive katalog som representerar tv-serier.
I ett unixsystem behöver vi inte ange filändelser utan den informationen finns i filen. Det kan vara bra utifrån ett användarvänligt perspektiv att ändå lägga till filändelsen.
Du kan kopiera hela koden nedan och klistra in i terminalen så skapas samma struktur och innehåll.
mkdir -p unix-guidecd unix-guide/mkdir -p action comedy dramatouch action/{Daredevil,Reacher}.txttouch comedy/{Arrested_Development,Community}.txttouch drama/{Breaking_Bad,Peaky_Blinders}.txtecho "\"Breaking Bad\" is a crime drama series about Walter White,a high school chemistry teacher who, after being diagnosed with terminal lung cancer,partners with a former student, Jesse Pinkman,to cook and sell methamphetamine to secure his family's financial future." > drama/Breaking_Bad.txt
Förkunskaper
Du har installerat en egen terminal enligt guiden Terminal och pakethanterare.
Vad är kommandon?
Ett kommando är en instruktion till operativsystemet att utföra en viss uppgift. Det kan vara att starta ett program eller köra ett script, eller bara enkla uppgifter som att ändra rättigheter på filer och traversera filträdet. Kommandon kan man bara köra rakt av eller så kan man lägga till flaggor (options) och argument.
Här är ett exempel på ett enkelt kommando:
ls
Här är ett exempel på samma kommando med flaggor, dvs inställningar till kommandot:
ls -al
Här är exempel på ett kommando med ett argument, vilket ofta innefattar vad kommandot ska utföras på:
ls katalognamn
Du kan såklart blanda argument och options:
ls -al katalognamn
Tips att öva in från start
-
Om du redan har skrivit och utfört ett kommando hamnar det i history. Normalt sparas de 500 senaste kommandona där. Vi kan med
PIL UPP
gå igenom dem och välja att exekvera det igen. -
Om man börjar skriva ett kommando eller ett argument kan man automatiskt fylla i resten med
TAB
. Det kallas för autocompletion och gör att vi kan spara mycket tid i terminalen. Om det man har skrivit matchar flera saker behöver man trycka fler gånger på TAB för att se vilka alternativ man har. När man enbart har ett alternativ som matchar fylls hela på. -
Vill man rensa skärmen kan man använda kortkommandot
CTRL+L
alternativt köra kommandotclear
. -
Med kortkommandot
CTRL+e
hoppar man till slutet av raden. -
Med kortkommandot
CTRL+a
hoppar man till början av raden. -
Med kortkommandot
CTRL+PIL
kan du hoppa fram och tillbaka med markören ord för ord. -
Med kortkommandot
CTRL+k
raderar du allt som kommer efter markören.
Nu kan vi börja testa kommandon och hantera de filer och kataloger som är skapade.
Navigera i filsystemet
Det är inte alltid lätt man ser var man befinner sig i filsystemet, det beror på prompten. För att få fram hela sökvägen kan vi använda pwd
(Print Working Directory).
klw@DESKTOP:~/git/work/unix-guide$ pwd/home/klw/git/work/unix-guide
Vill man se vilka filer och mappar som finns i en katalog använder vi ls
:
klw@DESKTOP:~/git/work/unix-guide$ lsaction comedy drama
Vi kan se de tre katalogerna. För att se vad som finns inuti en katalog använder vi den som argument:
klw@DESKTOP:~/git/work/unix-guide$ ls comedyArrested_Development.txt Community.txt
Vill man ha en mer detaljerad lista lägger vi till flaggan l:
klw@DESKTOP:~/git/work/unix-guide$ ls -l comedytotal 0-rw-r--r-- 1 klw klw 0 Jul 1 13:40 Arrested_Development.txt-rw-r--r-- 1 klw klw 0 Jul 1 13:40 Community.txt
Nu ser vi mer information, till exempel vilka rättigheter filerna har (mer om det senare), när de skapades och vem som äger dem samt storlek på filerna.
För att även se dolda filer kan vi använda flaggan a:
klw@DESKTOP:~/git/work/unix-guide$ ls -al comedytotal 8drwxr-xr-x 2 klw klw 4096 Jul 1 13:40 .drwxr-xr-x 5 klw klw 4096 Jul 1 13:37 ..-rw-r--r-- 1 klw klw 0 Jul 1 13:40 Arrested_Development.txt-rw-r--r-- 1 klw klw 0 Jul 1 13:40 Community.txt
Nu dök det upp två “filer” till. .
och ..
. Den första (.) representerar en länk till den katalog vi är i (comedy) och den andra (..) representerar en länk till ovan katalog. Vi kikar på ett kommando till där det kommer till användning. Iställer för att använda comedy
som ett argument kan vi ta oss dit för att sedan jobba därifrån. Vi använder kommandot cd (Change Directory):
klw@DESKTOP:~/git/work/unix-guide$ cd comedy/klw@DESKTOP:~/git/work/unix-guide/comedy$
Notera hur prompten ändras och vi är numer inuti katalogen comedy
:
klw@DESKTOP:~/git/work/unix-guide/comedy$ ls -altotal 8drwxr-xr-x 2 klw klw 4096 Jul 1 13:40 .drwxr-xr-x 5 klw klw 4096 Jul 1 13:37 ..-rw-r--r-- 1 klw klw 0 Jul 1 13:40 Arrested_Development.txt-rw-r--r-- 1 klw klw 0 Jul 1 13:40 Community.txt
Vi stegar alltså in i kataloger med cd <katalognamn>
. Vi kunde se innan att det fanns en länk ..
. Den använder vi när vi vill backa ett steg:
klw@DESKTOP:~/git/work/unix-guide/comedy$ cd ..klw@DESKTOP:~/git/work/unix-guide$
Hantera filer och kataloger
Låt säga att vi vill lägga till en ny tv-serie: “Squid_Game.txt” i katalogen “action”. Vi använder då touch
för att skapa en fil.
klw@DESKTOP:~/git/work/unix-guide$ cd actionklw@DESKTOP:~/git/work/unix-guide/action$ touch Squid_Game.txtklw@DESKTOP:~/git/work/unix-guide/action$ lsDaredevil.txt Reacher.txt Squid_Game.txt
Vi behöver en ny kategori och behöver då skapa en ny katalog. Vi använder då mkdir
för det.
klw@DESKTOP:~/git/work/unix-guide$ mkdir cartoonklw@DESKTOP:~/git/work/unix-guide$ lsaction cartoon comedy drama
Det finns en bra flagga till mkdir
som gör att vi inte får felmeddelande om katalogen redan finns, -p
:
klw@DESKTOP:~/git/work/unix-guide$ mkdir cartoonmkdir: cannot create directory ‘cartoon’: File existsklw@DESKTOP:~/git/work/unix-guide$ mkdir -p cartoonklw@DESKTOP:~/git/work/unix-guide$
För att lägga till “The_Simpsons.txt” i den nya katalogen återanvänder vi en fil och byter sedan namn på den. Vi får då se några nya kommandon. Först kopierar vi en fil och lägger den i mappen “cartoon”:
klw@DESKTOP:~/git/work/unix-guide$ cp drama/Breaking_Bad.txt cartoon/klw@DESKTOP:~/git/work/unix-guide$ ls cartoon/Breaking_Bad.txt
Vi kopierar filen (källan) drama/Breaking_Bad.txt
till katalogen (målet) cartoon
. Nu ska vi byta namn på filen så det stämmer. Det gör vi med samma kommando som vi flyttar filer:
klw@DESKTOP:~/git/work/unix-guide$ mv cartoon/Breaking_Bad.txt cartoon/The_Simpsons.txtklw@DESKTOP:~/git/work/unix-guide$ ls cartoon/The_Simpsons.txt
Skulle vi behöva ta bort en fil använder vi kommandot rm
(remove):
klw@DESKTOP:~/git/work/unix-guide$ rm action/Reacher.txtklw@DESKTOP:~/git/work/unix-guide$ ls action/Daredevil.txt Squid_Game.txt
Om det är en katalog vi ska ta bort behöver vi lägga till flaggan -r
(recursive) för att det ska gå:
klw@DESKTOP:~/git/work/unix-guide$ rm -r cartoonklw@DESKTOP:~/git/work/unix-guide$ lsaction comedy drama
Sök i filsystemet
För att enkelt hitta var filer och kataloger finns kan vi använda kommandot find
:
klw@work:~/git/work/unix-guide$ find -name Peaky_Blinders.txt./drama/Peaky_Blinders.txt
Vi utgår ifrån den katlog vi befinner oss i. För att söka i en annan katalog lägger vi till sökvägen dit som argument. Låt säga att vi vill söka i katalogen ‘comedy’:
klw@work:~/git/work/unix-guide$ find comedy -name Peaky_Blinders.txt
Där finns den inte så ingen utskrift syns. Med find kan vi med fördel även söka med ett så kallat wildcard.
klw@work:~/git/work/unix-guide$ find -name Dare*./action/Daredevil.txt
Det passar bra om det finns flera filer med snarlika namn eller om man inte vet/orkar skriva hela filnamnet.
Läsa innehåll i filer
Nu har vi lite koll på hur vi navigerar i filsystemet och skapar, flyttar, kopierar och tar bort filer och kataloger. Vi går vidare med att titta på hur vi kan se innehållet i filerna. För att det ska fungera behöver det finnas något att se så vi lägger till lite information i en av filerna. Här använder jag den inbyggda editorn nano för att skriva till en fil. Jag kör kommandot nano drama/Breaking_Bad.txt
och lägger till lite text:
nano drama/Breaking_Bad.txt

När jag sparar trycker jag CTRL+X och sedan väljer jag y följt av Enter för att spara med samma filnamn jag öppnade med.
Nu har vi lite information i en fil. Vill vi nu se vad den innehåller använder vi cat
:
klw@DESKTOP:~/git/work/unix-guide$ cat drama/Breaking_Bad.txt"Breaking Bad" is a crime drama series about Walter White,a high school chemistry teacher who, after being diagnosed with terminal lung cancer,partners with a former student, Jesse Pinkman,to cook and sell methamphetamine to secure his family's financial future.
Om vi bara vill se en eller flera rader i filen kan vi arbeta med head för att läsa från början i filen och tail för att läsa från slutet:
klw@DESKTOP:~/git/work/unix-guide$ head -2 drama/Breaking_Bad.txt"Breaking Bad" is a crime drama series about Walter White,a high school chemistry teacher who, after being diagnosed with terminal lung cancer,
Flaggan -2 betyder att det ska läsas två rader från start.
klw@DESKTOP:~/git/work/unix-guide$ tail -2 drama/Breaking_Bad.txtpartners with a former student, Jesse Pinkman,to cook and sell methamphetamine to secure his family's financial future.
Som du ser gäller samma sak för tail.
Hur kommer jag till min hemmakatalog?
Ofta vill man ta sig till sin egna rot, sin hemmakatalog. Det finns några sätt man lätt kan hoppa dit direkt:
cd
cd $HOME
cd ~
Alla tre sätt ovan tar dig till din användares hemmakatalog.
Övriga användbara kommandon
echo "hello world"
echo "hello world" > hello.txtcat hello.txthello world
För att “fylla på” filen utan att skriva över innehållet använder vi >>
:
echo "hello world again" >> hello.txtcat hello.txthello worldhello world again
Manualen (man)
Det är inte lätt att komma ihåg vilka flaggor som kan användas eller vad de alla betyder, eller i vilken ordning man ska skriva vissa parametrar. Därför finns det så gott som alltid en manual för kommandona som nås av att använda kommandot man
. Vill du t.ex veta mer om vad du kan göra med ls?
Så här får du upp manualen:
man ls

Väl här kan du navigera med piltangenterna. Du kan också söka i manualen med shift+/
. Om du till exempel vill se hur man listar directories söker du bara efter det och trycker Enter
. Stega vidare till nästa sökträff med n
.
Du avslutar med q
(quit).
History (history)
Vill du se vilka kommandon du har skrivit tidigare?
history
Om terminalen “låser sig”
När vi skriver kod i en kodeditor vänjer man sig snabbt med att spara med ctrl+s
. Om man skulle råka göra det i terminalen låser man den och döljer det man skriver. För att “låsa upp” igen är det ctrl+q
som gäller.
Öppna filhanteraren från WSL2
Ibland kan man vilja se filer man jobbar med i filhanteraren istället. Du kan då exekvera kommandot explorer.exe
:
explorer.exe
Nu öppnas filhanteraren i sin egna root. För att öppna den i nuvarande katalog man står i lägger man till en punkt för att markera den nuvarande katalogen:
explorer.exe .
Cheatsheet över ovan kommandon
Kommando | Beskrivning |
---|---|
PIL UPP | Backa i history |
TAB | Autocompletion |
CTRL+l / clear | Rensa terminalen |
CTRL+e | Hoppa till slutet av raden |
CTRL+a | Hoppa till början av raden |
CTRL+k | Raderar allt efter markören |
pwd | Skriver ut var du befinner dig |
ls | Listar filer och kataloger |
cd | Byter katalog |
mkdir | Skapar en katalog |
cp <source> <target> | Kopierar en fil/katalog (-r) |
mv <source> <target> | Flyttar en fil/katalog |
rm | Raderar en fil/katalog (-r) |
find | Sök efter en fil/katalog |
nano | En inbyggd terminaleditor |
cat | Visar allt innehåll i en fil |
head | Visar innehåll i en fil från start (-n) |
tail | Visar innehåll i en fil från slutet (-n) |
$HOME | Miljövariabel med sökväg till din hemmakatalog |
echo | Skriver ut något i terminalen |
man | Manualen |
history | Visar dina tidigare exekverade kommandon |
CTRL+s | Låser input och döljer den |
CTRL+q | Låser upp input och visar det du skrivit |
Övning
Nedan kommer en övning där du få på egen hand träna på några av de kommandon som tas upp i guiden. Ta det i din egna takt och försök få en känsla för vad kommandona gör och
-
Börja med att ladda ned zip-filen från dbwebb.bth.se/unix-ovning.
-
Packa upp filerna i din WSl installation, förslagsvis i hemmakatalog och i en katalog med namnet ‘unix-ovning’. Om du vill göra det från terminalen kan först flytta zip-filen till din hemmakatalog i WSL, till exempel:
Flytta övningsfilerna cd $HOMEmv /mnt/c/Users/klw/Downloads/unix-ovning.zip .Notera att mitt användarnamn är “klw”. Byt ut det mot ditt egna. Sökvägen kan också variera beroende på operativsystem etc.
-
Packa sedan upp zip-filen med följande kommando:
Packa upp zip-filen till en katalog unzip unix-ovning.zip -d unix-ovning -
Nu har du katalogerna och filerna i en katalog som heter
unix-ovning
i din hemmakatalog.Flytta dig in i katalogen cd unix-ovning
Nu är du redo att börja med övningen.
- Ta reda på var du befinner dig i strukturen och utforska innehållet i katalogerna.
- Vilka är de tre första böckerna skrivna av Sci-fi författaren Asimov?
- Vilka är de sista två böckerna skrivna av Sci-fi författaren Clarke?
- Skapa en ny genre
deckare
. Lägg till “larsson.txt” och följande böcker: Män som hatar kvinnor, Flickan som lekte med elden och Luftslottet som sprängdes. - Kopiera
rowling.txt
till katalogenklassiker
och ta bort orginalet. - Kopiera
clarke.txt
till katalogenklassiker
. - Byt namn på
tolkien.txt
tilltolkien-LOTR.txt
. - Slå ihop de svenska och engelska klassikerna till en fil som heter
alla-klassiker.txt
. - Lägg till boken
Pebble in the sky
till författarenAsimov
. - Ta bort katalogen
sci-fi
och allt innehåll. - Ta reda på sökvägen till
Moby-Dick
. - Vilka böcker har
rowling
skrivit?
Om du tappar bort dig kan du alltid gå till din hemmakatalog med till exempel cd $HOME
.