2D1522 Datorteknik och -kommunikation

Slides:



Advertisements
Liknande presentationer
Att förstå anonymiteten (översättning från
Advertisements

Svenska WebDewey Introduktion
Innehåll, huvudpresentation 4. Rangordning av ordningsstörningar (fråga 1) 5. Problem med nedskräpning (fråga 1a) 6. Problem med skadegörelse (fråga 1b)
Relationsdatabasdesign
Joomla © 2009 Stefan Andersson 1. Kontaktformulär  På varje seriös webbplats bör det finnas ett kontaktformulär.  Använd ej maillänkar, risk för spam!
XHTML.
FTP, HTTP, HTML, XML och XHTML
Mjukvara och nätverk Vad är det?.
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Leif Håkansson’s Square Dancer Rotation
OPERATIVSYSTEM OCH PRAKTISK LINUX Föreläsning 6 – Vecka INNEHÅLL  Hantering av användarkonton och användargrupper  Användning av Sudo för delgering.
Projektföljeforskning
Textkodning: XML ”Having trouble de-coding the text, Albert?”
Logikprogrammering Ons, 25/9
HEAD – HUVUDET I huvudet hittar du information om dokumentets titel, sökord, referenser till stildokument och annan information som normalt inte visas.
Programmeringteknik Webbdelen. HTML H yper T ext M arkup L anguage Märker upp sidans innehåll så att webbläsaren kan avgöra hur innehållet ska visas.
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Välkommen Vahid Mosavat
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Lite mer om CGI-programmering Innehåll Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl Internetprogrammering F 14 Läs också: Kursboken.
Svenska WebDewey Introduktion
Textkodning: XML ”What’s the matter, Albert? Having trouble decoding the text? ”
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Punktprevalensmätning av trycksår 2011, v.40 Resultat från landstingen
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
XSLT – en introduktion Digitalisering av kulturarvet.
Programmering B PHP Lektion 2
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Programmering B PHP Lektion 3
Svenska WebDewey Introduktion Harriet Aagaard Svenska Deweyredaktion
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
Programmering B PHP Lektion 3
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
XSLT – en introduktion Elektronisk publicering.
Hittarps IK Kartläggningspresentation år 3.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
TÄNK PÅ ETT HELTAL MELLAN 1-50
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Funktioner, styrstrukturer, manipulering av matriser
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
2 Agenda 1. Börja arbeta med Excel Hantera arbetsböcker 3. Formler 4. Formatera 5. Diagram 6. Skriva ut 7. Referenser mellan kalkylblad 8. Arbeta.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
EXtensible Markup Language Digitalisering av kulturarvet
XHTML & CSS Introduktion Erik Nahkala
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
OpCon/xps - A case study. Club2200Page 1 OpCon/xps – A case study Club2200 Magnus Nyman & Hans Forslind.
Java paket och jar-filer
Kartminne En serie bilder som ger övning av ”rutinen” Tänk på: –Vart är jag på väg? –Varifrån är kontrollen lättast att ta? –Vilken är sista säkra? –Förenkla.
IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 1 IV1023 ht2013 Avancerad Datahantering med XML XSLT nikos dimitrakas Rum 8522 Läsanvisningar.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
BVForum - en genomgång för revisorer Sören Thuresson.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Grundskola Elever 2013 Grundskoleenkät - Elever Enhet: Gillberga skola.
1 Jan Lundström OV’s Hemsida Utbildning Ledare. 2 Jan Lundström OV’s Hemsida Standard Lagrum.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
© Björn Hedin, NADA/KTH XML/XSLT 2D1553 Medieproduktion
Presentationens avskrift:

2D1522 Datorteknik och -kommunikation XML och Unix 2D1522 Datorteknik och -kommunikation http://www.nada.kth.se/kurser/kth/2D1522/ 2002-03-18 © Björn Hedin, NADA/KTH 2002

Dagens föreläsning Syfte Mål Få en introduktion till XML, vilket är det vanligaste dataformatet för att strukturera data idag. Lära er grunder och principter i Unix, vilket det händer att man stöter på “i verkligheten” Mål Lära er vad XML är, Skillnaden mellan “well formed och valid” Hur man skriver en DTD Tillräckligt mycket Unix-kunskap för att klara laborationen 2002-03-18 © Björn Hedin, NADA/KTH 2002

XML eXtensible Markup Language 2002-03-18 © Björn Hedin, NADA/KTH 2002

Vad är XML Ett meta-märkspråk med vilket man kan bygga märkspråk som xhtml, wml, smil etc. Inget exekverande programspråk, endast för att strukturera data. Rekommendation förvaltad av W3C. XML-familjen = XML + relaterade rekommendationer som xslt, xpath, xlink mm. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Exempel - XHTML <?xml version="1.0"> <?xml-stylesheet type="text/css" href="style.css" type="text/css" /> <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>Personlig webbsida för Förnamn Efternamn</title> </head> <body> <p align="center"> <img src="/kth/bilder/nada.gif" alt="Nada" width="468" height="68"/> </p> </body> </html> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Exempel - SMIL <?xml version="1.0"?> <smil> <head> <layout> <root-layout height="350" width="600" title="Universal SMIL Document"/> <region id="w" left="174" top="100" height="47" width="63" z-index="3" /> </layout> </head> <body> <video src="Help.mov" begin="0.00s" end="11.00s" /> </body> </smil> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Exempel - Dataformat 2002-03-18 © Björn Hedin, NADA/KTH 2002 <?xml version="1.0"?> <imf> <head> <version>3.0</version> <source supplier="PrintingCompany-1" application="Application-1"/> <time>1997-10-06T00:11:00.00+2</time> </head> <body> <object action="modify"> <PrintingJob/> <object_uid> <local_id>17</local_id> </object_uid> <attributes> <ActualCopies>14322</ActualCopies> </attributes> </object> </body> </imf> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Element Ett element är den grundläggande informationsenheten i en xml-applikation. Ett element har en start-tag, ett innehåll och en slut-tag. Exempel <title> XML Lecture </title> Start-tag Innehåll Slut-tag 2002-03-18 © Björn Hedin, NADA/KTH 2002

Simple-, Complex- eller Empty content Simple content - En tag innehåller endast text. Complext content - En tag innehåller en eller flera andra tags och eventuellt text. Empty content - En tag innehåller inget. Exempel <head> <title> XML Lecture </title> </head> <br></br> <br /> <head> har Complex Content <title> har Simple Content <br> har Empty Content Kortversion av <br></br> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Attribut Attribut innehåller extra information om ett element T.ex. width på bilder, href på länkar Skrivs på formen <elementnamn attributnamn1=”värde1” attributnamn2=”värde2”> Exempel <a href=”b.html”>Link</a> <img width=”14” src=’b.jpg’ /> Observera att det går att innesluta attributvärdet antingen ”värde” eller ’värde’, men inte ”värde’ eller ’värde”. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Attribut eller element? Då man själv gör ett märkspråk ställs man ofta inför valet att koda något som ett attribut eller ett element. Valet är huvudsakligen en smakfråga. Exempel <video duration=”2s” href=”b.jpg” /> Eller <video> <duration>2s</duration> <source>b.jpg</source> </video> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Trädstruktur XML-strukturer bildar alltid en trädstruktur Alla XML-strukturer har ett ”root-document” Exempel HTML <html> <head> <title> XML Lecture </title> </head> <body> </body> </html> root html head body title XML Lecture Tecken-data 2002-03-18 © Björn Hedin, NADA/KTH 2002

Föräldrar, barn, syskon Element som innehåller andra element kallas dessa elements förälder. Omvänd relation kallas barn. Element på samma nivå kallas syskon. Exempel HTML <html> <head> <title> XML Lecture </title> </head> <body> </body> </html> html head body title XML Lecture 2002-03-18 © Björn Hedin, NADA/KTH 2002

Reserverade tecken Vissa tecken är reserverade då de har speciell betydelse i XML. De kodas som ”entitetsreferenser”. Även svenska tecken kodas oftast som entitetsreferenser Exempel < < (less than) > > (greater than> & & (ampersand) ” " (quotation) ’ &apos; (apostrophe) Å Å Ä Ä Ö Ö å å ä ä ö ö 2002-03-18 © Björn Hedin, NADA/KTH 2002

CDATA och PCDATA PCDATA = Parsed Character Data. Parsern ersätter entitetsreferenser med deras värde. CDATA = Character Data. Entitetsreferenser tolkas ej. Exempel Om man har många ”konstiga” tecken som man av lathet eller något annat skäl vill skriva in utan entitetsreferenser kan man innesluta tecknen i en CDATA-sektion. Den inleds med strängen <![[ och avslutas med strängen ]]> <reserved_characters> <![CDATA[ <, > &, ’ och ” är alla reserverade tecken ]]> </reserved characters> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Namngivning Namn på tags och attribut måste inledas med en bokstav eller ”_” Därefter bokstäver och/eller siffror. Svenska tecken OK men bör undvikas i praktiken ”xml” reserverat som inledning Godkända exempel <html> <_my_id_19> <dåligt_namn> <tag_with_xml> Felaktiga exempel <mitt element> <7nde_elementet> <Bjorn’s_tag> <xml_tag> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Well-formed Ett xml-dokument är ”well formed” om det uppfyller ett antal kriterier. Alla xml-dokument måste vara well-formed. Exempel Varje start-tag måste ha en motsvarande slut-tag (<html></html>) Elementen måste bilda en trädstruktur (t.ex. <i><p></p></i> men EJ <i><p></i></p>) Attributvärden måste omslutas av citat-tecken eller apostrofer. Observera att många html-editorer inte uppfyller något av ovanstående krav. Fullständig lista i kapitel 18 av XML in a nutshell, något mer lättbegripligt på sid 23 i samma bok. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Kommentarer Kommentarer omsluts med <!-- kommentar --> Får EJ finnas i en tag. Får EJ innehålla strängen -- Godkänt exempel <html> <!-- min kommentar --> </html> Felaktiga exempel <html <!-- en html-tag -->> <!-- -- är ej tillåtet --> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Processinstruktioner Processinstruktioner kan användas för att skicka vidare information till applikationer. Många applikationer har tidigare använt kommentarer i samma syfte, vilket är dåligt. Exempel <?xml-stylesheet type=”text/xml” href=”my-stylesheet.xsl”?> Denna processinstruktion kan sedan plockas upp exempelvis av en webserver som kan använda informationen till att styra sitt beteende. Processinstruktioner inleds med <? Och avslutas med ?> 2002-03-18 © Björn Hedin, NADA/KTH 2002

XML-deklarationer XML-dokument bör inledas med en XML-deklaration. Den innehåller: XML-version Teckenkodning Om en extern dtd används Exempel <?xml version=”1.0” encoding=”ISO-8859_1” standalone=”yes”?> Teckenkodning (t.ex. ascii, iso-8859_1 eller unicode kan väljas med ”encoding”) standalone=”no” används om en extern DTD finns. Förklaring av DTD kommer senare. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Dokumenttypdeklaration XML-dokument kan även innehålla en Document Type Declaration som anger en eventuell DTD. Exempel <!DOCTYPE imf SYSTEM ”http://www.aa.com/imf.dtd”> imf är i ovanstående fall root-elementet SYSTEM används om det inte är en ”officiell” DTD, annars används PUBLIC URLen är urlen till DTDn Kan även innehålla en så kallad ”public ID”, t.ex. ”-//W3C//DTD XHTML 1.0 Transitional//EN" 2002-03-18 © Björn Hedin, NADA/KTH 2002

Tag-set Tags och deras attribut för ett visst område kallas ”tag-set”, ”xml application” eller ”xml vocabulary”. Exempel <br> ingår i den tag-set som finns för xhtml men inte för SVG <apply-templates> ingår i den tag-set som finns för xsl men inte för xhtml <p> ingår i både xhtml’s tag-set och wml’s tag-set. 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD I en Document Type Definition (DTD) definierar man en tag-set och de inbördes relationer som ska gälla. Samma sak kan idag göras med t.ex. XML Schemas. Exempel <html>, <head> och <body> är alla definierade i DTDn för XHTML. I den DTDn anges att ett <head>-element ska innehålla exakt et <head>-element följt av exakt ett <body>element. Detta uttrycks genom följande rad i DTDn <!ELEMENT html (head, body)> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Valid Om ett XML-dokument är well-formed och uppfyller alla de begränsningar som ges av dess DTD är det ”valid”. Processen att kontrollera detta kallas ”validering” Exempel xhtml-dokument kan valideras på http://validator.w3.org/ En generell valideringstjänst som klarar andra vokabulärer än xhtml finns på http://www.stg.brown.edu/service/xmlvalid XML Schemas kan valideras på http://www.w3.org/2001/03/webdata/xsv 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Element Element definieras enligt syntaxen <!ELEMENT elementnamn (barnelement) > Sekvenser separeras med kommatecken <!ELEMENT e1 (e3,e4) > Teckendata skrivs #PCDATA <!ELEMENT e4 (#PCDATA) > Exempel <!ELEMENT html (head,body)> <!ELEMENT title (#PCDATA)> 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Repeterande element Default är att ett element förekommer exakt en gång. Vill man ange något annat finns *, + och ? OBS!! Fel på sidan 35 i boken, korrekt till höger. Exempel * betyder 0, 1 eller flera gånger + betyder 1 eller flera gånger ? betyder 0 eller 1 gång Instansdokument <a> <b> <c> <d>hej</d> </c> </b> </a> Definition <!ELEMENT a (b?)> <!ELEMENT b (c+))> <!ELEMENT c (d*))> <!ELEMENT d (#PCDATA)> 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Grupperingar Parenteser kan användas för att gruppera element. Sedan kan *, + och ? appliceras på hela parentesen som en grupp. Exempel <!ELEMENT a (b,(c+,d?)*)+> 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Val För att ange valmöjlighet mellan en mängd element kan operatorn | användas. Exempel <!ELEMENT boolean (true|false)> 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Tomma element Tomma element, alltså element utan innehåll deklareras med EMPTY Exempel <!ELEMENT br EMPTY> 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Blandat innehåll I vissa fall är det önsvärt att kunna blanda teckendata med element. Typexemplet är web. #PCDATA måste vara först i en val-lista. Exempel Deklaration <!ELEMENT mixedelement (#PCDATA| p|br|em|strong)*> Instansdokument <mixedelement> <em>hej</em> hopp <p>tjoho</p> </mixedelement> 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Godtyckligt innehåll Ibland (mycket sällan) är det önskvärt att deklarera ett element som kan ha godtyckligt innehåll. Det görs med ANY. Exempel <!ELEMENT everything ANY> Elementet everything kan nu innehålla godtycklig well-formed xml och text blandat. 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Övningar Skriv ett instansdokument som kan valideras mot följande DTD (a är root-elementet): <!ELEMENT a (b,c?)> <!ELEMENT b (d+, e*)> <!ELEMENT c (#PCDATA)> <!ELEMENT d EMPTY> <!ELEMENT e (#PCDATA)> 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Övningar Skriv ett instansdokument som kan valideras mot följande DTD (a är root-elementet): <!ELEMENT a (b|c)+,(c,b)+)> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)> 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Övningar Skriv en DTD som kan validera följande instansdokument. <b/> <c/> <d> </d> </a> 2002-03-18 © Björn Hedin, NADA/KTH 2002

DTD - Attribut Ett eller flera attribut kan associeras med ett element. Ett attributnamn kan förekomma i flera element, men ett element kan inte ha två attribut med samma namn Exempel <!ATTLIST img src CDATA #REQUIRED width CDATA #REQUIRED height CDATA #IMPLIED> img är elementet attributen ska associeras med. src, width, height är attributnamn CDATA är attributens datatyp #REQUIRED betyder att attributet måste finnas med, #IMPLIED att det kan finnas med 2002-03-18 © Björn Hedin, NADA/KTH 2002

Attribut - Datatyper CDATA - Minst begränsade datatypen. NMTOKEN - Alfanumeriska tecken, _, -, . och :. Inte mellanslag. NMTOKENS - En eller flera NMTOKEN separerade av mellanslag (whitespace) Enumerations - Endast ett av en enumerering värden kan antagas. Definieras exempelvis <!ATTLIST book published (true|false) #REQUIRED> ID - Unika värden inom XML-dokumentet. Som NMTOKEN men kan inte inledas med en siffra IDREF - Används för interna länkar till attribut av ID-typ. Måste alltså antaga ett värde som ett ID-attribut har. IDREFS - En eller flera IDREF Mycket begränsade ”datatyper” finns. De viktigaste är: CDATA NMTOKEN NMTOKENS ENUMERATIONS ID IDREF IDREFS 2002-03-18 © Björn Hedin, NADA/KTH 2002

Entitetsdeklartioner Exempel I en DTD <!ENTITY mtgp ”Medieteknik och Grafisk Produktion”> I ett instansdokument som använder den DTDn <p>Kursen ges av &mtgp;</p> Slutresultat <p>Kursen ges av Medieteknik och Grafisk Produktion </p> I #PCDATA-sektioner går parsern igenom texten och ersätter entiteter med dess värden. Entitetsdeklarationer kan användas för att ”skapa alias” för långa eller svåra strängar. Deklareras i en DTD, används i instansdokumenten. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Parameterentiteter Entitetsdeklarationer skrivs i en DTD och används i instansdokument. Parameterdeklarationer både skrivs och används i DTDer. Exempel <!ELEMENT person (fname, lname)> <!ELEMENT employee (fname, lname)> <!ELEMENT student (fname, lname)> Istället kan man deklarera en parameterentitet <!ENTITY % name ”fname, lname”> <!ELEMENT person (%name;)> <!ELEMENT employee (%name;)> <!ELEMENT student (%name;)> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Interna/Externa DTDer Exempel extern DTD Filen student.dtd <!ELEMENT student (fname, lname)> <!ELEMENT fname (#PCDATA)> <!ELEMENT lname (#PCDATA)> Filen student.xml (instansdokumentet) <?XML version=”1.0”?> <!DOCTYPE student SYSTEM ”student.dtd”> <person> <fname>Bjorn</fname> <lname>Hedin</lname> </person> Vanligtvis ligger DTD-deklarationerna i en extern fil. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Interna/Externa DTDer Det går dock även att inkludera deklarationerna i själva instansdokumentet. Exempel intern DTD <?XML version=”1.0”?> <!DOCTYPE student [ <!ELEMENT student (fname, lname)> <!ELEMENT fname (#PCDATA)> <!ELEMENT lname (#PCDATA)> ]> <person> <fname>Bjorn</fname> <lname>Hedin</lname> </person> 2002-03-18 © Björn Hedin, NADA/KTH 2002

Problem med DTDer Begränsade datatyper (inga int, long, date…) Begränsade repetitionsalternativ (endast ?, * och +) Endast en betydelse för ett element per DTD DTDer är själva inte XML-dokument. Inga möjligheter till ”arvsmekanismer”. Försök till lösning med XML Schemas, men mer om det nästa gång. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Unix Ett operativsystem, precis som Windows och MacOS Linux, Solaris, Mac OS X m.fl. Unixsystem finns Från början designad för att flera användare ska kunna köra program samtidigt på samma dator. Mycket stabilt. Används ofta för serverapplikationer, såsom webserver, mailserver, filserver. Första implementationen 1969 2002-03-18 © Björn Hedin, NADA/KTH 2002

GUI/Textgränssnitt Både grafiska gränssnitt och textbaserade gränssnitt finns. Jfr Windows och DOS-prompt Textbaserade gränssnitt speciellt användbara vid fjärrinloggning på system. Enkelt att skriva ”script” som utför en mängd olika kommandon. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Grundläggande begrepp Shell Ett ”shell” är en kommandotolk. För att exekvera ett program skriver du in programmets namn i tolken, vilken tolkar kommandot och därpå exekverar det. Process Ett program som exekveras är en process. Processen innehåller information om öppna filer, variabler mm. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Filosofi Unix har en liten del (”kernel”) som sköter om det viktigast, såsom minneshantering, resursallokering, filhantering och felhantering. Övriga delar, t.ex. ls, kommandot för att lista filer, är ett eget program som kan bytas ut om man så önskar Många småprogram kan kombineras ihop till att utföra komplexa uppgifter. jfr MS/DOS, Windows m.fl. där ”allt” är integrerat. Lättare att skriva ett litet program som hanterar en liten uppgift bra och effektivt än att skriva ett stort program som hanterar många uppgifter. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Shell Ett shell är som sagts tidigare en kommandotolk. Kan, förutom dess viktigaste uppgift att starta processer, även hantera variabler, if/then/else-konstruktioner, loopar etc. Det första man möts av när man loggar in via en textterminal är ett shell. Alla program man utför är ”barnprocesser” till detta shell. Om inloggningsskalet avslutas, avslutas normalt sett även dess barnprocesser. Kommandon kan utföras ”batchvis” i ett shellscript. 2002-03-18 © Björn Hedin, NADA/KTH 2002

Shell-cykeln Shell T.ex. ls Skriv ut en prompt Läs ett kommando från tangentbordet Tolka speciella tecken såsom variabler Kör kommandot och vänta tills det avslutas Börja om från början T.ex. ls exekvera programmet ls Skriv ut ev. resultat Återgå till skalet 2002-03-18 © Björn Hedin, NADA/KTH 2002

Generell kommandosyntax Den generella formen för hur ett kommando ges är: >kommandonamn -flaggor argument Obs. Det inledande >-tecknet är själva kommandoprompten, och kan variera. Exempel >cp -R mapp1 mapp2 2002-03-18 © Björn Hedin, NADA/KTH 2002

Hjälp Exempel För att få hjälp finns t.ex. två hjälpsystem (ofta). De flesta kommandon accepterar flaggan --help för kortfattad beskrivning av de flaggor och argument som kan ges. Klamrar [] anger att något ej är nödvändigt. Vertikalstreck | används för att ange val mellan två alternativ. Exempel >cp --help usage: cp [-R [-H | -L | -P]] [-f | -i] [-p] src target cp [-R [-H | -L | -P]] [-f | -i] [-p] src1 ... srcN directory > 2002-03-18 © Björn Hedin, NADA/KTH 2002

Man-blad För mer utförlig hjälp kan man ange kommandot >man kommandonamn Dessa manualblad är oftast tämligen svårtydda om man inte är van. media>man cp CP(1) System Reference Manual CP(1) NAME cp - copy files SYNOPSIS cp [-R [-H | -L | -P]] [-f | -i] [-p] source_file target_file cp [-R [-H | -L | -P]] [-f | -i] [-p] source_file ... target_directory DESCRIPTION In the first synopsis form, the cp utility copies the contents of the source_file to the target_file. In the second synopsis form, the contents of each named source_file is copied to the destination target_directory. The names of the files themselves are not changed. If cp detects an at- tempt to copy a file to itself, the copy will fail. The following options are available: -H If the -R option is specified, symbolic links on the command line 2002-03-18 © Björn Hedin, NADA/KTH 2002

Filsystemet 2002-03-18 © Björn Hedin, NADA/KTH 2002

Sökvägar Det finns åtminstone tre sätt att ange sökvägar. Antag att du står i katalogen kalle och vill komma åt programmet ls under bin-katalogen under bjornh Absolut sökväg /home/bjornh/bin/ls Relativ sökväg ../bjornh/bin/ls Relativt användaren bjornh ~bjornh/bin/ls 2002-03-18 © Björn Hedin, NADA/KTH 2002

Filrättigheter En fil har tre ägartyper Ägarnivå Gruppnivå Samtliga användare För ägartyp kan tre rättigheter ges Läsrättighet (r) Skrivrättighet (w) Exekveringsrättighet (x) 2002-03-18 © Björn Hedin, NADA/KTH 2002

Filrättigheter (2) Vilka filrättigheter en fil har kan ses med kommandot ls -l >ls -l afmstud01.xls -rw-r--r-- 1 bjornh staff 11776 Jan 9 11:12 afmstud01.xls media> De första tio tecknen anger rättigheterna. I tur och ordning: -: afmstun01.xls är en fil, inte en katalog (i så fall “d”) rw-: Ägaren (bjornh) har läs- och skrivrättigheter, men inte exekveringsrättigheter r--: Gruppen har läsrättigheter, men inte skriv- eller exekveringsrättigheter r--: “Samtliga användare” har läsrättigheter, men inte skriv- eller exekveringsrättigheter För att ändra filrättigheter används kommandot chmod (se labb) 2002-03-18 © Björn Hedin, NADA/KTH 2002

stdin, stdout och stderr Program har standardvärden för varifrån de läser input och skriver output. Program tar normalt sitt input via tangentbordet (stdin) De skriver output till skärmen (stdout) De skriver felmeddelanden tilll skärmen (stderr) Dessa kan omdirigeras till/från t.ex. en fil. >cat fil1 >fil2 Skriver innehållet som finns i fil1 till fil2 >cat filnamn >>fil2 “Appendar” fil1 till fil2 Se mer på laborationen 2002-03-18 © Björn Hedin, NADA/KTH 2002

pipes Output kan även skickas vidare och bli input till ett annat program. Det kallas för en “pipe”. >ls | grep banan | wc Listar alla filer i katalogen. Output skickas vidare till programmet grep som plockar ut alla rader som innehåller strängen banan. Output från detta (alla rader innehållande strängen banan) skickas vidare till programmet wc (word count) som räknar antalet rader. Med omdirigeringar hade samma sak kunnat uppnås (första “>”-tecknet är kommandoprompten). >ls >a >grep banan a >b >wc b 2002-03-18 © Björn Hedin, NADA/KTH 2002