cat * TKK/Tietojenk{sittelyopin lab. 3.76.127 Assembler Kalle Hukkinen 04.03.1982 Joitakin assembler-ohjelmointiin liittyvi{ vihjeit{: Viitteiden k{yt|st{ --[l{ k{yt{ viitteennimi{, jotka ovat samoja kuin esimerkiksi jotkin konek{skyt. --[l{ k{yt{ pitempi{ viitteit{, kuin mit{ assembler tunnistaa. --K{yt{ viitteiss{ vain kirjain- ja numeromerkkej{. Aloita viite kirjaimella. --K{yt{ viitteit{, jotka kuvaavat merkityst{{n, siis esim. 'addword' eik{ 'xxx'. Vakiot ja lausekkeet --K{yt{ vakioissa selkeint{ lukuj{rjestelm{{, esim. laskurit desimaalisina, maskit oktaalisina tai hexana, ASCII-merkit merkkivakioina jne. --Erota data ja osoitteet. --Pid{ lausekkeet mahdollisimman yksinkertaisina. Kommentoinnista --Kommentin tulisi kertoa miten joku k{sky vaikuttaa teht{v{n suoritukseen eik{ miten se vaikuttaa keskusyksik|n toimintaan, siis EI n{in: "add 1 to accumulator" tai "hyp{t{{n alkuun", vaan n{in: "line feed to tty" tai "joko l{mp|tila ylitti raja-arvon?". --Kommentin on oltava lyhyt ja selke{ --[l{ k{yt{ eriskummallisia lyhenteit{. --Kommentoi kaikki vakio- ja muuttujam{{rittelyt. --Kommentoi kunkin modulin tai aliohjelman toiminta, parametrinv{litys sek{ rekisterien k{ytt|. --Pid{ k{ytt{m{si terminologia yhten{isen{. Kommentoidessa ei tarvitse pel{t{ toistoa. .pl 66 .ll 70 .he 'TKK/Tietojenk{sittelyopin lab.''DOKUMENTOINTIOHJE' .fo ''-%-'' .m2 0 3.76.127 Assembler .br Kalle Hukkinen 20.01.1982 .m2 2 .in 18 .bl 4 .ti 0 Dokumentointiohjeet: .ti16 1.Ohjelmadokumentti on perusrakenteeltaan samanlainen kuin korkean tason kielill{ kirjoitettujen ohjelmien dokumentit. .ti16 2.Mit{{n erityist{ dokumentointilomakkeistoa ei tarvitse k{ytt{{. Suosittelen tutustumista UNIXin roff ja nroff tekstinmuokkausohjelmistoihin. Lyhyt kuvaus l|ytyy artikkelista 'UNIX For Beginners', ja enemm{n tietoja on manuaaleissa 'UNIX Programmer's Manual' sek{ 'NROFF User's Manual'. .ti16 3.Dokumentin tulee selke{sti kuvata ohjelman rakenne modulikuvauksin, sek{ eri aliohjelmien parametriv{litys. .ti16 4.Varatut muuttuja-alueet sek{ niiden k{ytt| on selostettava. .ti16 5.Ohjelmasta tulee olla algoritmikuvaus jollain korkean tason kielell{ (Pascal, Simula, Algol, mutta EI Fortran) tai pseudokielell{. Kuvausta ei tarvitse testata tai k{{nt{{. .ti16 6.Hyvin kommentoitu ohjelmalistaus liitet{{n dokumenttiin. Assembler-ohjelmoinnissa kommentointi on ehdottomuus. Kommentoinnin on oltava toimenpiteit{ selkiytt{v{{, ei siis pid{ kertoa, ett{ siirret{{n ykk|nen rekisteriin nolla, vaan miksi n{in tehd{{n! .ti16 7.K{ytt|ohjeet ja esimerkit UNIX V6 boottaus AMPEX levylt{ =----------------------------= Kaada kone HALLITUSTI, eli anna sync komento kun olet logannut sis{{n. Tai loggaa sis{{n projectille sync. HETI kun saat uudestaan promptin, ('#' tai '%') paina HALT nappula alas. (Valkoinen nappula prosessorissa) T{m{n j{lkeen pit{{ harrastaa hieman koneen ohjelmoimista keinukytkimilt{: Sy|tet{{n oktaalinen osoite (esim) 001000 antamalla se keinukytkimilt{ (Nappula 9 alhaalla, muut ylh{{ll{). Tee seuraavan ohjeen mukaan: (Kaikki esiintyv{t luvut ovat OKTAALILUKUJA !!!) 001000 LOAD ADDRS (Lataa osoitteen 001000) 012737 DEP (Painetaan KERRAN punaista DEP nappulaa) 000013 DEP 176306 DEP 000001 DEP 001000 LOAD ADDRS (Lataa uudestaan osoite 001000) HALT -> ENABLE (Painettaessa alhaalla olevaa HALT nappulaa se nousee yl|s ENABLE asentoon.) START (Paina ja p{{st{ irti, kone k{ynnistyy ja j{{ ikuiseen silmukkaan) ENABLE -> HALT (Pys{ytt{{ koneen) 000000 LOAD ADDRS (Lataa osoitteen 000000) HALT -> ENABLE (HALT nappula ENABLE asentoon) START (K{ynnist{{ koneen) Konsolina olevalle p{{tteelle ilmestyy ( -tynee?) '@', johon kirjoitetaan unix ja RETURN (ilman v{lily|ntej{!) T{m{n j{lkeen kone k{ynnistynee normaalisti, ja kysyy p{iv{m{{r{n/kellonajan, jonka j{lkeen se hoitaa itse loput. Jos esiintyy ongelmia (esim. root device corrupted), ota yhteytt{ Jukiin. Jukka Virtanen, TeKoLa, 451-2624, U249 Puhelin Kotiin 522558 Levynpaikkailuesimerkki Kalle Hukkinen 10.03.1982 # dcheck /dev/rrk0 /dev/rrk0: entries link cnt 561 1 0 565 1 0 584 1 0 # icheck /dev/rrk0 /dev/rrk0: 3096 dup; inode=0, class=free 3102 dup; inode=0, class=free 1266 dup; inode=0, class=free 3 dups in free spcl 31 files 423 large 127 direc 35 indir 127 used 3701 free 215 # ncheck -i 561 565 584 /dev/rrk0 /dev/rrk0: 584 /tmp/atm1a 565 /tmp/atm2a 561 /tmp/atm3a # rm /tmp/atm* /tmp/atm1a (0 mode)?y /tmp/atm2a (0 mode)?y /tmp/atm3a (0 mode)?y /tmp/e00117 (600 mode)? /tmp/e00235 (600 mode)? # icheck -s /dev/rrk0 /dev/rrk0: # # # dcheck /dev/rrk1 /dev/rrk1: # # icheck /dev/rrk1 /dev/rrk1: missing 4 spcl 0 files 631 large 128 direc 144 indir 128 used 3813 free 968 # icheck -s /dev/rrk1 /dev/rrk1: # / T{m{ pieni esimerkkiohjelma k{{nt{{ p{{ttelt{ annetun / tekstirivin merkit k{{nteiseen j{rjestykseen / Kalle Hukkinen 26.11.1981 buflen = 80. /puskurin pituus m{{ritell{{n vakioksi cr = 15 /carriage return lf = 12 /line feed .text main: mov $1,r0 /r0 sis{lt{{ nyt tiedostonumeron write-kutsua sys write;info;infolen / varten (tty kuvaputki = 1) clr r0 /r0 sis{lt{{ systeemikutsua read varten sys read;iobuf;buflen / tiedostonumeron (tty n{pp{imist| = 0) bcs ex /read-virhetilanteessa carry asettuu mov r0,r2 /read palauttaa r0:ssa luettujen merk. m{{r{n beq ex /jos se oli 0, poistutaan mov $iobuf,r1 /puskurin alkuosoite rekisteriin r1 1: movb (r1)+,-(sp) /siirret{{n merkit puskurista pinoon dec r0 /merkkien m{{r{n laskuri bne 1b /joko siirrettiin kaikki ?? mov $iobuf,r1 /puskurin alkuosoite mov r2,r0 /merkkien m{{r{ oli muistissa r2:ssa 2: movb (sp)+,(r1)+ /siirret{{n merkit nyt k{{nteisess{ dec r0 / j{rjestyksess{ pinosta puskuriin bne 2b /joko siirrettiin ? movb $cr,(r1)+ /pannaan puskuriin viel{ return movb $lf,(r1)+ / ja linefeed clrb (r1)+ / sek{ loppuun nul mov $1,r0 /r0:ssa tiedostonumero (tty kuvaputki = 1) sys write;iobuf;buflen /puskurin tulostus ex: sys exit .data info: infolen =.-info .bss iobuf: .=.+buflen /puskurin koko on buflen merkki{ TKK/TeKoLa UNIX-k{ytt|j{rjestelm{ Kalle Hukkinen 17.11.1981 Floating-point lukujen laskutoimitukset SM-4:n UNIX-assemblerilla Floating-point lukujen formaatti on sama kuin PDP-11 formaatti, joka ei kuitenkaan ole yksityiskohdiltaan aivan sama kuin IEEE:n standardi minitietokoneiden floating-point esitysmuodosta. PDP-11 koneessa flo- tari on kaksi sanaa (32 bitti{). Ylin bitti on merkkibitti, kahdeksan seuraavaa ovat eksponentti excess-128 muodossa, ja mantissa on normalisoitu (ylin bitti on aina 1 ja siten n{kym{t|n) siten, ett{ bin{{ripiste on koko mantissan edess{, siis n{kym{tt|m{n bitin edess{! (0.5 <= mantissa < 1.0) K{ytett{viss{ ovat kaikki nelj{ peruslaskutoimitus- ta. UNIX-assembler ei kuitenkaan tunne n{it{ nimenomaisia flotarik{skyj{, vaan generoi koodia ns. PDP-11 floating-point- prosessoria varten, jota taas ei SM-4 laitteistossa ole. Niinp{ k{skyt joudutaan kirjoittamaan oktaalisessa muodossa assemblerkoodin sekaan: 07500r / fadd r 07501r / fsub r 07502r / fmul r 07503r / fdiv r joissa r on siis jokin osoitinrekisteri, jonka osoittamassa muistipaikassa operandit ovat: (r) high source (eniten merk. osa) (r)+2 low source (r)+4 high destination (r)+6 low destination Vastaus tulee dest. operandiin (r)+4 ja (r)+6 , joka siis tuhoutuu. Esim. .text mov $oprnds,r1 075021 /fmul r1 sys exit .data oprnds:047700 000000 047640 000000 T{m{ pieni ohjelmaesimerkki kertoo kesken{{n flotar- it 047700000000 ja 047640000000, ja vastaus tulee j{lkimm{isen p{{lle muistipaikkaan oprnds+4, johon my|s r1 laskutoimituksen j{lkeen osoittaa. -1- .pl 66 .ll 70 .he 'TKK/TeKoLa''UNIX-k{ytt|j{rjestelm{' .fo ''-%-'' .m2 0 Kalle Hukkinen 17.11.1981 .br .m2 2 .in 18 .bl 4 .ti 0 Floating-point lukujen laskutoimitukset SM-4:n UNIX-assemblerilla Floating-point lukujen formaatti on sama kuin PDP-11 formaatti, joka ei kuitenkaan ole yksityiskohdiltaan aivan sama kuin IEEE:n standardi minitietokoneiden floating-point esitysmuodosta. PDP-11 koneessa flotari on kaksi sanaa (32 bitti{). Ylin bitti on merkkibitti, kahdeksan seuraavaa ovat eksponentti excess-128 muodossa, ja mantissa on normalisoitu (ylin bitti on aina 1 ja siten n{kym{t|n) siten, ett{ bin{{ripiste on koko mantissan edess{, siis n{kym{tt|m{n bitin edess{! .br (0.5 <= mantissa < 1.0) K{ytett{viss{ ovat kaikki nelj{ peruslaskutoimitusta. UNIX-assembler ei kuitenkaan tunne n{it{ nimenomaisia flotarik{skyj{, vaan generoi koodia ns. PDP-11 floating-point- prosessoria varten, jota taas ei SM-4 laitteistossa ole. Niinp{ k{skyt joudutaan kirjoittamaan oktaalisessa muodossa assemblerkoodin sekaan: 07500r / fadd r 07501r / fsub r 07502r / fmul r 07503r / fdiv r .br joissa r on siis jokin osoitinrekisteri, jonka osoittamassa muistipaikassa operandit ovat: (r) high source (eniten merk. osa) (r)+2 low source (r)+4 high destination (r)+6 low destination .br Vastaus tulee dest. operandiin (r)+4 ja (r)+6 , joka siis tuhoutuu. Esim. .text mov $oprnds,r1 075021 /fmul r1 sys exit .data oprnds:047700 000000 047640 000000 T{m{ pieni ohjelmaesimerkki kertoo kesken{{n flotarit 047700000000 ja 047640000000, ja vastaus tulee j{lkimm{isen p{{lle muistipaikkaan oprnds+4, johon my|s r1 laskutoimituksen j{lkeen osoittaa. .pl 66 .ll 70 .he 'TKK/TeKoLa''UNIX-k{ytt|j{rjestelm{' .fo ''-%-'' .m2 0 Kalle Hukkinen 18.12.1981 .br .m2 2 .in 18 .bl 4 .ti 0 OTSIKKO .ti 0 Johdanto SM4 - UNIX Helppi (14.01-83 Juki) Olet Tkk/LK UNIX V6 :ssa. K{yt|ss{si on csh niminen ohjelmoitava komentotulkki. Koneesta p{{set ulos kirjoittamalla logout tai painamalla CONTROL-D :t{. (Muista, ett{ UNIX:issa isot ja pienet kirjaimet ovat eri asioita !!!) Yleisi{ komentoja: man komento l -l listaa hakemiston tiedostojen nimet pwd present working directory (nykyinen ty|hakemisto) who ketk{ muut seikkailevat koneessa ps omat ajossa olevat ohjelmat (ja PID niille) kill PID murhaa ohjelman (PID:in saa esim ps komennolla) painamalla break nappulaa, siirrat nykyisen ohjelmasi n{enn{isesti taustalle. (SILTI katkeaa RUBOUT:illa !!!) Uusi siirtyy takaisin ohjelman prosessiin. ^D Logout ed file editoi tiedostoa file cd dir vaihda hakemistoa cd .. siirry hakemistopuussa ylosp{in SM4 - UNIX Helppi (14.01-83 Juki) Olet Tkk/LK UNIX:issa. Jos haluat p{{st{ ulos, paina CONTROL-D :t{. (Muista, ett{ UNIX:issa isot ja pienet kirjaimet ovat eri asioita !!!) Yleisi{ komentoja: l -l listaa hakemiston tiedostojen nimet pwd present working directory (nykyinen ty|hakemisto) who ketk{ muut seikkailevat koneessa ps omat ajossa olevat ohjelmat (ja PID niille) kill PID murhaa ohjelman (PID:in saa esim ps komennolla) painamalla break nappulaa, siirrat nykyisen ohjelmasi n{enn{isesti taustalle. (SILTI katkeaa RUBOUT:illa !!!) Uusi siirtyy takaisin ohjelman prosessiin. ^D Logout ed file editoi tiedostoa file cd dir vaihda hakemistoa cd .. siirry hakemistopuussa ylosp{in TKK/TeKoLa UNIX-k{ytt|j{rjestelm{ Kalle Hukkinen 18.12.1981 UNIXIN K[YT\N ALKEET Johdanto T{m{n paperin tarkoitus on olla ensimm{inen johdatus TKK/TeKoLan SM-4 -tietokoneessa k{ytett{v{n UNIX- k{ytt|j{restelm{n ominaisuuksiin. T{ss{ esitet{{n erityisesti paikallisen TKK UNIXin erityispiirteit{ sek{ k{ytt|{ korkeakoulun datavaihteen kautta. T{ydent{vi{ esityksi{ ovat Bell Laboratorion toimit- tamat artikkelit 'UNIX for Beginners', joka on pal- jolti t{m{n esityksen l{hde ja siis p{{llekk{inen, sek{ 'A Tutorial Introduction to the UNIX Text Edi- tor' ja 'Programming in C - A Tutorial'. Login Datavaihde tunnistaa ison N-kirjaimen UNIX-kutsuksi ja kytkee yhden SM-4 tietokoneeseen menevist{ kahdeksasta datavaihdelinjasta p{{tteeseen. UNIX vastaa kirjoittamalla: login: johon vastataan omalla k{ytt{j{tunnuksella. Jos k{ytt{j{ on m{{ritellyt itselleen salasanan (mik{ on toivottavaa), kysyy UNIX sen kirjoittamalla: password: Jos salasana oli oikea, tulostaa UNIX jonkin sys- teemitiedoituksen sek{ promptaa prosenttimerkill{ % tiedoksi siit{, ett{ j{rjestelm{ on valmis vas- taanottamaan komentoja. Salasana Salasanan voi itselleen m{{ritell{ komennolla: % passwd k{ytt{j{tunnus salasana Samalla komennolla sit{ voi my|s muuttaa. -1- TKK/TeKoLa UNIX-k{ytt|j{rjestelm{ Logout P{{teistunnon lopetus tapahtuu yksinkertaisesti Ctrl-D merkill{, jolloin systeemi kirjoittaa: logged out P{{tenopeus Jos p{{tteess{ on nopeus 2400, voidaan loggattaessa sis{{n muuttaa k{tev{sti nopeutta. Kun shift-N:n j{lkeen tulostuu 'login:', vaihdetaan heti p{{tteen nopeus 2400:an ja sen j{lkeen painetaan BREAK- n{pp{int{. T{ll|in 'login:' tulostuu uudelleen ja voidaan kirjoittaa k{ytt{j{tunnus. Muuksi nopeudek- si vaihtaminen k{y stty-komennolla. Erikoismerkit UNIX k{ytt{{ hieman erikoisia merkkej{ sy|tteen kor- jailumerkkein{. Edellisen kirjoitetun merkin pyyhkii 'risuaita' # ja koko kirjoitetun rivin tuhoaa 'miumau' @. Jos n{it{ merkkej{ haluaa kir- joittaa tekstin sekaan (esim. editorilla), on niit{ edelt{v{n merkin oltava 'backslash' \, siis \# tai \@. Suoritettavan ohjelman keskeytt{{ RUB eli DEL n{pp{in, siis ei Break. BREAK:n painaminen ohjelman suorituksen aikana aiheuttaa sen, ett{ suoritus jat- kuu tausta-ajona ja itse p{{st{{n UNIXin komento- tasolle. K{yt|ss{ olevassa TKK-UNIXissa ovat k{ytett{viss{ my|s DECist{ tutut Ctrl-S ja Ctrl-Q tulostuksen tilap{ist{ pys{ytyst{ varten, sek{ Ctrl-R kir- joitetun (ja mahdollisesti korjaillun) komentorivin uudelleentulostusta varten. Edellisen komennon voi toista kirjoittamalla 'miinus'-merkin: - Komento Komennot UNIXille annetaan promptin % per{{n ja p{{tet{{n RETURN tai LINEFEED n{pp{imell{. UNIXille voidaan kirjoittaa seuraavia komentoja my|s edel- lisen komennon suorituksen aikana (kuten DECille), mutta ero DECiin verrattuna on se, ett{ UNIX kaiut- taa kirjaimet v{litt|m{sti. UNIX-komennon tulkitsee ohjelma nimelt{ shell, ja siirt{{ suorituksen komen- non toteuttavalle ohjelmalle. UNIXin k{ytt|j{rjestelm{komennot ovat siis tavallisia suor- itettavia ohjelmia. -2- TKK/TeKoLa UNIX-k{ytt|j{rjestelm{ Tiedostoj{rjestelm{ UNIXin tiedostoj{rjestelm{ on puhtaan hierarkinen. Sen juuri on hakemisto nimelt{ root, joka jakautuu tiedostoiksi ja hakemistoiksi. Kukin hakemisto voi edelleen sis{lt{{ tiedostoja ja alihakemistoja, jne. Ainoa ero tiedostojen ja hakemistojen v{lill{ on se, ett{ hakemistoa voi muuttaa vain systeemi. Tiedos- toilla ei ole mit{{n typpi{ tai sis{ist{ rakennetta, ne ovat yksinkertaisesti tavujonoja. Kaikkia tiedostoja, ohjelmia ja I/O-laitteita k{sitell{{n homogeenisesti, siis laitteelle tulostetaan kuten tiedostoon. Omassa hakemistossa (tarkemmin siin{ hakemistossa, jossa parhaillaan ty|skentelee) voi tiedostoon vii- tata suoraan tiedostonimell{. T{ydellisen tiedos- tonimen muodostaa kuitenkin tiedostopolku l{htien juuresta. Juureen (root) voi viitata symbolilla / , ja siit{ edelleen esim. k{ytt{j{ virtasen tiedostoon zap voi viitata polulla /usr/virtanen/zap. zap kuuluu siis hakemistoon /usr/virtanen, joka puoles- taan on hakemiston /usr alihakemisto. /usr on suoraan juurihakemiston / (=root) alihakemisto. Jos k{ytt{j{ virtasella on alihakemisto, jonka t{ydellinen (polku)nimi on /usr/virtanen/subdir, ja siell{ tiedosto data, voi h{n ty|skennelless{{n hak- emistossa /usr/virtanen viitata kyseiseen tiedostoon nimell{ subdir/data. Puuhierarkiassa alasp{in viitattaessa ei siis tarvitse k{ytt{{ koko polun- nime{ (mutta nime{ ei my|sk{{n t{ll|in pid{ aloittaa juuren symbolilla / ) Shell Shell on UNIXin komentotulkki. Se on itsen{inen ohjelma (ei siis osa k{ytt|j{rjestelm{{), joka tulk- itsee k{ytt|j{rjestelm{lle annetut komennot ja luo niiden mukaan komennon suorittavat prosessit. Jos halutaan suorittaa komento tai ohjelma taustaproses- sina siten, ett{ ei odoteta ohjelman suorituksen p{{ttymist{ ennenkuin palataan shellin komento- tasolle, voidaan komento p{{tt{{ merkkiin &. T{ll|in voidaan v{litt|m{sti jatkaa p{{tety|skentely{. Jos taustalla ajettavassa ohjelmassa on tulostuksia, ne ohjautuvat kuitenkin normaalisti p{{tteelle. Shelliss{ on mahdollisuus muuttaa ohjelman sy|t|n ja tulostuksen oletustiedostoa (=p{{te). Se k{y operaattoreilla < ja >, joista < tiedoston nimen edess{ aiheuttaa sy|t|n kyseisest{ tiedostosta ja > tulostuksen tiedostoon. Esimerkiksi kun komento: cat file -3- TKK/TeKoLa UNIX-k{ytt|j{rjestelm{ aiheuttaa tiedoston file tulostuksen p{{tteelle, niin komento: cat file1 >file2 aiheuttaa tiedoston file1 tulostuksen tiedostoon file2. Lis{ksi voidaan tiedoston loppuun liitt{{ tulostusta operaattorilla >>, t{ll|in siis tiedos- tossa aiemmin ollut tieto ei tuhoudu. Shellin er{s erikoisuus ovat ns. putket, joita merkit{{n operaattorilla | (pystyviiva). Putki poistaa usein v{liaikaistiedostojen tarpeen. Esimerkki: ls tulostaa hakemistolistauksen, wc laskee tiedostossa olevien rivien ja sanojen m{{r{n, rm tuhoaa tiedoston, ja haluamme tiet{{ tiedostojen m{{r{n hakemistollamme. Voisimme tehd{ n{in: ls >temp wc temp rm temp mutta kauniimmin asia hoidetaan n{in: ls | wc jolloin ls:n tulostus on wc:n sy|te, eik{ tarvittu v{liaikaistiedostoa temp. Useille shellin komennoille voi antaa argumentteja, jotka tarkemmin m{{rittelev{t suoritettavaa komen- toa. Ne ovat yksikirjaimisia ja niit{ edelt{{ 'miinus' - . Esim.: ls -lat tulostaa t{ydellisemm{n hakemistolistauksen aikaj{rjestyksess{ (l = long, a = all, t = time) -4- TKK/TeKoLa UNIX-k{ytt|j{rjestelm{ KOMENTOJA Seuraavassa er{it{ useimmin tarvittavia komentoja. Kaikista komennoista on t{ydellisempi kuvaus jul- kaisussa 'UNIX Programmer's Manual'. as (-) (-o objectfile) name ... Assembler-k{{nt{j{, josta l|ytyy tarkka kuvaus artikkelissa 'UNIX Assembler Reference Manual'. cat file ... Tulostaa mainitut tiedostot per{kk{in (katenoi). cc (-c) (-p) (-f) (-O) (-S) (-P) file ... C-kielen k{{nt{j{, josta on olemassa mm. artikkelit 'Programming in C - A Tutorial' sek{ 'C Reference Manual'. chdir directory (TKK-UNIXissa my|s: cd) Siirryt{{n toiseen hakemistoon. chmod octal file ... Muuttaa tiedoston suojauslukua. (esim. -rw-rw-rw- annetaan oktaalisena 666 -rwxr-xr-x annetaan oktaalisena 755) cp (-iIvVupn) file1 file2 cp (-riIvVupn) file ... (directory) Kopioi tiedoston file1 sis{ll|n tiedostoon file2, tai tiedoston file sis{ll|n tiedostoon directory/file. date Tulostaa p{iv{yksen ja kellonajan. db 'Debuggeri' assemblerohjelmien virheenselvityst{ varten. diff (-) name1 name2 Vertaa kahta tiedostoa ja tulostaa rivit, joissa on eroja. du (-s) (-a) (name ...) Tulostaa hakemiston k{ytt{m{n levytilan lohkoissa (=512 tavua). ed (name) Tekstintoimitin, 'editori', josta on kuvaus mm. artikkelissa 'A Tutorial Introduction to the UNIX Text Editor'. -5- TKK/TeKoLa UNIX-k{ytt|j{rjestelm{ kill processid ... Tuhoaa prosessin, joka on esim. taustaprosessina j{{nyt ikuiseen silmukkaan. Tarvittavan proses- sinumeron saa selville ps-komennolla. Tavallisen (= ei tausta-) prosessin saa helpoimmin pys{ytetty{ n{pp{imell{ RUB eli DEL. ld (-sulr) (-o outfile) name ... Lataaja, jolla useita k{{nnettyj{ objektitiedostoja voidaan linkitt{{ ja ladata ajokelpoiseksi tiedos- toksi. login (username) login-komennolla voidaan suoraan vaihtaa k{ytt{j{tunnusta ('logaamatta' v{lill{ ulos Ctrl- D:ll{). ls (-ltasdruifgzL) name ... (TKK-UNIXissa my|s: l) Tulostaa hakemistolistauksen. mail (-y) (-n) (person ...) Lukee tai l{hett{{ postia muille k{ytt{jille. mesg (n) (y) Kielt{{ tai sallii toisille k{ytt{jille puheyhtey- den write-komennolla. mkdir dirname ... Luo uuden alihakemiston. mv (-iIvVupn) file1 file2 mv (-riIvVupn) file ... (directory) Antaa tiedostolle file1 uuden nimen file2, tai tiedostolle file nimen directory/file. nroff file ... Tekstinmuotoiluohjelma, josta on lis{tietoa ar- tikkelissa 'NROFF User's Manual'. Kts. my|s roff. opr file & Rivikirjoitintulostus DECsystem-20:n rivikirjoit- timelle (Tulostuksen k{ytt{j{tunnus on TKO.UNIX). passwd name password Asettaa ja muuttaa salasanaksi k{ytt{j{lle name sanan password. pr (-h header) name ... Tulostaa tiedoston siten, ett{ jokaisen sivun alus- sa on p{iv{ys ja tiedostonimi sek{ mahdollinen ot- sikko header. ps (alxk) (namelist) Tulostaa tietoa k{ynniss{ olevista prosesseista. -6- TKK/TeKoLa UNIX-k{ytt|j{rjestelm{ pwd Kertoo hakemistonimen, jossa parhaillaan ty|skennell{{n. rm (-iIvVfdr) name ... Tuhoaa (lopullisesti) tiedostoja. rmdir directory ... Tuhoaa hakemistoja, joiden tulee olla tyhji{. roff file ... Tekstinmuotoiluohjelma, joka on kehittym{tt|m{mpi kuin nroff, mutta my|s helpompi k{ytt{{. sh (-t) (-c) (name (arg1 ...(arg9))) Komentotulkki shell, joka on my|s ohjelmoitavissa (if, goto, echo, exit, shift, sleep). size (object ...) Tulostaa objekti-tyyppisen tiedoston text-, data- ja bss-sektioiden koot tavuissa. sleep time Suoritus odottaa time sekuntia (Esim. (sleep 120; ld file1 file2)& ). stty (option ...) Tulostaa tai asettaa p{{tteen moodin. tty Tulostaa k{ytt{j{n p{{telinjan numeron wc (name ...) Laskee tiedostossa olevien rivien ja sanojen lukum{{r{n. view (-oa) (-screenlength) (-wscreenwidth) (file ...) N{ytt|p{{tetulostus kuvaruudullinen kerrallaan. Tulostus jatkuu RETURN-n{pp{imell{. who (am i) Kertoo UNIXin t{m{nhetkiset k{ytt{j{t write user (ttyno) Muodostaa yksisuuntaisen puheyhteyden k{ytt{j{{n user. Jotta yhteys olisi kaksisuuntainen, tulee my|s vastaanottajan antaa write-komento. -7- .pi /usr/bin/col .TM 1982-9x9 99999 99999-11 .TL TKK/TeKoLa - UNIX-k{ytt|j{rjestelm{ .AU Kalle Hukkinen .AI Helsingin teknillinen korkeakoulu .OK K{ytt|j{rjestelm{t UNIX .AB T{m{ paperi on UNIX-k{ytt|j{rjestelm{n esittely aloitteleville j{rjestelm{{n tutustujille. .AE .CS 10 2 12 5 6 7 .2C .PP UNIXIN K[YT\\N ALKEET Johdanto T{m{n paperin tarkoitus on olla ensimm{inen johdatus TKK/TeKoLan SM-4 -tietokoneessa k{ytett{v{n UNIX-k{ytt|j{restelm{n ominaisuuksiin. T{ss{ esitet{{n erityisesti paikallisen TKK UNIXin erityispiirteit{ sek{ k{ytt|{ korkeakoulun datavaihteen kautta. T{ydent{vi{ esityksi{ ovat Bell Laboratorion toimittamat artikkelit 'UNIX for Beginners', joka on paljolti t{m{n esityksen l{hde ja siis p{{llekk{inen, sek{ 'A Tutorial Introduction to the UNIX Text Editor' ja 'Programming in C - A Tutorial'. .PP Login Datavaihde tunnistaa ison N-kirjaimen UNIX-kutsuksi ja kytkee yhden SM-4 tietokoneeseen menevist{ kahdeksasta datavaihdelinjasta p{{tteeseen. UNIX vastaa kirjoittamalla: .nf login: .fi johon vastataan omalla k{ytt{j{tunnuksella. Jos k{ytt{j{ on m{{ritellyt itselleen salasanan (mik{ on toivottavaa), kysyy UNIX sen kirjoittamalla: .nf password: .fi Jos salasana oli oikea, tulostaa UNIX jonkin systeemitiedoituksen sek{ promptaa prosenttimerkill{ % tiedoksi siit{, ett{ j{rjestelm{ on valmis vastaanottamaan komentoja. .PP Salasana Salasanan voi itselleen m{{ritell{ komennolla: % passwd k{ytt{j{tunnus salasana Samalla komennolla sit{ voi my|s muuttaa. .pa .PP Logout P{{teistunnon lopetus tapahtuu yksinkertaisesti Ctrl-D merkill{, jolloin systeemi kirjoittaa: logged out .PP P{{tenopeus Jos p{{tteess{ on nopeus 2400, voidaan loggattaessa sis{{n muuttaa k{tev{sti nopeutta. Kun shift-N:n j{lkeen tulostuu 'login:', vaihdetaan heti p{{tteen nopeus 2400:an ja sen j{lkeen painetaan BREAK-n{pp{int{. T{ll|in 'login:' tulostuu uudelleen ja voidaan kirjoittaa k{ytt{j{tunnus. Muuksi nopeudeksi vaihtaminen k{y stty-komennolla. .PP Erikoismerkit UNIX k{ytt{{ hieman erikoisia merkkej{ sy|tteen korjailumerkkein{. Edellisen kirjoitetun merkin pyyhkii 'risuaita' \# ja koko kirjoitetun rivin tuhoaa 'miumau' @. Jos n{it{ merkkej{ haluaa kirjoittaa tekstin sekaan (esim. editorilla), on niit{ edelt{v{n merkin oltava 'backslash' \\, siis \\# tai \\@. Suoritettavan ohjelman keskeytt{{ RUB eli DEL n{pp{in, siis ei Break. BREAK:n painaminen ohjelman suorituksen aikana aiheuttaa sen, ett{ suoritus jatkuu tausta-ajona ja itse p{{st{{n UNIXin komentotasolle. K{yt|ss{ olevassa TKK-UNIXissa ovat k{ytett{viss{ my|s DECist{ tutut Ctrl-S ja Ctrl-Q tulostuksen tilap{ist{ pys{ytyst{ varten, sek{ Ctrl-R kirjoitetun (ja mahdollisesti korjaillun) komentorivin uudelleentulostusta varten. Edellisen komennon voi toista kirjoittamalla \&'miinus'-merkin: - .PP Komento Komennot UNIXille annetaan promptin % per{{n ja p{{tet{{n RETURN tai LINEFEED n{pp{imell{. UNIXille voidaan kirjoittaa seuraavia komentoja my|s edellisen komennon suorituksen aikana (kuten DECille), mutta ero DECiin verrattuna on se, ett{ UNIX kaiuttaa kirjaimet v{litt|m{sti. UNIX-komennon tulkitsee ohjelma nimelt{ shell, ja siirt{{ suorituksen komennon toteuttavalle ohjelmalle. UNIXin k{ytt|j{rjestelm{komennot ovat siis tavallisia suoritettavia ohjelmia. .PP Tiedostoj{rjestelm{ UNIXin tiedostoj{rjestelm{ on puhtaan hierarkinen. Sen juuri on hakemisto nimelt{ root, joka jakautuu tiedostoiksi ja hakemistoiksi. Kukin hakemisto voi edelleen sis{lt{{ tiedostoja ja alihakemistoja, jne. Ainoa ero tiedostojen ja hakemistojen v{lill{ on se, ett{ hakemistoa voi muuttaa vain systeemi. Tiedostoilla ei ole mit{{n typpi{ tai sis{ist{ rakennetta, ne ovat yksinkertaisesti tavujonoja. Kaikkia tiedostoja, ohjelmia ja I/O-laitteita k{sitell{{n homogeenisesti, siis laitteelle tulostetaan kuten tiedostoon. Omassa hakemistossa (tarkemmin siin{ hakemistossa, jossa parhaillaan ty|skentelee) voi tiedostoon viitata suoraan tiedostonimell{. T{ydellisen tiedostonimen muodostaa kuitenkin tiedostopolku l{htien juuresta. Juureen (root) voi viitata symbolilla / , ja siit{ edelleen esim. k{ytt{j{ virtasen tiedostoon zap voi viitata polulla /usr/virtanen/zap. zap kuuluu siis hakemistoon /usr/virtanen, joka puolestaan on hakemiston /usr alihakemisto. /usr on suoraan juurihakemiston / (=root) alihakemisto. Jos k{ytt{j{ virtasella on alihakemisto, jonka t{ydellinen (polku)nimi on /usr/virtanen/subdir, ja siell{ tiedosto data, voi h{n ty|skennelless{{n hakemistossa /usr/virtanen viitata kyseiseen tiedostoon nimell{ subdir/data. Puuhierarkiassa alasp{in viitattaessa ei siis tarvitse k{ytt{{ koko polunnime{ (mutta nime{ ei my|sk{{n t{ll|in pid{ aloittaa juuren symbolilla / ) .PP Shell Shell on UNIXin komentotulkki. Se on itsen{inen ohjelma (ei siis osa k{ytt|j{rjestelm{{), joka tulkitsee k{ytt|j{rjestelm{lle annetut komennot ja luo niiden mukaan komennon suorittavat prosessit. Jos halutaan suorittaa komento tai ohjelma taustaprosessina siten, ett{ ei odoteta ohjelman suorituksen p{{ttymist{ ennenkuin palataan shellin komentotasolle, voidaan komento p{{tt{{ merkkiin &. T{ll|in voidaan v{litt|m{sti jatkaa p{{tety|skentely{. Jos taustalla ajettavassa ohjelmassa on tulostuksia, ne ohjautuvat kuitenkin normaalisti p{{tteelle. Shelliss{ on mahdollisuus muuttaa ohjelman sy|t|n ja tulostuksen oletustiedostoa (=p{{te). Se k{y operaattoreilla < ja >, joista < tiedoston nimen edess{ aiheuttaa sy|t|n kyseisest{ tiedostosta ja > tulostuksen tiedostoon. Esimerkiksi kun komento: .nf cat file .fi aiheuttaa tiedoston file tulostuksen p{{tteelle, niin komento: .nf cat file1 >file2 .fi aiheuttaa tiedoston file1 tulostuksen tiedostoon file2. Lis{ksi voidaan tiedoston loppuun liitt{{ tulostusta operaattorilla >>, t{ll|in siis tiedostossa aiemmin ollut tieto ei tuhoudu. Shellin er{s erikoisuus ovat ns. putket, joita merkit{{n operaattorilla | (pystyviiva). Putki poistaa usein v{liaikaistiedostojen tarpeen. Esimerkki: ls tulostaa hakemistolistauksen, wc laskee tiedostossa olevien rivien ja sanojen m{{r{n, rm tuhoaa tiedoston, ja haluamme tiet{{ tiedostojen m{{r{n hakemistollamme. Voisimme tehd{ n{in: .nf ls >temp wc temp rm temp .fi mutta kauniimmin asia hoidetaan n{in: .nf ls | wc .fi jolloin ls:n tulostus on wc:n sy|te, eik{ tarvittu v{liaikaistiedostoa temp. Useille shellin komennoille voi antaa argumentteja, jotka tarkemmin m{{rittelev{t suoritettavaa komentoa. Ne ovat yksikirjaimisia ja niit{ edelt{{ 'miinus' - . Esim.: .nf ls -lat .fi tulostaa t{ydellisemm{n hakemistolistauksen aikaj{rjestyksess{ (l = long, a = all, t = time) .PP KOMENTOJA Seuraavassa er{it{ useimmin tarvittavia komentoja. Kaikista komennoista on t{ydellisempi kuvaus julkaisussa \&'UNIX Programmer's Manual'. .PP as (-) (-o objectfile) name ... Assembler-k{{nt{j{, josta l|ytyy tarkka kuvaus artikkelissa \&'UNIX Assembler Reference Manual'. .PP cat file ... Tulostaa mainitut tiedostot per{kk{in (katenoi). .PP cc (-c) (-p) (-f) (-O) (-S) (-P) file ... C-kielen k{{nt{j{, josta on olemassa mm. artikkelit \&'Programming in C - A Tutorial' sek{ 'C Reference Manual'. .PP chdir directory (TKK-UNIXissa my|s: cd) Siirryt{{n toiseen hakemistoon. .PP chmod octal file ... Muuttaa tiedoston suojauslukua. (esim. -rw-rw-rw- annetaan oktaalisena 666 -rwxr-xr-x annetaan oktaalisena 755) .PP cp (-iIvVupn) file1 file2 .PP cp (-riIvVupn) file ... (directory) Kopioi tiedoston file1 sis{ll|n tiedostoon file2, tai tiedoston file sis{ll|n tiedostoon directory/file. .PP date Tulostaa p{iv{yksen ja kellonajan. .PP db 'Debuggeri' assemblerohjelmien virheenselvityst{ varten. .PP diff (-) name1 name2 Vertaa kahta tiedostoa ja tulostaa rivit, joissa on eroja. .PP du (-s) (-a) (name ...) Tulostaa hakemiston k{ytt{m{n levytilan lohkoissa (=512 tavua). .PP ed (name) Tekstintoimitin, 'editori', josta on kuvaus mm. artikkelissa \&'A Tutorial Introduction to the UNIX Text Editor'. .PP kill processid ... Tuhoaa prosessin, joka on esim. taustaprosessina j{{nyt ikuiseen silmukkaan. Tarvittavan prosessinumeron saa selville ps-komennolla. Tavallisen (= ei tausta-) prosessin saa helpoimmin pys{ytetty{ n{pp{imell{ RUB eli DEL. .PP ld (-sulr) (-o outfile) name ... Lataaja, jolla useita k{{nnettyj{ objektitiedostoja voidaan linkitt{{ ja ladata ajokelpoiseksi tiedostoksi. .PP login (username) login-komennolla voidaan suoraan vaihtaa k{ytt{j{tunnusta ('logaamatta' v{lill{ ulos Ctrl-D:ll{). .PP ls (-ltasdruifgzL) name ... (TKK-UNIXissa my|s: l) Tulostaa hakemistolistauksen. .PP mail (-y) (-n) (person ...) Lukee tai l{hett{{ postia muille k{ytt{jille. .PP mesg (n) (y) Kielt{{ tai sallii toisille k{ytt{jille puheyhteyden write-komennolla. .PP mkdir dirname ... Luo uuden alihakemiston. .PP mv (-iIvVupn) file1 file2 .PP mv (-riIvVupn) file ... (directory) Antaa tiedostolle file1 uuden nimen file2, tai tiedostolle file nimen directory/file. .PP nroff file ... Tekstinmuotoiluohjelma, josta on lis{tietoa artikkelissa \&'NROFF User's Manual'. Kts. my|s roff. .PP opr file & Rivikirjoitintulostus DECsystem-20:n rivikirjoittimelle (Tulostuksen k{ytt{j{tunnus on TKO.UNIX). .PP passwd name password Asettaa ja muuttaa salasanaksi k{ytt{j{lle name sanan password. .PP pr (-h header) name ... Tulostaa tiedoston siten, ett{ jokaisen sivun alussa on p{iv{ys ja tiedostonimi sek{ mahdollinen otsikko header. .PP ps (alxk) (namelist) Tulostaa tietoa k{ynniss{ olevista prosesseista. .PP pwd Kertoo hakemistonimen, jossa parhaillaan ty|skennell{{n. .PP rm (-iIvVfdr) name ... Tuhoaa (lopullisesti) tiedostoja. .PP rmdir directory ... Tuhoaa hakemistoja, joiden tulee olla tyhji{. .PP roff file ... Tekstinmuotoiluohjelma, joka on kehittym{tt|m{mpi kuin nroff, mutta my|s helpompi k{ytt{{. .PP sh (-t) (-c) (name (arg1 ...(arg9))) Komentotulkki shell, joka on my|s ohjelmoitavissa (if, goto, echo, exit, shift, sleep). .PP size (object ...) Tulostaa objekti-tyyppisen tiedoston text-, data- ja bss-sektioiden koot tavuissa. .PP sleep time Suoritus odottaa time sekuntia (Esim. (sleep 120; ld file1 file2)& ). .PP stty (option ...) Tulostaa tai asettaa p{{tteen moodin. .PP tty Tulostaa k{ytt{j{n p{{telinjan numeron .PP wc (name ...) Laskee tiedostossa olevien rivien ja sanojen lukum{{r{n. .PP view (-oa) (-screenlength) (-wscreenwidth) (file ...) N{ytt|p{{tetulostus kuvaruudullinen kerrallaan. Tulostus jatkuu RETURN-n{pp{imell{. .PP who (am i) Kertoo UNIXin t{m{nhetkiset k{ytt{j{t .PP write user (ttyno) Muodostaa yksisuuntaisen puheyhteyden k{ytt{j{{n user. Jotta yhteys olisi kaksisuuntainen, tulee my|s vastaanottajan antaa write-komento. .pl 66 .ll 70 .he 'TKK/TeKoLa''UNIX-k{ytt|j{rjestelm{' .fo ''-%-'' .m2 0 Kalle Hukkinen 18.12.1981 .br .m2 2 .in 18 .bl 4 .ti 0 UNIXIN K[YT\\N ALKEET .ti 0 Johdanto T{m{n paperin tarkoitus on olla ensimm{inen johdatus TKK/TeKoLan SM-4 -tietokoneessa k{ytett{v{n UNIX-k{ytt|j{restelm{n ominaisuuksiin. T{ss{ esitet{{n erityisesti paikallisen TKK UNIXin erityispiirteit{ sek{ k{ytt|{ korkeakoulun datavaihteen kautta. T{ydent{vi{ esityksi{ ovat Bell Laboratorion toimittamat artikkelit 'UNIX for Beginners', joka on paljolti t{m{n esityksen l{hde ja siis p{{llekk{inen, sek{ 'A Tutorial Introduction to the UNIX Text Editor' ja 'Programming in C - A Tutorial'. .ti 0 Login Datavaihde tunnistaa ison N-kirjaimen UNIX-kutsuksi ja kytkee yhden SM-4 tietokoneeseen menevist{ kahdeksasta datavaihdelinjasta p{{tteeseen. UNIX vastaa kirjoittamalla: login: johon vastataan omalla k{ytt{j{tunnuksella. Jos k{ytt{j{ on m{{ritellyt itselleen salasanan (mik{ on toivottavaa), kysyy UNIX sen kirjoittamalla: password: Jos salasana oli oikea, tulostaa UNIX jonkin systeemitiedoituksen sek{ promptaa prosenttimerkill{ % tiedoksi siit{, ett{ j{rjestelm{ on valmis vastaanottamaan komentoja. .ti 0 Salasana Salasanan voi itselleen m{{ritell{ komennolla: % passwd k{ytt{j{tunnus salasana Samalla komennolla sit{ voi my|s muuttaa. .pa .ti 0 Logout P{{teistunnon lopetus tapahtuu yksinkertaisesti Ctrl-D merkill{, jolloin systeemi kirjoittaa: logged out .ti0 P{{tenopeus Jos p{{tteess{ on nopeus 2400, voidaan loggattaessa sis{{n muuttaa k{tev{sti nopeutta. Kun shift-N:n j{lkeen tulostuu 'login:', vaihdetaan heti p{{tteen nopeus 2400:an ja sen j{lkeen painetaan BREAK-n{pp{int{. T{ll|in 'login:' tulostuu uudelleen ja voidaan kirjoittaa k{ytt{j{tunnus. Muuksi nopeudeksi vaihtaminen k{y stty-komennolla. .ti 0 Erikoismerkit UNIX k{ytt{{ hieman erikoisia merkkej{ sy|tteen korjailumerkkein{. Edellisen kirjoitetun merkin pyyhkii 'risuaita' \# ja koko kirjoitetun rivin tuhoaa 'miumau' @. Jos n{it{ merkkej{ haluaa kirjoittaa tekstin sekaan (esim. editorilla), on niit{ edelt{v{n merkin oltava 'backslash' \\, siis \\# tai \\@. Suoritettavan ohjelman keskeytt{{ RUB eli DEL n{pp{in, siis ei Break. BREAK:n painaminen ohjelman suorituksen aikana aiheuttaa sen, ett{ suoritus jatkuu tausta-ajona ja itse p{{st{{n UNIXin komentotasolle. K{yt|ss{ olevassa TKK-UNIXissa ovat k{ytett{viss{ my|s DECist{ tutut Ctrl-S ja Ctrl-Q tulostuksen tilap{ist{ pys{ytyst{ varten, sek{ Ctrl-R kirjoitetun (ja mahdollisesti korjaillun) komentorivin uudelleentulostusta varten. Edellisen komennon voi toista kirjoittamalla 'miinus'-merkin: - .ti 0 Komento Komennot UNIXille annetaan promptin % per{{n ja p{{tet{{n RETURN tai LINEFEED n{pp{imell{. UNIXille voidaan kirjoittaa seuraavia komentoja my|s edellisen komennon suorituksen aikana (kuten DECille), mutta ero DECiin verrattuna on se, ett{ UNIX kaiuttaa kirjaimet v{litt|m{sti. UNIX-komennon tulkitsee ohjelma nimelt{ shell, ja siirt{{ suorituksen komennon toteuttavalle ohjelmalle. UNIXin k{ytt|j{rjestelm{komennot ovat siis tavallisia suoritettavia ohjelmia. .ti 0 Tiedostoj{rjestelm{ UNIXin tiedostoj{rjestelm{ on puhtaan hierarkinen. Sen juuri on hakemisto nimelt{ root, joka jakautuu tiedostoiksi ja hakemistoiksi. Kukin hakemisto voi edelleen sis{lt{{ tiedostoja ja alihakemistoja, jne. Ainoa ero tiedostojen ja hakemistojen v{lill{ on se, ett{ hakemistoa voi muuttaa vain systeemi. Tiedostoilla ei ole mit{{n typpi{ tai sis{ist{ rakennetta, ne ovat yksinkertaisesti tavujonoja. Kaikkia tiedostoja, ohjelmia ja I/O-laitteita k{sitell{{n homogeenisesti, siis laitteelle tulostetaan kuten tiedostoon. Omassa hakemistossa (tarkemmin siin{ hakemistossa, jossa parhaillaan ty|skentelee) voi tiedostoon viitata suoraan tiedostonimell{. T{ydellisen tiedostonimen muodostaa kuitenkin tiedostopolku l{htien juuresta. Juureen (root) voi viitata symbolilla / , ja siit{ edelleen esim. k{ytt{j{ virtasen tiedostoon zap voi viitata polulla /usr/virtanen/zap. zap kuuluu siis hakemistoon /usr/virtanen, joka puolestaan on hakemiston /usr alihakemisto. /usr on suoraan juurihakemiston / (=root) alihakemisto. Jos k{ytt{j{ virtasella on alihakemisto, jonka t{ydellinen (polku)nimi on /usr/virtanen/subdir, ja siell{ tiedosto data, voi h{n ty|skennelless{{n hakemistossa /usr/virtanen viitata kyseiseen tiedostoon nimell{ subdir/data. Puuhierarkiassa alasp{in viitattaessa ei siis tarvitse k{ytt{{ koko polunnime{ (mutta nime{ ei my|sk{{n t{ll|in pid{ aloittaa juuren symbolilla / ) .ti 0 Shell Shell on UNIXin komentotulkki. Se on itsen{inen ohjelma (ei siis osa k{ytt|j{rjestelm{{), joka tulkitsee k{ytt|j{rjestelm{lle annetut komennot ja luo niiden mukaan komennon suorittavat prosessit. Jos halutaan suorittaa komento tai ohjelma taustaprosessina siten, ett{ ei odoteta ohjelman suorituksen p{{ttymist{ ennenkuin palataan shellin komentotasolle, voidaan komento p{{tt{{ merkkiin &. T{ll|in voidaan v{litt|m{sti jatkaa p{{tety|skentely{. Jos taustalla ajettavassa ohjelmassa on tulostuksia, ne ohjautuvat kuitenkin normaalisti p{{tteelle. Shelliss{ on mahdollisuus muuttaa ohjelman sy|t|n ja tulostuksen oletustiedostoa (=p{{te). Se k{y operaattoreilla < ja >, joista < tiedoston nimen edess{ aiheuttaa sy|t|n kyseisest{ tiedostosta ja > tulostuksen tiedostoon. Esimerkiksi kun komento: cat file aiheuttaa tiedoston file tulostuksen p{{tteelle, niin komento: cat file1 >file2 aiheuttaa tiedoston file1 tulostuksen tiedostoon file2. Lis{ksi voidaan tiedoston loppuun liitt{{ tulostusta operaattorilla >>, t{ll|in siis tiedostossa aiemmin ollut tieto ei tuhoudu. Shellin er{s erikoisuus ovat ns. putket, joita merkit{{n operaattorilla | (pystyviiva). Putki poistaa usein v{liaikaistiedostojen tarpeen. Esimerkki: ls tulostaa hakemistolistauksen, wc laskee tiedostossa olevien rivien ja sanojen m{{r{n, rm tuhoaa tiedoston, ja haluamme tiet{{ tiedostojen m{{r{n hakemistollamme. Voisimme tehd{ n{in: ls >temp wc temp rm temp mutta kauniimmin asia hoidetaan n{in: ls | wc jolloin ls:n tulostus on wc:n sy|te, eik{ tarvittu v{liaikaistiedostoa temp. Useille shellin komennoille voi antaa argumentteja, jotka tarkemmin m{{rittelev{t suoritettavaa komentoa. Ne ovat yksikirjaimisia ja niit{ edelt{{ 'miinus' - . Esim.: ls -lat tulostaa t{ydellisemm{n hakemistolistauksen aikaj{rjestyksess{ (l = long, a = all, t = time) .pa .ti 0 KOMENTOJA Seuraavassa er{it{ useimmin tarvittavia komentoja. Kaikista komennoista on t{ydellisempi kuvaus julkaisussa 'UNIX Programmer's Manual'. .ti 0 as (-) (-o objectfile) name ... Assembler-k{{nt{j{, josta l|ytyy tarkka kuvaus artikkelissa 'UNIX Assembler Reference Manual'. .ti 0 cat file ... Tulostaa mainitut tiedostot per{kk{in (katenoi). .ti 0 cc (-c) (-p) (-f) (-O) (-S) (-P) file ... C-kielen k{{nt{j{, josta on olemassa mm. artikkelit 'Programming in C - A Tutorial' sek{ 'C Reference Manual'. .ti 0 chdir directory (TKK-UNIXissa my|s: cd) Siirryt{{n toiseen hakemistoon. .ti 0 chmod octal file ... Muuttaa tiedoston suojauslukua. (esim. -rw-rw-rw- annetaan oktaalisena 666 -rwxr-xr-x annetaan oktaalisena 755) .ti 0 cp (-iIvVupn) file1 file2 .ti 0 cp (-riIvVupn) file ... (directory) Kopioi tiedoston file1 sis{ll|n tiedostoon file2, tai tiedoston file sis{ll|n tiedostoon directory/file. .ti 0 date Tulostaa p{iv{yksen ja kellonajan. .ti 0 db 'Debuggeri' assemblerohjelmien virheenselvityst{ varten. .ti 0 diff (-) name1 name2 Vertaa kahta tiedostoa ja tulostaa rivit, joissa on eroja. .ti 0 du (-s) (-a) (name ...) Tulostaa hakemiston k{ytt{m{n levytilan lohkoissa (=512 tavua). .ti 0 ed (name) Tekstintoimitin, 'editori', josta on kuvaus mm. artikkelissa 'A Tutorial Introduction to the UNIX Text Editor'. .pa .ti 0 kill processid ... Tuhoaa prosessin, joka on esim. taustaprosessina j{{nyt ikuiseen silmukkaan. Tarvittavan prosessinumeron saa selville ps-komennolla. Tavallisen (= ei tausta-) prosessin saa helpoimmin pys{ytetty{ n{pp{imell{ RUB eli DEL. .ti 0 ld (-sulr) (-o outfile) name ... Lataaja, jolla useita k{{nnettyj{ objektitiedostoja voidaan linkitt{{ ja ladata ajokelpoiseksi tiedostoksi. .ti 0 login (username) login-komennolla voidaan suoraan vaihtaa k{ytt{j{tunnusta ('logaamatta' v{lill{ ulos Ctrl-D:ll{). .ti 0 ls (-ltasdruifgzL) name ... (TKK-UNIXissa my|s: l) Tulostaa hakemistolistauksen. .ti 0 mail (-y) (-n) (person ...) Lukee tai l{hett{{ postia muille k{ytt{jille. .ti 0 mesg (n) (y) Kielt{{ tai sallii toisille k{ytt{jille puheyhteyden write-komennolla. .ti 0 mkdir dirname ... Luo uuden alihakemiston. .ti 0 mv (-iIvVupn) file1 file2 .ti 0 mv (-riIvVupn) file ... (directory) Antaa tiedostolle file1 uuden nimen file2, tai tiedostolle file nimen directory/file. .ti 0 nroff file ... Tekstinmuotoiluohjelma, josta on lis{tietoa artikkelissa 'NROFF User's Manual'. Kts. my|s roff. .ti 0 opr file & Rivikirjoitintulostus DECsystem-20:n rivikirjoittimelle (Tulostuksen k{ytt{j{tunnus on TKO.UNIX). .ti 0 passwd name password Asettaa ja muuttaa salasanaksi k{ytt{j{lle name sanan password. .ti 0 pr (-h header) name ... Tulostaa tiedoston siten, ett{ jokaisen sivun alussa on p{iv{ys ja tiedostonimi sek{ mahdollinen otsikko header. .ti 0 ps (alxk) (namelist) Tulostaa tietoa k{ynniss{ olevista prosesseista. .pa .ti 0 pwd Kertoo hakemistonimen, jossa parhaillaan ty|skennell{{n. .ti 0 rm (-iIvVfdr) name ... Tuhoaa (lopullisesti) tiedostoja. .ti 0 rmdir directory ... Tuhoaa hakemistoja, joiden tulee olla tyhji{. .ti 0 roff file ... Tekstinmuotoiluohjelma, joka on kehittym{tt|m{mpi kuin nroff, mutta my|s helpompi k{ytt{{. .ti 0 sh (-t) (-c) (name (arg1 ...(arg9))) Komentotulkki shell, joka on my|s ohjelmoitavissa (if, goto, echo, exit, shift, sleep). .ti 0 size (object ...) Tulostaa objekti-tyyppisen tiedoston text-, data- ja bss-sektioiden koot tavuissa. .ti 0 sleep time Suoritus odottaa time sekuntia (Esim. (sleep 120; ld file1 file2)& ). .ti 0 stty (option ...) Tulostaa tai asettaa p{{tteen moodin. .ti 0 tty Tulostaa k{ytt{j{n p{{telinjan numeron .ti 0 wc (name ...) Laskee tiedostossa olevien rivien ja sanojen lukum{{r{n. .ti 0 view (-oa) (-screenlength) (-wscreenwidth) (file ...) N{ytt|p{{tetulostus kuvaruudullinen kerrallaan. Tulostus jatkuu RETURN-n{pp{imell{. .ti 0 who (am i) Kertoo UNIXin t{m{nhetkiset k{ytt{j{t .ti 0 write user (ttyno) Muodostaa yksisuuntaisen puheyhteyden k{ytt{j{{n user. Jotta yhteys olisi kaksisuuntainen, tulee my|s vastaanottajan antaa write-komento. .pl 66 .ll 70 .he 'TKK/TeKoLa''UNIX-k{ytt|j{rjestelm{' .fo ''-%-'' .m2 0 Kalle Hukkinen 25.03.1982 .br .m2 2 .in 18 .bl 4 .ti 0 YLL[PITO .ti 0 Johdanto T{ss{ kuvataan yll{pitoon liittyvi{ yleisi{ toimenpiteit{ sek{ tiedostoja ja ohjelmia, jotka liittyv{t yll{pitoon. Useimmat n{ist{ tiedostoista sijaitsevat hakemistossa /etc. .ti0 Varmuuskopiot Varmuuskopiointeja varten on joukko komentotiedostoja, jotka k{ytt{v{t hyv{kseen yleist{ kopiointi- ja konversio-ohjelmaa 'dd'. Yhden levyn koko on 4800 lohkoa, joten k{ytt{j{levy{ kopioitaessa siirret{{n koko levy. Systeemilevy on konfiguroitu 4000 lohkon suuruiseksi, joten swap-alueen koko on 800 lohkoa. Systeemilevylt{ ei kopioda swap-aluetta. /etc/b4032tape systeemilevy -> nauha /etc/b4800tape k{ytt{j{levy -> nauha /etc/backup systeemilevy -> levy Kaikissa edellisiss{ on kerrallaan siirrett{v{n yksik|n koko optimoitu siten, ett{ se on tasaluku levyuria. /mnt/doc (208)  ikissa edellisiss{ on kerrallaan siirrett{v{n yksik|n koko optimoitu siten, ett{ se on tasaluku le