C2. Vad är skalet?
Innehåll
I det här kapitlet möter vi textskalet för första gången och tittar på hur vi kan arbeta med filer och kataloger. Vi går också igenom hur man hittar information om Linux via de inbyggda manualsidorna.
Skalfönstret i PUL
Det går utmärkt att klicka runt i fönstersystemet för att starta program, flytta filer, m.m. men som blivande programmerare är det viktigt att också kunna olika skalkommandon. Du kommer bli mer effektiv och förstår bättre vad som händer under ytan. Du kommer inte alltid att lösa alla problem via ett textskal, men troligtvis fler och fler allt eftersom du vänjer dig vid det sättet att arbeta.
Längst ner till vänster på skrivbordet finns en rad med ikoner för några saker som vi ofta behöver. Genom att klicka på den med dollartecken på svart bakgrund så startar vi en terminalemulator (oftast förkortat till terminal) eller skalfönster.
Det som syns längst upp till vänster är en prompt. Det är skalets sätt att tala om att det är redo att ta emot kommandon. Du måste alltså “stå vid prompten”, som vi brukar säga. Det innebär att skalfönstret är i fokus och att markören står och blinkar till höger om prompten. Då kan du skriva in och köra kommandon.
De kommandon vi kör tillhör ett så kallat kommandospråk. Vi skriver alltså korta instruktioner till datorn för att utföra enkla uppgifter. Grundprincipen är mycket enkel. Du skriver in ett kommando och trycker Enter, så kommer skalet att utföra kommandot. Ibland skriver skalet ut ett meddelande som svar, men långt ifrån alltid. Men en ny prompt kommer alltid upp när skalet är redo igen.
Övning
Starta ett skalfönster. Skriv in kommandot date och tryck Enter. Vad hände?
Varför skal?
Ordet skal, eller shell på engelska, kommer från att det är ett skal runt operativsystemets kärna, kernel. Skalets uppgift är att ge användaren ett sätt att interagera med och skicka instruktioner till operativsystemet. Det finns både grafiska skal (fönstersystem) och textskal (terminalemulatorer). Textskalet är det mest grundläggande sättet att interagera med operativsystemet. Det är också det mest kraftfulla och flexibla sättet att arbeta på. Det är därför programmerare ofta föredrar att arbeta i textskal.
Kommandona vi kör i skalet är ofta små program som utför en specifik uppgift, t.ex. att lista filer i en katalog, kopiera filer, flytta filer, ta bort filer, redigera textfiler, osv. Genom att kombinera dessa små program kan vi utföra mer komplexa uppgifter.
Det finns flera olika program som fungerar som skal. De skiljer sig åt i syntax och funktionalitet. Standardskalet, som startar automatiskt när du öppnar ett skalfönster i LiUs Linux-miljö, är bash, som är det kanske vanligaste skalet idag. I den här kursen utgår vi från att du använder bash eller att du har tillräcklig kunskap och erfarenhet för att hantera ett alternativt skal om du väljer att använda ett sådant.
Skalpanel i VSCode (remote-ssh)
Om du jobbar på egen dator med Remote-SSH tillägg i VSCode (instruktioner finns här) så kan du öppna en skalpanel direkt i VSCode genom att trycka som på bilden nedan. I denna terminal kommer du nu åt samma skal som du har tillgång till i PUL och kan köra samma kommandon som i PUL:s skalfönster.
Arbeta med filer och kataloger
I det förra kapitlet såg vi exempel på filhanteraren Thunar. Även om den kanske är lätt att använda, tack vare det förutsägbara grafiska gränssnittet, så kommer du i längden bli mer effektiv om du använder skalfönstret för att hantera filer och kataloger. I skalet har du tillgång till många fler funktioner och efter lite träning går det mycket snabbare att skriva in dessa korta kommandon. (Det går också mycket lättare att automatisera repetetiva uppgifter och förståelsen som behövs för att använda skalet speglas i hur filer hanteras i så gott som alla programmeringsspråk.)
Skalfönstret kommer till en början att kännas förvirrande och intetsägande. Det presenterar ingen information om du inte själv ber om det. Det enda du ser är prompten. Låt oss titta på ett exempel:
lisan123@tlvm-3-1-2:~$ pwd
/home/lisan123
lisan123@tlvm-3-1-2:~$ ls
Android Downloads Music scores.txt
Contacs Favorites Pictures Searches
Desktop git Public Templates
Documents Links python Videos
lisan123@tlvm-3-1-2:~$ cd Documents
lisan123@tlvm-3-1-2:~/Documents$
I det här exemplet är prompten anpassad så att den visar kontot för den inloggade användaren, lisan123, därefter @-tecken och namnet på den dator som användaren är inloggad på tlvm-3-1-2 och ett kolon, :. Efter detta kommmer arbetskatalogen, alltså den plats i filträdet där användaren “befinner sig” för närvarande. Eftersom användaren är i sin hemkatalog skrivs detta ut som ~, ett tecken som vi kallar för tilde. Slutligen kommer ett dollartecken, $, som är en vanlig avslutning på prompten för vanliga användare.
Den här prompten är standardinställning i LiUs Linux-miljö men du kan själv anpassa den om du vill för att t.ex. innehålla klockslaget då prompten skrevs ut. Det är dock inget vi kommer att gå in på här och nu.
Vi går igenom interaktionen ovan kommando för kommando.
lisan123@tlvm-3-1-2:~$ pwd
/home/lisan123
Först har användaren skrivit kommandot pwd vid prompten. Det är en förkortning av print working directory, alltså skriv ut namnet på arbetskatalogen, katalogen vi just nu står i. Och det är precis vad som har hänt, men i det här fallet har skalet inte skrivit ut den korta beteckningen ~ utan hela den absoluta sökvägen till den inloggade användarens hemkatalog (mer om sökvägar snart).
lisan123@tlvm-3-1-2:~$ ls
Android Downloads Music scores.txt
Contacs Favorites Pictures Searches
Desktop git Public Templates
Documents Links python Videos
Nästa kommando är ls, som är en förkortning för list. Kommandot skriver ut en lista över arbetskatalogens innehåll, dvs. alla filer och underkataloger. I det här exemplet ser vi inte tydligt vad som är filer och vad som är kataloger, men en god gissning är att Music är en underkatalog med musikfiler och att scores.txt är en textfil. Det är förstås alltid viktigt att ge filer och kataloger rimliga namn. (I många moderna terminalemulatorer får filer och kataloger olika färg, detta är dock inget man alltid kan förlita sig på.)
lisan123@tlvm-3-1-2:~$ cd Documents
lisan123@tlvm-3-1-2:~/Documents$
Det tredje kommandot är cd Documents. Kommandot cd är en förkortning för change directory och innebär att vi byter arbetskatalog. Vi flyttar alltså runt i filsystemet. För att veta vart vi ska, kräver kommandot ett argument, i det här fallet var det underkatalogen Documents. Resultatet av kommandot är att vi har “flyttat oss” och efteråt befinner oss just i underkatalogen Documents. Vi fick ingen utskrift som bekräftelse på detta, men prompten har ändrat utseende. Får vi inte hjälp av prompten behöver vi själva hålla i huvudet var vi är någonstans i filsystemet. Det brukar ta ett tag att vänja sig vid det här sättet att tänka, men det går alltid att kolla var man är med pwd.
Övning
Kolla vilken katalog du själv står i just nu med kommandot pwd. Lista sedan innehållet med ls.
Sökvägar
I skalfönstret finns inga tjusiga ikoner att klicka på, eller dra och släppa för att flytta runt filer. I stället får vi skriva kommandon och ange sökvägen till de filer vi vill jobba med. En sökväg är helt enkelt en adress som pekar ut en fil eller katalog någonstans i filsystemet. Ibland kan en sökväg peka ut flera filer.
Tecknet / används för att separera katalognamn i en sökväg. Om vi till exempel vill peka ut en fil som heter test.txt i katalogen Documents i hemkatalogen för användaren lisan123, så kan vi skriva den absoluta sökvägen /home/lisan123/Documents/test.txt.
En absolut sökväg utgår alltid från rotkatalogen, längst upp i hierarkin (kom ihåg att träd är rotade i toppen om man är datavetare eller matematiker). Rotkatalogen har inget egentligt namn och indikeras därför med ett enkelt /, dvs. tecknet som vi ju använder för att separera flera katalognamn i en kedja. Den absoluta sökvägen /home/lisan123 pekar alltså ut katalogen lisan123 som ligger i katalogen home som ligger direkt under roten /.
Sökvägar kan också vara relativa. En relativ sökväg utgår från arbetskatalogen, alltså från där du står just nu (den som skrivs ut med pwd). Om du till exempel står i din hemkatalog, /home/lisan123, så kan du peka ut samma fil test.txt i katalogen Documents med den relativa sökvägen Documents/test.txt. Notera att den relativa sökvägen inte börjar med ett /, eftersom den inte utgår från rotkatalogen.
Som vi såg ovan kan hemkatalogen för den inloggade användaren också förkortas till ~. Du kan alltså alltid skriva cd ~ för att komma till din hemkatalog (ofta räcker det att bara skriva cd utan något mer). Andra användares hemkataloger kan pekas ut som t.ex. ~berja456, men generellt har du inte särskilt mycket åtkomst till andras hemkataloger (Obs! ~berja456 och ~/berja456 är inte samma sökväg, det första är hemkatalogen för användaren berja456 och det andra är en katalog med namnet berja456 i din egen hemkatalog). Att stora datorsystem använder home för att organisera hemkataloger är rätt vanligt, men det finns även andra lösningar.
Om du vill förflytta dig nedåt en nivå i filträdet, alltså från arbetskatalogen till en underkatalog, så har vi redan sett att du kan skriva cd följt av underkatalogens namn. Om du istället vill förflytta dig ett steg uppåt kan du skriva cd .. i stället. Alla kataloger, utom rotkatalogen, innehåller nämligen en fördefinierad katalog .. som pekar ut nivån omedelbart ovanför, dess föräldrakatalog. På samma sätt kan du alltid använda en ensam punkt . för att peka ut den arbetskatalogen.
| Sökväg | Förklaring |
|---|---|
/ |
rotkatalogen |
/home |
katalogen home direkt under roten |
labbar |
katalogen labbar direkt under arbetskatalogen |
../info |
en katalog på samma nivå som arbetskatalogen, alltså först en nivå uppåt och sedan ner i katalogen info |
~ |
hemkatalogen för den inloggade användaren |
~/exempel.txt |
en fil i hemkatalogen för den inloggade användaren |
~lisan123 |
hemkatalogen för användaren lisan123 |
/home/lisan123/test.txt |
en fil i hemkatalogen för lisan123 |
(Notera att det finns mer än ett sätt att peka ut en viss fil eller katalog. Till exempel är både ~lisan123 och /home/lisan123 giltiga sökvägar till hemkatalogen för användaren lisan123.)
Hjälp
Det är omöjligt att komma ihåg alla Linux-kommandon, även för professionella systemadministratörer. Men du kan komma långt genom att känna till grunderna samt hur du kan ta reda på mer. Linux har lite olika inbyggda hjälpsystem, men de kräver tålamod eftersom det finns mycket text att läsa.
Manualsidorna kan vi få fram med kommandot man. Ofta skriver vi man följt av ett sökord som motsvarar det vi vill ha hjälp med, till exempel ett särskilt kommando.
Du kan själv prova att skriva man ls för att få hjälp med ett kommando som vi redan har sett. Men du får ingen hjälp om du skriver man cd. Varför då? Det beror på att det finns ett litet antal kommandon som är inbyggda i själva skalet, och cd är just ett sådant. För att se en lista med kommandon som är inbyggda i skalet kan du i stället skriva help och vill du veta mer om det inbyggda kommandot cd skriver du help cd.
Manualsidorna kan vara rätt långa och vi kan behöva skrolla framåt eller bakåt. Följande tangenter gäller:
| Tangent | Förklaring |
|---|---|
| Enter | Bläddra en rad framåt |
| Space | Bläddra en skärmsida framåt |
| B | Bläddra en skärmsida bakåt |
| Q | Avsluta skrollandet |
| H | Visa tillgängliga snabbtangenter |
Övning
Leta reda på manualsidan för kommandot man.
Manualsidorna är uppbygga enligt en särskild mall. När du förstår hur mallen ser ut kommer det bli enklare att leta efter information. En manualsida börjar alltid med ett stycke som heter NAME som innehåller de kommandonamn som sidan beskriver. Där finns också en kort beskrivning.
Därefter kommer ett avsnitt SYNOPSIS. Det beskriver hur man kan skriva kommandot vid prompten. Det kan se lite kryptiskt ut vid första anblick. Så här ser till exempel början av manualsidorna för ls ut:
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is spec‐
ified.
Mandatory arguments to long options are mandatory for short options
too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author
Manual page ls(1) line 1 (press h for help or q to quit)
Observera att den sista raden inte är en del av manualsidan utan bara visas av skrollprogrammet för att påminna om hur man navigerar i manualtexten.
Den generella syntaxen under SYNOPSIS säger att om vi vill använda ls så kan vi först ange någon form av flaggor, växlar eller options. Det är små korta koder som på något sätt modiferar hur ls arbetar. Vi kan sortera filerna, välja ut bara några, markera kataloger på särskilt sätt, och så vidare. De tre punkterna anger att vi kan ange flera sådana flaggor om vi vill. Hakparenteserna indikerar dock att det är helt frivilligt.
Efter flaggorna kan vi, om vi vill, ange en eller flera sökvägar. Vi kan alltså skriva sökvägen till en specifik katalog, om vi vill se innehållet där, eller ett mönster som pekar ut bara vissa filer. Möjligheterna är i det närmaste oändliga. Men även detta är frivilligt.
lisan123@tlvm-3-1-2:~/python$ ls -l *.py
-rwx------ 1 lisan123 student 17620 Apr 25 12:05 lab1.py
-rwx------ 1 lisan123 student 17139 Apr 25 10:20 lab2.py
-rwx------ 1 lisan123 student 3384 Apr 25 09:58 lab3.py
I det här exemplet har vi använt flaggan -l (alltså lilla bokstaven L) vilket instruerar ls att skriva ut mer information än vanligt. Vi har också använt mönstret *.py vilket innebär att vi bara listar filer som har filändelsen .py.
Längre ner på manualsidorna kan du till exempel hitta ett stycke om kommandots bakgrund, ofta heter det stycket HISTORY. Sist i dokumentet finns också ett stycke som visar relaterade kommandon. Det kan vara bra att titta i om man inte har riktigt full koll på vilket kommando man ska använda men känner till besläktat kommando.
Övning
Leta reda på manualsidan för kommandot ls.
Övning
Slå upp kommandot apropos i manualen. Vad gör det?
Övning
Kör kommandot man -s1 Intro och läs igenom denna introduktion till manualsidorna.
Här följer några exempel på kommandon för att få hjälp:
| Kommando | Förklaring |
|---|---|
man |
Visar sidor ur manualen |
man ls |
Visar manualsidor för ls |
man -k output |
Visar en lista med kommandon som har output i beskrivningen |
help |
Visar en lista över inbyggda kommandon i skalet |
help cd |
Visar manualsidorna för det inbyggda kommandot cd |
apropos |
Söker i alla manualsidor |
apropos ftp |
Visar alla kommandon där ftp finns med |
Sammanfattning
- Terminalen eller skalfönstret används för att skriva särskilda kommandon.
- Varje användare har en personlig hemkatalog för att lagra egna filer.
- Den aktuella katalogen är den där vi förnärvarande jobbar.
- En sökväg pekar ut en eller flera filer eller kataloger. En relativ sökväg utgår från aktuell katalog. En absolut sökväg utgår från roten.
- Kommandon som vi har använt:
date,pwd,ls,cd,man
Diagnos
När du har läst detta avsnitt är det dags att göra diagnos C2. Vad är skalet?. Till diagnoserna
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2025-08-17
