UNIX lagrar information i filer. En fil kan till exempel innehålla en text, en bild eller ett datorprogram. Filerna i sin tur är inplacerade i kataloger. En katalog är alltså en förvaringsplats för filer. Varje fil och katalog har ett namn, som man använder då man refererar till dem.
Alla användare har en hemkatalog där de
egna filerna lagras.
Direkt efter inloggningen är hemkatalogen
nuvarande katalog, dvs man
''befinner sig'' i sin hemkatalog.
Kommandot ls ger en lista över filerna
i den nuvarande katalogen.$ ls
lenngren måltidssång
$Tydligen har jag två filer i min
hemkatalog. Den ena heter lenngren,
den andra måltidssång.
(Om ls inte skriver ut tecknen
åäö korrekt, så kan man ange flaggan
-N varje gång ls anropas.
Ett alternativ sätt är att ge kommandot
export LC_ALL=sv_SE.
I kapitel 6 ska vi förklara detta närmare.)
Man kan kopiera filer med kommandot cp. $ cp måltidssång bellman
$ ls
bellman lenngren måltidssång
$Ovan kopierade jag först filen måltidssång
och gav kopian namnet bellman. Därefter kontrollerade
jag att det gick väl genom att ge kommandot ls.
Utskriften visar att det verkligen finns en ny fil
med namnet bellman.
Om man anropar ls med flaggan -l,
så ges utförligare information om filerna.
Bland annat kan man utläsa hur stora filerna är
och när deras innehåll senast ändrades.$ ls -l
total 3
-rw-rw-r-- 1 göran göran 372 feb 1 16:48 bellman
-rw-rw-r-- 1 göran göran 649 feb 1 15:53 lenngren
-rw-rw-r-- 1 göran göran 372 feb 1 15:47 måltidssång
$Filerna bellman och måltidssång innehåller vardera 372
tecken, lenngren innehåller 649 tecken.
Det är klart att bellman och måltidssång är lika
stora eftersom bellman är en kopia av måltidssång.
Senast filen bellman ändrades var den 1 februari,
klockan 16.48.
Raden med texten total 3 anger hur mycket lagringsutrymme
filerna i katalogen förbrukar.
Vad de övriga delarna av utskriften ovan
betyder ska vi snart berätta.
Man kan byta namn på filer med kommandot mv.$ mv måltidssång epistel21
$ ls
bellman epistel21 lenngren
$Som synes har nu måltidssång bytt namn till
epistel21.
Kommandot för att radera en fil är rm.$ rm epistel21
$ ls
bellman lenngren
$Kontrollen med ls visar att filen epistel21
nu är borta.
Du är kanske van vid att få en varning om att filen kommer
att försvinna och ett krav på bekräftelse vid raderingskommandon?
Så är det inte här. UNIX
gör vanligtvis vad man säger utan att ställa några frågor,
även om konsekvenserna kan vara ödesdigra.
Observera också att det inte finns något sätt att få tillbaka
en fil som raderats!
Därför är det nödvändigt att man har
säkerhetskopior av alla viktiga filer.
En av systemadministratörens viktigaste arbetsuppgifter
är att regelbundet, lämpligen dagligen, göra
en säkerhetskopia av samtliga användares filer.
Om en användare av misstag råkar radera en fil, så kan
systemadministratören återställa filen till det skick den
var i föregående dag. Bara de ändringar som gjorts
det senaste dygnet går då förlorade. På detta sätt
minskas risken för katastrofer betydligt.
Det ska nämnas att om man anger flaggan -i till
rm, så ställs frågan om bekräftelse:$ rm -i bellman
rm: ta bort "bellman"? n
$ ls
bellman lenngren
$Om vi hade tryckt j i stället för n, så hade
bellman oåterkalleligen raderats. Man kan, om man så önskar,
ställa in det så att rm alltid frågar innan någon fil raderas.
Men då är risken stor att man efter ett tag
får som vana att
mekaniskt trycka j vid varje sådan fråga,
och då ger frågan inte längre något skydd.
För att skriva ut innehållet i en fil ordagrant kan man använda
cat.$ cat bellman
Så lunka vi så småningom
från Bacchi buller och tumult,
när döden ropar: Granne, kom,
ditt timglas är nu fullt.
Du gubbe, fäll din krycka ner,
och du, du yngling, lyd min lag:
den skönsta nymf, som åt dig ler,
inunder armen tag.
Tycker du, att graven är för djup,
nå välan, så tag dig då en sup,
tag dig se'n dito en, dito två, dito tre,
så dör du nöjdare.
$
Kommandot wc räknar antal rader, ord och tecken
i en given fil.$ wc bellman
12 71 372 bellman
$Utskriften från wc betyder att bellman
innehåller tolv rader, 71 ord och 372 tecken
(varje radslut räknas som ett tecken).
Om man vill studera en fil som innehåller för många rader för
att de ska få plats på skärmen samtidigt, så är cat inte ett
idealiskt kommando. Istället kan man använda more.$ more lenngren
Vår prost jag häromdagen såg
en morgon, då han ännu låg
matt utstäckt mellan tvenne lakan.
Hans kinder hade rosens färg,
hans runda armar hull och märg,
och magen, kullrig som ett berg,
sig hävde upp mot isterhakan.
Vid sängen stod ett bord, där denne andans man
sin frukost redan färdig fann
av smör och kycklingar, så läcker och så härlig.
Hans vördighet grep saken an
-More-(57%)När skärmen fyllts med text, stannar more upp
och skriver texten
-More-(57%)
nederst på skärmen.
För att få se mer av filen kan man då trycka på mellanslagstangenten.
(Kan du gissa varför kommandot more heter som det gör?)
Om man i stället trycker på b, så går more bakåt
i filen. Tryck på q för att avsluta, h för hjälp.
Man kan göra mycket mer med more, något vi återkommer till senare.
Många föredrar att använda kommandot less, som är en mer
avancerad version av more.
Kommandona head och tail skriver ut början respektive
slutet av en given fil. Så här får man se de sista tio raderna
i filen lenngren:$ tail lenngren
av smör och kycklingar, så läcker och så härlig.
Hans vördighet grep saken an
och fann likören rätt begärlig.
Sen han nu visat mycken nit
med klunk för klunk och bit för bit,
han åter sänkte sig på mjuka huvudgärden
och ropte: Store Gud, vad är vårt usla liv?
En ständig kamp mot synd och flärden.
O, Herre, mig Thin styrko giv
i thenna mödosamma världen!
$Om tio rader är för lite eller för mycket, så kan detta ändras
med hjälp av en flagga. De första fyra raderna av filen
bellman skrivs ut så här:$ head -4 bellman
Så lunka vi så småningom
från Bacchi buller och tumult,
när döden ropar: Granne, kom,
ditt timglas är nu fullt.
$
I UNIX tillåts vanligtvis inte att filnamn är längre än
256 tecken. Man brukar oftast använda filnamn som enbart består
av små bokstäver, men om man vill så kan man använda mycket
udda namn på sina filer.$ cp bellman 2+3
$ ls
2+3 bellman lenngren
$ rm 2+3
$UNIX skiljer på stora och små bokstäver; bellman
och Bellman betraktas som vitt skilda filnamn.
Varje fil har en ägare. Ägaren till en fil avgör vem som får göra vad med filen. Det finns tre slags rättigheter som är förknippade med varje fil: rätten att läsa den (ta del av dess innehåll), rätten att skriva till den (ändra dess innehåll) samt rätten att exekvera filen (att köra den som ett program). Som ägare till en fil kan man sätta upp det så att man själv har rätt att göra mer med filen än andra. I synnerhet brukar man se till att man själv får ändra i filen, men ingen annan. Om filen innehåller känslig information (som till exempel ens kärleksbrev), så brukar man se till att andra inte ens får läsa filen. Förutom att varje fil har en ägare, så är också varje fil associerad med en grupp. Vad grupper är till för behöver vi inte tänka på just nu, utan det beskrivs i stället i avsnitt 7.1.
Det är inte möjligt att specificera exakt för varje möjlig användare
vad de får och inte får göra med en viss fil.
Man kan inte säga att eva får göra si
och olle får göra så.
I stället bestämmer
man rättigheterna för tre kategorier av användare: för det första
filens ägare, för det andra de resterande medlemmarna i den grupp filen är
associerad med och för det tredje alla övriga.
För att ta reda på vilka rättigheter som gäller använder
man flaggan -l vid anrop av ls för att få
utförlig information.$ ls -l
total 2
-rw-rw-r-- 1 göran göran 372 feb 1 16:48 bellman
-rw-rw-r-- 1 göran göran 649 feb 1 15:53 lenngren
$Före den siffra (372 respektive 649) som talar om hur stor filen
är, står det vem som äger filen och vilken grupp filen
är associerad med. För filerna
ovan heter såväl ägaren som gruppen göran.
Betrakta nu den rad som beskriver filen bellman.
Att det första tecknet är - visar att det rör
sig om en vanlig fil (för kataloger
står det i stället d på motsvarande plats,
se nästa avsnitt).
De följande tre tecknen rw- avgör vad filens ägare
får göra med den.
Tecknet r anger att ägaren får läsa den;
tecknet w att ägaren får skriva över den
och tecknet -, eller snarare frånvaron av ett
x, att ägaren inte får exekvera den.
Därefter kommer tre tecken, rw-, som avgör
rättigheterna för
de resterande medlemmarna i gruppen göran
(i just detta fall finns dock inga andra gruppmedlemmar).
De sista tre tecknen, r--,
anger att övriga användare får läsa filen, men varken
ändra i den eller exekvera den.
Siffran efter skyddskoderna anger hur många
hårda länkar det finns till filen,
se avsnitt
.
Kommandot för att ändra skyddskoder heter chmod.
Om man vill att ägaren till filen fil ska ha skyddskoden
rw- ger man kommandot
chmod u=rw fil.
Om man vill att gruppen ska ha skyddskoden r--
blir kommandot chmod g=r fil.
Kommandot chmod o= fil ger ''övriga''
skyddskoden ---.
Man kan göra allt detta med ett enda kommando om man vill:$ chmod u=rw,g=r,o= bellman
$ ls -l bellman
-rw-r----- 1 göran göran 372 feb 1 16:48 bellman
$
Det finns också konstruktioner som
o+rx för att ''övrigas'' rättigheter ska
utökas med läs- och exekveringsrättighet,
och ug-r för att ta bort läsrättigheten för
ägaren och gruppen. I stället för ugo kan
man skriva a.$ chmod a-r bellman
$ ls -l bellman
--w------- 1 göran göran 372 feb 1 16:48 bellman
$ cat bellman
cat: bellman: Åtkomst nekas
$ chmod u+r bellman
$ ls -l bellman
-rw------- 1 göran göran 372 feb 1 16:48 bellman
$