www.ntnu.no *
INFOWEB >  nybegynner >  innføring  > Introduksjon til UNIX
Verktøy
Du kan legge til kommentarer
Eller sende denne artikkelen
Les artikler skrevet av erlingbo
Brukervurdering
Hvor mye hjelp var det i denne artikkelen?
Mye Noe Lite
Forhåndsvisning
Du trenger ikke en 'utskriftsvennlig side' for å skrive ut denne siden. Forklaring
Innhold

Introduksjon til UNIX

Hva menes med katalog og fil

For videre lesning er det viktig å ha god forståelse av begrepene katalog og fil. Disse kan virke fremmede og vanskelige i begynnelsen, men de vil etterhvert bli selvsagte.

Når man skal ta vare på noe, blir det vanligvis lagt i et lagringsmedium. Man kan sammenligne en datamaskin med et kontor. På et kontor vil det være normalt å benytte et arkivskap som lagringsmedium, mens en datamaskin benytter en harddisk. I arkivskapet kan man legge dokumenter som for eksempel papirer, tegninger, videobånd eller lydkassetter. På harddisken kan man lagre data digitalt der dataene kan være for eksempel tekst, bilder, lyd og programmer. I arkivskapet har man mange mapper som kan inneholde både dokumenter og nye mapper. Videre kan de nye mappene inneholde nye dokumenter og flere nye mapper.

I en datamaskin vil harddisken tilsvare arkivskapet, kataloger og underkataloger tilsvarer mappene og filene tilsvarer dokumentene. En fil er altså en fellesbetegnelse for tekstdokumenter, bilder, lyd og programmer, mens kataloger fungerer som mapper vi ordner filer og underkataloger i. En fil kan ikke inneholde en katalog eller en annen fil. En underkatalog er en katalog som ligger inne i en annen katalog.

Ofte bruker man ordet element som fellesbetegnelse på filer og kataloger.

Adressering av kataloger og filer

Akkurat som mapper i et arkivskap, er formålet med kataloger i en harddisk å lage et hierarkisk lagringssystem slik at det blir ryddig og lett å finne frem i. For å angi hvor en katalog eller en fil finnes, benytter man seg av en adresseringskode. Alle adresser tar utgangspunkt i toppen av hierarkiet, kalt '/'. Hvis det under toppen ligger en katalog home vil adressen til denne være /home. Hvis denne har en underkatalog homee og den igjen har en ny underkatalog je som igjen har underkatalogen jensj, så vil den fulle adressen være /home/homee/je/jensj. Når en adresse starter med '/' kalles den absolutt fordi den bare kan tolkes på en måte. En mer utdypende forklaring vil bli gitt etter hvert i kapitlene når det er behov for det.

Vis stående katalog (pwd)

For å finne ut hvor på harddisken man er, kan man bruke kommandoen pwd. Dette er en forkortelse for print working directory. Rett etter innlogging vil pwd alltid gi adressen til hjemmekatalogen. Dette fordi man alltid blir plassert i sin egen hjemmekatalog når man logger seg inn.

konsoll #1
login:~$ pwd
/home/homee/je/jensj

Begynnelsen på første linje i eksempelet viser navnet på maskinen man er logget inn på, så et kolon, deretter hvilken katalog man befinner seg i og til slutt et dollartegn. Etter dollartegnet kommer kommandoen som skal skrives. På linjen under er det vist hva kommandoen pwd svarte.

Så kan man spørre seg hva tegnet '~' (tilde) gjør der det vitterlig skulle stått /home/homee/je/jensj. Grunnen til dette er at man som regel befinner seg i hjemmekatalogen eller et sted under den. Derfor bruker man for letthets skyld '~' som et symbol for hjemmekatalogen. Ved henvisninger til andre brukeres hjemmekataloger kan bruke ~bruker som henspeiler til det stedet hvor brukeren har hjemmekatalog, normalt /home/home*/**/bruker. Jens kan da henvise til både ~, ~jensj og /home/homee/je/jensj som alle betyr akkurat det samme. En annen person, la oss si Arne kan ha hjemmekatalog på /home/homek/ar/arne.

Vis innholdet i en katalog (ls)

For å vise innholdet i en katalog kan en bruke kommandoen ls, som står for list. For bruker jensj vil ls gi følgende:

konsoll #2
login:~$ ls
Mail/         brevmor.txt   mail@         public_html/

Vi ser at hjemmekatalogen til Jens inneholder fire elementer. Mail og public_html er kataloger siden de slutter med '/' (skråstrek eller slash), mail er en symbolsk lenke siden den slutter med @ (krøllalfa) og brevmor.txt er en vanlig fil siden den ikke har noe tegn etter seg.

Det er verd å merke seg at det skilles mellom små og store bokstaver. Derfor er Mail og mail ikke det samme. En symbolsk lenke betyr bare at elementet henviser til et annet element. Hvis elementet den henviser til forsvinner, vil den peke ut i intet, egentlig ikke finnes, og ikke ha noen fornuftig mening. Symbolske lenker blir nærmere forklart i kapittelet ved samme navn.

Opsjoner til ls

Opsjonen -l

Denne opsjonen viser listen sortert alfabetisk i langt format.

konsoll #3
login:~$ ls -l
total 4
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
-rw-------   1 jensj    ntnu          135 Jul 16 19:00 brevmor.txt
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwxr-xr-x   3 jensj    ntnu           43 Jul 16 13:49
public_html/

Rettigheter L Bruker Gruppe Størrelse mm dd tt:mm Navn

Ut fra listen som ls ga ut ser vi at mail henviser til Mail. Så akkurat i dette tilfellet er de samme katalog selv om man skiller mellom små og store bokstaver. Men hvis Mail fjernes er mail ubrukelig.

Opsjonen -a

Denne lister skjulte filer og kataloger. De begynner alltid med tegnet punktum. Dette er ofte filer som inneholder kommandoer som kjøres ved innlogging eller innstillinger som forteller hvordan ulike programmer skal oppføre seg.

