SourceForge.net Logo

Lektion 1. UNIX

Tony Larsson <tony.larson@cling.gu.se>

Skrev den ursprungliga texten någon fång före 2000.

Veronica Loell <veronica.loell@cling.gu.se>

Omarbetning av den ursprungliga texten 2001.

Jacob Hallenborg <jacob.hallenborg@cling.gu.se>

Omarbetning och ursprunglig kodning till Docbook-XML 2002.

Den senaste versionen av detta dokument kan hittas på http://ag-cling.sourceforge.net/unix-intro.htm

Detta dokument är publicerat under GNU Free Documentation Licence, du finner den fullständiga texten på http://www.gnu.org/licenses/fdl.txt

Första stegen

  1. Ta ett djupt andetag.

  2. Dags att börja filhanteringen! Lägg muspekaren i den stora textrutan till vänster, som kallas xterm-fönstret. . Annars kan du inte skriva däri.

  3. Ditt bibliotek är tomt, och därför ska du nu kopiera in en fil från mitt bibliotek .

  4. Skriv:

    cp /users/cling/cling99/cl9jhall/skoj.txt ~ RET

    (tryck RETURN/Enter, alltså) Lägg märke till att det inte står C-nitton, utan C-L-nio!

    Den första harangen talar om filen skoj.txt:s position, och ~ betyder ditt bibliotek. Du får fram ett ~ (uttalas tilde) genom att hålla nere Alt Gr och trycka på knappen närmast Enter. Detta är viktigt - du MÅSTE behärska detta tecken!

Kopiera filer
Synopsis

cp {filnamn} {destination}

Beskrivning

Kopierar en eller flera filer till destinationsbiblioteket.

Exempel

cp CG16.txt Kungafamiljen/

Kopierar filen CG16.txt till biblioteket Kungafamiljen.

Justa flaggor:

-i Frågar innan en fil skrivs över.

-r Kopierar rekursivt (hela bibliotekstrukturer).

  1. Skriv nu:

    cp /users/cling/cling99/cl9jhall/gnuhead.jpg ~ <RETURN>

    och

    cp /users/cling/cling99/cl9jhall/hemsideskal.html ~ <RETURN>

    skoj.txt är en textfil, medan gnuhead.jpg är en bild och hemsideskal.html är en internetsida. Ändelserna är etiketter som deklarerar innehållet, se nedan.

Filer

En fil används för att lagra data. Till exempel kan en fil innehålla: text, bild, programkod.

Filnamn

Filer namnges ofta efter följande mönster: <filnamn>.<filextension> där filnamn (lämpligen) beskriver vad filen innehåller och filextension förklarar vilken typ filen har. Exempel på filextensioner är:

.html html-kod (web-sida).
.txt textfil.
.zip zippad (komprimerad) fil.
.jpg bild
.pl prologkod

Vissa tecken är reserverade - de har särskild betydelse. T.ex. används snedstreck '/' som biblioteksavgränsare (se övning 4 ) och kan därför inte användas i filnamn. Följande tecken kan användas utan problem a-z, A-Z, 0-9, _, -, . (punkt).

Dolda filer

En fil är dold (visas inte med kommandot ls ) om filnamnet börjar med en punkt. Dessa filer är oftast systemfiler som innehåller olika inställningar som sällan eller aldrig behöver ändras. Mixtra inte med dem!

Sökvägar

För att kunna ange var filer ligger i bibliotekstrukturen används sökvägar. Dessa består i stort sett av biblioteksnamn separerade med /. Sökvägarna kan delas in i följande kategorier: absoluta sökvägar - börjar alltid från roten (med tecknet /). relativa sökvägar - har det aktuella biblioteket som utgångspunkt. Dessutom finns följande speciella notationer:

~ refererar till användarens hembibliotek
. refererar till det aktuella biblioteket
.. refererar till närmast överliggande bibliotek i hierarkin

Exempel: Antag att det aktuella biblioteket är ditt hembibliotek (cl8lomme) och att du har ett underbibliotek prolog. Då är dessa sökvägar ekvivalenta:

