introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog...

124
Introduktion till datateknik för språkvetare ht 2016 Per Starbäck

Upload: others

Post on 19-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Introduktion till datateknikför språkvetare

ht 2016

Per Starbäck

Page 2: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger
Page 3: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 1

Inledning

1.1 Om kursen

Schema och annat finns på http://stp.lingfil.uu.se/kurs/ids/. Där kommer detäven finnas länkar till de olika delarna av dettakompendium.

Mål (citerat från kursplanen)

Kursen skall förmedla grundläggande kunskaperom datasystem och databehandling, som en basför databehandling av naturligt språk.

Efter avslutad kurs ska studenten minst kunna:

• nämna och översiktligt förklara funktionenhos en modern datorhårdvaras viktigastekomponenter, inklusive externt och interntminne och andra viktiga digitala media

• nämna och översiktligt förklara funktionernahos ett vanligt operativ- och filsystem

• skapa och använda filer i de vanligaste for-maten för textdokument med elementär ty-pografi, spela in och spela upp ljudresurser,samt visa bilder

• översiktligt redogöra för begreppen tecken-kodning, ordbehandling, elektronisk typsätt-ning och filöverföring samt arbeta praktisktmed dem i några elementära sammanhang

• använda program för elementär textbearbet-ning och enkel kvantitativ analys

• översiktligt förklara begreppen klient/server-system, Internet, www, webserver och web-läsare

• skapa HTMLsidor och publicera dem på nä-tet

• översiktligt beskriva hur någon viktig sök-tjänst på nätet fungerar och använda dennapå ett avancerat sätt

• resonera kring digitala rättighetsfrågor i rela-tion till konkreta objekt

Examination

För att få godkänt på kursen ska man göra klartinlämningsuppgifterna i samtliga moment. Bland

Figur 1.1: Ett gnuhuvud som symboliserar operativ-systemet GNU (= GNU’S Not Unix)

annat för att underlätta min kontroll ska uppgif-terna göras på våra datorer här, och man ska va-ra närvarande vid undervisningstillfällena. Om dunågon gång inte kan närvara så hör av dig i förvägom detta!

Bara betygen underkänt och godkänt finns pådenna kurs.

1.2 Vårt datorsystem

På STP används operativsystemet GNU/Linuxsom är ett system som liknar operativsystemetUnix. Vid »normalt« användande är det mestpå skrivbordsmiljön man märker skillnad på sy-stem, med menyer, paneler, ikoner osv. Den heterGnome och är gjord särskilt för GNU, men gåräven att köra på andra Unix-liknande system. Idenna kurs kommer vi inte att använda det sär-skilt mycket, utom denna första gång. Det ska nitill största delen kunna sätta er in i med den in-byggda hjälpen.

I labbarna kommer vi istället mycket att hållapå med kommandoraden och annat som är svårareatt komma in i på egen hand.

3

Page 4: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

1. INLEDNING

Våra datorsalar

De datorer som ni använder finns i två datorsalar,tillsammans med servrar som även går att använ-da utifrån. Dessutom har en del anställda datorersom ingår i samma system.

Våra datorer har fått namn som t. ex. prepo-sition, futurum, dativ och numerus. Institutio-nen för lingvistik och filologi har domännamnetlingfil.uu.se, så datorernas fullständiga namnär i stil med numerus.lingfil.uu.se. Den da-torn har även aliaset stp.lingfil.uu.se och detär dit man ska koppla sig ifall man ska arbeta påvåra datorer utifrån, t. ex. hemifrån.

De två datorsalarna är öppna dygnet runt, åretrunt, och är tillgängliga med era passerkort medvilka ni också kommer in i huset. När salarna inteär bokade för undervisning är det bara att slå signer vid en ledig dator där.

Med rätt program på en annan dator kan manockså koppla sig till våra datorer utifrån och kom-ma åt samma filer och program som man når fråndatorsalarna.

Att logga in

När man ska använda systemet måste man förstlogga in. Ditt användarnamn och lösenord får duav Per. Till användarnamnet finns knutet en sär-skild hemkatalog där man kan lagra sina filer.

Att välja lösenord

På alla ställen där man ska sätta ett lösenord bru-kar man uppmanas att ha säkra lösenord: »Undviklättgissade lösenord! Använd inte riktiga ord, var-ken på engelska, svenska eller något annat språk!Använd inte samma lösenord som på något annatställe!« Och så vidare.

I själva verket är förstås lösenord till olika stäl-len olika viktiga, och ibland kan det mycket välduga att använda samma slasklösen på flera stäl-len där man behöver registrera en användare medlösenord för att kunna använda någon tjänst.

Men i en del fall är det viktigare, och detta är ettsådant fall, så om du ändrar ditt lösenord så se tillatt du följer sådana regler. Blanda gärna stora ochsmå bokstäver (de räknas som olika!) och stoppagärna in nån siffra eller nåt skiljetecken.

Ett skäl till att det är viktigt att alla har bra lö-senord, förutom ens egen säkerhet, är systemetssäkerhet. Det går att logga in på dessa datorerutifrån, varifrån som helst på Internet. På dato-rer som sitter på nätet pågår hela tiden försökfrån olika håll att ta sig in olovligen på datorer-na och få administratörsrättigheter där. Sådana at-tacker sker ofta i två steg. Först behöver förövarenkomma in på datorsystemet överhuvudtaget, se-dan hitta ett öppet säkerhetshål som kan ge merbehörighet. Det andra steget är det upp till sys-

temadministratörerna att ha stoppat, men för sä-kerhets skull bör det även ta stopp redan vid förs-ta steget genom att alla användare har goda lösen-ordsvanor.

Att logga ut

När du lämnar datorn ska du logga ut. Klicka frammenyn längst till höger i övre panelen och sedanpå . Stäng inte av datorn! Dessa datorer står pådygnet runt, bland annat för att uppdateringar skakunna göras utifrån.

Man kan istället låsa datorn om man lämnarden en kortare stund. Andra kan också logga inpå datorn då.

Ljud

För att inte få för mycket olika ljud i datorsalarnaså använder vi hörlurar. Volymkontrollen finns iöverpanelen på skärmen, men observera att en delhörlurar dessutom har en egen volymkontroll, såom det inte hörs något kan det vara kontrollen därsom behöver ändras snarare än något på datorn.

Tangentbord

Våra tangentbord är uppsatta så att vissa tangen-ter med accenter är döda (se figur 1.2), dvs. integer något tecken av sig självt utan bara i kombina-tion med nästa tecken. Det gäller dels en tangentmed vilken man kan skriva t. ex. »ú« och »ù«. Delsen tangent med vilken man kan skriva t. ex. »ü«,»û« och »u«. Den sistnämnda står till höger på tan-genten och får man därför fram tillsammans medAltGr. AltGr (= Alternate Graphic) kan kombi-neras med en mängd tangenter för att ge andratecken. Många av dessa står till höger på den tan-gent det gäller (t. ex. C på AltGr + e), men detfinns andra också, t. ex. þ på AltGr + t.

För att skriva ^, ~ och ` som egna tecken kanman trycka ett mellanslag efter den döda tangen-ten.

Figur 1.2: De två döda tangenterna på våra tangent-bord

4

Page 5: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

1.3. Filer och kataloger

1.3 Filer och kataloger

Data av olika slag lagras i filer.Innehållet kan vara bl. a. texter, ljud, bilder,

databaser och program, och allt ligger normaltlagrat som en sekvens av bytes, som kan ses somvärden 0–255, i ett visst format, dvs. kodade en-ligt någon särskild konvention. Detta återkommervi till senare.

Filer med program omfattar både källkoden(textfiler skrivna av programmerare, skrivna i ettvisst programspråk) och filer som inte är läsbaraför människor (binärfiler), men vars innehåll kantolkas som instruktioner som kan utföras (exekve-ras) direkt av datorn. (De senare genereras au-tomatiskt från de förra med program som kallaskompilatorer.)

Kataloger

Filerna samlas i kataloger (directories). När mananvänder kommandoraden är denna beteckningofta vanligare än mappar (folders). Det finns delscentrala kataloger till för systemet och dels harvarje användare sin egen hemkatalog att lagra fileri.

I en katalog kan det förutom filer ligga andrakataloger, underkataloger (subdirectories), till denförsta katalogen.

Fil- och katalognamn

I Unix-system är det skillnad på små och storabokstäver vad gäller namn på filer och kataloger.Det går därför t. ex. att ha en fil som heter »read-me«, en annan fil som heter »README« och entredje som heter »ReadMe« i samma katalog. Van-ligtvis låter man dock de flesta filerna ha namnmed bara små bokstäver.1

Även om det går bra att ha filnamn med mel-lanslag i brukar man undvika det för filer somman ska hantera med kommandoraden. Ni kom-mer snart att förstå varför!

Filnamnsändelse

I många filsystem har alla filer en ändelse till detegentliga filnamnet. Denna talar om vad det ärför slags fil och brukar skrivas efter en punkt.En fil foo.c kan innehålla källkoden till ett pro-gram skrivet i programspråket C, foo.exe va-ra den exekverbara binärfilen med programmet,foo.pdf en text (i formatet Portable DocumentFormat) som beskriver programmet, foo.htmlsamma text som HTML (Hypertext Markup Lan-guage), och så vidare. Ofta finns det en begräns-ning på hur lång filnamnsändelsen får vara. I syn-

1Sådana där uppfordrande filer README brukar dock fak-tiskt heta just så, med stora bokstäver, och är textfiler sombeskriver övriga filer i samma katalog.

nerhet kan gränsen vara tre tecken, vilket är för-klaringen till att man ibland kan se t. ex. HTML-filer vars namn slutar på .htm istället för .html.

Även i Unix-filsystem brukar man ge många fi-ler sådana namn, men en punkt är egentligen somvilket tecken som helst i filnamn, så ett filnamnkan innehålla ingen, en eller flera punkter, och detfinns ingen särskild begränsning på hur lång delenav namnet efter punkten får vara.

Genom att man ger filnamnen sådana ändelserär det lättare för såväl program som människor attförstå vad det är för slags filer utan att titta i dem.Några få av de vanligare filnamnsändelserna är:

txt Vanliga textfilerhtml Hypertext Markup Languagexml eXtensible Markup Languagetex Typsättningssystemet TEX

java Programspråket Javapl Programspråket Perlpy Programspråket Python

wav, ogg, mp3 Olika ljudformat

gif, png, jpg Olika bildformat

pdf Portable Document Formatodt Open Document Text

Körbara program brukar inte ha någon än-delse i Unix, så en kompilerad version av pro-grammet foo heter troligen bara foo (och intet. ex. foo.exe). Vanliga textfiler har ofta ändel-sen .txt.

Dolda filer

Många program skapar själva filer och katalogeri ens hemkatalog där de sparar sina inställningareller mellanresultat som det inte är tänkt att mannormalt ska behöva titta närmre på. För att maninte ska störas av dem i ens fillistningar så brukarde filerna vara dolda. Detta går i Unix till så attfilen eller katalogen har ett namn som börjar medpunkt (.). Filhanterare och andra program somlistar filer nämner normalt inte sådana filer ochdessa filer kan oftast ignoreras.

Filträdet

Nästan varje katalog är underkatalog till en annankatalog. I Unix är det bara en katalog som inteär det, så man kan tänka sig alla kataloger i etthierarkiskt träd där allt grenar ut sig från dennakatalog och där filerna är löv längst ut. Den kata-log som allt utgår från kallas för roten. Till skill-nad från riktiga träd tänker man sig att roten sit-ter högst upp och att trädet förgrenar sig nedåt,så underkatalogerna ligger alltså längre bort frånroten. I figur 1.3 visas en del av filträdet här.

5

Page 6: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

1. INLEDNING

/ (roten)

bin

cp ls mv

home

staff

starback

stp15 stp16

ellen

Desktop uppsala

slottet.jpg

konto.txt

kanske dinhemkatalog

x15 x16

kanske dinhemkatalog

local

kurs

ids

eulang.tsv verb.txt

usr

bin

firefox gnome-chess

Figur 1.3: I detta filträd är filer skrivna i fetstil. Allt annat är kataloger. Detta är förstås bara ett utdrag från det fullständigafilträdet. I varje katalog finns det många fler grenar som inte är utritade här.

Här är t. ex. hemkataloger för STP16 under-kataloger till en katalog stp16 som i sin tur ärunderkatalog till en katalog home som samlar allashemkataloger. Den i sin tur är underkatalog tillroten (/).

De studenter som inte går på programmen fåristället hemkataloger som är underkataloger tillen katalog x16 för externa studentkonton skapade2016, som även den är en underkatalog till home.

Fullständiga sökvägar

Man kan ange en fullständig sökväg (path) tillen fil eller katalog genom att ange katalog förkatalog hur man kan ta sig från roten till den-na plats i filträdet. Före varje led, inklusivedet första, skriver man ett snedstreck. Om enstudent på STP16 med användarnamnet »el-len« hade en underkatalog med namnet uppsalaoch i den lade filen slottet.jpg skulle alltså/home/stp16/ellen/uppsala/slottet.jpg va-ra den fullständiga sökvägen till denna fil och/home/stp16/ellen/uppsala vara den fullständigasökvägen till den katalog där denna fil ligger.

Bara en rot: I Unix använder man filsystem medbara en rot, oavsett hur många diskar som är an-slutna till datorn. I MS Windows använder manflera, som har bokstäver som namn. En fullständigsökväg börjar med den bokstaven följt av ett ko-lon, så det fullständiga namnet på en katalog därkan se ut som C:\WINDOWS\. Observera att där an-vänds bakstreck (\) medan Unix använder vanligtsnedstreck (/) som avgränsare mellan kataloger.

En sådan fullständig sökväg börjar alltid medett snedstreck. Den fullständiga sökvägen till rot-katalogen är bara ett tecken: /.

Det finns ett särskilt förkortat skrivsätt för ensegen hemkatalog, nämligen tecknet ~ (tilde). El-len skulle därför också kunna skriva

~/uppsala/slottet.jpgsom en fullständig sökväg till samma fil. Ovanstår det att fullständiga sökvägar alltid börjar medsnedstreck. Det gör i princip även denna sökvägeftersom ~ här bara är ett förkortat skrivsätt för/home/stp16/ellen.

Man kan även ange andras hemkataloger på ettförkortat sätt, nämligen med tilde följt av ett an-vändarnamn. Även andra användare kan alltså an-vända beteckningen ~ellen/uppsala/slottet.jpg för den där filen, och ~ellen för Ellens hem-katalog.

De flesta program som hanterar filnamn byterut ~ på detta sätt.

1.4 Grafisk filhantering

Det finns flera sätt att hantera filer i den grafiskamiljön, där ett är att öppna kataloger från menynPlaces . Därifrån kan man bland annat nå Home förens egen hemkatalog, och några speciella under-kataloger till den, som Documents och Downloads .För du muspekaren till övre vänstra hörnet dykerdet upp ett antal ikoner i vänsterkant, varav Filesär ett annat sätt.

Man kan också dubbelklicka på ikonen förhemkatalog på skrivbordet för att öppna den. Påskrivbordet visas även alla filer och kataloger somligger i ens katalog Desktop, så lägger man sa-ker där hamnar de egentligen i den katalogen

6

Page 7: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

1.5. Klipp och klistra

Desktop. Denna katalog Desktop är en under-katalog till ens hemkatalog.

1.5 Klipp och klistra

Klipp-och-klistra (cut and paste) är ett vanligt sättatt föra över text från ett ställe till ett annat. Medtiden har har tangenterna X, C och V blivit envanlig standard för detta (ursprungligen från Ap-ple Computer på 1980-talet). Här används des-sa tillsammans med Control-tangenten, dvs. Ctrl-X (cut), Ctrl-C (copy) och Ctrl-V (paste). (Atttrycka ner Control-tangenten tillsammans medt. ex. X betecknas ibland Ctrl+X ibland Ctrl-X,ibland bara C-x.)

Det finns även ett snabbare sätt att kopiera.Med mittknappen på musen, den som också ärscrollhjul, klistrar man in primary selection, vilketär den text man senast markerat. På det sättet kanman kopiera text utan att behöva använda vare sigtangentbord eller meny.

1.6 Textfiler

Med vanliga textfiler eller rena textfiler (plain text)avses enkla textfiler utan sådana finesser som va-rierande typsnitt eller inlagda bilder som en ord-behandlare kan klara av, utan med bara en räckabokstäver, siffror och en del andra tecken, uppde-lade i rader. Det saknas alltså dolda formatmarke-ringar så som finns i ordbehandlingsfiler.

När man skriver ett program är det alltid entextfil med ren text man skriver. Det går t. ex. in-te att skriva en del av programmet i kursiv stil ochdärmed få detta att betyda någonting särskilt, ut-an programmet består bara av en räcka bokstäver,siffror och interpunktion, uppdelade i rader. (Närman återger ett program på papper eller skärmså visar man det dock ofta med olika färger ellerolika stilar ändå.)

Olika ordbehandlare har oftast helt olika for-mat för hur sådana finesser ska kodas i filerna,så ett dokument skrivet i Microsoft Office ochett dokument skrivet i WordPerfect är helt olikakodade även om dokumenten ser likadana ut påpapper.

Trots det går det ofta att öppna ett ordbehand-lingsdokument i en helt annan ordbehandlare ef-tersom den har särskilda rutiner för att tolka ochkonvertera andra format.

Textfiler med ren text är däremot inte speciel-la för något särskilt program utan kan hanteras avalla program som gör något med text utan sådankonvertering. Det enda som kan skilja är vilkenteckenkodning som har använts, dvs. vilka nume-riska värden olika tecken kodats med. Om text-filen innehåller »exotiska« tecken som grekiskt π ,ryskt � eller för den delen de svenska bokstäverna

åäö kan detta ha olika koder i olika sammanhang,men så länge det är tecken som finns på ett vanligt(amerikanskt!) tangentbord så är det nästan alltidsamma koder överlag. Då kodas t. ex. tecknet »A«som 65 och tecknet »&« som 38. Teckenkodningaråterkommer vi till senare.

1.7 Editorer

Sådana rena textfiler skriver man inte med ord-behandlare utan med editorer. Ibland säger mantextredigerare och att redigera text, men med dendrastiskt välkomnande inställning som datorvärl-den oftast visar inför lån från engelskan är det van-ligare att tala om editorer och att editera text meddessa.

Editorer har ofta kraftfulla kommandon för atthjälpa till när man editerar olika slags textfiler, isynnerhet när man programmerar, genom att dekänner till syntaxen i olika programspråk.

I denna kurs kommer vi inte att använda ord-behandling, och de textfiler som du ska skriva härska istället skrivas med en editor. Om du vill an-vända en ordbehandlare på våra datorer så rekom-menderas annars LibreOffice.org som finns i me-nyerna.

Emacs

Den editor som vi använder här, Emacs, kan star-tas med Applications Accessories Emacs (men i lab-ben kommer vi att göra på ett annat sätt). Detfungerar bäst att öppna alla filer man editerar isamma Emacs istället för att avsluta den bara föratt man är klar med en viss editering. Det är unge-fär så som man normalt tittar på alla webbsidor isamma webbläsare och ofta inte avslutar den för-rän man är på väg att logga ut.

1.8 Filskydd

De flesta av dina filer kan läsas av vem som helst,men bara ändras eller tas bort av dig själv. Dukan själv ändra filskyddet för de filer och katalogerdu vill ha skyddade så att endast du själv kan lä-sa dem. (En del program skapar alltid sina filerskyddade. Det skulle till exempel ett chattpro-gram som sparar loggar över chatten göra, ävenom man normalt skapar filer som inte är lässkyd-dade.)

För varje fil och katalog talas om vilka rättighe-ter som gäller för tre kategorier användare:

• filägaren (u = user)• gruppen (g = group)• övriga (o = other)Varje fil har alltså en ägare och en grupp. Varje

användare har en egen personlig grupp som baraden användaren själv är med i, och detta är den

7

Page 8: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

1. INLEDNING

normala gruppen för dina filer. Det gör att grup-pens rättigheter normalt inte är intressanta, utannär du ändrar filskydd så är det framförallt för attgöra filer läsbara för alla eller bara för dig själv.Du kan t. ex. ha en särskild privat underkatalogsom är lässkyddad för andra.

Varje kategori kan ha rättighet att• r = läsa (read)• w = skriva (write)• x = köra (execute)Den exakta betydelsen skiljer sig åt en del för

filer och kataloger:• r = läsa en fil; lista innehållet i en katalog• w = ändra en fil; skapa och ta bort filer i ka-

talogen• x = köra ett program; komma åt filer i kata-

logenOm man vill att en fil ska kunna läsas av någ-

ra andra användare men inte av alla så är möjlig-heterna rätt begränsade. Då måste de användarnahöra till samma så kallade grupp och även den fi-len måste höra till samma grupp. Varje fil hör tillexakt en grupp. Användare kan vara med i fleragrupper, men det går inte att skapa nya gruppersjälv.

1.9 Kommandoraden

Det vanliga gränssnittet innan det grafiska gräns-snittet slog igenom var kommandoraden. Använ-daren skriver ett kommando på tangentbordetvarpå datorn utför kommandot och inväntar näs-ta kommando. Kommandona har en enkel syntaxsom oftast bygger på engelska. Det kan vara i stilmed PRINT FOO.TXT för att skriva ut en fil mednamnet FOO.TXT.

Även om grunden inte är svårare än så, så finnsdet luriga element i detta för den som inte är van,och vi kommer därför att ägna oss mycket åt dettai kursen.

Att arbeta med datorn på detta sätt kan oftaverka bökigt och föråldrat för den som är ovan,men det är det mest användbara för en del avan-cerad användning. Några fördelar är:

• Det är ofta kraftfullare.• Det är ofta effektivare (när man kan det).• Det är lättare att bevara en mängd instruk-

tioner så att man kan göra om samma saksenare, kanske med variationer, kanske auto-matiskt.

(Dessa fördelar kommer inte alls att vara up-penbara från början. Vi kommer att lösa uppgif-ter på detta sätt som många förmodligen lättarehade kunnat lösa på andra sätt.)

Terminalen

Kommandoraden är äldre än bildskärmen. Frånbörjan skrev man in sådana här kommandon på

Figur 1.4: En populär teleprinter på 1960-talet varASR33 som tillverkades av Teletype Corporation.

något som liknande en skrivmaskin eller teleprin-ter med en pappersremsa i. Om man gav ett kom-mando där man bad datorn om information såskrev den ut den på samma pappersremsa.

Ofta fanns det flera sådana »skrivmaskiner«kopplade till samma dator, och dessa kallades förterminaler.2 Senare kom terminaler med bildskär-mar istället för papper. Bildskärmen kunde baravisa text och visade hela tiden de sista raderna avlåtsaspapperet. Det är normalt bara det man är in-tresserad av ändå, för där står ju de senaste kom-mandona man givit och vilka svar man har fåttfrån dessa. Idag kan man köra ett särskilt termi-nalprogram i sitt fönstersystem som ger en sådanlåtsasterminal i ett fönster bland ens andra föns-ter.

Det kan hjälpa att ha detta i bakhuvudet närman ska förstå hur detta terminalfönster funge-rar. Tänk dig att det är (slutet av) en pappersrem-sa du ser. Det innebär t. ex. att den text som harskrivits där är oföränderlig. Om man ger ett kom-mando som får datorn att lista ens filer så ändrasinte den utskriften senare om man lägger till ellertar bort en fil. För att få en aktuell lista får mange kommandot igen. (Det som visas är en logg förens interaktion med datorn, lite som en logg ef-ter att man har chattat med en robot som lyderens kommandon.) Man kan bara skriva in kom-mandon längst ner, efter all text som redan finns ifönstret.

Skalet i Unix

Det program som tolkar och utför användarenstextkommandon kallas i Unix-världen för ett skal(shell). I princip är det enkelt:

• Skalet skriver ut en prompt, en kort text somvisar att det är berett att ta emot ett kom-mando.

2En terminal är ju någonting som är längst ut, och dessavar då ändpunkter medan datorn satt i mitten, kopplad tilldem alla.

8

Page 9: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

1.9. Kommandoraden

• Skalet ekar det användaren skriver, suddarnär man trycker på radertangenten osv.

• När användaren avslutar sitt kommando (ge-nom att trycka på returtangenten) utför ska-let kommandot, oftast genom att köra igångett visst annat program.

• Om detta resulterar i output så skrivs den ut.Ovanstående görs om och om igen.

Kommandon

Unixkommandon är ökända för att ha korta ochkryptiska namn. Några exempel:

• cat = (con)catenate• cd = change directory• cp = copy• ls = list• mkdir = make directory• mv = move• pwd = print working directory• rm = remove• rmdir = remove directory• tr = translate• wc = word count

Skälet till det är förstås att man inte ska behövaskriva så mycket.

Några av dessa kommandon ser du i filträdet ifigur 1.3 i katalogen /bin.

Kommandot ls listar t. ex. filer i en viss katalog.När man använder det kan det se ut så här:

$ lsbar.png foo foo.py kvack.png texts

Användaren har här bara skrivit ls och trycktpå retur. I denna katalog fanns det fem filer ochkataloger, och de listas i bokstavsordning.

Den text som användaren har skrivit ges medljusgrå bakgrund, så här, i dessa exempel. Använ-daren har t. ex. inte skrivit dollartecknet, utan detvar den prompt som skalet skrivit ut. (Oftast harman en längre prompt än så. Du kommer att haen prompt där även ditt användarnamn och nam-net på datorn står, i stil med ellen@verb$, men ialla kommande exempel antar vi ändå att promp-ten bara är ett dollartecken.)

Returtangenten: Returtangenten har oftast (ochså är det på våra tangentbord) en vinklad pil på sig,

. Den har kallats för carriage return (vagnretur)eller oftare bara return (retur). Den carriage/vagndet handlar om går tillbaka till skrivmaskiner påpapperstiden.

Ibland kallas tangenten även för Enter , som tan-genten med det namnet på den särskilda numeris-ka delen av tangentbordet. Dessa två tangenter haroftast samma effekt.

Argument till kommandon

Efter kommandonamnet kan det följa argument,åtskilda av mellanslag. Dessa talar om mer speci-fikt vad man vill använda ett kommando till. Oftaär det filnamn.

Man kan ge kommandot ls argument som talarom vilka filer eller vilka kataloger som ska listas.

$ ls kvack.png bar.pngbar.png kvack.png

Här har vi talat om precis vilka två filer vi villha listade.3 (De önskade filerna listas i bokstavs-ordning som förut, trots att argumenten listades ien annan ordning.)

Om ett argument till ls är namnet på en ka-talog så listas innehållet i den katalogen. Så omtexts ovan är en katalog med ett par textfiler iskulle man kunna få detta resultat:

$ ls textsetaoin.txt shrdlu.txt

För ls behandlas alla argument lika – den-na fil eller innehållet i denna katalog ska listas.För en del kommandon tolkas däremot första,andra, (tredje osv.) argumentet olika. Komman-dot cp foo.txt bar.txt betyder t. ex. att filenfoo.txt ska kopieras och att kopian ska ha detnya namnet bar.txt. Det första argumentet ärkällan och det andra är destinationen. Om manhade satt argumenten i omvänd ordning hade detbetytt något annat, och om man haft bara ett ar-gument skulle man ha fått ett felmeddelande.

3Detta är förstås rätt poänglöst att göra. Det verkar ju somom vi redan visste att dessa två filer fanns! Senare ska vi sehur man kan få ls att lista mer information om filerna, vilketskulle göra exemplet lite mer realistiskt.

9

Page 10: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 1: Inledning

Grafisk filhantering

Välj Places Home i menyerna för att ta fram ettfönster för din hemkatalog.

Ni har alla fått en fil konto.txt och un-derkataloger som heter Desktop, nobackupoch introduktion-till-datateknik. Den sist-nämnda är förstås specifik för just denna kurs, ochkallas i fortsättningen för kurskatalogen.

Dubbelklicka på kurskatalogen för att se påden underkatalogen. Olika slags filer visas på oli-ka sätt. Filhanteraren avgör hur genom att se påfilnamnsändelsen och genom att se på filernas in-nehåll. För en del filer visas (delar av) deras inne-håll, och för andra bara ikoner som visar vad förslags filer det är.

Genom att dubbelklicka på filerna så öppnasde. Vilka program som används för att öppna demberor på vad det är för filer. Genom att högerklickapå en fil får du upp en meny med olika saker dukan göra med filen.

Höger musknapp används oftast som en meny-knapp på detta sätt.

Uppgift 1.1 Vad heter det program som är sattatt vara det normala för att öppna bildfiler? Vadär det för versionsnummer på det att döma av vadHelp About i det programmet säger?

Uppgift 1.2 Ett av de andra programmen mankan öppna bildfiler med har ett namn som bestårav fyra ord. Det brukar oftare bara kallas för sinfyrbokstavsförkortning. Vad heter det program-met? (Förkortade namnet räcker.)

(Det är ett mycket ambitiöst ritprogram somdet är rätt jobbigt att komma in i, så kör det intenu, men prova gärna senare om du är nyfiken.)

Senare få du veta var du ska skriva dessa svar.Notera tillsvidare svaren på uppgiftsfrågorna försenare bruk.

Uppgift 1.3 I kurskatalogen finns även en ljudfilord.flac. Vad sägs det för ord i den?

För olika sorters filer händer det som synes oli-ka saker när du dubbelklickar dem. Filen run-meär t. ex. ett litet program. Det är en exekverbarbinärfil som körs när du aktiverar den.

Uppgift 1.4 Vad står det på knappen som pro-grammet run-me skapar när man kör det?

Uppgift 1.5 Ta bort filen should_not_be_herei kurskatalogen.

Uppgift 1.6 Skapa en ny underkatalog alicei kurskatalogen (New Folder). Flytta filer-na cheshire-cat.jpg, cheshire-cat.txt ochhow-doth.txt dit. (Allt detta är nämligen tagetfrån boken Alice i Underlandet).

Tänk på att det är skillnad på små och storabokstäver.

Det enklaste sättet att flytta en fil är med dragand drop. Tryck ner vänster musknapp när du pe-kar på filen och dra den sedan till önskad platsvarpå du släpper musknappen.

Öppna nu katalogen alice. Bland knapparsom står till höger om katalognamnet finns någ-ra knappar och genom att hålla muspekaren överdem får du se vad de gör. En beskrivs som Viewitems as a list. Välj den för att se fillistningen i etttextformat som ger mer information. Där visas fi-lens namn, storlek, typ, tidsstämpel för när densenast ändrades och filskydd.

Uppgift 1.7 Vilken information som visas kanändras med Visible Columns i en meny. Nämn någonav kolumnerna som kan läggas till där.

Uppgift 1.8 Filernas storlek mäts i bytes. Hurmånga bytes stor är filen how-doth.txt? Hur kandu ta reda på det i det andra sättet att se filerna,»View items as a grid of icons«?

Uppgift 1.9 En av filerna dikt-1.txt, dikt-2.txt och dikt-3.txt i kurskatalogen är skyddadså att andra inte kan läsa den. Vilken?

Uppgift 1.10 Ändra så att den inte längre är sär-skilt skyddad, utan får samma skydd som de övri-ga. Ändra också så att filen secret.txt bara kanläsas av dig, men är skrivskyddad för alla, till ochmed dig själv.

När du gjort detta riktigt visas det särskilt ifönstret att denna fil är skrivskyddad.

10

Page 11: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Emacs

Emacs

I din kurskatalog ligger en textfil med namnetfavourite-colour.txt. Det är en ren textfil(vilket man kan gissa av filnamnsändelsen .txt).Dubbelklicka på den i filhanteraren för att öppnaden med editorn Emacs.

Förutom textinnehållet i filen visar Emacs äveninformation som du kan ta bort med »Dismiss thisstartup screen«. I det fönster du får upp finns detplats för att skriva 80 tecken per rad vilket är van-lig bredd för textfiler. Gör gärna fönstret högre,men maximera det inte.

Uppgift 1.11 Vad står det i den filen?

I kurskatalogen ligger också en fil exempel.txt.Ta tag i den och släpp den i Emacs-fönstret meddrag and drop. (Ändra vid behov storlekar så attdu ser dessa två fönster samtidigt, sida vid sida.)Detta är ett sätt att öppna en till fil när du redanhar en Emacs igång. Den förra filen finns även denfortfarande öppnad i denna Emacs även om deninte syns just nu.

De olika texterna som man har aktiva i Emacsligger i varsin buffert och i Emacs-menyn Bufferskan du välja mellan dessa. Gå på detta sätt tillbakatill favourite-colour.txt igen.

Du ska editera den, så förflytta dig i textbuf-ferten med piltangenterna och spara med knap-pen när du är klar. (Avsluta däremot inte den-na Emacs förrän du är klar för idag!)

Uppgift 1.12 Ändra i favourite-colour.txtså att den stämmer för dig!

På knappraden i Emacs finns det bland annatandra knappar för att öppna nya och existerandefiler.

Uppgift 1.13 Öppna på detta sätt en ny filfavourite-number.txt i kurskatalogen och skrivdär ditt favorittal.

Glöm inte att spara filen!

Det finns även en knapp för att öppna en kata-log. Öppna underkatalogen alice på detta sätt.

Du får då upp en fillistning i text som liknar endu fick med filhanteraren förut.

Uppgift 1.14 Nu finns det flera extra menyer iEmacs mellan Tools och Help . Vad heter dessa?

Öppna cheshire-cat.txt i denna listning.Det är ett utdrag ur Alice i Underlandet, fast någrastavfel har smugit sig in.

Uppgift 1.15 Använd kommandot Tools

Spell Checking Spell-Check Buffer för att hitta ochrätta stavfelen. Det blir flera förslag på rättelseroch man får skriva en siffra för att ange vilketrättningsförslag man vill använda. Hur många felhittades?

Glöm inte att spara den rättade filen!Gå tillbaka till bufferten alice med fillistning-

en och flytta med hjälp av piltangenterna mar-kören till raden med cheshire-cat.jpg. VäljOperate Copy to i menyerna och kopiera den fi-len till katalogen Desktop. Kolla att den därmedhar hamnat på ditt skrivbord.

Klipp-och-klistra

Uppgift 1.16 Öppna filen dodo.txt i kurskata-logen i Emacs. Se slutet av avsnitt 1.5 på s. 7 omdet snabbare sättet att kopiera text och använddet för att kopiera hit text på rätt ställen enligtvad som står i filen.

Om du råkar göra nåt fel, t. ex. klistrar in fel texteller text på fel ställe, så kan du ångra dig medknappen i Emacs.

Glöm inte att spara filen efteråt!

Svarsfilen

Skriv en ny fil ids1.txt i kurskatalogen (medEmacs) där du skriver in svaren på dessa uppgif-ter. (En del uppgifter kräver dock inga svar, utanär bara av formen »gör si och så«, i stil med upp-gift 1.16.)

Se noga till att den filen hamnar i rätt katalogoch heter precis som den ska!

Det kan underlätta att klipp-och-klistra en delsvar så att du inte behöver skriva av text. Användsom vanligt menyn Buffers för att växla vad du tit-tar på när du kopierar från en buffert till en an-nan.

Fler buffertar

Som du kanske märkt finns det fler buffer-tar i Buffers -menyn, och ett kommando Buffers

List All Buffers som listar alla buffertar. Alla buf-fertar hänger inte ihop med någon fil.

Uppgift 1.17 Det finns en buffert som heter*scratch* till exempel. Vad står det i den?

Uppgift 1.18 Det finns andra buffertar som harnamn som börjar och slutar med stjärna. En harett namn som börjar med *M. Vad heter den ochvad verkar den användas till?

11

Page 12: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 1: INLEDNING

Terminalen och skalet

Skapa ett terminalfönster genom att föra mus-pekaren till övre vänstra hörnet och klicka påsymbolen kallad »Terminal« i vänstra kanten.

Även i detta fönster finns det plats för 80 tec-ken per rad. (Gör gärna även detta fönster hög-re.) Lägg terminalfönstret och Emacs sida vid sidaså att båda syns samtidigt, så att du kan fortsättaskriva in svar i ids1.txt medan du även ser ter-minalfönstret.

Uppgift 1.19 Exakt hur lyder den prompt dufått av skalet?

I terminalfönstret ska du skriva in textkom-mandon. Som första kommando, skriv ls , somstår för list, och tryck på retur.

Med detta kommando får du ut en lista övervilka filer och kataloger du har i din hemkatalog.Resultatet skrivs ut i samma terminalfönster somdär du skrev in kommandot.

Man kan ge namnet på en katalog som argu-ment till ls för att lista filerna i den katalogenistället.

Här kan man använda komplettering med TAB-tangenten, när det bara finns en möjlig fortsätt-ning. Skriv bara »ls in« och tryck sedan på TAB .Du bör få fram

$ ls introduktion-till-datateknik/

Tryck på retur för att utföra kommandot. Nulistar du alltså istället filerna i den katalogen. Gesen kommandot

$ cd introduktion-till-datateknik/

(Använd komplettering igen!) Detta kommandogav inget resultat. Det är inte alla kommandonsom ger något resultat som skrivs ut på skärmen,utan en del bara gör något utan att säga något omdet. Detta har ändrat aktuell katalog till din kata-log introduktion-till-datateknik, så nu ut-förs normalt kommandon i den katalogen istället.

Så om du nu ger kommandot ls igen så blirdet filerna i denna katalog som listas.

Uppgift 1.20 Vad är cd förkortning för enligtdetta kompendium?

Uppgift 1.21 Ge kommandot ls /home för attlista vad som finns i katalogen /home. Vad gav detför resultat?

Uppgift 1.22 Om du utan att byta aktuell kata-log nu vill lista innehållet i din hemkatalog, vadkan du ge för kommando då? (Använd en särskildbeteckning för din hemkatalog i svaret.)

Uppgift 1.23 Vad gav det för resultat?

Uppgift 1.24 Och om du vill lista innehållet iEllens hemkatalog hur gör du då? (Du skulle kun-na skriva ls /home/stp16/ellen , men använden kortare beteckning för hennes hemkatalog.)

Uppgift 1.25 Vad gav det för resultat?

I din kurskatalog finns en fil som heter stp.txt.Med kommandot

$ cat stp.txt

kan du skriva ut dess innehåll i terminalfönstret.(Använd TAB för komplettering, även när det inteär så långa filnamn. Då får du bekräftelse på attdet verkligen finns en fil som heter så.)

Den texten har ganska korta rader. Det finns ettkommando fmt med vilket man kan formatteraom en text så att den får lagom långa rader. Prova

$ fmt stp.txt

Uppgift 1.26 Vad blev det för output från det-ta? (Använd klipp-och-klistra!)

Kommandot grep kan du ge två argument.Först en text och sedan ett filnamn, och komman-dot visar då alla rader i filen som innehåller dentexten. Prova med

$ grep dator stp.txt

Uppgift 1.27 Vad gav det för resultat?

Första argumentet till grep, här »arbete«, är ettexempel på att argument till kommandon kan va-ra annat än fil- och katalognamn. Men det är ba-ra fil- och katalognamn som du får kompletteringpå! (Skalet kunde inte ana att det var just »arbete«vi ville söka efter.)

Prova härnäst de två kommandona date ochdate -u .

Uppgift 1.28 Hur löd resultaten?

12

Page 13: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Diverse på slutet

Uppgift 1.29 Det står olika förkortningar i debåda svaren. Vad betyder dessa? (Sök på nätet omdu inte vet!)

Uppgift 1.30 Vilken effekt verkar det där -uha?

Genom att hänga på > och ett filnamn i slutetav ett kommando så kan man spara resultatet i enfil istället för att få ut det i terminalfönstret.

Uppgift 1.31 Gör$ grep dator stp.txt >arbete.txt

Märk att du inte ser någon output alls. Öppnasedan den nyskapade filen arbete.txt i Emacs.Hur många rader är det i den?

Uppgift 1.32 Det finns ett kommando seq somger en sekvens med tal. Använd det kommandotmed argumentet 12 och visa vad du får för resul-tat då.

Om du istället använder argumentet123456789 (prova!) så har du knappast tidatt vänta på att kommandot ska köra klart. Isådana lägen kan man avbryta med Control-C,dvs. genom att trycka in Ctrl och C samtidigt.Gör så!

Ge ett skalkommando som sparar alla tal från 1till 100 i en fil 100.txt i din kurskatalog. (Dennafil ska inte skapas innan du ger kommandot, utandu gör i stil med hur arbete.txt skapades ovan.)

Uppgift 1.33 Hur löd ditt kommando?

Uppgift 1.34 Ge ett kommando som talar omvilka av raderna i den filen 100.txt som innehål-ler (minst) en 8:a. Visa både ditt kommando ochdess resultat.

Öppna i Emacs en ny fil i din kurskatalog mednamnet ett ord.txt . Skriv ett valfritt ord i denoch spara.

Uppgift 1.35 Vad blir det för resultat om du gerkommandot cat ett ord.txt för att se innehål-let i den filen från skalet?

Uppgift 1.36 Men om man skriver cat ettoch sen trycker på TAB för komplettering, vadhänder då?

Uppgift 1.37 På s. 5 står att man brukar undvikafilnamn med mellanslag i för filer som man skahantera med kommandoraden. Hur kommer detsig?

Diverse på slutet

Uppgift 1.38 Kolla i filhanteraren vad din kata-log Desktop har för skydd. Får andra användare sevad du har för filer och kataloger på ditt skrivbordeller inte?

(Passa gärna på att ändra om du vill.)

Uppgift 1.39 När man editerar en fil i Emacsså sparar den en backupfil med det gamla inne-hållet för säkerhets skull. Medan du har labbathar den därför skapat backupfiler av i alla fallfavourite-colour.txt och dodo.txt åt dig. Attdöma av vad du har för filer i den katalogen nu,hur skapar Emacs namnen på dessa backupfiler?(Filhanteraren visar normalt inte dessa backupfi-ler, så se efter med ls eller genom att öppna ka-talogen i Emacs istället.)

(I filhanteraren räknas backuperna som doldafiler, och det finns ett menyval Show Hidden Files

som styr både om dessa och filer med namn sombörjar med punkt ska visas.

Efteråt

Låt kurskatalogen ligga kvar som den är efter lab-ben så att jag lätt kan kontrollera att ni utfört upp-gifterna! Dessutom kommer ni att behöva dessafiler i senare labbar också.

Hela din kurskatalog är skyddad för läsning förandra, men just i denna katalog kommer jag atttitta ändå (med mina administratörsrättigheter).

Jag skickar kommentarer med mail. Läs den re-gelbundet, och om du får frågor som har medinlupparna att göra så svara på dem!

Till nästa gång

Titta igenom hela detta kapitel för att se om detvar något Per missade att ta upp idag eller om nå-got är oklart.

13

Page 14: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger
Page 15: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 2

Skalet och Emacs

2.1 Skalet

2.1.1 Argument

Förra gången provade ni ls, cd, cat, date,fmt och grep, och ytterligare några kommandonnämndes i avsnitt 1.9 på s. 9.

Kommandon börjar alltså med ett kommando-ord som t. ex. cd, date eller grep och efter detkan det följa ett eller flera argument (även kallatoperander), åtskilda av mellanslag.

Skalet ger komplettering av sådana argumentsom är namn på filer och kataloger med TAB-tangenten.

Så i ett kommando

$ grep Explain wonderland.txt'Explain yourself!'

'Explain all that,' said the Mock Turtle.

är kommandoordet grep och det har två argu-ment. Det första argumentet är Explain och detandra är wonderland.txt. Detta skriver ut allarader i filen wonderland.txt som innehåller tex-ten »Explain«.

Eftersom mellanslag skiljer argumenten åt be-höver man göra något särskilt när mellanslag in-går i argumenten. Ett sätt är att hålla ihop sådanaargument med citattecken.

Bourne (Again) Shell: Skalet är ett program detockså. Det ursprungliga skalet i Unix skrevs av enSteve Bourne på Bell Labs och hette sh (kort förshell). Senare skrevs en del alternativa skal, ochdet ursprungliga skalet kallas ibland för the Bourneshell för att skilja det från alternativen.

Det skal som är skrivet särskilt för GNU ochsom liknar Bourne shell har därför det skämtsam-ma namnet Bourne Again Shell, vilket förkortasbash.

$ grep 'vanished completely' wonderland.txtthe little door, had vanished completely.

Här är det första argumentet en frasmed två ord. (Det finns visst bara en radi wonderland.txt som innehåller texten»vanished completely«.) Man kan användaenkla ('vanished completely') eller dubbla("vanished completely") citattecken. Sammametod kan användas för argument som är filnamnnär man har filnamn med mellanslag. Ett annatsätt att hantera argument med mellanslag såg nii uppgift 1.36. Ett speciellt tecken skrivs förevarje mellanslag (eller annat tecken som behöverhanteras särskilt).

2.1.2 Aktuell katalog

I skalet har man hela tiden en aktuell katalog ellerarbetskatalog (working directory). Om man t. ex.ger kommandot ls (utan argument) så listar denfilerna där. I exemplet ovan låg filen wonderland.txt i ens aktuella katalog (annars hade man fåttett felmeddelande). Med cd kan man byta vilkenens aktuella katalog är och med pwd kan man skri-va ut vilken katalog som är den aktuella (printworking directory).

Om man ger cd utan något argument så gårman till sin hemkatalog. Om man ger cd med detspeciella argumentet .. (två punkter) så går manupp en katalog, dvs. till aktuell katalogs förälder.

2.1.3 Jokrar: * ? []

När man ger filnamn som argument till komman-don behöver man inte alltid ange hela exakta fil-namn, utan man kan ofta använda jokrar (wildcards) i namnet och därmed matcha ett eller flerafilnamn.

Med * matchas godtyckligt antal tecken ochmed ? matchas exakt ett godtyckligt tecken.

15

Page 16: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

2. SKALET OCH EMACS

$ ls *.pngbar.png kvack.png$ ls f?ofoo$ ls foo*foo foo.py$ ls *a*bar.png kvack.png

I det sista fallet listas alla filer som har ett a isitt namn. Observera att »godtyckligt antal tec-ken« kan vara noll tecken, så att foo* matcharäven filnamnet foo utan nånting efter.

Man kan också sätta tecken inom [] för attmatcha något av dessa tecken. Så foo[abcd] mat-char en fil som heter fooa, foob, fooc eller food,men däremot inte en som heter fool. Det gårockså att skriva foo[a-d] med samma betydelse.Med [3-6] matchar man någon av siffrorna 3, 4,5 eller 6 och [0-9] matchar en godtycklig siffra.

2.1.4 Väljare (options)

Väljare (optioner, flaggor) kan ange hur ett kom-mando ska utföras. De ges som vanliga argument,men har namn som börjar med bindestreck (-).

Kommandot grep har t. ex. en väljare -i sombetyder att den inte ska skilja på små och storabokstäver, och en annan väljare -c som betyderatt den bara ska tala om hur många rader den hit-tade.

$ grep fonetik stp.txtutgångspunkter. Delområden som fonetik,$ grep -i fonetik stp.txtutgångspunkter. Delområden som fonetik,särskilt viktiga. Fonetiken ochuttryckssida. Fonetiken undersöker hur$ grep -c fonetik stp.txt1$ grep -c -i fonetik stp.txt3

I det sista fallen används båda dessa väljare sam-tidigt.

Olika kommandon har olika väljare, så dessaväljare är specifika för kommandot grep. I upp-gift 1.30 såg du som exempel att kommandotdate (som talar om vad klockan är), har en väl-jare -u. Den väljaren är på samma sätt specifikbara för kommandot date.

Väljaren -l till ls ger en lång fillistning somtar med inte bara filnamnet, utan även bland an-nat filens skydd, ägare, storlek och när den senaständrades. (Det är ett litet L och inte en siffra 1!)

Att kombinera väljare

När man ska ange flera väljare till samma kom-mando så är det bara att lista dem allihop ef-ter varann. Oftast kan man kombinera flera kor-ta väljare och skriva bara t. ex. -abc istället för-a -b -c.

Exemplet med grep -c -i ovan skulle alltsåha kunnat skrivas grep -ci istället.

Väljare med argument

Många väljare är som de ovanstående i att de ta-lar om ifall något ska vara avstängt eller påslaget –det finns bara två möjligheter. Sådana väljare kal-las också för flaggor. Man tänker sig att en flaggaär hissad eller inte hissad. Med en blandning avmetaforer talar man ändå ofta om att slå på ochslå av sådana flaggor.

För andra väljare finns det fler alternativ än ba-ra två, och man ger själva väljaren ett argumentdirekt efter väljaren.

Kommandot date har en väljare -d med vilkenman talar om vilken tidpunkt som ska anges istäl-let för den nuvarande. Man kan ange denna tid-punkt i en mängd olika format och date angerden på samma format som vanligt.

$ date -d 1912-06-23Sun Jun 23 00:00:00 CET 1912$ date -d '11:51:31 September 21, 1976'Tue Sep 21 11:51:31 CET 1976

Observera citattecknen i det sista exemplet föratt »hålla ihop« argumentet till väljaren -d. Utandessa skulle det argumentet till väljaren bara bli»11:51:31« och date skulle få tre ytterligare ar-gument: »September«, »21,« och »1976« som detinte skulle veta hur det skulle hantera.

2.1.5 När det blir fel

Om man ger ett felaktigt kommando kan man fåett felmeddelande. Här är ett exempel:

$ ls -yls: invalid option -- 'y'Try 'ls --help' for more information.

Först i dessa meddelanden står alltid vem (vad)det är som klagar. I detta fall är det »ls« som kla-gar. (Det är inte så överraskande eftersom det ärkommandot ls vi har kört.)

Efter ett kolon kommer så själva klaget, i det-ta fall att y var en ogiltig väljare. Det finns ingenväljare -y till ls.

16

Page 17: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

2.1. Skalet

Här är några till exempel:

$ cpcp: missing file operandTry 'cp --help' for more information.$ date -ddate: option requires an argument -- 'd'Try 'date --help' for more information.$ date -d christmasdate: invalid date ‘christmas’$ cta exempel.txtbash: cta: command not found

Observera i det sista fallet att det är bash självt(skalet) som rapporterar ett fel. (Här hade använ-daren antagligen tänkt skriva cat istället för cta.Det finns inget kommando som heter cta.) Mär-ker man inte vilket program som rapporterar feletså kan det ofta bidra till att man inte förstår varfördet blev fel.

2.1.6 Omdirigering (>)

När ett kommando ger ifrån sig output lämnasden vidare till skalet som normalt skriver ut den iterminalfönstret. Man kan dock tala om för skaletatt det ska spara denna output nån annanstans.

Om man vill spara undan resultatet av ett kom-mando i en fil så gör man det genom att skri-va >〈filnamn〉 på slutet av kommandoraden, t. ex.ls Desktop >fil-lista för att spara en listamed filerna i en viss katalog i en ny fil fil-lista.Här ska man inte tänka på tecknet som större-än,utan som en pil. Ni använde detta i uppgift 1.31.

Det extra påhänget är alltså inte ett till argu-ment till ls. Programmet ls vet här bara om attdet ska utföra ls Desktop , och det är skalet somsedan gör något annorlunda med den output somdetta ger ifrån sig.

Det enskilda programmet man kör, som ls idetta fall, skriver ut sin output till en lite ospe-cificerad mottagare som kallas för standard out-put, utan att veta vart detta kommer att hamna,och med > styr man om vart standard output skahamna. Detta kallas för omdirigering (redirection).

2.1.7 Filhantering i skalet

ls – Lista filer

Med ls listar man filer. Argumenten ska vara defiler och kataloger som man vill lista. Om man in-te ger några argument alls så listas aktuell katalog.

Ett par vanliga väljare till ls är -l (lilla L) somger en lång listning med mer information och -asom listar alla filer, inklusive de dolda.

cp – Kopiera filer

Kopiera filer görs med kommandot cp som måsteha minst två argument. Det kan användas på tvåsätt. Det första är cp SOURCE DEST för att kopi-era det som har namnet SOURCE till att ha nam-net DEST också, t. ex. cp foo.txt bar.txt .Här ska alltså foo.txt vara en fil som redan finns,medan bar.txt kommer att skapas av komman-dot. (Om den redan fanns kommer det gamla in-nehållet att skrivas över!)

Det andra sättet kan ha två eller fler argu-ment där det sista argumentet är namnet på enexisterande katalog. Då kommer alla de tidiga-re argumenten att kopieras till denna katalog(och kommer att där ha samma namn). Exempel:cp foo.txt bar.txt Desktop . Detta kopierartvå filer som redan finns till ens katalog Desktop.Efteråt kommer de nya filerna Desktop/foo.txtoch Desktop/bar.txt att finnas.

mv – Flytta filer

Filer flyttas med mv. Det tar emot samma slagsargument som cp, så även det kan användas påtvå olika sätt, och beter sig likadant som cp för-utom att filerna inte ligger kvar med sina gam-la namn också. I den andra användningen därdet sista argumentet är en katalog så flyttar manfiler från en katalog till en annan. I det förs-ta fallet så byter man snarare namn på en fil(mv foo.txt bar.txt). Observera alltså att flyt-ta filer och att byta namn på filer görs med sammakommando!

rm – Ta bort filer

Med rm tar man bort filer. Observera att dessa filertas bort helt och hållet. Detta skiljer sig från detgrafiska gränssnittets borttagning av filer som läg-ger det man tar bort i en papperskorg som mankan rädda tillbaka filer från tills papperskorgentöms.

mkdir och rmdir – Skapa och ta bort kataloger

Med mkdir skapar man en katalog och med rmdirtar man bort en. Båda dessa kommandon tar ettargument. För att man ska kunna ta bort en kata-log måste den vara tom.

2.1.8 Texthantering i skalet

cat – Visa filer

Med cat visar man filers innehåll. Argumentenska vara ett antal filnamn och cat skriver ut al-la deras innehåll. Om man ger flera argument såvisas alla filerna direkt efter varandra, ihopslagna,och det är därför kommandot heter »cat« som i»concatenate«.

17

Page 18: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

2. SKALET OCH EMACS

head – Början

Kommandot head fungerar ungefär som cat för-utom att det bara tar med de tio första raderna avvarje fil. Med en väljare -n kan man tala om hurmånga av de första raderna man vill se (istället förtio), t. ex.

$ head -n 2 foo.txt

för att skriva ut de två första raderna av foo.txt.

tail – Slutet

Kommandot tail är som head förutom att detskriver ut slutet istället för början. Även till detkan man ge en väljare -n.

grep – Sök

Kommandot grep söker efter en text (dess förstaargument) i ett antal filer (alla ytterligare argu-ment) och skriver ut alla rader i de filerna sominnehåller den texten.

Vi kommer senare att se hur man kan göra meravancerade textsökningar med grep.

wc – Räkna

wc står för »word count« och kan användas till atträkna antal ord i en fil, men det kan också räk-na annat. Det finns väljare som anger vad det skaräkna, som -w för ord och -l för rader.

$ wc -w stp.txt238 stp.txt$ wc -l s*.txt

1 secret.txt56 stp.txt57 total

Så här tog vi först reda på att stp.txt innehål-ler 238 ord och sedan hur många rader det finns ien mängd filer, med användning av joker.

fmt – Formattera

Kommandot fmt för att formattera om en textträffade vi på förra gången. Det finns en väljare -wsom man kan ge ett argument som anger hur bre-da raderna får bli.

2.2 Emacs

Man kan göra saker med texten på flera olika sätt iEmacs. I de förra uppgifterna fick ni dels användaknapparna under menyerna, dels menyerna.

Dessutom finns det kortkommandon till mångafler kommandon.

2.2.1 Namn på tangenter

I Emacs används korta beteckningar på tangent-tryckningar. Om man ska trycka på Ctrl och fsamtidigt så betecknas detta inte Ctrl-f utan medbara C-f. Förutom C- för Control finns även bl. a.M- för Meta. Där första versionen av Emacs skrevshade man nämligen tangentbord med särskildaMeta-tangenter. Det har inte vi, och då är det Alt-tangenten som fungerar som Meta-tangent. BådeC- och M- betyder att man ska trycka in Ctrl- re-spektive Meta-tangenten (Alt) tillsammans meddet tecken som följer.

De kan kombineras också, så C-M-/ betyderCtrl och Alt tillsammans med /. (Och eftersomsnedstrecket i sin tur kräver skifttangenten blirdet totalt fyra tangenter nedtryckta samtidigt!)

En del andra tangenter har speciella trebok-stavsbeteckningar som t. ex. SPC för mellanslag.Andra har (ofta längre) beteckningar inom <>.Några sådana namn visas i tabell 2.1. Observeraatt de inte alltid är identiska med vad som faktisktstår på våra tangentbord, i synnerhet att DEL inteär den tangent som det står »Delete« på, utan van-liga tangenten för att sudda ett tecken. (Den kal-las också för <backspace>.) Även dessa kan kom-bineras med C- och M-, så om det står att man skatrycka t. ex. C-SPC så betyder det alltså Control-tillsammans-med-mellanslag och <M-left> bety-der Alt-tillsammans-med-vänsterpil.

Dessa namn på tangenterna används bland an-nat till höger i menyerna, där man kan se hur mankan ge samma kommandon från tangentbordet.

2.2.2 Tangentsekvenser

Kortkommandon kan vara flera steg långa. För attöppna en fil kan man t. ex. använda C-x C-f , dvs.först C-x och sen C-f .

Bara C-x ensamt gör ingenting, utan det väntarbara in en fortsättning. Det finns flera sådana pre-fixtangenter som inleder sekvenser av flera tryck-ningar, och C-x är en av de vanligaste.

Emacs: Den första editorn med namnet Emacsskrevs redan på 1970-talet av Richard M. Stallmanpå MIT (Massachusetts Institute of Technology).

Den nuvarande, GNU Emacs, är skriven sär-skilt för GNU, och påbörjades av samme Stallman1984, som ett av de första GNU-programmen. Se-dan dess har den kommit många versioner. Densenaste, version 24.5, släpptes i april 2015.

18

Page 19: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

2.2. Emacs

Tabell 2.1: Beteckningar på några tangenter i Emacs.

Beteckning Beskrivning

C- Control. Ctrl-M- Meta. Alt- (hos oss)DEL SuddtangentenESC Esc = EscapeRET ReturtangentenSPC Mellanslag (SPaCe)TAB Tab-tangenten<left> vänsterpil<right> högerpil<up> uppåtpil<down> neråtpil<prior> Page Up<next> Page Down<f1> F1 (i översta raden)<f2> F2 (och så vidare)<kp-1> 1 på numeriska tangentbordet<kp-2> osv (kp = keypad)

2.2.3 Buffertar

I samma Emacs kan man editera flera olika filer.Dessa visas då i varsin buffert (buffer på engels-ka) och man kan växla mellan olika buffertar ochäven visa flera buffertar samtidigt. Alla buffertarmotsvarar inte en fil, utan det kan också vara entext som bara finns inne i Emacs. Så är det medden särskilda slaskbufferten *scratch*. Användinte den för något som du har tänkt spara, utanöppna en ny fil för sånt!

Ett sätt att byta buffert är att använda menynBuffers . Ett annat är med C-x b .

2.2.4 Fönster, ramar

Vid övningen med stavningskontroll förra vec-kan visades ersättningsförslag i en egen ruta iEmacs. Sådana »rutor« kallas för fönster (windows)i Emacs.

I figur 2.1 finns ett annat exempel på där Emacsvisar två buffertar samtidigt i varsitt fönster.

Med C-x 1 tar man bort alla andra fönster ändet man just då är i och med C-x 2 klyver manaktuellt fönster till två. Med C-x o byter manfönster.

Terminologin kan vara förvirrande eftersom alltdetta tillsammans är bara ett fönster i fönstersyste-met. Det går även att låta samma Emacs användasig av flera fönster i fönstersystemet. Dessa kallasdå ramar (frames) i Emacs. Som det är uppsatthär kommer ni få en ny ram varje gång ni väljeratt editera en fil i filhanteraren.

Figur 2.1: En Emacs med två stora fönster som visarvarsin buffert samt en aktiv minibuffert.

2.2.5 Informationsrad, minibuffert,ekoarea

Den mörkare raden under buffertens innehåll kal-las mode line eller informationsrad. Den innehålleren mängd information om den bufferten, blandannat vad den heter och vilken mode (vilket läge,vilken arbetsmiljö) Emacs befinner sig i.

Ibland får man i Emacs skriva in filnamn ochannat i den särskilda minibufferten längst ner iEmacs. Den har till skillnad från andra buffertaringen informationsrad. Om man ger C-x C-f föratt öppna en fil är det till exempel där man fårskriva in namnet på den fil man vill öppna.

På samma ställe, längst ner, skrivs även diver-se meddelanden från Emacs ut. Detta kallas dåför ekoarean. Dessa meddelanden sparas även i ensärskild buffert *Messages*.

2.2.6 Att förflytta sig

I början är det oftast enklast att använda piltan-genterna för att förflytta sig i texten. Tillsammansmed Control eller Meta går de hela ord eller styc-ken i taget. För att förflytta en sida i taget kan mananvända <prior> och <next> (Page Up och PageDown).

Vana användbara brukar föredra att använda endel kommandon i tabell 2.2 eftersom de tangen-terna ligger närmare till hands medan man skrivertext.

2.2.7 Bryta och ångra

Med ångerknappen kan man ångra inte baradet allra senaste man gjorde, utan man kan ångrasig långt tillbaks i tiden om man kommer på attman gjort hel fel. Det är bara att göra det om och

19

Page 20: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

2. SKALET OCH EMACS

Tabell 2.2: En del kommandon för förflyttning

C-f framåt ett tecken (forward)C-b bakåt ett tecken (backward)C-p upp en rad (up)C-n ner en rad (down)

M-f framåt ett ordM-b bakåt ett ord

C-v framåt en sidaM-v bakåt en sida

C-a till början av radenC-e till slutet av raden

M-< till början av buffertenM-> till slutet av bufferten

om igen i en buffert tills man har tagit tillbaka alltsom blev fel där.

Det är ett av de kommandon som man harstörst nytta av att kunna kortkommandot för såatt man snabbt kan rätta till skrivfel medan manfortfarande har fingrarna kvar på tangentbordet.Kortkommandot är C-_ dvs. Ctrl tillsammansmed understreck. (Eftersom understreck kräverskift så blir det totalt tre tangenter som trycks nersamtidigt.)

Ett påbörjat kommando kan avbrytas med C-g .Om man t. ex. har tryckt C-x C-f för att öppnaen fil men sen har ångrat sig kan man trycka påC-g istället för att ge ett filnamn. Man kan ocksåtrycka C-g efter ett halvskrivet kommando, t. ex.om man bara hann skriva C-x innan man ångradesig. Man kan också använda det för att avbrytaEmacs om den tar lång tid på sig att slutföra någotkomplicerat kommando.

Om man har hamnat i nån konstig situation iEmacs som man inte vet hur man ska ta sig urkan man använda ESC ESC ESC för att ta sig ur.(Tre ESC efter varann.) Exakt vad det gör beror påvad man håller på med i Emacs.

2.2.8 Backuper

När man har ändrat i en fil så sparar Emacs dengamla versionen i en backupfil som får ett namnsom slutar med tilde (~), t. ex. exempel.txt~eller README~. (Filhanteraren visar normalt intedessa filer.)

Emacs sparar också filer som har namn sombörjar och slutar med tecknet # (ofta kallat num-mertecken). Detta är autosparfiler som sparas dåoch då medan man editerar en fil och sedan tasbort när man har sparat filen. Det ger ett sätt attfå tillbaka det man gjort om t. ex. det blir ström-avbrott innan man har sparat sina ändringar.

2.2.9 Klipp-och-klistra

Emacs kommer från en annan tradition än pro-gram ni förmodligen är vana vid och har sina egnatangenter för sådant. (Det går dock att ställa om,och i labben ska vi se hur.)

• C-w cut, klippa ut• M-w copy, kopiera• C-y paste, klistra in (y = yank)

Det finns även andra kommandon för att tabort text, t. ex. för att ta bort rader (C-k) el-ler ord (M-d framåt, M-DEL bakåt). Dessa kom-mandon har namn som börjar med kill (t. ex.kill-region för C-w). All text som man »dödar«med sådana kommandon hamnar i urklipp så attde kan klistras in.

Emacs sparar många gamla texter som man»dödat«. I en meny Edit Paste from Kill Menu finnsflera såna gamla urklipp att välja från. Från tan-gentbordet börjar man med C-y och trycker senomedelbart efter M-y vilket byter ut den inklist-rade texten mot nåt man dödade tidigare. Om detfortfarande är fel repeterar man M-y tills man fåttfram den text man ville ha.

2.2.10 Punkten och regionen

Glöm inte snabbsättet att kopiera text i Unix somvi tog upp förra gången! Man bara markerar entext och klistrar sen in den med mittknappen.

Den markerade texten kallas i Emacs även re-gionen, och det finns flera kommandon som görsaker med denna region.

I ena änden av regionen finns alltid punkten(point), som i Emacs är namnet på det ställe därden blinkande markören befinner sig. I den andraänden finns ett så kallat märke. Ett sätt att marke-ra text utan att använda musen är genom att sättaett märke där man är med C-SPC och sen flyttasig en bit.

20

Page 21: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 2: Skalet och Emacs

Redovisning

Skriv svaren i en textfil i Emacs och skicka den [email protected]. Om det är någotdu inte klarar, så skicka ändå det du har!

Se till att du har utfört de övriga uppgifter somstår mellan frågorna när du skickar in svaren, förjag kommer att titta på det också.

Skalet

Skapa ett terminalfönster med ett skal.Väljaren -a till ls talar om att alla filer ska listas

(även dolda). Jämför vad du får för resultat frånls och ls -a .

Uppgift 2.1 Nämn någon dold fil och någondold underkatalog som du har i din hemkatalog.

Uppgift 2.2 Ge ett kommando för att få en långlistning av filerna i din kurskatalog. Ange kom-mandot och det svar det gav! (Använd klipp-och-klistra.)

Den listningen liknar en del fillistningar frånförra labben och visar bland annat filskyddet, vemsom äger filen, hur stor den är och när den senaständrades.

Uppgift 2.3 Ge ett kommando för att ändra såatt introduktion-till-datateknik blir din ak-tuella katalog. Hur lyder det kommandot?

Uppgift 2.4 Lista bara alla filer här som harnamn som slutar på ».txt«? Ange både ditt kom-mando och det resultat det gav.

Där finns bland annat tre filer dikt-1.txt,dikt-2.txt och dikt-3.txt som innehåller var-sin strof i en dikt. Titta på innehållet i dessa medcat, som

Får du ingen ny prompt som slutar med dollar?:Du kan råka skriva fel på något kommando i skaletså att du inte får en ny prompt eller får en promptsom slutar med > istället för $. Avbryt i så fall medCtrl-C för att få en ny prompt.

$ cat dikt-1.txt

osv. för de andra filerna. Med

$ cat dikt-1.txt dikt-2.txt dikt-3.txt

får du hopslagningen av dessa tre som output, dvs.hela denna dikt.

Uppgift 2.5 Hur kan man skriva något annat äncat dikt-1.txt dikt-2.txt dikt-3.txt somger samma resultat men är kortare, med använd-ning av joker?

I katalogen finns också en fil dikt-source somtalar om vad det är för dikt. Den har av någonanledning inte ett namn som slutar på ».txt« trotsatt det är en textfil. Se till att den inte kommermed när du ger ditt kommando.

Uppgift 2.6 Ange ett kommando där du medhjälp av omdirigering sparar hela denna dikt i enny fil med namnet hela-dikten.txt. Utför ävendet kommandot.

Gör cat hela-dikten.txt efteråt för att seatt du fått önskat resultat.

Med denna nya fil har du totalt fem filer somhar med denna dikt att göra. Fundera ut vad dukan skriva för ett uttryck med jokrar som matcharalla fem filerna.

Uppgift 2.7 Ge ett kommando med ls och dittjokeruttryck. Resultatet ska bli en listning med al-la de fem filerna och inga andra.

Skapa en ny underkatalog lenngren till dinkurskatalog med kommandot mkdir lenngrenoch flytta alla de fem diktrelaterade filerna till dennya katalogen lenngren i ett kommando (medjokrar). Att flytta filer kan man göra med kom-mandot mv (»move«) med ett antal filnamn somargument och där det sista argumentet är en ka-talog som filerna ska flyttas till.

21

Page 22: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 2: SKALET OCH EMACS

Uppgift 2.8 Hur löd detta kommando?

Uppgift 2.9 Vad kan du ge för kommando (ut-an att byta katalog) för att få en lång listning avfilerna i denna katalog?

Kommandot echo är ett enkelt kommando somman kan ge godtyckligt många argument och somekar tillbaka sina argument ett och ett. (Det kannog verka svårt att förstå vad man ska ha det till,men det kommer att visa sig användbart så små-ningom.)

Jämför output från följande kommandon:

1. echo Hej hopp2. echo "Hej hopp"3. echo Hej hopp4. echo "Hej hopp"

(I de två senare fallen har jag skrivit sjuttonmellanslag i rad mellan orden, men du kan nåtannat antal i samma storleksordning när du tes-tar.)

Uppgift 2.10 Vilka av dessa kommandon gersamma output? Förklara varför, och varför detsom avviker gör det! Frivillig bonusfråga: Omman verkligen vill skriva ut "Hej hopp" inklusi-ve citattecknen med hjälp av echo, hur ska manskriva då?

Emacs

Starta Emacs med Applications Accessories Emacs

om du inte redan har en igång.Denna gång ska du inte använda musen utan

kortkommandot C-x C-f för att öppna en fil ikurskatalogen. (Eftersom Ctrl-tangenten ska an-vändas till båda tecknen behöver du inte lyfta dentangenten emellan.)

När du tryckt C-x C-f står det Find file: ~/längst ner i Emacs och markören har ham-nat där nere, i minibufferten. Den fil du skaöppna är ~/introduktion-till-datateknik/exempel.txt, så fortsätt att skriva på det på-började filnamn som står där (nästa tecken inamnet är i). Använd komplettering med TAB-tangenten. Avsluta med returtangenten.

Observera att det i den mörkare nedre raden iEmacs nu står (Text) vilket visar att Emacs är in-ställd på att editera vanlig text på t. ex. engelskaeller svenska (och inte t. ex. HTML eller ett Java-program) – Emacs befinner sig i text mode. Emacsbefinner sig alltid i en viss sådan mode. På svenskakallas det ibland för läge (textläge), eller arbets-miljö.

Att Emacs valde textläge för denna fil är för attden har ett namn som slutar på ».txt«.

Den mörkare raden i Emacs där bland annatdetta står kallas för mode line eller informationsra-den.

Snabbkommandot C-x C-f för att öppna fileranvänder man oavsett om man öppnar en fil somredan finns eller om man vill skapa en ny fil. Manbehöver alltså inte först skapa en ny fil som mansen öppnar, utan man öppnar den direkt. Öppnamed C-x C-f en ny fil saga.txt i kurskatalogen.Eftersom den fil du just tittar på ligger i den kata-logen kommer den nya filen också hamna där omdu inte säger till om nåt annat.

När man editerar vanlig text är det oftastpraktiskt om långa rader bryts automatiskt me-dan man skriver. Ställ om så att det blir såmed Options Auto Fill in Text Modes i Emacsmenyer-na. När du har det påslaget visas det med or-det Fill i informationsraden. Gör även Options

Save Options vilket sparar denna inställning tillnästa gång du kör Emacs!

Skriv en liten saga i den filen. Den ska börja»Det var en gång« för annars är det ingen riktigsaga. Tryck inte på retur/enter utan skriv på för attse hur den automatiska radbrytningen fungerar.

Så snart du börjar skriva dyker det upp ett parstjärnor till vänster på informationsraden. De vi-sar att bufferten inte är sparad. Det märks ävenpå att knappen Save blir aktiv. Glöm inte att spa-ra efteråt och notera att stjärnorna då försvinneroch Save-knappen blir inaktiv. Se efter i menynvad kortkommandot för Save är.

Uppgift 2.11 Vad är kortkommandot för Save?

Skriv verkligen en liten text på minst fyra radersom inte bara lyder »bla bla bla« eller liknande, förvi kommer att använda den texten i flera senareövningar där det inte kommer att funka om detinte står en riktig text på svenska där.

Uppgift 2.12 Vilka olika sätt att öppna filer iEmacs känner du till nu?

Inkrementell sökning

Använd C-x C-f i Emacs för att öppna /local/kurs/ids/wonderland.txt. Eftersom denna filinte ligger bland dina filer utan på ett helt annatställe så får du skriva hela filnamnet från början(men du kan förstås använda komplettering medTAB på lämpliga ställen).

Detta är hela texten till boken Alice i Underlan-det. Nu ska du söka i den.

Emacs var först med inkrementell sökning somhar blivit allt vanligare även i andra sammanhang.Istället för att skriva in hela texten man söker ef-ter innan sökningen sätter igång, så börjar sök-ningen direkt när man börjar skriva vad man sökerefter. Gör dessa små övningar långsamt så att duser vad som händer hela tiden.

Tryck på C-s för att starta en sökning. Då dykertexten »I-search:« upp i minibufferten därnere föratt visa att en sökning pågår.

22

Page 23: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Emacs

Säg att du ska söka efter ordet »waistcoat«. Bör-ja med att trycka w (inget mer, tillsvidare). Noteravar markören har hamnat och vilken text som fär-gas. Tryck så a och se hur det förändras. Härnäst i.Nu är du framme. Avsluta då sökningen med RET(retur). Med inkrementell sökning behöver du in-te skriva mer än nödvändigt för att hitta texten.

Det funkar att sudda medan man skriversöktexten. Pröva härnäst att söka efter det ordet»received«, men »råka« först skriva fel och sök ef-ter »recieved« istället. Den sökningen kommer enbit in att misslyckas. Emacs misslyckas och visarden del som inte gick att hitta med rödfärg.

Sudda då i söksträngen och rätta till det tillden riktiga stavningen. Den söksträng du använ-der står hela tiden i minibufferten. När du ärframme så tryck på RET .

Uppgift 2.13 Vilket ord hade Emacs hittat närsökningen inte längre gick?

På vilken rad hittade du sen det rätta ordet?(Radnumret står efter »L« i informationsraden.)

Sök härnäst framåt efter »sister«. Du kommertill ett ställe där det står »in the lap of her sister«.Antag att detta inte är det ställe du var ute efter.Tryck på C-s igen för att gå till nästa ställe. Fort-sätt så tills du får »Failing I-search«. Då är du vidden sista förekomsten av »sister« i filen.

Uppgift 2.14 Vilken rad är du då på?

Uppgift 2.15 Tryck nu på C-s en gång till i allafall, fast du redan var vid sista förekomsten. Vil-ken rad hamnar du då på? Vad hände?

Sökningar bakåt görs precis som framåt, menmed C-r istället. (Man kan byta riktning undersökandet genom att trycka C-r eller C-s .) En på-börjad sökning kan avbrytas med C-g . Om manavslutar den (med RET) stannar man vid det manhittade. Om man avbryter (med C-g) går manistället tillbaks där man var när man började, somom man aldrig gjort sökningen.

Flytta och kopiera

Nästa fil du ska öppna i Emacs är /local/kurs/ids/ivt2-svenska.txt. (Det är en textfil meden del gamla utdrag ur Invandrartidningen på en-kel svenska.)

Uppgift 2.16 Det finns ett menyalternativ File

Save As. . . i Emacs. Vad är motsvarande kortkom-mando?

Som för andra operationer med filer så beter sigEmacs olika om man väljer kommandot från me-nyn eller med ett kortkommando. Om man väljer

det från menyn så får man upp en särskild filvälja-re men använder man ett kortkommando får manange filnamn i minibufferten. Använd kortkom-mandot!

Du får upp »Write file:« i minibufferten ochfår skriva filnamn där. Du ska spara denna fili din kurskatalog och den har du redan an-vänt tidigare i Emacs, så då behöver du in-te skriva så mycket. Tryck på <up> (dvs. upp-åtpilen) för att gå tillbaka till tidigare använ-da filnamn. När du har hittat rätt så editeraså att bara namnet på katalogen står, dvs. ~/introduktion-till-datateknik/ och tryck påretur. Du ska få ett meddelande (i ekoarean) omatt filen har sparats där.

I början står <!--page--> vilket tydligen mar-kerar var det har varit ny sida i den ursprungligatidningen. I detta fall vill du att det istället ska stå»[ny sida]« där. Kommandot för att byta ut textfinns i menyerna som Edit Replace Replace String. . .

Uppgift 2.17 Hur kan man ge samma komman-do från tangentbordet?

Ge kommandot! Du får i minibufferten förstange vad du vill byta ut, och sen vad du vill bytaut det mot. Avsluta varje input med RET .

Nu har du börjat byta ut. Den första textensom kanske ska bytas ut är färgmarkerad. Trycky (= yes) för att byta ut denna förekomst och duhamnar vid nästa förekomst. Det finns annat än yoch n som man kan svara här. Tryck på ? för attfå hjälp.

Uppgift 2.18 Med vilket tecken kan man ersättaalla återstående förekomster utan ytterligare frå-gor?

Utför det kommandot! I ekoarean får du ettmeddelande om hur många utbyten som skedde.

Använd M-< eller <C-home> för att gå tillbakstill början av bufferten igen. Den första notisenbörjar »Bättre ekonomi men fortsatt hög arbets-löshet.« Antag att den av någon anledning inteska vara med. Sätt ett märke där den börjar (medC-SPC). Flytta dig till dess slut och tryck C-w föratt ta bort regionen. Avsluta med att rensa borttomraderna i början av filen så att den börjar di-rekt med den nu första notisen (utan beteckning-en »[ny sida]«).

Sök framåt efter ordet »internet«. (När du sökerframåt hittar du före det ett sammansatt ord –tryck då på C-s igen för att gå till nästa förekomstav det sökta.)

Hela detta stycke där ordet »internet« står medska flyttas till slutet av filen. Prova denna gångistället kommandot M-h som direkt markerar he-la stycket med punkten i början av stycket. Tabort det med C-w . Gå till slutet av bufferten med

23

Page 24: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 2: SKALET OCH EMACS

M-> eller <C-end> och klistra in stycket med C-y(yank).

Avsluta med att spara den ändrade filen.

Andra tangenter

Om du är van vid att använda C-x , C-c och C-vför klipp-och-klistra så kan du ändra så att Emacsockså känner igen dessa.

Uppgift 2.19 Det finns ett menyalternativ föratt välja detta. Vad heter det?

Eftersom dessa tangenter även har andra bety-delser i Emacs så får dessa tangenter olika bety-delse när man har markerat en region och annars.

Uppgift 2.20 Ja just ja, jag känner till att minsten av dessa tangenter används till annat i Emacs.Vad?

(Om man gör denna omställning får man ävenångra på C-z , som man kanske också är van vidfrån annat håll. Om du vill spara inställningen såvälj Options Save Options .) Välj själv om du vill an-vända detta eller prova att använda standardtan-genterna i Emacs.

Diverse

I ekoarean kommer det då och då små meddelan-den från Emacs, t. ex. om att den sparar filer osv.

Uppgift 2.21 Om du ger C-x C-f för att öppnaen fil igen, men ångrar dig och trycker på C-g , vadfår du då för meddelande i ekoarean?

Klyv fönstret med C-x 2 många gånger tills detinte går längre. Du har fått ett felmeddelande.

Uppgift 2.22 Hur lyder det? (Det skrivs i eko-arean så därför finns det även sparat i bufferten*Messages* så kopiera det därifrån så att du slip-per skriva av.)

(Återställ sen till bara ett fönster med C-x 1 .)

Slutkompott

Tillbaks till skalet. Gå till kurskatalogen igen omdu inte redan är där. Ange kommando och kom-mandots resultat för att:

Uppgift 2.23 . . . visa de två sista raderna i dinsaga.txt.

Uppgift 2.24 . . . räkna orden i din saga.txt.

Uppgift 2.25 . . . räkna raderna i din saga.txt.

Uppgift 2.26 . . . räkna både orden och radernasamtidigt i din saga.txt, med ett kommando.

Väljaren -d till date beskrevs på s. 16.

Uppgift 2.27 Prova olika argument till dennaväljare -d, nämligen »today«, »tomorrow«, »nextyear«. Visa dina kommandon och vad du får förresultat!

I det sista fallet har du ett argument med mel-lanslag i sig, så då behöver du ta hand om det pånåt särskilt sätt.

Uppgift 2.28 Om man ger date -d ett fyrsiff-rigt tal som argument, hur tolkar den det?

Uppgift 2.29 Ange ett skalkommando som ska-par en fil saga40.txt som innehåller en versionav din saga.txt där raderna är högst 40 teckenlånga.

Uppgift 2.30 Ange ett skalkommando som räk-nar hur många rader och ord det är i denna nyafil och vad det gav för resultat. Det ska bli likamånga ord som för saga.txt, men troligen flerrader.

Uppgift 2.31 När man räknar både ord och ra-der samtidigt, i vilken ordning får man då ut sva-ren? Spelar det roll i vilken ordning man ger väl-jarna?

Uppgift 2.32 Ge nu ett kommando för att gåtillbaks till din hemkatalog igen. Ange minst tvåsätt som du kan göra detta på!

Uppgift 2.33 Nämn minst tre tangentsekvenseri Emacs med en prefixtangent, och vilka kom-mandon som dessa utför.

I Unix-världen brukar man rekommendera folkatt inte ha filer vars namn börjar med binde-streck (-). Skapa trots detta en fil som heter -foo.

Uppgift 2.34 Kan du komma på varför manbrukar avreda från sådana namn? Visa något kom-mando du försöker använda med din fil -foo somleder till problem.

Uppgift 2.35 Vad är det nu igen för tangent somanvänds för att avbryta ett kommando i skalet?

Uppgift 2.36 Vad är det nu igen för tangen-ter som används för att avbryta ett kommando iEmacs?

Uppgift 2.37 Om det skulle finnas ett komman-do xyzzy, hur skulle då xyzzy -x 17 42 tolkas?

a) Kommandot xyzzy har en väljare -x. Senhar kommandot två argument, 17 och 42.

b) Kommandot xyzzy har en väljare -x med ar-gumentet 17. Sen har kommandot självt ettargument, 42.

24

Page 25: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 3

Mer om skalet

3.1 Långa väljare

Förra gången såg vi att kommandon kan få väljare.I ett kommando som grep -i prins saga.txtär t. ex. -i en väljare som påverkar beteendet förkommandot grep. Många program har även långaväljare som består av mer än ett tecken (efter bin-destreck). I GNU är standarden att långa väljareinleds med två bindestreck. Ofta finns det en kortoch en lång väljare med samma betydelse. Denlånga är kanske lättare att förstå, men den kortagår snabbare att skriva när man har lärt sig den.T. ex. kan man till grep skriva --ignore-caseistället för -i och --count istället för -c.

Man behöver inte alltid skriva ut hela nam-net på den långa väljaren, utan början kan räckaifall det det ändå blir unikt. Det räcker t. ex. medgrep --cou, men inte med grep --co eftersomgrep också har andra väljare som börjar så.

3.1.1 Argument till långa väljare

När en lång väljare ska ha ett argument skriverman ofta ett likhetstecken mellan väljare och vär-de, så här:

$ dateTue Sep 8 13:23:11 CEST 2015$ date --date=tomorrowWed Sep 9 13:23:14 CEST 2015

3.2 Kommandorör (|)

Ni har sett hur man kan spara resultatet av ettkommando i en fil med hjälp av tecknet > och ettfilnamn.

Istället för att spara resultatet i en fil kan manockså skicka vidare resultatet som indata till ettnytt kommando med tecknet | (lodstreck).

Detta kallas på engelska för en pipe. Man tänkersig att utdata från det första kommandot färdas

i ett rör vidare till nästa kommando. På svenskasäger man ibland kommandorör.

Med

$ head stp.txt | wc -w41

får man t. ex. veta hur många ord det finns i detio första raderna av filen stp.txt. Först utförshead stp.txt , men istället för att skriva ut re-sultatet av det kommandot till terminalen så skic-kar skalet vidare det som indata till wc -w somräknar orden i det.

De båda programmen head och wc vet inte omatt de kommunicerar med varandra. Det förstaskriver utdata till standard output och det andraläser indata från standard input utan att veta vadsom finns i andra änden. Det är skalet som tar ut-data från det ena och lämnar vidare som indatatill det andra.

Om vi inte kände till kommandorör skulle vikunna lösa samma uppgift så här:

$ head stp.txt >smurf$ wc -w smurf41 smurf$ rm smurf

Jaha, 41 ord. Här sparar vi undan resultatet avförsta steget i en fil (som här fick heta smurf, mendet är ju ett jättedumt namn och du skulle förståsha kallat den nåt rimligare). När vi väl har räknatorden i den filen så behövs den inte längre, så vitog bort den efteråt med rm.

Kommandorör är bättre genom att mellanresul-tat inte behöver sparas i några filer utan kan skic-kas direkt från kommando till kommando.

Observera att wc i kommandoröret inte harnågra argument! (Bara en väljare -w.) Alltid tidi-gare har vi använt det kommandot med filnamn

25

Page 26: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

3. MER OM SKALET

head stp.txt ⇒

Språkteknologiprogrammet förenarspråkvetenskapens sätt att se på språkmed datateknikens mer ingenjörsmässigaperspektiv. Målet är att på ettanvändbart sätt åstadkomma automatiskanalys och generering av naturligtspråk. Exempel på tillämpningar ärsystem för maskinöversättning ochdatoriserade översättningsstöd,språkgranskning, informationssökning och

⇒ wc -w ⇒ 41

Figur 3.1: Hur många ord finns det på de första tio raderna? Kommandoröret head stp.txt | wc -w

som argument, och då räknar den ord eller rader ide filerna. Om den inte får några argument räknarden istället i standard input.

I figur 3.1 visas hur utdata skickas vidare somindata i detta kommandorör.

Ett vanligt fel är att blanda ihop detta och skri-va nåt i stil med

FEL!⇒ $ head stp.txt | wc -w stp.txt

Här har man gett ett argument till wc (nämligen»stp.txt«), så alltså läser den från den filen ochinte från standard input. Så allt det som står förelodstrecket spelar ingen roll.

3.3 En användning av echo

Kommandorör är ett sådant fall där kommandotecho kan vara användbart, för att ge en viss speci-fik indata till ett kommando. Antag att vi vill prö-va hur wc egentligen räknar ord. Skulle den räkna»och/eller« som ett eller två ord? Ett sätt skulleförstås vara att skriva texten »och/eller« i en filförst, men vi behöver inte göra det, utan kan geen bestämd text direkt som indata.

Tecknet |: Tecknet | kallas för lodstreck (verticalbar). Det skiljs egentligen från ett ovanligare tec-ken broken bar (¦), men på bland annat svenskatangentbord finns bara det ena, och det brukar dåvisas som ¦ på tangentbordet trots att tangentenfaktiskt genererar |.

Tecknet behöver skrivas med AltGr.Förutom dess användning som pipe i Unix an-

vänds tecknet också bland annat ofta för att angealternativ i flera syntaxer och programspråk.

$ echo och/eller | wc -w1

3.4 Omdirigering av standard input(<)

Som en omvändning till > kan man använda <för att visa varifrån indata till ett kommando skahämtas. Exempel:

$ wc -w <start41

Här hämtar skalet texten i filen start och läm-nar den texten som indata till wc -w som tar framantal ord i detta.

Detta är inte alls lika vanligt att man användersom >. Det går ju nämligen lika bra att skriva ba-ra wc -w start istället, utan <-tecknet, eftersomwc liksom de flesta kommandon som man vill getext som indata till också accepterar filnamn somargument och då själv läser in dessa filer som in-data.

Precis som det normala för standard output omman inte säger något är att det skickas till termi-nalen så är det normala för standard input att omman inte säger något så läses det från terminalen!Så om man skriver bara head får man ingen nyprompt direkt, utan skalet börjar läsa in textradersom man skriver in på terminalen.1

Standard output och standard input förkortasibland till stdout respektive stdin.

Flera kommandon som vi sett tidigare som tarfilnamn som argument och som läser sin inputfrån dessa läser input från standard input iställetom de inte får några argument. Det gäller bl. a.head, tail, wc och grep.

1Sådan text som man skriver in kan man avsluta medControl-d.

26

Page 27: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

3.5. Långa rör och filter

3.5 Långa rör och filter

En kommandorad kan innehålla godtyckligtmånga rör. I en fyrdelad kommandorad somaaa | bbb | ccc | ddd kommer programmetaaa att lämna vidare sitt resultat till programmetbbb som lämnar vidare sitt resultat till program-met ccc som lämnar vidare sitt resultat till pro-grammet ddd . I detta exempel är det bara outputfrån ddd som hamnar i terminalen.

Till detta kan man även lägga till omdirige-ring med < och >. Med en kommandorad somaaa <infil | bbb | ccc | ddd >utfil läserdet första steget aaa sin indata från filen infiloch det sista steget ddd skriver slutliga utdata tillfilen utfil. Det är inte meningsfullt att skjuta in< eller > någonstans i mitten av en sånt här kom-mandorör. Symbolen | visar ju redan varifrån in-data ska tas och vart utdata ska skickas.2

Ett kommando som läser in något från standardinput, gör nånting med det, och sedan skriver utdet i modifierad form på standard output kallasofta ett filter.

3.6 Relativa sökvägar

I avsnitt 1.3 såg vi hur fullständiga sökvägar kananvändas för att beteckna en fil eller katalog. Så-dana sökvägar kan alltid skrivas som argumenttill kommandon som ska ha filnamn eller katalog-namn som argument. De fullständiga sökvägarnabörjar alltid med / och har oftast flera / i namnet.

Oftast anger man istället ett kortare namn påfiler och kataloger. Det enklaste fallet är närdessa filer och kataloger ligger i det som ärens aktuella katalog. Då räcker det med att ba-ra skriva namnet, som README eller kvack.png.Men om Ellen som exempel har sin hemka-talog /home/stp16/ellen som aktuell katalogoch vill referera till sin fil med ett slottsfotogra-fi (se figur 1.3 på s. 6) vars fullständiga namnär /home/stp16/ellen/fotografier/slottet.jpg så räcker det inte med bara slottet.jpg ef-tersom den filen inte ligger i samma katalog. Ettsätt är förstås att först byta katalog, men ett an-nat är att skriva en relativ sökväg som utgår frånens aktuella katalog. Det skulle i det fallet blifotografier/slottet.jpg.

Om man istället har /home/stp16 som aktu-ell katalog kan man skriva ellen/fotografier/slottet.jpg. Alla sådana namn som inte börjarmed / (eller ~) utgår från aktuell katalog. Det gäl-ler alltså även den enklaste formen helt utan /,som README och kvack.png. Vad dessa sökvägarbetyder beror på vad som är aktuell katalog, sådetta är exempel på relativa sökvägar.

2Man kan även skriva <infil aaa istället föraaa <infil vilket en del tycker gör ordningen tydliga-re.

För att röra sig uppåt i filträdet använder manden särskilda beteckningen ’..’ som finns i varjekatalog och pekar till den katalogens föräldrakata-log. Om Ellen har sin underkatalog Desktop somaktuell katalog kan hon t. ex. skriva .. för att re-ferera till sin hemkatalog och ../fotografier/slottet.jpg för att referera till det där fotografi-et.

En användning av .. har du redan sett: cd ..för att gå upp ett steg.

Fullständiga sökvägar börjar alltså med / ochutgår från roten (som ju betecknas /). Övriga sök-vägar är relativa och utgår från aktuell katalog. Entilde (~) i början av sökvägar är bara ett förkor-tat skrivsätt för något som börjar med /home, såsådana sökvägar är också fullständiga.

Förutom .. för föräldrakatalogen finns även .i varje katalog och betecknar just den kata-logen. Det betyder alltså samma sak att skri-va fotografier/slottet.jpg och t. ex. ./fotografier/slottet.jpg eller fotografier/./slottet.jpg.

Trots att dessa . och .. finns i varje katalog såsyns de normalt inte. Det är helt enkelt eftersomde börjar med punkt och därför är dolda.

3.7 TAB

Det finns ett särskilt TAB-tecken som i textfilervisas som ett hopp fram till nästa tabulatorposi-tion, och dessa ligger normalt med åtta stegs mel-lanrum. Det är alltså bara ett tecken i filen, ävenom det ser ut som mer.

När man editerar text används TAB-tangentenför att göra ett »lagom långt« indrag, vilket kanskeär ett TAB-tecken, men kanske längre, och kanskebara nåt enstaka mellanslag, beroende på vad detär för slags text och hur omgivningen ser ut. Detär alltså inte alls alltid så att det verkligen blir ettTAB-tecken i en fil för att man trycker på dentangenten.

Den tangenten används ju dessutom även tillannat. Vi har t. ex. använt den mycket till kom-plettering, och den används också ofta för att väx-la mellan olika inmatningsfält.

3.8 Skalkommandot cut

Kommandot cut klipper i sin indata så att baravissa delar av varje rad kommer med i utdata. Detär vanligt att använda detta kommando för text-filer som innehåller flera kolumner, normalt av-gränsade av det speciella TAB-tecknet. Med väl-jaren -f med ett tal som argument kan man dåklippa ut bara någon av dessa kolumner.

27

Page 28: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

3. MER OM SKALET

$ cat knattarna.txtKnatte Fnatte TjatteOle Dole DoffenRip Rap Rup$ cut -f 1 knattarna.txtKnatteOleRip$ cut -f 2 knattarna.txtFnatteDoleRap

Det går också att klippa ut flera kolumner till-sammans, som t. ex. cut -f 2-3 för kolumn 2och 3.

I figurerna 3.2, 3.3 och 3.4 visas några exempelpå kommandorör där cut används tillsammansmed den där filen med Knattarnas namn på svens-ka, norska och danska.

3.9 Att tolka hjälp omskalkommandon

I felmeddelanden har du sett att många komman-don tipsar om att man kan ge kommandot meden väljare --help för att få hjälp om det kom-mandot. Det är en standard för GNU-programatt de ska ha en sådan väljare. Hjälptexten är skri-ven rätt kompakt och kräver att man är van föratt veta hur den ska tolkas. I figur 3.5 ges ettexempel, med hjälptexten för head. Först kom-mer en usage-rad som sammanfattning. Det vi-sar att det som vanligt kan komma ett antal väl-jare ([OPTIONS]...) och att det sedan kan följaett antal argument som är filnamn ([FILE]...).Hakparenteserna visar att det är en optionell delsom inte behöver vara med. Punkterna visar attdet får finnas flera sådana.

Man kan jämföra med motsvarande rad förgrep som lyder

Usage: grep [OPTION]... PATTERN [FILE]...Här står det första argumentet, »PATTERN«,

texten som man ska söka efter, inte inom hak-parenteser, så det argumentet måste alltid finnasmed.3 Däremot behöver inte några filnamn finnasmed.

Det kan också finnas flera alternativa sätt attköra ett program. Kommandot cp som kopierarfiler kan t. ex. anropas på dessa två olika sätt:4

Usage: cp [OPTION]... SOURCE DESTor: cp [OPTION]... SOURCE... DIRECTORY

3Att det första argumentet kallas för »pattern« är för attdet inte behöver vara en fix text, utan kan vara ett mönstersom man söker efter. Detta tar vi upp senare.

4Detta är en vit lögn. Det finns faktiskt ett tredje sätt ock-så, och det första sättet har en extra optionell väljare, men detspelar ingen roll nu.

Den första raden beskriver hur man an-vänder cp med två argument, till exempelcp foo.ogg bar.ogg för att kopiera filen foo.ogg till bar.ogg.

I den andra versionen kan det finnas flera»SOURCE« (eftersom det står punkter efter) ochsista argument måste vara ett namn på en kata-log. Det betyder att kopiera allt man räknar uppsom en »SOURCE« till den katalogen.

I beskrivningen som följer i figur 3.5 beskrivsnärmare hur de olika argumenten tolkas. Här stårbland annat att om man inte har angivit någonFILE så kommer kommandot att »read standardinput« istället. Så beter sig många kommandonsom man kan ge filnamn som argument.

Större delen av beskrivningen är en lista medolika väljare som kommandot tar. Här listassynonyma väljare tillsammans. T. ex. betyderhead -q , head --quiet och head --silentdetsamma.

Vilka argument som ska ha argument framgårockså. Då det står --lines=[-]K så ska tydligen--lines ha ett argument, och därmed även desssynonym -n. Värdet för den väljaren skrivs härsom [-]K och tydligen ska K här ska vara etttal. Hakparenteserna betyder som på andra stäl-len nånting som kan vara med men inte behövervara med. Så argumentet är antingen ett minus-tecken följt av ett tal eller också bara ett tal. Såman kan alltså skriva t. ex. head --lines=-17och head --lines=17 . (Detta betyder olika sa-ker. I beskrivningen står det mer om det.)

Om man använder -n i stället så blir det allt-så head -n -17 eller head -n 17 , där det sist-nämnda är ett sådant normalt anrop i stil med så-dana du har gjort. (Om du vill veta vad det bety-der att använda ett minustecken där får du lov attläsa vidare i dokumentationen.)

Alla detaljer i hur head kan anropas är inte vik-tiga, utan det viktiga är här hur olika saker beteck-nas eftersom ni kan behöva kunna tolka sådanahär beskrivningar själv. Framförallt gäller det attkunna plocka ut just den information man självbehöver. Om t. ex. några väljare eller varianterverkar helt obegripliga så behöver inte det göranågot så länge man inte behöver dem.

3.10 Argumentet -

Observera särskilt en sak som står i hjälptextenför head: »With no FILE, or when FILE is -, readstandard input«.

Detta gäller för många kommandon att mankan skriva - istället för ett filnamn för att kom-mandot ska läsa från standard input.

28

Page 29: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

3.10. Argumentet -

cut -f 3 knattarna.txt ⇒TjatteDoffenRup

⇒ tail -n 1 ⇒ Rup

Figur 3.2: Vad heter Tjatte på danska? Kommandoröret cut -f 3 knattarna.txt | tail -n 1

tail -n 1 knattarna.txt ⇒ Rip Rap Rup ⇒ cut -f 3 ⇒ Rup

Figur 3.3: Vad heter Tjatte på danska med en annan metod. Kommandoröret tail -n 1 knattarna.txt |cut -f 3

cut -f 2 knattarna.txt ⇒FnatteDoleRap

⇒ grep a ⇒ FnatteRap

Figur 3.4: Vilka »Fnattar« har ett namn med a i? Kommandoröret cut -f 2 knattarna.txt | grep a

$ head --helpUsage: head [OPTION]... [FILE]...Print the first 10 lines of each FILE to standard output.With more than one FILE, precede each with a header giving the file name.With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.-c, --bytes=[-]K print the first K bytes of each file;

with the leading '-', print all but the lastK bytes of each file

-n, --lines=[-]K print the first K lines instead of the first 10;with the leading '-', print all but the lastK lines of each file

-q, --quiet, --silent never print headers giving file names-v, --verbose always print headers giving file names

--help display this help and exit--version output version information and exit

K may have a multiplier suffix:b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>For complete documentation, run: info coreutils 'head invocation'

Figur 3.5: Hjälptexten för head.

29

Page 30: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

3. MER OM SKALET

3.11 Skalskript

Om man vill göra om en följd av kommandon fle-ra gånger så kan man spara undan dessa komman-don i ett skalskript (shell script).

Det är helt enkelt en textfil där kommandorad-erna står, rad för rad, så som man annars hade skri-vit in dem till ett skal. Ofta låter man sådana filerfå filnamnsändelsen .sh (som i shell).

Det är brukligt att börja sådana filer med ensärskild rad i stil med

#! /bin/bashDetta talar om att det är just skalet bash som

det är tänkt ska utföra kommandona i denna fil.(/bin/bash är nämligen en fullständig sökväg tillprogrammet bash.)

Ett sätt att utföra kommandona i en sådan filär att använda bash som kommando. Då körs ettnytt skal igång som utför skalkommandona i filen.

$ cat lista-bilder.sh#!/bin/bashecho Här är några av dina bildfiler:ls *.gif *.jpg *.pngecho Ha en trevlig dag!$ bash lista-bilder.shHär är några av dina bildfiler:ls: *.gif: No such file or directoryemacs.png fooey.jpg fooey.png wave.pngHa en trevlig dag!

Här användes först kommandot cat för att vi-sa innehållet i skalskriptet lista-bilder.sh ochsen kommandot bash för att utföra dessa rader iett nytt skal.

3.12 Expansion i skalet

Det är alltså skalet som skickar ut indata till deolika kommandona och tar hand om deras utdata.Dessutom ändrar skalet de argument man skriverpå kommandoraden innan den skickar vidare dettill de olika kommandona.

En sådan ändring är att ~ och ~〈användarnamn〉expanderas till något längre. Det är alltså skaletsom gör detta och när man skriver cp foo.txt ~för att kopiera en fil till sin hemkatalog så fårcp i själva verket en kommandorad i stil medcp foo.txt /home/stp16/ellen att utföra.

(Det är inte bara skalet som gör sådana utbyten,utan många andra program gör det också, så detär därför det går att skriva filnamn med ~ t. ex. iEmacs.)

Dessutom är det skalet som ser efter vad detfinns för filer så att den kan expandera joker-uttryck med *, ? och [].

När man ger ett kommando som

$ ls *.pdfdn.pdf svd.pdf unt.pdf

så tänker man det sig kanske som att man bettls att se efter vad det finns för pdf-filer, menegentligen är det skalet som expanderar *.pdftill dn.pdf svd.pdf unt.pdf och sen utför kom-mandot ls dn.pdf svd.pdf unt.pdf , så när lsbörjar köra är den delen av jobbet redan utfört.

I många fall spelar det ingen roll om man tän-ker fel på det sättet, men i vissa fall så har detbetydelse och då blir man lätt förvirrad om maninte inser hur det i själva verket förhåller sig.

När inga filer matchar jokeruttrycket så lämnasjokeruttrycket kvar som det var och skickas vidaretill skalet.

$ ls *.pdffls: *.pdff: No such file or directory

Här har användaren råkat skriva fel och då*.pdff inte matchade någonting så blev det verk-ligen ls *.pdff som utfördes, varpå ls klaga-de över att det inte fanns nån fil med namnet*.pdff.

Här kan man också ha användning för kom-mandot echo. Eftersom det bara skriver tillbakaalla argument som man gett det kan vara praktisktför att se hur skalet har expanderat argumenten.

$ echo foo *zzz* barfoo *zzz* bar$ echo hej *.txt hopphej cheshire-cat.txt how-doth.txt hopp

(Här fanns det tydligen inga filnamn som mat-chade *zzz*, så det förblev oförändrat.)

30

Page 31: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 3: Mer om skalet

Redovisning

Skicka ett mail till Per med svar på frågorna. Närdu ska ge ett kommando så svara alltid också medvad det gav för resultat!

Om du har fått mail angående uppgifter på för-ra labben så svara på det separat istället för attskriva ett mail om alltihop! Det underlättar myc-ket för min rättning om svar på olika inluppar lig-ger i olika mail.

Långa väljare

Uppgift 3.1 Väljaren -n till head och tail harden långa varianten --lines. Hur ser ett kom-mando ut som använder den långa varianten föratt ta fram de 15 första raderna av stp.txt?

Det var en gång . . .

Gå till kurskatalogen. Där ska bland annat dinsaga.txt från s. 22 finnas.

Uppgift 3.2 Ge ett kommando som tar fram detre första raderna av din saga.

Om detta visar hela din saga har du inte följtinstruktionerna riktigt på sidan 22, så gör om deti så fall!

Uppgift 3.3 Ge ett kommando som räknar hurmånga ord det finns i de tre första raderna av dinsaga.

(Missa inte vad som står fetstilt under »Redo-visning« ovan!)

I uppgift 2.29 skapade du en fil saga40.txtsom innehåller samma text som saga.txt, menomformatterad så att radlängden är max 40.

Uppgift 3.4 Ge ett kommando som räknar hurmånga rader det är i saga40.txt.

Uppgift 3.5 Om du inte hade den där filensaga40.txt hur skulle du då (utan att skapaen sådan fil som mellanresultat) ta reda på hurmånga rader din saga.txt skulle få om den brötsom till att få så korta rader?

Uppgift 3.6 Ge ett kommando som tar framden näst första raden i din saga.

(Den sista uppgiften är lite klurig. Fastnar du sågå vidare med andra uppgifter tillsvidare.)

Från begabba till utströ

Filen /local/kurs/ids/verb.txt innehåller enlista med svenska verb. I denna fil har de bak-längessorterats, dvs. sorterats efter slutet på or-den. (Det innebär att rimord tenderar att hamnaefter varann.)

Kopiera den till din kurskatalog från skalet. Ettsätt att använda kopieringskommandot är ju attge ett sista argument som är den katalog som filerska kopieras till. Använd det sättet, och kopieratill aktuell katalog med en kort beteckning (etttecken!) för aktuell katalog.

Uppgift 3.7 Hur löd ditt kommando?

Uppgift 3.8 Ge ett kommando för att räkna ra-der och ord i den där filen. (Det ska ligga ett ordper rad, så det borde vara lika många ord som ra-der.)

Uppgift 3.9 Ge ett kommando som talar omvilka verb där som innehåller »vv« (som t. ex. »av-visa«).

Uppgift 3.10 Ge ett kommando som börjar somdet i förra frågan och sen fortsätter med ett kom-mandorör så att du får fram hur många verb sominnehåller »vv«.

Uppgift 3.11 Ge ett kortare kommando somgör samma sak som förra uppgiften genom att an-vända en lämplig väljare till sökkommandot. Där-med behövs inget kommandorör.

Uppgift 3.12 Ge ett kommando som listar vil-ka av de tio första verben i hela verb.txt sominnehåller bokstaven j.

Uppgift 3.13 Ge ett kommando som listar deförsta tio verben i verb.txt som innehåller bok-staven j.

31

Page 32: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 3: MER OM SKALET

Tycker du att de två föregående uppgifterna ärlikadana har du inte läst tillräckligt noga! Kom-mandona och deras resultat skiljer sig åt.

Uppgift 3.14 Ge ett kommando som listar deverb som innehåller båda bokstäverna j och y.

(I resultatet ska bland annat »djupfrysa« och»nyttja« finnas med.)

Av-stav-ning

Ge kommandotavstava -l sv Detta är ett exempel

som avstavar sina argument med hjälp av svens-ka avstavningsregler. (Detta är inte ett standard-program utan något som Per lagt upp för dessauppgifter.) Väljaren -l (l som i language) tar ettargument (här »sv«) som anger vilket språk tex-ten är på. (Använder man inte den väljaren an-tar programmet att texten är på engelska.) Språ-ken anges enligt en internationell standard förspråkförkortningar, varav några koder nämns i ta-bell 3.1 (men programmet klarar inte alla dessaspråk).

Uppgift 3.15 Vad gav det för resultat?

Uppgift 3.16 Ge ett kommando som avstavarordet »Weltschmerz« på tyska.

Uppgift 3.17 Ta fram hjälptexten för komman-dot avstava. Det står att det finns en lång versionav väljare -l också. Gör om förra uppgiften menanvänd den långa versionen istället.

Uppgift 3.18 Vad står det i hjälptexten att pro-grammet gör om den inte får några texter somargument?

Uppgift 3.19 Ge ett kommando som ger dinsaga.txt avstavad. Använd väljaren för att se tillatt rätt språk används!

Uppgift 3.20 Ge ett kommando som visar av-stavningar av alla verb i verb.txt som innehållerbokstaven z.

Delstater

I filen /local/kurs/ids/us-states.txt finnsen lista över USA:s delstater tillsammans meddatum då de ratifierade USA:s konstitution ellerkom med i unionen.5

Kopiera den till din kurskatalog och titta på deni Emacs. Den är sorterad efter datumet.

Tryck C-s (för sökning) och sen TAB för att sö-ka efter TAB-tecken. Gå även fram och bak tec-ken för tecken (med <right> och <left> eller

5Enligt http://en.wikipedia.org/wiki/U.S._state.

Tabell 3.1: Språkkoder enligt standarden ISO 639-1för några språk med många talare i världen, Europa,Norden eller Sverige

sq albanskaar arabiskabn bengalinb bokmålbs bosniskabg bulgariskada danskaen engelskafi finskafr franskael grekiskahi hindiis isländskait italienskaja japanskayi jiddischzh kinesiskaxy kroatiskaku kurdiska

nl nederländskase nordsamiskano norskann nynorskafa persiskapl polskapt portugisiskaro rumänskaru ryskasr serbiskaso somaliskaes spanskasv svenskacs tjeckiskatr turkiskade tyskauk ukrainskahu ungerskabe vitryska

C-f och C-b) så märker du också att det bara ärett tecken mellan datumet och namnet.

Uppgift 3.21 Ge ett skalkommando som baralistar raderna för de delstater som kom med i USApå 1850-talet.

Uppgift 3.22 Ge ett kommando som klipper utbara alla delstaternas namn.

Uppgift 3.23 Ge ett kommando som skriver utalla delstater (utan datum) som har »New« med isitt namn.

Uppgift 3.24 Ge ett kommando som skriver utalla delstater (utan datum) som har ett mellan-rum med i sitt namn.

Kommandot sort är ett filter som sorterar derader det får in i alfabetisk ordning och skriver utresultatet.

Uppgift 3.25 Ge ett kommando som skriver utbara deltstaternas namn, sorterade i alfabetiskordning.

Uppgift 3.26 Ge ett kommando som skriver utde tretton ursprungliga delstaterna (dvs. de tret-ton första i listan), sorterade i alfabetisk ordning.

Uppgift 3.27 Ge ett kommando som skriver utvilken delstat som kommer sist i alfabetisk ord-ning.

32

Page 33: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Skalskript

Skalskript

Öppna en ny fil saga.sh i din kurskatalog ochskriv detta innehåll i den:

echo Antal ord i min saga:wc -w saga.txtechoecho Sista raden i min saga:tail -n 1 saga.txt

Utför sedan kommandona i den medbash saga.sh . Om det inte fungerar hardu gjort nåt fel. Se över det föregående tills dufår det att fungera.

När du editerar denna fil i Emacs står det»Shell-script« i informationsraden i Emacs.

Emacs vet alltså om att det är ett sådant duediterar och det finns en del särskilda funktionerför just detta. Det finns bland annat en särskildmeny »Sh-Script« med ett kommando Sh-Script

Set shell type . Använd det. Du får svara på en upp-gift i minibufferten. Tryck bara retur för att få de-faultvärdet.

Uppgift 3.28 Vad tror du det var som fickEmacs att veta att det var ett skalskript du höllpå att skriva?

Uppgift 3.29 Kommandot lade till en speciellrad i början av din text. Hur lyder den?

Uppgift 3.30 Vad är den till för?

Uppgift 3.31 Kortkommandona för komman-dona i menyn Sh-Script börjar nästan alla med sam-ma prefixtangent. Vilken?

Den tangenten används i Emacs som prefix försånt som är speciellt för just den slags fil man edi-terar just nu. Om det inte vore ett skalskript såkanske samma tangenter hade betytt något annat.

Uppgift 3.32 Utöka detta skalskript så att detäven skapar en fil saga-av.txt där din sagahar avstavats. Eftersom avstavningen gör radernalängre så använd fmt efteråt för att få lagom långarader igen.

När ditt skalskript körs ska ingenting skrivas uti terminfönstret. Det enda som ska hända är attden filen skapas med det angivna innehållet.

Röda rummet

Filen /local/kurs/ids/rummet.txt innehållerbörjan av August Strindbergs roman Röda rum-met. Filen rummet.words i samma katalog inne-håller samma text, men med ett ord per rad till-sammans med ordklassangivelse. Kopiera dessa

två till din kurskatalog. Titta på rummet.words iEmacs! (Interpunktion som ,.;:?! räknas här somegna ord med ordklassen »punkt« – kort för inter-punktion.)

Uppgift 3.33 Kolumnen med ordklass verkarhoppa lite och stå olika långt till höger för olikaord. Hur kommer det sig?

Uppgift 3.34 Ge ett kommando för att spara ensorterad lista av rummet.words i en ny fil rummet.sorted.

Uppgift 3.35 Skumma igenom filen för att seefter hur sorteringen har blivit. Är det nåt an-märkningsvärt med den? (Vi återkommer till oli-ka slags sortering senare.)

Uppgift 3.36 Ge ett kommando som bara ploc-kar ut ordklasserna från rummet.words och sparardessa sorterade i en fil rummet.ordklasser. (Detborde bli många rader efter varandra som är li-kadana där, t. ex. många rader som det bara står»subst« på.)

För nästa uppgift behöver du en ny väljare tillkommandot som du har räknat ord och annatmed. Se på dess hjälptext!

Uppgift 3.37 Ge ett kommando som talar omhur långt det längsta ordet i rummet.words är.(Bara själva ordet ska mätas, utan dess ordklass-markör.)

Uppgift 3.38 Ge ett kommando som ger de treförsta raderna i rummet.txt med avstavningar.

Gott och blandat

Skriv cd alice för att gå ner till den underkata-log som du skapade i uppgift 1.6.

Uppgift 3.39 Om du nu utan att byta katalogvill lista innehållet i din kurskatalog i skalet, (detvill säga katalogen ett steg upp,) hur skriver dudå?

Uppgift 3.40 Och vad ger du för kommando föratt kopiera cheshire-cat.jpg där till din kurs-katalog? (Gör detta!)

Uppgift 3.41 Vilka av följande sökvägar är full-ständiga, och vilka är relativa?

a) /local/texts/jabberwockyb) bar.txtc) ~/korpus.txtd) ~starback/exempel.txte) inte/mitt/bordf) ~elleng) ../FILNAMN

33

Page 34: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 3: MER OM SKALET

Uppgift 3.42 Hur många argument ges tillkommandot i dessa exempel? Räkna inte med väl-jare och argument till väljare.

a) sort korpus20.txtb) mv foo.txt bar.txt ~/Desktopc) echo I am the walrus.d) echo 'I am a donkey.'e) tail -n 3 Min fil.txt

När du börjar komma in i att använda kom-mandorör så börjar du kanske skriva sånt somcat saga.txt | head -n 1 för att ta fram förs-ta raden i din saga.

Men det är ju alldeles onödigt! Här behövs ing-et kommandorör.

Uppgift 3.43 Hur skriver man istället som ärkortare, vackrare och enklare?

»GNOME Calculator« är ett program som mannormalt skulle köra från menyerna, men kör detistället från kommandoraden. Programmet hetergnome-calculator. Observera att du inte får nå-gon ny prompt i terminalen förrän du avslutarprogrammet (genom att ta bort dess fönster). Detär det normala i skalet att endast ett program i ta-get utförs.

Skriv sen gnome-calculator --help för att fåse en hjälptext där det står om en del väljare dethar.

Uppgift 3.44 Vad kan du ge för kommando föratt starta en räknare där det står »x = 11147 ∗4711« i räknarfönstret från början?

Uppgift 3.45 Vad ger det för svar i kalkylatornnär man trycker på retur?

Uppgift 3.46 Hur kan du med ett skalkomman-do skapa en fil foo.txt i vilken det står »bla-honga«?

Filnamn som börjar medbindestreck

Gå till katalogen lenngren som du skapat tidiga-re och skriv grep Den * för att visa vilka rader ifilerna i denna katalog som innehåller »Den«.

Uppgift 3.47 Vad gav det för resultat?

Skapa (med Emacs) en fil som heter -i (tvåtecken) i samma katalog. Skriv »Den Den Den« iden.

Uppgift 3.48 Gör om samma kommando som iförra uppgiften. Visa ditt kommando och det re-sultat du fick.

Uppgift 3.49 Hittade du den där raden »DenDen Den« som du nyss skrev? Varför blev det somdet blev?

Uppgift 3.50 Vad blev det för annan skillnad?Varför?

34

Page 35: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 4

Teckenrepresentation

Temat i detta kapitel är teckenkodningar och lo-cales, men först kommer korta stödanteckningarom tvåpotenser.

4.1 Binärt

Den minsta enheten information är en bit – någotsom bara kan ha två värden. Av eller på, upp ellerner, svart eller vitt, 0 eller 1.

För varje ny bit fördubblas antalet möjligheter.

21 = 2

22 = 2 · 2 = 4

23 = 2 · 2 · 2 = 8

24 = 2 · 2 · 2 · 2 = 16

25 = 2 · 2 · 2 · 2 · 2 = 32

26 = 2 · 2 · 2 · 2 · 2 · 2 = 64

27 = 2 · 2 · 2 · 2 · 2 · 2 · 2 = 128

28 = 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 = 256

29 = 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 = 512

210 = 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 = 1024

och så fortsätter det 2 048, 4 192, 8 192, 16 384,32 768, 65 536, osv. Så med t. ex. fyra bitar kanett av 16 olika värden lagras.

Dessa tal dyker upp i många sammanhang. Detfinns t. ex. 8 bitar i en byte. Det finns 256 möj-liga värden på en byte. Med kilo menas i dator-sammanhang oftast inte exakt tusen, utan 1 024,liksom Mega oftast inte betyder exakt en miljonutan 220 som är lite mer än en miljon.

Att skriva tal binärt är att skriva dem med baratvå siffror, 0 och 1. T. ex. kan 256 olika tal (0-255) skrivas med åtta binära siffror. Annat somförekommer är oktalt (åtta olika siffror, 0–7) ochhexadecimalt (sexton olika siffror, 0–9 och A–F).(En oktal siffra innehåller lika mycket informa-tion som tre bitar. En hexadecimal siffra innehål-ler lika mycket information som fyra bitar.)

4.2 Teckenkoder

När en vanlig text (plain text) lagras i en fil ellerska föras över mellan datorer eller program måsteen viss teckenkodning användas, dvs. ett sätt att gevarje tecken en numerisk kod.

Filer lagrar olika slags data som en sekvens avbytes, som kan ses som värden 0–255, så det enk-laste sättet att lagra text är att varje tecken får enkod från 0 till 255.

4.3 Att ange teckenkodning

Det finns många olika teckenkodningar, vilket kanställa till problem. På samma system (i sammaoperativsystem; i samma program) använder manoftast samma teckenkodning genomgående ochråkar inte ut för några problem. Trycker man påen tangent som det står »Å« på får man naturligtnog ett tecken »Å« på skärmen och sparar man deti en fil så kommer samma tecken fram nästa gångman tittar på det.

Det besvärliga kommer när man ska föra överdata mellan system som använder olika tecken-kodningar. Då finns det risk för att den kod manskickar iväg som betyder »Å« i ens egen system be-tyder nåt annat på det andra systemet. Det är där-för viktigt a) att man använder en teckenkodningsom mottagande system känner till, och b) attman talar om vilken teckenkodning man har an-vänt. Då får mottagaren(s system) möjlighet atttolka informationen rätt. Oftast fungerar sånt au-tomatiskt. I figur 4.1 ges ett exempel på hur detkan bli annars.

Detta görs med standardiserade beteckningarför olika teckenkodningar, och det är organisatio-nen IANA (Internet Assigned Numbers Author-ity) som håller i dessa beteckningar, precis somde håller i flera andra standarder som används påInternet.

I flera sammanhang när text skickas över nätet,t. ex. för datorpost och över webben, så användsdessa standardiserade beteckningar, så istället föratt bara texten skickas över så skickas det även

35

Page 36: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

4. TECKENREPRESENTATION

Varf÷r blir det sÕ hõr?s å [SPC] h ä r

115 229 32 104 228 114

s Õ [SPC] h õ rFigur 4.1: Exempel på fel. En text är skriven med vissa koder, mentolkas utifrån andra koder. I detta fall är det Latin-1 som tolkats somCP850.

med en etikett som talar om vad det är för slagstext så att mottagaren vet hur det ska tolkas.

Normalt ordnar sig sådant automatiskt, men nikan ändå då och då stöta på tillfällen när ni måstekunna hantera detta själva.

Även filnamn med åäö eller andra »konstiga«tecken kan orsaka problem när man skickar demmellan datorer om de inte använder samma tec-kenkodning.

4.4 ASCII

En traditionell teckenkodning med stor genom-slagskraft är ASCII (American Standard Code forInformation Interchange). Med beteckningar frånIANA kan den bland annat kallas ASCII ellerUS-ASCII. (Det finns ofta flera IANA-namn påsamma teckenkodning.) Den omfattar koder från0 till 127 och visas i figur 4.2.

ASCII är en amerikansk och internationell stan-dard från 1960-talet (dagens version är i praktikenekvivalent med den från 1968) som snabbt antogsav de flesta och som fortfarande används ofta.

4.5 Kontrolltecken och nyrad

Även i en ren textfil finns det ofta mer än baragrafiska tecken med utseenden som hämtas frånen visst font. De består ju ofta av flera rader, ochdå måste även nyrad representeras på något sätt.Sådana och andra »tecken« som inte motsvarar nå-got grafiskt tecken som kan skrivas ut på pappereller på en skärm kallas för kontrolltecken. De haristället någon annan betydelse när en text lagras ien fil, när tecken ska skickas från en terminal tillen dator eller från en dator till en terminal ellerliknande.

I ASCII är tecken 0–31 samt 127 kontrolltec-ken.

Några har effekten att flytta på markören. Härär de viktigaste:

• 9, [HT] = Horizontal tabulation: »ad-vances the active position to the next pre-determined character position on the sameline« (= TAB)

• 10, [LF] = Line feed: »advances the activeposition to the same character position of thenext line«

• 13, [CR] = Carriage return: »moves the ac-tive position to the first character position onthe same line«

Med beskrivningarna ovan behövs två »tecken«för att en text ska fortsätta på början av nästa rad:[CR] och [LF]. [CR] (vagnretur) för att börja skri-va på början av raden och [LF] (radframmatning)för att gå fram till nästa rad. De brukar ges i justden ordningen [CR] + [LF] och kombinationenkallas ibland tillsammans för CRLF.

I Unix används dock bara ett tecken, [LF], föratt börja på en ny rad, så man har tolkat om dettateckens betydelse. Det brukar då kallas för new-line och betecknas ibland som \n.

MS Windows använder däremot det traditio-nella [CR]+[LF] och det brukar även krävas vidkommunikation mellan datorer på nätet.1

Dessutom är det vanligt i en del sammanhangatt en sådan kod som ursprungligen används föratt beteckna ny rad (oavsett vilken variant mananvänder) istället används för att indikera nyttstycke medan man låter rader brytas automatiskt.

Dessa skillnader gör att vanliga textfiler kanskilja sig åt mellan olika system även om båda an-vänder ASCII.

Kontrolltecknet [HT] ovan kallas oftare förTAB och har en egen tangent på tangentbordet.(Se avsnitt 3.7.)

Ett annat kontrolltecken som har en egen tan-gent är [ESC] (Escape, tecken 27) som användstill många olika saker. I övrigt kan man skickakontrolltecken från terminalen genom att använ-da Ctrl-tangenten. Med Ctrl-A skickar man tec-ken 1, Ctrl-B ger tecken 2, osv., och i en del sam-manhang betecknas dessa tecken med ^A, ^B osv.Eftersom J är den tionde bokstaven är alltså ^Jtecken 10, dvs. [LF] (line feed, newline).

Om man vill lägga in ett kontrolltecken i en fil iEmacs räcker det inte med att bara trycka så. Omman trycker t. ex. C-a så betyder det istället attgå till början av raden, osv.

Då får man lov att använda kommandot C-q(med q som i »quote«) före tecknet, så medC-q C-a lägger man in kontrolltecken num-mer 1, osv.

1I Mac-världen användes förr istället endast [CR] för den-na funktion, men eftersom Mac OS X är en Unix så användermoderna Mac-datorer också [LF].

36

Page 37: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

4.6. Latin-1

32 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 /48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ?64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 & 93 ] 94 ^ 95 _96 ‘ 97 a 98 b 99 c 100d 101e 102f 103g 104h 105i 106j 107k 108l 109m 110n 111o112p 113q 114r 115s 116t 117u 118v 119w 120x 121y 122z 123{ 124| 125} 126~ 127

DEL

Figur 4.2: ASCII-tecken 32–127. Kod 32 är mellanslag. Kod 127 är inte ett egentligt tecken utan »kontrolltecknet« Delete. Ävenkod 0 till 31 är olika kontrolltecken som inte visas här.

160 161¡ 162 ¢ 163£ 164 ¤ 165 ¥ 166 ¦ 167§ 168 ¨ 169 © 170 ª 171« 172 ¬ 173- 174 ® 175 ¯176 ° 177 ± 178 2 179 3 180 ´ 181 µ 182 ¶ 183 · 184¸ 185 1 186 º 187» 188 ¼ 189 ½ 190 ¾ 191¿192À 193Á 194Â 195Ã 196Ä 197Å 198Æ 199Ç 200È 201É 202Ê 203Ë 204Ì 205Í 206Î 207Ï208Ð 209Ñ 210Ò 211Ó 212Ô 213Õ 214Ö 215 × 216Ø 217Ù 218Ú 219Û 220Ü 221Ý 222Þ 223ß224à 225á 226â 227ã 228ä 229å 230æ 231ç 232è 233é 234ê 235ë 236ì 237í 238î 239ï240ð 241ñ 242ò 243ó 244ô 245õ 246ö 247 ÷ 248ø 249ù 250ú 251û 252ü 253ý 254þ 255ÿ

Figur 4.3: Tecken 160–255 i Latin-1. Tecken 160 är nbsp = non-breaking space. Tecken 173 är shy = soft hyphen – en möjligavstavningspunkt där »-« ska visas om det blir avstavning där, men som annars inte syns. Tecken 128–159 är kontrolltecken, ochvisas inte här.

4.6 Latin-1

I ASCII finns bara ungefär de tecken som finns påen amerikansk skrivmaskin och alla tecken har ko-der från 0–127.

Eftersom det kan finnas värden 0–255 i varjebyte så finns det plats för dubbelt så många olikatecken när man lagrar text i en fil. Latin-1 är enutökning där man även använder koderna 128–255 till mer tecken. Den är tänkt att innehålla så-dana tecken som behövs för västeuropeiska språksom skrivs med latinskt alfabet. De tecken somlagts till den visas i figur 4.3 och där ingår t. ex.svenska åäö.

4.7 ISO 10646 = UCS ≈ Unicode

Men det finns ju fler alfabeten, som det ryska ochdet arabiska. Och andra skriftsystem med stavel-setecken och ideografiska tecken. Numer har tec-kenkodningen Unicode tagit över allt mer, såvälunder Unix som Microsoft Windows och annars.Med det är det tänkt att man ska kunna skriva al-la naturliga språk (levande och döda), samt dess-utom en stor mängd matematiska och andra sym-boler.

Egentligen finns det två olika projekt: Det enaär en standard från standardiseringsorganisatio-nen ISO: UCS = Universal Character Set, ellerISO 10646. Det andra är Unicode från ett kon-sortium av datorföretag. De båda standardernahar dock anpassat sig till varandra, så i de flestabemärkelser är det numer samma sak och det ärUnicode som det oftast talas om.

Standarden utökas eftersom både med gamlatecken och helt nya tecken. Nuvarande versionenUnicode 9.0 släpptes t. ex. i juni i år, och innehål-ler 7 500 nya tecken jämfört med förra versionen,med sex ytterligare skriftsystem och en del nyaemojis.

Unicode har nu totalt över 128 000 tecken ochdet finns plats för drygt en miljon tecken.

Kod 0–255 är som för Latin-1 (så 0–127 är somför ASCII).

Förutom den numeriska koden innehåller Uni-code även bland annat

• Ett namn för varje tecken (som LATIN CAPI-TAL LETTER A WITH RING ABOVE, ARABIC

QUESTION MARK och HEXAGRAM FOR DIF-FICULTY AT THE BEGINNING)

• Information om vad för slags tecken de oli-ka tecknen är (alfabetiska, siffror, interpunk-tion, . . . )

• Information om vilka tecken som skrivs frånhöger till vänster och vilka som skrivs frånvänster till höger

• Information om vilka tecken som motsvararvarandra som små och stora bokstäver

Ibland betecknas tecknen med »U+« och teck-nets hexadecimala kod. Tecknet ≤, med namnetLESS-THAN OR EQUAL TO, är t. ex. tecken num-mer åttatusen åttahundra fyra, men oftare beteck-nar man det hexadecimalt som U+2264 iställetför 8804.

4.7.1 UTF-8

Eftersom det finns långt fler än 256 tecken krävsdet flera bytes per tecken. Detta är ett skäl till att

37

Page 38: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

4. TECKENREPRESENTATION

text: H a l l å ! [SPC] ,namn: LATIN

CAPITALLETTERH

LATINSMALLLETTERA

LATINSMALLLETTER L

LATINSMALLLETTER L

LATINSMALLLETTERA WITHRINGABOVE

EXCLA-MATIONMARK

SPACE WHITESMILINGFACE

unicode: 72 97 108 108 229 33 32 9786

utf8: 72 97 108 108 195 165 33 32 226 152 186

Figur 4.4: Den korta texten »Hallå! ,« lagras med UTF-8. Olika tecken tar olika mycket plats att lagra.

Varför blir det sÃ¥ här?text: s å [SPC] h ä r

unicode: 115 229 32 104 228 114

utf8: 115 195 182 32 104 195 165 114

latin-1: 115 195 182 32 104 195 165 114

text: s à ¥ [SPC] h à ¤ r

Figur 4.5: Exempel på teckenkodningsfel där en text skriven med UTF-8 tolkas som om det vore Latin-1.

Unicode är besvärligare att hantera än t. ex. ASCII

och Latin-1.För att spara utrymme så lagrar man ofta

Unicode-text på ett sådant sätt så att olika teckentar olika mycket plats att lagra.

Det finns flera sätt att göra detta, varav ett heterUTF-8. Där tar tecken mindre plats att lagra julägre kod de har:

• Kod 0–127: 1 byte (ASCII)• Kod 128–2 047: 2 bytes• Kod 2 048–65 535: 3 bytes• Kod 65 536–1 114 111: 4 bytes

Om en fil bara innehåller ASCII-tecken (kod0–127) så blir det alltså precis likadant medUS-ASCII som med UTF-8. Kommunikation överInternet använder allt oftare UTF-8. I december2007 blev UTF-8 det vanligaste sättet att kodatexter på webben, och i början av 2010 hade detkommit upp till hälften av alla webbsidor, enligtinterna data från Google.

I figur 4.4 ges ett exempel på hur en kort text(åtta tecken) kan lagras där olika tecken tar uppolika många bytes. Det som tar mest plats tar upp

tre bytes. Det är nästan bara väldigt ovanliga ideo-grafiska tecken och utdöda skriftsystem som harså höga koder att de behöver fyra bytes med UTF-8.

Om man ser text som ser ut »sÃ¥ här« istäl-let för »så här« så är det på grund av trassel medteckenkodning. Så ser UTF-8-text ut om den tol-kas som Latin-1. Se figur 4.5! Observera att bok-stäverna a–z ser likadana ut (de ingår ju i ASCII)medan åäö lagras i två bytes var med UTF-8 ochdessa två bytes har här felaktigt tolkats som någothelt annat.

4.8 Övriga teckenkodningar

Innan Unicode slog igenom användes en mängdolika teckenkodningar i olika sammanhang. Detfanns vissa som bara användes för att hantera rysktext, vissa bara för japansk text, osv. Än idag an-vänds inte Unicode genomgående, så ni kommerdå och då behöva hantera annat.

Nästan alla bygger på ASCII, så man kan vararätt säker på att »A« är kodat som 65, »B« som66 osv. i nästan alla sammanhang, trots att det-

38

Page 39: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

4.9. Vad är olika tecken?

ta egentligen är rätt godtyckligt och hade kunnatvara på något annat sätt.

Här tas bara några av de vanligare upp.

4.8.1 ISO 8859-*

Latin-1 heter egentligen ISO 8859-1 och är baraen av en hel serie standarder från ISO som heterISO 8859-1, ISO 8859-2, . . . ISO 8859-162. HosIANA finns dessa registrerade som ISO-8859-1,ISO-8859-2 osv.

De är alla utökningar av ASCII som använderkoderna 128–255 till ytterligare tecken.

Så som ISO 8859-1 är tänkt för västeuropeis-ka språk har de övriga andra inriktningar. T. ex.är ISO 8859-3 till för sydeuropeiska språk ochISO 8859-6 för arabiskt alfabet.

Att ISO 8859-1 kallas för Latin-1 är för att detär den första av dem som är till för språk medlatinskt alfabet.

4.8.2 Microsoft Windows

Microsoft har använt en del egna utökningar avISO-8859-familjen. Den viktigaste av dessa ärwindows-1252 som bygger på Latin-1.

Den innehåller alla skrivtecken som Latin-1gör, men ersätter en del av kontrolltecknen 128–159 med ytterligare skrivbara tecken, t. ex. C, †,h, ž och Ÿ, som inte finns med i Latin-1.

Den kallas ibland även för WinLatin1, menwindows-1252 är det enda namn för denna tec-kenkodning som Microsoft har registrerat hosIANA.

I MS Windows-världen kallas denna tecken-kodning märkligt nog ibland för »ANSI« (såsomden amerikanska standardiseringsorganisationenAmerican National Standards Institute), trots attdet inte är någon ANSI-standard!

Eftersom den liknar Latin-1 så mycket finns detrisk för sammanblandning. Ibland sprids filer frånMS Windows-världen med felaktiga etiketter sompåstår att texterna är skrivna med Latin-1 fast detegentligen är windows-1252 vilket kan ställa tillmed problem.

4.9 Vad är olika tecken?

Det är inte i första hand det grafiska utseendetsom avgör vad som ska räknas som varianter avsamma tecken eller som ska räknas som olika tec-ken. T. ex. är a och a samma tecken (I UnicodeLATIN SMALL LETTER A, tecken 97) trots att deser olika ut.

Däremot är svenska A och grekiska A olika tec-ken (tecken 65: LATIN CAPITAL LETTER A re-spektive tecken 913: GREEK CAPITAL LETTER

2Utom ISO 8859-12 som inte finns.

figur 4.6Figur 4.6: Figur 4.6

ALPHA) trots att de (beroende på typsnitt) kan selikadana ut. (Att de är olika märks om inte annatpå motsvarande gemena bokstäver a och α .)

Samma tecken kan också se olika ut i olika posi-tioner i texten. Ett f följt av ett i blir t. ex. ofta ensammanhängande ligatur fi (se uppförstoringen ifigur 4.6), men det räknas ändå som två olika tec-ken. Många arabiska bokstäver har olika formerberoende på om de kommer i början, mitten ellerslutet av ett ord.

Termen glyf används ibland för ett specifikt gra-fiskt utseende, till skillnad från den mer abstraktatermen tecken.

4.9.1 Samma tecken i ASCII

Med Unicode görs minst lika mycket skillnad påolika tecken som görs när man sätter text i tryck.Men i ASCII finns inte lika många särskillnader.Där finns t. ex. bara ett tecken - trots att man itryck skiljer på olika långa sådana streck t. ex. iabc-bok (kortare bindestreck) och kl. 13–15 (läng-re intervalltecken).

Ett annat exempel är citattecken. På t. ex. eng-elska så används olika citattecken före och eftercitat. Det kan se ut “like this” eller ‘like this’. Hurskillnaden ser ut skiljer sig åt i olika typsnitt. I fi-gur 4.7 finns ett par rätt olika exempel.

På skrivmaskiner nöjde man sig dock med ra-ka neutrala citattecken som skulle gå lika braatt använda både före och efter, och så är det iASCII och t. ex. Latin-1 också: "like this" eller'like this'. (Citattecknen är tecken 34 och 39i figur 4.2.)

I ASCII finns det dock även grav accent (tec-ken nummer 96 i figuren). Ibland kan man stötapå text som använder den som citatstart så detär skrivet `like this'. Detta ser rätt skevt ut,och är inte att rekommendera, men förr fanns deten hel del fonter där tecknet ' inte var rakt, utanvinklat, så då såg det helt OK ut.

“quote”“quote”

Figur 4.7: Hur tecknen för startcitat och slutcitatskiljer sig åt skiljer sig i olika typsnitt. De två exemp-len här är Helvetica och Palatino.

39

Page 40: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

4. TECKENREPRESENTATION

En apostrof, som i »don’t« är samma teckensom ett slutcitattecken. I Unicode beskrivs teck-net som RIGHT SINGLE QUOTATION MARK, mendet används även för apostrof. På svenska kan förövrigt detta tecken användas både före och eftercitat: ’så här’.

Programspråk använder sällan tecken utan-för ASCII i speciella betydelser, så källkod tillprogram innehåller vanligtvis bara ASCII utomkanske i textsträngar och kommentarer.

4.10 Språkinställningar

En fil med vanlig text har i allmänhet ingen in-formation i sig om vilken teckenkodning den an-vänder. En fil med två bytes, 241 och 214, kanskeär en Latin1-fil med texten »ñÖ«, eller kanske enISO-8859-7-fil med de grekiska bokstäverna »ρϕ«eller kanske en ISO-8859-5-fil med de kyrilliskabokstäverna »��«3 eller något helt annat!

Program som gör något med textfiler måste oftaveta vilken teckenkodning de är lagrade med. Omsort ska kunna sortera en fil med en sådan rad såspelar det ju t. ex. roll om första tecknet där är ñvilket antagligen ska sorteras likadant som n.

Dessutom måste de ibland veta vad det är förspråk för att rätt kunna behandla en text.

Dessa inställningar kallas för ens locale och manhar standardinställningar för detta som gäller omman inte säger till om annat.

Dessa inställningar kan även ändra vilket språkprogram ska använda i sin output ifall program-met har översatts till flera olika språk. Program-met läser av användarens språkinställningar ochändrar beteende utifrån det.

4.10.1 Språkinställning i Gnome

Om du normalt vill att datorn ska prata svenska(eller något annat språk) med dig så kan du stäl-la om språk från inloggningsrutan innan du loggarin. (Du får en fråga om det bara är under just den-na session du vill använda detta språk eller om duvill ändra så att detta blir det normala för dig.)

4.10.2 Hur en locale ser ut

En angivelse av locale kan se ut i stil medpt_BR.iso8859-1 vilket betyder brasiliansk por-tugisiska kodat enligt Latin-1.

Först kommer en beteckningen för vilket språkdet är. I förra kapitlet, på sidan 32, finns en listaöver några av dessa språk. Till detta fogas även vil-ket land det gäller. Landskoderna kan man t. ex.känna igen från toppdomänerna på Internet där

3Vilket betyder igelkott på ryska!

Tabell 4.1: Koder enligt ISO 3166-1 för några avvärldens och Europas största länder, samt de skan-dinaviska länderna

AZ AzerbajdzjanBD BangladeshBE BelgienBR BrasilienBG BulgarienCD Kongo-KinshasaDK DanmarkEG EgyptenET EtiopienPH FilippinernaFI FinlandFR FrankrikeGR GreklandIN IndienID IndonesienIR IranIS IslandIT ItalienJP JapanCN KinaMX MexikoNL Nederländerna

NG NigeriaNO NorgePK PakistanPL PolenPT PortugalRO RumänienRU RysslandCH SchweitzRS SerbienES SpanienGB StorbritannienSE SverigeTH ThailandCZ TjeckienTR TurkietDE TysklandUS USAUA UkrainaHU UngernVN VietnamBY VitrysslandAT Österrike

.se är Sverige osv.4 I tabell 4.1 återges en delav landskoderna. Dessa standarder är regleradeav den internationella standardiseringsorganisa-tionen ISO.

Både språk och land anges alltså. Några exem-pel:

• sv_SE : Svenska i Sverige• sv_FI : Finlandssvenska• en_GB : Brittisk engelska• en_ZA : Sydafrikansk engelska• es_ES : Spanska i Spanien• es_AR : Spanska i Argentina• fr_CA : Franska i Kanada• zh_CN : Kinesiska i Kina• zh_TW : Kinesiska i TaiwanObservera att språk och land inte nödvändigt-

vis har samma tvåbokstavsförkortning när ordenär liknande. T. ex. har danska språket koden »da«och Danmark har »DK«.

Till detta lägger man en punkt och en tecken-kodning, t. ex. .iso8859-1 eller .utf8, så en full-ständig locale kan se ut som sv_SE.utf8. (Detfinns även locales som har andra slags namn.)

I många fall spelar det ingen roll vilket landman anger. Det är nog t. ex. knappast många pro-gram som beter sig olika om man har talat om attman vill ha rikssvenskt eller finlandssvenskt be-teende. Det betyder inte att man kan sätta ihop

4I det sammanhanget används dock inte förkortningen GBför Great Britain, utan .uk för United Kingdom, och .us an-vänds inte så mycket.

40

Page 41: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

4.11. Olika teckenkodningar i Emacs

lands- och språkbeteckningar hur som helst i enlocale. Med kommandot locale -a listas alla gil-tiga locales.

4.10.3 Att sätta om locale temporärt

Med LANG=〈locale〉 〈kommando〉 kan man utföraett kommando med en annan locale än sin nor-mala. I exemplen i figur 4.8 kan man se hur detpåverkar både vanlig output och felmeddelanden.Ändrar man sin normala locale före inloggningkommer det alltså inte bara att påverka det gra-fiska gränssnittet, utan även vad skalkommandonskriver ut.

4.10.4 Sortering

Hur text ska sorteras är språkspecifikt. På svenskasorterar vi åäö i slutet av alfabetet, medan t. ex.tyskarna som också använder ä och ö sorterar des-sa som a och o.

I uppgift 3.35 sorterade du svenska ord menmed engelska språkinställningar fick du en sorte-ring där åäö sorteras som aao i stil med hur visorterar tecken som éèêë likadant som vanligt e.

Genom att sätta om LANG ändras dock även hursort sorterar. Här sorteras samma rader två gång-er, först på svenska och sedan på engelska:

$ LANG=sv_SE.utf8 sort /tmp/filcitronzebraåsnaäpple$ LANG=en_US.utf8 sort /tmp/filäppleåsnacitronzebra

Sorteringsreglerna för en del språk kan vara rättkomplicerade. Ibland vill man sortera bara för attföra ihop likadana rader, och då är det onödigt attanvända så komplicerade sorteringsregler som na-turliga språk ofta har. Då kan man använda en sär-skild locale »C« vilket ger enklast möjliga sortering.Raderna jämförs bara byte för byte enligt de nu-meriska koderna. (Det innebär t. ex. att stora ochsmå bokstäver sorteras olika.) Om det är en storfil kan man märka att en sådan enklare sorteringkan gå mycket snabbare.

4.10.5 När använda detta?

I de flesta fall kommer du inte behöva bry dig omdessa språkinställningar. Du kommer knappast hanån nytta av att köra wc på nederländska en speci-fik gång så att det står »totaal« i summeringsraden

istället för »total«, utan det räcker med att en gångför alla tala om vilket språk du ha.

Ett viktigt undantag är sortering. Du bör tänkapå hur sorteringar sker och veta hur du kan ställaom LANG för att få olika sorteringar, inklusive denrent »datoriska« med LANG=C som inte tar hänsyntill något särskilt språks sorteringsregler.

Det gäller förstås också att sätta teckenkod-ningen rätt! Om en fil är lagrad i Latin-1 bety-der det bl. a. att koden 224 där betyder à och attkoden 227 betyder ã. (Se figur 4.3!) Om dessatecken ska sorteras likadant så måste sort till attbörja med veta teckenkodningen. Annars har deningen anledning att behandla 224 och 227 lika-dant.

4.10.6 Hur ett skalkommando ser ut

Med denna nya ingrediens i skalkommandona ärvår nuvarande sanning om hur de ser ut så här: Etthelt kommandorör består av en mängd komman-don avskilda av lodstreck (|). Det första komman-dot kan följas av <〈filnamn〉 och det sista kom-mandot kan följas av >〈filnamn〉.

Varje individuellt kommando i ett sådantkommandorör kan enligt tidigare se ut som〈kommandord〉 〈väljare〉 〈argument〉, men dess-utom kan det alltså tillkomma LANG=〈nånting〉 ibörjan. Detta hör då bara till just det komman-dot och inte till ett helt kommandorör. Om man iett längre kommandorör vill ha en sortering medt. ex. locale C blir det alltså

... | LANG=C sort | ...och det är då bara sort som körs med annan localeän den normala. Kommandon tidigare och senarei kommandoröret påverkas inte.

4.11 Olika teckenkodningar iEmacs

Emacs kan läsa och skriva filer med flera olikateckenkodningar. Ofta kan den gissa rätt på vil-ken teckenkodning en viss fil är skriven med. Allabuffertar i Emacs får innehålla vilka tecken somhelst som Emacs kan hantera. Det är först närman försöker spara en fil som det krävs att allatecken i bufferten finns med i den teckenkodningsom man ska spara filen med. Om det inte är såtalar Emacs om detta och låter en välja en annanteckenkodning.

Man kan också tala om explicit vilken tec-kenkodning man vill använda innan man sparargenom att använda Options Multilingual Environment

Set Coding Systems For Saving This Buffer .Till vänster i informationsraden anger Emacs

vilken teckenkodning som i första hand ska an-vändas när en viss buffert sparas till fil (1 = ISO-8859-1, U = Unicode, . . . ).

41

Page 42: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

4. TECKENREPRESENTATION

$ ls xxls: cannot access xx: No such file or directory$ LANG=fr_FR.utf8 ls xxls: impossible d'accéder à xx: Aucun fichier ou dossier de ce type

$ dateThu Sep 13 12:45:04 CEST 2012$ LANG=es_ES.utf8 datejue sep 13 12:45:13 CEST 2012$ LANG=fi_FI.utf8 wc *.txt

4552 35715 235593 ivt2-svenska.txt40 317 2106 rummet.txt

3594 26461 148488 wonderland.txt8186 62493 386187 yhteensä

Figur 4.8: Några exempel på hur olika kommandon ger olika texter ifrån sig beroende på vilken locale som gäller.(I det sista exemplet märks skillnaden bara på »yhteensä« istället för »total«.)

I samma meny finns även besläktade komman-don, t. ex. för att tala om uttryckligen vilken tec-kenkodning en fil har ifall Emacs gissar fel.

4.12 Att konvertera mellanteckenkodningar

Ett program som konverterar mellan tecken-kodningar är iconv. Det kan användas somiconv -f latin1 -t utf-8 foo.txt för attkonvertera filen foo.txt från Latin-1 till UTF8och skriva ut resultatet till standard output.

Om man utelämnar argumentet tas input istäl-let från standard input.

Man kan ange namn på teckenkodningarna pålite olika sätt. Istället för »latin1« kan man skrivat. ex. »iso-8859-1« eller »iso8859-1«.

Default, dvs. vad som händer om man inte sä-ger till om något annat, är att ens normala tecken-kodning (enligt ens locale) används, så om man in-te använder väljaren -f omvandlar iconv från ensvanliga teckenkodning, och om man inte använ-der väljaren -t omvandlar iconv till ens vanligateckenkodning.

Ett annat sätt att konvertera är att öppna fileni Emacs och så spara den igen efter att man ställtom teckenkodning.

4.13 Att skriva tecken i Emacs

4.13.1 C-x 8

Om du behöver skriva in tecken som du intehittar på tangentbordet så finns det flera Emacs-kommandon som börjar med prefixet C-x 8 ochföljs av ett eller flera tecken. Med C-x 8 / O kanman t. ex. skriva Ø och med C-x 8 L kan manskriva £.

I synnerhet finns C-x 8 RET med vilket mankan skriva vilka tecken som helst genom att angederas Unicode-namn. Riktigt alla tecken finns in-te i fonten som Emacs använder. Okända teckenvisas som rutor med hexadecimala koder i.

4.13.2 Inputmetoder

Om man vill skriva en hel text med något annatskriftsystem, som t. ex. ryska eller kinesiska tec-ken, så kan man använda en särskild inputmetod.

Inputmetoden definierar vilka tecken som ge-nereras när man trycker på olika tangenter. Funk-tionen Select Input Method finns i menyn Options

Multilingual environment och där finner man även ettkommando för att beskriva en viss inputmetod(C-h I).

Det finns olika slags inputmetoder. T. ex.:• Prefix- och postfixmetoder där man fram-

förallt kan skriva bokstäver med accen-ter genom att skriva något särskilt förerespektive efter bokstaven. Inputmetodengerman-prefix gör t. ex. så att "A genererarÄ men även så att "s genererar ß.

• Tangentbordslayouter. Om man t. ex. kanlayouten på ett vanligt ryskt tangent-bord, kan man använda inputmetodencyrillic-jcuken för att tangenterna ska ge-nerera det tecken som tangenten på motsva-rande position ger på ett ryskt tangentbord.

• Translitterering. Med cyrillic-translittrycker man t. ex. på tangenterna »Shostako-vich« för att skriva »Xostakoviq«.5

• För att skriva ideogram, t. ex. kinesiska, finnsdet dels inputmetoder där man först angerordets fonetik, dels sådana där man först

5Detta följer en engelsk translitterering. På svenska skulleman oftast skriva »Sjostakovitj«, och i vetenskapliga samman-hang translittererar man »Šostakovic«.

42

Page 43: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

4.14. Hos oss

anger några av delarna i det grafiska tecknet.I båda fallen finns det i allmänhet flera möj-liga tecken som kan passa in. Man får upp enlista över sådana från vilken man får välja.

4.14 Hos oss

På våra GNU/Linux-datorer använder vien_US.UTF-8 som normal locale, dvs. ameri-kansk engelska kodad med UTF-8.

43

Page 44: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 4: Teckenkodningar

Redovisning

När ett skalkommando efterfrågas ska du ge even-tuell output från det kommandot också.

Gör först cd introduktion-till-datateknikoch ha sen den katalogen som aktuell katalog vidalla skalkommandon du ger i denna labb!

Skicka svar i mail till Per.

Tecken och bytes

Hittills har du bara räknat ord och rader med wc,men det kommandot kan även räkna tecken. Väl-jaren -c har traditionellt använts till detta, meneftersom den funnits med sedan urminnes tiderså räknar den helt enkelt antal bytes, vilket varsamma sak då.

Uppgift 4.1 Ge ett kommando för att räkna an-tal bytes i filen konto.txt som ligger i din hem-katalog.

(Missa nu inte vad som står om aktuell katalog ireglerna under Redovisning ovan! Du ska inte ståi den katalog där den filen ligger, men ändå skrivaen korrekt relativ sökväg.)

Med nyare kodningar som UTF-8 kan anta-let bytes och tecken skilja, så i operativsystemetGNU har wc fått en ny väljare som förstår sig påsånt och verkligen räknar tecken (characters).

Se efter med wc --help vad den väljaren he-ter.

Uppgift 4.2 Ge ett kommando som räknar antaltecken i den där filen konto.txt.

Uppgift 4.3 Hur stor skillnad blev det i bytesoch tecken? Varför just så stor? Vad är det detfinns så många av?

Teckenkodningar i Emacs

Det finns en textfil i katalogen ~ellen/fotografier. Gör cat på den i skalet. (Användkomplettering för att se vad filen heter.)

Några tecken kommer inte att visas rätt, ef-tersom den filen inte är kodad enligt UTF-8. Ko-piera den filen till din kurskatalog. (Använd ».«

som sistaargument till cp för att kopiera den tillaktuell katalog.)

Öppna nu din kopia av filen i Emacs. Emacskänner igen vad det är för teckenkodning och vi-sar därför alla bokstäver rätt.

Uppgift 4.4 Vad är det för teckenkodning ochhur kan du se i Emacs att det är det?

Härnäst gör du Options Multilingual Environment

Set Coding Systems For Saving This Buffer (eller använ-der motsvarande kortkommando C-x RET f) föratt ange vilken teckenkodning du vill att denna filska ha och svarar utf-8. Spara filen.

Du har nu omvandlat den filen till UTF-8. (Kol-la för säkerhets skull med cat i terminalen också.)

Öppna /local/kurs/ids/rysk.txt i Emacs.Som man kan gissa av namnet så innehåller denen text på ryska med kyrillisk skrift. Emacs gissardock fel på vad det är för kodning av den filen såtecknen ser inte alls ryska ut.

I ett sånt här läge finns det ett särskilt komman-do för att genast öppna om samma fil men då talaom vad det är för teckenkodning i den. Sök uppdet kommandot i Emacs-menyerna i samma me-ny som nyss.

Använd det kommandot för att öppna om den-na fil. Ange den teckenkodning i ISO 8859-seriensom är till för kyrillisk skrift. Sök upp informationpå nätet om vilken teckenkodning det är.

Uppgift 4.5 Vad heter den teckenkodningenoch var hittade du information om den?

Uppgift 4.6 Hur visas den teckenkodningen iinformationsraden i Emacs?

Uppgift 4.7 Sök upp första ordet i den filen iGoogle. Vad heter denna figur på svenska? (Dukan t. ex. använda dig av Wikipedia, där det ivänsterspalten finns länkar till motsvarande sidorpå andra språk.

Öppna härnäst filen /local/kurs/ids/small.txt. Här är det flera tecken som inte visas som detvar tänkt.

Det står nånting om latin-1 i texten. Normaltså har du sett att Emacs känner igen sånt av sigsjälvt, men kanske inte i detta fall? Öppna omfilen som en latin-1-fil istället.

44

Page 45: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inputmetoder i Emacs

Uppgift 4.8 Hur gjorde du det?

Det torde bli klart läsligare, men inte helt.

Uppgift 4.9 Det är ett tecken som fortfarandeinte är rätt. Hur visas det i Emacs-bufferten nu?

(Det blir inte bra om du kopierar tecken till dittsvar. Då får du samma tecken där också, men detkanske visas på något helt annat sätt i det programjag läser ditt mail med. Så skriva av beteckningenistället.)

Det saknade tecknet var tänkt att vara ett C,som inte finns i latin-1! Tydligen är denna fil intekodad med Latin-1 trots allt, utan med en tec-kenkodning som är ungefär som Latin-1. (Ochdet förklarar att Emacs inte kände igen det somLatin-1.)

Uppgift 4.10 Nästa gissning är att filen är ko-dad med en vanlig teckenkodning under Micro-soft Windows som liknar Latin-1. Vad heter den?Prova denna gissning genom att öppna om filenpå det sättet.

Detta stämde visst.

Uppgift 4.11 Hur visas denna teckenkodning iinformationsraden i Emacs?

Inputmetoder i Emacs

Öppna en ny fil uttal.txt där du ska skrivaen kort fonetisk skrift med uttalsangivelser enligtIPA, nämligen »læNgwIdZ« (= language).

Några av tecknen finns inte på tangentbordet.Lös detta genom att ange en särskild inputme-tod i Emacs med Options Multilingual Environment

Select Input Method . Välj metoden ipa. Att du hardetta aktiverat visas med IPA i informationsraden.

Nu tolkar Emacs det du skriver på ett lite spe-ciellt sätt som ska underlätta att skriva IPA. T. ex.kan tecknet æ skrivas med »ae«. Med C-h I (ver-salt I!) får du en beskrivning av en inputmetod.Tryck på retur för att få just denna inputmetodbeskriven så får du veta hur du kan skriva de öv-riga speciella tecknen i denna text. Märk medandu skriver att det i ekoarean framgår vad det finnsför möjligheter.

Mer tecken i Emacs

Om man placerar markören på ett visst teckeni Emacs kan man få information om det teck-net med C-u C-x = (tre tecken). I informationenman får upp står bland annat tecknets namn.

C-x C-+ Zooma inC-x C-- Zooma utC-x C-0 Normalläge

Figur 4.9: Zoomkommandon i Emacs. Den sista ärmed siffran 0, inte bokstaven O.

Uppgift 4.12 Hur lyder den information du fårupp om det där sista tecknet i förra uppgiften (Z)när du använder detta?

Öppna en ny fil vinter.txt (i kurskatalogen)och skriv »Snögubbe:« där. Använd C-x 8 RETför att därefter skriva Unicode-tecknet SNOW-MAN. Spara filen.

Om du inte är mycket skarpsynt så har du an-vändning för kommandon i figur 4.9 för dennauppgift:

Uppgift 4.13 Hur många knappar har snögub-ben och hur många snöflingor är det?

Kör i skalet ett kommando od -c vinter.txtsom visar innehållet i filen, byte för byte. ASCII-tecken visas som tecken och övrigt visas som tal(skrivna oktalt).

Uppgift 4.14 Hur många bytes behövs för bok-staven ö? (Dvs. hur många bytes ligger mellan noch g som tar en byte var?)

Uppgift 4.15 Hur många bytes behövs för snö-gubben?

Uppgift 4.16 Sist kommer \n. Vad betyder det?

iconv

Uppgift 4.17 Ge ett iconv-kommando för attdirekt skriva ut Ellens fil i uppgift 4.4 kodad medUTF-8 i terminalen. (Använd hennes oförändradeoriginal – inte din kopia.)

Filen /local/kurs/ids/nordic-authors.txtinnehåller namnen på några nordiska författare,listade en per rad med efternamn först.

Uppgift 4.18 Vilken teckenkodning använderden filen?

Uppgift 4.19 Ge ett skalkommando som spararen ny fil authors.txt som innehåller /local/kurs/ids/nordic-authors.txt omvandlad tillUTF-8.

(Om du har gjort rätt ska filen se rätt ut t. ex.om du tittar på dess innehåll med cat.)

45

Page 46: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 4: TECKENKODNINGAR

Olika locale

Se noga upp med att du skriver locale-namnen rätti dessa uppgifter! Skriver man fel blir det inget fel-meddelande, utan bara ett felaktigt resultat!

Uppgift 4.20 Vad är koden för landet Sverige?

Uppgift 4.21 Vad är koden för språket svenska?

Uppgift 4.22 Vad blir därmed en fullständig lo-cale för svenska i Sverige skrivet med UTF-8?

Uppgift 4.23 Med locale -a kan man lista al-la giltiga locales. Hur många sådana finns det?

Uppgift 4.24 Vilka giltiga locales finns det förUSA här? Vilka språk använder dessa?

Uppgift 4.25 Vilka giltiga locales finns det förSverige här?

Uppgift 4.26 Ge ett kommando för att visa dinnya fil authors.txt sorterad med svensk locale.

På svenska har traditionellt v och w sorteratssom samma bokstav, men numer vacklar bruket.Senaste upplagan av Svenska Akademiens ordlis-ta sorterar w för sig, som en egen bokstav, menibland samsorteras fortfarade v och w, i synnerhetför namn.

Uppgift 4.27 Hur beter sig svensk sortering härvad gäller v och w?

Uppgift 4.28 Ge ett kommando för att sorterasamma författarlista med dansk sortering! Vilkaskillnader blir det då jämfört med svensk sorte-ring?

Du har sedan förra kapitlet en fil rummet.wordsi din kurskatalog.

Uppgift 4.29 Ge ett kommando som ger en listaöver de tio sista orden i en svensksorterad listaöver raderna i rummet.words, samt resultatet.

Några rader där är dubbletter. Det finns ettkommando uniq som man kan använda som fil-ter för att ta bort dubblettrader som kommer ef-ter varann i en input.

Uppgift 4.30 Ge ett kommando som sorterarraderna i rummet.words (på svenska), tar medvarje ord bara en gång, och listar de tio sista ordenav detta. (Visa som vanligt både ditt kommandooch dess resultat.)

I den listan ska inga dubbletter finnas. (Däre-mot kan samma ordform finnas som två olika ord-klasser. Då är ju raderna inte dubbletter!)

Uppror!

Uppror! är en science fiction-roman från 1975av pseudonymen Ferdinand Fitzschkloff.6 Densprids med författarens godkännande på http://runeberg.org/uppror/ på webben.

Gå dit i en webbläsare och välj (download)(långt ner på sidan) och sen All OCR-text för attladda ner en textfil uppror.txt med bokens in-nehåll. Välj »Save File« istället för att öppna den iEmacs. Dessa filer är skapade med OCR (OpticalCharacter Recognition) från inskannade boksidor,så det kan ha blivit fel ibland.

Flytta denna uppror.txt till din kurskatalogoch öppna den sedan i Emacs. Precis efter detU på informationsraden som anger Unicode stårhär (DOS). Det visar att denna fil har nyradstec-ken så som DOS och MS Windows gör, dvs. medCRLF.7

Genom att klicka med musen på detta »DOS«så byter du vilken nyradskonvention du vill ha ifilen. Prova det!

Uppgift 4.31 Vad står det då istället för »DOS«?Vad betyder det?

Klicka igen. Då ska den parentesen helt för-svinna och ersättas med bara ett kolon. Då hardu ställt in att du vill ha normala nyrader (som iUnix) i den filen. Eftersom filen på disk inte är sånså räknas den bufferten som osparad. Spara den.

Uppgift 4.32 När du sparade filen ska du ha fåttdet gamla innehållet sparat i en backupfil. Kon-trollera att du har den. Vad heter den?

Uppgift 4.33 Ge ett kommando som talar omhur många bytes det är både i din nya uppror.txtoch den backupfil som skapades (som har kvar degamla nyraderna). (Använd ett jokeruttryck.) Kandu förklara varför skillnaden blev just så stor?

Uppgift 4.34 Hur lyder den första raden iuppror.txt som innehåller texten »special«? Gekommando som tar fram detta, samt komman-dots resultat.

Kontrolltecken

Ett exempel på kontrolltecken i ASCII är teckennummer 27 = Escape = [ESC].

Man kan lägga in det tecknet i en buffert iEmacs genom att trycka C-q ESC . KommandotC-q läser nämligen in ett tecken och lägger indet i bufferten, även om det är ett sådant tecken

6= Gunnar Gällmo.7Om man tittar på samma fil i Emacs under MS Windows

skulle det inte stå nåt särskilt, för då skulle det vara det nor-mala. Däremot skulle Emacs skriva (Unix) där för filer sombara har [LF] för nyrad.

46

Page 47: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kontrolltecken

Figur 4.10: Ett par vikare, tagna från Wikipedia, som i sin tur har tagit bilden från The Fisheries and FisheriesIndustries of the United States av George Brown Goode (1887).

som normalt skulle ha en annan betydelse – q iC-q står för quote. (Normalt så har ESC iställeteffekten att fungera som Meta- till nästa tecken iEmacs, så ESC > är som M-> .)

Öppna en ny fil konstig.txt i Emacs och skrivdär ett ESC-tecken följt av exakt [42m (fyra tec-ken till efter ESC-tecknet).

Uppgift 4.35 Hur visas det ESC-tecknet iEmacs?

Prova att förflytta dig tecken för tecken överdetta speciella tecken för att se att det verkligenär ett tecken där.

Uppgift 4.36 Prova cat konstig.txt i en ter-minal. Vilken effekt hade den konstiga raden förterminalfönstret?

Detta är ett exempel på specialfunktioner somkontrolltecken kan ha, i detta fall med på hur ter-minalen beter sig.

* * *Kopiera /local/kurs/ids/djur.txt till dinkurskatalog och öppna den i Emacs. Där står tvåkolumner med djurnamn med ett TAB-teckenmellan sig. I den sista raden är första ordet sålångt så att andra kolumnen visas längre till hö-ger, men där som på de övriga raderna är detbara ett TAB-tecken mellan kolumnerna. Medcut -f 2 djur.txt får du ut bara de svenskanamnen.

Skriv till »fox« + TAB + »räv«.

Uppgift 4.37 Hur många TAB-tecken lades innär du tryckte på TAB?

Uppgift 4.38 Ge exempel på något cut-kommando som nu inte ger önskat resultat.

Emacs vet inte att detta var tänkt att bli enfil med TAB-kolumner, utan gör som den brukarmed TAB-tangenten, dvs. går fram till »nästa stäl-le« (beroende på hur raden ovan ser ut) oavsetthur många tecken som den behöver lägga in i buf-ferten för att komma dit.

För att verkligen lägga in exakt ett TAB-teckenbehöver du använda C-q igen.

Lägg till två till rader med djur: »ringed seal« =»vikare« och »bat« = »fladdermus«.

Fixa till så att alla rader stämmer och kolla så attcut -f 2 djur.txt ger alla svenska namn (ochinget annat).

Uppgift 4.39 Om du använder det där Emacs-kommandot för att lägga in ett tecken (somt. o. m. kan vara ett kontrolltecken) i en bufferttill att lägga in RET (retur), hur visas det tecknetdå i bufferten?

Uppgift 4.40 Varför just så? Var står det omdetta i kompendiet?

Uppgift 4.41 Tryck M-x i Emacs. Då hamnardu i minibufferten och får skriva namnet på ettEmacskommando där. Skriv »whitespace-mode«(du kan använda komplettering) och avsluta medRET . Vad verkar detta ha för effekt?

47

Page 48: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 4: TECKENKODNINGAR

Snart slut

Uppgift 4.42 Klipp ut de svenska namnen fråndin djur.txt och avstava dem med avstava frånförra kapitlet. Ange såväl ditt kommando somdess resultat.

Uppgift 4.43 Ge ett skalkommando som läggertexten »räksmörgås« i en ny fil shrimp.txt kodadenligt Latin-1.

Om du gjort rätt ska du t. ex. kunna titta på denpå samma sätt som i uppgift 4.17.

Uppgift 4.44 Hur många tecken är det på dennäst sista raden i /local/texts/jabberwocky?Ge skalkommando och dess resultat.

Uppgift 4.45 Räkna för hand också för att se attdin lösning till förra uppgiften stämmer. Hm, ärdet inte ett ifrån? Hur kommer det sig?

Uppgift 4.46 Hitta på en uppgift som kan lösasgenom att kombinera minst två kommandon somvi har haft med hittills i ett rör. Lös din egen upp-gift.

Om du vill kan du använda dig av vilka filersom helst i din kurskatalog eller i /local/kurs/ids/ som input. (Trots att detta kapitel handlarom teckenkodningar behöver den sista uppgifteninte ha med sånt att göra.)

48

Page 49: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 5

Dokumentation och textbearbetning iskalet

5.1 Dokumentation

Även när det finns bra dokumentation till pro-gram, vilket tyvärr inte alltid är fallet, är inte alltidlätt att veta var man ska finna den. Det finns olikasystem för hur program som vara dokumentera-de. För större interaktiva program som Firefox el-ler Emacs väntar man sig i första hand att finna enhjälpfunktion inne i programmet för att få hjälpeller för att få läsa dokumentationen, och mankan leta efter en hjälpmeny. För ett kommandoför kommandoraden som cat eller ls har du ti-digare sett att det är standard i GNU att de skri-ver ut en hjälptext om de får en särskild väljare--help, men den huvudsakliga dokumentationenfinns istället separat.

5.1.1 Info

I GNU, som vi kör, skrivs sådan dokumentationi ett format som heter Texinfo, från vilket mankan producera bland annat tryckta böcker och In-fo, som enklast läses i Emacs. Det är ett slags hy-pertext, dvs. texter med länkar till andra texter (istil med webben).

5.1.2 man-sidor

Det traditionella Unix-sättet att dokumenteraprogram man kör i skalet är istället med man-sidoroch en del program som du använder kommer ba-ra vara dokumenterade på det sättet.

Man-sidor är linjära texter med början, mittenoch slut, utan länkar. Även program som har do-kumentation i Info brukar ofta ha man-sidor ock-så, men då är oftast dokumentationen i Info bådeutförligare och lättare att förstå.

Det finns ett uppslag (en man-sida) för var-je program, systemanrop, osv., och ett komman-do man med vilket man tittar på dessa. För attse man-sidan för programmet cat ger man t. ex.kommandot man cat .

I figur 5.1 visas en uråldrig man-sida, nämligenden för wc i Unix version 7, från 1979! Den visarflera kännetecken för man-sidor. De är indelade iolika standardiserade avsnitt – här ses name, syn-opsis, och description.

Andra avsnitt som också ofta förekommer ärbl. a. see also med hänvisningar till annan doku-mentation, author för att ange programmets för-fattare, history för att säga något om programmetshistoria och bugs för att ange kända hittills ofixadefel i programmet.

Detta är en ovanligt kort man-sida, framföralltför att det finns så få väljare. Många kommandonhar många väljare som behöver varsin längre för-klaring.

5.1.3 Kommandosyntax

Avsnittet synopsis behöver du kunna tolka, ochdär används samma konventioner som ni sett ti-digare i avsnitt 3.9 på s. 28.

Eftersom både -lwc och name ... står inomhakparenteser i figur 5.1 behöver de inte varamed, så det kortaste anropet av kommandot ärbara wc . (Att använda wc utan argument är rim-ligt att göra som en del i ett kommandorör, dåinput hämtas från standard input.)

Punkterna visar att det kan förekomma fleraförekomster av det som står före punkterna. Mankan alltså köra programmet som wc 〈name〉 ellerwc 〈name〉 〈name〉 eller ha ännu fler namn. Attdessa namn ska vara namn på filer framgår i denföljande beskrivningen.

Beteckningen -lwc visar i kompakt form attväljarna -l, -w och -c finns tillgängliga så att eneller flera av dessa kan användas. Ofta listas in-te väljarna upp i synopsen, utan det står bara[OPTION]... där, och så listas de olika möjligaväljarna upp i beskrivningen istället.

Dessutom kan tecknet | användas för att visaalternativ och {} som parenteser.

49

Page 50: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

5. DOKUMENTATION OCH TEXTBEARBETNING I SKALET

WC(1) WC(1)

NAMEwc - word count

SYNOPSISwc [ -lwc ] [ name ... ]

DESCRIPTIONWc counts lines, words and characters in the named files, or in thestandard input if no name appears. A word is a maximal string of char-acters delimited by spaces, tabs or newlines.

If the optional argument is present, just the specified counts (lines,words or characters) are selected by the letters l, w, or c.

WC(1)

Figur 5.1: Man-sidan för wc i Unix v7 (1979)

Istället för att t. ex. ge två synopsrader till ettkommando, som

Usage: cp [OPTION]... SOURCE DESTor: cp [OPTION]... SOURCE... DIRECTORY

kan man till exempel ge samma informa-tion på en rad, med uttrycket cp [OPTION]...{ SOURCE DEST | SOURCE... DIRECTORY }.

5.1.4 Bläddring

Oftast är man-sidan flera sidor lång och man fårdå bläddra fram en sida i taget. Man kan bläddraframåt med mellanslag och avsluta med q. Merhjälp om bläddringen får man med h.

5.2 Skalkommandon förtexthantering

I avsnitt 2.1.8 finns en genomgång av några skal-kommandon som gör saker med texter. Här är endel som tillkommit sedan dess, och en del nytt.

De flesta av dessa program är radorienterade,dvs. behandlar sin input en rad i taget. Det manvill sortera med sort ska t. ex. ligga uppdelat enenhet per rad.

Kommandon som läser text från standard inputbrukar oftast tolka argument som filnamn och omde får argument så läser de input från dessa fi-ler istället. Detta gäller t. ex. cut, head, more,sort, tail, uniq och wc.

5.3 cutIbland vid textbearbetning använder man textfilerdär varje rad består av flera fält. Med komman-dot cut kan man plocka ut ett eller flera fält där-ifrån. Fälten avdelas av ett visst tecken. Normaltär det TAB-tecknet, men man kan använda ett an-nat tecken och ge en väljare till cut som talar omvilket tecken som används.

Vilket eller vilka fält den ska skriva ut visar manmed väljaren -f med argument. Fälten är numre-rade från vänster till höger så att det första fältetär fält 1.

(Det går också att plocka ut vissa tecken frånen rad istället för vissa fält, t. ex. tecken 4–6. Sedokumentationen om du behöver detta!)

Se även paste!

5.4 echoKommandot echo ger tillbaka sina argument somoutput: echo 〈text〉. . .

Det kan vara praktiskt när man vill ge en spe-cifik text som input till ett kommando utan attbehöva skapa en fil med den texten.

Med väljaren -e tolkas vissa sekvenser som bör-jar med bakstreck speciellt, i synnerhet kan mandå skriva nyrad med \n (som i newline).

$ echo -e 'citron\npäron\nbanan' | sortbanancitronpäron

50

Page 51: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

5.5. grep

5.5 grep

Kommandot grep söker efter en visst mönstersom ges som första argument. Med flera argumentska övriga vara filer att leta i.

Bara de rader där den sökta texten finns medkommer ut.

Tidigare har vi bara sökt efter en fix text, mennågra tecken är speciella och kan användas förmer avancerade sökningar. Dessa söksträngar kal-las för reguljära uttryck och tecknen med särskildbetydelse kallas metatecken. På engelska heter detregular expression vilket ibland kortas till bara reg-exp eller regex. Även på svenska talar man oftaom regexpar.

Flera av dessa tecken är speciella i skalet, så oftabehöver man sätta sökmönstret inom citatteckennär man kör grep för att inte skalet ska tolka tex-ten speciellt.

5.5.1 Ett godtyckligt tecken: .

Punkten (.) matchar ett tecken vilket som helst.(Det fyller alltså samma funktion som frågeteckengör i jokeruttryck.) Så med b.x matchas »box«och »bmx«, samt även t. ex. »b%x« och »b x« (mel-lanslag är ett tecken det också).

5.5.2 Ett speciellt tecken: [ ] och [^ ]

Om man ska beteckna ett tecken som man villställa mer krav på använder man hakparenteser.Genom att räkna upp tecken inom [] kan manange ett av dessa tecken, så [Dd]ator matchar»Dator« och »dator« och [hmt]um[lm]a matchar»humla«, »humma«, »mumla«, »mumma«, »tum-la« och »tumma«.

Detta liknar hur man använder [] som joker-tecken. Precis som då kan man även ange inter-vall, så [0-9] betyder samma som [0123456789].Vill man ta med bindestrecket så får man sätta detförst eller sist: [._-] matchar ».«, »_« eller »-«.

En skillnad är att i reguljära uttryck kan mananvända ^ först för att negera en uppräkning avtecken, så [^@] matchar vilket tecken som helstutom @, [^aouå] matchar vilket tecken som helstsom inte är a, o, u eller å och [^0-9] matcharvilket tecken som helst som inte är en siffra.

5.5.3 Repetition med *

Med asterisken * efter något så säger man att det-ta får förekomma godtyckligt många gånger i detman söker efter. Godtyckligt många gånger kanvara noll, en, två, tre, . . . , gånger.

Så om man söker efter t. ex. »ar*gh« så bety-der det ett a följt av godtyckligt många r följt

av gh. Detta matchar textsträngarna »agh«, »argh«,»arrgh«, »arrrgh«, »arrrrgh«, osv.

Blanda inte ihop denna användning av * medjokerbetydelsen! I reguljära uttryck betyder inte* nånting för sig själv, utan det modifierar baradet som står precis innan.

Med »l[aeiouyåäö]*t« matchar man därföralla strängar som börjar med l, slutar med t ochdäremellan innehåller godtyckligt många bokstä-ver i den uppräknade listan. Detta matchar t. ex.»lat«, »låt«, men även korta »lt« och långa »layout«.

Genom att skriva de två tecknen .* kan manmatcha vad som helst. Det betyder ju vilket tec-ken som helst (punkten), hur många gånger somhelst (asterisken). Därmed matchar t. ex. uttryc-ket a.*ö vad som helst som börjar med a och slu-tar med ö, t. ex. »adjö«, »atollö« eller »a4! ö«.Observera att det även matchar bara »aö« – det»godtyckliga« kan vara ingenting alls.

5.5.4 Ankring med ^ och $

Metatecknen ^ och $ betyder början av raden re-spektive slutet av raden.

Så med t. ex. ^xyz hittar man rader som börjarmed xyz (radbörjan följt av »xyz«) och med xyz$hittar man rader som slutar med xyz (»xyz« följtav radslut).

Dessa båda tecken matchar alltså inget teckenalls på egen hand, utan ställer bara krav på var detövriga i uttrycket ska befinna sig. Man säger attdessa ankrar ett reguljärt uttryck.

5.5.5 Några väljare till grep

Tidigare har ni sett exempel på väljarna -c och -itill grep.

En annan användbar väljare till grep är -v somvänder på betydelsen av kommandot och iställettar fram alla rader som inte innehåller ett visst sök-mönster.

Kommandot grep visar ju hela de rader som in-nehåller det man sökt efter. Med väljaren --colormarkeras den del av raden som matchade ens sök-mönster i en särskild färg.

5.6 more

Kommandot more visar upp sin output i termina-len sida för sida så att användaren kan bläddra itexten, som i man-sidor med man. Det är ofta an-vändbart som sista delen i ett kommandorör somproducerar text, så det är inte ovanligt med kom-mandon som slutar med »| more«. Det finns däre-mot ingen vits med att stoppa in more före | eller> eftersom dess output då inte kommer att hamnai terminalen.

En typisk användning ser ut som

51

Page 52: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

5. DOKUMENTATION OCH TEXTBEARBETNING I SKALET

$ sort birds.txt | more

5.7 paste

Kommandot paste gör det omvända från cut, ge-nom att det sätter ihop fält från olika filer till enfil.

5.8 sort

Kommandot sort läser in rader från sin input ochskriver ut samma rader som output, men i en sor-terad ordning.

Kommandot tar hänsyn till vilka språkinställ-ningar man har för att göra sortering enligt någotvisst språks konventioner. Ifall ens syfte bara äratt föra samman likadana rader så kan man göraLANG=C sort som gör den enklaste sortens sor-tering, i storleksordning efter tecknens numeriskakoder. (Då sorteras till exempel lilla a och stora Aolika.)

Med väljaren -n sorterar den istället numeriskt,efter hur stora tal skrivna i siffror är. Då hamnart. ex. »9« före »10« vilket det inte gör när man jäm-för tecken för tecken.

5.9 tr

Kommandot tr byter ut tecken i input. Första ar-gumentet räknar upp tecken som ska bytas ut ochandra argumentet räknar upp vad dessa ska bytasmot.

$ echo 'Sju sjuka sjuksköterskor' | tr s zSju zjuka zjukzköterzkor$ echo 'uppercase vowels' | tr aeiou AEIOUUppErcAsE vOwEls

En del kontrolltecken kan skrivas som sekven-ser som börjar med bakstreck i argument till tr,däribland nyrad med \n och TAB med \t.

$ cat tripptripptrapptrull$ tr '\n' / <tripptripp/trapp/trull/

(Bakstrecket har specialbetydelse i skalet, sådet argumentet måste sättas inom citattecken.)

Man kan inte byta ut ett tecken mot flera, t. ex.byta ut alla »x« mot »ks«. I själva verket så är detenstaka bytes som byts ut, så tr fungerar inte bramed tecken som lagras i flera bytes, så som t. ex.åäö i UTF-8, vilket begränsar dess användbarhet!(Vi kommer se ett annat sätt att göra utbyten itext senare.)

5.10 uniq

Raderna i input till uniq kommer ut igen utomde rader som är likadana som raden innan.

Det är vanligt att kombinera detta med sorte-ring som ... sort | uniq .... Genom att sor-tera det som kommer in till uniq så kommer allalikadana rader att ha hamnat direkt efter varandraså att uniq kan ta bort så mycket som möjligt.

Ofta använder man detta när det egentligen in-te spelar någon roll vad det är för ordning, baradet är någon ordning så att likadana rader har förtssamman.

Med -c räknar uniq hur många rader det varockså.

Med väljaren -u skriver uniq bara ut de radersom var unika. Dvs. istället för att behålla en avflera likadana rader så behåller det inga rader allsi sådana fall.

Väljaren -d är motsatsen till -u. Nu skrivs barade rader ut som var duplicerade.

$ cat gumma.txtenlitenlitenlitengummamedenlitenlitenkatt$ uniq gumma.txtenlitengummamedenlitenkatt$ uniq -c gumma.txt

1 en3 liten1 gumma1 med1 en2 liten1 katt

52

Page 53: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

5.10. uniq

$ uniq -u gumma.txtengummamedenkatt$ uniq -d gumma.txtlitenliten

I exemplen ovan används uniq på rader sominte är sorterade. Det är ganska sällan man haranvändning för det. Vanligare är att man vill göraen lista över vilka ord som förekommer i den därfilen, och då får man lov att sortera raderna först:

$ sort gumma.txt | uniqengummakattlitenmed$ sort gumma.txt | uniq -c

2 en1 gumma1 katt5 liten1 med

$ sort gumma.txt | uniq -ugummakattmed$ sort gumma.txt | uniq -denliten

53

Page 54: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 5: Textbearbetning i skalet

Redovisning

Skicka mail till Per med svaren.När det inte står annat ska svaret fås fram ge-

nom ett eller flera skalkommandon. Ange bådedet resultat du fick och de kommandon du gavför att få fram det. Försök att bara använda ettkommando(rör) när det går.

Tänk på att använda citattecken runt argumentsom innehåller tecken som $[]*?\ och mellanslagså att de inte tolkas särskilt av skalet!

Info

Välj Help Read the Emacs Manual i Emacs.Du hamnar i ett system som heter Info där

dokumentationen till många program finns, där-ibland Emacs.

Nu ser du Info-dokumentet om Emacs. Obser-vera att det står »Info« i parentesen i informations-raden. Till vänster om det står »(emacs) Top«. Detvisar att Info-dokumentet du läser heter »emacs«och du befinner dig överst i det.

Efter förtugget kommer en lång meny. Cirka 60rader ner (gå ner en sida med PageDown eller C-vvid behov), under rubriken »Fundamental EditingCommands«, så ser du bland annat menyalternati-vet Basic. I beskrivningen till höger beskrivs dettasom »The most basic editing commands.« Välj Ba-sic och sen Erasing från den meny du då får upp.Då har du fått fram lite samlad information omhur man kan ta bort text i Emacs.

De olika noderna i ett Info-dokument hängerihop i ett träd. Överst ser du nu en särskild raddär det bland annat står »Up: Basic«, dvs. uppåt iträdet ligger den sida du var i senast, från vilkendu gick »ner« till denna sida. På samma rad som»Up« står finns även »Next« och »Prev« (= previ-ous) i en tänkt läsordning för avsnitten. Du kanfölja dessa länkar genom att klicka på dem ellerpå symbolerna , , . Gå till föregående,dvs. »Moving Point«.

Förutom att man kan röra sig framåt och bak-åt i den tänkta läsordningen kan man även bac-ka till varifrån man kom (»last«), oavsett hur mankom därifrån. Det gör man med vänsterpilenpå samma rad. Tryck på den nu så kommer du

Figur 5.2: Från xkcd av Randall Munroe. http://xkcd.com/912/

tillbaka till »Erasing Text«, eftersom det var därdu var senast.

En del Info-dokument har register (index) somman når med . Säg att du undrar vad detstår om stavningskontroll i Emacsdokumentatio-nen. Välj »spelling« i registret. Du kommer till ettavsnitt med rubriken »Checking and CorrectingSpelling«.

Uppgift 5.1 Ett kommando som nämns där be-skrivs som »Check and correct spelling of the theword at point«. Vad ska man trycka i Emacs föratt utföra detta?

Prova! Byt buffert till slaskbufferten *scratch*och skriv ordet speling där (felstavat på detta

54

Page 55: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

man

sätt!) följt av kommandot för att kontrollera stav-ningen. Du får upp ett antal rättelseförslag att väl-ja mellan. Förslag 0 är »spelling«. Tryck på 0 för atträtta din felstavning till detta.

Uppgift 5.2 Vad var förslag 4?

Uppgift 5.3 Enligt den fortsatta beskrivningenav kommandot så gör det ibland något annat änatt kontrollera ett ord. Vad och när?

Gå tillbaks till Info igen. Ett sätt är att byta tillden särskilda bufferten med namnet *info* pånågot av de vanliga sätten för att byta buffert. Ettannat är att använda C-h i som alltid tar en tillInfo.

I informationsraden står det »(emacs) Spelling«.Det heter den nod i Info som du tittar på just nu.Den första delen inom parentes visar vilket Info-dokument det ingår i.

Tryck på d för att komma till huvudkatalogen(directory) över Info-dokument. Här finns det enlång meny där de kommandon som är dokumen-terade i Info finns med. (Om man inte har startatInfo tidigare så är det hit man kommer om mantrycker C-h i . Annars kommer man tillbaka tilldär man var senast.)

Uppgift 5.4 Vad heter den Info-nod du nu tit-tar på? (Svaret står i informationsraden, med enförstadel (dokumentetets namn) inom parentes.)

Slå upp sort här. Istället för att leta efter deti den långa långa menyn så använd kortkomman-dot m för att välja nåt från menyn och svara sort.

Uppgift 5.5 Vad heter den Info-nod du nu tittarpå?

Notera att med »upp« nu kommer du inte till-baka till huvudkatalogen. Du följde en genvägsom gick en bit ner i trädet, och går du uppåt nukommer du till andra kommandon som också harmed sorterade filer att göra.

Uppgift 5.6 Ett av de andra kommandona hetershuf. Vilka övriga kommandon tas upp i sammakapitel om sorterade filer?

Bokstäver som kommandon: Normalt i Emacsså läggs skrivbara tecken som a, b, c, d in i buf-ferten när man trycker på dem. Men i speciellaEmacslägen som Info där man ändå inte skriver intext så är kortkommandona ofta bara en bokstav.

Genom att trycka h i Info får du veta mer omhur man manövrerar i Info helt från tangentbor-det.

Titta på dokumentationen för shuf.

Uppgift 5.7 Ge ett kommando för att skriva utraderna i din saga.txt i slumpvis ordning.

Uppgift 5.8 Ge ett kommando för att skriva uttalen 1–5 i en slumpvis ordning.

Uppgift 5.9 Ge ett kommando för att skriva uten slumpvis frukt från /local/kurs/ids/frukt.

Lös dessa tre uppgifter med bara ett komman-do, utan kommandorör. Du får lov att användaolika väljare till shuf.

När man söker framåt med C-s beter sig Emacslite speciellt i Info. När den inte hittar någon merförekomst på den sida man är på kan den sökavidare i nästa sida i samma Info-dokument.

Uppgift 5.10 Hur hittar du i Info informationdu behöver för att lösa nästa två uppgifter?

Uppgift 5.11 Använd ls för att ge en listning avfilerna i din kurskatalog i storleksordning, med denstörsta filen först.

Uppgift 5.12 Använd ls för att ge en listningav filerna i din kurskatalog i storleksordning medden minsta filen först. (Omvändningen av förrauppgiften.)

manKommandot cal ger en liten kalender. Dettakommando är inte så intressant i sig, men användshär som exempel för att ni ska slå upp och tolkaen man-sida. (Det är det enda sätt som program-met finns dokumenterat.)

Uppgift 5.13 Hur lyder synopsraden i man-sidan till cal?

Uppgift 5.14 Det finns ett antal väljare man kange till kommandot cal. Efter dessa kan det följaargument. Om man ger tre argument, vad beteck-nar då det första, andra respektive sista argumen-tet? Ge ett exempel på ett anrop med tre argu-ment och vad du får för svar då.

Uppgift 5.15 Om man ger två argument, vadbetecknar då det första respektive det andra ar-gumentet? Ge ett exempel på ett anrop med tvåargument och vad du får för svar då.

I denna man-sida kallas argumenten för param-eters och det står om hur »a single parameter« tol-kas.

Uppgift 5.16 Hur tolkas alltså argumentet omman bara ger ett argument till cal? Detta framgåräven av synopsraden. Hur?

55

Page 56: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 5: TEXTBEARBETNING I SKALET

Uppgift 5.17 Ge en kalender för föregående,nuvarande och nästa månad, med måndag somförstadag i veckorna.

Uppgift 5.18 Kommandot seq kan få ett till treargument. Kolla dokumentationen för att se hurdetta beskrivs. Där finns det tre synopsrader, enför varje antal argument. Hur lyder dessa tre ra-der?

Uppgift 5.19 Detta hade kunnat skrivas medbara en synopsrad istället med hakparenteser un-gefär (men inte riktigt) så som det var för cal.Hur skulle beskrivningen av seq se ut i så fall?(Ledning: Ett av de möjliga argumenten måstealltid vara med, så det ska inte så inom några [].)

Uppgift 5.20 Ge ett kommando för att lista åt-tans tabell: 8, 16, 24, 32, 40, 48, 56, 64, 72, 80,ett tal per rad.

Uppgift 5.21 Ge en lista över alla tal 1–10 000som är delbara med 7 och som innehåller »765«när man skriver ut det.

I resultatet ska bland annat 7651 (= 7 × 1093)ingå.

Verb

Dessa frågor gäller den fil verb.txt som du an-vänt i tidigare uppgifter.

Uppgift 5.22 Vilket eller vilka verb innehåller»stp« i sig?

Uppgift 5.23 Vilka verb innehåller fa följt av ettgodtyckligt tecken följt av a?

Uppgift 5.24 Hur många verb innehåller inte aalls? (Använd väljaren -v till grep!)

Uppgift 5.25 Hur många verb innehåller åt-minstone någon av bokstäverna j eller y?

Uppgift 5.26 Vilka verb innehåller y följt avgodtyckligt många s följt av e?

(I ett par av orden är det inga s alls, dvs. y följsdirekt av e.)

Uppgift 5.27 Vilka verb innehåller både j och y,i den ordningen (men kanske med andra teckendäremellan)?

Uppgift 5.28 Vilka verb innehåller både j ochy?

Uppgift 5.29 Hur många verb innehåller j meninte y?

Uppgift 5.30 Vilka verb slutar på bokstaven y?

Uppgift 5.31 Vilka verb slutar på y och börjarpå g? Ge ett svar där du utökar förra uppgiften

med ett led till i ett kommandorör. Ge också ettalternativt svar där båda kraven finns i samma re-guljära uttryck.

Uppgift 5.32 Hur många verb slutar på någotannat än a?

Uppgift 5.33 Samma som uppgift 5.24, men lösden med grep utan att använda väljaren -v dennagång!

Uppgift 5.34 Vilka verb har x som sjätte bok-stav (som t. ex. förhäxa)?

Uppgift 5.35 Vilka verb börjar med k och slutarmed iera?

Uppror!

På sidan 46 sparade du en version av uppror.txtmed normal Unix-markering för nyrad. Den skadu använda nu.

Alla uppgifter i detta avsnitt använder sig avden filen. Prova gärna kommandona i detta av-snitt med väljaren --color till grep också.

Uppgift 5.36 Vilka rader innehåller två j medexakt två tecken mellan sig?

Uppgift 5.37 Vilka rader innehåller minst tresiffror i rad?

Uppgift 5.38 Vilka rader innehåller minst tvåsiffror?

Uppgift 5.39 Vad finns det för rad som innehål-ler ett komma som följs av något annat tecken änmellanslag?

Uppgift 5.40 Vad finns det för rader som inne-håller minst två frågetecken?

Uppgift 5.41 Vad finns det för rader som inteinnehåller något mellanslag men ändå är minst 15tecken långa?

* * *Slå upp grep i Info. Sök upp information omordsökning där. (Det finns en särskild väljare försånt.)

Uppgift 5.42 Vad hette Info-noden du hittadedenna väljare på?

Uppgift 5.43 Hur bar du dig åt för att hitta tillden Info-noden?

Uppgift 5.44 Vilka rader i uppror.txt innehål-ler ordet »dröm«?

Uppgift 5.45 Vilka rader innehåller de fyra bok-stäverna »dröm« i rad men ändå inte ordet»dröm«? (Det kan vara rader på vilka det står»mardröm« eller »drömmar« t. ex..)

56

Page 57: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

I fält

I fält

I filen /local/kurs/ids/eulang.tsv finns litedata om de officiella EU-språken i en fil medTAB-separerade fält. (Filnamnsändelsen tsv an-vänds ibland för »tab separated values«.)

Det första fältet ger en kod för språket, det and-ra ger ungefärligt antal modersmålstalande (in-te bara i EU),1 det tredje ger språkets namn påsvenska, det fjärde ger språkets namn på engelskaoch det femte och sista fältet ger vilket år språketblev ett officiellt EU-språk.

Uppgift 5.46 Ta fram en sorterad lista över språ-kens engelska namn.

Uppgift 5.47 Ta fram alla fält utom språkkoden,sorterade efter antal talare.

Uppgift 5.48 Vilket språk har lägst antal talare?Ta bara fram dess namn på engelska.

Uppgift 5.49 Ange språkkoderna för alla språksom var officiella EU-språk redan 1958.

Uppgift 5.50 Vilka år har något språk blivit of-ficiellt EU-språk? (Ge ett svar som listar dessa åri tidsordning, utan dubbletter.)

Uppgift 5.51 Vilka år har fler än ett språk blivitnya officiella EU-språk?

Uppgift 5.52 Vilka år har exakt ett språk blivitnytt officiellt EU-språk?

1Uppgifterna är ihopsamlade på en höft och ska tas mednågra nypor salt.

»Det var en afton i början av maj«

Här görs en antal uppgifter med /local/kurs/ids/rummet.words som du antas ha gjort en ko-pia av tidigare. Det är alltså filen där det ligger ettord per rad, tillsammans med ordklassbeteckning.

Uppgift 5.53 Ge ett kommando som sorterarraderna i rummet.words så att lika rader hamnari följd och sedan räknar hur många det är av var-je slags rad. (Du behöver inte ange resultatet avdetta kommando.)

Uppgift 5.54 Utöka föregående kommandorörså att du därefter sorterar detta resultat i nummer-ordning och ger en tio-i-topp-lista med de vanli-gaste orden först.

Numerisk sortering ger normalt de lägsta talenförst, men sök upp en väljare till sort som göratt man får omvänd sorteringsordning än den an-nars ger! (Använd den korta versionen av dennaväljare.)

Här räknades även skiljetecken som egna ord,så flera av de vanligaste »orden« kommer att varasådana.

Uppgift 5.55 Vilka prepositioner förekommerbara en gång i rummet.words?

Du kan anta att det räcker med att söka upp ra-der som innehåller »prep« för att hitta prepositio-ner. (Som tur är finns inte ord som »preparat« eller»upprepa« i texten, vilket skulle ge falska träffar.)

Uppgift 5.56 Modifiera uppgift 5.54 så att re-sultatet skrivs ut med ett snedstreck (/) iställetför TAB mellan ord och ordklass.

I rummet.words finns olika rader som

de artde pron

så grafordet »de« kan både vara artikel och prono-men. Det finns flera sådana ord.

Uppgift 5.57 Vilka ord i rummet.words före-kommer där med minst två olika ordklasser?

Räkna m med skript

Du ska skriva ett skalskript countm.sh som räknarm och M i en fil. Låt skalskriptet börja så här:

#!/bin/bashecho Antal m:grep -c m $1

57

Page 58: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 5: TEXTBEARBETNING I SKALET

Där det brukar stå ett filnamn står här istället$1. Det är nytt och betyder något man gett somargument till skriptet. Då kan man skriva t. ex.

$ bash countm.sh rummet.txtAntal m:28Antal M:3Antal rader utan m eller M:4

Och för att räkna i en annan fil är det bara attge ett annat filnamn när man kör skriptet.

Uppgift 5.58 I exemplet ovan skrivs några flerrader ut än vad den givna början av skriptet gör.Utöka skriptet så att det ger alla dessa uppgifter.Hur lyder din countm.sh nu?

Uppgift 5.59 Vad får du för output om du körditt skript med /local/kurs/ids/wonderland.txt som argument?

Ordsegmentering

Uppgift 5.60 Ett (för) enkelt sätt att dela uppen textfil i ord är att byta ut alla mellanslag motnyradstecken. Använd det för att i en fil GNU-w1lägga en sorterad ordlista med alla ord som fö-rekommer i filen GNU i din kurskatalog. (Ta bortdubbletter.)

Uppgift 5.61 Titta igenom resultatet i Emacsoch nämn vilka problem du kommer på med det-ta enkla sätt att dela upp en text i ord.

Ditt och datt

Uppgift 5.62 Ge en lista över alla årtal som fö-rekommer i us-states.txt. (Ge varje årtal baraen gång oavsett hur många gånger det förekom-mer i filen.)

Uppgift 5.63 Om man skulle göra en stavnings-reform så att man ersatte alla z med s, vad skulledet bli för verb som nu stavas olika som då skullestavas likadant i verb.txt?

$2, $3, . . . : Är det kanske så att om man gerfler argument till skriptet så kan man komma åtdem med $2, $3, osv.? Javisst är det så. Prova gär-na!

Uppgift 5.64 Vilka delstater kom med i USA imars något år enligt us-states.txt?

Uppgift 5.65 Gör en lista för hur ofta de olikamånaderna förekommer i datumen i us-states.txt.

Resultatet skulle kunna börja med med

7 013 02

som visar att det finns sju fall av »01« (= januari)och tre fall av »02« (= februari).

Uppgift 5.66 Skapa en fil us-states-rev.txt som innehåller samma två kolumner somus-states.txt, men i omvänd ordning.

58

Page 59: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 6

Versionskontroll och Emacs

Det blir två olika ämnen idag.

6.1 Versionskontroll

Versionskontrollsystem är system som kan hante-ra flera olika versioner av dokument. Flera perso-ner kan ändra i dokumenten och det går att fåfram vilka tidigare versioner som helst och se vil-ka ändringar som gjorts när.

Det finns flera olika versionskontrollsystemsom har olika för- och nackdelar. Ett mycket van-ligt är CVS. En fördel med det är just att det an-vänds så mycket. I labben ska ni få använda Sub-version (SVN) som är ett senare system som ärlikt CVS men har en del viktiga förbättringar.

Några exempel på modernare versionskontroll-system är Bazaar, Git och Mercurial.

Databasen där alla versioner av filerna i ett pro-jekt ligger kallas ett repositorium (repository). Attta fram filer därifrån kallas att checka ut dessa fi-ler. Då får man en arbetskatalog (working direc-tory) där man kan göra de ändringar man vill. Ef-ter att man gjort en ändring som ska in i projektetså checkar man in den filen igen så hamnar denversionen i repositoriet. Alla versioner som chec-kats in kan tas fram i efterhand, så man kan be omt. ex. hur en viss version såg ut den 1 april förraåret.

Ofta går det att nå ett repositorium över nätetså att personer som ska medverka i ett projekt intebehöver ha konto på samma dator.

Även om versionskontrollsystem framföralltanvänds för programmering så kan det med för-del användas även i andra sammanhang där flerapersoner skriver något tillsammans.

Även för sådant man skriver själv är det använd-bart, bland annat för att kunna gå tillbaka till ti-digare versioner.

6.1.1 Om flera ändrar samtidigt

Om flera personer har skrivrättigheter i sammakatalog där de tillsammans sköter några filer blirdet lätt olyckor, som i figur 6.1. Att undvika och

Figur 6.1: Såna här missöden händer lätt om flerapersoner kan ändra i samma filer.

lösa sådana problem är en av huvudfunktionernaför versionskontrollsystem.

I en del versionskontrollsystem så låser mannormalt en fil man ska göra ändringar i så att and-ra inte får göra ändringar samtidigt.

I de flesta system nu är det dock oftast ingetstörre problem med samtidiga ändringar. Om enanvändare gör en ändring i början av en fil sam-tidigt som en annan ändrar i slutet av samma filså kan systemet slå ihop dessa ändringar av sigsjälvt. Systemet vet nämligen vilken version avdokumentet som de olika användarna har utgåttifrån.

Bara om ändringarna sker på samma ställe be-hövs hjälp med att reda ut det. Då visar systemetbåda versionerna och en människa får reda ut lä-get.

6.1.2 Kommandon

Oftast är det ett enda skalkommando med vil-ket man kan göra allt som ett versionskontroll-system kan göra, genom att ge det olika argument.För CVS heter kommandot cvs och för Subver-

59

Page 60: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

6. VERSIONSKONTROLL OCH EMACS

sion heter det svn, och liknande för andra system.Första argumentet till svn är ett underkommandotill det. Med svn help får man hjälp.

Men Emacs känner igen vilka filer som tas omhand av något versionskontrollsystem och vilketsystem det är och gör mycket av det där auto-matiskt åt en, eller med kommandon i en menyTools Version Control .

Man kan använda samma kommandon i Emacsoavsett vilket versionskontrollsystem man använ-der. Emacs känner igen vilket system som harhand om just dina filer. Ibland används förkort-ningen VC för Version Control, och det ingår i enhel del namn på Emacskommandon.

6.2 Emacs

Det står en hel del om emacs i avsnitt 2.2 på s. 18.Här är några ytterligare delar.

På s. 63–64 följer sedan den refcard.pdf somföljer med Emacs1 med tips om kortkommandonoch annat. (Men en hel del av dessa är sådana somni antagligen inte kommer att behöva.)

6.2.1 Kommandon

I Emacs finns en stor mängd kommandon som görolika saker med texten. När man trycker på entangent i Emacs eller väljer något från en meny såutförs något av dessa kommandon. När man tryc-ker på <home> eller C-a utförs t. ex. ett komman-do move-beginning-of-line som går till börjanav raden och när man väljer Tools Spell Checking

Spell-Check Buffer i menyerna utförs ett kommandoispell-buffer.2

Normalt behöver man inte veta vad dessa namnpå kommandona är. När man lär sig att man kangå till början av raden med C-a så behöver mandärför inte lära sig vad det kommando som utförsheter. Men när man vill använda ett kommandosom inte finns i menyerna och som det inte finnsett kortkommando för så kan man ändå utförakommandot genom att använda M-x och sedan gekommandots namn (följt av RET). I sådana lägenkan man använda TAB för att få komplettering.

En del kommandon finns det inget snabbkom-mando för.

6.2.2 Att få hjälp

Man kan få hjälp av olika slag i Emacs med olikakommandon som börjar med C-h (där h står förhelp).

1 Med fullständig sökväg /local/share/emacs/24.3/etc/refcards/refcard.pdf

2Flera gånger i denna text kallas tangenttryckningen förett kommando det också, så det kan stå »använd kommandotC-a«. Förhoppningsvis ska det inte leda till sammanblandning.

I tabell 6.1 visas några av de kommandon sombörjar med C-h . För flera av dessa ska man ef-ter kommandot tala om vad man vill ha hjälpmed. Efter C-h c eller C-h k får man t. ex.trycka på en tangent för att få fram hjälp omjust den. Om man t. ex. undrar vad som hän-der om man trycker på C-l kan man fråga medC-h k C-l och om man undrar vad kommandotsom utförs med C-x C-b heter kan man användaC-h c C-x C-b .

Många av dessa kommandon finns förstås i me-nyn Help också.

Hur fortsätter kommandot?

Dessutom kan man använda C-h i ett flertec-kenskommando för att se hur det kan fortsätta.Med C-x C-h får man t. ex. veta vad det finns förkommandon som börjar med C-x (så som t. ex.C-x C-f och C-x C-s) och med C-c C-h kanman se vad som börjar med C-c osv.

Ofta så visas den hjälp man får fram i en sär-skild buffert *Help*. Många speciella buffertari Emacs har sådana namn som börjar och slutarmed asterisk.

Istället för C-h kan man även använda <f1>som hjälptangent, dvs. funktionstangenten F1.

6.2.3 Manualen

Som ni har sett förut finns den huvudsakliga do-kumentationen till Emacs i Info, och med Help

Read the Emacs Manual kan man gå till den doku-mentationen.

(Ofta finns dessa manualer även på näteti flera olika format. På http://www.gnu.org/software/emacs/ finns t. ex. länkar till Emacs-dokumentationen.)

6.2.4 Musen

De tre knapparna kallas i Emacs Mouse-1,Mouse-2 och Mouse-3 från vänster till höger, såmouse-2 är mittknappen (på scrollhjulet).

Även dessa kan kombineras med Ctrl och lik-nande. T. ex. är ytterligare ett sätt att välja bufferti Emacs C-Mouse-1 . (Prova!)

6.2.5 Lägen

Det som här kallas lägen i Emacs kallas också mo-der som mer direkt översättning av modes. Emacsanvänder olika slags lägen för olika slags filer. Detär alltid en major mode och kan även vara fleraminor modes som ändrar beteendet på olika sätt.Olika lägen kan ha olika kortkommandon, olikamenyer, olika färgläggning av bufferten, osv. Pre-fixtangenten C-c inleder ofta kommandon som ärspeciella för olika lägen. Ni har t. ex. sett exempel

60

Page 61: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

6.2. Emacs

Tabell 6.1: Några C-h-kommandon.

Tangent Kommando Beskrivning

C-h c describe-key-briefly Talar om vilket kommando en viss tangent utförC-h k describe-key Talar även om vad detta kommando görC-h a apropos-command Hittar ett kommando som innehåller något visst i sitt namnC-h i info Går in i InfoC-h f describe-function Beskriv ett namngivet kommandoC-h w where-is Hitta snabbkommando för ett visst kommando.C-h m describe-mode Beskriver aktuellt Emacs-läge.C-h t help-with-tutorial Lär dig en del Emacs-kommandon.

på att när ni editerade ett skalskript så hamnadeEmacs i ett annat läge.

Med C-Mouse-3 får man fram en meny för ak-tuellt läge. Man kan också hålla klicka på lägetsnamn i informationsraden för att få upp den me-ny som är speciellt för ett visst läge.

6.2.6 Prefix-argument

Vissa kommandon i Emacs kräver ett argu-ment som läses in i minibufferten efteråt. EfterC-x C-f får man t. ex. ange vilken fil det är manvill öppna.

Det går dessutom alltid ge ett numeriskt prefix-argument direkt före ett kommando. Olika kom-mandon behandlar detta argument på olika sätt.Med M-f går man t. ex. framåt ett ord. Genom attge ett argument så går man istället fram så mångaord.

Ett sätt att ge prefix-argument är att trycka påsiffror medan man håller Ctrl eller Meta intryckt.Så med M-1 M-2 M-f går man därmed framåt 12ord. Eftersom själva kommandot innehåller Metaär det mesta praktiskt att använda Meta med siff-rorna också denna gång, så behöver man aldriglyfta på Alt-tangenten. Om man istället skulle gåfram tolv tecken med C-f använder man lämp-ligen C-1 C-2 C-f istället, så slipper man lyftapå Control-tangenten. I Emacslägen där man in-te skriver in text, t. ex. Dired som är läget manfår när man öppnar en katalog i Emacs, räcker detmed att trycka på siffertangenter utan Ctrl ellerMeta.

Ett annat sätt är att använda C-u och sen skrivavanliga siffror: C-u 1 2 M-f . Om man ger baraC-u utan några siffror räknas det som 4, och tvåC-u som 16. Det ger ett enkelt sätt att t. ex. »gåner några rader« (C-u <down>) eller »gå upp rättmånga rader« (C-u C-u <up>).

Vissa kommandon bryr sig bara om ifall defår ett argument eller inte, men inte vad ar-gumentet är. Ett exempel är kommandot M-q(fill-paragraph) som bryter om det stycke manstår i. Om man ger det ett prefixargument så läg-

ger det dessutom in dubbla mellanslag här och därså att det ska bli en rak högermarginal. När manbara ska ge ett prefixargument vilket som helstoch det inte spelar roll vad det är brukar man an-vända C-u , så t. ex. C-u M-q .

Ett annat exempel på det som ni sett var påsidan 45 när ni fick använda C-u C-x = . Självakommandot där var alltså bara C-x = , men detanvändes med ett argument för att det skulle betesig lite annorlunda.

6.2.7 Sökningar

Inkrementella sökningar med C-s (framåt) ochC-r (bakåt) har ni redan gjort. Om man tar medminst en versal i söksträngen så görs det skillnadpå versaler och gemener, men inte annars, så medfoo hittar man såväl »foo« som »Foo« som »FOO«,men med söksträngen Foo hittar man bara »Foo«och inte t. ex. »foo« eller »FOO«.

Man kan söka efter reguljära uttryck genom attlägga till Meta också, dvs. med C-M-s och C-M-r .

6.2.8 Regionen

På sidan 20 stod det om regionen i Emacs. Ett tillsätt att markera en region från tangentbordet äratt hålla ner skifttangenten medan man förflyttarsig med piltangenterna.

Många kommandon beter sig lite annorlundaifall man har en aktiv markerad region. Komman-dot M-$ som du använt för att stavningskontrolle-ra ett ord kontrollerar t. ex. hela regionen om manhar en aktiv sådan.

61

Page 62: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 6: Versionskontroll och Emacs

Versionskontroll

Ge i din kurskatalog skalkommandot

svn co svn://stp/ids16/username

där username är ditt användarnamn.Du blir tillfrågad om ett lösenord. (Inget

kommer att ekas när du skriver in lösenor-det.) Det är inte ditt vanliga inloggningslösenordutan ett annat som står i filen /local/svn/passwords/username som bara är läsbar för dig.

I denna nya katalog som heter som ditt använ-darnamn finns en fil som heter foo.txt. Öppnaden i Emacs. I informationsraden står det »SVN«för att visa att denna fil sköts av Subversion.

Använd C-x 5 f i Emacs för att öppna en nyfil ids6.txt i samma katalog för att skriva svarenpå följande frågor i.

Uppgift 6.1 Vad gjorde detta kommando (tyd-ligen)?

Tillbaks till foo.txt. Byt ut ordet »gamla« mot»nya« där och spara. Nu skiljer sig den versiondu har i din katalog från den incheckade. AnvändTools Version Control Compare with Base Version för atti kompakt form få se skillnaderna.

Det viktigaste Emacs-kommandot för versions-kontroll är C-x v v för att checka in en fil, så detär det värt att lära sig kortkommandot för. An-vänd det nu! Innan själva incheckningen sker fårdu skriva ett loggmeddelande om vad det är fören ändring du gjort. Gör så.

Uppgift 6.2 Vad är kortkommandot för att av-sluta detta loggmeddelande?

Uppgift 6.3 Hur fick du reda på vad kortkom-mandot var? Kommer du på nåt annat sätt dukunde ha fått reda på det?

. . . is not in a version controlled directory.: Var-ning! Om du får denna varning tillsammans meden fråga om »VC backend« så avbryt med C-g ! Dåhar du försökt checka in en fil någonannanstans äni din Subversion-katalog.

Bland relaterade kommandon finns bland annatsådana för att lista en fils historia (logg), ta framtidigare versioner, med mera.

Din fil ids6.txt är inte inlagd i Subversion ba-ra för att den ligger i samma katalog. Lägg in denfilen också (trots att du än så länge bara svarat pånågra få frågor.

För detta behöver du göra C-x v v två gånger.Första gången registrerar du filen och andra gång-en checkas den verkligen in. Gör så! (Loggmed-delandet kan vara tomt om du vill.) När du ärklar ska det stå »SVN:« med siffror efter i infor-mationsraden.

Flytta även dina svar från de två förra kapitlentill denna katalog under namnen ids4.txt ochids5.txt (oavsett om du är klar med dem ellerinte) och checka in de filerna. Eventuella kom-pletteringar till dessa labbar ska du senare läggain i dessa filer och checka in istället för att maila.Tillbaks till foo.txt:

Uppgift 6.4 Använd Tools Version Control

Show History för att få se loggen för foo.txt. Hurlyder den?

För varje version står det »r« följt av siffror föratt visa vilken revidering den versionen hör till.

Uppgift 6.5 Vad är det för siffror för den tidi-gaste versionen av den filen?

Hitta ett kommando i Tools Version Control föratt visa en annan version och välj den där allraförsta versionen.

Uppgift 6.6 Så vad stod det i denna första ver-sion av denna fil?

Checka in din ids6.txt innan du går vidare!Nu kan du antingen gå vidare med resten av dettakapitel, eller komplettera tidigare labbar du inteär klar med. Följ avsnittet »Klar för idag?« på slu-tet innan du slutar för idag hursomhelst!

Referenskort till Emacs på de två följande sidorna +

62

Page 63: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

GNU Emacs Reference Card(for version 24)

Starting Emacs

To enter GNU Emacs 24, just type its name: emacs

Leaving Emacs

suspend Emacs (or iconify it under X) C-z

exit Emacs permanently C-x C-c

Files

read a file into Emacs C-x C-f

save a file back to disk C-x C-s

save all files C-x s

insert contents of another file into this buffer C-x i

replace this file with the file you really want C-x C-v

write buffer to a specified file C-x C-w

toggle read-only status of buffer C-x C-q

Getting Help

The help system is simple. Type C-h (or F1) and follow the di-rections. If you are a first-time user, type C-h t for a tutorial.

remove help window C-x 1

scroll help window C-M-v

apropos: show commands matching a string C-h a

describe the function a key runs C-h k

describe a function C-h f

get mode-specific information C-h m

Error Recovery

abort partially typed or executing command C-g

recover files lost by a system crash M-x recover-session

undo an unwanted change C-x u, C-_ or C-/

restore a buffer to its original contents M-x revert-buffer

redraw garbaged screen C-l

Incremental Search

search forward C-s

search backward C-r

regular expression search C-M-s

reverse regular expression search C-M-r

select previous search string M-p

select next later search string M-n

exit incremental search RET

undo effect of last character DEL

abort current search C-g

Use C-s or C-r again to repeat the search in either direction. IfEmacs is still searching, C-g cancels only the part not matched.

c© 2015 Free Software Foundation, Inc. Permissions on back.

Motion

entity to move over backward forwardcharacter C-b C-f

word M-b M-f

line C-p C-n

go to line beginning (or end) C-a C-e

sentence M-a M-e

paragraph M-{ M-}

page C-x [ C-x ]

sexp C-M-b C-M-f

function C-M-a C-M-e

go to buffer beginning (or end) M-< M->

scroll to next screen C-v

scroll to previous screen M-v

scroll left C-x <

scroll right C-x >

scroll current line to center, top, bottom C-l

goto line M-g g

goto char M-g c

back to indentation M-m

Killing and Deleting

entity to kill backward forwardcharacter (delete, not kill) DEL C-d

word M-DEL M-d

line (to end of) M-0 C-k C-k

sentence C-x DEL M-k

sexp M-- C-M-k C-M-k

kill region C-w

copy region to kill ring M-w

kill through next occurrence of char M-z char

yank back last thing killed C-y

replace last yank with previous kill M-y

Marking

set mark here C-@ or C-SPC

exchange point and mark C-x C-x

set mark arg words away M-@

mark paragraph M-h

mark page C-x C-p

mark sexp C-M-@

mark function C-M-h

mark entire buffer C-x h

Query Replace

interactively replace a text string M-%

using regular expressions M-x query-replace-regexp

Valid responses in query-replace mode are

replace this one, go on to next SPC or y

replace this one, don’t move ,

skip to next without replacing DEL or n

replace all remaining matches !

back up to the previous match ^

exit query-replace RET

enter recursive edit (C-M-c to exit) C-r

Multiple WindowsWhen two commands are shown, the second is a similar com-mand for a frame instead of a window.

delete all other windows C-x 1 C-x 5 1

split window, above and below C-x 2 C-x 5 2

delete this window C-x 0 C-x 5 0

split window, side by side C-x 3

scroll other window C-M-v

switch cursor to another window C-x o C-x 5 o

select buffer in other window C-x 4 b C-x 5 b

display buffer in other window C-x 4 C-o C-x 5 C-o

find file in other window C-x 4 f C-x 5 f

find file read-only in other window C-x 4 r C-x 5 r

run Dired in other window C-x 4 d C-x 5 d

find tag in other window C-x 4 . C-x 5 .

grow window taller C-x ^

shrink window narrower C-x {

grow window wider C-x }

Formattingindent current line (mode-dependent) TAB

indent region (mode-dependent) C-M-\

indent sexp (mode-dependent) C-M-q

indent region rigidly arg columns C-x TAB

indent for comment M-;

insert newline after point C-o

move rest of line vertically down C-M-o

delete blank lines around point C-x C-o

join line with previous (with arg, next) M-^

delete all white space around point M-\

put exactly one space at point M-SPC

fill paragraph M-q

set fill column to arg C-x f

set prefix each line starts with C-x .

set face M-o

Case Changeuppercase word M-u

lowercase word M-l

capitalize word M-c

uppercase region C-x C-u

lowercase region C-x C-l

The MinibufferThe following keys are defined in the minibuffer.

complete as much as possible TAB

complete up to one word SPC

complete and execute RET

show possible completions ?

fetch previous minibuffer input M-p

fetch later minibuffer input or default M-n

regexp search backward through history M-r

regexp search forward through history M-s

abort command C-g

Type C-x ESC ESC to edit and repeat the last command thatused the minibuffer. Type F10 to activate menu bar items ontext terminals.

Page 64: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

GNU Emacs Reference Card

Buffers

select another buffer C-x b

list all buffers C-x C-b

kill a buffer C-x k

Transposing

transpose characters C-t

transpose words M-t

transpose lines C-x C-t

transpose sexps C-M-t

Spelling Check

check spelling of current word M-$

check spelling of all words in region M-x ispell-region

check spelling of entire buffer M-x ispell-buffer

toggle on-the-fly spell checking M-x flyspell-mode

Tags

find a tag (a definition) M-.

find next occurrence of tag C-u M-.

specify a new tags file M-x visit-tags-table

regexp search on all files in tags table M-x tags-search

run query-replace on all the files M-x tags-query-replace

continue last tags search or query-replace M-,

Shells

execute a shell command M-!

execute a shell command asynchronously M-&

run a shell command on the region M-|

filter region through a shell command C-u M-|

start a shell in window *shell* M-x shell

Rectangles

copy rectangle to register C-x r r

kill rectangle C-x r k

yank rectangle C-x r y

open rectangle, shifting text right C-x r o

blank out rectangle C-x r c

prefix each line with a string C-x r t

Abbrevs

add global abbrev C-x a g

add mode-local abbrev C-x a l

add global expansion for this abbrev C-x a i g

add mode-local expansion for this abbrev C-x a i l

explicitly expand abbrev C-x a e

expand previous word dynamically M-/

Miscellaneous

numeric argument C-u numnegative argument M--

quoted insert C-q char

Regular Expressions

any single character except a newline . (dot)zero or more repeats *

one or more repeats +

zero or one repeat ?

quote special characters \

quote regular expression special character c \calternative (“or”) \|

grouping \( . . . \)

shy grouping \(:? . . . \)

explicit numbered grouping \(:NUM . . . \)

same text as nth group \nat word break \b

not at word break \B

entity match start match endline ^ $

word \< \>

symbol \_< \_>

buffer \‘ \’

class of characters match these match othersexplicit set [ . . . ] [^ . . . ]

word-syntax character \w \W

character with syntax c \sc \Sccharacter with category c \cc \Cc

International Character Sets

specify principal language C-x RET l

show all input methods M-x list-input-methods

enable or disable input method C-\

set coding system for next command C-x RET c

show all coding systems M-x list-coding-systems

choose preferred coding system M-x prefer-coding-system

Info

enter the Info documentation reader C-h i

find specified function or variable in Info C-h S

Moving within a node:

scroll forward SPC

scroll reverse DEL

beginning of node b

Moving between nodes:

next node n

previous node p

move up u

select menu item by name m

select nth menu item by number (1–9) nfollow cross reference (return with l) f

return to last node you saw l

return to directory node d

go to top node of Info file t

go to any node by name g

Other:

run Info tutorial h

look up a subject in the indices i

search nodes for regexp s

quit Info q

Registers

save region in register C-x r s

insert register contents into buffer C-x r i

save value of point in register C-x r SPC

jump to point saved in register C-x r j

Keyboard Macros

start defining a keyboard macro C-x (

end keyboard macro definition C-x )

execute last-defined keyboard macro C-x e

append to last keyboard macro C-u C-x (

name last keyboard macro M-x name-last-kbd-macro

insert Lisp definition in buffer M-x insert-kbd-macro

Commands Dealing with Emacs Lisp

eval sexp before point C-x C-e

eval current defun C-M-x

eval region M-x eval-region

read and eval minibuffer M-:

load a Lisp library from load-path M-x load-library

Simple Customization

customize variables and faces M-x customize

Making global key bindings in Emacs Lisp (example):

(global-set-key (kbd "C-c g") ’search-forward)

(global-set-key (kbd "M-#") ’query-replace-regexp)

Writing Commands

(defun command-name (args)"documentation" (interactive "template")body)

An example:

(defun this-line-to-top-of-window (line)

"Reposition current line to top of window.

With prefix argument LINE, put point on LINE."

(interactive "P")

(recenter (if (null line)

0

(prefix-numeric-value line))))

The interactive spec says how to read arguments interac-tively. Type C-h f interactive RET for more details.

Copyright c© 2015 Free Software Foundation, Inc.

For GNU Emacs version 24

Designed by Stephen Gildea

Permission is granted to make and distribute modified or unmodified

copies of this card provided the copyright notice and this permission

notice are preserved on all copies.

For copies of the GNU Emacs manual, see:

http://www.gnu.org/software/emacs/#Manuals

Page 65: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Emacs

Emacs

Ta fram hjälp

Uppgift 6.7 I detta kapitel stod det att kom-mandot C-x = beter sig lite annorlunda när detfår ett prefixargument. Hur beskrivs den skillna-den i kommandots hjälptext? (Citera!)

Ta fram en förteckning med Emacskommandonsom innehåller »paragraph« i sitt namn för att hit-ta kommandon som gör saker med hela stycken avtexten.

Det står vad kommandona heter och hur mankan utföra dem. (Om det inte går på annat sätt såmed M-x .)

Ibland finns det flera sätt att utföra sammakommando.

Uppgift 6.8 I den förteckning du fått framnämns forward-paragraph för att gå fram ettstycke. Vad finns det för olika kortkommandonför det i Emacs?

När man tar fram kommandon som innehållernågot i sitt namn kan man också ge ett regexp.Gör det för att ta fram kommandon vars namnslutar på »regexp«. Alltså ska du inte få med t. ex.kommandot regexp-builder, för det slutar ju in-te så.

Uppgift 6.9 Hur gjorde du det?

Uppgift 6.10 Vad visade Emacs för resultat fråndetta?

De flesta av dessa kommandon finns det in-te snabbkommandon för, utan det är M-x somnämns för att köra dem, men det finns några un-dantag som har snabbkommandon.

Uppgift 6.11 Ett av dessa undantag är ett kom-mando för att visa sådant som matchar ett visst re-guljärt uttryck på ett visst sätt (med en viss face).Vad heter det kommandot?

Uppgift 6.12 Snabbkommandot för det kom-mandot består av tre delar. Ge de två första delar-na och tryck sen på hjälptangenten för att få vetavad det finns för möjliga kommandon som börjarlikadant. Hur såg hjälpen du fick då ut? (Alltsåinnehållet i bufferten *Help* då.)

Emacs-kommandot shell finns det ingetsnabbkommando för, så det får man lov att gemed M-x . Gör så! Detta kör ett skal inne i Emacs.

Uppgift 6.13 Man rör sig runt i bufferten medvanliga förflyttningskommandon som t. ex. <up>och <down> , så dessa fungerar inte som i termi-nalen så att de tar fram tidigare kommandon. Vadkan man istället ge för kommandon för att få det-ta? Hur såg du det?

Ramar

Kommandon som gör saker med ramar (frames)börjar med C-x 5 . Ta reda på vad det finns förolika kommandon som börjar med C-x 5 och harett tecken till.

Uppgift 6.14 Vad heter kommandot med vilketman kan öppna en fil i en annan ram som du an-vände i uppgift 6.1?

Jämföra filer med Ediff

/local/kurs/ids/verb.txt har ändrats en deljämfört med motsvarande fil för flera år sen,/local/kurs/OLD/ids09/verb.txt. Nu ska duanvända ett Emacskommando för att jämföra des-sa. Öppna båda dessa filer i Emacs.

Uppgift 6.15 Namnet på en buffert i Emacsbrukar ju vara som filnamnet. Hur tycks Emacssätta namn på buffertar när man öppnar flera filermed samma namn?

I menyn Tools Compare (Ediff) hittar du ettEmacskommando för att jämföra två buffertar.Använd det! (Välj bufferten med den äldsta filenförst (A) och sen den nya (B).)

Du får en egen liten ram som heter Ediff. Deviktigaste kommandona här är SPC (mellanslagalltså) för att gå till nästa skillnad och DEL föratt gå till förra skillnaden. Prova att gå fram någrasteg!

Det finns annat att trycka än SPC och DEL ochdet står hur du kan få hjälp.

Uppgift 6.16 Hur många skillnader räknar Ediffmed mellan dessa filer?

Uppgift 6.17 Vilken tangent kan man användahär för att hoppa till en viss skillnad genom attange dess nummer som prefixargument?

Uppgift 6.18 Vad består skillnad nummer 313av?

Uppgift 6.19 Vad består skillnad nummer 145av?

Uppgift 6.20 Hur avslutar man Ediff?

Det finns flera andra Ediff-kommandon som dusåg i menyn. Ett ytterligare som av någon anled-ning inte fanns i menyn är ediff-backup .

65

Page 66: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 6: VERSIONSKONTROLL OCH EMACS

Ta fram beskrivningen av detta kommando nunär du vet dess namn.

Uppgift 6.21 Hur lyder den beskrivningen?

Prova detta kommando med dodo.txt.

Uppgift 6.22 Hur skrev du för att köra dettakommando?

Lägen

I uppgift 4.41 använde du ett kommando som ak-tiverar en minor mode. Ge det kommandot igen!

Uppgift 6.23 Att denna minor mode är aktiv vi-sas i informationsraden. Hur?

Uppgift 6.24 Om du håller muspekaren överdetta, vad står det då att vänster musknapp gördär?

Uppgift 6.25 Hur kan du slå av denna minormode?

Tangentbordsmakron

Med makron kan man »spela in« tangenttryck-ningar för att sedan upprepa dem flera gånger.

Gå till Emacs-dokumentationen i Info (t. ex.med Help Read the Emacs Manual ) och välj menyal-ternativet »Keyboard Macros« där.

Uppgift 6.26 Så vilken tangent kan du användaför att börja spela in?

Uppgift 6.27 Och vilken tangent för att slutaspela in (avsluta definitionen)?

Uppgift 6.28 Det finns andra sätt att ta reda pådetta, men slå ändå upp i Info för att se att du kandet också. Kontrollfråga: Vad är det för nummerpå detta avsnitt i Info?

(De övriga kommandona som har med makronatt göra kan du strunta i denna gång.)

Kopiera us-states.txt till us-states-6.txti den katalog som sköts av Subversion. Öppna ko-pian i Emacs och checka in den. Placera dig senförst på första raden. Använd nu enbart kortkom-mandon från tangentbordet för att ändra den ra-den från

1787-12-07 Delaware

till

Delaware (1787)

genom att »döda« årtalet och sen klistra in detigen på rätt ställe tillsammans med övriga änd-ringar. (I resultatet är det bara ett mellanslag mel-lan delstatsnamn och parentes.)

När detta går bra så spela in medan du gör det.Stå i början av den första raden som ska ändrasoch tryck på tangenten för att spela in. Ändra ra-den som du ska och avsluta genom att placera digi början av nästa rad och avsluta inspelningen.

Nu kan du trycka på den senaste tangenten igenför att utföra samma sak för den raden, osv. föralla rader, så att alla rader kommer att bestå av ettdelstatsnamn, ett mellanrum och dess årtal inomparentes.

När det är klart så spara och checka in resulta-tet!

Uppgift 6.29 Hur skrev du ditt makro?När ditt makro fungerar bra, så gör

M-x insert-kbd-macro i svarsfilen för attfå fram svar på denna fråga. När du får fråga omname så tryck bara retur.

Detta lägger in kod som visar ditt makro.

Klar för idag?

När du slutar för dagen, så checka in det du hargjort hittills i ids6.txt innan du går!

Om du har ändrat saker i tidigare labbar såchecka in dem också innan du går.

Gå i skalet till Subversionkatalogen och gekommandot svn status där. Om du får ett tomtresultat är allt som det ska. Om du får rader sombörjar med »M« är det filer som är modifierademen inte incheckade. Om du får rader som börjarmed »?« är det filer som inte är registrerade.

Se till att inga av dina labbfiler listas där. Chec-ka in ändringar och kolla med svn status igen.

Kommer jag åt filerna hemifrån?: Ja, om du harsvn på din dator kan du skapa en arbetskatalogmed samma filer där också.

När du ger det första kommandot för att checkaut katalogen måste du skriva

svn://stp.lingfil.uu.se/ids16/username

istället för bara

svn://stp/ids16/username

för att den ska hitta servern.Om du har gjort ändringar på ena stället så ge

kommandot svn update på andra stället för attfå in ändringarna där också.

66

Page 67: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 7

LaTeX

LaTeX är ett typsättningsprogram. Det är ett sättatt göra texter färdiga för tryck som skiljer sig frånordbehandlare och mer liknar att lämna in ett ma-nus till ett sätteri. Input är en vanlig textfil skriveni en editor i vilken texten blandas med komman-don för typsättning. Dessa filer brukar ha namnsom slutar med ».tex«.

LaTeX används mycket för akademiska artik-lar. Det finns bra stöd för sådant som biblio-grafier och källhänvisningar. Matematisk sats ärdess specialitet, men även inom t. ex. lingvistikanvänds det mycket. Tidskriftsartiklar inom da-torlingvistik skrivs oftast med LaTeX, och STP-are skriver sina exjobb och ibland kursrapporter iLaTeX.

LaTeX bygger på ett tidigare system TEX. I den-na text talas hädanefter om LaTeX även när detsom sägs inte är specifikt för LaTeX, utan gällerför TEX överhuvudtaget.

Traditionellt producerar LaTeX output på ettsärskilt format som heter DVI (Device Indepen-

TEXLATEXFigur 7.1: När logotypen TEX med det nersänktaE:et inte kan användas brukar man skriva »TeX«. FörLaTeX finns det också en logotyp, LATEX, men den an-vänder jag inte i detta kompendium.

dent), men det går även att producera PDF, ochdet är vad denna text utgår från. PDF (PortableDocument Format) är ett populärt filformat ut-vecklat av Adobe Systems.

7.1 Stycken och rader

I själva texten spelar det ingen roll var man bryterraderna i input. LaTeX kommer att bryta radernai den satta texten där den finner det bäst att göradet sen ändå.

Man markerar nytt stycke med tomrad, så somnytt stycke ofta visas t. ex. i text på bildskärm.Vanligen visas nytt stycke (paragraph på engels-ka) istället med indrag i satt text på papper, såsom i denna text. Nu kommer ett nytt stycke:

Men hur det visas beror som mycket annat påvad är för slags dokument man skriver.

När man behöver göra något särskilt i textenanvänder man vissa speciella tecken och olikakommandon för det.

7.2 Allmän struktur

Ett litet LaTeX-dokument kan se ut somi figur 7.2, som både visar LaTeX-kodenoch dess resultat. Själva texten står mellan\begin{document} och \end{document}. Föredet, i dokumentets huvud, kan en del funktionali-tet ändras, bland annat genom att extra paket lad-das in, som här, där ett paket »url« laddas in.

En sak man kan se direkt är att klamrar {}används som parenteser för att hålla ihop text iLaTeX.

Exemplet har två avsnitt (section) med ru-brik. Det finns två exempel på matematik. Delsen numrerad ekvation mellan \begin{equation}och \end{equation} och dels en kort text mellan\( och \). I den matematiska texten finns en delextra kommandon, och vanliga bokstäver skrivskursivt som variabler.

67

Page 68: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

7. LATEX

\documentclass[a5paper]{article}\usepackage{url}

\begin{document}\author{Albert Einstein}\title{Special Relativity}\date{June 30, 1905}\maketitle

\section{Some text}Bla bla bla bla bla bla bla bla bla.Bla bla bla bla bla bla bla bla bla.Bla bla bla bla bla bla bla bla bla.

Read more at\url{http://www.alberteinstein.info/}!

\section{Conclusions}I have shown that \( e = mc^2 \),and further that\begin{equation}m = { m_0 \over \sqrt{1 - { v^2/c^2 }}}

\end{equation}

\end{document}

Special Relativity

Albert Einstein

June 30, 1905

1 Some text

Bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla blabla bla. Bla bla bla bla bla bla bla bla bla.

Read more at http://www.alberteinstein.info/!

2 Conclusions

I have shown that e = mc2, and further that

m =m0√

1− v2/c2(1)

1

Figur 7.2: Einsteins speciella relativitetsteori (i starkt förkortad version). Till vänster LaTeX-kod och till höger dess resultat.

7.3 Kommandon med \ (bakstreck)

Kommandon i LaTeX inleds normalt med bak-streck. Sedan följer antingen ett tecken som inteär en bokstav, eller ett ord med en eller flera bok-stäver.

Ett exempel på ett kommando av den förstasorten ses i 42\,000\,000 som ger »42 000 000«(42 miljoner). Där används \, som lägger in ettsmalt mellanrum som inte kan brytas. Så mar-kerar man vanligen tusental för stora tal i tryckttext.1 I Einstein-exemplet finns det två andra ex-empel, \( och \), som påbörjar respektive avslu-tar matematisk text.

Den andra sorten, med en eller flera bokstä-ver, finns det flera exempel på i figur 7.2, t. ex.\author och \maketitle, och \sqrt för squareroot (= kvadratrot) i den matematiska texten. Al-la tecken går att skriva med hjälp av bara ASCII.Om man t. ex. inte hittar »©« på sitt tangentbordkan man skriva \copyright istället.

1På bland annat svenska. På t. ex. engelska används iställetoftast komma som tusenavskiljare: 42,000,000.

7.3.1 Argument till kommandon

En del kommandon tar argument. Då blir det somkommer direkt efter kommandot argument tillkommandot. Ett exempel är kommandot \= somlägger en makron (övre streck) över sitt argument,så Liep\=aja ger »Liepaja« (en stad i Lettland).

Ett annat exempel är \author i figur 7.2. Därär argumentet (»Albert Einstein«) längre än etttecken och står därför inom klamrar.

7.4 Klamrar för grupper

Med {} avdelar man nämligen en grupp. Dettaär ett sätt att behandla en del av texten som enenhet, och används framför allt för att ge dennadel som argument till ett kommando, t. ex. kom-mandot \emph som betonar en text (emphasize)genom att kursivera den: LaTeX är skapat av\emph{Leslie Lamport} ger »LaTeX är skapatav Leslie Lamport«.

Exemplet Liepaja ovan hade kunnat skrivasLiep\={a}ja, men här behövs inget ihopgruppe-rande, utan det räcker med Liep\=aja eftersomargumentet bara är ett tecken.

68

Page 69: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

7.5. Speciella tecken

7.5 Speciella tecken

Bakstreck och klamrar är inte de enda tecken somhar särskilda betydelser i LaTeX. Här är en längrelista:

# $ % & ~ _ ^ \ { }

Om man vill skriva dessa tecken får man där-för använda särskilda kommandon. Kommando-na \# \$ \% \& \_ \{ \} finns för att verkligenskriva motsvarande tecken.

7.6 Titel och rubriker

Titeln i början av dokumentet skapas av\maketitle. Den text som det blir beror på vadman har skrivit innan dess för argument till kom-mandon som \title, \author och \date, somsjälva inte skriver någon text i dokumentet.

Rubriker gör man med kommandon som\section{Förord}. Lägre rubriknivåer ges med\subsection och \subsubsection. Vilken stilsådana rubriker skrivs med beror på ens doku-mentklass och inställningar. Dokumentklassen av-gör också vilka nivåer som finns tillgängliga. Ibland annat dokumentklasserna book och reportfinns även \chapter som en högre nivå.

7.7 Omgivningar med begin–end

I många fall kan man avgränsa en speciell del avtexten som en omgivning (environment). En så-dan omgivning börjar med ett kommando \beginmed något argument och slutar med ett \endmed samma argument. Detta exempel visar ko-den över och resultatet under den streckade lin-jen.

\begin{itemize}\item surprise\item fear\item ruthless efficiency\end{itemize}

• surprise• fear• ruthless efficiency

Omgivningen itemize avgränsar alltså enpunktlista, och i den finns det ett särskilt kom-mando \item som anger att en ny punkt börjar.

Med omgivningen enumerate får man iställeten numrerad lista som börjar med 1 och går upp-åt.

Vi har redan sett omgivningen document somomger hela texten.

Tabell 7.1: Kommandon för att välja typsnitt i LaTeX

Kommando Effekt

\emph{text} Betonad

\textrm{text} Vanlig text\textsf{text} Sans serif\texttt{text} Skrivmaskin

\textmd{text} Medium (vanlig)\textbf{text} Fetstil

\textup{text} upprätt\textit{text} Kursiv\textsl{text} lutande\textsc{text} KAPITÄLER

7.8 Typsnitt

I tabell 7.1 visas olika kommandon för att bytatypsnitt i LaTeX. Varje typsnitt tillhör en familj,en serie och en form. Med »skrivmaskin« menashär en icke-proportionell font, dvs. en där alla tec-ken är lika breda.

Det mest använda av dessa kommandon är\emph{...} för att betona en del av texten. I deflesta sammanhang visas detta med kursiv stil.

Det går att kombinera olika familjer, serier ochformer med varandra.

För att skriva text i andra storlekar finnskommandon som \tiny, \scriptsize,\footnotesize, \small, \large, \Large,\LARGE, \huge och \Huge. Dessa tar inga argu-ment utan ändrar storleken på allt som följerinom den grupp de står. Grupper avgränsas av {}och av omgivningar. Med {\huge hej} får man

hej, till exempel, och med {\tiny hej} fårman hej. Utan klamrarna runt skulle ändringenfortsätta att gälla för resten av texten!

7.9 Hårt mellanslag (~)

Med tildetecknet (~) skriver man ett hårt(fast) mellanslag, det vill säga ett där det in-te bör bli radbrott. Man bör till exempelhelst skriva John~F. Kennedy istället för JohnF. Kennedy eftersom man annars kan råka få ettradbrott som anses vara osnyggt, som i denna me-ning. Förutom förnamn och initialer anses detäven bäst att hålla ihop många fall av ord pluskort sifferuttryck som »figur 1« och »kapitel 2«,samt numrerade kungar som »Kristian II«.

7.10 Bindestreck och tankstreck

Det finns olika långa vågrätta streck vilket skrivsmed ett till tre tecken i rad:- (-) Bindestreck, divis

69

Page 70: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

7. LATEX

-- (–) en-dash--- (—) em-dash.

Den mellanlånga används till intervall:14--15 juni ger 14–15 juni. På svenska användsden också som talstreck och tankstreck – då medmellanrum runt sig.

(I engelsk och amerikansk typografi användsistället oftast det allra längsta strecket somtankstreck—då utan några mellanrum runtom.)

7.11 Citattecken

På s. 39 stod det om hur man i en del samman-hang använder ASCII-tecknen ` och ' för att be-teckna de olika citattecknen före respektive efterett citat (på t. ex. engelska). Så gör man i LaTeX.Så för att få ‘quote’ skriver man `quote' och föratt få “quote” skriver man ``quote''. På svens-ka används däremot samma tecken före och efter:''citat'' (som ger ”citat”).

Observera att man skriver två citattecken ef-ter varann för att få dubbelcitat. Det raka dubbel-citattecknet " i ASCII används aldrig som citat-tecken i LaTeX, eftersom det skulle vara oklart åtvilket håll det skulle vara riktat.

7.12 Dokumenthuvudet

Det som blir själva texten står som tidiga-re sagt i en omgivning document, dvs. mellan\begin{document} och \end{document}. Föredetta finns det så kallade dokumenthuvudet.

Den första raden anger dokumentklass kan somenklast se ut som \documentclass{article}.Några standarddokumentklasser som följer medLaTeX är article, report och book, men detfinns även ett stort antal andra dokumentklas-ser skrivna på olika håll. En del är specialiseradeför en visst slags text, t. ex. affärsbrev, doktors-avhandlingar eller mötesprotokoll. I inluppen fårni använda en lokal klass stupp (språkteknologiuppsala) som bygger på en som heter scrartcl.

När man anger dokumentklass kan man ocksåge ett optionellt argument inom [] där man listarett antal väljare som ändrar hur den klassen fun-gerar på olika sätt. Vilka väljare som kan ges be-ror på vilken klass man använder, men några somstandardklasserna använder är:

a4paper Gör layout för att passa A4-papper. Detär default för stupp.

10pt, 11pt, 12pt Någon av dessa kan användasför att ange hur stor texten ska vara i »punk-ter«. Det görs annorlunda i stupp.

twocolumn Skriv texten i två kolumner per sida

Hela raden kan se ut t. ex. så här:

\documentclass[a4paper]{report}

Om man har flera väljare så listas de med kom-ma mellan sig. Det här kompendiet är skrivet medLaTeX och börjar

\documentclass[a4paper,twocolumn]{memoir}

7.12.1 usepackage

Förutom att man på ovanstående sätt kan anpassadokumentklassen i viss mån kan man även lad-da in paket i LaTeX som kan göra allt möjligt,t. ex. definiera fler kommandon eller ändra be-tydelsen på det man redan har. Detta görs med\usepackage. I figur 7.2 används ett paket »url«.Det gör att ett kommando \url definieras ochkan användas senare i dokumentet.

Vitsen med detta är framförallt att få raddel-ning på ett annat sätt än normalt för sådana.Kommandot ser till att det inte blir avstavningmed bindestreck i delarna eftersom det kan gö-ra det oklart om bindestrecken ingår i urlen/sökvägen eller inte. Dessutom kommer ~ att blien tilde och inte tolkas som hårt mellanslag såsom är det normala, och hela texten skrivs utmed en särskild stil, normalt skrivmaskinsstil. Isamma paket definieras också ett liknande kom-mando \path för att skriva sökvägar, som t. ex.\path{~/Desktop/foo.txt}.

Ett vanligt paket för att kunna inkludera bilderär graphicx. (Observera stavningen!)

(Både url och graphicx är med från början istupp.)

Även till \usepackage kan man ge extra in-formation inom []. Paketet babel hanterar t. ex.sånt som är speciellt för olika språk, och då german språket inom [] så här:

\usepackage[swedish]{babel}

Det gör t. ex. att kommandot för att lägga in in-nehållsförteckning (se avsnitt 7.15) använder »In-nehåll« som rubrik istället för »Contents« och lik-nande för andra kommandon med annars fixa tex-ter. Det gör också att svenska avstavningsregleranvänds.

Med stupp görs följande två automatiskt, menannars är det något som du oftast bör ha med,t. ex. i standarddokumentklasserna book, reportoch article:

\usepackage[utf8]{inputenc}\usepackage[T1]{fontenc}

Den första raden talar om vilken teckenkodningLaTeX-filen är skriven med. Utan den fungerar in-te tecken som åäö i filen.

Den andra raden talar om vilken fontkodningLaTeX ska använda. (Detta behövs för att åäö skaräknas som egna bokstäver och inte bara som etta eller o med accent. Utan detta kommer klipp-och-klistra från den resulterande PDF-filen ge fel

70

Page 71: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

7.13. Figurer

Figur 7.3: Donald E. Knuth har skrivit TEX somLaTeX bygger på.

resultat, och dessutom kommer avstavningsmöns-ter som innehåller åäö inte att fungera.)

7.13 Figurer

Figurer är floats. De har inte en fix exakt placeringi texten, utan kan flyta runt och passas in där defår rum i den ordning som de kommer i texten. Setill exempel figur 7.3 som på ett sätt kan sägas hahamnat mitt i en mening. Den figuren har skapatsmed ungefär följande:

\begin{figure}\centering\includegraphics{donknuth}\caption{Donald E. Knuth har skrivit\TeX\ som LaTeX bygger på.}

\label{fig:knuth}\end{figure}

Själva bildfilen togs in med kommandot\includegraphics. För att det ska fungera mås-te ett extra paket graphicx användas, så därförhar jag skrivit \usepackage{graphicx} i doku-mentets huvud. Det följer med automatiskt medstupp, så i inluppen behöver ni inte göra det.

Filen heter egentligen donknuth.png, men fil-namnsändelsen behöver inte anges.

Med \caption ger man en bildtext som argu-ment.

En viktig del är kommandot \label som gerdenna figur en etikett – i exemplet »fig:knuth«. Fi-gurer brukar man referera till i texten, och då villjag inte behöva tänka på figuren som figur »7.3«,för det numret kan ju ändras allteftersom jag tarbort och lägger till figurer medan jag skriver, ut-an istället tänker jag på den som »figuren Knuth«och kallar den »fig:knuth« i LaTeX-koden. Närman vill referera till en sådan etikett i sin text an-vänder man kommandot \ref med etiketten somargument. Jag har därför ovan skrivit

Se till exempel figur~\ref{fig:knuth}

vilket gav textenSe till exempel figur 7.3

men kan ändras om jag lägger till eller tar bortfigurer.

Märk även:• Kommandot \centering anger att text och

annat ska centreras. Eftersom det står innei en begin-end-omgivning gäller det bara in-nanför den.

• Det är inget som nödvändigtvis ingår ifigure att det ska vara en bildfil som in-kluderas. Det hade kunnat stå godtyckligLaTeX-text istället. Ibland kan man t. ex. vil-ja lägga ut ett lite programkod i en figur meden verbatim-omgivning. Se avsnitt 7.17.

Man skriver in figuren ungefär på det ställe itexten där man vill ha den (normalt där man förs-ta gången refererar till den med \ref), så dykerden upp ungefär där, beroende på var den passarin. (Mer detaljer om hur man kan styra placering-en tas inte upp här.)

Ofta behöver man anpassa en bildfil för att denska passa som illustration. I synnerhet kanske bil-den inte har rätt storlek för att passa in. Ett sättatt lösa sådant är att ange hur hög bilden får vara,så här:

\includegraphics[height=5cm]{dragon}

Bilden kommer att förminskas (eller förstoras)så att den får den önskade höjden. Man kan istäl-let ange bildens bredd, med t. ex. width=10cmistället. Ibland kan det vara praktiskt att angewidth=\linewidth som ger samma bredd somtexten har.

7.14 Kommentarer med %

I LaTeX fungerar procenttecknet som kommen-tarstecken. LaTeX ignorerar allt som följer efterett procenttecken fram till slutet av raden. Medanvändning av detta kan man kommentera bort de-lar av texten så att de inte syns i det man produce-rar, men ändå finns kvar där i texten man arbetarmed ifall man ångrar sig senare. Det är också van-ligt att man använder det för kommentarer till sigsjälv innan texten är färdigskriven.

Här är som exempel ett litet utdrag urmin LaTeX-kod till teckenrepresentationskapit-let, närmare bestämt en del från s. 40 med en listamed exempel på locales:

\item \texttt{fr\_CA} : Franska i Kanada\item \texttt{zh\_CN} : Kinesiska i Kina\item \texttt{zh\_TW} : Kinesiska i Taiwan% \item \texttt{nb\_NO} : Bokmål% \item \texttt{nn\_NO} : Nynorska

71

Page 72: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

7. LATEX

Här kan man se hur jag i något skede av skrivan-det hade med två exempel till, som jag sen kom-menterade bort så att de inte kom med i kom-pendiet. Genom att göra det till en kommentaristället för att ta bort raderna helt skulle jag enkeltkunna ta tillbaks dessa exempel om jag ångrat migigen.

7.15 Att referera inom texten

För att kunna referera till en annan del av textenanvänder man alltså kommandona \label och\ref som båda tar ett argument.

Det gäller inte bara figurer och tabeller, utanandra delar också, t. ex. numrerade kapitel ochandra avsnitt. Även då vore det dumt att skriva»kapitel 7« i texten, för innan man har skrivit klartså har man kanske flyttat det kapitlet eller delatupp ett tidigare kapitel i två så det har ett annatnummer.

Istället kan man använda kommandot \labeldirekt efter kommandon som \chapter och\section och sen hänvisa tillbaka till dessa eti-ketter med \ref som vanligt.

Exempel: På sidan 70 står denna parentes, härvisad med LATEX-kod och med dess resultat:

(se avsnitt~\ref{sec:referera})

(se avsnitt 7.15)

Med en etikett kallade jag avsnitted om att re-ferera för sec:referera så att jag kunde hänvisatill det med \ref och få rätt siffror. Att det står ~istället för vanligt mellanslag mellan »avsnitt« ochsiffrorna är bara för att undvika nyrad just där.

Med \pageref refererar man istället till den si-da där motsvarande etikett finns:

se avsnitt~\ref{sec:referera}på sidan~\pageref{sec:referera}

se avsnitt 7.15 på sidan 72

Man brukar ge figurer etiketter som börjar med»fig:«, kapitel etiketter som börjar med »chap:«,avsnitt etiketter som börjar med »sec:« osv. för attlätt skilja dem åt.

När man kör LaTeX på en fil lär den sig såntsom att fig:knuth ska bli 7.3 så att den vet dettill nästa gång man TeXar filen. Det gör att nären hänvisning sker framåt i texten så behöver manTeXa filen en gång till innan alla detaljer stämmer.(Det talar LaTeX om vid körningen i så fall, i stilmed

LaTeX Warning: Label(s) may have changed.Rerun to get cross-references right.

Det finns annat som också kan krävaflera pass genom filen. Med kommandot\tableofcontents kan man t. ex. lägga inen innehållsförteckning till ett dokument, menvilka kapitel som finns var vet inte LaTeX förränvid andra körningen, så efter första körningen ärinnehållsförteckningen ännu tom.

7.16 Övriga tecken

Vill man skriva tecken som man inte hittar på tan-gentbordet kan man använda LaTeX-kommandonför det. I tabell 7.2 visas några kommandon för attsätta accenter över och under bokstäver, inklusiveen del lite ovanligare accenter.

Alla kommandon hade kunnat använda klamrarrunt sina argument, men i tabellen används dettainte för de kommandon vars namn består av enicke-bokstav.

7.17 verbatim och \verbNär man vill inkludera skalkommandon ellerprogramkod i en rapport är det besvärligt omen mängd tecken tolkas speciellt av LaTeX.Då kan man använda en speciell omgivningverbatim. Efter \begin{verbatim} återges alltutan några särskilda tolkningar fram till nästa\end{verbatim}.

Så genom att skriva

\begin{verbatim}Här kan jag skriva \ och % osv.\end{verbatim}

får man

Här kan jag skriva \ och % osv.

Skrivmaskinsstil används, så som man ofta görnär man återger programkod.

Tabell 7.2: Några accentkommandon i LaTeX

\'o ó akut accent\`o ò grav accent\^o ô cirkumflex\"o ö diaeresis/umlaut\~o õ tilde\=o o makron\.o o\u{o} o\v{o} o\H{o} o långt ungerskt umlaut\c{o} o cedilj\d{o} o. d = dot\b{o} o

¯b = bar

72

Page 73: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

7.18. LaTeX i Emacs – AUCTeX

För kortare text inne i ett stycke kan man an-vända kommandot \verb. Här är ett till exempelmed först kod och sen resultat som visar hur mankan använda det:

Med det reguljära uttrycket\verb![^0-9]$! fungerade det.

Med det reguljära uttrycket [^0-9]$ fun-gerade det.

Man slipper att ^ och $ tolkas särskilt av LaTeX.För att man ska kunna ha med vilka tecken som

helst i argumentet till \verb så beter den sig spe-ciellt. Istället för {} runt argumentet sätter manett godtyckligt tecken som inte är en bokstav föreoch efter. Det betyder alltså samma sak att skriva\verb!foo! som \verb=foo= som \verb{foo{.

Inom verbatim så bryter LaTeX raderna precisdär man själv har brutit raderna, så se upp medatt ha för långa rader som inte syns helt för att desticker utanför papperet!Det kan leda till att texten spiller ut där den inte hör hemma. Dessutom blir det svårt att se vad det står när det går utanför kanten.Det finns paket som är till för snitsigare kod-

listningar också, men den enkla omgivningenverbatim duger bra ibland.

7.18 LaTeX i Emacs – AUCTeX

Vi använder ett särskilt paket AUCTeX för att an-vända LaTeX i Emacs. (Det är annars ännu intedet normala i Emacs, så om du editerar LaTeX-filer i Emacs på en annan dator kan det bete sigannorlunda.)

Det kommer att användas i labben och ger ex-empel på hur ett editeringsläge i Emacs kan gesärskilt stöd för en viss sorts text.

Det sker bland annat genom att Emacs förstårsig på syntaxen i LaTeX-filer och därmed visarkommandon, text och kommentarer i olika färg,och ger »lagom« långt indrag med TAB-tangenten,beroende på vad det är man skriver. Det märksockså på att det finns särskilda kommandon föratt lägga in vanliga saker i filen, t. ex. figurer ochtabeller; samt att man kan köra LaTeX på filenmed kommandon direkt från Emacs och att dendå även tolkar eventuella felmeddelanden och di-rekt tar en till rätt rad i den fil man skrivit.

Detta liknar motsvarande stöd för olika pro-gramspråk när man programmerar.

7.19 UTF-8 och LaTeX

Allt fungerar inte perfekt med Unicode i LaTeX.Långt ifrån alla tecken fungerar rakt av att ba-

ra stoppa in i filen. För att skriva på ryska (po-russki) är det inte bara att stoppa in sådana tec-ken i filen, t. ex.

Ett annat problem med UTF-8 i LaTeX är att avtekniska skäl måste det ’godtyckliga’ tecknet somanvänds med \verb vara ett ASCII-tecken, så detgår inte att använda t. ex. \verb§foo§ eftersom§ inte finns med i ASCII. Ofta används något avtecknen !|+=_ som brukar avdela texten rätt tyd-ligt.

(Det finns varianter (X ELATEX, LuaLATEX) därsådant fungerar bättre och som gradvis blir alltvanligare.)

7.20 Mer information

Det finns gott om introduktioner till LaTeX. Påhttp://stp.lingfil.uu.se/lila/tex/ finnsen del användbara länkar, bland annat till såntsom handlar specifikt om användning av TEX förlingvistik. Det finns mycket i LaTeX som passarför språkvetenskap, som funktionalitet för attrita träd, skriva fonetisk skrift och grammatiskastrukturer enligt flera formalismer med mera.

73

Page 74: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 7: LaTeX

Innan något annat

Gå till kurskatalogen och ge kommandot

svn co svn://stp/ids16/alla

Det skapas en ny Subversion-katalog alla somdu ska använda senare i labben, men inte nu di-rekt.

Första LaTeX-dokumentet

Dessa labbinstruktioner är pratiga med detaljera-de instruktioner som du får följa steg för steg.

Början

I denna labb ska du skapa en LaTeX-fil med diver-se innehåll i Emacs. Börja med att i Emacs öppnaen ny fil latex1.tex i katalogen från förra gångensom heter som ditt användarnamn och som Sub-version sköter.

Emacs känner igen ändelsen .tex så du hamnari en särskild Emacs-mode för att editera LaTeX. Iinformationsraden står det LaTeX/P inom paren-tesen och du har särskilda menyer, bl. a. en somheter just LaTeX .

Det bör också stå Fill i parentesen i infor-mationsraden, eftersom du har slagit på Options

Auto Fill in Text Modes i menyerna tidigare.I samma katalog ska du också skapa och checka

in ids7.txt med svar på frågor.

Omgivningen document

Varje dokument ska ha en document-omgivning.Med C-c C-e kan man lägga in en omgivning itexten, så tryck C-c C-e . I minibufferten får duen anmodan om att ange environment type och de-fault-värdet är document, dvs. det är vad det blirom du bara trycker på RET . Gör så!

Huvuduppgiften för C-c C-e är att lägga in\begin{nånting} och \end{nånting}, men bero-ende vad det är för omgivning det gäller så kanden ordna lite annat åt en också. I detta fall pas-sar den på att lägga in deklarationen om vad detär för dokumentklass. Du har fått en fråga om do-kumentklass och defaultvärdet är article, men

svara istället stupp. Sen frågas efter Options. Sva-ra ingenting, dvs. tryck bara på RET .

Att C-c C-e började på C-c var väl inte någonöverraskning? Det är den normala prefixtangen-ten i Emacs för kommandon som är speciella förett visst läge, i detta fall för LaTeX-läget.

Ett första avsnitt

Skriv in \section{Röda rummet}, ny rad, ochlägg sedan in filen /local/kurs/ids/rummet2.txt med Emacs-kommandot File Insert File (ellerC-x i) som lägger in en fil i din buffert.

(Observera att själva texten visas med normalsvart text, medan en del kommandon, deras argu-ment och annat speciellt visas i olika färger. Ef-tersom detta är en ren textfil så är det inte så attolika delar i filen verkligen har olika färg, utan detär bara Emacs som visar det så eftersom den för-står sig på syntaxen och känner till en del viktigaLaTeX-kommandon.)

Att tillverka och titta på en PDF-fil

Spara filen. Nu när du har en liten text, så tillver-ka en PDF-fil från detta genom att köra LaTeX påfilen. Tryck på C-c C-c för att ge ett komman-do för texten. Det står default LaTeX. Det blirbra, så tryck på RET . Ganska snart står det LaTeX:successfully formatted {1} page.

Ge nu kommandot C-c C-c igen. Eftersom duredan har lyckats generera en PDF-fil så är default-kommandot nu stället »View«. Det passar bra, såtryck på RET . Du får upp ett kommando för atttitta på PDF-filen. Detta är så att du ska kunnaändra i detta om du vill, men det duger bra somdet är, så tryck på RET igen.

Du får upp en annat fönster som visar innehål-let i din PDF med hjälp av programmet evince. Setill att flytta runt dina fönster så att du ser Emacsoch evince samtidigt, sida vid sida.

Huvudet

I första stycket har ordet »stickorna« fått en dåligavstavning.

Uppgift 7.1 Var har det avstavats?

74

Page 75: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Första LaTeX-dokumentet

Det är för att du inte har talat om för LaTeX atttexten är på svenska. Gå därför till dokumentetshuvud, dvs. i delen mellan \documentclass{...}och \begin{document} och lägg till en rad somtalar om språk och TEXa om filen med C-c C-cigen och se hur den visade texten uppdateras.

Uppgift 7.2 Hur avstavas »stickorna« efter attdu fixat detta?

Den här textfilen använde inte sådana teckensom är speciella i LaTeX, som t. ex. $ eller %, såden gick att stoppa in rakt av.

Det finns bara en detalj som inte är helt rätt,och det är att textfilen använder tecknet - i tvåolika betydelser. Sök upp alla - i filen med C-s iEmacs. I ett fall är det ett bindestreck i ett sam-mansatt ord och är bra som det är. I ett annat fallär det ett tankstreck. Byt ut det senare mot -- föratt få ett längre streck. (Skillnaden är inte så stor,men en del märker såna detaljer.)

Lägg in rader med \author{ditt namn},\title{Labb 7 -- LaTeX} och \maketitle di-rekt efter \begin{document}, i stil med hur Ein-stein gjorde i figur 7.2. (Använd ditt namn ochinte Strindbergs – du kommer snart lägga in mertext i dokumentet.) I den figuren anges ävendatum, men ta inte med nån sån rad alls. KörC-c C-c och LaTeX igen och kontrollera att dufått med titeln.

Uppgift 7.3 Du angav inget datum. Hur gör\maketitle med datum då?

Nu är dokumentet längre än en sida. I skiftnyc-kelmenyn i evince kan du välja om dokumentetska visas Continuous eller inte. Prova och se vaddet innebär!

Att göra fel

Ibland råkar man skriva fel så att det man har skri-vit inte är en korrekt LaTeX-fil. Har du inte redangjort det så kommer du att göra det så småning-om, så gör det med flit nu för att se hur man fårhjälp med att se var det blev fel.

I texten nämns barège-lappar på ett ställe. Dutänker att det är ett svårt ord som kräver en för-klaring, så du tänker skriva en förklarande fotnottill det ordet.

Du har (felaktigt) fått för dig att man kanskriva sådana med ett kommando \foot, så läggtill \foot{Barège är ett slags tunt, glesttyg} direkt efter det svåra ordet.

TEXa sedan om filen med C-c C-c .Du får ett meddelande i ekoarean om att det

har blivit fel. I ikonraden direkt under menyerna iEmacs har en varningstriangel dykt upp. Tryckpå den för att komma till felet.

Du får se två Emacsfönster samtidigt. Ett meddin LaTeX-fil där du hamnar där det är fel. Ettmed en beskrivning av felet. Först står där »ER-ROR:« och ett kort felmeddelande. Sen återgesprecis den del där det blev fel och på slutet ståren hjälptext om just detta fel.

Uppgift 7.4 Hur lyder det där korta felmedde-landet efter »ERROR:«?

Felmeddelandet bör vara rätt begripligt. Så\foot var visst fel. Du kommer plötsligt på attvisstja, det heter \footnote istället! Ändra tilldetta men råka göra ett nytt fel. Råka byta ut det {som står direkt efter \footnote mot ett mellan-slag och TEXa.

Du får då ett nytt fel. Gå till det felet.

Uppgift 7.5 Hur lyder detta nya felmeddelan-de?

Rätta detta, TEXa din fil och se på resultatet.Du kommer antagligen att göra flera oavsiktligafel på egen hand efter detta, men nu vet du hur dudå kan få hjälp om var det är fel. Ibland kommerfelmeddelandet att vara hjälpsamt. Ibland kom-mer du antagligen inte att förstå vad felmedde-landet handlar om, men du får i alla fall en vinkom ungefär var i filen det blivit fel.

Det formella felet blir inte alltid exakt där duhar gjort fel. I det senaste exemplet blev t. ex. fel-markeringen vid slutparentesen } när felet egent-ligen var att du glömt den inledande parentesenen bit tidigare.

När det har blivit flera fel så kan du användafeltriangeln för att gå vidare till nästa fel efter attdu tittat på (och förhoppningsvis rättat) ett. Menhar du fått många fel som du inte förstår så kon-centrera dig på att fixa det första och kör sedanom. Kanske är de andra följdfel av det första.

Listan

Gör ett nytt avsnitt (section) med titeln »Topp-listan«. Där ska du härma texten i figur 7.4. An-vänd kommandot \emph för att betona ett par ord

Use C-c ‘ to display: I meddelandet i eko-arean när det blir fel står det om C-c `. Det görsamma sak som den där feltriangeln ger så du kananvända det istället om du vill hålla kvar händernapå tangentbordet. Men observera i så fall att ef-ter C-c är det en grav accent som är besvärlig attskriva. Den ligger på en död tangent med akut ochgrav accent så den tangenten måste skiftas (så attdet blir rätt accent) och sen får man lov att följaefter med mellanslagstangenten för att få ` utannågot under.

75

Page 76: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 7: LATEX

De Unix-kommandon som är mest inne justnu är

1. grep

2. pwd

3. ls

4. sort

5. iconv

Figur 7.4: En del av det dokument ni ska skriva. Ut-seendet kommer inte att bli helt identiskt, för det härkompendiet är inte skrivet med samma fonter ellerinställningar.

i texten som det är gjort där, och använd omgiv-ningen enumerate för att få själva uppräkningen.Använd C-c C-e för att lägga in omgivningen.

Uppgift 7.6 Vilken omgivning föreslås som de-fault då?

Använd alltså enumerate istället för det somstår som default. Du kan använda komplettering.(Vad gäller själva listan kan du skriva andra kom-mandon eller i en annan ordning om du vill.)

Uppgift 7.7 När man skriver sådana här listorfinns det ett kortkommando för att skriva ett nyttitem. Hur lyder det? (Det finns med i LaTeX-menyn.)

Sagan

Gör ett nytt avsnitt (section) med en rubrik sompassar din saga, och lägg in texten i din saga där.Se till att hantera eventuella »konstiga« teckensom LaTeX tolkar speciellt ifall du råkar ha såda-na i din text. Använd LaTeX-kommandot \emphför att betona något ord eller fras i texten.

Hänvisningar

Hittills har du skrivit in \section själv för hand.Man kan också använda ett kommando för det,vilket även gör det extra lätt att lägga in en eti-ketter för denna rubrik. Ställ dig på rätt plats förnästa avsnitt om du inte redan är där och tryckC-c C-s . Detta lägger in en rubrik. Du får förstvälja hur hög nivå det ska vara på den. Default-värdet section blir bra, så tryck på RET . Därnästfår du skriva titeln på detta avsnitt. Det ska vara»Mosebacke« så skriv så och tryck RET .

Nu får du en ny fråga:

(Optional) What label: sec:

på vilken du svarar mosebacke och trycker RET .Om du gjort rätt så har du därmed lagt in

\section{Mosebacke}\label{sec:mosebacke}

i bufferten.Skriv ett par inspirerade rader om Mosebacke

i detta avsnitt eller bara bla bla bla om du inteorkar hitta på nåt bättre.

Nu ska du använda denna etikett för att kun-na hänvisa till detta avsnitt från en annan platsi texten. Gå till slutet av första avsnittet (»Rödarummet«) och lägg till följande där:

Läs mer om Mosebacke iavsnitt \ref{sec:mosebacke}.

TEXa filen och se vad du får för nytt meddelan-de i ekoarean när du gör detta.

LaTeX vet inte exakt vad det ska stå i förstaavsnittet förrän den redan tittat igenom hela tex-ten, så du behöver TEXa den igen. Tryck därförC-c C-c igen. Emacs vet att du behöver TEXaom filen, så defaultkommadot är LaTeX. Nu skadu få »successfully formatted« igen.

Uppgift 7.8 Vilken mycket kort text resulterade\ref{sec:mosebacke} i till slut?

Urlar

Sök upp någon sida på nätet (t. ex. på Wikipedia)med information om Mosebacke. Ändra mening-en »Läs mer om Mosebacke. . . « så att den för-utom till dit avsnitt sec:mosebacke även hänvi-sar till webbadressen (urlen) för denna webbsida.Använd samma sätt att hänvisa till en url som ifigur 7.2.

Kommandot C-c C-c

Du har använt kommandot C-c C-c både för attTEXa en fil (LaTeX) och för att titta på resultatet(View). Du har även sett att Emacs ofta vet vilketkommando du nog vill göra och föreslår LaTeXigen när det behövs.

Men det går att ge andra kommandon där ock-så. Tryck C-c C-c och välj kommandot Clean.Det rensar upp en del filer som LaTeX skapar me-dan det kör med mellanresultat. Då får en frågaom du verkligen vill ta bort dessa filer.

Uppgift 7.9 Vilka filer undrar Emacs om du villta bort?

(Du kan svara vilket som på frågan nu.)

76

Page 77: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Första LaTeX-dokumentet

Figurer

Allt som saknas nu är en figur. Välj ut nåntingvad som helst i texten att ge en figur till. Detskulle t. ex. kunna vara en bild på en groda omdu har en groda med i din saga. Sök upp enlämplig bild på nätet, t. ex. med bildsökning påhttp://images.google.com/. En bra källa tillbilder som det står det fritt att återanvända ärannars illustrationer till artiklar i uppslagsverketWikipedia på http://wikipedia.org/. Välj enbild på något av formaten png, pdf eller jpg. Läggbilden i samma katalog som latex1.tex.

Innan du lägger in själva figuren, så lägg in enhänvisning till den på lämpligt ställe. Om du t. ex.har valt en bild på August Strindberg så skulledu kunna skriva så här i början av avsnittet »Rödarummet«:

Här är den kända inledningentill romanen \textit{Rödarummet}.I figur \ref{fig:strindberg}finns en bild på författaren,August Strindberg.

Använd en etikett som börjar med ’fig:’ ochsom visar vad det är för figur. (Det behöver intelikna filnamnet.)

Om du försöker TEXa nu (prova!) kommer duatt få ett varning om att det blir »unresolved refer-ences«. Den etikett som du refererar till definierasaldrig.

Uppgift 7.10 Vad syns i texten på det ställe därdenna okända referens används?

Dags att lägga in själva figuren! Ställ dig anting-en före eller efter det stycke där du har med re-ferensen, och tryck C-c C-e för att lägga in enomgivning – denna gång omgivningen figure.

Den första frågan du får är

(Optional) Float position:

Detta behöver du inte svara på (optional) så tryckbara på RET för att strunta i detta. Nästa fråga ärviktigare:

Caption:

Att skriva citattecken: Eftersom man inte an-vänder det raka ASCII-tecknet " som citattecken iLaTeX så läggs istället två tecken in där man tryc-ker på den tangenten i LaTeX-moden i Emacs. Omman verkligen vill skriva ett ", så ska man tryckapå tangenten " en gång till direkt efter. Men somsagt, det tecknet används aldrig som citattecken iLaTeX.

Ge en bildtext till denna figur. Avsluta medRET .

Center? (y or n)

Svara y.

(Optional) What label: fig:

Denna uppgift sägs också vara frivillig, men manvill nästan alltid ha en etikett på figurer så att mankan referera till dem. Skriv det namn som du re-fererat till med \ref förut.

Nu är all formalia överstökad och du har ham-nat på rätt ställe för att skriva in det som ska ham-na inne i figuren. Lägg in ett kommando för dettasom i avsnitt 7.13.

TEXa med C-c C-c tills texten är »successfullyformatted« igen. Anpassa bildens storlek ifall detbehövs, t. ex. om den är så stor att den hamnarpå en egen sida eller inte får rum på sidan. Sesidan 71 i så fall!

Använda paket

Det finns en mängd paket gjorda för LaTeX somlägger till ytterligare kommandon som är till försärskilda användningar. Ett som detta kompendi-um använder är menukeys som används för skrivamenyval, som System Preferences Keyboard på ettsnyggt och behändigt sätt.

Nämn sist i avsnittet »Topplistan« något pro-gram som går att köra från Applications -menyn därdu talar om var det finns i menyn och visar det påett sånt sätt.

Använd \usepackage{menukeys} i dokumen-tets huvud för att kunna använda kommandona idetta paket.

För att veta hur du ska skriva in menyn så görtexdoc menukeys för att ta fram dokumentatio-nen för detta TEX-paket. (Ja, det är ännu ett sättatt hitta dokumentationen för något, denna gångspecifikt för TEX.)

Det är bara avsnitt 1 (Introduction) i dokumen-tationen du får fram som du behöver, för där finnsexempel på hur man gör sånt.

Slut på denna del

När du är klar med latex1.tex så checka in den.(Kolla en extra gång att det funkar att TEXa denförst.) Skriv att du är färdig med den i incheck-ningsmeddelandet.

Checka även in den bild du använde in din fi-gur. Annars skulle det ju inte fungera för mig attTEXa din fil efter att jag checkat ut innehållet idenna katalog. (Du kan öppna den i Emacs ochchecka in den som andra filer där, fast det är enbild. Emacs kommer att växla mellan att visa in-nehållet som bild och inte, men det funkar ändå.)

77

Page 78: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 7: LATEX

Om du kollar med svn status så ser du attsvn anmärker på att det ligger filer i katalogensom den inte vet något om, som latex1.pdf ochandra filer som skapades av LaTeX. Det är helt isin ordning.

En gemensam sagobok

Den där katalogen alla som du skapade först ilabben är en arbetskatalog för ett repositoriumsom ni alla kan ändra i.

Gå till den katalogen och ge kommandotsvn update . Ifall någon annan redan har gjortnågon ändring så kommer du nu att få filerna därändrade enligt detta.

Uppgift 7.11 Vad gav svn update för output?

Öppna med Emacs filen sagobok.tex i denkatalogen. Den innehåller början till en sagobokskriven med LaTeX. Prova att TeXa den och sepå resultatet med hjälp av C-c C-c ett par gång-er. (Om det blir något TEX-fel så är det någon sområkat lägga in något fel. Det fixar nog den perso-nen snart. Då gör du svn update igen för att fåden nya versionen.)

Det finns en rubrik i filen som heter som dittanvändarnamn. Ersätt det som står under rubri-ken med din saga.

Inte min saga! Om du inte vill ta med dinegen saga så får du istället kopiera första styc-ket från någon av dem av Selma Lagerlöf påhttp://runeberg.org/sagasaga/.

Välj någon som inte redan är tagen.

Prova att det går bra att TEXa utan felmedde-landen efter ditt inlägg och checka sedan in dinändring.

Undvik versionskonflikter!Gör svn update innan du gör dina änd-

ringar och checka in ganska snart efter attdu gjort dina ändringar för att undvika att nikommer i osynk med varandra.

Piffa till latex1.texDu var »färdig« med latex1.tex förut, men nuska du ändra lite i den ändå. Där du har kom-mandon \author och \title, så lägg även till ettkommando \course med denna kurs namn somargument. Det är ett kommando som inte finns ide flesta LaTeX-klasser, men det finns i stupp.

Uppgift 7.12 Vad har det för effekt?

Nu ska du sätta lite individuell prägel på din filgenom att göra minst tre av följande i dokumen-tets huvud:

• Använd en väljare som fontsize=12 för attändra textens storlek (mätt i punkter). Pro-va dig fram till ett värde du trivs med (ellerbehåll det som det är)

• Använd väljaren twocolumn för att fåtvåspaltig text.

• Använd väljaren twoside för att få texten an-passad för dubbelsidig layout (som skiljer påvänster- och högersidor)

• Använd andra typsnitt genom att använda tillexempel fonts=palatino som väljare. And-ra möjliga värden är fourier, lm, times ochuu. (Det sistnämnda använder de typsnittsom ingår i Uppsala universitets grafiska pro-fil.)

• Om du föredrar tomrad för nytt stycke istäl-let för indrag, så använd väljaren parskip.

• Sätt färg på rubrikerna med\addtokomafont{disposition}{\color{red}}eller med någon annan färg. Eller istället fördisposition kanske du hellre vill ändra påcaptionlabel och/eller caption för bild-texter.

• Använd kommandot \urlstyle med ett ar-gument rm, sf eller same för att tala om atturlar ska skrivas med »vanlig stil«, sans-serifeller samma som omgivande text.

TEXa om och prova dig fram tills du blir nöjd.Se över en extra gång att allt fortfarande ser braut innan du checkar in. Skriv i incheckningsmed-delandet att det är piffandet det gäller.

Nu är du klar på riktigt, så snart du har checkatin ids7.txt med svar på frågorna också.

Revert file: När du i Emacs försöker ändra igen ien fil som har ändrats på något annat sätt så varnarEmacs att filen är »changed on disk; really edit thebuffer?« Det händer t. ex. om filen har ändrats avsvn update för att nån annan har ändrat den.

Ofta är bäst svar varken ja eller nej utan r(för revert) som hämtar in den senaste texten ini Emacs-bufferten.

78

Page 79: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 8

Internet & World Wide Web

8.1 ssh

Ett program för att logga in på andra datorer övernätet är ssh. Gör ssh stp för att logga in på da-torn stp. (Du får lov att ange lösenord, och detkommer inte att ekas.)

Uppgift 8.1 När du nu är inloggad på den da-torn istället, vad får du för prompt från skalet då?

Kör igång Emacs på den datorn genom att skri-va emacs . Du får upp Emacs inne i terminalfönst-ret. Du kan avbryta Emacs med C-x C-z ochkomma tillbaka till den med skalkommandot fg.

Uppgift 8.2 På datorn stp finns en fil i /opt/ids som heter som ditt användarnamn. Vad stårdet för fyrsiffrigt tal i den filen?

Avsluta det skal du kör på stp med hjälp avkommandot exit. Får du ett meddelande om»stopped jobs« kan du ge exit igen för att avslutaändå.

Uppgift 8.3 Det finns en väljare till ssh som pådess man-sida beskrivs som »Enables trusted X11forwarding«. Hur lyder den?

Ge ett nytt ssh-kommando där du använderväljaren från förra frågan för att koppla dig till stpigen.

Uppgift 8.4 Prova att köra emacs på stp igen.Vad blir annorlunda nu?

På detta sätt kan du logga in här hemifrån, mendå får du skriva det fullständiga domännamnetstp.lingfil.uu.se istället för bara stp.

8.2 Domännamn

Nätverket Internet används för en mängd oli-ka system, bland annat för webben. Datorerpå Internet kan ha ett domännamn i stil med

futurum.lingfil.uu.se med punkter mellanolika delar. Här är se en toppdomän (= Sverige),uu (Uppsala Universitet) en underdomän till seoch lingfil en underdomän till uu.se, och slut-ligen är futurum namnet på just denna dator.

Uppgift 8.5 Titta på man-sidan till ssh. Därsyns att bland en massa frivilliga saker så är »host-name« det enda som måste finnas med när mankör ssh. Se hur man skriver man för att även ta-la om användarnamn. Hur ser ett kommando utsom ssh-ar för att logga in som dig på datorernahär?

8.3 Toppdomäner

Några av de äldsta toppdomänerna på Internet ärgov för »US government«, edu för skolor och uni-versitet, org för organisationer och com för före-tag. (Ofta så följs dock inte denna indelning.)

Vid internationaliseringen av Internet tillkomtvåbokstaviga toppdomäner för länder med sam-ma landskoder från ISO 3166 som i tabellen pås. 40. (Dock används här inte gb för Great Britainutan istället uk för United Kingdom.)

Senare har fler allmänna toppdomäner tillkom-mit, som info och biz.

I många fall används landskoder flitigt även ihelt andra länder. Domänen tv för den polynesis-ka önationen Tuvalu används t. ex. för flera webb-platser med televisionsanknytning. Domänen nusom är populär bland annat i Sverige hör egentli-gen till ön Niue med drygt 2 000 invånare.

8.4 World Wide Web

World Wide Web (WWW), webben, skapades avengelsmannen Tim Berners-Lee på CERN. (Denförsta webbservern fanns på http://info.cern.ch och gjordes tillgänglig den 6 augusti 1991.)

Det var en kombination av hypertext och detglobala datornätet Internet, så att länkar i texten

79

Page 80: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

8. INTERNET & WORLD WIDE WEB

kunde gå till dokument på en helt annan plats pånätet.

Varje dokument på webben har ett beteck-ning som talar om var en webbläsare kan hit-ta den – en URL (Uniform Resource Locator).Den kan i ett enkelt fall se ut i stil medhttp://stp.lingfil.uu.se/lila/www/. Förstadelen http anger schemat – den metod webblä-saren ska använda för att få tag på dokumentet.Där står http för »hypertext transfer protocol«– det normala sättet att kommunicera på mel-lan webbservrar och webbläsare, utvecklat särskiltför WWW. Delen stp.lingfil.uu.se anger do-männamnet för den dator som ska kontaktas. De-len /lila/www/ slutligen är det som skickas tillwebbservern på stp.lingfil.uu.se i detta falloch som anger just vilket dokument på den webb-servern som vi önskar. Ibland börjar den delenmed tilde när en viss användares webbsidor skanås, inspirerat av hur man betecknar hemkatalo-ger i Unix.

Början http:// utelämnas ofta när webbadres-ser ges. Snabbt blir https, som använder krypte-ring, allt vanligare.

8.5 Redovisning

Checka in en fil ids8.txt på det vanliga ställetmed svar på frågorna. Använd exakt de filnamnsom står här för att underlätta rättandet. Bli klarsenast onsdag 7/10.

8.6 Att publicera på WWW

Skapa en underkatalog public_html till din hem-katalog, kopiera dit /local/kurs/ids/peppar.html och öppna kopian i Emacs.

Observera att till skillnad från nästan alla filersom du gör i denna kurs så ska det inte ligga underdin kurskatalog. Det måste ligga i denna särskildakatalog för att webbservern ska se filen.

Eftersom detta är en HTML-fil får du nu somkan vänta sig ett särskilt Emacsläge med menyer

Internet-historia: Det amerikanska militärpro-jektet ARPANET från 1969 och framåt är en di-rekt föregångare till Internet. Samma teknik an-vändes sen i universitetsnätverk och 1983 skapa-des ett gemensamt nätverk mellan universitet ihela USA. (Först senare kom även företag in pånätet.) I Sverige kopplades det svenska universi-tetsnätet SUNET samman med detta amerikans-ka universitetsnätverk i slutet av 80-talet. Alltmerblev det så att olika datornätverk gick över tillsamma teknik och förenade sig med andra nätverkså att det blev ett enda stort Internet.

och särskilda kommandon för att underlätta skri-vandet av HTML. Det är bland annat en speciellmeny HTML och en SGML .

I en av dem finns ett kommando View BufferContents. Utför det!

Uppgift 8.6 Vad är kortkommandot för detkommandot?

Uppgift 8.7 När du utför det öppnas filen iwebbläsaren. Vilken URL hamnar du på där?Klipp-och-klistra från fältet där adressen visas iwebbläsaren.

Uppgift 8.8 En del av det värde som du klipp-och-klistrade syns inte där det står i webbläsarensadressfält, men det syns när du kopierar texten.Exakt hur lyder den delen?

Så genom att lägga filer i public_html görs deåtkomliga på webben. Om du får en URL sombörjar med »file:///« så har du inte lagt filen i enkatalog som heter som den ska och ligger där denska. Se över det igen i så fall!

8.7 HTML

Hypertext Markup Language (HTML) är det van-ligaste formatet för information på webben ochskapades också av Tim Berners-Lee.

Sedan länge sker arbetet med HTML inom detav Berners-Lee grundade World Wide Web Con-sortium (W3C).

Det finns flera versioner av HTML samtidigt påwebben. Trots att HTML4 standardiserades redan1997 pågår fortfarande arbetet med HTML5.

* * *Jämför innehållet i peppar.html med hur den vi-sas i webbläsaren!

Uppgift 8.9 Första raden i filen är en dokument-deklaration som talar om vad för slags dokumentdet är. Hur lyder den?

Resten av filen består av element där ett elementbörjar med en starttagg och slutar med en sluttaggoch har ett innehåll mellan dessa. Starttaggarnabörjar med < och sluttaggarna börjar med </ ,och båda slutar med > . Elementen kan ha and-ra element inom sig.

Ett exempel på ett element är <li>2 ägg</li>med starttaggen <li>, innehållet 2 ägg och slut-taggen </li>.

Uppgift 8.10 Vad är det för element som sträc-ker sig över hela dokumentet? (Det vill säga bör-jar direkt efter deklarationen och slutar på slutet.)

80

Page 81: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

8.8. CSS

Uppgift 8.11 Dess innehåll är uppdelat i tvåelement som täcker upp allt inom den. Vad är deför slags element?

Uppgift 8.12 Vad är det för element som ver-kar användas för rubriker? (Jämför med hur do-kumentet visas.)

Uppgift 8.13 Elementet li används inom tvåolika andra element. Vilka då?

Uppgift 8.14 Vad är li förkortning för? (Sök pånätet!) Och namnen på de två elementen i förrafrågan?

Uppgift 8.15 För stycken används elementet p.Vad är det stycke heter på engelska som detta ärförkortning för?

Starttaggarna kan ha attribut med värden. T. ex.används elementet a för att visa vilka delar av si-dan som ska vara länkar till andra webbsidor. Mendet räcker inte med bara

På <a>UU</a>!

för att visa att ordet »UU« ska vara en länk. På nå-got sätt måste man också tala om till vilken URLden länken ska gå. Det gör man med ett värde tillattributet href, så här:

På <a href="http://www.uu.se/">UU</a>!

Uppgift 8.16 Det finns flera sådana a-element ipeppar.html. En av dem ger en länk till texten»Blanka av Namur«. Till vilken URL går den län-ken?

8.8 CSS

CSS är ett språk för att definiera vilken stil olikadelar ska visas med. I peppar.html finns en rad

<link rel="stylesheet" href="ful.css">

som visar att information om detta ska finnas iful.css. Kopiera därför /local/kurs/ids/ful.css till samma katalog som du kopierat peppar.html till och ladda om sidan i webbläsaren (an-tingen med en knapp för det, eller med Ctrl-R).

Om du inte får en markant skillnad i utseendetså har något blivit fel. Kontrollera tidigare steg el-ler fråga i så fall!

Öppna ful.css i Emacs för att se hur detta hargått till. Där finns en regel som säger flera sakerom hur a-element ska visas, och sen en regel om»footer a« vilket betyder bara sådana a-elementsom ligger inom ett footer-element.

Uppgift 8.17 Ge exempel på en av radernaom a och berätta vad den verkar betyda.

Just de här reglerna för li är tämligen vansin-niga. Nu ska du skriva bättre regler i en annan filför olika slags element. (Om du vill kolla lite vadsom händer så kan först du ändra några värden iful.css och se vilken effekt det har. Du får laddaom webbsidan för att det ska märkas.)

8.8.1 fin.cssSkapa med Emacs en ny fil fin.css i din katalogpublic_html och ändra i peppar.html så att denanvänder sig av denna istället för av ful.css.

När du skriver en rad i CSS-filen så använd TABi Emacs för att få lagom stort indrag för olika ra-der.

Lägg först till detta för att ge regler för elemen-tet footer och ladda sen om webbsidan för att seeffekten.

footer {clear: both;border-top: 1px solid brown;padding: 5px;text-align: center;

}

Uppgift 8.18 Vad allt detta gör är inte uppen-bart, men nämn nån effekt som du direkt mär-ker på den del av dokumentet som ligger inomfooter-elementet?

(px är en liten längdenhet. Du kan söka efter»css units« på nätet för att läsa om andra enhetersom kan användas i CSS-regler.)

Lägg till en rad där om att texten i footer skavara mindre än huvudtexten. (Jämför med hurstorleken ändrades i ful.css. Välj själv hur myc-ket mindre texten ska vara.)

Nästa förändring blir större. Själva receptet stårinom ett element section. Skriv en regel

section {float: left;width: 40%;

}

och en likadan regel för det element som avsnittet»Historia« står i, förut att den ska ha right iställetför left.

Om du gjort rätt så har du fått effekten att des-sa båda delar visas sida vid sida på 40 % av bred-den var. (Resten blir en glipa mellan dem.)

Historietexten är tänkt som extrainformation imarginalen. Ändra de båda bredderna och minskastorleken på historietexten, så att den tar mindreplats och inte blir så framträdande.

81

Page 82: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

8. INTERNET & WORLD WIDE WEB

8.8.2 Färger

Skriv en regel

body {color: lime;background-color: pink;

}

för att ändra färg och bakgrundsfärg i dokumentetoch se effekten. Men även om detta blev väldigtvackert ska du välja andra färger! Gör en webb-sökning på »css color« för att se hur man kan skri-va och välj ut andra färger att använda. Eftersomden regeln gäller body så gäller den allt som detinte finns mer specifika regler för.

Lägg nu till andra färger för historietexten imarginalen, så att den skiljer sig tydligare från hu-vudtexten.

8.8.3 Översta rubriken

Nu ska vi sätta en bakgrundsbild till översta ru-briken »Pepparkakor«. Lägg till denna regel:

h1 {background-image: url("...");background-position: center;text-align: center;background-repeat: no-repeat;

}

men där ... är en webbadress till en bild. Välj an-tingen http://stp.lingfil.uu.se/kurs/ids/gingerbread.jpg eller sök upp en annan bild duvill ha. Se efter att du får en bakgrundsbild tillrubriken nu!

Uppgift 8.19 Vad händer om intebackground-repeat är satt?

Ändra så att rubriktexten blir större, och läggtill lite utfyllnad (padding) som det är för footer,så att mer av bilden syns. Välj själv hur mycket.

Beroende på vad du har för färg på rubriktextenkanske den inte syns så bra mot bilden. Lägg tillregler för h1 som gör att texten syns ordentligt!

8.8.4 Validering

Gå till https://validator.w3.org och knappain adressen till din CSS-fil för att få den kollad.Om du får en gratulation för att det inte är någrafel så grattis! Fixa annars till vad den nu klagar på.

8.8.5 Mer?

Detta räcker för pepparkakorna, men om du villlägga till mer regler som du lär dig själv om, så görgärna det. Men se till att validera igen efteråt!

8.9 ids8.htmlSkriv en egen webbsida ids8.html som handlarom vadsomhelst utom pepparkakor. Denna nyaHTML-sida ska ha med åtminstone några rubri-ker, några stycken och några länkar till andra si-dor, men du får gärna ha mer. Använd TAB när duskriver för att få så mycket indrag på raderna somHTML-läget i Emacs tycker är lagom.

Låt en av länkarna gå till din peppar.html. Dåräcker det med att skriva peppar.html som adresstill den eftersom den ligger i samma katalog.

Ta dessutom med ett par bilder. Det fanns detinte i peppar.html (utan bara som bakgrundsbildi CSS-filen). Sök på nätet efter hur man gör sånt!(Du kan lägga bildfiler i samma katalog eller länkatill bilder på andra ställen med en längre adress.)

Skriv CSS för flera olika element i ids8.html,så att den får ett klart annorlunda utseende än vadden skulle ha utan, men utan att helt planka pep-parkakorna för det. Här är några möjliga idéer:

• Andra storlekar och/eller färger på rubriker• Sök upp CSS som inte tagits upp här, till

exempel på http://htmldog.com/guides/css/beginner/.

• Lägg till en bakgrundsbild på något annat änh1

Sök på nätet efter »css hover« för att lära dighur man kan skriva CSS-regler som bara gäller närman håller muspekaren över något, och använddetta i någon regel. Det är vanligast att man an-vänder sådant för a-element, så att man tydligtmärker att det finns något att klicka på där.

8.9.1 Validering

Använd valideraren på https://validator.w3.org för att validera din nya HTML-fil och dinnya CSS-fil. Fixa till vad den eventuellt klagar på!HTML har regler om vilka slags element som finnsoch vilka element som får finnas inom vilka. Omdu får fel som har med sådant att göra så läs nogavad det står där!

Uppgift 8.20 Har du gjort klart ovanståendewebbsidor än och sett att valideraren inte klagarpå dem? (ja/nej) (Denna fråga är till för att jagska veta om det är dags för mig att titta på dinwebbsida än.)

Uppgift 8.21 I elementet head i peppar.htmlfinns det två element som inte har sluttaggar. Vil-ka då?

Uppgift 8.22 Bland de särskilda kommandona iHTML-läget i Emacs finns bland annat några föratt lägga in rubriker på olika nivåer. Vad är kort-kommandona för dem?

Uppgift 8.23 Nämn några motsvarigheter ellernästan-motsvarigheter mellan hur olika slags textläggs in i LaTeX och HTML.

82

Page 83: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 9

Reguljära uttryck

I kapitel 5 togs reguljära uttryck upp som argu-ment till grep. I detta kapitel lär vi oss mer omsådana och om några andra sammanhang där deanvänds.

9.1 Ett tecken: . [ ] [^ ]

• . = ett godtyckligt tecken• [abc] = något av tecknen a, b eller c• [^abc] = ett tecken som inte är a, b eller c

Inom hakparenteser kan - användas mellan tvåtecken för intervall. Så [0-9] betyder 0, 1, 2, 3,4, 5, 6, 7, 8 eller 9, och [0-9,.] betyder 0, 1, 2,3, 4, 5, 6, 7, 8, 9, komma eller punkt.

De flesta tecken som är speciella annars i reg-expar är inte speciella inom []. T. ex. matchar[9.*] en nia eller en punkt eller en asterisk. (Ut-anför hakparenteserna hade båda punkten och as-terisken haft en särskild betydelse.)

Dessutom kan man inom [] stoppa in en be-teckning för en hel klass tecken, som betydert. ex. »en bokstav« eller »ett skiljetecken«. Dessateckenklasser har namn som börjar med [: ochslutar med :], t. ex. [:lower:] för en gemenbokstav. Tabell 9.1 visar några av dessa.

Tabell 9.1: Några namngivna teckenklasser. Betydel-serna är inte helt strikta här, utan kan variera medolika locale.

Namn Betydelse

[:alnum:] [:alpha:] + [:digit:][:alpha:] [:lower:] + [:upper:][:blank:] Blanka tecken (SPC, TAB)[:cntrl:] Kontrolltecken[:digit:] Siffror[:graph:] Grafiska: [:alnum:] + [:punct:][:lower:] Gemena (små) bokstäver[:print:] Skrivbara: [:graph:] + SPC[:punct:] Interpunktion[:upper:] Versala (STORA) bokstäver

Traditionellt har man skrivit t. ex. [A-Z] för attfå en versal, och detta (och [a-z] och [A-Za-z])kan man se på många håll i exempel på reguljärauttryck. Det är dock säkrare att använda namngiv-na klasser. Då ska man få man med alla bokstäver,även t. ex. åäö, oavsett språkinställningar.1

Observera att hakparenteserna ingår i nam-nen på dessa teckenklasser! Det gör att det blirdubbla hakparenteser i de reguljära uttrycken.Om man byter ut A-Z mot [:upper:] så be-tyder det att ett reguljärt uttryck som [A-Z]istället blir [[:upper:]] , medan [^A-Z] blir[^[:upper:]] , och uttrycket [z[:punct:] ]betyder ett z eller ett interpunktionstecken ellerett mellanslag.

9.2 Ankring: ^ $ \< \>Metatecknen ^ och $ för början av raden respek-tive slutet av raden har vi redan sett.

Så med t. ex. ^xyz hittar man rader som bör-jar med xyz (radbörjan följt av »xyz«) och med[[:blank:]]$ hittar man rader som slutar mednågot blankt tecken.

Dessa båda tecken matchar alltså inget teckenalls på egen hand, utan ställer bara krav på var detövriga i uttrycket ska befinna sig. Man säger attdessa ankrar ett reguljärt uttryck.

Med \< respektive \> matchar man en ordbör-jan respektive ett ordslut. Så med \<anti hittarman »anti« som står i början av ett ord (t. ex. »an-ti« i »antites« eller »antilop« men inte i »fantise-ra«).

9.3 Bakstreck: \Bakstrecket betyder nånting tillsammans med dettecken som följer direkt efter det. I synnerhet kanman sätta ett metatecken efter bakstreck när manverkligen vill söka efter det tecknet.

1Skriv inte [a-ö] när du menar ’en bokstav’! Dels skulledet vara beroende av en viss sorteringsordning, och dessutomfunkar det ändå inte som man skulle kunna tro.

83

Page 84: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

9. REGULJÄRA UTTRYCK

Så för att söka efter t. ex. en siffra mellan aste-risker, som t. ex. »*3*« kan man använda det re-guljära uttrycket \*[0-9]\* med bakstreck föratt visa att det verkligen ska vara med asteriskeri texten.

I övrigt används bakstreck följt av annat tec-ken för lite olika funktioner. Under ankring ovannämndes två. En annan användbar är \w där »w«står för »word«. Det betyder liksom [[:alnum:]]ett alfanumeriskt tecken, men är kortare att skri-va. Så a\wa matchar t. ex. »axa« och »a7a«, meninte »a!a« eller »a a«.

9.4 Utökade reguljära uttryck

Det finns olika varianter av reguljära uttryck medlite olika uppsättningar metatecken. Hittills harvi sett enkla reguljära uttryck (basic regular expres-sions) där de speciella tecknen är

. * ^ $ [ ] \

Alla andra tecken matchar bara sig själva. Medså kallade utökade reguljära uttryck (extended regu-lar expressions) tillkommer dessa speciella tecken:

+ ? ( ) { } |

Kommandot grep använder normalt de enkla(basic) regexparna, men med en väljare -E (som iExtended) använder den de utökade.

9.5 Repetitioner: * + ? {}Asterisken har vi sett förut. Nytt i de utökaderegexparna är + efter något för att säga att det-ta något ska förekomma en eller flera gånger. Detutökade reguljära uttrycket bä+ matchar därmedsträngarna »bä«, »bää«, »bäää«, »bääää«, osv., hurlångt som helst. (Observera att det bara är ä somrepeteras. Detta reguljära uttryck matchar t. ex.inte »bäbäbä«.)

Skillnaden med asterisken * är att den även till-låter att den repeterade delen inte är med någongång alls. Så bä* matchar samma texter som bä+ ,men dessutom även »b«.

Med ? efter något anger man ett det är frivilligt,dvs. det kan vara med en gång eller inte alls. Såbä? matchar »b« och »bä« och inget annat.

Med {n} efter något kan man säga att detta nå-got ska förekomma n gånger. Så [sz]{3} matcharsamma som [sz][sz][sz] , dvs. »sss«, »ssz«, »szs«,»szz«, »zss«, »zsz«, »zzs« och »zzz«.

Med {n,m} ska det vara minst n och högst mförekomster, så br{2,5} matchar »brr«, »brrr«,»brrrr« och »brrrrr«, och inget annat.

Maxantalet m kan utelämnas, och 8{3,} bety-der minst tre åttor, dvs. »888« eller »8888« eller»88888« eller . . . (Hur många som helst.)

Om inte det som står före det som visar repeti-tion är något inom [] eller () (som vi kommertill snart!) så är det ett ensamt tecken som re-peteras. Så hej ?hopp matchar »hejhopp« eller»hej hopp«.

9.6 Alternativ: |

Med lodstreck (|) visar man alternativ.Så vit|svart|grå matchar »vit« eller »svart«

eller »grå« och foo|b[aä]r matchar »foo« eller»bar« eller »bär« (eftersom alternativet efter lod-strecket hade två varianter).

Glöm inte att hakparenteser kan användas omalla alternativ består av ett tecken, så istället föra|e|i|o|u är det enklare att skriva [aeiou] .

9.6.1 Parenteser: ( )

Med parenteser kan man föra samman ett stör-re uttryck. Så med en (grå liten|stor) kattmatchar man »en grå liten katt« eller »en storkatt«. Utan parenteser skulle det bli allt före el-ler efter lodstrecket.

Parenteser är också användbara för att hållaihop något som ska repeteras. Det gör t. ex. att(bar){2,5} matchar »barbar«, »barbarbar«, »bar-barbarbar« och »barbarbarbarbar«.

Fler exempel:• en (grön|blå)+ kavaj matchar t. ex. »en

grön kavaj« eller »en blågrön kavaj« eller »engröngrön kavaj« eller »en blåblågrönblågrönkavaj«.

• en grön|blå+ kavaj vore däremot någothelt annat! Det skulle matcha antingen »engrön« eller också något som matchas avblå+ kavaj , dvs. »blå kavaj« eller »blåå ka-vaj« eller »blååå kavaj« osv.

• mo(no)+ton matchar »monoton«, »monono-ton«, »monononoton«, osv.

9.7 Exempel

Här är några ytterligare exempel på (utökade) re-guljära uttryck.

• [a-h][1-8] – en ruta på ett schackbräde,som »e2« eller »b4«.

• [0-9]*[13579] – en sekvens med siffrorsom slutar med en udda siffra, som t. ex.»4711« eller »007«.

• (fjor|fem|sex|sjut|ar|nit)ton|tjugo– något av orden fr. o. m. »fjorton« t. o. m.»tjugo«

• (..)* – ett jämnt antal tecken, vilka somhelst

• \<pre\w*ing\> – ett ord som börjar med»pre« och slutar med »ing«.

84

Page 85: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

9.8. Olika sorters reguljära uttryck

9.8 Olika sorters reguljära uttryck

Reguljära uttryck används inte bara av grep utandyker upp i flera sammanhang. Av historiska skälanvänds dock tyvärr flera olika varianter av re-guljära uttryck. Ibland används de utökade (somgrep -E använder), ibland de enkla (som grepanvänder normalt) där tecknen + ? ( ) { } |inte har någon särskild betydelse, utan betyder sigsjälva.

(En del program som använder reguljära ut-tryck har dessutom sina egna utökningar av dem.Det har t. ex. Emacs och programspråket Perl.Flera utökningar som har gjorts för Perl har ploc-kats över till andra sammanhang också, t. ex. pro-gramspråken Java och Python.)

I grep så kan man komma åt all funktionalitetsom man kan få med + ? ( ) { } | utan att gåöver till utökade reguljära uttryck genom att skri-va \+ \? \( \) \{ \} \| istället. Så dessa tvåkommandon gör samma sak:

$ grep -E '^(tre|fyr|fem)' verb.txttrefaldigafemfaldigafyrfaldigatredubblafyrdubblatremuleratrepanerafyratreva$ grep '^\(tre\|fyr\|fem\)' verb.txt[ samma svar ]

nämligen hittar de rader i den filen som börjarmed »tre«, »fyr« eller »fem«.

9.9 Reguljära uttryck i Emacs

Det finns flera kommandon i Emacs som använ-der reguljära uttryck. Vid sidan av C-s och C-rsom söker framåt respektive bakåt efter en text-sträng så finns även C-M-s och C-M-r som sökerframåt respektive bakåt efter ett reguljärt uttryck.(Här ska alltså både Control och Meta användastillsammans.)

Under en inkrementell sökning kan man ocksåanvända M-r för att slå om huruvida sökningenska gälla reguljära uttryck eller inte.

Det finns även andra kommandon som ni kom-mer att möta i inluppen.

De reguljära uttrycken i Emacs är ungefär somenkla reguljära uttryck, men även plustecknet ochfrågetecknet är metatecken.

9.10 grep -oKommandot grep arbetar som många andra kom-mandon normalt med rader. Den fungerar som ettfilter som bara släpper igenom de rader som inne-håller ett visst sökuttryck. (Eller med väljaren -vde rader som inte innehåller ett visst sökuttryck.)

Med väljaren -o ändras detta och man får istäl-let ut just de delar som matchade sökuttrycketistället för hela rader.

$ grep l.ll verb.txtlallalullaparallellställaparallellisera$ grep -o l.ll verb.txtlalllulllelllell

Se sökningarna i figur 9.1 där vi söker efter ordsom börjar på »f«. Utan -o spelar det ingen rollom vi söker efter \<f\w* eller bara \<f . Det ärsamma rader (i detta fall bara en rad) som hit-tas. Men med \w* på slutet hittas hela ordet, vil-ket gör skillnad när vi använder -o för att få sevilken del av texten som matchade sökuttrycket.Det kan (som här) bli flera matchningar per rad.

9.11 Girighet och hunger

Ett sådant uttryck som [1-9]0* matchar ju ensiffra 1–9 eventuellt följt av nollor, t. ex. »5«, »10«eller »30000«.

$ echo 'Timmy 2000' | grep -o '[1-9]0*'2000

I exemplet ovan ser vi hur uttrycket matchade»2000«. Men det skulle ju också kunna ha mat-chat bara »200« eller »20« eller »2«. Ändå är detjust matchningen »2000« som vi fick fram. Vidmatchningen väljs nämligen den längsta av fleramöjligheter som börjar på samma plats. Man sä-ger att operatorn * här är girig eller hungrig (greedypå engelska) vilket innebär att den »vill« matchaså mycket som möjligt. Samma gäller de andra re-petitionsoperatorerna vi har tagit upp.

Detta behöver man tänka på ibland, i synnerhetmed .* eller .+ som lätt kan matcha mer än manegentligen hade tänkt sig. Om man t. ex. vill sökaefter citat inom »« kan det ligga nära till hands attanvända ett reguljärt uttryck ».*« för att visa att

85

Page 86: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

9. REGULJÄRA UTTRYCK

$ grep '\<f' saga.txtingenting, för han var försäkrad. Några dagar senare flyttade$ grep -o '\<f' saga.txtfff$ grep '\<f\w*' saga.txtingenting, för han var försäkrad. Några dagar senare flyttade$ grep -o '\<f\w*' saga.txtförförsäkradflyttade

Figur 9.1: Greppande med och utan -o i en saga. \<f betyder ett f i början av ett ord, och \w* betyder godtyckligtmånga ytterligare »ordtecken« efter det, så tillsammans betyder det ett ord som börjar på f.

det ska börja med », sluta med « och däremellanfår innehålla vad som helst. Men »vad som helst«kan bli mer än man tänkt sig:

$ cat testfilHej hopp!Ska det stå »i dag« eller »idag«?$ grep -o '».*«' testfil»i dag« eller »idag«

Detta svar börjar ju och slutar med de efterfrå-gade tecknen, men är längre än bara »i dag« somman kanske snarare var ute efter.

I detta fall är ett sätt att lösa problemet att krä-va att tecknen mellan de båda citattecknen in-te själva får vara slutcitattecken, dvs. att använda[^«] istället för . för varje tecken mellan citat-tecknen.

$ grep -o '»[^«]*«' testfil»i dag«»idag«

9.12 sed

Med kommandot sed kan man göra en mängd oli-ka omvandlingar av text. Namnet står för streameditor. Det kan göra mycket som en editor kangöra, men gör det inte interaktivt utan genomatt bearbeta text som kommer in i en inputström.Detta kan läggas in som ett avancerat filter somläser text från standard input och skriver ut enediterad version av texten på standard output.

Kommandot sed är lite som en schweiziskarmékniv som kan utföra en mängd olika saker,

bland annat sådant som ni har använt andra kom-mandon till, som head, tail och tr. Här kommervi dock att bara använda detta kraftfulla verktygtill en specifik sak, nämligen att byta ut text.

9.12.1 Att ersätta text med sed

Tidigare har vi använt tr för att byta ut text, mendet är begränsat genom att det bara är enstaka tec-ken som hanteras. Det duger inte om vi t. ex. villbyta ut alla förekomster av »foo« mot »bar«. Dess-utom har det begränsningar vid hantering av fler-bytestecken.

Eftersom ni nu bara kommer att använda sedtill en sak så kommer alla era anrop av sed attlikna varandra. De kommer alla att se ut ungefärsom

sed 's/regexp/replacement/g'

Här är det bara ett argument till sed, och dettalar om vilken editering som ska utföras. Det ssom argumentet börjar med här är ett kommandoi sed för substitute. Det söker upp förekomster avtext som matchar det reguljära uttrycket regexpoch byter ut dessa mot texten replacement.

Så t. ex. kan man skriva

ed och sed: Den ursprungliga editorn på Unix,som användes redan i forntiden före bildskärmar-nas tid, hette ed och var skriven av Ken Thomp-son. Det var Thompson som först introduceradereguljära uttryck i editorer.

När kommandot sed kom några år senare somen variant att använda för icke-interaktiv editeringav en inputström så byggde därför dess komman-don på motsvarande kommandon i ed.

Det enda sed-kommando vi tar upp här, s, finnst. ex. även i ed.

86

Page 87: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

9.12. sed

sed 's/color/colour/g'

för att byta ut alla »color« mot »colour«.2 eller

sed 's/s\>/z/g'

för att byta ut varje s som står i slutet av ett ordmot z.

Man brukar normalt använda snedstreck (/)som här för att avdela argumentet, men det kanvara något annat tecken istället, bara det är sam-ma tecken på alla tre ställen. Så om man behö-ver snedstreck i sitt reguljära uttryck eller i ersätt-ningen får man lov att välja nåt annat, t. ex.

sed 's!1/2!½!g'

för att byta alla förekomster av de tre tecknen»1/2« mot det enda tecknet »½«.

Efter det sista snedstrecket står väljare till s-kommandot. I exemplen ovan är det g som göratt alla förekomster byts ut (global). Annars bytsbara den första förekomsten på varje rad ut. Enannan väljare är i som ignorerar skillnader mellanversaler och gemener. Jämför följande fyra exem-pel som bara skiljer sig i vilka av dessa väljare somhar använts.

Om man ger ett andra argument till sed så ärdet vilken fil den ska hämta input från.

$ cat jaha.txtProcent procent procent PROCENT$ sed 's/procent/%/' jaha.txtProcent % procent PROCENT$ sed 's/procent/%/g' jaha.txtProcent % % PROCENT$ sed 's/procent/%/i' jaha.txt% procent procent PROCENT$ sed 's/procent/%/gi' jaha.txt% % % %

Varför heter det grep?: I editorn ed användesreguljära uttryck inte bara med kommandot s, ut-an även med bl. a. ett kommando g med vilketman sökte upp rader som matchade ett visst regul-järt uttryck och gjorde nåt med dessa rader. För attta bort alla rader som innehåller »foo« kunde mant. ex. göra g/foo/d där d är ett kommando som tarbort en rad. För att skriva ut alla rader som mat-chade ett reguljärt uttryck använde man istället p(= print).

Ibland förkortas regular expression med re, så ensådan operation kunde beskrivas g/re/p vilket ärskälet till att det senare skrivna program som ut-förde just den operationen fick namnet grep.

2I detta fall behövdes inte några citattecken runt argu-mentet till sed, eftersom inga tecken där är speciella i skalet,men oftast behövs det, så det kan vara säkrast att alltid ha meddet.

Kommandot sed använder normalt enkla regul-jära uttryck, men har en väljare -r som gör attden istället använder utökade reguljära uttryck.(Ja, grep och sed har olika väljare som betyder»använd utökade reguljära uttryck«. Dumt, va?)

9.12.2 Att återanvända originaltexten

I sed 's/regexp/replacement/g' är det bararegexp som är ett reguljärt uttryck. I ersättnings-delen har inte asterisker, parenteser osv. någonsärskild betydelse, utan blir sig själva.

$ echo 'byt allt' | sed 's/././g'........$ echo 'foo bar' | sed 's/[aou]/[äöü]/g'f[äöü][äöü] b[äöü]r$ echo 'hej hopp' | sed 's/e.*o/***/g'h***pp

Ett tecken som ändå är speciellt i ersättnings-texten är & (ampersand) som betyder hela dentext som matchade det reguljära uttrycket.

Om man vill bryta raden efter varje interpunk-tionstecken kan man därför göra

sed 's/[[:punct:]]/&\n/g'

där ersättningsdelen betyder det som[[:punct:]] matchade följt av ett nyrads-tecken (vilket skrivs \n här precis som t. ex.i tr).

Följande exempel dubblerar vokaler genom attanvända ampersand två gånger.

sed 's/[aeiouyåäö]/&&/gi'

87

Page 88: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 9: Reguljära uttryck

Redovisning

Checka in en fil ids9.txt med svar på frågorna.Frågorna är samlade i olika teman snarare än att

vara sorterade från lätta till svåra, så hoppa gärnarunt bland uppgifterna medan du löser dem istäl-let för att fastna på någon klurig uppgift som dukan behöva tänka mer på.

När frågan är i stil med »vilka ord finns detsom . . . ?« så ge dels svar på frågan och tala delsom hur du fick fram svaret, t. ex. vilket komman-do eller vilka kommandon du använt för att fåfram svaret.

Svenska ord

I /local/dict/dsso-list.txt finns en storsamling svenska ordformer tagna från Den storasvenska ordlistan. Använd den för frågorna i dettaavsnitt.

Eftersom filen bara innehåller rader med ett ordper rad kan du använda ^ och $ för ankring tillordbörjan och ordslut och . för ett godtyckligttecken inne i ordet.

Uppgift 9.1 Hur många ord finns det som slutarpå bokstaven v?

Uppgift 9.2 Vad finns det för ord som innehål-ler minst tre ä, som t. ex. »självbestämmande-rätt«?

Uppgift 9.3 Vilka ord med minst nio bokstävergår att skriva enbart med tecknen på översta bok-stavsraden på tangentbordet? (qwertyuiopå)

Uppgift 9.4 Vad finns det för ord som är minst12 tecken långa vars enda vokal är o?

Uppgift 9.5 Du håller på med korsordet i fi-gur 9.2. Hur många ord passar in som det överstavågrätta ordet, med nyckeln »Har vi svenskar resti över 400 år«?

Uppgift 9.6 »Ödeskvinna« i det korsordetkanske är »norna«, men det skulle också kunnavara »moira«. Vilka ord passar in på överstavågrätta ordet om man tar hänsyn till dettaockså?

Uppgift 9.7 Vilka ord med minst fem teckenhar inte med någon av bokstäverna eantrsildogm?(De vanligaste tecknen på svenska enligt någonkälla.)

Uppgift 9.8 En del ord i den filen innehåller tec-ken som inte räknas som ingående i teckenklassen[:alpha:]. Hur många ord?

Väljaren -o

I dessa uppgifter ska du använda väljaren -o föratt bara få ut det som matchar ett uttryck från enfil.

Uppgift 9.9 Vilka tecken var det som fanns medi ordlistan trots att de inte ingår i teckenklassen[:alpha:] i förra uppgiften?

Uppgift 9.10 Vilka ord i /local/kurs/ids/wonderland.txt börjar med »cal«? (Rensa bortdubbletter från ditt svar.)

Uppgift 9.11 Vad finns det för ord som börjarmed versal och slutar med k i samma fil? Använd\w för att beteckna ett tecken inne i ett ord, ochrensa bort dubbletter från ditt svar.

Uppgift 9.12 Vad finns det för ord som innehål-ler q i samma fil? (Rensa bort dubbletter från dittsvar.)

Uppgift 9.13 Använd det utökade reguljära ut-trycket [0-9]+ för att ta fram vilka sif-feruttryck som finns i filen /local/kurs/ids/THE-GNU-PROJECT och sortera dem i nummerord-ning. (Rensa bort dubbletter från ditt svar.)

Uppgift 9.14 Skapa en fil GNU-w2 som listar al-la ord i filen GNU. Använd denna gång grep -omed lämpliga argument för att plocka ut ordenoch rensa bort dubbletter. På vilka sätt blev den-na ordlista bättre än den GNU-w1 som du skapadei uppgift 5.60 (s. 58)?

En sluttagg i HTML börjar ju med »</« ochslutar med »>«. Prova därför medgrep -o '</.*>' ~ellen/public_html/saga.htmlför att ta fram sluttaggar från denna HTML-fil.

88

Page 89: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Ta sed dit man kommer

Figur 9.2: Utdrag ur ett korsord som författaren har löst.

Uppgift 9.15 En del rader i svaret blev verkligensådana, t. ex. »</head>«, men andra rader kom attinnehålla mer. Vad är problemet? Hur kan du fixadet? Ge ett sorterad lista (utan dubbletter) medalla sluttaggar som förekommer i den filen.

Ta sed dit man kommer

Uppgift 9.16 Stavningsreform! Skriv ett sed-kommando som byter ut alla »ck« mot »kk«.

Du kan prova ditt kommando med t. ex.ditt kommando ck-test.txt där ck-test.txtär en fil som du gjort med lite testord, eller typecho sicksack | ditt kommando .

Uppgift 9.17 Hur lyder din saga på i-sprikit(även kallat i-språket), dvs. med alla vokaler ut-bytta mot i. Svaret ska börja »Dit vir in ging«.

Uppgift 9.18 Hur lyder din saga om alla mel-lanslag byts ut mot dubbla mellanslag? Svaret skaalltså börja Det var en gång.

Uppgift 9.19 Om Strindberg hade behövt skri-va Roeda rummet på en engelsk skrivmaskin ochfått lov att skriva aa ae oe istället för å ä ö, hurhade då början av den lydit?

Uppgift 9.20 Skriv ett kommando som byter utalla ord »ej« mot »icke« i en text. Se till att dubara byter ut hela ord så att du inte råkar bytat. ex. »mejl« mot »mickel«.

Uppgift 9.21 Skapa en fil GNU2 i din ids-katalogsom är som GNU, men där du bytt ut varje ordsom är minst två bokstäver långt och som ba-ra består av versaler mot samma ord men med»<abbr>« före och »</abbr>« efter. Så t. ex. skavarje förekomst av ordet »MIT« ha bytts mot»<abbr>MIT</abbr>«.

Uppror! (igen)

Dessa uppgifter använder sig av den uppror.txtsom du har sedan tidigare. Använd teckenklassernär det är lämpligt.

Uppgift 9.22 Vilka rader innehåller en litenbokstav som följs direkt av en stor?

Uppgift 9.23 Hur många rader innehåller minsttre interpunktionstecken i rad?

Uppgift 9.24 Vilka rader har minst sex konso-nanter i rad?

Uppgift 9.25 Vilka rader börjar med boksta-ven c?

Uppgift 9.26 Vilka rader börjar med ordet upp-drag?

Uppgift 9.27 Vilka rader både börjar och slutarmed bokstaven r?

Uppgift 9.28 Vilka rader både börjar och slutarmed bokstaven r, men har inga ytterligare r i sig?

Uppgift 9.29 Vilka rader innehåller exakt ett w?

89

Page 90: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 9: REGULJÄRA UTTRYCK

Uppgift 9.30 Vilka rader har med ord som bör-jar med »flä«?

Uppgift 9.31 Hur många rader är minst femtiotecken långa?

Uppgift 9.32 Gör en frekvenslista över vilka in-terpunktionstecken som förekommer, sorterade ifrekvensordning.

Uppgift 9.33 Vad finns det för parentesuttrycki uppror.txt?

På en rad står det t. ex.

försvar (och anfall) för att bevara den bästa av

Alltså ska (och anfall) ingå i ditt svar.En del parenteser börjar på en rad och slutar på

en annan. Dem kan du för enkelhets skull strun-ta i. (Men har du några idéer om hur du skullekunna ta hand om det också, så berätta gärna!)

I Emacs

Öppna filen /local/kurs/ids/wonderland.txti Emacs. Det finns ett Emacs-kommando somheter occur som listar de rader som innehållertext som matchar ett visst reguljärt uttryck. Dettakommando finns dock inte i menyerna, så användM-x för att köra det kommandot.

Du får sen skriva ett ett reguljärt uttryck. Skrivuet\> för att lista rader som innehåller ord somslutar på »uet«.

Uppgift 9.34 Hur många matchingar blev detoch hur visas dessa?

Sökträffarna visas i en buffert som är i ett sär-skilt Emacsläge där man kan gå direkt till en träffgenom att klicka på den, eller genom att tryckapå RET .

Uppgift 9.35 När man ger ett kommando medM-x i Emacs får man ett tips i ekoarean om hurman också hade kunnat ge kommandot om detfinns ett kortkommando för det. Med vilka tan-genttryckningar kan man också ge kommandotoccur?

Uppgift 9.36 I detta särskilda Emacsläge finnsdet en meny Occur . Vad är det understa komman-dot i den menyn, som står ensamt under en linje,och vad gör det? (Prova det!)

Använd nu Tools Search Files (Grep) i sammaEmacs. I minibufferten får du ett påbörjat grep-kommando. Lägg till gren *.txt till det för attleta efter »gren« i alla filer *.txt i den katalogen(/local/kurs/ids).

Här kan du på ett liknande sätt använda mus-klick eller RET för att gå till sökträffarna.

Uppgift 9.37 En av de väljare som användes tillgrep-kommandot här var -n. Den har vi inte an-vänt i kursen. Vad betyder den?

Uppgift 9.38 En av träffarna är från filennordic-authors.txt. Vilken författare var detsom hittades där?

Upproriska ord

Låt oss se vad det finns för ord i romanen Uppror!.Denna gång vill vi inte ha sifferuttryck och egen-namn som »Fitzschkloff« och »Knöckl«. Vi nöjeross med ord som bara består av små bokstäver.

Uppgift 9.39 Skapa en fil uppror-ord.txt meden svensksorterad ordlista (utan dubbletter) överord med bara små bokstäver i uppror.txt.

Många av dessa ord är säkert helt vanliga ordsom finns med till exempel i ordlistan /local/dict/dsso-list.txt, men andra ord är kanskespeciella för just denna bok.

Uppgift 9.40 Hitta vilka ord som finns medbåde i uppror-ord.txt och /local/dict/dsso-list.txt. Ett sätt att göra det är att sorteraihop de båda filerna och se vad det blir för dub-bletter då. Spara dessa i filen uppror-ord-ok.txt.

De övriga orden är kanske intressantare, sålåt oss jämföra uppror-ord-ok.txt med helauppror-ord.txt!

Kommandot diff visar skillnader mellan två fi-ler. Använd

diff uppror-ord.txt uppror-ord-ok.txtför att i kompakt form få se alla skillnader mellanfilerna. Det blir rader som börjar med »<« som vi-sar det som bara finns i den första filen. (Radernamed siffror är för att visa var i filen det är.)

Uppgift 9.41 Vad finns det för ord som slutarpå p med bland dessa ord?

Mer( mer)+

Uppgift 9.42 Hur lyder din saga.txt om mantar bort alla vokaler? (Svaret ska alltså börja »Dtvr n gng«.)

Uppgift 9.43 Hur lyder din saga.txt om al-la bokstäver dubbleras? (Svaret ska alltså börja»DDeett vvaarr eenn ggåånngg«. Bara bokstäver-na är dubblerade, men inte mellanslag eller inter-punktion.)

90

Page 91: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Mer( mer)+

Figur 9.3:Från xkcd av Randall Munroe. http://xkcd.com/208/ .Programspråket Perl är känt för att använda regexpar mycket.

Uppgift 9.44 Hur lyder din saga.txt om sistabokstaven i varje ord tas bort? (Svaret ska alltsåbörja »De va e gån«.)

Uppgift 9.45 Hur lyder din saga.txt om al-la versaler sätts inom hakparenteser? (Svaret skaalltså börja »[D]et var en gång«.)

Uppgift 9.46 Hur lyder din saga.txt översatttill rövarspråket som blivit känt från Astrid Lind-grens böcker om Kalle Blomkvist där varje konso-nant byts ut mot konsonanten + o + konsonanten.(Svaret ska alltså börja »DoDetot vovaror enongogånongog«.)

(Ännu bättre vore det egentligen med »Dodetot«där bara det första d-et är versalt. Att hitta hurman gör det är frivillig överkurs.)

Uppgift 9.47 Ge ett kort utökat reguljärt ut-tryck som matchar både »arton« och »aderton«(men inget annat).

En möjlighet är helt enkelt arton|aderton ,men gör något kortare!

Uppgift 9.48 Ge ett utökat reguljärt uttrycksom matchar »mormor«, »morfar«, »farmor« och»farfar« (men inget annat).

Här är mormor|morfar|farmor|farfar för-stås en möjlighet, men försök att skriva något kor-tare!

91

Page 92: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 9: REGULJÄRA UTTRYCK

Uppgift 9.49 Ta med grep -Eo och lämpligaargument fram telefonnummer med riktnum-mer från tidningstexterna i /local/kurs/ids/ivt2-svenska.txt.

Din lösning kan vara mer eller mindre bra. Jufler korrekta nummer du får ut desto bättre, menundvik att få falska träffar med sånt som inte ärtelefonnummer.

92

Page 93: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 10

Dokumentrepresentation

Vi har tidigare sett hur rena textfiler (plain text)representeras för datorn. En teckenkodning gervarje tecken ett visst numeriskt värde, inklusivesådana kontrolltecken som nyrad. Vid teckenkod-ningar med högst 256 olika värden lagras dessaen i varje byte (som var och en kan ha 256 olikavärden). För Unicode som har många fler värdenlagras tecknen på något sätt där en del eller allatecken tar upp flera bytes.

När mer komplicerad information, som ordbe-handlingstext, ljud, bild, film, databaser, programm. m. ska lagras kan det också ske i form av textpå något sätt eller som binärfiler där de olika ko-derna inte har tecken som motsvarigheter. Närtexter lagras i filer eller sänds i kommunikationmellan datorer gäller det att avsändare och mot-tagare är överens om vilken kodning som användsså att informationen tolkas som det var tänkt.

10.1 Uppmärkt text

I många sammanhang är det vanligt att textfiler äruppmärkta med taggar som anger att en viss delav texten ska tolkas eller behandlas på ett visstsätt.

Ett exempel vi har sett på det är HTML däruppmärkningen sker med starttaggar som <h1>och sluttaggar som </h1>. Ett helt uttryck som<h1>Hej</h1> kallas för ett element, där elemen-tets innehåll är »Hej«.

I andra sammanhang skulle man kunna tänkasig att andra egenskaper hos texten märktes upp,med helt andra taggar. I en del fall har man kanskeanledning att märka upp varje ord med ordklass.I ett annat fall kanske man vill märka upp barakapitel och stycken. I ett tredje fall kanske manvill visa exakt hur en viss utgåva av en tryckt skriftsåg ut och märka upp sidor och rader.

En uppmärkning av Röda rummet skulle kunnabörja

<rubrik>Stockholm ifågelperspektiv</rubrik><mening>Det var en afton i början avmaj.</mening> <mening>Den lillaträdgården på ... och blommor.</mening>

Här är kapitelrubriken uppmärkt och dessutommeningar. Det finns taggar som visar var de upp-märkta delarna börjar och var de slutar.

En uppmärkning som anger ordklass för allaord skulle kunna innehålla t. ex. något som

<pron>Det</pron> <verb>var</verb><art>en</art> <subst>afton</subst><prep>i</prep> <subst>början</subst><prep>av</prep><subst>maj</subst><punkt>.</punkt>

10.2 HTML kommer från SGML

Den här syntaxen med taggar med <> och / varinget nytt påhitt för HTML, utan använde sig avSGML (Standard Generalized Markup Language).Till SGML hör bland annat syntaxen med </>samt sätt att definiera olika märkspråk genom atttala om vilka element som kan förekomma och ivilka kombinationer.

Till HTML-standarderna hör information omt. ex. att ett ul-element kan innehålla li-elementmen inte tvärtom, osv., och valideraren klagadeom du bröt mot några sådana regler.

I praktiken är webbläsare förlåtande och gördet bästa den kan även när sidor inte är korrektHTML, och många sådana fel ger det utseendeman väntade sig i alla fall.

Det går bra att låta bli att skriva ut sluttaggarnai en del fall. Istället för

<ul >< l i >snipp </ l i >< l i >snapp </ l i >< l i >snut </ l i >

</ ul >

kan man skriva bara

<ul >< l i >snipp< l i >snapp< l i >snut

</ ul >

93

Page 94: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

10. DOKUMENTREPRESENTATION

Det är eftersom ett li-element inte får finnasinom ett annat li-element som sluttaggarna kanutelämnas.

10.3 SGML och XML

SGML är en gammal standard med rötter från1960-talet, och 1998 kom en variant, XML (Ex-tensible Markup Language) inspirerad av den.XML är gjord för att vara enklare att tolka för pro-gram. T. ex. måste alla element alltid avslutas ex-plicit.

XML har blivit mycket populärt i en mängdsammanhang där man har strukturerad text. Närnya märkspråk ska konstrueras så väljer man i all-mänhet att använda XML. Då får man enhetlig-het och kan använda sig av en mängd verktyg somanalyserar och konverterar XML-filer på olika sätt.Det har även gjorts varianter av HTML som varitXML istället för SGML: XHTML.

Men modern HTML, HTML 5 (officiell rekom-mendation sen 2014), är inte XML, och är tillskillnad från tidigare HTML-versioner inte striktSGML heller, även om det tydligt syns att dess hi-storiska ursprung är SGML.

10.3.1 Element, taggar och innehåll

Ett elements innehåll kan i sin tur innehålla nyaelement. Ett litet exempel på texten »MelkerMelkersson« uppmärkt är<name><firstname>Melker</firstname><lastname>Melkersson</lastname></name>I exemplet finns det ett name-element som isig innehåller ett firstname-element och ettlastname-element.

Element måste ligga helt inom andraelement. Det går inte att låta dem korsavarandras gränser i stil med <kursiv>Herr<name>Melker</kursiv> Melkersson</name>.Här är det fel vid </kursiv> eftersom name-taggen inte har avslutats än.

I XML är det skillnad på versaler och gemener itaggar.

10.3.2 Element med tomt innehåll

I HTML finns det några element som man aldrigskriver sluttaggar för, eftersom innehållet alltid ärtomt. Man använder t. ex. <br> för ett radbrottoch <img ...> för en bild, men avslutar aldrigdessa med </br> eller </img>.

Det ingår i definitionen av HTML vilka elementdet är som alltid tar slut direkt så att man intebehöver skriva deras sluttagg. I XML måste allaelement avslutas uttryckligen, så i XHTML mås-te även dessa element avslutas, men istället för<br></br> använder man då kortformen <br/>som är starttagg och sluttagg i ett.

10.3.3 Attribut

Ett element kan även innehålla attribut med vär-den. Exempel: <name type="person">MelkerMelkersson</name> Här har elementet ett attri-but type med värdet person.

Man använder dubbla eller enkla citatteckenrunt värdena. (I XML måste citattecken alltid varamed. Annars är det inte obligatoriskt om det ba-ra är snälla tecken innanför. Detta är ännu ett falldär XML har gjorts så att det ska vara extra lätt förprogram att tolka.)

Ett annat sätt än det tidigare att märka upp enmening med ordklasser skulle kunna vara

<w wc="pron">Det</w><w wc="verb">var</w> <w wc="art">en</w><w wc="subst">afton</w><w wc="prep">i</w><w wc="subst">början</w><w wc="prep">av</w><w wc="subst">maj</w><punct>.</punct>

Här användes en tagg w för ord (word) med ettattribut wc (= word category = ordklass).

10.3.4 Toppnivå

Ett XML-dokument har bara ett element på topp-nivån. Alla övriga element måste finnas i dettaelements innehåll.

Förutom element kan XML-dokument även in-nehålla en del annat som talar om hur dokumen-tet ska behandlas i vissa fall, så detta kan stå föreelementet på toppnivån. Sådant står också inom<> men börjar med frågetecken eller utropstec-ken. I synnerhet ska en deklaration i stil med

<?xml version="1.0" encoding="UTF-8"?>

komma allra först i dokumentet. Detta visar vil-ken version av XML som används och vilken tec-kenkodning detta dokument använder. (Om ingetsägs om detta så är det UTF-8.)

10.3.5 Teckenreferenser och entiteter

Man kan lägga in vilka tecken som helst genomatt skriva deras Unicode-kod mellan &# och ;. Ettpromilletecken (h) kan man t. ex. vid behov be-teckna med &#8240;. Ofta använder man hexa-decimala beteckningar istället som börjar med x.Då blir t. ex. promille istället &#x2030;. Du för-väntas inte kunna räkna med sådana. Det räckermed att känna igen att referenserna kan se ut påden formen också.

Entiteter använder också &; men däremellanskriver man istället ett namn, t. ex. &copy; för ©.Vilka entitetsnamn som finns är olika för olikaslags XML-dokument, men alltid finns i alla fall

• &amp; (&)• &lt; (<)• &gt; (>)• &apos; (')

94

Page 95: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

10.4. MIME

• &quot; (")eftersom dessa tecken ingår i XML-syntaxen ochdärför kan vara besvärliga att få in annars i vissafall.

Observera att de numeriska teckenreferenser-na alltid sker till Unicode-koder oavsett vilken tec-kenkodning som XML-filen använder. Även omman har t. ex. en Latin1-fil med

<?xml version="1.0" encoding="ISO-8859-1"?>

så går det ändå att på detta sätt referera till vilkatecken som helst.

10.3.6 Olika XML-språk

XML är liksom SGML inte ett märkspråk, utanett sätt att definiera en mängd olika märkspråksom använder samma grundsyntax men helt oli-ka uppmärkning. En definition av ett sådant språkanger inte bara vilka element som ska finnas, utanäven hur de förhåller sig till varandra, t. ex. att enli kan finnas inne i en ul men inte tvärtom föratt ta ett exempel från XHTML.

Ett exempel som

< l i ><ul >Funkar i n t e ! </ ul >

</ l i >

är ogiltig XHTML. Men det är fortfarande välfor-mad XML. Med välformad (well-formed) menasbara att man följer de allmänna syntaxreglerna förXML, som t. ex. att alla sluttaggar är avslutade.Med giltig (valid) menas att man följer de spe-cifika reglerna för ett visst märkspråk. (Så för attvara giltig måste den till att börja med vara välfor-mad.)

10.4 MIME

Program som kommunicerar med varann behövervara överens om hur data som de skickar mellanvarann ska tolkas. När data skickas så följer detdärför ofta med en etikett på vilken det står vaddet är för slags data så att mottagaren ska få ve-ta det. På sådana etiketter använder man ofta ettstandardiserat format MIME för att beskriva olikaformat. Denna standard utvecklades först för da-torpost, och förkortningen står för MultipurposeInternet Mail Extensions, men den används i and-ra sammanhang också.

MIME-etiketterna har två delar med snedstreckemellan, t. ex. image/jpeg för en bild i JPEG-format, image/png för en bild i PNG-format osv.Den första delen anger vad det är för typ av for-mat (som image för bilder) och den andra vil-ket specifikt format det är. Andra möjliga för-led är bl. a. audio för ljud, video för video ochapplication för diverse information som mås-te behandlas av något särskilt program, t. ex.application/pdf eller application/msword.

Det är IANA som håller rätt på vilka beteck-ningar som är de officiella så att alla användersamma.

Textfiler använder förleden text och i synner-het kallas vanlig text text/plain. För text-typerkan man lägga till en specifikation av vilken tec-kenkodning som används på detta sätt:text/html; charset=ISO-8859-1.Detta används till exempel i post då det i brev-

huvudet kan finnas en rad i stil med

Content-Type: text/plain; charset=utf-8

som talar om att brevet innehåller ren text kodadmed UTF-8. (Denna rad ser man vanligen inte, förprogram för att läsa post brukar dölja sådana tek-niska detaljer, men ha ett särskilt kommando som»visa hela huvudet« eller »visa original« som visaräven detta.)

Brev med bilagor har ett särskilt format därvarje bilaga får en egen etikett om vad den harför format. (Mailprogrammet väljer ofta vad denskriver där utifrån filnamnet, så om filen heterfoo.txt så får den en etikett text/plain, osv.

MIME-typerna används även på webben, därMIME-typen för HTML är text/html. Varjegång en webbserver skickar ut ett dokumenttill en webbläsare så skickar den först ut eninnehållsdeklaration med en rad i stil medContent-Type: text/html; charset=utf-8som talar om vad det är för slags data som denskickar ut.

10.4.1 Utan MIME då?

Det finns ingen information i sig i filsystemet omvad de olika filerna är för slags dokument, så omman öppnar en fil från t. ex. filhanteraren så fården göra en mer eller mindre lyckad gissning omvad det är för slags dokument. Dels kan sådanaprogram gå efter filnamnsändelsen och t. ex. utgåfrån att en fil foo.png är en bild i bildformatetPNG. Men den kan också titta inne i filen, i syn-nerhet på hur den börjar. I många format börjarfiler alltid på samma sätt vilket gör dem lätta attkänna igen.

Ett skalprogram som känner igen filer på ett så-dant sätt och beskriver innehållet är file.

$ file rummet.txt latex1.pdf stp.txtrummet.txt: UTF-8 Unicode textlatex1.pdf: PDF document, version 1.5stp.txt: Pascal source, UTF-8 Unicode text

Här kan man notera att för den ena textfilen härgissade file fel och tyckte av någon anledning attstp.txt såg ut att vara ett program i program-språket Pascal!

95

Page 96: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

10. DOKUMENTREPRESENTATION

10.5 Komprimering av filer

Om innehållet i en fil är repetitivt eller på and-ra sätt delvis redundant så går det att lagra sam-ma information på mindre plats. I en vanlig text-fil t. ex. så är en del ord och andra teckenföljdermycket vanligare än andra, och då kan man på oli-ka smarta sätt se till att dessa vanliga teckenfölj-der lagras på mindre plats än en byte per tecken.Detta kallas att komprimera en fil.

I GNU finns programmet gzip (GNU zip) föratt komprimera. Filer som är komprimerade medgzip brukar ha filnamnsändelsen .gz och det nor-mala sättet att köra gzip är med ett eller flera fil-namn som argument varpå dessa filer ersätts medkomprimerade versioner av samma filer.

Med gunzip går man åt andra hållet, dvs. »de-komprimerar« eller packar upp den komprimera-de filen.

$ lsbar foo$ gzip foo$ lsbar foo.gz$ gunzip foo.gz$ lsbar foo

Eftersom filnamn kan ha flera punkter är detbara att hänga på .gz på filnamnet även omdet redan finns en punkt. Så den komprimera-de versionen av ett Javaprogram space.java blirspace.java.gz osv.

I en komprimerad fil används alla möjliga vär-den 0–255 och innehållet är en binärfil som intekan läsas direkt av något program som inte kän-ner till just detta komprimeringsformat. När manska använda sig av innehållet i den komprimera-de filen är det dock inte nödvändigt att återskapaoriginalfilen på disken igen, utan man kan ta framinnehållet med zcat. Kommandot zcat foo.gz

compress och gzip: gzip är ett fall där GNU in-te helt efterliknar Unix. Det normala komprime-ringsprogrammet i Unix var nämligen ett programcompress som komprimerar med en annan me-tod. För GNU kunde man dock inte lagligen skri-va en ersättning av det programmet eftersom denkomprimeringsalgoritm som användes var skyd-dad av ett patent sedan 1985. Istället fick man lovatt använda en annan metod.

År 2003 gick det patentet ut, så sedan längefinns det fria program som implementerar dengamla algoritmen, men gzip fortsätter att vara detvanligaste sättet att komprimera filer i GNU.

tar fram det ursprungliga innehållet i filen foo ochskickar vidare det till standard output.

Textfiler innehåller mycket redundans och bliroftast ungefär hälften så stora av att komprimeras.Många format på binärfiler, som PDF och olikabild- och ljudfiler, är redan komprimerade på etteller annat sätt, och blir därför knappast mindreav en ytterligare komprimering.

En del program dekomprimerar filer vid behov,det gör t. ex. Emacs om man öppnar en kompri-merad fil.

Den komprimering det handlar om här är sådansom går att vända tillbaka. Ingen information gåralltså förlorad; den tar bara mindre plats att lagra.Man talar också om komprimerade video-, bild-och ljudformat där information går förlorad (de-struktiv komprimering, lossy compression). De tarmindre plats än originalfilerna, men på bekostnadav att ha sämre kvalitet.

Det finns andra komprimeringsprogram medandra format som också används ibland, t. ex. xz(med filnamn .xz) och bzip2 (med filnam .bz2).

10.6 Filarkiv

I många fall är det praktiskt att skapa ett filarkiv,dvs. en fil som i sig innehåller en mängd andrafiler. Det kan t. ex. användas för att enklare skickaen hel mängd filer till någon annan i ett svep.

Man kan packa upp filarkivet och därmed fåfram de ingående filerna igen. I förra avsnittet ta-lades det också om att packa upp, men då gälldedet att packa upp en komprimerad fil för att fåfram originalet igen, vilket inte är samma sak.

I flera format av filarkiv ingår komprimering,men det normala filarkivformatet i Unix, tar, ärinte komprimerat, utan ett arkiv är ungefär li-ka stort som de ingående filerna tillsammans. Ensådan tar-fil har filnamnsändelsen .tar och oftakomprimerar man den i sin tur och får då en fil-namn som slutar med .tar.gz.

För att hantera sådana filarkiv använder mankommandot tar.1

$ tar -c -f texter.tar *.txt$ rm *.txt$ tar -x -f texter.tar

Första väljaren är -c för att skapa ett arkiv (Cre-ate), väljaren -f ska ha ett argument som är arkiv-filen (i detta fall texter.tar) och som argumentger man vilka filer och kataloger som ska läggas i

1Om man ska dela med sig av ett filarkiv till någon iMS Windows-världen kan det vara bättre att använda zip ochunzip som använder ett annat format istället. Se deras man-sidor!

96

Page 97: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

10.6. Filarkiv

arkivet (här *.txt). De ursprungliga filerna liggerkvar.

I det andra fallet är förstaväljaren -x för att pac-ka upp ett arkiv (eXtract). Filerna som togs bortmed rm återställs.

Med en väljare -v blir tar mer pratig (verbose)och talar om namnet på varje inblandad fil.

Eftersom det är så vanligt att man komprimerartar-arkiv med gzip så kan tar med -x ta hand omdet steget själv, och det räcker med

$ tar -xvf foo.tar.gz

för att packa upp ett komprimerat tar-arkiv.I detta exempel fördes väljarna -x, -v och -f

ihop. Då får man lov att sätta -f sist så att mankan ge ett argument till den väljaren.

Den vanliga kombinerade ändelsen .tar.gz er-sätts ibland med bara .tgz, speciellt i andra fil-system som inte klarar flera punkter i filnamnen.

tar = tape archive: Den ursprungliga använd-ningen av tar var att lagra en mängd filer påett magnetband och därav kommer kommandotsnamn.

97

Page 98: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 10: Dokumentrepresentation

Redovisning

Denna gång ska du skicka svar på frågorna i mailtill Per igen, senast måndagen den 10/10. Meddetta mail ska du också skicka en bilaga med ettkomprimerat tar-arkiv som innehåller de filer somdu ändrat i enligt instruktionerna. Texten medsjälva svaren kan ligga i huvuddelen av mailet, el-ler vara en bilaga den också, men är det en bilagaså se till att den skickas med en etikett som talarom att det är en text. (Så ska det bli automatisktom du ger filen ett namn som passar en textfil.)

Packa upp filerna

De filer du ska använda i denna labb ligger ifilarkivet /local/kurs/ids/xml.tar.gz. Packaupp det i din kurskatalog. Alla filer i filarkivet lig-ger i en katalog xml så du får en ny underkatalogmed detta namn med filer som du ska använda idenna labb. (Gör ingen kopia av arkivfilen först.)

Uppgift 10.1 Vad gav du för kommando för attpacka upp filarkivet?

XML i Emacs

Öppna filen svt2.xml där i Emacs. Innehållet ärtydligen en tevetablå i nåt XML-format.

Uppgift 10.2 Vad har elementet på toppnivån idetta dokument för starttagg?

Notera härnäst att det står (nXML Invalid) iinformationsraden. Det första inom parentesenär som vanligt namnet på det editeringsläge somEmacs befinner sig i. Tillägget Invalid betyderi detta fall att det är en ogiltig XML-fil. DettaEmacsläge använder sin kunskap om XML-syntaxför att markera när syntaxen inte stämmer. Emacsvet inte vad det är för slags XML i denna fil, meneftersom innehållet inte ens är välformad XML såkan den ändå vara säker på att den är felaktig.

Ett sätt att direkt flytta sig till felet är att klickapå detta ord Invalid. Rätta felet! Snart ändrasInvalid till Valid.

De olika raderna i filen börjar med indrag medolika många mellanslag för att det ska bli lättareatt läsa så att man ser hur strukturen är. Ett pro-gram som förstår sig på XML och som ska göranågot med denna fil kommer inte att bry sig omhur indragen är, men det är bra om filen är nå-gorlunda läsbar för människor också!

Detta kan Emacs ordna åt dig. Teveprogram-met Rapport saknar starttid. Gå till den tommarad där det borde stå och tryck TAB så får du ettlagom indrag. TAB fungerar så i de flesta Emacs-lägen, att istället för att alltid gå fram lika långt sågår det fram »lagom« långt för det som man justediterar. (Det kan användas både för en ny radsom här, eller för att ändra indraget på en rad somredan finns.)

Skriv nu in <starts>18:55 (precis så, utansluttagg). Nu blir det Invalid i informationsra-den igen. En finess i detta Emacsläge är att dethela tiden kollar av ifall du har en korrekt XML-fileller inte. Med rött visas var det finns fel.

Uppgift 10.3 Var visas det vara fel? Varför justdär?

Ta fram hjälpen för denna Emacs-mode. (Se ta-bellen på s. 61 eller Help Describe i menyerna omdu har glömt hur man gör det.)

I den hjälp du får upp nämns ett kommandosom avslutar det aktuella elementet genom attlägga in en sluttagg.

Uppgift 10.4 Hur utför man det kommandot?(Gör så!)

Nu bör bufferten ha blivit Valid igen. Meddetta menas än så länge bara att det är välformadXML eftersom Emacs bara vet att detta är XML

men inte vet vilket särskilt XML-märkspråk detär.

Detta speciella märkspråk för tevetablåer be-skrivs i filen schedule.rnc i samma katalog. Talaom det med XML Set Schema File. . . och ange denfilen. Du får en förfrågan »Save schema locationto . . . « Svara y! Nu minns Emacs vilket schemasom gäller för denna fil.

Där beskrivs en ganska petig syntax för hur deolika delarna av en sån här tevetablå måste se ut

98

Page 99: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

schedule.rnc

och denna fil stämmer inte riktigt med denna syn-tax.

Så nu hittas flera fel. Tryck på Invalid i infor-mationsraden för att gå till det första felet. MedC-c C-n kan du gå till nästa fel. Varje gång dugår till ett fel så kommer det ett litet meddelandeom vad felet är i ekoarean. För att gå till det förstafelet utan att behöva använda musen kan du an-vända M-< eller <C-home> för att gå till början avbufferten innan du går till nästa fel.

Rätta alla felen! Exakt hur syntaxen måste varahär bör framgå av de exempel som inte ger fel.

Lägg till ett par program i slutet av tablån. (Hit-ta på nåt.) Använd TAB för indrag så att delarna iditt programinslag får samma indrag som de övri-ga.

Se till att din slutliga fil är »valid«.

schedule.rnc

Titta i den där filen schedule.rnc som beskrevformatet. Det finns olika sätt att beskriva syntax-en för ett viss slags XML-dokument. Detta kal-las för RELAX NG. Detta format är inget du be-höver lära dig, men många delar av det bör ändåframgå tydligt med tanke på hur filen såg ut. Se isynnerhet på det pattern som definieras där för attbeskriva vad elementet starts får ha för värden.

Detta är ett (utökat) reguljärt uttryck och detgodkänner inte bara tider som »17:15« utan ocksåt. ex. »12:75« och »55:15« som inte är riktiga tider.

Förbättra detta reguljära uttryck så att det integodkänner sådana felaktiga tider! När du har änd-rat i schedule.rnc måste du sätta filschemat försvt2.xml på nytt för att den ska använda den nyafilen ifall du vill prova att ditt reguljära uttryckfungerar som avsett.

(Prova gärna med lite felaktiga tider, men glöminte att återställa till korrekta tider efteråt, så attdet du lämnar inte innehåller några fel!)

CSS för XML

Öppna din svt2.xml i Firefox (med File Open File

i Firefox, eller från filhanteraren). Dokument-trädet visas utan någon särskild formattering ef-tersom webbläsaren inte vet något om hur dessaelement ska formatteras. Den vet bara att detta ärXML (på grund av filnamnet).

Uppgift 10.5 Firefox skriver något just om attden inte vet vad det är för slags XML. Vad stårdet?

Lägg in följande på en rad som andra rad i filen:

<?xml-stylesheet type="text/css"href="tv.css"?>

(Det står på två rader här i kompendiet baraför att spalten är så smal.) Detta talar om att filentv.css i samma katalog ska ge information omhur olika element ska visas med samma språk CSS

som du såg i kapitel 8. Se efter att filen nu visasannorlunda i Firefox!

Uppgift 10.6 Vilket attribut har satts till vilketvärde i tv.css?

Uppgift 10.7 Vad betyder det om hur ett sådantelement ska visas? (Sök på nätet.)

Uppgift 10.8 Vilket värde är default för det at-tributet? (Sök på nätet.)

Lägg till saker i tv.css så att det blir en fin spaltmed en tevetablå. Sätt en ganska smal width förhela schedule så att det påminner om en spalti en tidning. Ändra så att tid och titel för pro-grammen markeras med annan slags text, kanskemed font, font-weight eller font-size. Se tillatt beskrivningen börjar på ny rad. Sätt färger ochpadding och/eller margin som du vill ha dem.

Som överkurs kan du läsa på om CSS (t. ex.på http://w3.org/) och komma på ett sätt attanvända något av den information som står somattributvärden i filen, t. ex. skriva »(På finska.)« islutet av program som har lang="fi".

Bildfiler

/usr/share/shotwell/icons/ innehåller en delbildfiler som används av fotohanteraren Shotwell.

Uppgift 10.9 Filerna har fyra olika filnamnsex-tensioner. Vilka då? (Två av dem finns det bara envar av.)

Om man öppnar en bildfil i Emacs så visas densom en bild, men man kan ändra så att den visas»som text«, tecken för tecken istället.

Uppgift 10.10 Vad kan man trycka i Emacs föratt slå om (toggle) mellan att visa som bild ochvisa som text?

Uppgift 10.11 Vilka av de olika bildformatensom används i den katalogen är binärfiler och vil-ka är textfiler? Det finns minns en av varje slag.

Uppgift 10.12 Vad säger file om filerna i den-na katalog?

Uppgift 10.13 För ett av de fyra formaten sägerfile hur stor bilden är också. Vilket?

Uppgift 10.14 Det finns en väljare till file somgör att den skriver ut en MIME-beteckning istället.Hur lyder den väljaren?

Uppgift 10.15 Vilka är de fyra olika MIME-beteckningarna för filerna i denna katalog enligtdetta?

99

Page 100: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 10: DOKUMENTREPRESENTATION

Välj ut en av bildfilerna som är en textfil. Omdu arbetar tillsammans med någon så välj olikafiler.

Uppgift 10.16 Vilken fil har du valt?

Uppgift 10.17 Detta format använder XML.Hur lyder starttaggen till elementet på toppni-vån? (Det är förmodligen ett långt svar med enmassa attribut.)

Uppgift 10.18 Vad kommer det för slags ele-ment närmast efter denna starttagg?

Uppgift 10.19 Vad är det sista elementet inomtoppelementet för slags element?

Lite ljud som omväxling

Uppgift 10.20 Vad säger file om ord.flac idin kurskatalog?

Detta är ett binärt format, men trots det så finnsdet några koder som direkt motsvarar tecken ibörjan av filen. Öppna den i Emacs!

Uppgift 10.21 Vilka är de fyra första tecknen iflac-filen?

Större delen av filens innehåll motsvarar kon-trolltecken sedda i textformat som visas med ko-der i Emacs. I synnerhet är ^@ en beteckning påkontrolltecknet NUL som har koden 0. Man kanse att rätt många bytes har värdet 0.

Ett komprimerat ljudformat som fyller ungefärsamma nisch som MP3 men inte är lika vanligtheter Ogg Vorbis. Det finns ett program oggencsom skapar sådana Ogg-filer som brukar ha fil-namnsändelsen .ogg. Skapa en fil ord.ogg utifrånord.flac. (Du får själv hitta lämplig dokumenta-tion om hur detta görs.)

Uppgift 10.22 Hur skrev du för att göra detta?

Det finns en väljare som sägs sätta kvaliteten förkodningen av oggarna. Skapa en ny fil ord-good.ogg som kodar ord.wav till en ogg enligt den bäs-ta kvaliteten man kan ställa in med den väljarenenligt dokumentationen. Du behöver även en väl-jare som talar om vad output-filen ska heta.

Uppgift 10.23 Vad gav du för kommando föratt göra det?

Uppgift 10.24 Hur beskriver kommandot filede båda ogg-filerna du har nu? (Använd joker.)(Om det inte är som nånting med »Ogg« så hardu gjort fel.)

Uppgift 10.25 Visa storleken i bytes för alladessa tre dessa ljudfiler med ett kommando.

ord-good.ogg borde ha blivit större än ord.ogg, så är det inte så har du gjort något fel. (Omdu vill lyssna på de olika filerna (ogg och flac)för att se om du hör någon skillnad är ett sätt attgöra det med kommandot play.)

Referenser i LaTeX

Och nu något helt annat, nämligen hur man i La-TeX hanterar källhänvisningar och referenser, vil-ket är en viktig del av vetenskapligt skrivande.

Kopiera /local/kurs/ids/dep.* (två filer) tilldin svn-katalog och checka in kopiorna. Den enafilen är en LaTeX-fil dep.tex med ett utdrag uren artikel skriven av Joakim Nivre här på institu-tionen. TeXa den och titta på resultatet.

Uppgift 10.26 Den använder ett paket som ärtill för att rita så kallade dependensgrafer med.Vad heter tydligen det paketet?

Uppgift 10.27 Vilka etiketter används med\label och \ref i denna LaTeX-fil?

I dep.tex görs hänvisningar till tidigare artik-lar och annat med författarnamn och årtal. Denförsta är till »Marcus, 1980«, tydligen något pub-licerat 1980 av någon som heter Marcus. Mer ärdet tänkt att man ska kunna se i en referensför-teckning, men någon sådan är inte med i dettautdrag.

Det finns en kort sida om källhänvisningar förLaTeX på de lila sidorna. Slå upp den!

Uppgift 10.28 Vilken url där står det om dettapå?

Där finns länkar till ett exempel. Läs detta, bå-de som PDF och de båda textfilerna som det ärgjort med.

Gör om dep.tex så att den använder det sättatt hantera referenser som det står om där. Du haren färdig bib-fil dep.bib, så sök upp vilken postdär de olika referenserna handlar om och användden nyckel som står där.

Uppgift 10.29 Vilket tecken kan du söka efteri dep.tex för att se att du inte har missat någrareferenser?

När du bytt ut alla referenser och bekräftatatt du det går att TeXa utan felmeddelandenoch med bra resultat så checka in din ändradedep.tex med en ändringskommentar om att dunu löst uppgift 10.29.

Nu ska du lägga till en bok som inte står med ibib-filen, så öppna den i Emacs. Du hamnar (för-stås!) i ett särskilt bib-läge. I informationen duhittade i 10.28 står en del om hur du kan editerabib-filer. Resten kan du ta reda på själv.

100

Page 101: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Diverse

Du ska lägga in ett uppslag av typen »Book«.Författaren är »Hudson, Richard A.«, titeln»English Word Grammar«. Boken gavs ut avBlackwell i Oxford år 1990. Få med all den infor-mationen i posten och hitta på en lämplig nyckel.

Denna bok ska det finnas en parentesreferenstill i dep.tex direkt efter texten »Word Gram-mar«, så lägg till det!

Uppgift 10.30 När du kör om LaTeX nu börden ge ett varningsmeddelande »there were un-resolved citations«. Vad står det i din PDF nu därdenna referens ska vara?

Uppgift 10.31 Kör om Biber. Om det inte gavnågot felmeddelande eller varning har du nogskrivit uppslaget rätt. Vad skrev du om denna boki bib-filen?

Uppgift 10.32 TeXa om filen tills den inte sä-ger något om att det behöver göras igen. Checkain nya dep.tex och dep.bib med ändringskom-mentar om att du nu har löst uppgift 10.32. Hurskrivs denna nya referens nu ut i resultatet?

För den nyfikne

Frivilliga förslag på saker att undersöka. (Du be-höver ofta köra om hela cykeln LaTeX, Biber, La-TeX för att testa saker.)

Vad händer om två böcker (eller annat) ärskrivna av samma författare samma år? Vad hän-der om år inte står angivet? Allt detta gjordes meden särskild »style« för Biblatex. Hur blir det omman inte anger stil? Vad finns det för andra stilar?Vad bestämmer hur många namn som listas närdet är många författare?

Diverse

Uppgift 10.33 Vilket ord i filen /local/texts/jabberwocky innehåller bokstaven x? (Lös upp-giften med bara ett grep-kommando med välja-ren -o.)

Uppgift 10.34 Hur kan man skriva q{0,1}enklare i ett utökat reguljärt uttryck?

Uppgift 10.35 I sagobok.tex gjorde Per (dvs.användaren starback) en ändring den 30 sep-tember. Hur beskrev han den ändringen i filenslogg?

Uppgift 10.36 Kommandona för versionskon-troll i Emacs börjar med C-x v . Ett av dem ärtill för update. Vad heter det i menyerna och vadhar det för kortkommando?

Använd det när du är i sagobok.tex eftersom duska ändra något där. Detta kan vara mer praktiskt

än att skriva svn update eftersom innehållet iEmacs uppdateras på samma gång.

Uppgift 10.37 Din saga har ju ditt användar-namn som rubrik. Ändra den rubriken till nåt sompassar innehållet i just den sagan istället. TEXa fi-len tills din titel syns även i innehållsförteckning-en och checka sedan in din ändring.

Filen /local/kurs/ids/japansk.txt är intekodad med UTF-8. Gör man cat japansk.txtfår man därför ut en konstig ojapansk sörja i ter-minalen.

Den filen har en rad i början som talarom för Emacs vad det är för teckenkodning:-*- coding: euc-jp -*-

Uppgift 10.38 Använd samma beteckning »euc-jp« för att med iconv omvandla från denna tec-kenkodning. Svara med ett kommando som skri-ver ut texten rätt i terminalen. Svara också medden text som det blev då.

Skapa komprimerat arkiv

När du mailar svaren på dessa uppgifter ska duäven skicka med ett komprimerat tar-arkiv medde filer som du har ändrat.

Filerna som ska vara med i arkivet är svt2.xml,schedule.rnc, tv.css, ord.ogg och ord-good.ogg.

Ett sätt skulle vara att först skapa ett tar-arkivmed tar och sen komprimera det med gzip, mendet finns en väljare till tar som direkt fixar kom-primering också. Ta reda på den och använd den.

Uppgift 10.39 Vad använde du då för komman-do för att skapa det komprimerade tar-arkiv somdu skickar med som bilaga?

Du behöver både välja ett lämpligt filnamn förett sådant komprimerat filarkiv, och använda enväljare som gör att det blir ett sådant som skapas!

101

Page 102: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger
Page 103: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 11

Program

Ett datorprogram är en samling instruktioner sombeskriver något som en dator ska utföra.

11.1 Skript

På s. 33 fick du skapa skalskript – textfiler medflera skalkommandon efter varann – och köra demgenom att skriva bash filnamn . Genom att ge ettfilnamn som argument till skalet (bash) talar manom att det ska hämta kommandon från den filen.På s. 58 fick du sedan se hur man kan ge argumenttill ett sådant skript.

Detta är ett slags enkla program.På samma sätt kan man köra t. ex. ett program

i programspråket Python (brukar ha namn somslutar på .py) med python filnamn .

11.2 Interpreterande ochkompilerande programspråk

De flesta program man kör är dock inte textfi-ler utan binärfiler. De innehåller då instruktioneri en maskinnära form (maskinkod) som kan utfö-ras (exekveras, köras) direkt av datorn. Med da-torprogram kan man avse både en sådan binärfil,och även källkoden, så som programmet skrivits inågot programspråk i en eller flera textfiler.

I de flesta programspråk skriver man instruktio-ner som ligger långt ifrån den typen av instruktio-ner som datorn kan utföra direkt. Det finns olikasätt att då få datorn att utföra instruktionerna ikällkoden: kompilering och interpretering.

Kompilering är att översätta källkoden till ma-skinkod. Översättningen sker med en kompilator –ett särskilt program. Sen kör man den resulteran-de koden. (Källkoden behövs inte längre för attkunna köra programmet. Men om man behövergöra ändringar i programmet behöver man käll-koden igen och får lov att kompilera om den ef-teråt.)

Interpretering är att tolka källkoden bit för bitistället, så som skalet tolkar kommandon i ett

skalskript. Ett särskilt program, en interpretator,läser och utför dessa instruktioner.

(Det finns även mellanlägen mellan kompile-ring och interpretering.)

11.3 Att köra program

Programmen är filer de också. Om man t. ex. körbildbearbetningsprogrammet Gimp så är det filen/usr/bin/gimp man kör. Det skulle gå att skrivaden fullständiga sökvägen /usr/bin/gimp för attköra det programmet, men det räcker med baragimp . Om man skriver bara ett namn utan ka-talog så letar nämligen skalet efter en sådan fil ivissa kataloger (däribland bland annat /bin och/usr/bin). Där ligger de flesta av de program duanvänt hittills, som t. ex. cat, grep, ls, sed osv.

Om programfilen inte ligger i en av dessa kata-loger måste man skriva ett längre filnamn där mantar med katalogen, med en fullständig eller relativsökväg.

Observera att skalet inte söker efter filen i aktu-ell katalog i sådana fall, som annars när man skri-ver ett filnamn utan katalog.

11.4 Att kompilera program

För att kompilera ett program så kör man i deenklaste fallen en kompilator med källkodsfilensom argument. Kompilatorn skapar en ny fil somgår att köra.

Ett större program består normalt en mängd fi-ler som använder sig av varandra på kompliceradesätt, och för att kompilera detta kan det krävasflera steg. I Unix-världen används oftast ett pro-gram make för att göra detta. Det utför alla dessasteg i rätt ordning för att tillverka vissa filer. I enfil Makefile har man skrivit regler som talar omför den vad den ska göra. Man kan ge argumenttill make som talar om vad det är man vill »till-verka« med det, men bara make utan argumentduger ofta.

103

Page 104: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

11. PROGRAM

11.5 Att installera program

På en GNU-dator som man själv administrerar ärdet i allmänhet enklast att inte kompilera pro-gram man ska använda, utan istället installera fär-digkompilerade program som färdiga paket medfiler som läggs ut på rätt ställen på disken. Pro-gram som sköter sådant kallas pakethanterare.

Detta förutsätter att någon har gjort ett sådantpaket som passar till ens system, men är det ettvälanvänt program så är det antagligen så. Ett parvanliga paketsystem är APT och RPM. Vårt sy-stem använder det sistnämnda av dessa.

Men som vanlig användare utan administratörs-rättigheter så kan du oftast inte använda dig av så-dant eftersom du inte har rätt att lägga filerna påde centrala ställen där de då är tänkta att hamna.Då får du ofta lov att installera program någon-stans under din hemkatalog genom att kompile-ra dem själv. (Så kan det också vara för att ingenhar gjort nåt behändigt paket av just det program-met.) Programmen distribueras då i allmänhet iform av ett (komprimerat) filarkiv som källkodenfinns i. Du börjar med att packa upp detta filarkivoch sen se efter om det bland filerna finns nå-gon fil README med allmänna instruktioner ellerkanske en fil INSTALL med instruktioner om hurdu ska installera programmet. (Dessa filer heterofta just så, med versaler.) Ofta säger instruktio-nerna att du ska använda make på något sätt.

11.5.1 Att installera med makeI GNU har det utarbetats en standard för hurinstallation går till. Med distributionen av pro-grammet följer det med ett skalskript configuresom man börjar med att köra. Det skapar en filMakefile som är särskilt anpassad för det systemman kör på. Efter det kan man kompilera pro-grammet med make och sedan installera det medmake install . I det sista steget kopieras filernaut till olika ställen i filsystemet.

De tre kommandona kan vara

$ ./configure --prefix ~$ make$ make install

Normalt läggs program i /usr/local/bin/,man-sidor i /usr/local/man/ och diverse and-ra filer i några andra underkataloger till /usr/local. Men där har vanliga användare inte rättatt lägga filer, så det kommer inte att funka omman inte är administratör! Med --prefix ovantill configure talar man om var programmetoch alla dess filer ska installeras, så med t. ex.--prefix ~/foo installeras själva programmen i~/foo/bin/ osv. Istället för en katalog under ens

hemkatalog kan man förstås använda hemkatalo-gen själv: Med --prefix ~ hamnar själva pro-grammen i ~/bin osv.1

Det kan även finnas andra saker man stäl-ler om vid konfigureringen med olika väljare tillconfigure.

11.6 Upphovsrätt och licenser

Upphovsrätt gäller för program, både för källkodoch maskinkod, precis som för litterära och konst-närliga verk. Inga som har skrivit program för mo-derna datorer har dock varit döda i sjuttio år så attupphovsrätten har gått ut för deras verk, så somskett för t. ex. Strindberg och Lenngren.2

Trots det finns det en mängd program som detstår en fritt att använda, kopiera och sprida, ef-tersom programmens författare uttryckligen giviten tillstånd till detta. Sådant sker i form av en li-cens där upphovsrättsinnehavarna talar om vad detillåter.

I synnerhet är hela operativsystemet GNU så-dan »fri programvara«, men för att komma tillGNU går vi via Unix.

11.6.1 Unix

Operativsystemet Unix skapades i slutet av 1960-talet på Bell Labs i USA.

I mitten av 1970-talet började det spridas utan-för Bell Labs. Det såldes rätt billigt (speciellt tilluniversitet) och gick att köra på relativt billiga da-torer (vid en tid när datorer var stora och dyra),vilket bidrog till dess popularitet. Dessutom följ-de källkoden med så att man kunde se precis hurdet fungerade och även införa egna ändringar i sy-stemet. Det ökade populariteten ännu mer i denakademiska världen, där en mängd universitet an-vände Unix i undervisningen i datorvetenskap.

Möjligheten att göra ändringar i koden leddetill att det uppstod en stor mängd varianter avUnix. En viktig variant var BSD (Berkeley Soft-ware Distribution) från University of California,Berkeley. Berkeley spred sina tillägg och föränd-ringar fritt, och många använde dessa.

På 1980-talet tillverkade flera företag olika en-användardatorer med Unix – arbetsstationer. Devar mycket kraftfullare och dyrare än den tidensvanliga persondatorer, och använde olika versio-ner av Unix. De olika tillverkarna skickade medolika tillägg från BSD och andra håll, och skrevockså mycket egna tillägg (som inte spreds fritt),

1Tidigare har jag skrivit att det normala sättet att geargument till långa väljare är med ett likamedtecken, som--prefix=~/foo, men just i detta fall ställer det till problemeftersom skalet bara ersätter ~ med ens hemkatalog när detstår först i ett argument.

2Detta är förstås skälet till att texter av dessa figurerat iflera övningar.

104

Page 105: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

11.6. Upphovsrätt och licenser

så de olika Unix-systemen skilde sig åt. En vik-tig del var fönstersystemet X som spreds fritt frånMassachusetts Institute of Technology (MIT) därdet var skrivet. Även till detta lade de olika till-verkarna till olika nya finesser, så på olika datorerkörde man lite olika versioner av X.

Fönstersystemet X kallas också ofta för X11,eftersom det är version 11 av det som man använ-der, och det har ingenting med det mycket senareOS X att göra.

11.6.2 GNU och fri programvara

När Unix var nytt hade de flesta av dess använ-dare möjlighet att läsa koden för att lära sig hurden fungerade och även möjlighet att införa egnaändringar för att få delar av systemet att bete sigannorlunda. Med tiden hade det blivit allt ovan-ligare. De flesta Unix-användare kom att sitta vidarbetsstationer som till stora delar var som svartalådor som man inte hade insyn i. Det uppfattadesav många som frustrerande vid en tid när en stordel av datoranvändarna var programmerare själva.

1983 utannonserade Richard M. Stallman påMIT planer på att skriva ett fritt operativsystemsom skulle få namnet GNU. Eftersom Unix redandå hade en så stark ställning så valde han att detskulle vara Unix-kompatibelt, dvs. bete sig somUnix trots att det inte var Unix. GNU stod för»GNU’s Not Unix«.

Snart startades en särskild stiftelse, Free Soft-ware Foundation (FSF), för att hålla i projektetoch även i övrigt verka för fria program.

En del program som redan fanns och som varfria kunde användas. T. ex. bestämde Stallman ti-digt att man inte behövde skriva ett nytt fönster-system eftersom fönstersystemet X var fritt. Endel tillägg till Unix som skrivits på Berkeley ochandra ställen var också möjliga att återanvända.Men den största delen av koden fick man skrivasjälva.

11.6.3 Linux

Många delar av GNU kom snabbt till, och an-vändes som separata delar på andra Unix-system,men en viktig del som kom på efterkälken var denmest centrala delen av operativsystemet, kärnan.Utan den var det inte möjligt att sätta ihop etthelt GNU-system.

1991 offentliggjordes Linux av den finlands-svenske studenten Linus Torvalds. Det var ettlitet Unixliknande system, framförallt inspireratav Minix, ett tidigare minimalt Unixliknande sy-stem, gjort särskilt för undervisning i operativ-system av Andrew S. Tanenbaum i Nederländer-na.

Inom kort sattes hela GNU/Linux-system sam-man som använde Linux som operativsystems-kärna istället för HURD som var den fortfaran-

de bara halvfärdiga kärna som skulle användas iGNU. Oftast kallas sådana system bara för Linux-system, efter den kärna som används.

Detta gick att köra på vanliga persondatorer,som annars oftast körde MS-DOS från Microsoft.Persondatorerna hade med tiden blivit så passkraftfulla att de kunde klara ett mer krävande sy-stem.

11.6.4 Unix och Unix-liknande systemidag

En stor del av Unix-liknande system idag är friprogramvara.

Det finns nu en mängd olika distributioner avGNU/Linux som publiceras av olika företag ochorganisationer. Dessa skiljer sig åt mer eller mind-re mycket beroende på vilka val distributörernahar gjort angående vilka program som ska varamed och inte vara med.

Några av de populärare distributionerna är De-bian GNU/Linux, Ubuntu, Red Hat EnterpriseLinux, Fedora, Centos, Linux Mint, openSUSEoch Gentoo.

Dessa är Unix-kompatibla, men de är inte Unix,dvs. de är inte licensierade att använda varumär-ket Unix, som ägs av The Open Group. Det ärdäremot kommersiella Unix-versioner som AIX,HP-UX, IRIX, Solaris, Tru64, A/UX och OS X.

Alla dessa olika system skiljer sig åt på enmängd små sätt. Det har gjorts flera försök attfå dem att närma sig varandra för att underlättaflyttandet av program från ett system till ett an-nat, och bland annat genom standarderna POSIXoch Single Unix Specification (och genom att endel kommersiella system slagits ut på marknaden)är dagens Unix-system mycket mer lika varandraän hur det var för ett par decennier sedan.

11.6.5 GNU GPL och »Copyleft«

Många fria program finns det ofria varianter av. Såär det t. ex. med fönstersystemet X från MIT ochmed de Unix-tillägg som gjordes för BSD. Företag

©Figur 11.1: Copyleft-tecknet har bildats genom attspegelvända copyright-tecknet.

105

Page 106: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

11. PROGRAM

har vidareutvecklat dessa fria program men integjort sina nya versioner till fri programvara. Densom har använt dessa versioner har inte t. ex. kun-nat läsa eller ändra i programmet de kört, trots attden ursprungliga versionen var fri programvara.

De som skrivit dessa program hade inget emotdetta, men för GNU ville man inte ha det så. Manville att alla som använde de program man skrevskulle använda fria versioner av programmen.

För att de program som skrevs för GNU skullefortsätta att vara fria för alla som använde des-sa program skrev man en ny licens, GNU GPL(General Public License), där en av de viktigastenyheterna var något som man kallade för copyleft.Det innebär att man inte tillåter att någon spri-der modifierade versioner av programmet om intedessa ändringar också sprids med samma villkor.Den som delar med sig av program enligt GPLtill en grupp människor ser alltså till inte bara attprogrammet är fritt för den gruppen, utan ävenför dem som den gruppen i sin tur sprider vidareprogrammet till. Ibland använder man ett spegel-vänt copyright-tecken (figur 11.1) för detta.

Med tiden har det skapats fler licenser för friprogramvara med lite olika egenskaper, men GPLär den klart vanligaste inte bara för sådant somskrivits direkt för GNU, utan även för t. ex. kär-nan Linux och webbläsaren Firefox. Istället för attformulera dessa villkor själv brukar man i allmän-het använda någon av de licenser som redan harformulerats. Ett skäl är att det underlättar myc-ket för den som vill använda programmet om envälkänd licens som man redan känner till har an-vänts. Ett annat är att det underlättar återanvänd-ning av delar av programmet tillsammans med de-lar av andra program som använder samma licens.

Licenser för icke-fria program är i allmänhet ut-formade som avtal eller överenskommelser mel-lan två parter. För att få komma åt programmetså förbinder man sig till att uppfylla vissa villkor.En licens som GNU GPL fungerar inte så, utan ärhelt enkelriktad. Det finns ingenting som man be-höver gå med på för att använda ett GPL:at pro-gram. Allt den licensen gör är att öka vilka rättig-heter användare har, genom att uttryckligen göravissa saker tillåtna som annars inte hade varit detpå grund av upphovsrätten.

11.6.6 Öppen källkod = Open source

Termen öppen källkod (open source) kom till se-nare, och brukar användas av dem som snararebetonar de tekniska fördelarna som att ökad till-gänglighet av källkoden kan leda till förbättradeprogram genom att fler har möjlighet att hitta feleller bidra med fixar. Då ses det som ett medeltill att nå bättre resultat snarare än som ett mål isig, även om vilka program som är fri programvaraoch vilka som är öppen källkod i praktiken oftasträknas likadant.

Figur 11.2: Byggblock i Creative Commons-licenser.

11.6.7 Annat än program

Programförfattares fria spridande av sina programhar varit en inspiration även för fritt spridande avandra upphovsrättsligt skyddade verk, som texter,bilder och musik. Ett exempel är ett stort samar-betsprojekt som encyklopedin Wikipedia.

Licenser som GNU GPL som är gjorda för pro-gram passar inte alltid så bra in på annat materi-al. Organisationen Creative Commons har gjort enmängd olika licenser som är till för att upphovs-rättsinnehavare ska kunna ge en del av sina rättig-heter till allmänheten utan att släppa all kontroll.Dessa används rätt ofta vid spridande av texter,musik, bilder osv. och en del av dessa licenser är»fria« i den betydelse som används inom fri pro-gramvara. En del har även en copyleft-klausul, somdär kallas för Sharealike.

I figur 11.2 ses ikoner som ofta används vid be-skrivning av de olika CC-licenserna.

Creative Commons.BY = Attribution: man måste ange upphovs-makare.NC = Noncommercial: bara icke-kommersi-ell spridning är tillåten.ND = No Derivate Works: man får inte spri-da härledda verk, utan bara exakta kopiorSA = share alike: man får bara sprida det medsamma villkor.

Här har share alike fått en symbol som liknarden för det liknande copyleft.

En CC-licens använder någon kombination avdessa element, t. ex. Attribution + NoDerivates =by-nd = för något som andra får sprida vidarei oförändrat skick, om de anger ursprung, oavsettom det görs kommersiellt eller inte. Det är intealla dessa licenser som räknas som fria enligt denbetydelse som friprogramvarurörelsen använder.

106

Page 107: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Inlupp 11: Program

Redovisning

Checka in svar på frågorna i en fil ids11.txt iden versionskontrollerade katalog som heter somditt användarnamn och som du har sedan tidigare.Gör en incheckning redan första dan du hållit påmed detta, och en ny efter nästa gång du arbetatmed det, osv.

Versionskontroll igen

Gå i skalet till katalogen alla som du skapat tidi-gare som kontrolleras av Subversion.

Kolla läget här med kommandot svn statussom säger något om hur din arbetskatalog skil-jer sig från vad som finns i repositoriet. Du bordebland annat få rader som

? sagobok.aux? sagobok.pdf

och några till eftersom LaTeX skapade de filernanär du TeXade sagobok.tex, men Subversion in-te vet något om dessa filer. Det är helt i sin ord-ning. Dessa filer bör inte checkas in, eftersom deskapas automatiskt från andra.

Ett M står för modified, så om du har en rad som

M sagobok.tex

betyder det att du har gjort ändringar i den filensom du inte har checkat in. (Gör det i så fall omdet är riktiga ändringar!)

Ett A står för added, så om du haft en rad som

A groda.png

skulle det betytt att du har registrerat den filen iSubversion, men sen inte checkat in den ännu.

Öppna sagobok.tex och använd samma kom-mando som i uppgift 10.36 för att se till attden är uppdaterad. Ändra sedan i den genom attbyta ut Det var en gång i början av din sagamot \lettrine{D}{et var en gång}. TEXa fi-len, och om allt gick bra så checka in din ändring.Där används ett LaTeX-kommando för stor initialmed två argument.

Uppgift 11.1 Efter att du har checkat in den,så ta bort filen sagobok.tex och ge svn statusigen. Att en fil som borde finnas saknas i din ar-betskatalog vill Subversion verkligen uppmärk-samma dig på. Vad använder den för tecken föratt markera sådana filer?

Eftersom filen var versionskontrollerad kan duhämta tillbaka den från repositoriet igen. Görsvn update så får du den senaste versionen.

Uppgift 11.2 Vad svarade svn då?

* * *På http://stp.lingfil.uu.se/lila/vc/svn/står om hur man kan starta egna projekt underSubversion här.

Vissa av De lila sidorna kan bara läsas om manär inloggad på dem, för att inte säga onödigt myc-ket om hur våra datorer är uppsatta till allmänhe-ten. Detta är en sådan sida. Skapa en sådan webb-inloggning för att kunna läsa den. (Detta är ettexempel på ett lösenord som inte är så himla vik-tigt. Återanvänd inget viktigt lösenord här, t. ex.absolut inte ditt vanliga inloggningslösen!)

Uppgift 11.3 Vad står det för exempel på ensvn import-rad för att starta ett projekt där?

Att köra program

Gå till svn-katalogen som heter som ditt använ-darnamn. I föräldrakatalogen, alltså din kurskata-log ligger ett program som du körde från den gra-fiska miljön i uppgift 1.4 (s. 10).

Om du istället ska köra samma program frånskalet kan du använda en relativ sökväg för för-äldrakatalogen (ett snäpp upp). Prova!

Uppgift 11.4 Hur skrev du då?

Gå upp till föräldrakatalogen så att du står isamma katalog som programmet. För att köraprogrammet härifrån är det enklaste att användaen relativ sökväg som betyder »samma katalog«.Prova!

107

Page 108: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

INLUPP 11: PROGRAM

Uppgift 11.5 Hur skrev du då?

Att kompilera

Gör svn update i svn-katalogen som heter somditt användarnamn. Det visar sig att en ny fil dy-ker upp – trappa.c.

Det är ett litet program i programspråket C.Kompilera programmet med cc trappa.c .

(cc är C-kompilatorn.) Det skapas då en ny filmed det körbara programmet.

Uppgift 11.6 Vad heter den fil som då skapas?

Uppgift 11.7 Vad säger kommandot file attden filen är för något slags fil?

Den skapade filen är ett körbart program. Körden med /local/texts/jabberwocky som in-put. (Programmet accepterar inga argument, sådu får lov att använda omdirigering.)

Uppgift 11.8 Hur skrev du kommandot för attgöra detta och hur löd resultatet?

Normalt skulle man vilja att detta programvars källkod ligger i trappa.c skulle heta trappaistället. Det finns väljare till cc för att gö-ra så istället, men tillverka istället en sådan filtrappa med hjälp av kommandot make. Kör allt-så make trappa . Det skriver ut vilket kommandodet i sin tur utför.

Uppgift 11.9 Vilken väljare till cc användemake för att tala om vad det kompilerade pro-grammet skulle heta?

Uppgift 11.10 Om du gör make trappa igenvad får du för meddelande från make?

Såg du vad programmet gjorde med textfilen?Antagligen kan du inte C, men öppna ändå käll-koden med Emacs och se om du kan gissa en delav hur programmet fungerar. Indent betyder in-drag.

Uppgift 11.11 Vissa delar av programmet ärkommentarer – de har ingen effekt på vad pro-grammet gör, utan finns där för att underlätta läs-ningen och förståelsen av programmet. Vad skri-ver man tydligen före respektive efter kommen-tarer i C?

Ändra i trappa.c så att den gör indrag medmellanrum istället för med understreck. Skrivmake trappa för att kompilera om programmetoch provkör det för att se att det stämmer, ochchecka sedan in den ändring du har gjort, med ettloggmeddelande som talar om vad du har ändrat.

NR-grep

Du har fått nys om ett program NR-grep som ärett grep-liknande program, men som bland annatskiljer sig genom en väljare -k med vilken mankan hitta ungefärliga träffar, som kan skilja sig litefrån det man letar efter.

I exemplet nedan söker jag efter felstavningen»aprksimativ« i en ordlista. Först tillåter jag tvåskillnader, men hittar ändå inget. När jag tillåtertre skillnader hittar jag ordet. Om jag tillåter helafyra skillnader finns det flera möjligheter.

$ nrgrep -x -k2 'aprksimativ' dsso-list.txt$ nrgrep -x -k3 'aprksimativ' dsso-list.txtapproximativ$ nrgrep -x -k4 'aprksimativ' dsso-list.txtapproximativapproximativaapproximativtpredikativpresumtivprimitiv

Sök upp detta program på nätet och hämtakällkoden (till den senaste versionen). Flytta dentill din kurskatalog och packa upp den där.

Uppgift 11.12 Vad heter filen du hämtade?

Uppgift 11.13 Vad gav du för kommando föratt packa upp den?

I katalogen du får då hittar du information omhur programmet kan installeras. Gå till den ny-skapade underkatalogen och gör så. (Det kommerupp en drös varningar när programmet kompile-ras, men det är inget du behöver bry dig om. Ifalldu vore programmets författare borde du bry digom dem.)

Här finns inget sista installationssteg som läg-ger in programmet i nån särskild katalog, utan detligger bara kvar i denna katalog.

Uppgift 11.14 Ge ett kommando som plockarut alla rader i /usr/share/dict/words som lig-ger högst två steg ifrån »starback«, samt det resul-tat du får av detta.

Uppgift 11.15 I FSF och friprogramvaruvärldentalar man om fyra friheter som ska vara uppfylldaför att program ska räknas som fri programvara.Vilka är dessa fyra? (Sök på nätet.)

När man kör nrgrep -H säger den att det ärfree software och att man ska se »the GNU Gen-eral Public License for details«, men här finnsmotstridig information, för det följer med en fil

108

Page 109: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Bugg i grep

med programmet som innehåller upphovsrättsin-formation som inte är GNU GPL utan en egentext.

Uppgift 11.16 Vad heter den filen?

Uppgift 11.17 Enligt vad som står om rättighe-terna där finns det minst en av de fyra friheternai uppgift 11.15 som man inte har som användareav detta program. Nämn en sådan, och förklara påvilket sätt den inte är uppfylld!

Bugg i grepFör att hitta verb som börjar med x eller slutarmed x borde detta funka:

$ grep -E '^x|x$' verb.txt

Uppgift 11.18 Testa kommandot. Vad ger detför output?

I svaren finns det rader med som inte borde havarit med. Vi har hittat en bugg i grep!

Det skulle kunna vara bra att rapportera bug-gen till programutvecklarna.

Uppgift 11.19 Formulera en buggrapport omden buggen. Ge ett kort kommando utan onödi-ga detaljer som ger ett oönskat resultat. Tala ombåde vad det ger för resultat och vad du väntadedig för resultat istället.

Du ska förstås inte använda dig av någon filverb.txt, för den har inte den som ska ta emotrapporten. Så använd istället echo för att ge enkort input som visar problemet. Ett mål är att densom tar emot rapporten lätt ska kunna prova självoch se buggen.

(Om det vore på riktigt skulle du skriva på eng-elska, men du kan skriva på svenska istället nu.)

* * *Fast när man ska rapportera buggar är det ännubättre om man först ser efter om de redan är fixa-de genom att jämföra med den senaste versionen.

Uppgift 11.20 Vilken version av grep kör vihär? Hur tog du reda på det?

Uppgift 11.21 Vilken är den senaste publicera-de versionen av GNU grep? Var på webben hittadedu det? (Den är från i år, så är inte den du hittadefrån i år har du hittat fel.)

Hämta den senast publicerade på nätet ochkompilera och installera den för att se om denhar samma fel. Använd hela det normala GNU-sättet för att installera program, och använd--prefix ~ vid konfigureringen för att få dinhemkatalog som prefix.

Uppgift 11.22 Exakt vilka kommandon skrevdu då?

Uppgift 11.23 I vilken katalog hamnade nu detnyinstallerade programmet grep? Hur kan duenklast skriva för att köra det?

Uppgift 11.24 Finns buggen kvar? Vad användedu för kommando för att testa det?

När du kompilerade programmet så skapadesen massa filer som inte längre behövs. En del varbara mellanresultat, och de som var det resultatsom du var ute efter har kopierats till en annankatalog när du installerade. Läs i INSTALL för attse vad du kan ge för make-kommando för att rensabort de filer där som inte längre behövs och ge detkommandot.

Uppgift 11.25 Hur löd det kommandot?

109

Page 110: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger
Page 111: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Kapitel 12

Avslut

I tidigare uppgifter har ni använt Den stora svens-ka ordlistan.

Denna fria svenska ordlista fanns under fleraår inte tillgänglig i sin källform på nätet. Förraåret dök den upp igen på http://dsso.se/ i ettnytt format, men uppgifterna nedan bygger påhur den såg ut tidigare, så istället för att häm-ta den på nätet själva får ni använda den senas-te versionen jag hämtade där för ett par år sen,/local/kurs/ids/dsso-1.52.txt.

Den filen innehåller ordlistans information påett särskilt textformat. Du får se efter själva hurinnehållet i filen är upplagt. Från detta formatskapades flera filer i andra format, till exempelrättstavningsfiler till ordbehandlare.

I figur 12.1 finns ett par utdrag ur filen. En sakatt märka är att det bara är rader med < och > sominnehåller ordformer.

Lägg filen i svn-arbetskatalogen och skapa en fildsso.sh i samma katalog. Checka in den, fast denär tom, så att jag ser att du har kommit igång meddenna uppgift.

Här ska du skriva ett skalskript så att omdu ger kommandot bash dsso.sh skapas enfil ordformer.txt som innehåller en UTF8-filmed en ordform per rad. Hoppa över flerordsut-tryck från filen som »au pair« och »science fic-tion«. Resultatet ska vara sorterat (på svenska)och utan dubbletter. Det är alltså i stil med dendsso-list.txt som ni har använt förut, förutomatt den är gjord från en ännu tidigare version avDSSO.

Använd flera skalkommandon i rad och lagramellanresultat i filer som du tar bort i slutet avskalskriptet. Det första skulle t. ex. kunna varaett kommando som skapar en fil dsso-u8.txtsom är likadan som originalet, men omvandlad tillUTF8. Senare i skalskriptet skulle du i så fall görarm dsso-u8.txt för att rensa upp efter dig.

* * *Tips: Fokusera inte på att det ska bli ett skalskripttill att börja med, utan försök bara hitta komman-don för att lösa uppgiften. Sen kan du stoppa indina kommandon i skriptet och köra alltihop sam-

lat.I skalskript kan man skriva kommentarrader

som börjar med »#«. Använd det för att förklaravad som händer, t. ex. med en kommentarsrad

# Omvandla till UTF8

före första kommandot.

12.0.1 Rapport

Efter att du är klar med detta så använd komman-dot

diff -u /local/dict/dsso-list.txt ordformer.txt

för att se vilka skillnader det har blivit jämförtmed den gamla listan.

Skriv en kort rapport dsso.tex i LaTeX om dinlösning av DSSO-uppgiften. Checka in den filenpå samma ställe som det övriga. (Du ska inte läm-na in den PDF du gör särskilt, utan den genere-rar jag själv när jag ska titta på den.) Använd do-kumentklassen stupp, och \course för att angekursnamn. Sätt lämplig titel. (Du kan ha en un-dertitel med \subtitle också.)

Beskriv i några avsnitt uppgiften, din lösningoch hur resultatet blev.

Lista även hela skalskriptet i rapporten. An-vänd det sätt som nämns på Lila sidorna underTEX, Kodlistingar. Ändra gärna stilen för hur kod-listningar visas.

Avsluta med ett avsnitt där du berättar någotom det resultat du fick. Berätta hur många ord-former du hittade, och tala om några tillägg ochborttagningar jämfört med dsso-list.txt.

12.1 Skaluppgifter

Dessa uppgifter ska lösas med ett eller flera kom-mandon i skalet. Ange både vilket eller vilka kom-mandon du gav, samt vad resultatet blev.

111

Page 112: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

12. AVSLUT

# Copyright (c) 2011 Göran Andersson# This work is licensed under the Creative Commons Attribution-Share Alike License.

...

890212r5<verb>näta:näta:nätade:nätat:nätar:näta:nätas:nätades:nätats:nätas:nätad:nätat:nätats:nätande:DEFINITION 1: Göra mål, dvs bollen hamnar i målets nät.

...

571187r5<adjektiv>rätt:rätt:rätt:rätta, rättan:rätta:rättare:::rätte::::::::

Figur 12.1: Utdrag ur dsso-1.52.txt.

Uppgift 12.1 Hur många olika ordklasser finnsdet i texten rummet.word?

Uppgift 12.2 Det är 34 rader i /local/texts/jabberwocky. En del rader upprepar andra rader.Hur många olika rader finns det?

Uppgift 12.3 Vilka verb med minst sju bokstä-ver finns i verb.txt som svensk avstavning medavstava inte hittar någon avstavning för?

Uppgift 12.4 Hur långt är det längsta svenskaspråknamnet i /local/kurs/ids/eulang.tsv?

Uppgift 12.5 Vad finns det för ord som bör-jar på stor bokstav i den ryskspråkiga textfilen/local/kurs/ids/rysk.txt. Glöm inte att denfilen är kodad med ISO 8859-5! Svaret ska varai vårt vanliga UTF-8 och innehålla en lista överbara de orden, ett per rad, utan dubbletter.

12.2 Att rensa upp efter sig

Snart har du förhoppningsvis blivit godkänd pådenna kurs, och då kan det vara läge att rensaupp i din kurskatalog. Du borde inte ha skapatså mycket stora filer i denna kurs, men i en annankurs kan det bli rejält med data som du antag-ligen inte behöver ha kvar efteråt, så det är enbra vana att efteråt se över vad som kan kom-primeras eller kanske till och med tas bort. Sehttp://stp.lingfil.uu.se/lila/disk/ för endel tips som har med diskanvändning att göra.

Uppgift 12.6 Vad kan du enligt detta ge förskalkommando för att se hur mycket plats dinhemkatalog tar upp? Hur mycket var det? Ett parväljare används till kommandot. Vad betyder de?

Uppgift 12.7 Använd samma skalkommando(med andra väljare/argument) för att lista storle-ken på alla filer och kataloger i din hemkatalogoch sortera dessa rader i storleksordning.

Med ls -l eller wc -c får man filers storlek,men det duger inte till denna uppgift eftersomdet inte säger nåt om katalogers storlek.

Uppgift 12.8 Se även vad det står på de lila si-dorna om att man kan lagra filer på andra ställen.Du kanske har noterat att det finns ett nobackup idin hemkatalog. Vad sägs om detta nobackup här?

Uppgift 12.9 Se även tipsen där om hur manhittar stora filer som man inte använt på länge.Använd kommandot som nämns där för att listavilka filer under din kurskatalog som är minst nå-gon viss storlek. Välj en gräns så att det blir fleramen inte jättemånga filer som nämns. (Visa somvanligt kommando och resultat.)

I exemplet på sidan används »M« för Megabyte.Se dokumentationen för det kommandot om duvill använda något mindre eller större prefix.

12.3 Leta filer

Läs i dokumentationen om kommandot find föratt ta reda på hur man kan sätta krav på filnamnetför de filer som den ska hitta.

Uppgift 12.10 Lista filer hos användaren ellensom har namn som slutar på .jpg.

Ellen har flera kataloger som du inte får letai, så därför får du en mängd varningar. Häng på2>/dev/null på slutet för att slippa se varningar-na.

Varningar och felmeddelanden skrivs ut »försig« och kan omdirigeras med 2> istället för >. Alltsom skrivs till den speciella »filen« /dev/null iUnix försvinner i ett svart hål och kommer aldrigtillbaks.

Uppgift 12.11 Det finns en särskild sökmöjlig-het i find för sånt som är tomt också. Vad finnsdet för tomma filer som heter README under/usr/share?

112

Page 113: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

12.3. Leta filer

Med »under« menar jag i den katalogen, elleri en underkatalog till den katalogen, eller i enunderkatalog till en underkatalog till den katalo-gen, eller i en underkatalog till en underkatalog till enunderkatalog till den katalogen, eller i en underkatalog

till en underkatalog till en underkatalog till en underkatalog

till den katalogen, eller i en underkatalog till en underkatalog till

en underkatalog till en underkatalog till en underkatalog till den ka-

talogen, eller i en underkatalog till en underkatalog till en underkatalog till en

underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en

underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till

en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en

underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den

katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till

en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en

underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till

en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en

underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en

underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en

underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller . . . (fnord)

113

Page 114: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger
Page 115: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Figurer

1.1 Gnuhuvudet är ritat av Aurelio A. Heckert och är taget från http://www.gnu.org/graphics/heckert_gnu.html. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 De två döda tangenterna på våra tangentbord. Fotografi. . . . . . . . . . . . . . . . . . . 41.3 Ett filträd, ritat med hjälp av LaTeX-paketet forest. . . . . . . . . . . . . . . . . . . . . 61.4 Teleprintern ASR33. Bilden är fotograferad av Marcin Wichary som sprider den med Cre-

ative Commons Attribution License på flickr.com. Jag har hämtat den från uppslagsordet»ASR-33 Teletype« på Wikipedia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.1 En Emacs med två stora fönster som visar varsin buffert samt en aktiv minibuffert. Skärm-dump. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1 Hur många ord finns det på de första tio raderna? Kommandoröret head stp.txt | wc -w 263.2 Vad heter Tjatte på danska? Kommandoröret cut -f 3 knattarna.txt | tail -n 1 . 293.3 Vad heter Tjatte på danska med en annan metod. Kommandoröret tail -n 1

knattarna.txt | cut -f 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.4 Vilka »Fnattar« har ett namn med a i? Kommandoröret cut -f 2 knattarna.txt | grep

a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.5 Hjälptexten för head. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.1 Exempel på fel. En text är skriven med vissa koder, men tolkas utifrån andra koder. I dettafall är det Latin-1 som tolkats som CP850. . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.2 ASCII-tabell. Gjort som en LaTeX-tabular. . . . . . . . . . . . . . . . . . . . . . . . . . . 374.3 Tecken 160–255 i Latin-1. Gjort som en LaTeX-tabular. . . . . . . . . . . . . . . . . . . 374.4 Den korta texten »Hallå! ,« lagras med UTF-8. Olika tecken tar olika mycket plats att lagra. 384.5 Exempel på teckenkodningsfel där en text skriven med UTF-8 tolkas som om det vore

Latin-1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.6 Figur 4.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.7 Startcitat och slutcitat i olika typsnitt (Helvetica och Palatino). . . . . . . . . . . . . . . . 394.8 Några exempel på hur olika kommandon ger olika texter ifrån sig beroende på vilken locale

som gäller. (I det sista exemplet märks skillnaden bara på »yhteensä« istället för »total«.) . 42

4.9 Zoomkommandon i Emacs. Den sista är med siffran 0, inte bokstaven O. . . . . . . . . . 454.10 Ett par vikare, tagna från Wikipedia, som i sin tur har tagit bilden från The Fisheries and

Fisheries Industries of the United States av George Brown Goode (1887). . . . . . . . . . . 47

5.1 Man-sidan för wc i Unix v7 (1979) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.2 Från xkcd av Randall Munroe. http://xkcd.com/912/ . . . . . . . . . . . . . . . 54

6.1 Exempel på missöde när flera personer kan ändra i samma filer. Taget från boken VersionControl with Subversion, publicerad av O’Reilly Media, skriven av Ben Collins-Sussman,Brian W. Fitzpatrick och C. Michael Pilato, spridd enligt Creative Commons AttributionLicense v2.0, tillgänglig på http://svnbook.red-bean.com/. . . . . . . . . . . . . . . . 59

7.1 Logotyperna TEX och LATEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677.2 Einsteins speciella relativitetsteori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687.3 Donald E. Knuth som har skrivit TEX. Bilden är tagen från http://www-cs-faculty.

stanford.edu/~knuth/closeup.tif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

115

Page 116: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Figurer Figurer

7.4 En liten text som ni skulle efterhärma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

9.1 Greppande med och utan -o i en saga . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

9.2 Utdrag ur ett korsord som författaren har löst. . . . . . . . . . . . . . . . . . . . . . . . . 899.3 Från xkcd av Randall Munroe. http://xkcd.com/208/ . . . . . . . . . . . . . . . 91

11.1 Copyleft-tecknet. Detta tecken finns inte i typsnittet Berling antikva som kompendiet ärsatt med så för att skriva det i denna figur använde jag \reflectbox{\copyright} för attspegelvända ett ©. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

11.2 Byggblock i Creative Commons-licenser. . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

12.1 Utdrag ur dsso-1.52.txt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

116

Page 117: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Tabeller

2.1 Beteckningar på några tangenter i Emacs. . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2 En del Emacs-kommandon för förflyttning . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.1 Språkkoder enligt standarden ISO 639-1 för några språk med många talare i världen, Eu-ropa, Norden eller Sverige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.1 Koder enligt ISO 3166-1 för några av världens och Europas största länder, samt de skandi-naviska länderna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

6.1 Några C-h-kommandon i Emacs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7.1 Kommandon för att välja typsnitt i LaTeX . . . . . . . . . . . . . . . . . . . . . . . . . . 697.2 Några accentkommandon i LaTeX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

9.1 Några namngivna teckenklasser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

117

Page 118: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Innehåll

1 Inledning 31.1 Om kursen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Vårt datorsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Filer och kataloger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 Grafisk filhantering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.5 Klipp och klistra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.6 Textfiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.7 Editorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.8 Filskydd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.9 Kommandoraden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Inlupp 1: Inledning 10

2 Skalet och Emacs 152.1 Skalet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Inlupp 2: Skalet och Emacs 21

3 Mer om skalet 253.1 Långa väljare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2 Kommandorör (|) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.3 En användning av echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4 Omdirigering av standard input (<) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.5 Långa rör och filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.6 Relativa sökvägar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.7 TAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.8 Skalkommandot cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.9 Att tolka hjälp om skalkommandon . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.10 Argumentet - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.11 Skalskript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.12 Expansion i skalet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Inlupp 3: Mer om skalet 31

4 Teckenrepresentation 354.1 Binärt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.2 Teckenkoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.3 Att ange teckenkodning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.4 ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.5 Kontrolltecken och nyrad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.6 Latin-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.7 ISO 10646 = UCS ≈ Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.8 Övriga teckenkodningar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.9 Vad är olika tecken? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.10 Språkinställningar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.11 Olika teckenkodningar i Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.12 Att konvertera mellan teckenkodningar . . . . . . . . . . . . . . . . . . . . . . . . . 424.13 Att skriva tecken i Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

118

Page 119: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Innehåll Innehåll

4.14 Hos oss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Inlupp 4: Teckenkodningar 44

5 Dokumentation och textbearbetning i skalet 495.1 Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.2 Skalkommandon för texthantering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.3 cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.4 echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.5 grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.6 more . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.7 paste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525.8 sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525.9 tr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525.10 uniq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

Inlupp 5: Textbearbetning i skalet 54

6 Versionskontroll och Emacs 596.1 Versionskontroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596.2 Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Inlupp 6: Versionskontroll och Emacs 62

7 LaTeX 677.1 Stycken och rader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677.2 Allmän struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677.3 Kommandon med \ (bakstreck) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687.4 Klamrar för grupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687.5 Speciella tecken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.6 Titel och rubriker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.7 Omgivningar med begin–end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.8 Typsnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.9 Hårt mellanslag (~) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.10 Bindestreck och tankstreck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.11 Citattecken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707.12 Dokumenthuvudet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707.13 Figurer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717.14 Kommentarer med % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717.15 Att referera inom texten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727.16 Övriga tecken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727.17 verbatim och \verb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727.18 LaTeX i Emacs – AUCTeX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737.19 UTF-8 och LaTeX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737.20 Mer information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Inlupp 7: LaTeX 74

8 Internet & World Wide Web 798.1 ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.2 Domännamn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.3 Toppdomäner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.4 World Wide Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.5 Redovisning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808.6 Att publicera på WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808.7 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808.8 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818.9 ids8.html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

9 Reguljära uttryck 839.1 Ett tecken: . [ ] [^ ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

119

Page 120: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Innehåll Innehåll

9.2 Ankring: ^ $ \< \> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839.3 Bakstreck: \ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839.4 Utökade reguljära uttryck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849.5 Repetitioner: * + ? {} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849.6 Alternativ: | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849.7 Exempel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849.8 Olika sorters reguljära uttryck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.9 Reguljära uttryck i Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.10 grep -o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.11 Girighet och hunger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859.12 sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Inlupp 9: Reguljära uttryck 88

10 Dokumentrepresentation 9310.1 Uppmärkt text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9310.2 HTML kommer från SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9310.3 SGML och XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9410.4 MIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9510.5 Komprimering av filer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9610.6 Filarkiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Inlupp 10: Dokumentrepresentation 98

11 Program 10311.1 Skript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10311.2 Interpreterande och kompilerande programspråk . . . . . . . . . . . . . . . . . . . . 10311.3 Att köra program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10311.4 Att kompilera program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10311.5 Att installera program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10411.6 Upphovsrätt och licenser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Inlupp 11: Program 107

12 Mer program & avslut 11112.1 Skaluppgifter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11112.2 Att rensa upp efter sig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11212.3 Leta filer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Figurer 115

Tabeller 117

Innehåll 118

Register 121

120

Page 121: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Register

’, se apostrof. (i reguljära uttryck), 51, 83. (i sökvägar), 27.. (i sökvägar), 15, 27<, se omdirigering>, se omdirigering$1 (i skalskript), 58\, se bakstreck|, se lodstreck-, se bindestreck, se även em-dash, en-dash#, se nummertecken˜, se tilde

aktuell katalog, 15, 27Alt-tangent, 18AltGr, 4ankring (av reguljära uttryck), 51, 83ANSI (American National Standards Institu-

te), 39användarnamn, 4apostrof (’), 40arbetskatalog, se aktuell katalogargument, 9, 15ASCII (American Standard Code for Informa-

tion Interchange), 36

backup, 20bakstreck (\), 6, 36

för att skriva kontrolltecken, 52i LaTeX, 68i reguljära uttryck, 83

bash (kommando), 30, 103Bell Labs, 15, 104Berkeley Software Distribution (BSD), 104Berners-Lee, Tim, 79binära tal, 35binärfiler, 5, 93bindestreck (-)

dubbla, 25inleder väljare, 16som argument, 28

bit, 35Bourne, Steve, 15broken bar (¦), 26BSD, se Berkeley Software Distributionbuffert (i Emacs), 19byte, 5, 10, 35, 93bzip2 (kommando), 96

C (locale), 41

C (programspråk), 5, 108cal (kommando), 55carriage return, se returtangentencat (kommando), 9, 17cc (kommando), 108cd (kommando), 9, 15citattecken, 39, 70compress (kommando), 96Control-tangent, 7copyleft, 105, 106copyright, se upphovsrättcp (kommando), 9, 17, 28CRLF, 36, 46cut (kommando), 27, 28, 50

väljare -f, 27CVS, 59

date (kommando), 16väljare -d, 16väljare -u, 16

default, 42, 74Desktop (katalog), 6–7/dev/null, 112diff (kommando), 90, 111directory, se katalogdold fil, se fildomännamn, 4, 79drag and drop, 10död tangent, 4

echo (kommando), 22, 26, 30, 50väljare -e, 50

ed (kommando), 86, 87editor, 7, 86ekoarea (i Emacs), 19element, 93em-dash (—), 70Emacs, 7, 18–20, 41–43, 60–61, 85

referenskort, 63–64en-dash (–), 70entertangenten, 9, se även returtangentenEscape, 36, 46eurotecken (C), 39evince (kommando), 74, 75exit (kommando), 79expansion (i skalet), 30

fg (kommando), 79fil, 5

121

Page 122: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Register Register

dold, 5, 17, 27file (kommando), 95filnamn, 5filnamnsändelse, 5filskydd, 7–8filter, 27, 86filträd, 5–6find (kommando), 112flagga, 16, se även väljarefloat (i LaTeX), 71fmt (kommando), 12, 18

väljare -w, 18folder, se katalogFree Software Foundation, 105fullständig sökväg, se sökväg, fullständigfönster (i Emacs), 19

girighet (om reguljära uttryck), 85glyf, 39Gnome, 3GNU, 3, 15, 18, 44, 49, 96, 104–105GNU Emacs, se EmacsGNU GPL (General Public License), 106GNU/Linux, 3, 105grep (kommando), 12, 16, 18, 25, 51, 83–85,

87väljare -c, 16väljare -E, 84väljare -i, 16väljare -o, 85väljare -v, 51väljare --color, 51

grupp, 7, 8gunzip (kommando), 96gzip (kommando), 96, 97

head (kommando), 18, 28, 29väljare -n, 18

--help (väljare), 28hemkatalog, 4–6, 15hexadecimala tal, 35, 94HTML, 5, 80, 82, 88, 93–95hunger (om reguljära uttryck), 85hypertext, 79hårt mellanslag

i TEX, 69

IANA (Internet Assigned Numbers Authori-ty), 35, 36, 39, 95

iconv (kommando), 42, 45Info, 49, 54–55informationsrad (i Emacs), 19, 22, 33, 41, 45,

46inloggning, 4inputmetod (i Emacs), 42Internet, 79–80interpretator, 103ISO (Internationella standardiseringsorganisa-

tionen), 37, 40ISO 639-1, 32

ISO 3166-1, 40ISO 8859-*, 39ISO 8859-1 (= Latin-1), 37ISO 10646, se UCS

Java (programspråk), 85joker, 15, 30

Kaka, Ellen, 6katalog, 5, se även hemkatalog, underkatalog

aktuell katalog, 15kilo, 35klipp-och-klistra, 7, 11Knuth, Donald E., 71kommandorad, 8kommandorör, 25–27, 41kompilator, 5, 103komplettering, 12

i Emacs, 22komprimering, 96kontrolltecken, 36, 93, 100källkod, 5, 103

LANG (miljövariabel), 41LaTeX, 67–73Latin-1 (= ISO 8859-1), 37LibreOffice.org, 7licens, 104, 106line feed, 36Linux, 105, se även GNU/Linuxlocale, 40, 41, 43locale (kommando), 41lodstreck (|), 26

för alternativ i kommandosynops, 49i kommandorör, 25i reguljärt uttryck, 84

ls (kommando), 9, 16, 17väljare -a, 17, 21väljare -l, 16, 17

länderkoder för, 40

lösenord, 4

make (kommando), 103, 104, 108, 109man (kommando), 49man-sida, 49–50mapp, se katalogMassachusetts Institute of Technology (MIT),

18, 105Mega, 35mellanslag, 18, se även hårt mellanslag

i filnamn, 5, 15Meta-tangent, 18metatecken (i reguljära uttryck), 51, 83, 84Microsoft, 105Microsoft Windows, 36, 37, 39MIME, 95, 99minibuffert (i Emacs), 19mkdir (kommando), 9, 17modeline (i Emacs), se informationsrad

122

Page 123: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Register Register

more (kommando), 51MS-DOS, 105mv (kommando), 9, 17, 21märkspråk, 95

\n (nyrad), 36, 50, 52newline, 36, 50, 52nod (i Info), 54, 55nummertecken (#)

i namn på Emacs autosparfiler, 20nyrad, 36, 52

Ogg Vorbis, 100oggenc (kommando), 100oktala tal, 35omdirigering, 17, 25–27

med 2>, 112med <, 26med >, 17med |, 25

omgivning (i LaTeX), 69Open Group, The, 105open source, se öppen källkodoperand, 15, se även argumentoption, se väljareordbehandling, 7, 67

paste (kommando), 52PDF (Portable Document Format), 67Perl (programspråk), 85, 91pipe, 25, se även kommandorörplain text, 7, 35, 93play (kommando), 100POSIX, 105prefixtangent (i Emacs), 18program, 103–104programspråk, se C, Java, Perl, Python, 103prompt, 8punkten (i Emacs), 20pwd (kommando), 9, 15Python (programspråk), 85, 103

ramar (i Emacs), 19redirection, se omdirigeringregex(p), se reguljärt uttryckregion (i Emacs), 20, 61regular expression, se reguljärt uttryckreguljärt uttryck, 51, 83–87

enkelt, 84i Emacs, 85utökat, 84

relativ sökväg, se sökväg, relativrepositorium, 59RET, return, se returtangentenreturtangenten, 9, 19rm (kommando), 9, 17, 25rmdir (kommando), 9, 17

sed (kommando), 86, 87väljare -r, 87

seq (kommando), 13

SGML (Standard Generalized Markup Lan-guage), 93

shell, se skalshell script, se skalskriptSingle Unix Specification, 105skal, 8skalskript (shell script), 30, 57sort (kommando), 32, 40, 41, 52

väljare -n, 52sortering, 41språk

koder för, 32språkinställning, 40ssh (kommando), 79Stallman, Richard M., 18, 105standard input, 25, 26standard output, 17, 25stdin, se standard inputstdout, se standard outputSubversion, 59, se även svnsvn (kommando), 60, 62, 74sökväg

fullständig, 6, 27relativ, 27

\t (TAB), 52TAB-tangenten, 27TAB-tecken, 27, 36, 50, 52tagg, 93tail (kommando), 18

väljare -n, 18tangent

död, 4tangentbord, 4tar (kommando), 96, 97tecken, 39teckenklass, 83teckenkodning, 7, 35terminal, 8TEX, 67Texinfo, 49textfil, 7, 36, 93texthantering

i skalet, 17–18, 50–53textredigerare, se editor.tgz (filnamnsändelse), 97Thompson, Ken, 86tilde (˜)

hur man skriver tecknet, 4i namn på backupfiler, 20i sökvägar, 6, 30i TEX, 69i URL, 80

toppdomän, 79Torvalds, Linus, 105tr (kommando), 9, 52, 86Turing, Alan, 16

UCS (Universal Character Set), 37, se ävenUnicode

123

Page 124: Introduktion till datateknik för språkvetare ht2016 · 2016. 10. 4. · kataloger till en katalog stp16 som i sin tur är underkatalog till en katalog homesom samlar allas hemkataloger

Register Register

underkatalog, 5Unicode, 37, se även UCSuniq (kommando), 46, 52, 53

väljare -c, 52väljare -d, 52väljare -u, 52

University of California, Berkeley, 104Unix, 3, 36, 37, 96, 104–105unzip (kommando), 96upphovsrätt, 104URL (Uniform Resource Locator), 80US-ASCII, se ASCIIUTF-8, 38utloggning, 4

vagnretur, se returtangentenwc (kommando), 9, 18, 44, 49

väljare -l, 18väljare -w, 18

versionskontroll, 59–60vertical bar (|), se lodstreckwindows-1252, 39WinLatin1, se windows-1252working directory, se aktuell katalogWorld Wide Web (WWW), 79–80välformad (om XML), 95väljare, 16

i LaTeX, 70kombinera, 16långa, 25med argument, 16

X Window System, 105XHTML, 94, 95XML (Extensible Markup Language), 94–95xz (kommando), 96

zcat (kommando), 96zip (kommando), 96,öppen källkod, 106, se även fri programvara

124