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
-
Skapa en fil
exempel.txt
i din egen hemkatalog. Öppna filen i en textredigerare och skriv några rader text. -
Skapa en katalog
test
i din egen hemkatalog. - Förflytta dig till den nyskapade katalogen.
-
Kopiera filen
exempel.txt
från hemkatalogen till den aktuella katalogen. -
Byt namn på den nykopierade filen till
minfil.txt
- Flytta 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
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: 2024-08-26