[Tillbaka till uppLYSningar som varit]

Unix

Föredraget var inte en genomgång av vilka kommandon som finns i Unix -- det kan man köpa en bok och läsa för att lära sig, menar Mattias. Istället var det en motivation till varför Unix är bra.

Varför

Unix är framförallt operativsystemet för de lite häftigare burkarna, kanske därför att de häftigste burkarna oftast levereras med Unix. "Vi använder Unix för vi tycker att det är det mest användarvänliga systemet", sa Mattias och hänvisade de som inte tycker likadant att ringa 12 90 40 och fråga efter Jörgen Stock. Numret visade sig gå till Apple Center.

Unix är det operativsystem man behöver ifall man vill konvertera 72 tiffbilder till gif-format. Med en Mac skulle det ta ett par, tre timmars arbete med musen. På en Unixmaskin skulle det ta en halvtimme varav de första 5 minuterna skulle gå åt till att instruera datorn hur den skulle göra och resten av tiden, medan datorn arbetar, skulle Mattias kunna ägna sig åt att dricka Cola.

Hur man använder Unix

Det finns två sätt att använda en Unixdator på:

Textfönster

När man startar ett textfönster på en Unixmaskin får man logga in eftersom Unix kan hantera flera användare samtidigt. Sedan får man fram en prompt som kan se ut såhär:

jolt wing$

(Den måste naturligtvis inte se ut just såhär. Allt kan konfigureras, eller som Mattias sade: "Jag får själv tala om vad jag vill veta.".) Där kan man t.ex. skriva ls för att få se vilka filer man har. Nu kan det vara många och de rullar fram i textfönstret och försvinner ovanför fönstrets övre kant. Nu kommer en finess; man kan ge utmatningen från ls till ett annat program, nämligen more:

ls | more

more är ett program som kan pausa utskriften genom att vänta tills man trycker på mellanslag innan texten rullar ut ovanför fönstret.

Ett annat användbart program är find. Ett exempel:

find / -name foo\* -print

letar upp alla filer som börjar på foo och skriver ut dem. Vill man t.ex. ta bort alla filer som börjar på foo kan man skriva

rm `find / -name foo\* -print`