konsoll #4
storm:~$ ls -a
./           .Xdefaults     .bash_profile  Mail/        public_html
../          .bash_history  .bashrc        brevmor.txt
.Xauthority  .bash_logout   .netscape/     mail@

Vi ser her at det finnes en katalog, .netscape, og seks filer som er skjult. Alle .bash-filene og .Xdefaults brukes i forbindelse med innlogging. .Xauthoriy brukes i forbindelse med sikkerhet for brukeren. .netscape inneholder innstillinger og bokmerker for Netscape.

Opsjonen -la

Kombinerer vi opsjonene -l og -a listes både de ordinære og de skjulte elementene i en lang liste.

konsoll #5
storm:~$ ls -la
total 104
drwx--x--x   5 jensj    ntnu         4096 Jul 20 18:44 ./
drwxr-xr-x 1531 root    root        65536 Jul 20 06:43 ../
-rw-------   1 jensj    ntnu           49 Jul 20 14:26 .Xauthority
-rw-------   1 jensj    ntnu          196 Jul 16 13:37 .Xdefaults
-rw-------   1 jensj    ntnu         1089 Jul 19 08:32 .bash_history
-rw-------   1 jensj    ntnu          232 Jul 16 13:37 .bash_logout
-rw-------   1 jensj    ntnu          236 Jul 16 13:37 .bash_profile
-rw-------   1 jensj    ntnu          212 Jul 16 13:37 .bashrc
drwx------   3 jensj    ntnu         4096 Jul 20 18:44 .netscape/
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
-rw-------   1 jensj    ntnu          135 Jul 16 19:00 brevmor.txt
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwxr-xr-x   3 jensj    ntnu           43 Jul 20 14:55 public_html/ 

Opsjonen -ld

Denne viser bare selve katalogen vi står i, ikke innholdet i den. Den kan være nyttig dersom man kun ønsker informasjon om katalogen og ikke alle filene også.

konsoll #6
storm:~/public_html$ ls -ld
drwxr-xr-x   5 jensj    ntnu           93 Jul 22 17:44 ./ 

Dersom man ønsker å liste innholdet i en katalog, trenger man ikke å gå inn i katalogen. Da skriver man bare adressen til katalogen etter kommandoen: login:~$ ls -la public_html/bilder

Her listes innholdet i katalogen bilder opp. Den ligger under katalogen public_html som ligger under hjemmekatalogen.
Ved langlisting av kataloger vil det alltid dukke opp to linjer øverst som viser katalogene '.' (punktum) og '..' (punktumpunktum). Disse har en helt spesiell betydning. Katalogen '.' er den stående katalogen, altså katalogen vi befinner oss i. I dette tilfellet er det /home/homee/je/jensj. Katalogen '..' er katalogen over den stående katalogen, i dette tilfellet /home/homee/je. De er altså ikke egentlige kataloger og '.' vil ikke alltid være /home/homee/je/jensj. Dersom vi står i katalogen /home/homee/je/jensj/public_html vil '.' være den katalogen. Dette vil man få mye bruk for ved for eksempel kopiering av filer og kataloger.

Opsjonen -ltr

I stedet for å sortere alfabetisk kan man sortere etter når filen sist ble lagret. Dette gjøres med opsjonen -t. I tillegg kan man reversere sorteringen med -r. Sammen med langlisteformatet vil ls nå gi ut en liste der nederste fil er den som er endret sist.

konsoll #7
storm:~$ ls -ltr public_html/bilder
total 164
-rw-r--r--   1 jensj    ntnu         1920 Jul 16 13:46 diskett.gif
-rw-r--r--   1 jensj    ntnu       160335 Jul 22 17:40 100acre.gif

Vi ser at filen 100acre.gif er den som ble endret på sist. Dette er praktisk hvis man ikke husker navnet på den filen man arbeidet med sist i katalogen.

Skifte katalog (cd)

For å bevege seg rundt omkring på harddisken bruker man kommandoen cd som står for change directory. Kommandoen trenger normalt ett argument som bestemmer hvorhen man skal flytte seg. Dersom man ønsker å flytte seg til katalogen public_html skriver man

konsoll #8
storm:~$ cd public_html
storm:~/public_html$

Vi ser at kommandolinjen endrer seg og viser at vi befinner oss i katalogen public_html under hjemmekatalogen.

Vi husker at '..' betyr katalogen over stående katalog. Dersom man ønsker å flytte seg til katalogen over den man står i kan man altså skrive

konsoll #9
storm:~/public_html$ cd ..
storm:~$ 

Tilsvarende kan man flytte seg to kataloger oppover:

konsoll #10
storm:~$ cd ../..
storm:/home$ 

Hvis argumentet til cd begynner med tegnet '/' er adressen som tidligere nevnt absolutt. Når det ikke gjør det tolkes det relativt i forhold til der man står. Så når man befinner seg i hjemmekatalogen og vil gå til public_html trenger man som vist i eksemplene ikke skrive hele adressen. Det holder å skrive det som kommer i tillegg til adressen til der man står. Argumentet tolkes også absolutt når det starter med '~' siden dette egentlig står for adressen /home/homee/je/brukernavn som begynner med '/'. Hvis man ikke gir et argument til cd kommer man alltid til hjemmekatalogen.

konsoll #11
storm:/home$ cd /local/www/html/studorg
storm:/local/www/html/studorg$ cd ~/public_html
storm:~/public_html$ cd
storm:~$ 

Lage katalog (mkdir)

For å lage nye kataloger brukes kommandoen mkdir som står for make directory. Denne kommandoen må ha minst ett argument som bestemmer navnet til den nye katalogen. For å lage katalogen musikk skriver man:

