C3. Kommandon i skalet
I det här kapitlet tittar vi lite närmare på hur man skriver in och använder kommandon i skalfönstret. Vi går också igenom några av de vanligaste kommandona.
1. Vanliga kommandon
Det kan lätt bli tjatigt att läsa en massa exempel på Linux-kommandon. Det är bättre att öva själv. Vi har sammanställt en liten lathund i PDF-format. Kolla igenom den lite snabbt innan nästa övning.
Övning
För att öva på de mest grundläggande kommandona som används för att manövrera runt i filsystemet, gör nedanstående uppgifter. Leta i lathunden ovan för att hitta kommandon som vi ännu inte tagit upp.
- Skapa en fil
exempel.txt
i din egen hemkatalog. Öppna filen med en textredigerare och skriv in några rader text. - Skapa en katalog
test
i din hemkatalog. - Förflytta dig till den nyskapade katalogen.
- Kopiera filen
exempel.txt
från hemkatalogen till den aktuella katalogen. - Byt namn på den nyss kopierade filen till
minfil.txt
. - Flytta den omdöpta filen från den aktuella katalogen till din hemkatalog en nivå upp.
- Förflytta dig till din hemkatalog.
- Visa innehållet i filen
minfil.txt
. - Ta bort filen
minfil.txt
. - Ta bort katalogen
test
.
Det finns många sätt att lösa dessa uppgifter, men här är ett lösningsförslag.
2. Att skriva in kommandon
Vi ska nu sammanfatta lite av det vi sett tidigare och lägga till ytterligare några saker som är bra att veta när man skriver in kommandon i skalet.
Många kommandon i Linux vill ha ett eller flera argument, till exempel vill cd
att du anger vilken katalog du vill gå till. Du kan också ändra beteendet på de flesta kommandona med hjälp av flaggor. Det här tog vi upp lite grann i förra kapitlet. Flaggor är speciella argument och består oftast av ett minustecken följt av en eller flera bokstäver. Till exempel kan du till ls
ange en flagga som ger en mer detaljerad utskrift genom att skriva ls -l
. Flaggorna ska oftast stå innan resten av argumenten, annars kommer kommandot som regel inte att tolka dem. T.ex. kommer ls *.txt -l
inte att ha den effekt som man kanske tror.
Ett kommando avslutas antingen med att man trycker Enter
eller genom att man skriver ett semikolon ;
. Med hjälp av semikolon kan man skriva flera kommandon på samma rad vilket kan vara praktiskt om man skulle vilja göra flera saker upprepade gånger genom att utnyttja kommandohistoriken.
Ofta ska du ange en eller flera filer som argument till ett kommando. Detta kan ske på flera sätt, vilket vi också berörde i förra kapitlet. Du kan ange filen med en absolut sökväg genom att t.ex. skriva /home/turte123/labb1/rapport.txt
. Om du står i katalogen /home/turte123/labb2
kan du ange filen med en relativ referens genom att skriva ../labb1/rapport.txt.
Din hemkatalog kan du referera till genom att skriva ~
. Har du användarnamnet turte123
kan du alltså referera till /home/turte123/labb2
genom att skriva ~/labb2
. Om du står i den katalog där filen är behöver du självklart bara ange filnamnet.
Ett väldigt praktiskt sätt att ange eller leta efter filer är via mönstermatchning. Vi tar här upp tre sätt som man kan göra detta på i Linux-system:
Kommando | Förklaring |
---|---|
? |
Matcha ett godtyckligt tecken |
cp foo?.txt ~/umpa |
Filerna foo1.txt, foo2.txt, foo#.txt kommer att matchas men inte foo.txt eller foo12.txt |
* |
Matcha noll eller flera godtyckliga tecken |
cp foo*.txt ~/umpa |
Filerna foo1.txt, foo2.txt, foo#.txt kommer att matchas liksom foo.txt och foo12.txt men inte fie.txt. |
[] |
Matcha något av de tecken som står innanför hakparenteserna |
cat * | grep ss[hl] |
Listar alla förekomster av texten ssh eller ssl i de filer som finns i katalogen. |
ls -R | grep [A-K]* |
Listar alla filer och kataloger under den katalog där du står som börjar med en stor bokstav i intervallet A-K. |
?
och *
är så kallade jokertecken (eng. wildcards). Mer information om kommandot grep
och omdirigering med pipe (tecknet |
) kommer i senare kapitel.
Ett annat bra trick att känna till vid inmatning av kommandon är automatisk komplettering. Om du ska ange ett långt filnamn behöver du inte skriva ut hela utan kan låta skalet leta reda på filen åt dig. Om du till exempel ska titta på innehållet i filen min_egen_lista_över_saker.txt
kan du skriva in cat min_
och sedan trycka på Tab-tangenten . Då kommer skalet att leta reda på en fil vars namn börjar med min_
. Om det finns flera filer vars namn börjar med den texten piper skalet och du får skriva in ytterligare några tecken tills början av namnet blir unikt.
3. Historik
De senaste kommandona du har skrivit in sparas i en historiklista som du kan använda för att upprepa kommandon på ett smidigt sätt. Du kan bläddra genom de föregående kommandona genom att använda uppåtpil
och nedåtpil
på tangentbordet. Du kan också använda något av skalets inbyggda historikkommandon.
Historikkommando | Förklaring |
---|---|
history |
Visa en lista över de senast inskrivna kommandona i skalfönstret. |
!! |
Upprepa det senaste inskrivna kommandot. |
!n |
Upprepa kommando n i historiklistan. |
!sträng |
Upprepa det senaste kommandot som börjar med strängen sträng. T.ex. skulle !cat upprepa det senaste kommandot som började med cat . |
Här följer ett exempel på användning av historikkommandon:
turte123@li10-3:-$ cd ~/exempel
turte123@li10-3:-$ ls -l
total 286
-rw-r--r-- 1 turte123 student 196 aug 13 13:09 anteckningar.txt
-rw-r--r-- 1 turte123 student 57 aug 13 13:10 komihåg.txt
-rw-r--r-- 1 turte123 student 125020 aug 13 13:09 rapport.doc
-rw-r--r-- 1 turte123 student 4457 aug 13 13:09 uppgift4b.adb
turte123@li10-3:-$ cat komihåg.txt
Kom ihåg att vattna blommorna minst två gånger i veckan!
turte123@li10-3:-$ !!
cat komihåg.txt
Kom ihåg att vattna blommorna minst två gånger i veckan!
turte123@li10-3:-$ history
1 13:09 cd ~/exempel
2 13:10 ls -l
3 13:10 cat komihåg.txt
4 13:11 cat komihåg.txt
5 13:11 history
turte123@li10-3:-$ !2
ls -l
total 286
-rw-r--r-- 1 turte123 student 196 aug 13 13:09 anteckningar.txt
-rw-r--r-- 1 turte123 student 57 aug 13 13:10 komihåg.txt
-rw-r--r-- 1 turte123 student 125020 aug 13 13:09 rapport.doc
-rw-r--r-- 1 turte123 student 4457 aug 13 13:09 uppgift4b.adb
turte123@li10-3:-$
4. Variabler
I skalfönstret kan man även skapa variabler. Dessa kan användas för att lagra olika värden, till exempel inställningar för olika program. För att lagra ett värde i en variabel skriv du helt enkelt MINVARIABEL="Det svarta guldet"
vid prompten.
För att sedan ta ut variabelns värde kan du skriva $
innan variabelnamnet. Denna sekvens kommer då att bytas ut mot det värde som variabeln har innan kommandot körs. Till exempel kan du få reda på vad en variabel har för värde lagrat genom att skriva:
turte123@li10-3:-$ MINVARIABEL="Det svarta guldet"
turte123@li10-3:-$ echo $MINVARIABEL
Det svarta guldet
Det finns i huvudsak två sorters variabler, skalvariabler och omgivningsvariabler.
En skalvariabel, som du såg prov på i exemplet ovan, är en specifik variabel till processen som skalet självt körs i och ärvs inte av dess delprocesser. Det innebär att alla barnprocesser som skapas från ett skalfönster (alltså alla program som du startar) inte kan komma åt föräldraprocessens skalvariabler. Därför lämpar sig skalvariabler för kortsiktiga och temporära lagringar, till exempel vilken katalog man står i. Skalvariabler skrivs med gemener (små bokstäver).
En omgivningsvariabel, däremot, ärvs av alla delprocesser. Det innebär att om du startar texteditorn Emacs från skalfönstret så har den tillgång till skalfönstrets omgivningsvariabler. För att sätta en omgivningsvariabel kan man skriva kommandot export
innan tilldelningen. Exempel:
export MINVARIABEL="Det svarta guldet"
Omgivningsvariabler används ofta för att lagra inställningar, till exempel i vilka kataloger ett program ska leta för att hitta filer. Alla omgivningsvariabelnamn skrivs med versaler och för att se vilka omgivningsvariabler som finns kan du i de flesta typer av skal skriva kommandot printenv
. Exempel:
turte123@li10-3:-$ export MINVARIABEL="Det svarta guldet"
turte123@li10-3:-$ printenv
HOME=/home/turte123
USER=turte123
LOGNAME=turte123
PATH=/student/bin:/sw/chez-6.0a/bin:/sw/gnat-3.12/bin:/sw/allegro-5.0:/us
r/local/bin:/sw/frame-5.5/bin:/sw/gcc-2.8.1/bin:/sw/emacs-19.34b/bin:/sw/
lang-6.1/SUNWspro/bin:/sw/pascal-4.2/SUNWspro/bin:/usr/ccs/bin:/sw/X11/bi
n:/usr/dt/bin:/usr/openwin/bin:/usr/openwin/demo:/usr/bin:/usr/sbin:/sw/g
nu/bin:/sw/wincenter:.
MAIL=/var/mail/turte123
SHELL=/bin/zsh
TZ=MET
SSH_CLIENT=213.64.95.103 1992 22
SSH_TTY=/dev/pts/22
TERM=
HOSTTYPE=sun4
VENDOR=sun
OSTYPE=solaris
MACHTYPE=sparc
SHLVL=1
PWD=/home/TDDB57/adm
GROUP=student
HOST=remote-und.ida.liu.se
MINVARIABEL=Det svarta guldet
Som vi ser finns det rätt många omgivningsvariabler redan, med olika typer av information som flera program kan vara intresserade av.
När du stänger ner processen, alltså när du stänger skalfönstret, då försvinner alla variabler som du tilldelat under sessionen. Vi kommer i ett senare kapitel gå igenom hur du kan skapa variabler som finns kvar mellan sessioner.
Sammanfattning
- Argument är det som skrivs efter ett kommando och som till exempel anger filka filer kommandot ska bearbeta.
- Flaggor eller växlar är speciella argument som ofta anges med ett minustecken följt av en bokstav. De används för att anpassa kommandots beteende.
- Jokertecknen
?
och*
kan användas för att peka ut alla filer som matchar ett visst mönster. - Det finns en historik över de kommandon som du tidigare matat in, som du kan återanvända.
- Det finns variabler i skalet, som kan lagra olika värden, oftast inställningar.
Diagnos
När du har förstått de begrepp som vi har gått igenom i det här kapitlet är det dags att göra diagnos C3.
Sidansvarig: Peter Dalenius
Senast uppdaterad: 2025-06-30