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: <K{{nnet{{np{ rivin merkit v{{rinp{in \nAnna jokin teksti!\n\0>
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)
<break> painamalla break nappulaa, siirrat
nykyisen ohjelmasi n{enn{isesti taustalle.
(SILTI katkeaa RUBOUT:illa !!!)
Uusi <break> 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)
<break> painamalla break nappulaa, siirrat
nykyisen ohjelmasi n{enn{isesti taustalle.
(SILTI katkeaa RUBOUT:illa !!!)
Uusi <break> 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: -<CR>
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: -<CR>
.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: -<CR>
.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
Comments
0 B
|0 👍
/0 👎
0 B
|👍
/👎