konsoll #12
storm:~$ mkdir musikk
storm:~$ ls -l
total 4
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
-rw-------   1 jensj    ntnu          135 Jul 16 19:00 brevmor.txt
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwx------   2 jensj    ntnu            9 Jul 21 02:10 musikk/
drwxr-xr-x   3 jensj    ntnu           43 Jul 20 14:55 public_html/

Vi ser her at katalogen musikk er blitt opprettet. Katalogen blir opprettet i stående katalog. Dersom man vil ha den i en annen katalog må man enten gå inn i denne slik at den blir stående katalog, eller man skriver stien til den nye katalogen. Dersom man vil opprette katalogen lyd i katalogen public_html skriver man:

konsoll #13
storm:~$ mkdir public_html/lyd
storm:~$ cd public_html/
storm:~/public_html$ ls -l
total 8
-rw-r--r--   1 jensj    ntnu           21 Jul 22 17:44 IMAGEMAP
drwxr-xr-x   2 jensj    ntnu            9 Jul 22 17:44 USERBIN/
drwxr-xr-x   2 jensj    ntnu           49 Jul 22 17:40 lyd/
drwxr-xr-x   2 jensj    ntnu           29 Jul 22 17:42 imagemap/
-rw-r--r--   1 jensj    ntnu          806 Jul 18 13:17 index.html
drwx------   2 jensj    ntnu            9 Jul 27 17:04 musikk/

Nå ble lyd opprettet som underkatalog til public_html.

Slette katalog (rmdir)

For å slette kataloger brukes kommandoen rmdir som står for remove directory. Denne kommandoen må ha minst ett argument som angir adressen til katalogen(e) som skal slettes.

konsoll #14
storm:~$ rmdir musikk public_html/lyd
storm:~$ ls -l . public_html
.:
total 4
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
-rw-------   1 jensj    ntnu          135 Jul 16 19:00 brevmor.txt
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwxr-xr-x   3 jensj    ntnu           43 Jul 20 14:55 public_html/

public_html:
total 8
-rw-r--r--   1 jensj    ntnu           21 Jul 22 17:44 IMAGEMAP
drwxr-xr-x   2 jensj    ntnu            9 Jul 22 17:44 USERBIN/
drwxr-xr-x   2 jensj    ntnu           29 Jul 22 17:42 imagemap/
-rw-r--r--   1 jensj    ntnu          806 Jul 18 13:17 index.html

Vi ser her at katalogene musikk og lyd er blitt slettet.

For å bruke denne kommandoen må katalogen som skal slettes være tom.

Kopiere filer (cp)

For å kopiere filer brukes kommandoen cp som står for copy. Denne kommandoen må ha minst to argumenter som angir hvilken fil eller hvilke filer som skal kopieres, og hvor kopien skal ligge. Hvis det oppgis mer enn to argumenter må siste argument være en katalog. Eksempler på bruken av cp er:

kode #1
cp frafil tilfil
cp frafil tilkatalog
cp frafil1 frafil2 ... frafil9 ... tilkatalog

Jens har allerede skrevet et brev til mor. For å spare tid vil han sende nesten det samme brevet til onkel. For å gjøre dette kopieres filen brevmor.txt til brevonkel.txt slik at brevet til onkel kan endres på uten at brevet til mor blir endret.

konsoll #15
storm:~$ cp brevmor.txt brevonkel.txt 
storm:~$ ls -l
total 8
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
-rw-------   1 jensj    ntnu          135 Jul 16 19:00 brevmor.txt
-rw-------   1 jensj    ntnu          135 Jul 21 13:17 brevonkel.txt
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwxr-xr-x   3 jensj    ntnu           43 Jul 20 14:55 public_html/

Hvis man skal kopiere flere filer på en gang, kan det gjøres ved å gi inn flere argumenter til kommandoen. Siste argument må da være en katalog siden en fil ikke kan inneholde flere filer.

konsoll #16
storm:~$ cp brevmor.txt brevonkel.txt public_html 
storm:~$ ls -l public_html 
total 12
drwxr-xr-x   2 jensj    ntnu           29 Jul 16 13:47 bilder/
-rw-------   1 jensj    ntnu          135 Jul 21 13:18 brevmor.txt
-rw-------   1 jensj    ntnu          135 Jul 21 13:18 brevonkel.txt
-rw-r--r--   1 jensj    ntnu          806 Jul 18 13:17 index.html

Begge brevene er nå kopiert inn i katalogen public_html.

I neste eksempel har Jens sett på brukeren til Jorun og funnet ut at hun har en fil han gjerne skulle ha hatt. Denne filen ligger i Joruns hjemmekatalog og heter .emacs. Jens ønsker å plassere filen i sin egen hjemmekatalog:

konsoll #17
storm:~$ cp ~jorunj/.emacs .
storm:~$ ls -la
total 100
drwx--x--x   7 jensj    ntnu         4096 Jul 25 11:44 ./
drwxr-xr-x 1531 root    root        65536 Jul 25 11:32 ../
-rw-------   1 jensj    ntnu           49 Jul 20 14:26 .Xauthority
-rw-------   1 jensj    ntnu          196 Jul 16 13:37 .Xdefaults
-rw-------   1 jensj    ntnu         2941 Jul 24 20:20 .bash_history
-rw-------   1 jensj    ntnu          232 Jul 16 13:37 .bash_logout
-rw-------   1 jensj    ntnu          236 Jul 16 13:37 .bash_profile
-rw-------   1 jensj    ntnu          212 Jul 16 13:37 .bashrc
-rw-------   1 jensj    ntnu          147 Jul 25 11:44 .emacs
drwx------   2 jensj    ntnu          126 Jul 21 05:50 .netscape/
drwx------   2 jensj    ntnu           51 Jul 24 19:45 Brev/
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
drwxrwx---   2 jensj    ineo            9 Jul 21 15:57 boksider/
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwxr-xr-x   5 jensj    ntnu           93 Jul 22 17:44 public_html/

