Göm menyn

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.

  1. Skapa en fil exempel.txt i din egen hemkatalog. Öppna filen med en textredigerare och skriv in några rader text.
  2. Skapa en katalog test i din hemkatalog.
  3. Förflytta dig till den nyskapade katalogen.
  4. Kopiera filen exempel.txt från hemkatalogen till den aktuella katalogen.
  5. Byt namn på den nyss kopierade filen till minfil.txt.
  6. Flytta den omdöpta filen från den aktuella katalogen till din hemkatalog en nivå upp.
  7. Förflytta dig till din hemkatalog.
  8. Visa innehållet i filen minfil.txt.
  9. Ta bort filen minfil.txt.
  10. 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