~/prolog/
/users/cling/cling98/cl8lomme/prolog/ (absolut)
prolog/ (relativ)

Lista filer
Synopsisls
Beskrivning

ls (från LiSt) Listar filerna i det aktuella biblioteket.

Justa flaggor

-l Ger utökad information om ägare och filrättigheter med mera.

-a Listar även dolda filer.

-F Skiljer på bibliotek och vanliga filer vid listningen.

Not

I raden som heter 'synopsis' ovan står filnamn och destination i krullparenteser. Detta betyder att de är obligatoriska argument. Det vill säga, när du använder cd så måste du alltid följa det med något filnamn och någon destination. I följande beskrivningar kommer ni även att råka på hakparenteser (se beskrivningen om att Byta bibliotek) vilket betyder att argumentet är valfritt.

  1. Nu borde du ha de tre filerna i ditt nuvarande bibliotek . Kontrollera det med ls

  1. Med kommandot more kan man läsa textfiler. Skriv: more skoj.txt <RETURN> (som alltid...) Spacetangenten bläddrar.

Bibliotek och Filträd

Bibliotek

Ett bibliotek är en speciell sorts fil som innehåller andra filer. Dessa används för att strukturera upp data. Exempelvis kan ett bibliotek prolog innehålla filer relaterade till prologprogrammering.

Filträdet

I UNIX-system finns - i likhet med de flesta andra operativsystem - en hierarkisk filstruktur. Längst upp finns roten (något paradoxalt), som betecknas med /. Under roten finns en biblioteksstruktur, som ser ut som ett träd. Man kan navigera i filträdet med hjälp av kommandot cd. Varje elev har vanligtvis ett eget hembibliotek där han eller hon kan lagra sina filer och skapa sina egna bibliotek. Detta hembibliotek refereras till med tecknet ~ (tilde).

Kommandon

Skapa bibiliotek
Synopsis

mkdir {biblioteksnamn}

Beskrivning

mkdir (från MaKe DIRectory) Skapar ett bibliotek.

  1. Skapa ett bibliotek som heter 'dataintro'. Detta bibliotek kommer du behöva för resten av kursen! Ta inte bort det.

  2. Skapa ett bibliotek som heter 'vadsomhelst' Detta kan ni göra vad ni vill med :-)

  3. Nu går vi upp ett steg i svårighetsgrad. Kopiera skoj.txt till ditt nya, fräscha bibliotek.

  4. Stig in i ditt nya bibliotek med cd och kontrollera att skoj.txt verkligen hamnade där.

Byt bibliotek
Synopsis

cd [sökväg]

Beskrivning

cd (från Change Directory) Byter aktuellt bibliotek. Om man inte anger någon sökväg, byts det aktuella biblioteket till hembiblioteket. Något man ofta använder är cd .. som byter aktuellt bibliotek till närmast överliggande bibliotek.

Flytta och byta namn på filer
Synopsis

mv {filnamn} {destination}

Beskrivning

mv (från MoVe) Flyttar en eller flera filer till destinationsbiblioteket. Kan även användas för att byta namn på en fil.

Exempel

mv abraham.html Bibeln/ flyttar filen abraham.html till biblioteket Bibeln.

mv abraham.html isak.html byter namn på abraham.html till isak.html.

  1. Sätt en personlig touch på denna kopia av skoj.txt: använd mv för att döpa om den till ett namn efter eget tycke. Låt dock namnet sluta på .txt - t.ex. djuptext.txt

  2. Upptäck hur mycket mer man får reda på med ls -l (alltså, flagga -l) istället för ls. Ägare, filstorlek, rättigheter (fullständiga rättigheter är dock sällsynt...)

  3. Använd mv på det andra sättet och flytta tillbaka din nya textfil till ditt bibliotek. Ledtråd: använd .. som destinationshänvisning.

Ta bort bibliotek
Synopsis

rmdir {bibliotek}

Beskrivning

