Filers innehåll Data av olika slag lagras i filer. file = pärm, mapp, arkiv, akt,... Grundläggande databehandling Filer och skal Per Starbäck 2005-09-12 / Föreläsning 2 texter ljud bilder databaser program... Allt ligger lagrat som en sekvens av bytes. (Värden 0 255.) Det kan vara t. ex. 133 188 227 30 230 126 108 97 166 70 241 117... Informationen kodas enligt någon konvention. pffb = påhittat filformat för bilder Representation av text Bilden består av 16 16 prickar. Lagra som 16 16 = 256 bytes, rad för rad, en byte för varje prick. 0 = vitt, 1 = klarrött, 2 = mörkgrått,... Så 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 19, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 19, 2, 19, 205, 0, 0, 0, 0,... En boksida kan i princip lagras som en bild, men vi vill dessutom veta vilka bokstäver och andra tecken som står där. T. ex. ska en sökning kunna hitta Språkteknologi oavsett om det står SPRÅKTEKNOLOGI, Språkteknologi, Språkteknologi eller.
Teckenkodning Ren text = plain text Man kan hitta på sätt att koda tecken för tecken, t. ex. mellanslag = 0, A = 1, B = 2,..., Ö = 29, a = 30, b = 31,... Det funkar om vi klarar oss med högst 256 olika tecken. Det finns många sådana teckenkodningar. Många filer med textinnehåll innehåller bara ren text: textfiler. programkod annat som inte (bara) ska läsas av människor utan (också) tolkas av datorer Motsats: binärfiler. Emacs Emacs begrepp Ren text (plain text) redigeras med en textredigerare (text editor). En sådan är Emacs. En textredigerare liknar en ordbehandlare på vissa sätt, men har inte funktioner för layout, typsnitt och sånt stöd för att programmera i olika programspråk En del editorer är specialiserade (t. ex. bara för att skriva program i programspråket Java), medan Emacs är generell. buffert (buffer) oftast har man flera texter man skriver på. Varje text ligger i en egen buffert fönster den del i emacs som vissar innehållet i en viss buffert Notation: C-a : Ctrl-a M-a : Meta-a (hos oss: tangent med fönstersymbol)
Filnamn i Unix Filskydd Skillnad på små och stora bokstäver. Man kan ha filerna foo, FOO och FoO i samma katalog. Normalt använder man små bokstäver Ofta slutar filnamn med punkt och ett filnamnstillägg: foo.ogg kan antas vara en ljudfil i filformatet Ogg Vorbis; foo.py kan antas vara en textfil med ett program i programspråket Python. Undvik åäö i filnamn Undvik mellanslag i filnamn Undvik bindestreck i början av filnamn De flesta av dina filer kan läsas av vem som helst, men bara ändras eller tas bort av dig själv. För varje fil talas om vilka rättigheter 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. Dessutom en grupp. Varje kategori kan ha rättighet att r = läsa w = skriva x = köra (execute) Filskydd för filer och kataloger Filhanteraren (nautilus) r = läsa en fil; lista innehållet i en katalog w = ändra en fil; skapa och ta bort filer i katalogen x = köra ett program; komma åt filer i katalogen Detta är vad filhanteraren visar om filen regler.txt i era hemkataloger. Den påstår bland annat (helt korrekt) att det är en ren textfil.
Filskydd i filhanteraren Användargränssnitt (user interface) Observera text view -rw-rw-r-- som innehåller tre grupper med möjliga rwx för ägaren, gruppen respektive övriga. Dagens normala användargränssnitt är ett grafiskt användargränssnitt (GUI) som bygger på fönster, ikoner, mus, wysiwyg (what you see is what you get) etc. Stanford Research Institute (SRI), 60-tal, Douglas Engelbart Xerox PARC, 1970 Apple Macintosh (1984) första kommersiella framgången I Unix-världen används fönstersystemet X (1984, MIT). (X är fri programvara, så det används även i GNU.) Teleprinter Terminaler En populär teleprinter var ASR33 som tillverkades av Teletype Corporation. Kommandon och resultat är text. Allt skrivs ut på papperet som på en skrivmaskin. Bildskärm: Texten rullas uppåt och försvinner. I ett fönstersystem startar man ett särskilt terminalprogram som beter sig som en terminal.
GUI vs CLI Så är kommandoradsgränssnittet (Command Line Interface = CLI) föråldrat idag? Tja, i många sammanhang, men ofta användbart för avancerad användning: Ofta kraftfullare Ofta effektivare när man kan det lättare att göra om samma sak, kanske med variationer Skal Programmet som tolkar och utför användarens textkommandon kallas för skal (shell). (Ursprungliga skalet i Unix skrevs av en Steve Bourne på Bell Labs, så skalet i GNU heter med anspelning på detta Bourne Again Shell, bash.) Kommandon i Unixskal är ökända för att ha korta och kryptiska namn. ls list mv move cp copy rm remove cd change directory cat concatenate pwd print working directory Kommandon argument Kommandoargument jokrar Efter kommandonamnet följer argument. (Ofta filnamn.) (I dessa exempel är $ skalets prompt.) $ ls bar.png foo foo.py kvack.png $ ls foo foo $ ls bar ls: bar: No such file or directory $ ls bar.png kvack.png bar.png kvack.png * matchar godtyckligt antal tecken? matchar ett tecken $ ls *.png bar.png kvack.png $ ls f?o foo $ ls foo* foo foo.py Komplettering med TAB.
Väljare (options) Repris: Olämpliga filnamn Väljare (optioner, flaggor) anger hur ett kommando ska utföras. Exempel ls -l ger långt format. $ ls foo foo $ ls -l foo -rw-rw-r-- 1 starback starback 4 Sep 11 11:11 foo -a -b -c kan oftast slås ihop -abc Tidigare sa vi: Undvik mellanslag i filnamn Undvik bindestreck i början av filnamn Nu ser vi varför: ls foo bar : lista filerna foo och bar (inte lista en fil med namnet foo bar ) ls -l : lista filer i långt format (inte lista en fil med namnet -l ) Aktuell katalog Relativa filnamn Skalet håller rätt på en aktuell katalog och filargument till kommandon tolkas beroende av detta. Så om min aktuella katalog är /home/staff/starback/katalog och jag skriver är det samma sak som ls foo ls /home/staff/starback/katalog/foo pwd skriver ut aktuell katalog (print working directory) cd ändra aktuell katalog (change directory) Aktuell katalog: /home/staff/starback Önskad fil: /home/staff/starback/katalog/foo Kan anges (bland annat) som: /home/staff/starback/katalog/foo (absolut filnamn) katalog/foo (relativt filnamn) ~starback/katalog/foo (förkortat skrivsätt för någons hemkatalog) ~/katalog/foo (funkar bara för mig)
.. och. Kommandon och program Aktuell katalog: /home/staff/starback/katalog Önskad fil: /home/staff/starback/exempel.txt Kan anges (bland annat) som: /home/staff/starback/exempel.txt (absolut filnamn)../exempel.txt (relativt filnamn).. finns i alla kataloger och går till katalogen ett steg upp. cd.. vanligt kommando för att gå upp ett steg I varje katalog finns också. som är samma katalog, så ls foo och ls./foo gör samma sak. Skalet kan själv egentligen bara vissa av alla kommandon man ger till det. Resten är program som körs av skalet. Dessa program är också filer, så nånstans finns det t. ex. en fil ls. (Fullständigt namn /bin/ls.) Så när man skriver ls -l foo gör skalet följande: Ser efter om den själv vet hur man ska göra ls Eftersom den inte vet det letar den upp ett program ls Kör igång det programmet med de indata användaren givit Skriver ut resultatet som programmet ger ifrån sig Miljövariabler Vissa inställningar lagras i miljövariabler. En sådan är PATH som anger var skalet ska leta efter program. Om värdet på PATH är /usr/local/bin:/bin:/usr/bin:/usr/x11r6/bin söks efter ett program i någon av dessa kataloger i den ordningen. För ls blir det /bin/ls som hittas. locale En del program och kommandon beter sig olika på grund av ens språkinställningar. Dessa håller systemet rätt på genom miljövariabler, framförallt LANG. $ ls bar ls: bar: No such file or directory $ LANG=sv_SE $ ls bar ls: bar: Filen eller katalogen finns inte sv_se = svenska i Sverige. sv = svenska (ISO-standard 639: en = engelska, de = tyska, ar = arabiska,... ) SE = Sverige (ISO-standard 3166): US = USA, GB = Storbritannien,... ) Samma språk i flera länder. sv_se = rikssvenska; sv_fi = finlandssvenska Flera språk i samma land. nb_no = bokmål; nn_no nynorska.
man-sidor man-sidan för ls i Unix v7 (1979) Unix är dokumenterat i ett enhetligt format som kallas man-sidor. I utskriven form Tillgänglig på datorerna med kommandot man. En sektion (man-sida) för varje program, systemanrop, osv. man-sidor: syntax SYNOPSIS ls [OPTION]... [FILE]... Hakparenteser för sånt som är optionellt Punkter (... ) när det kan vara flera likadana
cal exempel cal skriver ut en liten kalender. (Det är ett ointressant litet program, men fungerar som enkelt exempel nu.) $ cal September 2005 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 man cal början En man-sida har sektioner som: NAME SYNOPSIS DESCRIPTION NAME cal - displays a calendar SYNOPSIS cal [-smjy13] [[month] year] DESCRIPTION Cal displays a simple calendar. If arguments ar rent month is displayed. The options are as fol -1 Display single month output. (This is t -3 Display prev/current/next month output. man cal väljare cal [-smjy13] [[month] year] Förkortat skrivsätt för att visa att de flaggor som finns att ge är -s, -m, -j, -y, -1 och -3, och att de kan slås ihop när man ger fler flaggor. Vad dessa flaggor betyder står i DESCRIPTION strax efteråt, t. ex. -m Display Monday as the first day of the week. Man kan kombinera flaggor på detta sätt, t. ex. ger cal -mj och cal -m -j samma resultat. man cal argument -s Display Sunday as the first day of the w default.) cal [-smjy13] [[month] year] -m Display Monday as the first day of the w Observera de nästlade hakparenteserna. Man kan skriva -j Display Julian dates (days one-based, nu ingenting, eller bara -y år, eller Display a calendar for the current year. månad och år Detaljerna för hur dessa month och year ska anges står i beskrivningen nedan: A single parameter specifies the year (1-9999) to be displayed; note the year must be fully specified: "cal 89" will not display a calendar for 1989. Two parameters denote the month (1-12) and year. If no parameters are specified, the current month s calendar is displayed.