Dersom vi ser på kommandolinjen skrev ikke Jens adressen til sin egen hjemmekatalog, han skrev bare '.'. Dette er fordi han stod i hjemmekatalogen sin da han utførte kopieringen og '.' betyr som kjent stående katalog. For å kopiere elementer fra andre brukere må man ha rettigheter til å lese dem. Dette vil bli forklart i kapittelet om rettigheter.

Slette filer (rm)

For å slette filer brukes kommandoen rm som står for remove. Denne kommandoen må ha minst ett argument som sier hvilken fil som skal slettes. Den kan også slette mange filer på en gang.

konsoll #18
storm:~/public_html$ rm brevonkel.txt brevmor.txt 
storm:~/public_html$ ls -l
total 4
drwxr-xr-x   2 jensj    ntnu           29 Jul 16 13:47 bilder/
-rw-r--r--   1 jensj    ntnu          806 Jul 18 13:17 index.html

Brevene til mor og onkel er nå slettet. Det er verdt å merke seg at det bare er de eksemplarene av brevene som lå i katalogen public_html som ble slettet. Eksemplarene som lå i hjemmekatalogen til Jens ligger der fortsatt.

konsoll #19
storm:~$ ls -l
total 8
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
drwxrwx---   2 jensj    ineo            9 Jul 21 15:57 boksider/
-rw-------   1 jensj    ntnu          135 Jul 21 13:17 brevonkel.txt
-rw-------   1 jensj    ntnu          135 Jul 16 19:00 brevmor.txt
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwxr-xr-x   5 jensj    ntnu           93 Jul 22 17:44 public_html/

For å slette alle filene i en katalog kan man bruke opsjonen -r hvor r står for rekursjon. Skal man slette alle filene i katalogen katalog skriver man altså: rm -r katalog. Vær oppmerksom på at kommandoen rm ikke gir noen angremuligheter og man får ingen advarsler! Når filene blir slettet er de borte for alltid.

Flytte filer (mv)

For å flytte filer brukes kommandoen mv som står for move. Denne kommandoen må ha minst to argumenter som angir hvilken fil, eventuelt hvilke filer, som skal flyttes og hvorhen de skal flyttes. Hvis det oppgis mer enn to argumenter må det siste argumentet være en katalog. Eksempler på bruken av mv er:

kode #2
mv frafil tilfil 
mv frafil tilkatalog 
mv frafil1 frafil2 ... frafil9 ... tilkatalog

Listingen under viser at Jens har laget en katalog som han har kalt Brev:

konsoll #20
storm:~$ ls -l
total 8
drwx------   2 jensj    ntnu            9 Jul 24 19:33 Brev/
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
drwxrwx---   2 jensj    ineo            9 Jul 21 15:57 boksider/
-rw-------   1 jensj    ntnu          135 Jul 21 13:17 brevonkel.txt
-rw-------   1 jensj    ntnu          135 Jul 16 19:00 brevmor.txt
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwxr-xr-x   5 jensj    ntnu           93 Jul 22 17:44 public_html/

Nå ønsker Jens å flytte brevene til mor og onkel inn i den nye katalogen:

konsoll #21
storm:~$ mv brevonkel.txt brevmor.txt Brev
storm:~$ ls -l
total 0
drwx------   2 jensj    ntnu           49 Jul 24 19:34 Brev/
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
drwxrwx---   2 jensj    ineo            9 Jul 21 15:57 boksider/
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwxr-xr-x   5 jensj    ntnu           93 Jul 22 17:44 public_html/

Som vi ser er brevene fjernet fra hjemmekatalogen, men vi finner dem igjen i katalogen Brev:

konsoll #22
storm:~$ cd Brev
storm:~/Brev$ ls -l
total 8
-rw-------   1 jensj    ntnu          135 Jul 21 13:17 brevonkel.txt
-rw-------   1 jensj    ntnu          135 Jul 16 19:00 brevmor.txt

Dersom man flytter en fil innenfor samme katalog så er det akkurat det samme som å endre navn på filen.

konsoll #23
storm:~/Brev$ mv brevonkel.txt brevjorun.txt
storm:~/Brev$ ls -l
total 8
-rw-------   1 jensj    ntnu          135 Jul 21 13:17 brevjorun.txt
-rw-------   1 jensj    ntnu          135 Jul 16 19:00 brevmor.txt

Stakkars onkel får ikke lenger noe brev, det gjør derimot Jorun.

Rettigheter og grupper

Med kommandoen ls -l fikk vi ut ganske mye informasjon. Feltene det ikke har blitt sagt noe om til nå er rettigheter og gruppe. Vi minnes følgende:

konsoll #24
Rettigheter  L Bruker   Gruppe  Størrelse  mm dd tt:mm Navn

storm:~$ ls -la
total 96
drwx--x--x   7 jensj    ntnu         4096 Jul 24 19:34 ./
drwxr-xr-x 1530 root    root        65536 Jul 24 06:28 ../
-rw-------   1 jensj    ntnu           49 Jul 20 14:26 .Xauthority
-rw-------   1 jensj    ntnu          196 Jul 16 13:37 .Xdefaults
-rw-------   1 jensj    ntnu         2644 Jul 23 11:27 .bash_history
-rw-------   1 jensj    ntnu          232 Jul 16 13:37 .bash_logout
-rw-------   1 jensj    ntnu          236 Jul 16 13:37 .bash_profile
-rw-------   1 jensj    ntnu          212 Jul 16 13:37 .bashrc
drwx------   2 jensj    ntnu          126 Jul 21 05:50 .netscape/
drwx------   2 jensj    ntnu           51 Jul 24 19:45 Brev/
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/
drwxrwx---   2 jensj    ineo            9 Jul 21 15:57 boksider/
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/
drwxr-xr-x   5 jensj    ntnu           93 Jul 22 17:44 public_html/

Feltet for rettigheter består alltid av ti tegn. Det første viser hvilken type elementet er.