Här betyder backquotarna (`) att allt som find-kommandot producerar ska skickas som argument till programmet rm, vilket tar bort alla filer som det får som argument.

På detta viset kan vi koppla ihop ut- och inmatning från olika program på godtyckligt komplicerade sätt och vis för att få datorn att göra som vi vill "i all evighet, tills vi tröttnar".

Hjälpsystemet

En annan finess med Unix är att dokumentationen finns tillgänglig elektroniskt m.h.a. kommandot man. Prova t.ex.

man find

Ifall man inte vet vad kommandot man vill ha hjälp om heter kan man söka. Här letar vi t.ex. efter olika saker som har med sökning att göra:

man -k search

Konverteringen igen

För att konvertera tiffbilder till gifbilder kan man göra såhär:

for c in *.tiff; do
  tifftopnm $c | ppmquant 256 | ppmtogif >$c.gif
done

Detta har följande betydelse:

Sådant gör Mattias ofta och därför är han glad att han kör på en Unixmaskin.

Skal

I andra operativsystem kan man på kommandorader som är sämre kan man råka ut för följande:

Man skriver in ett kommando och när man kommit halvvägs behöver man se vad någon viss fil heter. Då får man sudda ut det man skrivit och se vad filen heter, med t.ex. dir. Därefter kan man fortsätta och skriva in det man suddade ut förut.

Så fungerar det inte under Unix. I Unix kan man trycka på uppåtpil för att få tillbaka kommandon man skrivit tidigare. Man kan börja skriva ett filnamn och trycka på tabknappen så fyller datorn i filnamnet eller visar vilka möjliga filer som finns. Det finns även andra kraftfulla editeringsmöjligheter. Ifall man t.ex. ofta konverterar från tiff- till gif-format kan man ge ett alias (ett kortnamn) för harangen ovan (for ... done).

Man kan skapa batchfiler (även kallade script) som sedan kan fungera som vilket annat Unixprogram som helst. När man lär sig mer om Unix upptäcker man att mycket är sådana script. Ett sådant script börjar såhär:

#! /bin/sh

/bin/sh är ett skal som alltid finns på Unixdatorer. Det finns även andra skal som t.ex. bash, csh och tcsh. Ifall man skulle råka hamna i tcsh kan man helt enkelt starta bash ifrån tcsh som vilket annat program som helst, varefter "...världen ler och Colan är kall".

Nätverk

En mycket användbar egenskap hos Unix är att den är helt uppbyggd av nätverk. Flera datorer kan dela på samma filsystem. Det kan visserligen Macintoshar också, men skillnaden är att i Unix kan varje dator exportera filer och man behöver inte ha en dedicerad filserver.

Det går att logga in via nätverket. Då kan man använda en dator precis som om man sutte vid den trots att man kan vara långt borta. Är nätverket som datorn är kopplad till Internet finns det inga geografiska begränsningar på hur långt bort datorn som man loggar in på kan vara. Man kan t.ex. skriva såhär för att logga in på datorn it1-4:

rlogin it1-4.ida.liu.se

Det finns även möjlighet att bara utföra kommandon på en annan dator. Kommandot rsh används då. rcp finns för att kopiera filer till/från en dator som inte delar samma filsystem.

X-Windows

Fönstersystemet X-Windows kan utnyttja nätverk. Det kan skicka fönster, musrörelser och grafik över nätverket. På detta sättet kan man starta FrameMaker på IDA och visa fönstret på en annan dator som kanske inte har FrameMaker. Det kan gå till såhär:

export DISPLAY=jolt.infovav.se:0
imaker &

Man kan på det viset starta hela CAD-system från en dator på andra sidan jordklotet.

Frågor och svar

Q: Jag startade FrameMaker, men den klagade på att den inte kunde öppna NEWS. Vad är felet?
A: NEWS är en utökning till X-Windows, som tagits bort i senare versioner av X. Leta upp en nyare FrameMaker som inte behöver NEWS.

Q: Vad är skillnaden mellan bash och tcsh?
A: De har liknande finesser, men olika syntaxer för lite mer avancerade kommandon som for som vi såg förut, men de kan ungefär samma saker.

Kortfattat kan man säga såhär: Ur sh utvecklades

Dessutom finns ytterligare ett par skal: rc och es vilka inte grundar sig på samma idéer som sh och dess efterföljare.

(Här var det ett uppehåll i frågandet varvid Mattias yttrade: "Ja, då kanske jag skulle gå igenom mmap()...". Då kom det lyckligtvis några frågor)

Q: Vilka olika sorters Unix finns det?
A: Unix utvecklades först av AT&T. Ur denna utvecklades sedan

Så småningom har man enat sig om en slags industristandard som omfattar SunOS och System V.

På senare tid har det kommit olika fria Unixar som FreeBSD, NetBSD och Linux. I de två första fallen har man helt skrivit om de delar av koden som var AT&T:s och på så sätt fått en fri Unix. Linux är nyskrivet helt från grunden.

Q: Det finns två sätt att skriva en kärna på; en liten µkärna och en stor monolitisk. Skillnader?
A: I den rikti^H^H^H^H^Hmonolitiska modellen finns filsystem, nätverkskod m.m. i kärnan. Vill man lägga till t.ex. ett nytt filsystem måste man kompilera om kärnan. I µkärnan är filsystemn nätverkskod m.m. precis som program som körs.

Q: POSIX, vad är det?
A: Det är flera standarder för olika saker som program, systemanrop, skal och specificerar vilka olika argument m.m. som ska klaras av.


Nedtecknat av Tomas Abrahamsson <tab@lysator.liu.se>