Göm menyn

Kommandon i skalet

I det här steget 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.

Några vanliga kommandon

Viktigt Det finns en lathund som PDF med en lista över vanliga kommandon i Linux.

Övning För att öva på de mest grundläggande kommandona som används för att manövrera runt i filsystemet kan du göra nedanstående uppgifter. Använd lathunden ovan om du fastnar på någon punkt. Lösningsförslag

  1. Skapa en fil exempel.txt i din egen hemkatalog. Öppna filen i en textredigerare och skriv några rader text.
  2. Skapa en katalog test i din egen 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 nykopierade filen till minfil.txt
  6. Flytta 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

Att skriva in kommandon

Många kommandon i Linux vill ha ett eller flera argument, t.ex. 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. De är speciella argument och består oftast av ett minustecken följt av en eller flera bokstäver. T.ex. 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. Du kan ange filen med en absolut referens 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.k. jokertecken(eng. wildcards)

Mer information om kommandot grep och omdirigering med pipe (|) finns i senare avsnitt.

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å tangenten TAB. 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.

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:-$ 
	

Variabler

I skalfönstret kan man även tilldela variabler. Dessa kan användas för att lagra olika värden, t.ex. inställningar för olika program. Exempel på hur man lagrar ett värde i en variabel:

	
turte123@li10-3:-$  MINVARIABEL="Det svarta guldet"
	

För att sedan ta ut variabelns värde kan man 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, skal- 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 inte kan komma åt föräldraprocessens skalvariabler. Därför lämpar sig skalvariabler för kortsiktiga och temporära lagringar, t.ex. vilken katalog man står i. Skalvariabler skrivs med gemener.

En omgivningsvariabel däremot, ärvs av alla delprocesser. Det innebär att om du startar processen 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:

	
turte123@li10-3:-$  export MINVARIABEL="Det svarta guldet"
	

Omgivningsvariabler används ofta för att lagra inställningar, t.ex. 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
	

När man stänger ner processen, d.v.s. stänger skalfönstret försvinner alla variabler som man tilldelat under sessionen. Vi kommer i ett senare avsnitt (Punktfiler) gå igenom hur man kan skapa variabler som är ihållande genom sessioner.

Sammanfattning

Begrepp Förklaring
argument Det som skrivs efter själva kommandot och som t.ex. anger vilka filer kommandot ska operera på.
flaggor Speciella argument som ofta anges med ett minustecken följt av en bokstav. Dessa används för att t.ex. anpassa utskriften från kommandot.
jokertecken, wildcards Tecknen ? och * som används för att beteckna flera filer på en gång, t.ex. ab* för alla filer vars namn börjar med ab.
historik Alla kommandon lagras i kommandohistoriken. Med särskilda kommandon kan man upprepa gamla kommandon.
variabler En variabel lagrar ett värde som är satt av antingen användaren eller systemet. Skalet har skal- eller omgivningsvariabler som används för att lagra inställningar för olika program.

Diagnos

När du har läst detta avsnitt är det dags att göra diagnos D6. Kommandon i skalet . Gå till kursrummet i Lisam och klicka på Test i vänstermenyn.


Ta gärna en promenad i universitetsparken!


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2023-08-21