kode #3
-	=	Fil
d	=	Katalog (directory)
l	=	Symbolsk lenke (link)

De siste ni tegnene kan deles inn i tre grupperinger med tre tegn der de tre første gjelder for eieren, de tre midterste for medlemmer av gruppe og de tre siste for alle andre.

Det er i denne forbindelse at feltet gruppe blir viktig. En kan for eksempel gi medlemmer av en gruppe lov til å både lese og skrive til en fil mens alle andre kun har lov til å lese filen.

I hver av de tre grupperingene er det et fast mønster for hvilke bokstaver som kan stå der og hva de betyr. Betydningen av disse bokstavene er forskjellig for filer og kataloger. Følgende gjelder på de ulike plassene, nummerert en til tre fra venstre, for filer.

kode #4
1	r	Lov til å lese innholdet i filen
1	-	Ikke lov til å lese innholdet i filen
2	w	Lov til å redigere innholdet i filen
2	-	Ikke lov til å redigere innholdet i filen
3	x	Filen er et kjørbart program
3	-	Filen er ikke et kjørbart program

Følgende gjelder for kataloger:

kode #5
1	r	Lov til å se hvilke filer som finnes i katalogen
1	-	Ikke lov til å se hvilke filer som finnes i katalogen
2	w	Lov til å redigere filer i katalogen
2	-	Ikke lov til å redigere filer i katalogen
3	x	Lov til å komme inn i katalogen
3	-	Ikke lov til å komme inn i katalogen

3	s	Samme som x, men filer som opprettes i katalogen får samme gruppe som det katalogen har. Vanligvis får nye filer samme gruppe som det brukeren har som standard, oftest navnet på fakultetet vedkommende er tilknyttet.

For Jens kan vi lese følgende informasjon fra utvalgte linjer i listingen over:

kode #6
drwx--x--x   6 jensj    ntnu         4096 Jul 21 15:57 ./

Alle har lov til å komme inn i hjemmekatalogen hans, men ingen andre enn han kan lese innholdet i katalogen eller skrive til den.

kode #7
drwxr-xr-x   3 jensj    ntnu           43 Jul 21 14:34 public_html/

Alle har lov til å komme inn i katalogen public_html og lese innholdet i den, men bare Jens kan skrive til den.

kode #8
drwxrws---   2 jensj    ineo            9 Jul 21 15:57 boksider/

Kun medlemmer av gruppen ineo har lov til å gå inn i katalogen boksider. De kan også skrive til filer under den og alle filer som blir opprettet får automatisk gruppe ineo.

kode #9
drwx------   2 jensj    ntnu            9 Jul 16 13:40 Mail/

Katalogen Mail er bare åpen for Jens. Det er slik det skal være, ingen andre enn brukeren selv skal ha tilgang til e-posten.

kode #10
lrwx------   1 jensj    ntnu            4 Jul 20 14:27 mail -> Mail/

Rettighetene til den symbolske lenken mail er helt uinteressante fordi det er rettighetene til katalogen den henviser til som gjelder.

Sjekke gruppemedlemskap (groups)

For å sjekke hvilke grupper man er medlem i kan kommandoen groups benyttes:

konsoll #25
storm:~$ groups
ntnu ineo

Jens er medlem av gruppene ntnu og ineo. Når man får tildelt bruker blir man også medlem av en gruppe. Som regel er det gruppen for fakultetet man går på.

Det arbeides med et opplegg der hver enkelt bruker kan opprette en egen personlige gruppe. Brukerne vil da selv kunne styre hvem som får tilgang til denne gruppen.

Endre gruppe (chgrp)

For å endre gruppe på filer og kataloger benytter en kommandoen chgrp som står for change group. Første argument sier hvilken gruppe som skal få tilgang og alle argumenter etter dette forteller hvilke filer og kataloger det gjelder:

konsoll #26
storm:~$ ls -ld boksider
drwxrwx---   2 jensj    ineo            9 Jul 21 15:57 boksider/
storm:~$ chgrp ntnu boksider
storm:~$ ls -ld boksider
drwxrwx---   2 jensj    ntnu            9 Jul 21 15:57 boksider/

Gruppen til boksider er endret fra ineo til ntnu.

Endre rettigheter (chmod)

Denne kommandoen brukes til å endre rettighetene til en fil eller en katalog. Den krever minst to argumenter. Det første angir hva slags endring som skal utføres, det andre, og eventuelt de påfølgende, hvilke elementer som skal endres.

For gruppene bruker vi betegnelsene:

kode #11
u	bruker (user)
g	gruppe (group)
o	andre (other)
a	alle (all)

Betegnelser for hva som skal gjøres:

kode #12
+	Legg til rettighet
-	Fjern rettighet
=	Sett rettighet til

Fra kapittelet om rettigheter og grupper har vi betegnelsene for rettighetene:

Filer:

kode #13
1	r	Leseadgang
2	w	Skriveadgang
3	x	Kjørbart program

Kataloger:

kode #14
1	r	Lov å lese innholdet i katalogen
2	w	Lov å skrive til filer i katalogen
3	x	Lov til å passere inn i katalogen og videre ned i underkataloger.
3	s	Samme som x, men når filer opprettes får de samme gruppe som katalogen har.

For å endre rettighetene til filen 100acre.map slik at de som tilhører samme gruppe og alle andre skal få adgang til å lese filen må man bruke chmod slik:

konsoll #27
storm:~/public_html/imagemap$ ls -l
total 0
-rw-------   1 jensj    ntnu            0 Jul 22 17:42 100acre.map
storm:~/public_html/imagemap$ chmod go+r 100acre.map 
storm:~/public_html/imagemap$ ls -l
total 0
-rw-r--r--   1 jensj    ntnu            0 Jul 22 17:42 100acre.map

Her ser vi at rettighetene for gruppe og andre er endret.