rmdir (från ReMove DIRectory) Raderar ett bibliotek. Observera att biblioteket måste vara tomt

  1. Är ditt nya bibliotek tom nu? Kolla med ls. Om det är det, gå tillbaka till hembiblioteket med cd ~ eller cd .. (glöm ej mellanslag!) och ta bort ditt nya bibliotek.

Radera filer
Synopsis

rm {filnamn}

Beskrivning (från ReMove) Raderar en eller flera filer.
Exempelrm alla_mina_laborationer.pl - tar bort filen alla_mina_laborationer.pl
Justa flaggor

-i Frågar innan en fil raderas.

  1. Totalförstör din kopia av skoj.txt med rm

Flaggor

Kommandon i UNIX kan ofta följas av flaggor och används för att påverka kommandots beteende. Flaggorna föregås alltid av ett -. Ett exempel på hur det kan se ut: rm -i cg16.pl kommandot tar bort filen cg16.pl efter bekräftelse av användaren.

  1. Pröva ls med flagga -a. Ser du fler filer än utan flagga ? Om ja: de systemfiler du ser nu bör du inte pilla på om du inte vet vad du gör. Och det gör du inte... (inte än på ett tag i alla fall).

Lite annat

  1. En liten konstpaus - du ska få titta en fin bild. Med kommandot xv startar du xview för att titta på bilden gnuhead.jpg som legat oanvänd tills nu. Mata in xv gnuhead.jpg. Lista själv ut hur du stänger programmet.

  2. Om du nu tycker att filhantering är en barnlek, skapa ett par nya bibliotek, mångdubbla filerna du har och lägg kopiorna i nya bibliotek. Flytta, döp om och radera så det står härliga till. b) Pröva gärna att flytta *.txt någonstans (du får med alla som slutar på .txt). Sedan kan du kalla några filer riff.txt, raff.txt och ruff.txt. Ta bort alla med rm r?ff.txt, eftersom ? fungerar som en joker i poker - ersätter en (1) enda bokstav.

  3. Testa det värdelösa kommandot cat på en textfil. Varför är more bättre? (Tänk själv-fråga)

  4. Använd cd .. för att ta dig upp en nivå i trädet. Lista. Oj så många bibliotek! Gå in i grannens bibliotek och tjuvkika på vad han/hon har för sig. Om du känner för det, kan du med hjälp av sökvägen i uppgift 4 snoka reda på min bibliotek och mina filer. Varför inte prova att radera några av dem?

  5. Lås skärmen genom att hålla ner höger musknapp i det blå och välja "Lås skärmen". Nu kan du ta en kaffepaus i högst 20 minuter, utan att någon kan snoka i dina grejor. Därefter kan folk slänga ut dig och själva logga in på din övergivna terminal. Funkade det inte? Då sitter du vid en nyare maskin. Skriv då istället xlock -remote

  6. Pröva vad pwd gör. Gå sedan direkt till tillbaka till ditt hem med cd ~ Bra om du förirrar dig i UNIX:ens ändlösa vindlingar!

  7. Pröva vad who och whois gör. Har du listat ut det?

  8. För ut muspekaren i den blå bakgrunden och håll nere vänster knapp.

    Gå ner till "World wide web" och dra lite åt höger. Starta Netscape. Nu ska du stänga Netscape - ingen nöjessurfning här inte! Tryck med vänster musknapp på den svarta bollen i övre vänstra hörnet. Det funkar inte! Nu minimerade du Netscape. Det finns som en grå ruta till höger. Klicka på den igen, och håll sedan nere knappen på det lilla papperet alldeles till höger om den svarta bollen. I den frampoppande menyn kan du äntligen välja "stäng".

  9. Nytt trick: > Såhär kan du skriva utdata från ett kommando till en textfil istället för på skärmen. Komplicerat? Prova så här: ls -l > lista.txt - då hamnar utdatan i lista.txt, kontrollera med more lista.txt. Prova sedan: ls >> lista.txt , så kommer den att appenda, foga till, den nya listan till den gamla.

  10. Med hjälp av kommandot ssh kan du logga in på en annan UNIX-dator. Prova att logga in på huvudservern med: ssh panini.cling.gu.se Gräset är inte grönare på andra sidan när du väl kommer dit, så bryt anslutningen med exit. I nästa lektion får du se vad man skall ha det till.

