Kataloger kan inte bara innehålla
filer, utan även andra kataloger
som då kallas underkataloger till den givna katalogen.
Så här tillverkar man en katalog med namnet dikter:$ mkdir dikter
$ ls
bellman dikter/ lenngren
$Att dikter är en katalog markeras i listan ovan med
ett snedstreck efter dess namn. (Vanligtvis krävs det
att man anropar ls med flaggan -F för
att kataloger ska markeras så här. En annan flagga,
--color, gör att filer och kataloger
markeras genom att deras namn skrivs med olika färger.)
Nu är alltså dikter
en underkatalog till min hemkatalog. Omvänt är min hemkatalog
föräldrakatalog till dikter.
Om man vill få en lista över
filerna i en annan katalog än
den nuvarande, så ska man helt enkelt ange den önskade katalogens
namn som argument till ls.$ ls dikter
$Än så länge är katalogen dikter tom. Men
vi ska nu kopiera filerna bellman och lenngren till
den. Kommandot cp kan användas på två sätt;
dels för att kopiera en fil till en annan, dels för att kopiera en
eller flera filer till en katalog.
I det senare fallet anger man destinationskatalogen som
sista argument.
(På motsvarande sätt kan man använda mv för att
flytta filer till en annan katalog.)$ cp bellman lenngren dikter
$ ls -l dikter
total 2
-rw------- 1 göran göran 372 feb 1 17:12 bellman
-rw-rw-r-- 1 göran göran 649 feb 1 17:12 lenngren
$Figur
ger ett diagram
över min hemkatalog och dess nuvarande innehåll.
Man kan radera tomma kataloger med rmdir.
Vill man radera en katalog inklusive dess innehåll, så
ska man använda rm med flaggan -r.$ mkdir sånger
$ ls
bellman dikter/ lenngren sånger/
$ rm sånger
rm: sånger: är en katalog
$ ls
bellman dikter/ lenngren sånger/
$ rmdir sånger
$ ls
bellman dikter/ lenngren
$ mkdir visor
$ cp bellman visor
$ ls visor
bellman
$ rmdir visor
rmdir: visor: Katalog inte tom
$ rm -r visor
$ ls
bellman dikter/ lenngren
$Ovan skapade jag först katalogen sånger.
Det gick inte att ta bort den med rm,
utan jag fick använda kommandot rmdir istället.
Därefter skapade jag katalogen visor och
kopierade bellman dit. Då gick det inte att ta
bort katalogen med rmdir eftersom den inte
var tom. Däremot kunde jag radera katalogen och dess innehåll
med rm -r.
För att förflytta sig till en annan katalog,
det vill säga byta nuvarande katalog,
använder man kommandot cd med namnet på
den katalog man vill komma till som argument.$ cd dikter
$ ls
bellman lenngren
$Nu befinner jag mig i underkatalogen dikter till
min hemkatalog. Men om jag vill komma tillbaka dit jag var nyss,
hur gör jag då? Ett sätt är att använda en mycket viktig finess,
nämligen att namnet .. (två punkter) betecknar föräldrakatalogen till
den katalog man befinner sig i.$ cd ..
$ ls
bellman dikter/ lenngren
$Nu slår oss tanken att den egna hemkatalogen
kanske är underkatalog till en annan!
Vi undersöker detta genast:$ cd ..
$ ls
eva/ göran/ lost+found/
$Ja, så var det. Vi provar samma
kommando igen:$ cd ..
$ ls
System.map@ dev/ home/ mnt/ tmp/
bin/ dosc/ initrd/ proc/ usr/
boot/ etc/ lib/ root/ var/
cdrom/ floppy/ lost+found/ sbin/ vmlinuz@
$Här fanns en massa kataloger. Men vi struntar i det tills vidare,
och fortsätter på den inslagna vägen.$ cd ..
$ ls
System.map@ dev/ home/ mnt/ tmp/
bin/ dosc/ initrd/ proc/ usr/
boot/ etc/ lib/ root/ var/
cdrom/ floppy/ lost+found/ sbin/ vmlinuz@
$Nej, det gick tydligen inte att komma längre. Vi befinner oss
i en katalog som inte är underkatalog till någon annan.
Nu har vi för övrigt gått vilse, och kan svårligen hitta tillbaka.
Lyckligtvis kan vi ta till hjälp att man
kommer hem till sin hemkatalog om man ger kommandot
cd utan att specificera någon destination.$ cd
$ ls
bellman dikter/ lenngren
$Men var någonstans är vi nu? Kommandot pwd
(''ange nuvarande katalog'') ger svaret:$ pwd
/home/göran
$Aha! Om jag i stället för cd gett först kommandot
cd home och sedan cd göran, så hade jag
också kommit hem. Den katalog jag var i nyss kallas för
rotkatalogen, och den har det koncisa namnet /.
Min hemkatalog heter
göran, detsamma som mitt användarnamn. Den är
en underkatalog till
home. Och home i sin tur
är underkatalog till rotkatalogen.
På detta sätt är alla kataloger ordnade i en hierarki
med rotkatalogen överst (eller underst, beroende på hur
man ser det) i hierarkin. Det är grundläggande för UNIX att det endast finns en sådan hierarki,
filsystemet är gjutet i ett stycke
(eller åtminstone ser det ut så).
Ett alternativt sätt att referera till katalogen dikter är att ange dess absoluta läge i filsystemet, /home/göran/dikter. Man säger att detta är sökvägen till katalogen. Poängen med att ange sökvägen är att man därigenom kan referera till filer eller kataloger som inte finns i just den nuvarande katalogen. Filer har också sökvägar. Sökvägen till filen bellman i min hemkatalog är /home/göran/bellman, medan sökvägen till filen bellman i underkatalogen dikter är /home/göran/dikter/bellman. Trots att dessa filer har samma namn, kan man med hjälp av sökvägar ange vilken av dem man åsyftar.
Så här kan man se vad som finns i katalogen /home/eva:$ ls /home/eva
LPAuppsats/ index.html paper.dvi paper.tex~
ekerö.jpg index.html~ paper.log post/
idéhistoria/ paper.aux paper.tex övrigt/
$Alternativt kunde jag ha gett kommandot ls ../eva.
Detta fungerar om jag befinner mig i min hemkatalog
/home/göran, för då står .. för
/home. Man säger att ''../eva'' är en relativ
referens till katalogen, i motsats till ''/home/eva''
som är en absolut referens.
I detta sammanhang är det kanske lämpligt att påpeka att namnet . (en punkt) betecknar den nuvarande katalogen. Så vi kan använda kommandot cp /bin/bash . om vi skulle vilja kopiera filen bash från katalogen /bin till den nuvarande katalogen.
För att ta reda på hur mycket utrymme en viss katalog
(inklusive dess underkataloger) förbrukar,
ska man använda kommandot du.
Som argument anger man vilken katalog som avses.
Om man inte anger flaggan -s, så skrivs också
information om underkatalogerna ut.$ du
3 ./dikter
16 .
$ du -s /home/eva
162101 /home/eva
$Siffrorna i utskriften står för antalet kilobyte.
Min hemkatalog, inklusive alla underkataloger,
använder alltså 16 kilobyte lagringsutrymme.
Jag ska kanske nämna vilka enheter man använder
för att beskriva datorminne?
En gigabyte är 1024 megabyte.
En megabyte är 1024 kilobyte.
En kilobyte är 1024 byte.
En byte är ett lagringsutrymme i vilket
man kan lagra ett tecken som tex en bokstav
eller en siffra. (Eller snarare, i en byte lagras ett
tal mellan 0 och 255, och detta tal tolkas ofta
som ett tecken med hjälp av tabellen på
sida
.)
En sida text består av cirka 2000 tecken,
ungefär 2 kilobyte. En megabyte motsvarar
ungefär 500 sidor text.
I UNIX finns en mer eller mindre standardiserad struktur för hierarkin av kataloger. Till exempel innehåller /bin vissa av de viktigaste programmen (som bash, cp och ls), /sbin innehåller systemprogram, huvuddelen av /usr innehåller användarprogram och filer som de behöver, /home innehåller hemkataloger för de olika användarna, i /etc finns viktiga konfigurationsfiler osv.
Det är en konvention att filer vars namn inleds med en punkt
ska döljas, inte för att de är hemliga utan för att man kanske
sällan ändrar i dem och vill ha dem ur vägen.
Kommandot ls respekterar denna konvention. Om man vill
se samtliga filer i den nuvarande katalogen, så ska man anropa
ls med flaggan -a.$ ls -a
./ .bash_profile bellman
../ .bashrc dikter/
.bash_history .inputrc lenngren
$Jag har alltså fyra ''dolda'' filer i min hemkatalog.
Katalogerna . och .. återges som synes
också när ls anropas med flaggan -a.
Nedan vill vi ha utförlig information om samtliga filer och anropar
därför ls med både -l och -a. (I likhet med
många andra kommandon tillåter ls att man förkortar
exempelvis -l -a till -la.)$ ls -la
total 16
drwxrwxr-x 3 göran göran 1024 feb 1 17:24 ./
drwxrwsr-x 9 root staff 1024 nov 23 22:09 ../
-rw-rw-r-- 1 göran göran 6711 feb 1 17:23 .bash_history
-rw-rw-r-- 1 göran göran 235 feb 1 17:23 .bash_profile
-rw-rw-r-- 1 göran göran 81 feb 1 17:23 .bashrc
-rw-rw-r-- 1 göran göran 239 feb 1 17:24 .inputrc
-rw------- 1 göran göran 372 feb 1 16:48 bellman
drwxrwxr-x 2 göran göran 1024 feb 1 17:12 dikter/
-rw-rw-r-- 1 göran göran 649 feb 1 15:53 lenngren
$Samtliga filer och kataloger ägs av göran och är
associerade med gruppen göran, med undantag av
katalogen .. som ägs av root och hör till
gruppen staff.
Motsvarande skyddskoder som för filer
används också för kataloger, men tolkningen är
något annorlunda.
Ett r betyder att man får se namnen
på de filer som katalogen
innehåller (tex med ls).
Ett x betyder att man får gå
in i katalogen (tex med cd).
Om x inte är påslaget, så kan man överhuvudtaget
inte göra något med katalogen (förutom att se vad den
innehåller om r är påslaget).
Ett w betyder att man får skriva till katalogen
(dvs skapa nya filer eller radera filer i katalogen).