Man kunne i dette tilfellet også ha skrevet chmod go=r 100acre.map. Da ville rettighetene for gruppe og andre bli satt til 'r--' uansett hva de var tidligere. Ved å bruke '+' unngår han å endre andre rettigheter enn leseadgangen.

Symbolske lenker (ln -s)

Med denne kommandoen kan man opprette symbolske lenker mellom elementer. Den krever minst to argumenter som bestemmer hva den symbolske lenken skal henvise til og hva den skal hete.

Jorun har et program liggende på brukeren sin som Jens gjerne vil ha tilgang på. Jens kan selvfølgelig kopiere programmet over på sin egen bruker, men han velger å lage en symbolsk lenke. Dette har to fordeler; for det første sparer han plass på harddisken, en symbolsk lenke opptar praktisk talt ingen plass. For det andre vet Jens at Jorun sørger for å oppdatere programmet slik at hun alltid har nyeste og beste versjon liggende. Når Jens kjører programmet via den symbolske lenken vil han kjøre den versjonen Jorun har liggende og dermed slipper han å oppdatere programmet selv hver gang Jorun endrer noe.

Programfilen heter maplay og Jens vil legge linken i sin nylagde katalog bin. Så lenge Jens ikke oppgir noe filnavn på lenken, men kun katalogen den skal ligge i, vil den bli hetende det samme som filen den henviser til.

kode #15
storm:~$ ln -s ~jorunj/bin/maplay bin
storm:~$ cd bin
storm:~/bin$ ls -l
total 0
lrwx------   1 jensj    ntnu           28 Jul 27 17:55 maplay -> ~jorunj/bin/maplay*

For at Jens skal kunne kjøre dette programmet må han ha rett til å gå gjennom Joruns hjemmekatalog og bin-katalog. Foruten leserettigher til katalogen bin må han også ha lese- og kjørerettigheter på filen maplay. Disse rettighetene må han ha hver gang han skal kjøre programmet, ikke bare når han oppretter lenken. Dette er det Jorun som må tillate ved å gi ham disse rettighetene.

Vis innhold av filer (cat)

For å vise innholdet av filer på skjermen brukes kommandoen cat som står for concatenate files and print. Denne kommandoen må ha minst ett argument som bestemmer hvilke(n) fil(er) som skal vises.

konsoll #28
storm:~/Brev$ cat brevmor.txtHei Mor!

Gratulerer med dagen som var for 5 dager siden.
Som vanlig husket jeg det ikke i år heller. Unnskyld...

Jeg håper du har det bra og at du hadde en fin bursdag.
Jeg har det bare bra her i Trondheim.

Har dere fint vær hjemme?
Her i Trondheim er det ganske mye regn, men det gjør jo ingenting når jeg
sitter inne og leser.

Jeg kommer hjem til jul.

Hilsen Jensemannen.

Jens får her se hva han har skrevet i brevet til mor.

Vis innhold av filer side for side (less)

Dersom man bruker cat på filer som er større enn en vinduside, vil teksten bare rulle over vinduet og man får bare lest slutten av filen. Da bruker man heller kommandoen less som viser innholdet av filen side for side. Denne må ha minst et argument som bestemmer hvilken fil som skal vises.

For å bevege seg rundt omkring i filen bruker man:

kode #16
space		en side ned
enter		en linje ned
b		en side opp
j		en linje ned
k:		en linje opp
g		Gå til begynnelsen av filen
G		Gå til slutten av filen
/ord		Søke etter ord
q		Avslutte

Foruten disse er det mange flere funksjoner tilgjengelig. Hvordan disse finnes, blir forklart i kapittelet om manualsider. På ytterst få maskiner finnes ikke kommandoen less. Da vil den kunne erstattes av kommandoen more. Denne kommandoen brukes på akkurat samme måte.

Vis begynnelsen av en fil (head)

Denne kommandoen viser de første ti linjene av en fil. Den krever minst et argument som bestemmer hvilken fil som skal vises. Jens har lagret en sang i katalogen Brev. Han har kalt filen sang.txt, men nå husker han ikke hvilken sang det var. En enkel måte å finne det ut på er å se på begynnelsen av filen.

kode #17
storm:~/Brev$ head sang.txt
Neste Sommer - DeLillos

[ NB! B = "norsk" H ]