Filrättigheter

För att kunna skydda sina data förses varje fil med information om vem som får läsa (read), skriva (write) och exekvera (execute) filen. Den här informationen kallas för filens rättigheter. Dessa kan delas ut till: Ägaren (owner)(den som skapat filen) - Gruppen (group) (t.ex. cling98) - övriga (other). Exempelvis kan ägaren få skriva till filen, men övriga bara läsa från den. För att kontrollera filers rättigheter, används kommandot ls med flaggan -l.

-rwxr-xr-x 4 cl7hsven gustud 512 May 27 16:38 laboration1
-rw-r--r-- 1 cl7hsven gustud 287 Apr 22 10:54 pascal.txt
-rw-rw-r-- 1 cl7hsven gustud 5665 Jul 6 09:09 huey.jpg
            

Rättigheterna anges i den första kolumnen. r står för Read, w för Write och x för eXecute. De tio tecknen är egentligen ett tecken följt av 3 grupper med tre tecken. Det första tecknet talar om ifall filen är ett bibliotek eller en fil (om det är ett bibliotek står det 'b' annars '-').Den första gruppen visar ägarens rättigheter. Den andra gruppen visar rättigheter för din grupp. Den tredje gruppen visar rättigheter för övriga. Endast ägaren kan ändra rättigheter vilket görs med kommandot chmod. Innan du börjar experimentera med detta så var säker på att du vet vad du gör. För att lära dig det så gör du först klart alla andra övningar och följer sedan länken sist i denna lektion.

Arbeta i bakgrunden

&-tecknet och kan användas efter ett kommando, för att starta exekveringen i "bakgrunden". Detta innebär att kommandofönstret fortfarande kan användas parallellt med att programmet körs.

  1. Skriv netscape hemsideskal.html Du kan inte skriva något i xterm-fönstret förrän du stänger Netscape igen.

  2. Pröva sedan netscape hemsideskal.html &. Vilken skillnad!

  3. Logga ut. Du sätter muspekaren i den lilla rutan nere till höger och trycker CTRL-C (som för övrigt avbryter de flesta program, när du har fått nog).

  4. Logga in igen, såvida du inte tröttnat och vill gå hem.

Alias

alias {aliasnamn} {kommando}

Om man ofta använder ett kommando kan man skapa ett (kortare) kommando, ett alias (alias), som gör samma sak. Kommandot alias är inte livsviktigt, men kan underlätta arbetet ibland. alias ll 'ls -l -F' - gör att kommandot ls med flaggorna -l och -F kan anropas direkt med det nya "kommandot" ll.

Manualer

Se själv hur svår den inbyggda manualen är att använda.

  1. Slå upp vad den säger om "rmdir" med: man rmdir "q".

  2. Ta bort skräpet. Fråga någon istället - studenter brukar vara betydligt användarvänligare...

Kommandot man kommer ni använda mer i takt med att UNIX-vanan ökar. Det finns dock en bra sökfunktion inom manualsidorna som är användbar från första början; om man letar efter ett kommando som man inte vet vad det heter, men vad det borde göra, så kan man lägga till flaggan -k och ett relevant sökord, så får man med lite tur upp förslag på kommandon som har med det sökta ordet att göra. Det är t.ex. ganska svårt att lista ut att kommandot lp recept.txt skriver ut recept-filen, men detta kan man ta reda på med: man -k print

  1. Om du har kommit så här långt fattar du snabbt. Surfa då in på http://www.cling.gu.se/~cl2lryd/lh/unixguide.html Här hittar du lite mer information om UNIX mm. Alternativt kan du hjälpa andra som kört fast, surfa fritt eller gå hem. Eller kanske upptäcka Pine, e-postprogrammet. Skriv bara pine <enter>

  2. Bra jobbat!