UNIX Introduktion UNIX Inge Frick inge@nada.kth.se De datorer ni kommer att använda här är huvudsakligen SUN-maskiner som kör Solaris. Solaris är ett Unix operativsystem. Unix intro 2005 / Copyright Inge Frick 1 Unix intro 2005 / Copyright Inge Frick 2 Datorerfarenhet Vad menar man med operativsystem Man kan nog dela upp er i fyra grupper avseende datorerfarenhet: Ingen eller mycket liten datorerfarenhet. En del av vad som sägs här är nog lite oklart, men det kommer att klarna på labbarna. Windows-användare. Detta är förmodligen den största gruppen. Macintosh-användare. Ni använder redan Unix, eventuellt utan att veta om det. Linux-användare. Det mesta som sägs här har ni sett, men en del synpunkter kan vara nya. Då man talar om ett operativsystem menar man vanligen två saker: Ett operativsystem i egentlig mening, en operativsystemkärna. I fortsättningen kallar jag detta operativsystem. En datormiljö bestående av en operativsystemkärna och ett (stort) antal program. I fortsättningen kallar jag detta datormiljö. Unix intro 2005 / Copyright Inge Frick 3 Unix intro 2005 / Copyright Inge Frick 4
Vad gör ett operativsystem? Bestämmer vilket program som skall köra på datorn vid varje tillfälle. De flesta datorer kan bara köra ett program i taget. För få det att se ut som flera program kör samtidigt växlar operativsystemet snabbt mellan ett antal program. Bestämmer vilka program som använder vilken del av datorns minne. Även här kan operativsystemet växla snabbt mellan datorns minne och hårddisken för att få det att se ut som om det finns mycket mer minne än det finns i verkligheten. Ger ett sätt att beskriva och lagra data i filer, organiserade i ett filsystem, huvudsakligen på datorns hårddiskar. Sköter in- och utmatning av data mellan datorn och yttre enheter som hårddisk, skärm, tangentbord, mus, diskettstation, cdläsare, nätverk etc. Vad mer kan operativsystem göra Diverse detaljer. Klockor, undvika kapplöpning mellan program, säkerhet mm. Vissa operativsystem (t.ex. Windows) inkluderar kommandohanteraren i operativsystemet. Vissa operativsystem (t.ex. Windows) inkluderar den grafiska miljön (fönster, menyer etc.) för program. Webbläsaren (t.ex. IE i Windows) kan vara nära integrerad med operativsystemet. Unix intro 2005 / Copyright Inge Frick 5 Unix intro 2005 / Copyright Inge Frick 6 Unix filosofi Unix är ett gammalt operativsystem, första versionen kom 1969. Unix var det första operativsystemet som skrevs i ett högnivåspråk, först B och sedan C (som utvecklades tillsammans med Unix). Resultatet är att Unix är (relativt) enkelt att flytta till nya datormodeller. Unix designades så flexibelt att Unix-miljön fortfarande är modern. Unix kan snabbt växla mellan många program som arbetar tillsammans. Detta har lett till en filosofi för programutveckling som fortfarande är giltig, inte bara i Unix utan i alla datormiljöer: Unix filosofi forts. Skriv program som gör en sak men gör det väl. För nya problem skriv nya program istället för att komplicera gamla program med ny egenskaper. Antag att utmatningen från varje program kommer att bli inmatning till ett, än så länge okänt program. Komplicera inte utmatningen med onödig information. Använd enkel text för in- och utmatning. Grafiska gränssnitt med knappar och menyer är trevliga men bör separeras från det egentliga programmet. Unix intro 2005 / Copyright Inge Frick 7 Unix intro 2005 / Copyright Inge Frick 8
Olika aspekter på Unix Vi skall diskutera olika aspekter på Unix-miljön: Filsystemet. Hur man kommer åt filer. Den grafiska miljön. Fönsterhanterare. Kommandohanteraren. Unix-kommandon. Unix intro 2005 / Copyright Inge Frick 9 Filsystem i Unix Filerna i Unix ligger i kataloger som är organiserade i en hierarki. Kataloger är också filer men med speciella egenskaper. Tillsammans bildar detta ett träd. Träd i datalogin är upp- och nervända. Ni kommer att se många träd i senare kurser. Katalogen / kallas rot-katalogen. Se exempel nästa bild. Observera att alla filer på alla hårddiskar, disketter, cdrom etc. finns i ett träd. Varje användare av Unix har en egen hemkatalog. Då man är inloggad i Unix finns alltid en aktuell katalog. Då man just loggat in är det den egna katalogen, men man ändrar sedan aktuell katalog med kommandot cd. Då jag är inloggad kan jag referera till filen unix.sxi (den här presentationen) på två sätt: En absolut adress: /home/teach/inge/kurser/intro/unix.sxi En relativ adress (relativt aktuell katalog): kurser/intro/unix.sxi Om jag med kommandot cd kurser/intro byter aktuell katalog kan jag referera till filen med unix.sxi Unix intro 2005 / Copyright Inge Frick 10 Filsystem i Unix exempel / usr lib home sbin cdrom bin teach d f ls man inge Era hemkataloger kurser Kommandon intro unix.sxi Unix intro 2005 / Copyright Inge Frick 11 Grafisk miljö i Unix Den grafiska miljön i Unix består av flera delar. Den grundläggande grafiska beskrivningen görs normalt av av programmet X11 (eller X- windows version 11). På detta byggs fönsterhanterare som hanterar fönster, menyer etc. Det finns ett stort antal fönsterhanterare att välja mellan, från stora skrivbords- (desktop) system till enkla fönsterhanterare som gör ett minimum. Skillnaden är vad som inkluderas i miljön och vad man måste göra själv. Skrivbordssystem: cde, jds (Suns version av Gnome) och kde. Enklare fönsterhanterare: fvwm, twm, tvtwm, scwm, olwm... Detta är endast några exempel, det finns flera andra. Experimentera gärna men jag rekommederar att ni börjar med cde som är lite gammal men säker eller jds som är ny men alla delar är inte klara. Unix intro 2005 / Copyright Inge Frick 12
Fönsterhanterare, cde Fönsterhanterare, jds Unix intro 2005 / Copyright Inge Frick 13 Unix intro 2005 / Copyright Inge Frick 14 Fönsterhanterare, kde Fönsterhanterare, fvwm Unix intro 2005 / Copyright Inge Frick 15 Unix intro 2005 / Copyright Inge Frick 16
Kommandohanterare i Unix Unix är så gammalt att den ursprungliga miljön endast bestod av en terminal betående av ett tangentbord och en skrivare. Nästa steg var att ersätta skrivaren med en skärm. Interaktion med Unix bestod av kommandon skrivna på tangentbordet och svar på skärmen. I moderna grafiska miljöer finns kommandohanteraren kvar men i stället för hela skärmen är det nu ett eller flera terminalfönster. Unix styrs fortfarande till stor del med kommandon i stället för menyer och knappar. Att sätta upp den miljö man vill ha görs till stor del med textfiler. I terminalfönster körs kommandohanterare. Eftersom det inte är en del av operativsystemet, kan man välja mellan flera kommandohanterare (kallas shell): sh, csh, tcsh, ksh, bash... Här skall vi inte diskutera skillnaderna utan använda tcsh (default på våra datorer). Det intressantaste alternativet är bash. Unix intro 2005 / Copyright Inge Frick 17 Kommandon versus menyer och knappar För och nackdelar med att styra med kommandon jämfört med grafiska gränssnitt (knappar, menyer etc.): Nackdelar: Svårare att komma ihåg kommandon, speciellt i Unix som har korta kommandon som går fort att skriva. Fördelar: Uttrycksfullare. Enklare att beskriva med ett kommando vad som skall göras både för en mäniska och (särskilt) för ett program. Det kan vara möjligt att göra saker som programtillverkarna inte tänkt på. Detta kan också vara en nackdel. Bästa lösningen är oftast att ha båda möjligheterna, så att man kan använda menyer för det man glömt eller inte lärt sig och kommandon för allt annat. Det går att använda Unix i helt grafiska miljöer. Den moderna Macintosh-miljön består av en Unix-kärna med Apples grafiska miljö ovanpå. Unix intro 2005 / Copyright Inge Frick 18 Vad är ett kommando? Ett kommando är en fil som innehåller ett exekverbart program. Denna fil måste ligga i en av de kataloger där shellet (kommandohanteraren) letar efter kommandon. För att veta vilka kataloger som genomsöks skriv: >echo $PATH /home/teach/inge/bin:/bin:/usr/bin:/usr/local/bin:/usr/x11/bin > Naturligtvis kan man påverka vilka kataloger som genomsöks genom att ändra på variabeln PATH. Jag har lagt till en katalog så att jag kan lägga till egna kommandon. I verkligen är min PATH betydligt längre då jag lagt till flera moduler. Se nästa föreläsning. Unix intro 2005 / Copyright Inge Frick 19 Kommando exempel, pipe >tr a b abcabc bbcbbc ^d >tr a b > fil.txt abcabc ^d >cat fil.txt bbcbbc >echo $PATH tr : \n /home/teach/inge/bin /bin /usr/bin /usr/local/bin /usr/x11/bin > Unix intro 2005 / Copyright Inge Frick 20