(D Bm Em F#) x 2

D                   Bm             Em            F#
Det var en gang en sommer i nittenhundre og nittitre
D                   Bm         Em          F#
Hvor alt var saa behagelig og verden var discret 

Ut i fra dette er det lett å se at tekstfilen inneholder en eller flere sanger av DeLillos.

Dersom man ønsker å se flere eller færre linjer enn de ti første skriver man: head -antall_linjer filnavn

Vis slutten av en fil (tail)

Denne kommandoen viser de ti siste linjene av en fil. Den krever et argument som bestemmer hvilken fil som skal vises.

Jens lurer på om "Neste sommer" er den eneste sangen han har i filen sang.txt:

konsoll #29
storm:~/Brev$ tail sang.txt

Det var en gang en sommer
i nittenhundre og nittitre
hvor verden laa ufarlig
langs Norges kyst et sted
paa radioen var det et program
om sommermat
vi ruslet ned og tok et bad

[refrenget to ganger til...]

Dette er slutten på sangen som ble vist med kommandoen head og sjansen er da veldig stor for at filen bare inneholder en sang.

Dersom man ønsker å se flere eller færre linjer enn de ti siste skriver man: tail -antall_linjer filnavn

Gjøre vinduet blankt (clear)

Denne kommandoen visker ut alt i vinduet og plasserer prompten på nytt i øvre venstre hjørne akkurat som da man logget inn..

Listing av ledig diskplass (diskkvote)

Kommandoen viser enkelt og greit hvor mye plass du har fått tildelt, og hvor av det du bruker. Hvis du bruker for mye så vil du få se hvilke filer som vil til å bli slettet neste gang periodeslett blir gjennomført.

konsoll #30
login:~$ diskkvote
--Disk quota for user jensj—
Your qouta...............: 61440 KB
Checking directories....: /home/homee/je/jensj
                        : /local/www.stud/users/jensj
Diskusage................:32902 KB
You are below your quota of 61440 KB

Det kan være en god ide og kjøre denne kommandoen en gang iblant slik at du uår at filer du vil ta vare på slettes.

Personlig bruk av diskplass (diskusage).

Denne kommandoen brukes til å se hvor mye plass underkataloger og tilhørende er under en katalog opptar på harddisken. Kommandoen er ofte brukt for å vise hvor mye plass man selv bruker.

konsoll #31
login:~$ diskusage
292     ./.netscape
172     ./public_html
164     ./public_html/bilder
12      ./Brev
0       ./Mail
0       ./bin
0       ./boksider
696     .

Forbruket for hver katalog og summen av alle underkataloger og filer under de vises i antall KB i første kolonne. Det betyr at i katalogen ./public_html/ber er det 164 KB med filer. I katalogen public_html, inkludert underkatalogenpublic_html/bilder, er det 172 KB med filer. Det betyr at det i selve public_l kun er brukt 8 KB. Totalt bruker Jens 696 KB på harddisken.

Manualsider (man)

Med de fleste kommandoer følger det med manualer. Disse får man frem ved å skrive man kommando. Hvis man vil se manualen til kommandoen cat skriver man

konsoll #32
storm:~$ man cat
     CAT(1)              FSF (GNU Text Utilities)               CAT(1)

     NAME
          cat - concatenate files and print on the standard output

     SYNOPSIS
          cat [-benstuvAET] [--number] [--number-nonblank]
          [--squeeze-blank] [--show-nonprinting] [--show-ends]
          [--show-tabs] [--show-all] [--help] [--version] [file...]

     DESCRIPTION
          This manual page documents the GNU version of cat.  cat
          writes the contents of each given file, or the standard
          input if none are given or when a file named `-' is given,
          to the standard output.

        OPTIONS
          -b, --number-nonblank
               Number all nonblank output lines, starting with 1.

Manualene blir vist ved hjelp av programmet less. Man flytter seg derfor rundt i dokumentet på samme måte som i less. Forklaring til hvordan manualene er bygget opp og hvordan man skal forstå dem finnes med kommandoen man man.

Ikke fortvil hvis dette eksempelet virker overveldende. Manualsidene skal forklare alt om hver eneste kommando og da blir det fort mye informasjon som skal med. De viktigste punktene i en manualside er:

kode #18
Synopsis	Hvilke opsjoner kommandoen godtar. Hvis opsjonene står mellom to []-klammer er det frivillig om man vil ha dem med.
Description	Hva kommandoen kan gjøre.
Options		Hva alle opsjonene betyr. Ofte er det mange av dem.

Søke etter manualsider (apropos)

Når man vet hva man vil gjøre, men ikke vet hvilken kommando som gjør det, er det behov for å søke etter den. Det gjøres med kommandoen apropos.

konsoll #33
storm:~$ apropos mail
MIME (1)             - Multipurpose Internet Mail Extensions
Rnmail (1)           - a program for replying via mail
audiosend (1)        - Send an audio email message
cmail (6)            - an email chess helper
elm (1)              - an interactive mail system
filter (1)           - filter incoming messages before adding to mailbox
formail (1)          - mail (re)formatter
frm,nfrm (1)         - list from and subject of selected messages
hypermail (1)        - convert mail archives in UNIX box format to HTML pages
mailcap (4)          - metamail capabilities file
mailto (1)           - Simple mutlimedia mail sending program
mailto-hebrew (1)    - Run the mailto program to send Hebrew/English mail
messages (1)         - quick count of messages in mailbox or folder
metamail (1)         - mailcap-based multimedia mail handling
metasend (1)         - Crude interface for sending non-text mail
mimencode (1)        - Translate to and from mail-oriented encoding formats
pine (1)             - a Program for Internet News and Email
printmail (1)        - format mail in a readable fashion for printing
procmail (1)         - autonomous mail processor
... osv 50+ linjer til ...

Ut fra dette kan man velge et program, f.eks. pine, som ser ut til å gjøre det man ønsket.

Reserverte tegn og deres betydning

I UNIX er det en del tegn som er reservert fordi de har en spesiell symbolsk betydning. Disse bør normalt ikke brukes i navn på kataloger og filer. Viktige eksempler på dette er:

kode #19
?		Ett hvilket som helst tegn eller intet tegn.
*		Alle tegnkomkombinasjoner som finnes. Som uendelig mange ? etter hverandre.
;		Skiller mellom hele kommandolinjer.
Space		Skiller mellom kommandoer, opsjoner og argumenter.
Tab		Ikke tillatt som vanlig tegn.
&		Sender jobber i bakgrunnen. Se kapittel om jobbkontroll.
(		Grupperer kommandoer.
)		Grupperer kommandoer.
|		Sender output fra kommando videre.
>		Sender output til fil.
<		Tar input fra fil.

Komprimering av filer (gzip)

Denne kommandoen kan komprimere filer slik at de opptar mindre plass på harddisken. I praksis skjer det ved at filene kodes om til uleselig tekst som bruker mindre plass enn den originale filen. For å kunne lese filene igjen eller arbeide med dem må de dekomprimeres tilbake til original form. For å spare plass er det derfor en god skikk å komprimere filer man sjelden bruker, men likevel vil beholde.

Kommandoen gzip står for gnu zip, der gnu er betegnelse for en type gratis programmer og zip er standarden for komprimeringen. Kommandoen krever minst ett argument som angir hvilken fil som skal komprimeres.

konsoll #34
storm:~/Brev$ ls -l
total 12
-rw-------   1 jensj    ntnu          135 Jul 21 13:17 brevjorun.txt
-rw-------   1 jensj    ntnu          379 Jul 26 14:06 brevmor.txt
-rw-------   1 jensj    ntnu         1040 Jul 26 15:13 sang.txt
storm:~/Brev$ gzip *.txt
storm:~/Brev$ ls -l
total 12
-rw-------   1 jensj    ntnu          145 Jul 21 13:17 brevjorun.txt.gz
-rw-------   1 jensj    ntnu          268 Jul 26 14:06 brevmor.txt.gz
-rw-------   1 jensj    ntnu          457 Jul 26 15:13 sang.txt.gz
storm:~/Brev$ 

Vi husker at * erstatter alle mulige tegn og kommandoen derfor vil bli utført på alle filer som slutter på .txt. Filene som er blitt komprimert har nå fått et tillegg .gz i navnet for å vise at de er komprimert.

Vi ser at filene brevmor og sang nå opptar atskillig mindre plass på harddisken, mens brevjorun faktisk opptar større plass. Dette skyldes at komprimeringsprogrammet bruker en gjenkjenningsalgoritme som blir mer og mer effektiv jo større filen er. For små filer vil det altså kunne virke mot sin hensikt.

Dekomprimering av filer (gunzip)

Denne kommandoen dekomprimerer filer som er komprimert med kommandoen gzip. Navnet gunzip er bygget opp på samme måte som gzip og står for gnu unzip, altså motsatt virkning av gzip. kommandoen gunzip krever minst ett argument som angir hvilken fil som skal dekomprimeres.

konsoll #35
storm:~/Brev$ gunzip *.gz 
storm:~/Brev$ ls -l
total 12
-rw-------   1 jensj    ntnu          135 Jul 21 13:17 brevjorun.txt
-rw-------   1 jensj    ntnu          379 Jul 26 14:06 brevmor.txt
-rw-------   1 jensj    ntnu         1040 Jul 26 15:13 sang.txt
storm:~/Brev$

Nå kan filene igjen leses og redigeres som om det aldri hadde vært gjort noe spesielt med dem. Men ulempen er at de igjen opptar mer plass enn i komprimert tilstand.

Arkivere filer og kataloger som en fil (tar)

Denne kommandoen gjør det mulig å arkivere flere filer og kataloger som en fil. Dette kan være svært nyttig, for eksempel når man skal komprimere mange filer samtidig. Programmet ble opprinnelig utviklet for å kopiere data over på taper for ta backup, derav navnet tape archiver. Til vanlig bruk må man alltid bruke opsjonen f. Denne tilsynelatende unødige opsjonen må alltid være med fordi tar ellers tror at vi ønsker å skrive filene til en tape. Det spesielle med kommandoen tar er at denne ikke bruker '-' foran opsjonene. En nærmere beskrivelse av kommandoene følger i tabellen under:

Opsjoner

kode #20
c	Legge til filer
x	Hente ut filer
t	Vise innholdet i et arkiv
v	Sier at tar skal fortelle hva den gjør
f	Bruke fil istedenfor tape

Generelt for å arkivere flere filer som en fil skriver man: tar cvf filnavn.tar fil1 fil2 ... fil9 ...

Man kan velge om man vil ha med opsjonen v eller ikke, da den bare bestemmer om tar skal fortelle hva den gjør.

konsoll #36
storm:~$ tar cvf backup.tar Brev
Brev/
Brev/brevmor.txt
Brev/brevjorun.txt
Brev/sang.txt
storm:~$ ls -l Brev backup.tar
-rw-------   1 jensj    ntnu        10240 Jul 27 21:31 backup.tar

Brev:
total 12
-rw-------   1 jensj    ntnu          135 Jul 21 13:17 brevjorun.txt
-rw-------   1 jensj    ntnu          379 Jul 26 14:06 brevmor.txt
-rw-------   1 jensj    ntnu         1040 Jul 26 15:13 sang.txt

Det er lett å legge til flere filer i arkivet.

konsoll #37
storm:~$ tar cf backup.tar public_html/bilder public_html/index.html

Etter at man har laget arkivet er det fornuftig å teste innholdet i det.

konsoll #38
storm:~$ tar tvf backup.tar
drwx------ jensj/ntnu        0 Jul 27 17:27 1996 Brev/
-rw------- jensj/ntnu      379 Jul 26 14:06 1996 Brev/brevmor.txt
-rw------- jensj/ntnu      135 Jul 21 13:17 1996 Brev/brevjorun.txt
-rw------- jensj/ntnu     1040 Jul 26 15:13 1996 Brev/sang.txt
drwxr-xr-x jensj/ntnu        0 Jul 27 17:07 1996 public_html/
drwxr-xr-x jensj/ntnu        0 Jul 22 17:40 1996 public_html/bilder/
-rw------- jensj/ntnu     1920 Jul 16 13:46 1996 public_html/bilder/diskett.gif
-rw------- jensj/ntnu   160335 Jul 22 17:40 1996 public_html/bilder/100acre.gif
-rw------- jensj/ntnu      806 Jul 18 13:17 1996 public_html/index.html

For at arkivet skal ta mindre plass er det fornuftig å komprimere det.

konsoll #39
storm:~$ ls -l backup.tar
-rw-------   1 jensj    ntnu       163840 Sep  7 21:45 backup.tar
storm:~$ gzip -9 backup.tar
storm:~$ ls -l backup.tar.gz
-rw-------   1 jensj    ntnu       158479 Sep  7 21:45 backup.tar.gz

I dette tilfellet sparte man nesten ingenting på å komprimere. Det er fordi nesten hele arkivet består av bilder. De er vanskelige å komprimere og er nesten alltid komprimert på forhånd, avhengig av bildeformatet.


Språk: no flag_en Kommentarer: 0 Aid: 194 Brukervurdering:
 
 
Sist oppdatert: 2007-06-18 Forfatter: erlingbo Lest: 13343 ganger