Tämä opas kuvaa Unix-tietokoneiden hyväksikäytön perusteita kuten komentojen antaminen, tiedostojärjestelmä tavallisen käyttäjän näkökulmasta ja joidenkin tavallisten ohjelmien (Pine, Emacs) yksinkertainen käyttö.
Päivitetty viimeksi 2003-10-18. Teknisiä korjauksia 2004-02-16. Jukka K. Korpela.
Opas kuuluu sivuston Datatekniikka ja viestintä osaan Ohjelmistot ja dataformaatit.
Tämä opas kuvaa Unix-tietokoneiden hyväksikäytön perusteita eikä edellytä erityisiä esitietoja. Lukijan täytyy kuitenkin hankkia muualta tiedot käyttämänsä Unix-koneen käytön erilaisista järjestelyistä kuten käyttäjätunnuksen hankkimisesta ja yhteydenotosta koneeseen sekä käytettävän Unix-järjestelmän erityispiirteistä.
Tämä opas on siis tarkoitettu ns. peruskäyttäjille ("loppukäyttäjille", end users), ei ns. ylläpitäjille. Toisaalta ylläpitäjä toki tarvitsee hyvät peruskäyttäjän tiedot, ja siksi tästä oppaasta lienee hyötyä myös ylläpitäjäksi aikoville - ja jopa ylläpitäjänä jo toimivillekin tietojen täydentämiseksi.
Tämän oppaan ajantasaisin versio on Webissä osoitteessa
http://jkorpela.fi/unix/
Opas jakautuu lukuihin ja luvut osiin, joista kukin on oma
Web-sivunsa, jolta on linkki seuraavaan sivuun
ja sisällysluettelosivulle.
Lisäksi on tarjolla
koko opas yhtenä Web-sivuna;
tästä voi olla apua, jos haluat esimerkiksi etsiä jotakin
sanaa oppaasta (selaimen Find-toiminnolla tms.).
Jos sinulla on kiire päästä käyttämään Unix-konetta johonkin erityiseen käyttötarkoitukseen, esimerkiksi meilin ("sähköpostin") lukemiseen ja lähettämiseen, voit aluksi lukea vain
Jos tarvitset Unixia vain hoitaaksesi Web-sivujen tekemiseen liittyviä teknisiä toimenpiteitä kuten tiedostojen suojausten asettamista, niin keskeisessä asemassa on luku Tiedostot ja hakemistot.
Myöhemmin kannattaa lukea opasta systemaattisemmin, jotta oppisit tuntemaan erilaisia mahdollisuuksia ja apuvälineitä, jotka helpottavat työtäsi (esim. komentojen editointi).
Yleinen lukuohje ilmenee seuraavasta jäsennyksestä: Opas jakautuu, tätä esipuhetta ja liitteitä lukuun ottamatta, seitsemään lukuun:
Liitteinä on oppaan lyhyt historiikki ja muuta selittelyä, tietoja siitä, mistä saa lisätietoja Unixista, ohjeita salasanan valinnasta ja ohjeita muutamista tavallisista pääteongelmista selviämiseen.
Unix-tietokoneiden käytön kannalta on olennaista muistaa, että
näissä koneissa
yleisesti ottaen
isojen ja pienten kirjainten ero on merkitsevä.
Jos oppaassa tai manuaalissa puhutaan esim. pine
-komennosta,
niin komentosana on kirjoitettava nimenomaan pine
eikä
esim. Pine
tai PINE
.
Sama koskee muun muassa tiedostonnimiä: esimerkiksi sekä tkk
että TKK
ovat Unixissa mahdollisia tiedostonnimiä,
mutta ne tarkoittavat aivan eri tiedostoja.
Tässä suhteessa
Unix poikkeaa mm. Windowsista. Erittäin tavallinen ongelma
siirrettäessä tiedostoja Windows-koneesta Web-palvelimena toimivaan
Unix-koneeseen on se, että ei tiedetä tai ei muisteta, että
tiedostonnimissä on Unixin puolella oltava tarkempana.
Jos Web-sivuun on liitetty kuva rakenteella
<img src="foo.gif" alt="">
, niin Windowsissa
se toimii, vaikka kuvatiedoston nimi olisi
FOO.GIF
, mutta Unixissa sen pitää olla tasan
foo.gif
. (Tällaisissa yhteyksissä kannattaa tiedostot
yleensä nimetä niin, että kaikki kirjaimet ovat pieniä.
Ks. Web-julkaisemisen oppaan
kohtaa
Web-osoitteet ja muut
URLit.)
Toivottavasti lukijaa ei häiritse, että tässä oppaassa on
noudatettu
erisnimien oikeinkirjoitussääntöä.
Niinpä ohjelmien nimet on kirjoitettu isolla alkukirjaimella (esim.
Pine),
vaikka komento, jolla ohjelma on käynnistettävä, on yleensä sellainen, jossa
kaikki kirjaimet ovat pieniä (esim. pine
).
Yleisemmin on syytä huomata, että se komento, jolla
ohjelma käynnistetään,
voi olla muutenkin erilainen kuin se nimi,
jolla ohjelmasta puhutaan.
Unix-tietokoneissa käytettiin pitkään ns. Ascii-merkistöä, jossa ei ole omia merkkejä skandinaavisille kirjaimille å, ä ja ö. Suomessa noudatettiin yleisesti sopimusta, jonka mukaan skandinaavisten kirjainten esittämiseen käytettiin merkkipaikkoja, jotka Asciissa vastaavat erikoismerkkejä. Seuraavassa taulukossa kukin rivi sisältää kirjaimen sekä erikoismerkin, jonka tilalla se on:
å | } | (oikea aaltosulku, right brace) |
ä | { | (vasen aaltosulku, left brace) |
ö | | | (pystyviiva, vertical line eli vertical bar) |
Å | ] | (oikea hakasulku, right bracket) |
Ä | [ | (vasen hakasulku, left bracket) |
Ö | \ | (kenoviiva, backslash) |
Tämä menettely, joka on vielä jossain määrin käytössä, on aiheuttanut paljon ongelmia etenkin kansainvälisissä yhteyksissä. Syynä on muun muassa se, että muissa maissa on toisenlaisia sopimuksia .
Yleisesti on (länsimaissa) siirrytty laajempaan merkkikoodiin ISO-Latin-1 (virallisimmalta nimeltään ISO 8859-1). Se on Ascii-koodin laajennus, jossa skandinaavisille kirjaimille on omat merkkipaikat. Se vastaa melko tarkoin Windowsissa käytettyä merkistöä.
Vaikka siirtyminen laajempaan merkistöön on erittäin tarpeellista, siitä on aiheutunut ja jossain määrin vieläkin aiheutuu monenlaista hankaluutta, koska monet ohjelmat (käyttöjärjestelmien komentotulkit, tietoliikenneohjelmat, sovellusohjelmat) sekä monet päätelaitteet on tehty Ascii-koodia ajatellen, eivätkä ne siksi toimi kunnolla ISO-Latin-1:tä käytettäessä ainakaan ilman muutostöitä. Edelleenkin monet tulevat vielä pitkään käyttämään edellä mainittuja erikoismerkkejä skandinaavisten kirjainten tilalla. Joudut siis luultavasti silloin tällöin näkemään t{llaista teksti{. Lisäksi saatat törmätä sellaisiin teksteihin, joissa skandinaavisten kirjainten tilalla on mitä kummallisimpia merkkejä, koska tekstit on kirjoitettu käyttäen jotakin merkkikoodia, joka ei ole Ascii eikä ISO-Latin-1, ja koska merkistönmuunnosta ei ole hoidettu kunnolla.
Toisaalta jos joudut käyttämään näppäimistöä, josta ei tunnu löytyvän sellaisia erikoismerkkejä kuin pystyviiva | (jota usein tarvitaan Unixin komennoissa), voit kokeilla käyttää skandinaavisia kirjaimia (kuten ö) niiden asemesta edellä olevan taulukon mukaan. On nimittäin mahdollista, että laite tällöin käyttää Ascii-merkistön suomalaistettua muunnelmaa, jolloin näppäinhatussa lukee ja ruudulla näkyy ö-kirjain mutta kyseinen merkki silti "oikeasti" on pystyviiva.
Vaikka skandinaavisten kirjaimien käyttö tiedostonnimissä on mahdollista, se on yhä epäsuositeltavaa, koska se voi aiheuttaa erilaisia ongelmia. Sen sijaan tiedostojen sisällössä niitä voi toki käyttää.
Unix-tietokoneiden käyttämisessä tarvitaan melko usein myös nk. kontrollimerkkejä (control characters). Niillä vaikutetaan käytetyn tietokoneen toimintaan eri tavoilla eli kontrolloidaan sitä, mitä kone tekee. Vaikutus on ohjelmakohtainen, mutta joitakin yleisiä käytäntöjä on vakiintunut. Tässä oppaassa on esitetty muutama kontrollimerkki, ja niistä on sellaisia merkintöjä kuin control-c. Muissa dokumenteissa kontrollimerkeistä saatetaan käyttää sentapaisia merkintöjä kuin CTRL-C, C-C tai ^C.
Esimerkiksi control-c saadaan aikaan siten, että painetaan control-näppäin alas ja pidetään se alaspainettuna kun painetaan c-näppäintä. (Control on se näppäin, jossa on merkintä CTRL tai CONTROL tms. ja joka usein on näppäimistön vasemmassa alakulmassa.) Ei siis tarvitse yrittää näpäyttää kyseisiä näppäimiä yhtä aikaa, eikä niitä pidä näpäyttää peräkkäin. Menettelytapa on siis samanlainen kuin isojen kirjainten kirjoittaminen tasonvaihtonäppäimen (SHIFT) avulla. Pelkkä control-näppäimen painallus ei vaikuta yksinään mitään, vaan sen pitäminen alhaalla muita näppäimiä paineltaessa muuttaa niiden merkitystä (esim. c-kirjaimesta control-c:ksi).
Sellaisia kontrollimerkkejä, joita Unixissa tarvitaan varsin yleisesti, ovat juuri edellä esimerkkeinä mainitut
Tässä oppaassa on kirjoitettu Unixille annettavat
komennot ja
koneen tulostamat tekstit
tavallisesta tekstistä poikkeavalla kirjasinlajilla tähän tapaan:
passwd
ja Incorrect password
.
Toisaalta tilanteen mukaan vaihtuvat tekstit on
kirjoitettu tähän tapaan: tiedostonnimi.
Esimerkiksi ilmaisu
rm
tiedostonnimi
kuvaa erään komennon yleistä muotoa kun taas
rm foobar
esittää yhden konkreettisen esimerkin kyseisestä komennosta.
Komentojen esittelyjen yhteydessä mainitaan usein, mistä englannin
sanoista komennon nimi on peräisin, esim.
cp
(copy). Tämä ehkä helpottaa komentojen
nimien muistamista, koska monien Unix-komentojen nimet aluksi tuntuvat
hämäriltä konsonanttirykelmiltä.
Tässä oppaassa käytetään eräitä sellaisia termejä, joita ei ole yleensä ollut tapana käyttää painetussa tekstissä vaikka ne ovat alan puhekielessä tavallisia, esimerkiksi meili ja nyysit. Tällä menettelyllä on omat perustelunsa, mutta selvyyden vuoksi sellaisia termejä ensimmäisen kerran käytettäessä mainitaan myös niiden "kirjakieliset" vastineet kuten sähköposti ja newsit.
Kun tietokonetta käyttäessäsi törmäät ongelmiin ja vaikeuksiin, yritä ensin selvitä itse käyttäen hyväksesi tarjolla olevia kirjallisia ja koneella luettavissa olevia ohjeita ja oppaita. Hyvin usein ongelmat ratkeavat etsimällä oikea dokumentti ja lukemalla se, tarvittaessa pari kertaa, sillä ensi lukemalla jää hyvin usein jokin olennainen seikka huomaamatta. Tässä oppaassa on luku, jossa kerrotaan, mistä löydät lisätietoja Unixista.
Jos tunnet joutuneesi umpikujaan, saat usein nopeimman avun opiskelu- tai työtoverilta, jos toimit ympäristössä, jossa voi esim. viereisen päätteen käyttäjältä kohteliaasti kysyä, ehtisikö ja voisiko hän auttaa.
Käytettävissäsi saattaa olla joitakin neuvontapalveluja. Silloin on tärkeää antaa neuvojalle olennaiset tiedot ongelmasta. Neuvonta etenkin puhelimitse tai meilitse on aina hankalaa, mutta mahdottomaksi sen tekee, jos käyttäjä ei kerro muuta kuin että "tietokone ei toimi".
Unix on perhe samantyyppisiä (mutta ei keskenään täysin samanlaisia) tietokoneen käyttöjärjestelmiä. Käyttöjärjestelmä (englanniksi operating system) on yleisesti sanottuna tietokoneen eri toimintoja ohjaava ja tukeva ohjelma tai ohjelmisto. Käyttäjälle näkyvin osa ovat käyttöjärjestelmän komennot, joilla hän mm. käynnistää ohjelmia, tulostaa tiedostoja jne. Muista käyttöjärjestelmistä kuin Unixit mainittakoon esimerkkinä PC-mikroissa tavalliset Windows-järjestelmät sekä etenkin aiemmin käytetty MS-Dos.
Käyttöjärjestelmä on olemassa sitä varten, että tietokoneessa voitaisiin suorittaa ohjelmia, sovelluksia. Useimmiten käyttäjät "keskustelevat" pääasiassa muutaman sovelluksen kanssa, ja käytön opettelu on lähinnä niiden sovellusten käytön opettelua. Sovellus on kuitenkin osattava käynnistää, ja Unixissa siihen tarvitaan käyttöjärjestelmän komento. Lisäksi voidaan tarvita komentoja esimerkiksi käyttäjän tietoaineistojen (tiedostojen) hallintaan.
Jatkuvasti aiheuttaa sekaannuksia se, että käyttäjät ajattelevat joidenkin ohjelmien tai muiden asioiden kuuluvan Unixiin, koska ovat tutustuneet niihin Unix-koneissa. Siksi on syytä korostaa, että esimerkiksi tässä oppaassa kuvattavista tai mainittavista ohjelmista editori Emacs, eri Web-katseluohjelmat ja meiliohjelma Pine eivät ole osa Unixia. Ne vain ovat ohjelmia, jotka ovat saatavissa Unix-koneisiin ja niissä yleisesti käytettyjä, mutta niitä ei suinkaan löydy kaikista Unix-koneista. Toisaalta näitä ohjelmia voi olla käytettävissä muissakin koneissa kuin Unix-koneissa.
Ohjelmat on myös saatettu toteuttaa toisistaan hyvinkin riippumattomasti, joten yhden ohjelman sisällä toimivat käskyt ja temput yleisesti ottaen eivät toimi ollenkaan tai eivät toimi samalla tavalla toista ohjelmaa käytettäessä.
Useimmille ihmisille Unixin tai Unix-tietokoneen käyttö ei ole itsetarkoitus vaan väline: Unix-kone valitaan käytettäväksi siksi, että siinä on sellaisia ohjelmia, joita halutaan käyttää. On myös mahdollista, että käyttäjälle on esimerkiksi työ- tai opiskelupaikassa tarjolla vain Unix-koneita.
Unix-koneita käytetään jossain määrin "keskuskoneina", jotka on kiinteästi kytketty tietoliikenneverkkoon ja joihin voi ottaa yhteyden muualta, esimerkiksi käyttäjän mikrolta. "Keskuskoneita" saatetaan käyttää raskaaseen numeeriseen laskentaan tai muihin vaativiin sovelluksiin taikka pelkästään datojen keskitettyyn tallentamiseen (ns. tiedostopalvelimina).
Jos sinulla on käyttäjätunnus Unix-koneeseen, joka on kiinteästi Internetissä, voit päästä käyttämään koneessa olevia aineistojasi, ohjelmia yms. mistä tahansa päin maailmaa. Toki tällaisessa koneessa voisi olla muukin käyttöjärjestelmä kuin Unix, mutta käytännössä Unix on tavallisin.
Unixia käytetään yleisesti myös erilaisissa palvelimissa (servers), esimerkiksi Web-palvelimissa ja FTP-palvelimissa. Oikeastaan "keskuskoneet" ovatkin nykyisin palvelimia pikemminkin kuin vanhanaikaisia keskitettyjä järjestelmiä. Varsin tavallista tätä nykyä on, että käyttäjä, joka muutoin toimii vain Windows-ympäristössä, joutuu Unixin kanssa tekemisiin vain halutessaan tehdä Web-sivuja. Silloinkin itse tekemisen voi hoitaa omalla mikrolla, ja Unixissa tehdään vain muutamia melko yksinkertaisia toimenpiteitä.
UNIX on The Open Groupin (aiemmin X/Openin, sitä ennen AT&T:n) rekisteröity tavaramerkki. Tässä oppaassa ja yleisesti muutoinkin käytetään sanaa hUnix tarkoittamaan erilaisia UNIX-tyyppisiä käyttöjärjestelmiä. Niillä on monia erilaisia tuotenimiä, jotka on usein valittu x-loppuisiksi, esim. "Aix" ja "HP-UX".
Vaikka siis nimi "UNIX" sinänsä on varattu järjestelmille, jotka täyttävät eräät vaatimukset, ei ole mitään yleisesti hyväksyttyä määritelmää sille, millaiset käyttöjärjestelmät ovat "UNIX-tyyppisiä". Usein sanaa "Unix" (näin kirjoitettuna) käytetään väljästi tarkoittamaan "UNIX-tyyppisiä" järjestelmiä, jopa niin, että esim. Linuxiakin saatetaan sanoa Unixiksi.
Unixeja voidaan monin tavoin "viritellä" niin, että koneet, joissa on saman valmistajan toimittama Unix, voivat silti näyttää käyttäjälle melko erilaisilta ainakin päällisin puolin. Kääntäen voidaan eri valmistajien Unixeista tehdä näkyviltä osiltaan samanlaisiksi sopivilla asetuksilla, jos halutaan.
Muun muassa seuraavia ominaisuuksia voidaan pitää kaikille Unixeille ominaisina:
Unix on alun perin suunniteltu yksinkertaiseen päätekäyttöön: käyttäjä istuu tekstipäätteen ääressä ja "komentaa" konetta tekstikomennoilla. Tekstipääte tarkoittaa tällöin ns. tyhmää päätettä, joka pystyy näyttämään kuvaruudulla vain merkkejä, ei grafiikkaa, ja jossa käytetään vain näppäimistöä, ei hiirtä. Nykyisin paljon monipuolisempikin käyttö on mahdollista. Perustilanne on kuitenkin edelleen seuraava:
Seuraavassa selitetään muutama peruskäsite, joita tarvitaan jo opeteltaessa tavallisimpien sovellusohjelmien käyttöä Unix-koneissa. Kaikkia näitä kuvataan yksityiskohtaisemmin muualla tässä oppaassa.
Tiedosto (engl. file) tarkoittaa
data-aineistoa,
joka on suhteellisen pysyvästi talletettu tietokoneeseen.
Tiedostolla on nimi, jolla siihen viitataan.
Nimi on käyttäjän valittavissa. Varminta on ainakin aluksi
käyttää vain sellaisia tiedostonnimiä, jotka koostuvat seuraavista
merkeistä: englannin kirjaimet a:sta z:aan, numerot ja piste.
Esimerkiksi opintosuunnitelma
ja ajat5.txt
ovat mahdollisia tiedostonnimiä.
Tiedostoja voidaan perustaa ja tiedostojen sisältöä muuttaa
sekä komennoilla että ohjelmilla,
mm. Emacs-editorilla.
Lisäksi tiedostoja voidaan
luoda monilla muillakin tavoilla, ja monet ohjelmat tuottavat
tiedostoja automaattisesti, käyttäjän tietämättäkin.
Edellä käytetty ilmaisu suhteellisen pysyvästi tarkoittaa, että tietoaineisto ei häviä, kun käyttäjä lopettaa yhteyden tietokoneeseen. Periaatteessa tiedosto ei häviä, ellei sitä erikseen hävitetä. Käytännössä tähän ei voi täysin luottaa, koska esim. laiteviat voivat tuhota tiedostoja.
Hakemisto (engl. directory) voidaan ymmärtää kokoelmaksi tiedostoja tai tiedostoja koskevien tietojen kokoelmaksi tai "paikaksi", jonne tiedostoja voi tallentaa. Kokoelma voi myös olla monitasoinen siinä mielessä, että hakemisto sisältää hakemistoja, joita sanotaan alihakemistoiksi.
Jokaisella käyttäjällä on kotihakemisto. Tämä tarkoittaa käyttäjätunnukseen liitettyä hakemistoa, jota käyttäjä itse hallitsee. Aluksi voit tallettaa kaikki tiedostosi ajattelematta hakemistoja ollenkaan, jolloin tiedostot menevät kotihakemistoosi. Mutta kun tiedostoja alkaa kertyä, kannattaa opetella perustamaan ja käyttämään alihakemistoja, jotta voit sijoittaa tiedostosi aihepiirin mukaisiin hakemistoihin (kotihakemistosi alihakemistoihin).
Luettelon kotihakemistossasi olevista tiedostoista saat komennolla
ls
(list).
Tiedostojen ja hakemistojen suojaukset määräävät, keillä on oikeus käsitellä tiedostoja ja hakemistoja eri tavoin. Suojausten oletusarvot ovat eri Unix-koneissa erilaiset; on esimerkiksi mahdollista, että käyttäjän tiedostoja voivat kaikki muut lukea, ellei käyttäjä ole erikseen suojannut niitä. Järkevä oletusarvo on yleensä se, että käyttäjän tiedostoihin ei muilla käyttäjillä (paitsi ylläpidolla) ole mitään oikeuksia, ja käyttäjä itse voi päättää antaa joitakin tiedostojaan muidenkin luettavaksi. Kaikkialla oletusarvot eivät kuitenkaan aina ole järkeviä, joten uuden järjestelmän käyttöä aloittaessaan kannattaa tarkistaa tällaiset asiat.
Edellä käytetty ilmaisu oletusarvo (engl. default) on atk-alan slangia ja tarkoittaa alkutilaa, joka vallitsee, kunnes käyttäjä itse muuttaa tilannetta komennoilla tai muuten.
Unix-tietokonetta (jatkossa "konetta") pystyy käyttämään monta ihmistä yhtä aikaa. Jokainen käyttäjä tarvitsee oman käyttäjätunnuksen (username tai user id), jolla käyttäjä ilmoittaa itsensä yhteydenotossa ja jonka "omistuksessa" käyttäjän tiedostot ovat. Jokaisella käyttäjällä on myös oma, salainen avaimensa eli salasana (password), jolla käyttäjän henkilöllisyys varmistetaan.
Omaa salasanaa ei saa kertoa kenellekään. Salasanan on tarkoitus olla vain omassa muistissa - ei edes paperilapulla, josta joku voi sen nähdä. Salasanaa ei pidä kertoa edes ylläpitäjäksi esittäytyvälle, sillä ylläpitäjä ei salasanaasi tarvitse. Sen sijaan käyttäjätunnuksesi voit toki kertoa keille haluat. Katso salasanan valintaohjeita tämän oppaan liitteestä. Ks. myös Tietokoneen käyttäjän turvaopas, etenkin kohdat Salasanat ja Vainoharhaisuus on hyväksi.
Ilman käyttäjätunnusta ja salasanaa ei Unix-koneita saa käyttää, eikä luvatonta käyttöä pidä yrittää. Käyttäjätunnuksen eli tietokoneluvan myöntää kunkin tietokoneen omistaja tai tämän valtuuttama koneen ylläpitäjä.
Saadessaan käyttäjätunnuksen käyttäjä sitoutuu noudattamaan järjestelmän ylläpitäjän antamia sääntöjä ja ohjeita.
Usein käyttäjätunnuksia luodaan "massoittain" tai muuten enemmän tai vähemmän automaattisesti, esimerkiksi oppilaitoksissa ehkä kaikille uusille opiskelijoille ilmoittautumisen yhteydessä taikka työpaikoilla osana työsuhteen perustamisen rutiineja. Tällöin konekohtaisia tietoja järjestelyistä ei kerrota henkilökohtaisesti, mutta sitä tärkeämpää on tutustua jaettavaan aineistoon ja tallettaa se huolellisesti.
Kuten kohdassa Unixin yleispiirteitä kerrottiin, Unix-koneita aluksi käytettiin yleensä päätteen (terminal) kautta. Pääte oli alkujaan (ja joskus yhä on) "tyhmä" laite, joka osasi lähinnä lähettää näppäimistöltä kirjoitettavat merkit tietokoneelle ja näyttää tietokoneelta tulevat merkit kuvaruudulla (tai tulostaa ne paperille). Pääte voi olla kaukana itse koneesta, jonne päätteeltä menee vain dataa (merkkejä) kuljettava johto. Yhteen koneeseen menee yleensä monta tällaista päätelinjaa. (Päätettä, jonka kautta koneen perusylläpito hoidetaan ja joka on yleensä lähellä konetta, sanotaan konsoliksi.) Itse kone pysyy käynnissä, vaikka päätteistä katkaistaisiin virrat.
Alkujaan kukin pääte oli kiinteästi kytketty yhteen koneeseen. Myöhemmin kehitettiin erilaisia vaihteita, joiden kautta päätteeltä saattoi kytkeytyä eri koneisiin.
Nykyisin on erittäin tavallista, että päätteen asemesta käytetään mikrotietokonetta tai työasemaa, jossa toimii jokin päätettä matkiva eli emuloiva ohjelma, pääte-emulaattori. Turvallisuussyistä kannattaa yleensä käyttää kehittynyttä ohjelmaa, joka hoitaa siirrettävän datan salauksen, esim. SSH.
Seuraavassa käsitellään yhteydenottoa vain siltä osin, kuin se vastaa toimintaa "tyhmällä" päätteellä. Tämä on yhteydenoton ydin, ja muusta asiaan liittyvästä kerrotaan eri pääte-emulaattorien yms. käyttöohjeissa.
Toimintaa, joka alkaa yhteydenotosta ja päättyy yhteyden katkaisuun, kutsutaan pääteistunnoksi tai lyhyesti istunnoksi (session). Osa käyttäjän tekemistä asioista vaikuttaa koko istunnon ajan, osa taas lyhytaikaisemmin esim. vain yhden komennon suorituksessa, tai pitkäaikaisemmin myös käyttäjän myöhemmissäkin istunnoissa.
Perustilanteessa Unix-kone tulostaa päätteelle (tai
pääte-emulaattorin ikkunaan) tekstin
login:
merkiksi siitä, että se on valmis yhteyteen. Jotta tähän tilaan päästäisiin,
saatetaan tarvita erilaisia toimenpiteitä kuten return- tai enter-näppäimen
painamista muutaman kerran.
Kirjoita käyttäjätunnuksesi ja paina sitten return- tai enter-näppäintä.
Ruudulle pitäisi tulostua
nn's password:
missä nn:n tilalla on käyttäjätunnuksesi.
Tällöin kirjoita salasanasi ja paina lopuksi return- tai enter-näppäintä
Salasana ei tule ruudulle näkyviin, jottei
selkäsi takaa ehkä kurkkiva ihminen saisi sitä liian helposti tietoonsa.
Siksi sen kirjoittaminen vaatii erityistä huolellisuutta.
Jos käyttäjätunnus (jatkossa tunnus) ja salasana on kirjoitettu
täsmälleen
oikein, kone käynnistää istunnon, "päästää käyttäjän sisään".
Jos käyttäjä on tehnyt jonkin kirjoitusvirheen, kone ilmoittaa esim.
login incorrect
ja kysyy samat asiat uudestaan.
Koska Unix-koneet ymmärtävät isot ja pienet kirjaimet eri merkeiksi, käyttäjätunnus pitää antaa juuri sellaisina kuin sen on saanut ja salasana sellaisena, joka on ilmoitettu tai jollaiseksi sen on itse asettanut. Jos tämä ei toimi, kannattaa kokeilla molempien kirjoittamista kokonaan pienillä kirjaimilla. Jos lomake, johon olet kirjoittanut haluamasi tunnuksen, tai paperi, jossa sinulle annettu tunnus on ilmoitettu, on kirjoitettu käsin, tunnus ja salasana voivat olla siinä isoilla kirjaimilla, vaikka lupaa luotaessa ne itse asiassa kirjoitettu pienillä.
Jos kaikki menee hyvin, niin yhteys muodostuu. Tosin joskus yhteyden muodostuminen voi kestää jonkin aikaa.
Yhteyden muodostuttua ruudulle voi tulostua
more /etc/motd
You have new mail.
,
joka tarkoittaa, että sinulle on saapunut uutta
meiliä ("sähköpostia")
alpha ~ 1 %
%
- tai $
-merkki.
Koneeseen sisäänpääsy kestää yleensä hetken, koska kone suorittaa erilaisia tarkistuksia ja alustuksia. Kun nämä ovat valmiit, kone ilmoittaa olevansa käyttövalmis tulostamalla kehotteen (prompt).
Kehote voi olla hyvinkin erinäköinen eri koneissa
ja eri käyttäjillä.
Seuraavassa on muuan tavallinen kehotteiden rakenne:
kone hakemisto nro %
esimerkiksi
alpha ~ 1 %
Tällöin kehotteen ensimmäinen osa kertoo, missä koneessa ollaan,
toinen osa (alkutilassa ~
eli
kotihakemisto) kertoo,
missä hakemistossa ollaan ja kolmas osa kertoo, monesko komento on
menossa. Lopussa on vielä prosenttimerkki ja välilyönti.
Kehotteen näkyminen ilmoittaa, että kone on komentotilassa eli
valmis ottamaan vastaan komentoja.
Teknisemmin sanoen: tällöin sen, mitä käyttäjä näpyttelee, käsittelee
Unixin komentotulkki (engl. shell),
joka yrittää tulkita näpyttelyt
komennoiksi ja suorittaa ne.
Kone voi myös olla esim. jonkin ohjelman käskytilassa, siis valmiina vastaanottamaan kyseisen ohjelman sisällä annettavia käskyjä mutta ei Unixin komentoja. Tällöin kehote on erinäköinen, esim.
ftp>
.
Komentotilassa eli kehotteen perään voidaan kirjoittaa Unixin komento tai sellaisen ohjelman nimi, joka halutaan käynnistää. Jokainen komento tai ohjelman nimi päätetään return- tai enter-näppäimellä. Tätä ei jäljempänä enää yleensä erikseen mainita.
Komentoja kirjoitettaessa tehtyjä näppäilyvirheitä voi korjailla eri tavoin. Esimerkiksi viimeksi kirjoitetun merkin voi yleensä poistaa DEL-näppäimellä.
Seuraavassa on pieni esimerkki siitä, miltä komentojen antaminen näyttää.
Yksityiskohdat kuten kehotteen muoto tietysti vaihtelevat. Esimerkissä
käyttäjä antaa kolme komentoa: date
(tulostaa päiväyksen
ja kellonajan), cal 2 1996
(tulostaa helmikuun kalenterin
vuonna 1996) ja rm logfile
(hävittää, engl. remove,
tiedoston logfile
):
epsilon ~ 51 % date
Tue Feb 6 10:42:55 EET 1996
epsilon ~ 52 % cal 2 1996
February 1996
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29
epsilon ~ 53 % rm logfile
epsilon ~ 54 %
Huomaa erityisesti, että komennon onnistuneesta suorituksesta ei
useinkaan tule mitään palautetta
vaan tulostuu vain uusi kehote.
Esimerkissä kävi näin komennon rm logfile
tapauksessa.
Pääteistuntoa ei saa lopettaa vain sammuttamalla virta päätteestä. Virran sammuttaminen ei useinkaan ole tarpeen, mutta tärkeämpää on, että se ei suinkaan takaa pääteistunnon katkeamista. Jos seuraava käyttäjä virran kytkettyään huomaa olevansa sinun pääteistunnossasi, se aiheuttaa hänelle turhaa hämminkiä - ja mahdollisesti sinulle ikäviä seuraamuksia.
Pääteistunto lopetetaan komennolla
logout
Tähän järjestelmä yleensä vastaa ilmoituksella, joka kertoo istunnon päättymisestä. Tämän jälkeen voit luovuttaa päätteen toiselle, sammuttaa pääte-emulaattorin tms.
Tämä luku käsittelee tiedonhakua ja viestintää tietokoneiden avulla lähinnä siltä kannalta, miten eräitä siihen sopivia ohjelmia käytetään Unix-koneissa. Tässä ei juurikaan käsitellä esim. sellaisia kysymyksiä kuin mikä Web järjestelmänä on ja miten sitä hyödynnetään tehokkaasti tai miten nyyseissä (newseissä) tulisi käyttäytyä. Sellaisia yleisiä aiheita käsittelevät mm. Web-julkaisemisen opas. ja Nyysiopas.
Kuvattavia tiedonhaku- ja viestintävälineitä voi usein käyttää hyväkseen etsittäessä ratkaisuja atk-alan ongelmiin ja kysymyksiin. Välineet ovat kuitenkin luonteeltaan yleisiä, ja niistä on usein suurta apua eri alojen ongelmissa ja tarpeissa.
Esittelemme tiedonhaun ja viestinnän mahdollisuuksia seuraavassa järjestyksessä, joka on eräs näkemys niiden tärkeysjärjestyksestä:
World Wide Web eli lyhyesti Web [lausutaan suomessa yleensä veb tai vep] tarkoittaa erästä kehittynyttä ja erittäin nopeasti laajenevaa informaatiojärjestelmää. Sen nimestä käytetään myös lyhenteitä WWW ja W³. Se tarjoaa ihmisille ja organisaatioille tehokkaan tavan tarjota tietoja muiden luettavaksi. Web tarjoaa monipuolisia mahdollisuuksia kuvien, kuvioiden, värien ja eri kirjasintyyppien käyttöön, edellyttäen että käyttäjän laite tukee niitä. Myös ääntä voi siirtää, jos käyttäjän laitteessa on sopiva äänigeneraattori. Tekstipäätteelläkin voi käyttää Webiä mutta kuvia ei silloin tietenkään näe.
Web tukee ns. hypertekstiä. Tämä tarkoittaa mm. sitä, että tiedon tuottaja voi merkitä dokumentin tekstin sanoja linkeiksi, jotka viittaavat toisiin dokumentteihin (tai saman dokumentin toiseen kohtaan). Tiedon lukija näkee linkit muusta tekstistä poikkeavina, esim. alleviivattuina tai värillisinä, ja hän voi hiirtä käyttäen tai muulla tavalla valita linkin seuratakseen sitä, siis saadakseen ruudulle sen dokumentin, johon linkki viittaa.
Jotta Webiä voisi käyttää, tarvitaan jokin Web-katseluohjelma (eli lukuohjelma eli käyttöliittymä eli selain eli browser eli ...). On olemassa varsin monia erilaisia katseluohjelmia eri tietokoneille; suureksi osaksi ne tarjoavat samoja mahdollisuuksia ja toimintoja, mutta usein eri nimillä. Suosituin Unix-koneissa lienee Netscape. Tässä oppaassa kuvataan kuitenkin lyhyesti toisentyyppinen, tekstipohjainen ohjelma: Lynx.
Webin yhteydessä keskeinen käsite on URL (Uniform Resource Locator), jonka avulla voidaan yksiselitteisesti ja suhteellisen lyhyesti ilmaista, missä jokin tieto on Webissä taikka jossakin muussa informaatiojärjestelmässä, johon on yhteys Webistä. URL on eräänlainen tiedostonnimen laajennus: se ilmoittaa, missä tietokoneessa dokumentti sijaitsee ja missä tiedostossa se siinä on. (Lyhenne URL luetaan suomessa milloin sanana, url(i), milloin lyhenteenä, uu är äl.)
Esimerkki URL:stä on
http://www.vtt.fi/
, joka viittaa Valtion teknisen
tutkimuskeskuksen (VTT) Webiin panemien tietojen pääsivuun.
Jos tietää (esim. lehdessä julkaistun jutun perusteella) jonkin dokumentin URL:n, siihen pääsee suoraan käsiksi ilmoittamalla URL:n Web-katseluohjelmalle. Ilmoittamisen tapa vaihtelee ohjelman mukaan. URL:ää kirjoitettaessa on syytä olla huolellinen muun muassa siksi, että niissäkin yleensä isojen ja pienten kirjainten ero on merkitsevä. Onneksi URL:ien kirjoittamisen käsin voi useimmiten välttää.
Webin yhteydessä puhutaan "Web-sivuista", joihin URL:t viittaavat, mutta nimitys ei ole kovinkaan onnistunut: "Web-sivu" ei suinkaan välttämättä mahdu kuvaruudulle yhdellä kertaa vaan voi olla sivu-sanan arkimerkityksessä useita sivuja (jopa kymmeniä tai satojakin sivuja) pitkä.
Kun Web-katseluohjelma käynnistetään, ruudulle tulee aloitussivu, joka voi eri koneissa ja eri käyttäjillä olla erilainen. Ruudulla näkyvästä dokumentista pääsee muihin dokumentteihin valitsemalla siitä linkkejä. Valinta tehdään eri katseluohjelmissa eri tavalla. Vaihtoehtoisesti käyttäjä voi, kuten edellä mainittiin, ilmoittaa suoraan URL:llä, minkä dokumentin hän haluaa seuraavaksi nähdä. Dokumentteja voi myös etsiä avainsanojen perusteella erilaisilla hakujärjestelmillä, esim. Google.
Jos ruudulla näkyvä dokumentti on sellainen, johon haluat ehkä myöhemmin palata, voit tallettaa tiedon siitä henkilökohtaiseen kiinnostavien dokumenttien listaasi. Tällöin voit myöhemmin vain poimia sen listasta ilman, että sinun tarvitsee kirjoittaa tai edes tietää dokumentin URL:ää. (Teknisesti kyllä nimenomaan dokumentin osoite eli URL tallentuu sinulle, ei itse dokumentti.) Kyseisestä listasta käytetään eri katseluohjelmien yhteydessä eri nimiä kuten hotlist, bookmarks ja quicklist, ja listan käsittelyn keinot ovat erilaisia.
Kun olet esim. seuraavien ohjeiden avulla hiukan tutustunut jonkin Web-katseluohjelman käytön perusteisiin, kannattaa ehdottomasti opetella lisäksi ainakin
Lynx on tekstipohjainen Web-katseluohjelma, jota voi käyttää kaikenlaisilla päätteillä, modemiyhteyksillä jne. Perusasioita:
lynx
b
-näppäintä (b johtuu
sanasta backwards).
z
-näppäintä.
g
-näppäintä (go),
jolloin Lynx kysyy
URL to open:
, ja sitten kirjoitetaan URL
ja painetaan returnia.
Q
-kirjaimella
(quit).
Meili (tunnetaan myös mm. nimillä sähköposti, electronic mail, E-mail ja maili) on tietokoneviestinnän muoto, jossa viestin vastaanottajan ei tarvitse olla juuri sillä hetkellä käyttämässä konettaan, jotta viesti menisi perille. Lähettäjä kirjoittaa viestin omalla meiliohjelmallaan, joka lähettää sen tietokoneeseen, jossa vastaanottajalla on käyttäjätunnus. Vastaanottaja voi lukea meilin omalla meiliohjelmallaan hänelle sopivana ajankohtana.
Meilin käyttökelpoisuus perustuu sen nopeuteen ja tavoittavuuteen: jos käyttäjät lukevat meilinsä vähintään kerran päivässä, myös puhelimen tavoittamattomissa olevan työ- tai opiskelutoverin saa kiinni tehokkaasti.
Meili on henkilökohtaista, ts. viestiä lähetettäessä pitää erikseen nimetä jokainen vastaanottaja, ja jokainen heistä saa oman kopionsa viestistä. Tulleita viestejä pääsee normaalisti lukemaan vain oikea vastaanottaja omalla tunnuksellaan ja salasanallaan. Koska meilinlähetysohjelma voi kuitenkin joissain harvinaisissa tilanteissa toimia "väärin" ja koska toisten ihmisten meilien lukeminen saattaa olla teknisesti mahdollista (vaikkakin laitonta), niin todella salaisiksi tarkoitettuja tietoja ei meilillä kannata lähettää.
Meilin käyttö ei edellytä mitään erillistä lupaa, vaan meiliä voivat lukea ja lähettää kaikki, joilla on lupa johonkin Unix-koneeseen. Meilin käytössä on kuitenkin noudatettava sitä koskevia sääntöjä, hyviä tapoja ja tervettä järkeä. Häiriköinti kuten ketjukirjeet ja summittaiset massalähetykset ("spämmäys") ovat kiellettyjä.
Lisätietoja meilistä yleensä (ei eri meiliohjelmien käytöstä) on Meilioppaassa.
Meili, kuten postikin, kulkee paremmin, jos osoite on oikein. Jos meilin osoitteessa on pienikin kirjoitusvirhe, se yleensä ei mene perille minnekään vaan palautuu lähettäjälle.
Meiliosoitteita on monenlaisia, vaikka rajoituttaisiinkin vain ns. Internet-osoitteisiin. Mitä paikallisempaa meili on, sitä yksinkertaisempi osoite riittää. Toisaalta täydellisempi osoite on aina varmempi. Osoite voi olla esimerkiksi jotakin seuraavista muodoista:
@
kone
vain yhden ns. alueen eli domainin sisällä (ei suositella)
.
alue
yleispätevä eli siihen voi lähettää meiliä kaikkialta Internetistä
@
alue
on myös yleispätevä mutta
toimii vain,
jos vastaanottajalle on erikseen
rekisteröity tällainen osoite.
.fi
tai .com
).
Kun kerrot meiliosoitteesi,
kerro ehdottomasti täydellinen Internet-osoite!
Kun lähetät meiliä, niin meiliohjelma yleensä automaattisesti liittää viestiin tiedon omasta meiliosoitteestasi. Vastaanottaja voi yleensä jollakin helpolla tavalla (esim. Pineä käytettäessä jäljempänä kuvattavalla r-käskyllä) lähettää sinulle vastausviestin siten, että hänen meiliohjelmansa automaattisesti osaa lähettää sen sinun osoitteeseesi. Sinun ei siis yleensä tarvitse itse kirjoittaa osoitettasi lähettämiisi meileihin - paitsi jos jostain syystä haluat vastauksen eri osoitteeseen kuin siihen, josta lähetät viestisi.
Hyvin yleisesti kysytään: "Miten saan selville kaverini meiliosoitteen?"
Varmin tapa on kysyä häneltä, ja yleensä se on ainoa kohtuullisen varmasti
toimiva tapa.
Monissa tapauksissa on muitakin keinoja kuten
finger-
ja whois
-palvelu, mutta ne eivät ole yleispäteviä. Ks.
myös ohjetta meiliosoitteiden etsimisestä.
Useissa Unix-koneissa on helppokäyttöinen mutta silti melko monipuolinen meiliohjelma, Pine, joka esitellään seuraavassa. (Nimi Pine luetaan suomessa yleensä kirjoitusasun mukaisesti, mutta myös englanninmukaista ääntämystä pain esiintyy.) Lukuisia muitakin meiliohjelmia on olemassa.
Pinen käytön perusteiden alkeet:
q
(johtuu
sanasta quit).
Kun ensimmäisen kerran käynnistät Pinen, näet ruudullasi Pinen tervetuloviestin (Welcome to Pine). Lisäksi Pine ehkä kysyy, haluatko lyhyehkön (englanninkielisen) käyttöohjeen. Vastattuasi myöntävästi (Y) tai kieltävästi (N) pääset Pinen normaaliin aloitustilaan. Jos vastasit myöntävästi (Y), saat hetken kuluttua meilitse ohjeen. Voit lukea sen Pinellä kuten minkä hyvänsä viestin. (Kuitenkin ohjeen tilaaminen on tuskin tarpeellista, koska sen sisältö on melko tekninen ja koska Pineä koskevia lisätietoja on luettavissa Webillä.)
Näin luet meiliä:
pine
N
-kirjain rivin alussa, jos et ole lukenut viestiä,
ja A
-kirjain,
jos olet jo paitsi lukenut sen myös vastannut siihen.
Viestiin vastaamiseksi paina r
-näppäintä. Pääset vastaamistilaan,
joka on samantapainen kuin jäljempänä kuvattava normaali
meilinlähetystila. Sitä ennen Pine kuitenkin kysyy, haluatko lainata
saamasi meilin mukaan vastaukseen:
Include original message in Reply? (y/n/^C) [n]:
Yleensä kannattaa painaa returnia, mikä merkitsee, ettet halua
lainata. Jos kuitenkin haluat lainata, kirjoita y
ja paina returnia.
Kirjoita joka tapauksessa vastauksesi samaan tapaan kuin meiliä
muuten lähetettäessä, mutta ottaen huomioon, että voit ruveta
suoraan kirjoittamaan itse vastausviestiä. Vastauksen lähetettyäsi
olet samassa tilanteessa kuin edellä kohdassa 5 kuvattiin.
Viestin hävittämiseksi
paina d
-näppäintä. Tällöin Pine automaattisesti
siirtyy näyttämään seuraavaa lukematonta viestiä saapuneen meilin
laatikostasi. Hävitettyä viestiä ei saa takaisin sen jälkeen, kun
olet poistunut Pinestä. Jos siis et ole varma siitä, tarvitsetko
viestiä ehkä myöhemmin, kannattaa hävittämisen asemesta siirtää
se kansioon seuraavassa kuvattavalla tavalla.
Siirtääksesi viestin haluamaasi kansioon
paina s
-näppäintä.
Tällöin Pine kysyy
SAVE to folder [saved-messages] :Jos vain painat returnia, viesti siirtyy kansioon nimeltä
saved-messages
.
Folder "
kansionnimi" doesn't exit. Create? (y/n/^C) [y]
Jos haluat, että Pine perustaa kansion, paina returnia. Jos taas
kirjoitit kansion nimen väärin, kirjoita n
ja paina returnia ja
yritä uudestaan eli kirjoita s
jne. Kansioiden käytöstä kerrotaan
lisää jäljempänä.
Lähettääksesi viestin eteenpäin
toiselle henkilölle eli
"forwardoidaksesi" sen paina f
-näppäintä. Tällöin pääset tilaan, joka
vastaa normaalia meilinlähettämistilaa, mutta viestiosassa on
valmiiksi lopussa teksti Forwarded message ja sen jäljessä
alkuperäinen viesti. Kirjoita vastaanottajan osoite normaalisti,
ja yksinkertaisimmassa tapauksessa voit sitten lähettää viestin
control-x:llä.
Saattaa kuitenkin olla hyvin aiheellista lisätä
viestin alkuun (ennen tekstiä Forwarded message)
oma selityksesi,
lyhimmillään ehkä jotain sellaista kuin "Tiedoksesi vain" tai
"Tämä asia kuulunee sinun alaasi" ja vasta sitten painaa control-x:ää.
Jos et halua tehdä viestille mitään,
paina n-näppäintä päästäksesi
lukemaan seuraavan lukemattoman viestin. Jos sellaista ei ole,
tulee viesti No more messages. Tällöin voit esim. lopettaa
Pinen käytön painamalla q
-näppäintä (ja vastaamalla Pinen ehkä
esittämiin kysymyksiin) tai mennä Pinen päävalikkoon
i
-näppäimellä.
Huomaa, että jos et tee viestille mitään, niin Pine myöhemmin edelleenkin
näyttää sen saapuneen meilin listassa, lukemattomien meilien joukossa,
tosin luetuksi merkittynä (s.o. listan kyseisen rivin alussa
ei enää ole N
-kirjainta). Mitä enemmän jätät viestejä tällä tavoin
kokonaan käsittelemättä, sitä kauemmin Pinen käynnistys kestää.
Näin lähetät meiliä:
pine
c
eli vain paina
c
-näppäintä.
To : Cc : Attchmnt: Subject : ----- Message Text -----ja kursori on näistä riveistä ensimmäisen lopussa, valmiiksi kohdallaan. Kirjoita vastaanottajan meiliosoite ja paina returnia. Tällöin Pine saattaa jollakin tavalla täydentää osoitetta. Joka tapauksessa kursori siirtyy seuraavan rivin (Cc :) loppuun. Paina returnia. Kursori siirtyy seuraavan rivin (Attchmnt:) loppuun. Paina taas returnia. Nyt olet Subject-rivillä. Kirjoita viestin otsikko ja paina returnia. Kursori siirtyy Message Text -rivin jälkeisen rivin alkuun, alueelle, johon itse viesti kirjoitetaan.
Halutessasi voit antaa To:-rivillä useita vastaanottajia, osoitteet pilkulla toisistaan erottaen. Voit myös antaa Cc:-rivillä yhden tai useamman lisävastaanottajan. Attchmnt:-riviä käytetään silloin, kun halutaan lähettää viestin mukana esim. kuvatiedosto, mutta siihen ei tässä ohjeessa puututa.
y
kysymykseen
tiedoston tallentamisesta (Save file - -); näin pääset takaisin Pineen
niin, että Emacsilla muokattu viesti on valmiina lähetettäväksi.
q
:ta tai jatkaa esim. lukemalla postejasi.
Kansio (folder) on väline meilien säilömiseen. Teknisesti kansio on tiedosto, mutta yleensä kaiken tarpeellisen kansioiden käsittelyn voi tehdä Pinen sisällä sen komennoilla.
Etenkin jos sinulle tulee paljon meiliä, sinun kannattaa säilöä saapunut meili kansioihin sopivasti ryhmiteltynä, esimerkiksi kuhunkin aihepiiriin liittyvä meili omaan kansioonsa, jolle annat aihepiiriä kuvaavan nimen. (Tietysti sellainen meili, jota ei enää tarvita, kannattaa hävittää.)
Pine tallettaa automaattisesti kaiken lähettämäsi meilin kansioon
nimeltä
Kun haluat lukea uudelleen sellaisen viestin, jonka olet tallettanut
johonkin kansioon, anna Pinen sisällä käsky l
(pikku ällä), jolloin saat listan
kansioistasi. Mene nuolinäppäimillä
sen kansion nimen kohdalle, jossa
viesti on, ja paina returnia. Tällöin saat kansiossa olevien viestien
listan, joka on samaa muotoa kuin normaali saapuneen meilin lista.
(Itse asiassa saapunut meilikin on kansiossa. Sen nimi on
INBOX.)
Nyt voit lukea vanhoja viestejä aivan samaan tapaan kuin uusiakin.
Sitten voit jatkaa Pinen käyttöä normaalisti, esim. antaa uuden
l
-käskyn, jos haluat käsitellä jotakin muuta kansiota,
tai c
-käskyn,
jos haluat lähettää meiliä, jne.
Pinessä on hyvä sisäinen help-järjestelmä, johon pääsee
kysymysmerkillä (?
). Siitä pääsee takaisin Pinen normaalitilaan
e
-näppäimellä.
Edellä esitetty sisältää olennaisesti saman kuin erillinen Pinen käyttöohje. Ks. myös suomenkielisiä lisäohjeita, joissa viitataan englanninkielisiin lisätietoihin.
Nyysit (Usenet, news) oli aikoinaan vahvasti Unix-painotteinen viestintäjärjestelmä. Edelleenkin sen käyttö myös Unix-koneissa on toki mahdollista. Käytössä on kuitenkin suhteellisen vähän käyttöjärjestelmästä riippuvia asioita. Enemmänkin on kyse toisaalta yleisistä käyttöperiaatteista ja -säännöistä, toisaalta ohjelmakohtaisista asioista.
Niinpä tässä vain viitataan laajahkoon Nyysioppaaseen. Sen kohdassa Nyysiohjelmia Unixissa mainitaan muutamia yleisesti käytettyjä ohjelmia ja viitataan niiden käyttöohjeisiin.
Koska koneessa voi olla yhtä aikaa monia muitakin,
voi olla mielenkiintoista ja tarpeellista tietää,
keitä he ovat ja mitä he ovat tekemässä.
Esimerkiksi jos haluaisit "reaaliaikaisen" yhteyden johonkuhun
esim. jäljempänä kuvattavalla talk
-komennolla,
kannattaa ensin tarkistaa, onko hän käyttämässä konetta ja jos on
niin mitä konetta.
Yksi komento tähän tarkoitukseen on
who
, johon vastaukseksi kone näyttää listan kaikista koneessa olevista käyttäjistä. Esimerkki:
vipunen ~ % who root console Sep 11 10:07 teemu tty02 Sep 11 14:09 tiina tty05 Sep 11 09:16 matti tty12 Sep 11 10:58 root ttyp0 Sep 11 09:34 paivi ttyp1 Sep 11 21:21 anna ttyp3 Sep 11 10:42 antti ttyq0 Sep 11 14:09Tulostuksessa näkyy ensin henkilön käyttäjätunnus, sitten sen päätelinjan (
tty
) numero,
jota kyseinen tunnus käyttää, ja lopuksi ajankohta (päivämäärä ja kellonaika), jolloin käyttäjä on aloittanut tämänkertaisen istuntonsa.
Myös komento w
(joka ei toimi kaikissa Unix-koneissa) näyttää samantapaisen listan.
Sen antama lista on hiukan monipuolisempi kuin
who
-komennon antama. Alla on esimerkki selityksineen.
vipunen ~ % w 12:23am up 15:30, 7 users, load average: 0.23, 0.07 User tty login@ idle JCPU PCPU what root console 10:07am 14:03 18 4 -tcsh teemu tty02 02:09pm 27 2 1 ls jukka tty05 09:16am 03:26 34 7 emacs liisa tty12 10:58am 16 2 cp root ttyp0 09:34am 13:47 29 3 more paivi ttyp1 09:21pm 4:24 2:53 w anna ttyp3 10:42am 3 1:21 48 manEnsimmäisellä tulostusrivillä näkyy
User
käyttäjätunnus
tty
päätelinjan numero
login@
pääteistunnon (login) alkamisaika
idle
"laiska aika" eli kuinka pitkään aikaan kyseinen käyttäjä ei ole tehnyt yhtään mitään (painanut näppäintäkään)
JCPU
ja PCPU
ovat
CPU-aikoja eli
tunnuslukuja sille, kuinka paljon käyttäjä on konetta tämän istuntonsa
aikana kuormittanut
what
mitä komentoa tai ohjelmaa käyttäjä on paraikaa ajamassa.
Jos halutaan tietoja muista käyttäjistä, voi "fingeröidä" eli käyttää
finger
-komentoa, josta on muutama erilainen muoto. Sillä voi katsoa myös sellaisen käyttäjän tietoja, joka ei ole käyttämässä konetta juuri sillä hetkellä.
Tulostuksen asu on hiukan erilainen eri koneissa, ja eri käyttäjistä tulostuu erilaisia määriä tietoja. Osa tiedoista on nimittäin käyttäjän itsensä kirjoittamaa ja näkyville laittamaa, kun taas osa on koneen automaattisesti tuottamaa.
Tietosuojasyistä on finger
-komennon käytettävyyttä
saatettu rajoittaa.
finger
tunnusJos halutaan tietoja saman koneen toisesta käyttäjästä, käytetään komentoa
finger
tunnus.
Esimerkki:
vipunen ~ % finger tsirkia Login: tsirkia In real life: Timo Sirkiä Directory: /u/lai/lk/tsirkia Shell: /bin/tcsh Site Info: Lk, U257B,4514303 No Plan.Jos kyseisen käyttäjän kotihakemistossa on tiedosto nimeltä
.plan
, sen sisältö tulostuu
finger
-komentoa käytettäessä sen sijaan,
että tulostuu No Plan.
kuten edellä.
Tämä kuitenkin edellyttää, että
tiedoston suojaus sallii sen eli että
muilla käyttäjillä on suoritusoikeus hänen kotihakemistoonsa
ja lukuoikeus
.plan
-tiedostoon.
Sama koskee tiedostoa nimeltä .project
.
Huomaa erityisesti, että näissä tiedostonnimissä piste kuuluu nimeen
eikä sitä saa jättää pois.
On käyttäjän oma asia, perustaako hän tiedoston .plan
ja .project
ja mitä hän niihin kirjoittaa, mutta
.plan
on tarkoitettu antamaan yleensä tietoja käyttäjästä,
.project
taas kertomaan, mitä ajankohtaisia hankkeita hänellä on menossa.
Käyttäjä voi lisäksi muuttaa varsinaisia henkilötietojaan
chfn
-komennolla.
finger
tunnus@
koneMyös muiden koneiden käyttäjistä voi saada tietoja
finger
-komennolla.
Tällöin kirjoitetaan argumenttiin tunnuksen perään @-merkki ja koneen nimi:
finger
tunnus@
kone.
Koneesta ilmoitetaan yleisessä tapauksessa Internet-nimi, mutta
paikallisesti saattaa lyhempikin muoto toimia.
Esimerkki:
vipunen ~ % finger tiina@hila.hut.fi [hila.hut.fi] Login name: tiina In real life: Tiina Talvi Office: U649, 451-4316 Home phone: 451-0894 Directory: /u/users/tiina Shell: /bin/tcsh On since Nov 17 14:41:19 on tty2 from 130.111.222.30: 34 minutes Idle Time No Plan.
finger
Pelkkä komento finger
ilman mitään argumentteja antaa
tiedot siitä,
ketkä kaikki käyttävät juuri sillä hetkellä sitä konetta,
jossa komento annetaan.
Saatava tulostus muistuttaa hiukan who
-komennolla saatavaa.
Esimerkki:
vipunen ~ % finger Login Name TTY Idle When Site Info jryynane Jari P Ryynänen pa Thu 10:28 sasu Sanna Suominen ps4 Thu 11:17 zeizei Janne K Janhunen p7 20:40 Wed 14:36 Y250D, 4514325 zeizei Janne K Janhunen pc 2d Thu 10:55 Y250D, 4514325Tässä listassa näkyvät käyttäjien nimet (pitkistä nimistä vain alkuosa) ja, mikäli he ovat niin halunneet, myös heidän työhuoneidensa osoitteet ja puhelinnumerot.
finger @
kone
On mahdollista kysyä toiselta koneelta, ketkä käyttävät konetta juuri sillä hetkellä.
Tätä varten annetaan finger
-komennossa argumenttina
@
-merkki ja koneen nimi tai Internet-osoite:
finger @
kone
(Merkki @
on tarpeen, jotta tämä komento erottuisi tapauksesta, jossa
argumenttina on käyttäjätunnus.)
Esimerkki:
lk-hp-8 ~ 122 % finger @sauna.cs.hut.fi [sauna.cs.hut.fi] Login Name TTY Idle When Office Office Phone haa Hannu Aronsson p2 2d Sun 18:45 U405B 451 3233 jvh Johannes Helander p0 11:07 Sun 18:05 visti Hannu Visti p3 17:01 Sat 15:44 y249d 3231 zaphod Seppo J Niemi p1 20:17 Tue 13:45 y249d 4513231
Seuraavassa kuvattavat viestit ovat sellaisia, joita voi lähettää vain, jos viestin vastaanottajalla on samaan aikaan yhteys koneeseen eli hän on "sisään loganneena". Meilin käyttöhän ei mitenkään edellytä sellaista.
Viestit päätteeltä päätteelle kulkevat välittömästi tai lähes välittömästi ja tulevat heti näkyviin vastaanottajan ruudulle. Tästä on etuja ja haittoja: tämä viestintämuoto mahdollistaa puhelinkeskustelun tai kasvotusten keskustelun tapaisen yhteydenpidon, mutta toisaalta se vaatii molempien osapuolten mukanaoloa samaan aikaan. Lisäksi toisen henkilön lähettämät päätteeltä päätteelle -viestit voidaan kokea häiriöksi (paljon suuremmassa määrin kuin meili).
Välittömän viestinnän komennoissa on käyttäjän "osoitteella" eri merkitys kuin meilissä. Yleisesti ei pidä olettaa, että meiliosoitetta voisi käyttää sellaisissa komennoissa; vain osa osoitteista toimii niissä. Tavallisesti on syytä erikseen selvittää (esim. meilitse kysymällä), onko käyttäjällä osoite, jolla hänelle voi "talkata".
Seuraavassa kuvattavien viestintämahdollisuuksien lisäksi mainittakoon irkki (Irc), joka mahdollistaa useiden käyttäjien välisen "keskusteluyhteyden" (ja myös henkilökohtaisen "keskustelun").
write
Vanhin päätteitse viestimisen muoto Unix-koneissa on write
-komento:
write
tunnus
Komento toimii siis vain saman koneen sisällä.
Komennon kirjoittamisen jälkeen jokainen rivi, joka näppäimistöltä kirjoitetaan, välittyy vastaanottajan päätteelle saman tien, kun rivi on lopetettu
painamalla return-näppäintä.
Viestien lähettäminen on sinänsä yksisuuntaista, mutta eräänlaisen keskusteluyhteyden saa aikaan, jos myös vastaanottaja antaa
write
-komennon.
Voit kirjoittaa rivejä vaikka kuinka monta ja jäädä vaikka välillä odottamaan toisen vastausta. Vaikka toisen vastaus tulisi oman kirjoituksen sekaan ruudulle, ei pääte silti ole sekaisin, vaan voit jatkaa oman viestisi kirjoittamista välittämättä ruudulle ilmestyneestä vastauksesta. Oma kirjoituksesi menee perille juuri sellaisena kuin sen kirjoitit, ilman sotkuja.
Kun et enää halua lähettää uusia viestirivejä, lopeta control-d:llä, jolloin palataan komentotasolle.
talk
Komento talk
luo keskusteluyhteyden kahden käyttäjän välille.
Sitä voi käyttää myös koneesta toiseen,
ja se on Unix-koneissa yleinen niin Suomessa kuin ulkomaillakin.
Kaikissa koneissa sitä ei kuitenkaan ole,
ja lisäksi joskus eri koneiden
talk
-komennot ovat niin epäyhteensopivia,
ettei yhteyttä saa aikaan.
Komento on muotoa
talk
käyttäjätunnus@
kone
missä kone
on koneen Internet-osoite.
Osa @
kone
voidaan jättää pois, jos kyse on saman koneen toisesta käyttäjästä.
Jos kyseisellä käyttäjällä on sillä hetkellä yhteys kyseiseen koneeseen,
niin
komento lähettää hänelle
viestin, joka pyytää häntä hyväksymään yhteyden muodostamisen
antamalla talk
-komennon.
Jos hän toimii pyynnön mukaisesti, syntyy käyttäjien välille
"keskusteluyhteys", jossa kaikki käyttäjän kirjoittama näkyy
saman tien toisen käyttäjänkin ruudulla. Näkyminen on välitöntä,
merkki merkiltä tapahtuvaa, eikä siis riipu returnin painamisista.
Tästä ei seuraa sellaista sotkua kuin voisi luulla, sillä talk
jakaa käyttäjän kuvaruudun kahteen osaan, joista toisessa näkyy hänen
kirjoittamansa ja toisessa toisen käyttäjän kirjoittama.
Yhteys päättyy, kun jompikumpi kirjoittaa control-c:n.
Esimerkki.
Jos Matti Meikäläinen on esim. koneessa
vipunen.hut.fi
Vipunen ja tietää, että hänen kaverillaan Tiinalla on tunnus koneessa
alpha.hut.fi
,
hän voi ehdottaa keskustelua antamalla komennon
talk tiina@alpha.hut.fi(Tässä erikoistapauksessa kävisi myös lyhyempi
talk tiina@alpha
.)
Tällöin jos Tiinalla on pääteyhteys,
hänen näytölleen ilmestyy viesti
Message from Talk Daemon... talk request from masa@vipunen.hut.fi (Matti Meikäläinen) respond with 'talk masa@vipunen.hut.fi'joka toistuu noin kerran minuutissa. Samalla Matin kuvaruutu muuttuu sellaiseksi, että ylälaidassa on vastauksen odottamisesta kertova viesti
Waiting for your party to respond
.
Jos vastausta ei tule noin minuutissa,
tulee viesti Calling your party again
.
Kutsuminen jatkuu automaattisesti vastauksen saamiseen asti
tai kunnes Matti keskeyttää kutsumisen control-c:llä.
Jos Tiina haluaa aloittaa keskustelun, hän vastaa
talk masa@vipuneneli tekee kuten ruudulle tulostuneessa kutsussa pyydetään tekemään.
Kumpikin osapuoli voi aloittaa viestien kirjoittelemisen
heti, kun ruudun ylälaitaan on tullut teksti
Connection established
.
Joissakin tilanteissa talk
-yhteys ei onnistu sen takia, että
eri koneiden
talk-järjestelmät eivät pelaa yhteen (eli käyttävät yhteensopimattomia
talk-protokollia, ks. man talk
, kohta BUGS
).
Tarkemmin sanoen tällöin käy niin, että
talk
ilmoittaa
Checking for invitation on caller's machine
ja sitten ei tapahdukaan mitään.
Silloin voi ehkä käyttää ytalk
-ohjelmaa (ks.
man ytalk
), joka myös
tarjoaa monipuolisempia mahdollisuuksia kuin talk
,
mm. useamman kuin kahden käyttäjän välisen keskustelun.
Voidaan toimia niinkin, että yhdessä koneessa käytetään
ytalk
ia ja toisessa koneessa talk
ia.
Paperitulostusten saamiseen on eri Unix-koneissa erilaisia laitteita ja erilaisia komentoja.
Ei pidä yrittää tulostaa paperille mitään, ennen kuin
ottanut selvää, miten se tehdään käytettävässä järjestelmässä.
Esimerkki: Vanhastaan
on Unix-koneissa käytetty paperitulostukseen
lp
- tai lpr
-nimistä komentoa,
mutta yritys tulostaa tiedosto niillä saattaa päätyä
katastrofiin. Järjestelmä nimittäin saattaa olla sellainen, että
esim. lpr
-komennolla tulostetaan
Postscript-muotoisia
tiedostoja, joita monet ohjelmat tuottavat.
Jos sillä sellaisessa ympäristössä yritetään tulostaa
tavallinen tekstitiedosto suoraan, komento yrittää tulkita
tekstin Postscript-komennoiksi -
ja paperia tuhlaantuu usein paljonkin.
Paperitulostus on Unix-koneissa yleensä
ns. spoolattua tulostusta, mikä tarkoittaa sitä, että tulostuskomento vain lähettää tulostustyön tulostimen
jonoon.
Tulostin sitten tulostaa jonoon saapuneita töitä yhden kerrallaan. Tämä mahdollistaa sen, että eri käyttäjät voivat joustavasti käyttää samoja kirjoittimia. Haittana on, että käyttäjä ei voi etukäteen arvioida, kuinka nopeasti hän saa tiedostonsa paperille. Tilannetta voi kuitenkin katsella
lpq
-komennolla.
Vaikka useiden tulostukseen liittyvien komentojen nimissä esiintyy
historiallisista syistä
kirjainyhdistelmä lp
, joka johtuu englannin sanoista
line printer, kyseessä ei kuitenkaan nykyisin juuri koskaan
ole rivikirjoitin vaan yleensä
lasertulostin, jonka jälki on korkeatasoinen, paino-originaaliksikin
kelpaava.
Selvitä siis käyttämäsi järjestelmän tulostusjärjestelyt ja -komennot. Seuraavassa kuvataan vain muutama tulostustöiden hallintaan liittyvä peruskomento eikä siis puututa siihen, miten tulostustöitä voi lähettää jonoon.
Jos halutaan tarkistaa, onko tiedosto
jonossa tai
tulostumassa, voidaan katsoa tulostusjonon tilanne lpq
-komennolla
(line printer queue).
Pelkkä lpq
näyttää sen kirjoittimen jonon,
joka on oletuskirjoittimena.
Jos halutaan katsoa jonkin muun kirjoittiminen jonotilannetta, on komennolle annettava -P
-valitsin,
jonka jälkeen kirjoitetaan ilman välilyöntiä kirjoittimen nimi, esim.
lpq -Ppsu132
Jos lpq
-komennon tuloste on vain no entries
,
se merkitsee, että kyseinen jono on tyhjä, joten jos lähetät kyseiselle
kirjoittimelle työn, se luultavasti alkaa tulostua saman tien.
lprm
Tulostuksen voi vielä peruuttaa sen jälkeen, kun sen on lähettänyt,
jos se ei ole ehtinyt tulostua vaan on jonossa.
Syitä peruutukseen voivat olla esim.
tulostusjonon pituus (jos on kiire eikä jaksa odottaa oman tiedoston tulostumista)
tai se, että
lähetit vahingossa väärän tiedoston tai löysit tekstistä vielä jotain korjattavaa. Peruutuskomento on lprm
(line printer remove).
Komennolle annetaan
argumenttina työn (job) numero, joka katsotaan
lpq
-komennon antamista tiedoista.
Kirjoitin ilmoitetaan lprm
-komennolle -P
-valitsimella,
joka on samaa muotoa kuin lpq
-komennossa.
Seuraavassa on esimerkki, jossa käyttäjä on koneessa nimeltä Vipunen. Ensin hän lähettää tiedoston tulostettavaksi maari2-nimiselle kirjoittimelle ja tuleekin sitten toisiin ajatuksiin...
Näin käyttäjä
jkorpela
lähettää kirje4.txt
-nimisen tiedoston tulostimelle
(tässä enscript
on eräs eräissä järjestelmissä
käytössä oleva komento tiedoston tulostamiseen)
vipunen ~ % enscript -s -Pmaari2 kirje4.txt { 1 page * 1 copy } spooled to maari2Tämän jälkeen hän löysi kirjeen osoitteesta vielä virheen ja haluaakin peruuttaa tulostuksen. Hän katsoo tulostuksen työn numeron
lpq
-komennolla:
vipunen ~ % lpq -Pmaari2 Rank Owner Job Queue Files Total Size active jjuujarv 590 maari2 /usr/tmp/ESa02988 45706 bytes 1st jkorpela 591 maari2 /usr/tmp/ES9fMBxI 3398 bytesKomennolla saatavista tiedoista näkyy, että työn numero on 591. Seuraavaksi käyttäjä peruuttaa tulostuksen:
vipunen ~ % lprm -Pmaari2 591 Removing 591Halutessaan hän voi vielä tarkistaa lpq-komennolla, että peruutus todella tapahtui eli että hänen työnsä ei enää ole jonossa:
vipunen ~ % lpq -Pmaari2 Rank Owner Job Queue Files Total Size active jjuujarv 590 maari2 /usr/tmp/ESa02988 45706 bytes vipunen ~ %
Eri Unix-koneissa on erilainen valikoima valmisohjelmia. Valikoima riippuu ennen muuta siitä, mitä ohjelmia ylläpito on katsonut tarpeelliseksi ostaa tai muuten hankkia. Käyttäjät voivat myös hankkia ohjelmia omaan käyttöönsä ja panna ne omaan kotihakemistoonsa. Lisäksi valmisohjelmat ovat sekä käyttötarkoitukseltaan että toimintaperiaatteiltaan ja käytöltään hyvinkin erilaisia. Lisäksi seuraavassa esitetään joitakin yleisiä asioita esimerkin avulla. Esimerkkiohjelmana on muuan varsin hyödyllinen ja käyttötavaltaan tyypillinen valmisohjelma, joka on käytettävissä useissa koneissa: "matemaattinen laboratorio" Matlab.
Matlab on tavallaan hyvin kehittynyt mutta helppokäyttöinen laskukoneohjelma. Tavallisten laskujen lisäksi sillä voi suorittaa mm. vektori- ja matriisilaskentaa ja signaalinkäsittelyä. Lisäksi ohjelmalla voidaan esittää matemaattisia suureita graafisesti erilaisina käyrinä ja kuvioina. Aiheemme kannalta ei käytettävän ohjelman luonne kuitenkaan ole olennainen, eikä seuraavan ymmärtämiseksi ole edes välttämätöntä, että koneessasi on Matlab.
Ennen kuin sovellusohjelmaa ryhdytään käyttämään, voi olla tarpeellista antaa jokin komento, jolla ohjelma "otetaan käyttöön". Tämä johtuu mm. siitä, että ohjelma voi sijaita sellaisessa paikassa, ettei se normaalisti "näy" käyttäjälle. Lisäksi ohjelman käyttö voi edellyttää joitakin alustustoimenpiteitä.
Yleisesti ottaen ohjelman käyttäminen edellyttää, että käyttäjän ns. hakupolkuun (path) lisätään se hakemisto, jossa ohjelma sijaitsee. Komentotulkki etsii määritellyistä hakupoluista suoritettavia ohjelmia. Esimerkiksi T-shell-komentotulkissa hakupolkuun lisääminen tapahtuu esim. komennolla
setenv PATH $PATH\:
hakemisto
joka teknisesti sanottuna muuttaa
ympäristömuuttujan $PATH
arvoa.
Tällöin käyttäjän siis täytyy tietää, missä hakemistossa ohjelma sijaitsee käytettävässä koneessa. Tämä vaatii asian selvittämistä järjestelmäkohtaisista käyttöohjeista. On kuitenkin mahdollista, että näitä asioita on eri tavoin tehty helpommiksi käyttäjille. Esimerkiksi käyttäjälle valmiiksi perustettuun alustustiedostoon on saatettu panna polkumäärittely, jonka ansiosta tavallisimman sovellusohjelmistot ovat suoraan käytettävissä.
Kun ohjelma on tarvittaessa edellä kuvatulla tavalla "otettu käyttöön", se käynnistetään yleensä kirjoittamalla ohjelman nimi, esim.
matlab
Tätä ennen kannattaa kuitenkin tutustua käyttöohjeeseen ainakin sen verran, että tietää, miten ohjelmasta pääsee pois!
Se nimi, jolla ohjelma käynnistetään, on yleensä pienikirjaiminen. Dokumenteissa ja muissa teksteissä käytetään tämän takia usein myös pienikirjaimista asua, mutta tässä oppaassa noudatetaan yleensä sitä kieliopin yleistä sääntöä, että erisnimet kirjoitetaan isolla alkukirjaimella.
Tämän jälkeen ohjelma usein kirjoittaa päätteelle jonkin alkuilmoituksen ja tulostaa oman kehotteensa. Kehote voi olla monennäköinen, mutta joka tapauksessa se on merkki siitä, että nyt ollaan kyseisen ohjelman sisällä ja kelvollisia syötteitä ovat ohjelman omat käskyt. Unixin komentoja ei siis voi antaa. (Monissa ohjelmissa on tosin erityinen käsky, jolla voi välittää Unixin komentotulkin suoritettavaksi komennon.) Kehote on myös viesti siitä, että ohjelma on valmis ottamaan vastaan käskyjä (eikä esim. ole suorittamassa laskentaa).
Esimerkiksi Matlabin alkuilmoitus ja kehote voivat olla seuraavannäköiset (asiassa on hiukan vaihtelua tietokoneen ja Matlabin version mukaan):
< M A T L A B (R) > (c) Copyright 1984-93 The MathWorks, Inc. All Rights Reserved Version 4.1 Jul 1 1993 Commands to get started: intro, demo, help help Commands for more information: help, whatsnew, info, subscribe >>Tässä
>>
on Matlabin oma kehote.
Kun olet antanut Matlabille jonkin käskyn ja se on suorittanut sen, kehote tulostuu uudelleen.
Kunkin valmisohjelman käskyjen rakenne on erilainen eikä välttämättä muistuta Unixin komentojen rakennetta mitenkään. Ohjelmaa ei suinkaan aina ole alun perin tarkoitettu toimivaksi (vain) Unix-koneissa, ja muutenkin ohjelman suunnittelu on yleensä melko riippumatonta käyttöjärjestelmien ja muiden ohjelmien suunnittelusta.
Matlabin ymmärtämistä käskyistä yksinkertaisimmat ovat kaavoja, joissa on muuttuja, yhtäläisyysmerkki ja matemaattinen lauseke. Matlabilla on myös sellaisia käskyjä, jotka enemmän muistuttavat valmisohjelmien käskyjen tyypillistä rakennetta: avainsana (käskysana) ja lista argumentteja.
Matlabille annettavat käskyt lopetetaan painamalla return-näppäintä. Tämä on tyypillistä esim. matemaattisissa valmisohjelmissa. On kuitenkin olemassa sellaisiakin ohjelmia, jotka reagoivat välittömästi käyttäjän näppäilemiin merkkeihin ja joiden käskyt saattavat olla esim. yksikirjaimisia; tällöin return-näppäimen painaminen saattaa olla erillinen käsky tai se voi olla täysin vaikutuksetonta.
Matlabille annetaan tehtäviä ratkottaviksi tähän tapaan:
>> x=2+2 x = 4 >>Tässä siis käyttäjä kirjoitti Matlabin kehotteen
>>
perään käskyn x=2+2
,
ja Matlab vastasi laskemalla halutun lausekkeen ja kirjoittamalla vastauksen sekä oman kehotteensa merkiksi siitä, että nyt voi antaa uuden käskyn.
Matlabin yhtenä etuna laskukoneisiin verrattuna on se, että sillä voi tallettaa tuloksen muuttujan (edellä x
:n) arvoksi, jota voi myöhemminkin (Matlabin saman käyttökerran aikana) käyttää uudelleen. Jos esimerkiksi kirjoitetaan
y = x^2niin Matlab vastaa (tulkiten symbolin
^
potenssiinkorotuksen merkiksi)
y = 16
Eri ohjelmien käyttöohjeita on tarjolla hyvin eri muotoisina: painettuina alkuperäiskäsikirjoina (lähes aina englanninkielisinä), suppeampina monistettuina oppaina (usein suomenkielisinä), tietokoneella luettavassa muodossa ohjetiedostoina tai Web-dokumentteina jne.
Joistakin ohjelmista saa tietoja
man
-komennollakin, mutta
yleensä siten saatavat tiedot, jos niitä onkaan, ovat vain teknisiä
ohjeita ohjelman käynnistämisestä, ei itse käytöstä.
Erityisesti on syytä mainita, että monissa ohjelmissa on "sisäänrakennettuja" käyttöohjeita, ns. on-line help. Tämä tarkoittaa sitä, että jollakin ohjelmalle annettavalla käskyllä käyttäjä saa päätteelleen käyttöohjeita, esimerkkejä, demonstraatioita jne.
Sovellusohjelmien sisäiset on-line helpit ovat keskenään erilaisia niin rakenteeltaan ja käyttötavaltaan kuin hyödyllisyydeltäänkin. Tavallisimmat ohjelmien sisäiset käskyt, joilla on-line help käynnistetään, ovat
? help hNäitä siis voi kokeilla melko vaaratta. Joissakin ohjelmissa
h
saattaa kuitenkin olla käsky, joka tekee jotain ihan muuta kuin käynnistää on-line helpin.
Kun Matlab käynnistetään, se ystävällisesti kertoo muutamista avustuskäskyistään. On-line helpin käyttöön pääsee käskyllä
help help
.
Matlabin käskyllä intro
voi käynnistää Matlabin esittelyn, jossa käyttäjän tarvitsee vain painella returnia ja katsella. (Jos alkaa kyllästyttää, voi antaa control-c:n, jolloin palataan Matlabin käskytasolle.) Enemmän esimerkkejä saa käskyllä demo
.
Kun Matlabin käyttö halutaan lopettaa, kirjoitetaan käsky
exit
,
jolloin palataan takaisin Unixin komentotulkin tasolle, t.s. seuraavaksi pitäisi tulostua komentotulkin kehote eikä Matlabin kehotetta.
Eri valmisohjelmien lopetuskäskyt ovat erilaisia, mutta ne löytyvät ohjelmien käyttöohjeista. Yleensä on myös vaaratonta kokeilla erilaisia järkeviltä tuntuvia vaihtoehtoja, mm.
exit
, end
, quit
,
q
,
stop
, fin
, bye
tai control-d;
jos muu ei onnistu, niin control-c yleensä puree.
Emacs on monipuolinen editori eli ohjelma, jolla voi perustaa ja muokata tekstitiedostoja. Editori on eri asia kuin tekstinkäsittelyohjelma: editorilla ei esimerkiksi voi (ainakaan suoraan) tuottaa tekstiä, jossa on erilaisia kirjasinlajeja.
Emacsin tärkeimpiä piirteitä kuvaa Emacs-opas.
Seuraavassa on hyvin lyhyet perusohjeet, joilla toivottavasti pääsee alkuun:
emacs
tiedostonnimi
missä tiedostonnimi on joko se nimi, jonka haluat antaa perustettavalle uudelle tiedostolle, tai olemassaolevan tiedoston nimi, jos haluat editoida sitä.
fg
.
Seuraavassa on aivan perusasioita omien ohjelmien tekemisestä ja suorittamisesta; tarkempia ohjeita on oppaassa Ohjelmointi Unixissa. Tässä käsitellään varsinaisilla ohjelmointikielillä kirjoitettuja käännettäviä ohjelmia, ei esim. ns. shell-skriptejä tai Awk- tai Perl-ohjelmia. Yleisesti huomattakoon, että kokonaisen oman ohjelman tekemistä kannattaa yleensä harkita vasta, kun homma ei hoidu yksinkertaisemmalla tavalla. (Ks. kohtaa Työkaluajattelu.)
Jos halutaan käyttää eli ajaa ohjelmaa, jonka käyttäjä on itse kirjoittanut esimerkiksi C-, Fortran- tai Pascal-kielellä, menetellään näin:
./a.out
Ohjelma kirjoitetaan tiedostoon editorilla, tavallisimmin Emacsilla. Tälle tiedostolle, ohjelman lähdekieliselle tiedostolle eli lähdekoodille (source code), annetaan nimi, jonka loppuosa vastaa käytettyä kieltä. Loppuosan ja kielen vastaavuus on järjestelmä- ja kääntäjäkohtainen mutta voisi olla esimerkiksi seuraavanlainen:
ohjelmointikieli | tiedoston nimen loppuosa |
---|---|
C | .c
|
FORTRAN | .f
|
Pascal | .p
|
Kirjoittamastasi ohjelmasta, ns. lähdekoodista (source), tehdään suorittamiskelpoinen ohjelmatiedosto eli binaaritiedosto kääntämällä. Ohjelma käännetään komennolla, joka valitaan käytetyn ohjelmointikielen mukaan seuraavasti.
Tyypillisiä kääntämiskomennon nimiä ovat
cc
C-ohjelmille,
f77
tai f90
Fortran-ohjelmille ja
pc
Pascal-ohjelmille.
Joissakin koneissa on tarjolla joillekin ohjelmointikielille useita vaihtoehtoisia kääntäjiä.
Erityisesti mainittakoon Gnu-C, joka saattaa olla käytettävissä nimellä
gcc
ja jota monet pitävät parempana kuin
laitevalmistajien tekemiä C-kääntäjiä.
Kääntämiskomennossa ilmoitetaan ohjelmatiedoston nimi, esimerkiksi
cc omaohj.cKääntämiskomennon antamisen jälkeen kone saattaa tulostaa joukon kääntäjän virheilmoituksia. Usein ne ovat helposti ymmärrettäviä, joskus hyvinkin mystisen tuntuisia. Kääntäjä voi antaa paitsi virheilmoituksia myös varoituksia ja informatiivisia ilmoituksia.
Virheiden selvittelyssä kyseisen ohjelmointikielen oppikirja on tarpeellinen. Virheet korjataan editorilla, minkä jälkeen ohjelma käännetään uudestaan. Jos virheilmoituksia on paljon, kannattaa usein etsiä ja korjata vain muutama virhe ohjelman alusta ja kääntää ohjelma sitten uudestaan, koska yksi virhe voi sotkea kääntäjän toimintaa niin, että se saattaa valittaa asiattomiakin.
Kun käännös on onnistunut virheittä, ohjelma käynnistetään komennolla
./a.out
Se, mitä sitten tapahtuu, riippuu siitä, mitä ohjelma tekee. Ohjelman suorituksen päätyttyä pitäisi päätteelle tulostua komentotulkin kehote.
Jos ohjelma lukee päätteeltä syöttötietoja, niin yleisesti ottaen ei tulostu mitään kehotetta tms., ellei itse ohjelmassa ole tulostuslausetta, joka sellaisen kirjoittaisi.
Joskus ohjelma saattaa "kaatua" ajonaikaiseen virheeseen, koska siinä on sellainen virhe, jota kääntäjä ei ole havainnut. "Kaatuminen" tarkoittaa, että odotetun tulostuksen asemesta saadaan jokin enemmän tai vähemmän hämärä virheilmoitus kuten
Bus error - core dumped
.
Virheilmoitusteksti ei useinkaan kerro mitään muuta hyödyllistä kuin että ohjelmassa on jokin vika.
On myös hyvin mahdollista, että ohjelma ei "kaadu" mutta ei myöskään tee ihan sitä, mitä oli tarkoitus - tällöin ohjelmassa on looginen virhe. Virheen voi yrittää paikallistaa esim. lisäämällä ohjelmaan välitulostuksia. Voit myös opetella käyttämään ns. debuggeria;
erään debuggerin (dbx) suppeat käyttöohjeet ovat
oppaassa
Ohjelmointi Unixissa.
Korjaamisen jälkeen ohjelma käännetään uudestaan ja kirjoitetaan taas
./a.out
(ja pidetään peukkuja).
Entä jos itse ei mitenkään saa selvää kääntäjän virheilmoituksesta tai muuten törmää ylitsepääsemättömiltä tuntuviin ongelmiin oman ohjelmansa kanssa?
Vrt. lukuun
Mistä apua?.
Ota huomioon, että hyväkään yleinen ATK-neuvoja ei ehkä osaa auttaa
ohjelmointiin liittyvissä ongelmissa, ainakaan kaikkia ohjelmointikieliä
koskevissa. Nyyseissä sopiva ryhmä ohjelmointiaiheisille ongelmille
on yleensä
sfnet.atk.ohjelmointi.alkeet
.
Kun käyttäjä on ottanut yhteyden Unix-koneeseen, ollaan ns. komentotilassa, jonka merkkinä on kehote ja jossa käyttäjän kirjoittamat rivit käsittelee komentotulkki eli shell. Komentotulkki voi käynnistää eri ohjelmia sen mukaan, mitä käyttäjä komennoilla käskee.
Unix-koneissa on käytettävissä
useita erilaisia komentotulkkeja.
Vanhin, eräänlainen perus-shell on Bourne shell,
tiedostonimeltään sh
.
Tämän oppaan kirjoittaja suosii
T-shelliä tcsh
,
joka kuuluu C-shellien perheeseen.
Oletusarvoisesti eli jos et
ole erikseen toisin pyytänyt tai itse järjestänyt, käytössäsi on T-shell.
Sen hienouksiin kuuluu mm. mukava mahdollisuus käyttää hyväksi aiemmin
annettuja komentoja nuolinäppäimillä sekä ns. tiedostonnimien tunnistus
tabulaattorilla.
Komentotulkin voi mahdollisesti vaihtaa komennolla chsh
;
tämä riippuu paikallisista järjestelyistä.
Sallitut komentotulkit näkee tiedostosta
/etc/shells
.
Muutos tulee voimaan seuraavan yhteydenoton alusta ja on pysyvä
(kunnes se erikseen muutetaan).
Jos tarvitset vain tilapäisesti jonkin muun shellin kuin
vakioshellisi piirteitä, voit käynnistää shellin toisen
"alla" (aliprosessina); tämä onnistuu
suoraan shellin nimellä (esim. zsh
).
Komentotulkkia voi pyytää käynnistämään sekä itsenäisesti toimivia ohjelmia
kuten Pine että yksinkertaisia ja lyhyitä ohjelmia,
joilla ei ole omia sisäisiä käskyjä.
Näitä lyhyitä ohjelmia kutsutaan joskus komennoiksi, joskus ohjelmiksi,
mikä voi olla hämäävää.
Tavallisimmin puhutaan esim. ls
- tai cp
-komennosta,
mutta itse asiassa ne ovat ohjelmia, jotka komentotulkki käynnistää
erilliseen prosessiin.
Prosessi tarkoittaa lyhyesti sanottuna ohjelman suoritusta.
Sen lisäksi, että komentotulkki käynnistelee prosesseja, prosessit
voivat luoda uusia prosesseja.
Jokin ohjelma voi esim. automaattisesti käynnistää jonkin editorin;
esimerkiksi Pine käynnistää Pico-editorin meilin kirjoittamista varten.
Komentoja sanan varsinaisessa merkityksessä, siis sellaisia, jotka
komentotulkki itse suorittaa, on Unixissa varsin vähän.
Esimerkkinä sellaisista mainittakoon setenv
.
Varsinaisista komennoista ei saa ohjeita man
-komennolla,
vaan niiden ohjeet sisältyvät asianomaisen komentotulkin ohjeisiin;
esimerkiksi setenv
-komennon kuvaus löytyy siitä varsin
laajasta dokumentista, jonka saa komennolla man tcsh
.
Komennolla which
voi selvittää, onko jokin komento
komentotulkin "sisäänrakennettu" komento vai ohjelma. Esimerkki:
epsilon ~ 51 % which rm /bin/rm epsilon ~ 52 % which ps /bin/ps epsilon ~ 53 % which jobs jobs: shell built-in command. epsilon ~ 54 % which which which: shell built-in command. epsilon ~ 55 %
Aiemmin on jo mainittu, että ohjelman tai komennon suorituksen voi katkaista kontrollimerkillä control-c, joka tosin ei kaikissa yhteyksissä toimi. Ohjelma nimittäin voi "omia" control-c:n käsittelyn itselleen. Tällöin control-c saattaa toimia vain ohjelman sisäisenä katkaisuna, joka lopettaa menossa olevan käskyn suorituksen ja aiheuttaa paluun ohjelman käskytasolle eikä Unixin komentotasolle. Vaihtoehtoisesti ohjelma voi käyttäjän annettua control-c:n esim. kysyä, haluaako hän todella lopettaa. Lisäksi mainittakoon, että Emacsia käytettäessä ei control-c:llä ole erikoismerkitystä vaan se on osa Emacsille annettavia käskyjä.
Ohjelman tai komennon suorituksen voi väliaikaisesti keskeyttää eli "suspendoida" kontrollimerkillä control-z.
Näin keskeytetyn ohjelman tai komennon suoritusta voidaan jatkaa komennolla
fg
foreground ja ajatuksesta, että keskeytetty
ohjelma on ikäänkuin ollut taka-alalla ja tuodaan fg
:llä
etualalle ja takaisin suoritukseen.
Jos esimerkiksi olet käyttämässä jotakin sovellusohjelmaa ja huomaat kesken kaiken, että sinun pitääkin esim. tarkistaa jokin asia jostakin dokumenttitiedostosta (tai vaikka Webistä), voit antaa control-z:n, lukea haluamasi dokumentin ja palata jatkamaan ohjelman käyttöä
fg
-komennolla.
Huomaa ero:
Jos esim.
olet keskeyttänyt control-z:lla useita eri ohjelmia, voit katsoa tilanteen komennolla
jobs
joka antaa listan niistä komennoista ja ohjelmista (yhteisnimitys: prosesseista), joiden suoritus on menossa tai keskeytettynä.
Seuraavassa on esimerkki, jossa Lynx ja Pine
on keskeytetty control-z:lla. Silloin
jobs
-komennon tulostus näyttää tältä:
[1] - Suspended lynx [2] + Suspended (signal) pinePlusmerkki + ilmaisee, että tätä ohjelmaa on käytetty viimeksi. Kun kirjoitetaan
fg
, niin plussalla merkityn ohjelman
suoritus jatkuu. Yllä olevassa esimerkissä siis Pine käynnistyy
kirjoitettaessa fg
. Jos haluaakin käyttää seuraavaksi
jotain toista keskeytettyä ohjelmaa kuin plus-merkillä ilmoitettua,
kirjoitetaan prosenttimerkki % ja sen perään ilman välilyöntiä
työnnumero, joka löytyy
jobs
-tulostuksen rivin alusta.
Esimerkiksi jos halutaan edellisen esimerkin tilanteessa
jatkaa Lynxin käyttöä, kirjoitetaan komento
fg %1
Jos käyttäjällä on pysäytettyjä töitä ja hän yrittää lähteä ulos koneesta
komennolla logout
,
kone ilmoittaa
there are stopped jobs
. Tällöin on kaksi vaihtoehtoa:
logout
-komennon, pääset ulos
fg
-komennolla
ja lopettaa ne normaalilla tavalla.
jobs
on vain T-shellin komento.
Aina on käytettävissä komento ps
(process status),
mutta sen toiminta on erilainen ja sen yksityiskohdissa on monia
eroja eri Unixien välillä.
Tärkeä ero jobs
- ja ps
-komennon välillä
on se, että jobs
näyttää vain käytössä olevan
komentotulkin alaiset prosessit, kun taas ps
voi näyttää
muitakin prosesseja, myös esim. sellaisia, jotka on käynnistetty
toiselta päätteeltä.
Valitsimista mainittakoon
-f
, joka antaa laajemman tulostuksen
-u
tunnus, jolloin saadaan tiedot
kyseisen tunnuksen kaikista prosesseista.
Esimerkki:
lk-hp-12 ~ 52 % ps PID TTY TIME COMMAND 1236 ttyp3 0:00 tcsh 1246 ttyp3 0:00 ps 1241 ttyp3 0:00 emacs lk-hp-12 ~ 53 % ps -f UID PID PPID C STIME TTY TIME COMMAND jkorpela 1236 1235 0 17:49:52 ttyp3 0:00 tcsh jkorpela 1247 1236 4 17:50:05 ttyp3 0:00 ps -f jkorpela 1241 1236 0 17:49:55 ttyp3 0:00 emacs lk-hp-12 ~ 54 %Huomannet, että prosessien listassa näkyy myös se prosessi, joka on suorittamassa
ps
-komentoa (oik. ohjelmaa).
Prosessi voi "tappaa" eli (lopullisesti) pysäyttää toisen prosessin.
Erityisesti voit komentotulkista käsin tappaa prosessin
kill
-komennolla.
Tämä on äärimmäinen toimenpide, johon kannattaa ryhtyä vasta, kun
prosessi on jumissa eikä mikään muu auta.
"Tapettava" prosessi saattaa ennen "kuolemaansa" tehdä joitakin lopetustoimia, esim. sulkea avoinna olevia tiedostoja. Tämä riippuu ohjelmasta, eikä siitä yleisesti ottaen ole mitään takeita.
Jos tuntuu siltä, että päätteellä ajettava ohjelma on jäänyt täysin jumiin eikä mikään normaali keino jumittumisen purkamiseksi tunnu tehoavan, voit menetellä näin:
ps -f -u
tunnus
(missä tunnus on oma käyttäjätunnuksesi),
mitä prosesseja sinulla on, ja yritä tunnistaa, mikä niistä on se jumittunut.
kill
nro
PID
), jonka
näet ps
-komennon tulosteesta.
ps
-komennolla,
onko kyseinen prosessi hävinnyt.
Jos ei, voit vielä yrittää vahvempaa tappamiskomentoa
kill -HUP
nro
loop
, joka tuntuu jääneen ikuiseen silmukkaan,
jota ei voi katkaista control-c:llä. Muun muassa siksi, että ohjelma
koko ajan kuluttaa koneen resursseja, käyttäjä ottaa toisesta
koneesta yhteyden Alphaan
rlogin
-komennolla
ja
toimii edellä kuvatulla tavalla:
epsilon ~ 51 % rlogin alpha Last login: Wed Feb 21 18:09:38 from vipunen.hut.fi Digital UNIX V3.2C (Rev. 148); Thu Dec 21 19:51:53 EET 1995 Digital UNIX V3.2C Worksystem Software (Rev. 148) alpha ~ 51 % ps -f -u jkorpela USER PID PPID %CPU STARTED TTY TIME COMMAND jkorpela 4748 2380 1.0 18:10:27 ttyp1 0:00.69 -tcsh (tcsh) jkorpela 2178 31264 0.0 18:09:38 ttyrb 0:00.69 -tcsh (tcsh) jkorpela 3545 2178 43.0 18:10:01 ttyrb 0:16.72 loop alpha ~ 52 % kill 3545 alpha ~ 53 % ps -f -u jkorpela USER PID PPID %CPU STARTED TTY TIME COMMAND jkorpela 4748 2380 0.0 18:10:27 ttyp1 0:00.72 -tcsh (tcsh) jkorpela 2178 31264 0.0 18:09:38 ttyrb 0:00.70 -tcsh (tcsh) alpha ~ 54 % logout rlogin: connection closed. epsilon ~ 52 %
Usein Unix-komennot ja Unixissa ajettavat ohjelmat lukevat ns. standardisyöttövirrasta (standard input, stdin) ja tulostavat normaalin tulostuksen standarditulostusvirtaan (standard output, stdout) ja virheilmoitukset mahdollisesti standardivirhevirtaan (standard error output, stderr). Oletusarvoisesti standardisyöttövirta tulee käyttäjän näppäimistöltä ja standarditulostusvirta ja standardivirhevirta menevät käyttäjän kuvaruudulle.
Edellä mainitut "virrat" voi kuitenkin eri tavoin määrätä toisenlaisiksikin, esimerkiksi siten, että komennon tulostus ei mene kuvaruudulle vaan tiedostoon.
Kirjoittamalla komennon loppuun
>
tiedostonnimi
saadaan aikaan, että komennon tulostus ei kirjoitu kuvaruudulle vaan ilmoitettuun tiedostoon.
Tämä tulostuksen uudelleenohjaus ei kuitenkaan välttämättä koske kaikkea sitä, mikä muutoin tulostuisi ruudulle, vaan virheilmoitukset saattavat silti tulostua päätteelle.
Annetun tiedostonnimen tulisi olla sellainen, että sennimistä tiedostoa ei ole ennestään olemassa. Jos tiedosto on jo olemassa, toiminta on erilaista eri Unixeissa: joissakin tiedoston vanha sisältö häviää, joissakin taas koko komennon suoritus epäonnistuu.
Esimerkiksi komento
ls -a mail/
tulostaa hakemiston mail/
kaikki tiedostojen nimet päätteen näytölle, mutta komento
ls -a mail/ >mail-hakemistoni
kirjoittaa kyseisen
tiedostolistauksen tiedostoon nimeltä mail-hakemistoni
.
On myös mahdollista ohjata tulostus olemassaolevaan tiedostoon sen
vanhan sisällön perään. Tämä tehdään käyttämällä kahta peräkkäistä
>
-merkkiä. Esimerkki:
grep foo bar >>loydetytOn mahdollista, että vaikka tulostus on ohjattu tiedostoon, osa tulosteista tulee silti kuvaruudulle. Tällöin käytettävä ohjelma ei tulostakaan standardisyöttövirtaan. Tavallisin tällainen tilanne on, että ohjelma tulostaa virheilmoitukset erilliseen "standardivirhevirtaan" stderr. Sekin on uudelleenohjattavissa, joskin eri shelleissä eri tavoin. T-shellissä menettely on, että käytetään
>
-merkin asemesta
merkkiparia >&
, jolloin sekä normaali tulostus että
virheilmoitukset menevät ilmoitettuun tiedostoon.
Esimerkki (jossa on kyse siitä, että C-kääntäjän virheilmoitukset
halutaan ohjata tiedostoon):
cc prog.c >& prog.msg
Kirjoittamalla komennon loppuun
<
tiedostonnimi
saadaan aikaan, että komento lukee syöttötietoja kyseisestä tiedostosta sen sijaan, että käyttäjä näpyttelisi tiedot näppäimistöltään.
Tätä mahdollisuutta voi käyttää myös yhdessä tulostuksen ohjauksen
kanssa, esim.
omaohj <datat.txt >tulos.txt
Yhden komennon tulostuksen voi ohjata suoraan toisen komennon lähtötiedoiksi. Tämä tietysti saataisiin aikaan ohjaamalla ensimmäisen komennon tulostus tiedostoon ja sitten käskemällä toisen komennon lukea kyseisestä tiedostosta:
komento1 >aputiedosto
komento2 <aputiedosto
jonka jälkeen aputiedoston voisi hävittää. Paljon mukavampaa on kuitenkin käyttää putkitusta:
komento1 |
komento2
Tämä merkitsee, että komento1:n tulostus ei tule päätteelle vaan menee suoraan syöttötiedoiksi komento2:lle. Tällöin siis tilanne on, hienosti sanottuna, sellainen, että järjestelmä suorittaa komento1:n ja komento2:n kahtena prosessina siten, että ensin mainitun stdout on jälkimmäisen stdin.
Putkituksen merkki on siis |, joka näkyy laitteen mukaan pystyviivana (joskus katkonaisena pystyviivana) tai pienenä ö-kirjaimena (ks. skandinaavisista merkeistä kertovaa kohtaa).
Hyvin tavallista ja suositeltavaa on käyttää putkitusta jonkin komennon tai ohjelman tulostuksen sivuttamiseen
more
-komennon
avulla.
Jos sinulla esimerkiksi on paljon tiedostoja,
niin komennon ls -l
tulostus ei mahdu yhdelle ruudulliselle.
Koska ls
-komento ei jaa tulostusta kuvaruudullisiin,
asia kannattaa hoitaa seuraavaan tapaan:
ls -l | more
Tämä perustuu siihen
more
-komennon, kuten usean muunkin komennon,
piirteeseen, että
jos komennossa ei anneta argumenttia, se lukee standardisyöttövirrasta.
Oletusarvotilanteessa, jossa kyseinen virta tulee näppäimistöltä,
siinä ei juuri ole järkeä, mutta
putken käytön takia tässä tapauksessa
standardisyöttövirrasta
lukeminen merkitseekin komennon ls -l
tulostuksen lukemista.
Putkitusta voi jatkaa esim. niin, että toisen komennon tulosteet menevät edelleen syötteiksi kolmannelle:
komento1 | komento2 | komento3
Usein Unix-slangissa kutsutaan filtteriksi sellaista komentoa tai ohjelmaa, joka lukee syötteensä standardisyöttövirrasta ja kirjoittaa tulosteensa standarditulostusvirtaan.
Filtterien vastakohtana ovat sellaiset komennot ja ohjelmat, joille ilmoitetaan syöttö- ja tulostustiedosto käynnistyskomennossa argumenteilla. Toisaalta hyvin yleisesti tällöin oletusarvona (eli toimintatapana silloin, kun tiedostoja ei ilmoiteta) on se, että syöttötiedostona on standardisyöttövirta ja tulostustiedostona standarditulostusvirta. Sellaisessa tapauksessa komentoa tai ohjelmaa voi käyttää filtterin tapaan, vaikka se ei ole filtteri sanan suppeassa merkityksessä.
Esimerkki. Komento colrm
(jota jäljempänä käytetään
esimerkkinä) on tyypillinen filtteri: se poistaa syöttötietoriveiltä
tietoja, ja se lukee syöttötiedot standardisyöttövirrasta.
Kyseiselle komennolle ei voi antaa syöttötiedoston nimeä argumenttina.
Sen sijaan se voidaan ohjata lukemaan standardisyöttövirran
halutusta tiedostosta seuraavaan tapaan:
colrm 50 <foobarSama koskee tulostusta, esim.
colrm 50 <foobar >foobar2Jos komennolle voidaan antaa syöttötiedoston nimi argumenttina ja jos toisaalta oletusarvona on, että syöttötiedostona on standardisyöttövirta, voimme kirjoittaa yhtä hyvin
more fookuin
more <foomutta jos kyseessä on filtteri sanan suppeassa merkityksessä, vain jälkimmäinen vaihtoehto toimii.
Se, onko kyseessä filtteri vai ei, ilmenee kunkin komennon ja ohjelman kuvauksesta, esim. man-sivulta.
Nimi filtteri
voi olla varsin harhaanjohtava. Sehän johtuu englannin sanasta
filter, jonka normaali suomenkielinen vastine on
suodatin (tai suodin)
Yleiskielessä, ja myös yleensä tekniikan kielessä,
suodatin
tarkoittaa jotakin laitetta tms., joka
päästää lävitseen vain osan siihen tulevasta aineesta, energiasta
tai informaatiosta,
esim. vain nesteen mutta ei kiinteitä aineita.
Tämän käsitteen alaan esim. edellä mainittu
colrm
-komento sopii hyvin, samoin
grep
-komennot, jotka "päästävät lävitseen" vain
osan "niihin tulevista" riveistä. Mutta yleisesti Unixissa
filtteri ei suinkaan aina ole tietoa suodattava vaan se voi
myös muokata tietoja eri tavoin tai käyttää syöttötietoja
vain lähtöarvoina laskennalle. Filtterin tulostusvirta voi aivan
hyvin olla laajempi kuin syöttövirta.
Unixin yhteydessä puhutaan usein työkaluajattelusta. Tällä tarkoitetaan suurin piirtein sellaista lähestymistapaa, että komentoja ja ohjelmia tarkastellaan työkaluina (tools), joista kullakin hoidetaan yksi tehtävä; kun halutaan tehdä monimutkaisempi asia, ei tehdä sitä varten uutta ohjelmaa, vaan pyritään ensisijaisesti hoitamaan se olemassaolevia työkaluja yhdistelemällä.
Syötön ja tulostuksen uudelleenohjaus ja erityisesti putkitus ovat keskeisiä välineitä työkalujen käytön yhdistämisessä. Putkituksella voidaan ikäänkuin muodostaa liukuhihna, jonka läpi käsiteltävä tietoaineisto kulkee. Kussakin vaiheessa sitä muokkaa jokin työkalu, jota voidaan verrata liukuhihnan äärellä työskentelevään robottiin. Kukin robotti saa raaka-aineensa (syötteensä) liukuhihnan edelliseltä robotilta, ja tuotteet (tulosteet) menevät raaka-aineiksi seuraavalle robotille.
Varsin usein, mutta ei välttämättä, työkalu on filtteri. Unix-komentojen ja -ohjelmien joukossa ei ole mitään erityistä työkalujen luokkaa, vaan lähes kaikkia niistä voidaan käyttää työkaluina - toisia paremmin, toisia huonommin.
Seuraava hyvin yksinkertainen
esimerkki
havainnollistanee työkaluajattelua.
Oletetaan, että meillä on tekstitiedosto puhlu
, joka sisältää
puhelinluettelon. Tiedoston kukin rivi sisältää yhden henkilön
tiedot siten, että tiedot ovat kiinteästi samoissa sarakkeissa
seuraavaan tapaan:
Hiiri, Mikki 4040 555 5555 Ankka, Roope 4300 123 4567 Ankka, Aku 4301 333 3333 ...Tässä sarakkeet 1 - 20 sisältävät nimen ja sarakkeet 21 - 24 sisäisen puhelinnumeron, ja sarakkeesta 25 alkaa kotipuhelinnumero. Oletetaan, että haluamme tuottaa uuden tiedoston, joka sisältää tiedot ilman kotipuhelinnumeroa nimen mukaan aakkosjärjestyksessä. Voisimme tehdä jollain ohjelmointikielellä (esim. C tai Fortran) ohjelman tähän tarkoitukseen, mutta se olisi tarpeettoman työlästä, varsinkin jos tehtävä on pieni ja kertaluonteinen. Ilman ohjelmointitaitoakin tehtävä onnistuu Unixin työkaluilla näin:
colrm 25 < puhlu | sort > puhlu2Tällöin tiedosto
puhlu
ensin annetaan syötteeksi
colrm
-ohjelmalle, jonka argumentilla käsketään sitä
poistamaan joka rivin loppu 25. merkistä alkaen. Tulos putkitetaan
sort
-ohjelmalle, jonka käyttö yleisesti ottaen on
aika hankalaa mutta tällaisessa yksinkertaisimmassa tapauksessa
hyvin helppoa. Tulos ohjataan tiedostoon puhlu2
,
jonka sisällöksi näin muodostuu seuraava:
Ankka, Aku 4301 Ankka, Roope 4300 Hiiri, Mikki 4040Putkituksella muodostetut tiedon käsittelyn "liukuhihnat" voivat olla varsin pitkiäkin; edellisessä esimerkissähän oli vain kaksi "robottia"
colrm
ja sort
.
Seuraavassa on esimerkki putkituksesta, jonka yksityiskohtiin emme
paneudu
mutta joka hyvin kuvastaa työkaluajattelua:
tar -cf foo.tar goo | compress | uuencode foo.tar.Z | mail joeTässä alkuperäinen tietoaineisto (hakemisto
goo
) annetaan
syötteeksi tar
-ohjelmalle, joka paketoi hakemiston
sisällön yhdeksi tiedostoksi. Tulos menee syötteeksi
compress
-ohjelmalle, joka eräällä menetelmällä
tiivistää tiedon pienempään tilaan. Sen tulos taas menee
uuencode
-ohjelmalle, joka muuntaa tiedoston sellaiseen
esitysmuotoon, että se voidaan ongelmitta lähettää meilitse.
Ja tämä muunnettu tulos lopuksi meneekin syötteeksi
mail
-ohjelmalle, joka on yksinkertainen mutta
tällaisissa tapauksissa näppärä meiliohjelma.
Edellä on jo käsitelty lyhyesti muutamia työkaluohjelmia.
Seuraavassa kuvataan muutaman muun yksinkertaisen työkaluohjelman
peruskäyttöä. Tarkempia tietoja
kunkin ohjelman tarjoamista mahdollisuuksista ja niiden käytöstä
saa
man
-komennolla.
Tässä käsiteltävät työkaluohjelmat ovat sellaisia, että niitä
voidaan käyttää filttereinä.
grep-ohjelmalla voidaan poimia tietoaineistosta määrätyt ehdot täyttävät rivit. Yksinkertaisimmassa tapauksessa ehto on sellainen, että rivillä tulee esiintyä jokin määrätty merkkijono, joka annetaan ohjelmalle argumenttina. Esimerkiksi komento
grep Unix <foo
tulostaa (standarditulostusvirtaan) ne ja vain ne foo
-tiedoston
rivit, joilla esiintyy merkkijono Unix
(juuri näin
kirjoitettuna, mutta mahdollisesti sanan osana, esim.
sanassa Unixissa
).
Esimerkki grep
in käytöstä putkituksessa on seuraava,
missä who
-komennon tulostuksesta
(joka voi olla varsin pitkä) poimitaan vain ne rivit, joilla
esiintyy merkkijono dio
:
epsilon ~ 51 % who | grep dio dio ttyb7 Feb 20 20:27 dio ttya5 Feb 20 08:30 dio ttyb5 Feb 20 13:58 dio ttybd Feb 20 22:47 epsilon ~ 52 %Ohjelmalla
grep
on myös "serkut" fgrep
,
joka rajoittuneempi mutta usein tehokkaampi kuin grep
,
ja egrep
, joka on monipuolisempi kuin grep
.
diff-ohjelmalla voi vertailla
tiedostoja ja tulostaa niiden erot (differences). Tiedostojen
nimet annetaan argumentteina.
Jos tiedostojen sisällöt ovat
täsmälleen samat,
diff
ei tulosta mitään. Jos eroja on, niin
ja diff
tarkastelee
ensimmäistä tiedostoa perustiedostona tulostaen tiedot siitä, miten
toinen tiedosto poikkeaa siitä.
Tulostuksen muoto lienee paras selostaa esimerkin avulla:
epsilon ~/tmp 52 % diff tlo.old tlo 19c19 < Yksi pysyvä ongelma on muutosten nopeus. Tänään suositeltava ohjelma on --- > Yksi pysyvä ongelma on muutosten nopeus, sillä tänään suositeltava ohjelma on 82d81 < POP-palvelu 119a119,120 > > 27.2.1996 epsilon ~/tmp 53 %Tässä tapauksessa löytyi tiedostosta
tlo
kolme eroa
tiedostoon tlo.old
verrattuna:
19c19
kertoo muutoksesta (change)
rivillä, tarkemmin sanoen, että
ensimmäisen tiedoston 19. rivi poikkeaa toisen tiedoston
vastaavasta rivistä. Kummatkin rivit näkyvät tulosteessa
siten, että ensimmäisen edessä on <-merkki ja toisen
edessä >-merkki.
82d81
kertoo, että ensimmäisestä
tiedostosta on poistettu (delete) 82. rivi; kyseinen rivi
näkyy tulosteessa.
119a119,120
kertoo, että ensimmäisen
tiedoston 119. rivin perään on lisätty (add) kaksi riviä; rivit
näkyvät tulosteessa.
-c
, joka aiheuttaa sen,
että tulostus on pitempi siten, että eroavuuksien yhteyteen tulostuu
tiedostojen sisältöä laajemmin; silloin ehkä näkee helpommin
muutettujen tekstien asiayhteyden (context).
tr-ohjelma tekee tietoaineistolle yksinkertaisen merkkimuunnoksen eli -translaation, jossa annetut merkit korvataan toisilla. Esimerkiksi komento
tr '{|}[\]' 'äöåÄÖÅ'kopioi standardisyöttövirran standarditulostusvirtaan siten, että merkki
{
korvautuu merkillä ä
,
merkki |
merkillä ö
jne.
Jos tällainen muunnos halutaan tehdä tiedostolle, toimitaan
seuraavaan tapaan (koska tr
on filtteri):
tr '{|}[\]' 'äöåÄÖÅ' <muistio.asc >muistio.iso
Kun halutaan tehdä asioita, joita ei voi suoraan hoitaa yhdellä komennolla tai valmiilla ohjelmalla, voidaan valita jokin seuraavista toimintatavoista:
Putkitusta käsiteltiin juuri edellä ja käännettäviä ohjelmia aiemmin. Komentotiedostoista tulee puhetta myöhemmin. Seuraavassa kuvaillaan hiukan tulkittavia kieliä.
Valinta edellä mainittujen vaihtoehtojen välillä riippuu monista asioista kuten tehtävän mutkikkuudesta ja siitä, mitä välineitä käyttäjä osaa käyttää. Usein tilanne on se, että tehtävä hoituisi nopeimmin jollain sellaisella välineellä, jota käyttäjä ei tunne. Tällöin on tietysti otettava huomioon, että uuden välineen opetteluun voi kulua paljonkin aikaa - ja toisaalta siitä voi olla paljon hyötyä myöhemmin.
Tehokkuusseikat kannattaa myös ottaa huomioon. Kertaluonteisiin hommiin sopii yleensä hyvin työkaluista tehty putki tai vaativammissa tapauksissa komentotiedosto tai pienen kielen käyttö. Jos taas on kehitettävä tapa tehdä homma, joka joudutaan tekemään usein ja joka kuluttaa paljon tietokoneen aikaa, voi ohjelmointikielen käyttö olla hyvin perusteltua. Tällöin on olennaista, että ohjelma käännetään konekoodiksi, jota tietokone suoraan toteuttaa; sen sijaan pieniä kieliä käytettäessä suoritus on tulkitsevaa, jolloin tietokoneajan kulutus voi olla monikymmenkertainen.
Pienet kielet muistuttavat monessa suhteessa varsinaisia ohjelmointikieliä - niissä on yleensä mm. ehto- ja toistorakenteita - mutta toteutus on tulkitseva. Pienellä kielellä kirjoitettu ohjelma voidaan joskus kirjoittaa suoraan komentoriville (ns. one-liner, yhden rivin mittainen ohjelma), mutta tavallisempaa on, että se kirjoitetaan tiedostoon. Seuraavassa kuvaillaan lyhyesti muutamia pieniä kieliä luonnehtien niiden yleisiä ominaisuuksia ja esittäen pikku esimerkkejä. Pienien kielien oppimisessa on oma vaivansa, joten kannattaa harkita, mihin niistä perehtyy, sen mukaan, miten ne tuntuvat sopivan omiin tarpeisiin.
Sed (stream editor) on Unixin alkuperäisestä
rivieditorista (Ed) kehitetty ohjelma, joka on monessa suhteessa
lähempänä työkaluohjelmaa kuin pientä kieltä - näiden käsitteiden
välillä ei ole tarkkaa rajaa.
Sedillä voidaan muokata tiedostoa esimerkiksi korvaamalla
merkkijonoja toisilla. Samanlaisia asioita voidaan tehdä editoreillakin,
mutta editorin käyttö on vuorovaikutteista, Sedin käyttö taas sellaista,
jossa käyttäjä vain kuvaa halutun muunnoksen ja käskee Sedin tehdä sen.
Tämän takia Sed sopii käytettäväksi työkaluajattelun mukaisessa
putkituksessa. Seuraavassa esimerkissä tehdään muunnos,
jossa tiedostossa olevat merkkijonot Atk
ja atk
korvataan merkkijonolla ATK
:
sed -e 's/[Aa]tk/ATK/g' <ohje >ohje.uusiTässä esimerkissä valitsin
-e
kertoo, että sen perässä,
suoraan komentorivillä, tulee Sedille annettava käsky; käskyt voitaisiin
kirjoittaa myös tiedostoon. Käsky on s
-käsky, joka
määrää suorittamaan korvauksen (substitution), ja sen lopussa
oleva g
määrää tekemään korvauksen kaikkialle,
yleisesti (generally). Rakenne [Aa]
on alkeellinen
esimerkki Sedin tunnistamista säännöllisistä lausekkeista
(regular expressions): se tarkoittaa kumpaa tahansa merkeistä
A
ja a
, joten rakenne
[Aa]tk
tarkoittaa siis
merkkijonoja Atk
ja atk
.
Awk on monipuolisempi väline, johon liittyy oma pieni kielensä, joka muistuttaa C-ohjelmointikieltä. Awk-kielellä käsitellään tietoaineistoa riveittäin ja määritellään malleja (patterns) ja niitä vastaavia toimenpiteitä. Tämä esitetään Awk-ohjelmassa seuraavassa muodossa:
malli { toimenpide }
Täten voidaan erilaisille, siis eri malleja vastaaville, riveille määritellä erilaisia muunnoksia tai muita toimenpiteitä. Oletustoimenpiteenä on (mallia vastaavan) rivin kopiointi standarditulostusvirtaan. Tämän ansiosta voidaan asiat usein esittää hyvinkin tiiviisti; esimerkiksi
awk 'length > 72' tiedtulostaa standarditulostusvirtaan ne ja vain ne
tied
-tiedoston rivit, joiden pituus on yli
72 merkkiä. Tässä length > 72
kuvaa mallin,
ja sitä vastaavat rivit tulostuvat, muut eivät; tätä mallia
vartenhan ei ole erikseen määritelty toimenpidettä, joten
Awk oletusarvoisesti suorittaa kopioinnin, ja ne rivit, joiden
pituus on enintään 72 merkkiä, eivät vastaa mitään mallia
(muita mallejahan ei tässä tapauksessa) ole, joten niiden
osalta Awk ei tee yhtään mitään.
Seuraavassa on hiukan pidempi esimerkki:
tiedostossa isot
on Awk-ohjelma
BEGIN { sum = 0; print "Isot tiedostot:" } $5 > 10000 { sum += $5; print } END { print "Isoissa tiedostoissa yhteensä " sum " tavua" }ja nyt käyttäjä voi katsoa, mitä isoja (tässä tapauksessa: yli 10000 tavua pitkiä) tiedostoja hänellä on työhakemistossaan, seuraavasti:
epsilon ~/tmp 51 % ls -l | awk -f isot Isot tiedostot: -rw-r--r-- 1 jkorpela staff 52876 Jan 24 14:45 btxdoc.dvi -rw-r--r-- 1 jkorpela staff 41569 Jan 24 14:44 btxdoc.tex -rw-r--r-- 1 jkorpela staff 10990 Jan 18 12:46 pctex Isoissa tiedostoissa yhteensä 105435 tavua epsilon ~/tmp 52 %Tässä esimerkissä siis Awk-ohjelma on erillisessä tiedostossa, jonka nimi ilmoitetaan
-f
-valitsimella.
Syötteenä Awk saa tässä komennon ls -l
tulostuksen,
ja se poimii siitä ne rivit, joissa 5. kenttä eli tiedoston koko
tavuina on yli 10000. Poiminta hoidetaan mallilla
$5 > 10000
. Awk-ohjelmassa on myös "mallit"
BEGIN
ja END
, joihin liitetyt toimenpiteet
Awk suorittaa vastaavasti tietoaineiston käsittelyn alussa ja lopussa.
Perl on erittäin ilmaisuvoimainen kieli, jonka monet piirteet on otettu C-ohjelmointikielestä. Sitä ei oikein voi lukea "pieniin kieliin", mutta sitä voi käyttää niiden tapaan, hyvinkin pienten työkalujen tekemiseen. Perlin "filosofia" on aika erikoinen ja vaatii totuttelua; yleensäkin kielten opettelussa alkuvaihe on hankala mutta sen jälkeen lisäoppiminen on aika helppoa. Perlistä on olemassa erillinen ohje Getting started with Perl ja myös suomenkielistä aineistoa. Seuraavassa on vain pieni esimerkki Perlin tarjoamista mahdollisuuksista:
#!/usr/bin/perl while(<*.for>) { $oldname = $_; s/\.for$/\.f/; rename $oldname, $_; }Tämä Perl-ohjelma muuttaa kaikkien työhakemistossa olevat
.for
-loppuiset
tiedostonnimet vastaaviksi
.f
-loppuisiksi.
Tällaista uudelleennimeämistä ei Unixissa voi tehdä millään
suoralla tavalla, esim. mv
-komennolla!
Ohjelman ensimmäinen rivi kertoo, että kyseessä on Perl-ohjelma.
Toinen rivi määrää ohjelman käymään läpi kaikki
.for
-loppuiset tiedostonnimet, ja tämän silmukan
sisällä sitten korvataan nimen loppuosa .for
merkkijonolla .f
ja suoritetaan uudelleennimeäminen
tiedosto kerrallaan Perl-käskyllä rename
, joka
olennaisesti vastaa Unixin mv
-komentoa.
Unixissa on hyvin paljon komentoja ja monissa niissä monia eri piirteitä ja mahdollisuuksia. Kukaan ei voi muistaa niitä kaikkia, eikä se olisi tarpeellistakaan. Monille käyttäjille riittää tuntea 10 - 20 erilaista komentoa ja niistäkin vain peruskäyttö.
Sen sijaan on tarpeellista osata etsiä tietoja komennoista silloin, kun on välttämätöntä tai ainakin hyödyllistä oppia uusi komento tai jonkin vanhan komennon uusi käyttötapa.
man
-komento)
Unix-kirjallisuudessa hyvin yleisesti kerrotaan, että
komennoista saa tietoa man
-komennolla
(manual 'käsikirja'):
komento
man
komentosana
tulostaa päätteelle kuvauksen, "man-sivun", komennosta, jonka nimi on annettu
argumenttina.
Tämä on tietysti totta (pääosin)
mutta suuressa määrin harhaanjohtavaa, sillä
vaikka man
-komennolla saatavat tiedot ovat
usein hyvin hyödyllisiä, ne saattavat olla etenkin aloittelijalle
hyödyttömiä, koska
Saatavat
ohjeet tulostuvat kuvaruudullinen kerrallaan.
Eteenpäin pääsee välilyönnillä (tai rivi kerrallaan return-näppäimellä)
ja lopettaa voi q:lla (quit).
Itse asiassa man
-komennon toteutuksessa tulostuspuolen
hoitelee
more
-komento, joten sen yhteydessä
mainittavat lisämahdollisuudet ovat käytettävissä.
Jos haluat tietoja jostakin aiheesta, mutta et tiedä, onko sen nimistä tai siihen liittyvää komentoa olemassa, voit antaa komennon
man -k
aihe
Tällöin aiheen nimi on ilmoitettava englanniksi. Valitsimen k-kirjain tulee sanasta keyword.
Seuraavassa on esimerkkinä muuan poikkeuksellisen lyhyt man-sivu,
nimittäin komennolla man script
eräässä koneessa saatu:
script(1) script(1) NAME script - Makes a transcript of terminal session SYNOPSIS script [-a] [file] The script command makes a transcript of everything printed on your termi- nal. FLAGS -a Appends the transcript to file rather than writing it to file. DESCRIPTION The transcript is written to file, or appended to file if the -a flag is given. If no filename is given, the transcript is saved in the file typescript. The script ends when the forked shell exits. This program is useful when you are using a CRT and want a hard-copy record of the dialog (for example, a technical writer might create an example of a working session this way). RELATED INFORMATION Commands: cat(1), echo(1), tee(1).Esimerkistä näkyvät man-sivun perusosat:
NAME
tai PURPOSE
,
joka sisältää komennon nimen ja hyvin lyhyen
kuvauksen komennon toiminnasta
SYNOPSIS
, joka kertoo komennon tarkan muodon
valitsimineen ja argumentteineen; hakasuluissa olevat osat
ovat sellaisia, jotka voi jättää pois tai joista voi ottaa
mukaan yhden tai useamman (hakasulut eivät kuulu
itse komentoon!)
FLAGS
tai OPTIONS
,
joka kertoo valitsimien merkitykset
DESCRIPTION
, joka kertoo komennon toiminnasta,
usein viljellen ahkerasti teknisiä termejä
(tässä esimerkissä: append 'kirjoittaa tiedostoon olemassaolevan
vanhan sisällön perään eikä päälle',
forked shell 'aliprosessina käynnistettävä
shelli', CRT 'kuvaruutu')
RELATED INFORMATION
tai SEE ALSO
,
jossa mainitaan komentoon
tavalla tai toisella liittyviä komentoja; usein tässä kohdassa
mainitaan myös komentoja, joilla voi tehdä samantapaisia asioita
kuin sillä komennolla, jonka man-sivusta on kyse.
EXAMPLES
, jossa on esimerkkejä,
ENVIRONMENT
, jossa kerrotaan
niistä ympäristömuuttujista,
joilla on vaikutusta
komennon toimintaan
FILES
, jossa mainitaan komentoon liittyviä tiedostoja
DIAGNOSTICS
, jossa kerrotaan virheilmoituksista
RESTRICTIONS
, jossa kerrotaan rajoituksista
BUGS
, jossa kerrotaan komennon tunnetuista
virhetoiminnoista ("bugeista")
Tässä oppaassa on erillinen luku Mistä löydän lisätietoja Unixista. Lyhyesti sanottuna parhaita tietolähteitä uusien hyödyllisten komentojen opetteluun ovat hyvät oppikirjat. Unix-oppikirjoja on paljon, ja erilaisia arvioita niiden hyvyydestä vielä enemmän.
Unixille on tyypillistä, että komennot ovat lyhyitä englanninkielisiä sanoja tai näiden lyhenteitä. Usein komennoille voi antaa lisämääritteitä eli tarkennuksia. Näitä lisämääritteitä kutsutaan valitsimiksi eli optioiksi (option) ja argumenteiksi (argument). Valitsin tarkentaa ja monipuolistaa komennon antamaa informaatiota. Argumentti taas on komennon kohde eli mille ollaan tekemässä jotakin; varsin usein argumentit ovat tiedostonnimiä.
Unix-komennon yleinen rakenne on seuraava:
komentosana -valitsimia argumentti1 argumentti2 ... argumenttiN
missä valitsimet alkavat yhdysviivalla (-). Komennon osien erottimena on välilyönti.
Esimerkiksi komennossa ls -l mail/
ls
on komentosana,
-l
on valitsin ja
mail/
on argumentti.
Esimerkkikomento listaa tiedostojen nimet ja tiedostoihin liittyviä muita tietoja hakemistosta mail
.
Valitsimet tai argumentit tai molemmat voivat puuttua.
Valitsimet siis alkavat yhdysviivalla (-), jotta komentotulkki osaisi tulkita ne valitsimiksi eikä sotke niitä esim. argumentteihin. Tässä on selitys sille, miksi yhdysviiva tiedoston nimen ensimmäisenä merkkinä ei ole niin hyvä idea.
Valitsimet voidaan jättää pois, jolloin käytetään komentoa oletusarvoilla eli komennon "normaalia" toimintaa.
Kullakin komennolla on omat valitsimensa. Samantapaisilla komennoilla saattaa tosin olla samoja valitsimia, mutta sama valitsin voi merkitä aivan eri asioita eri komennoissa. Siksi valitsimia on usein hankala muistaa. Valitsinten tarkistaminen onkin tavallisimpia tarkoituksia, joihin
man
-komentoa käytetään.
Hyvin usein valitsin koostuu vain yhdysviivasta ja yhdestä kirjaimesta, tavallisimmin pienestä kirjaimesta.
Muistathan kuitenkin, että esim. -C
on eri valitsin kuin
-c
.
Yksikirjaimisia valitsimia voi yhdistää toisiinsa seuraavaan tapaan: komento
ls -l -t
voidaan kirjoittaa lyhyemmin näin:
ls -lt
eli kirjoittaen valitsimet yhteen ilman välilyöntiä ja jättäen yhdysviiva pois muista paitsi ensimmäisestä.
Komennon argumentit ovat tavallisimmin tiedostojen tai hakemistojen nimiä.
Myös argumentit ovat komentokohtaisia: niiden määrä ja merkitys riippuvat komennosta.
Argumentit eivät ole kaikissa komennoissa välttämättömiä. On komentoja, joille ei tarvitse eikä voi antaa lainkaan argumentteja. Tavallisempaa on, että komennolle kyllä voi antaa argumentteja mutta argumenteilla on oletusarvot.
Oletusarvotkin ovat eri komennoissa erilaiset.
Esimerkiksi ls
-komennossa oletusarvona on .
eli
nykyinen työhakemisto.
Komentoa kirjoittaessasi tekemiäsi kirjoitusvirheitä voi korjata seuraavasti:
stty
-komennolla. Edellä esitetty
on kuitenkin melko tavallinen tilanne.
T-shellissä voidaan lisäksi käyttää huomattavasti monipuolisempiakin komentojen editoinnin mahdollisuuksia. Ne muistuttavat Emacsin käskyjä:
history
.
T-shellissä voidaan komentoa kirjoitettaessa käyttää tiedostonnimien tunnistusta. Se on erittäin kätevä keino viitattaessa pitkiin tiedostonnimiin: kirjoitusvaivaa säästyy, ja ennen kaikkea vältetään ne tylsät tilanteet, joissa tehdään kirjoitusvirhe pitkässä tiedostonnimessä.
Tunnistus toimii seuraavasti: kirjoita tiedostonnimen alkuosa ja paina TAB-näppäintä; tällöin T-shell yrittää tunnistaa nimen ja jos se onnistuu yksikäsitteisesti, se täydentää nimen lopun ruudulle. (TAB-näppäimessä voi lukea TAB tai siinä voi olla oikealle osoittava nuoli; yleensä se on jossakin kohtaa näppäimistön vasemmassa reunassa.)
Esimerkki. Oletetaan, että työhakemistossasi on tiedostot
hakemus
,
muistiinpanoja
ja
toimintasuunnitelma
ja vain ne. Jos haluat tulostaa niistä päätteelle viimeksi mainitun,
riittää kirjoittaa
more tja painaa TAB-näppäintä, jolloin T-shell täydentää komentorivin seuraavanlaiseksi:
more toimintasuunnitelmajonka jälkeen voitkin vain painaa return-näppäintä.
Jos tunnistus ei onnistu yksikäsitteisesti, esim. jos sinulla edellä kuvatussa tilanteessa olisi toinenkin tiedosto, jonka nimi alkaa t-kirjaimella, niin T-shell antaisi äänimerkin. Silloin sinun täytyy itse kirjoittaa tiedostonimestä lisää merkkejä ja yrittää uutta tunnistusta. Voit myös control-d:llä kysyä, mitä sellaisia tiedostonnimiä on olemassa, jotka alkavat näppäilemilläsi kirjaimilla; tämä näyttää ruudulla seuraavantapaiselta:
epsilon ~/tmp 51 % more t test toimintasuunnitelma tyolista epsilon ~/tmp 51 % more tTässä käyttäjä kirjoitettuaan
more t
painoi
TAB-näppäintä, jolloin T-shell antoi äänimerkin. Sitten käyttäjä
kirjoitti control-d:n, jolloin T-shell näytti listan
t-alkuisista tiedostonnimistä sekä kirjoitti komennonalun
more t
uudelleen näkyviin, jolloin käyttäjä voi
suoraan jatkaa kirjoittamista.
Tunnistus voi myös onnistua osittain. Jos sinulla esimerkiksi on
edellä mainittujen kolmen tiedoston lisäksi tiedosto
toimintakertomus
, niin yrittäessäsi edellä kuvattua
tunnistusta T-shell täydentäisi näin
more toimintaja antaisi äänimerkin. Tässä tapauksessa riittäisi kirjoittaa yksi lisämerkki,
s
, ja painaa uudestaan TAB-näppäintä,
jolloin tunnistus onnistuisi kokonaan.
Unixissa voi helposti määritellä komentosanoille synonyymejä
alias
-komennolla. Sillä voi myös määritellä uusia
komentoja vanhojen avulla, esimerkiksi peruskomentojen muunnelmia,
joissa komennon toimintaa muutetaan valitsimilla.
Komento
alias
uusinimi komento
määrittelee komennolle uuden nimen. Huomaa, että komennon argumenteissa
kerrotaan ensin määriteltävä (uuden komennon nimi) ja sitten sen
määritelmä.
Kyseessä on shellin komento, joten sen kuvaus löytyy shellin
man-sivulta (esim. man tcsh
).
Määritelmä on voimassa pääteistunnon loppuun, joten pysyviksi halutut määritelmät kannattaa kirjoittaa sopivaan alustustiedostoon .cshrc.
Esimerkiksi komento
alias del rm
määrittelee komentosanalle rm
synonyymin del
.
Tämän jälkeen voidaan käyttää del
-komentoa aivan
kuten rm
-komentoa - samanlaisilla argumenteilla ja
valitsimilla.
Vaikka voi olla houkuttelevaa määritellä Unixin komentosanoille tutumpia tai luonnollisemman tuntuisia synonyymeja, kannattaa hiukan hillitä itseään. Ajan mittaan saattaa ero Unixin komentojen ja omien synonyymien välillä hämärtyä, ja jos sitten joudutaankin esim. tilapäisesti käyttämään jotain vierasta Unix-konetta, jossa omat määrittelyt eivät ole voimassa, voi mennä sormi suuhun.
Komento voidaan alias
-komennolla määritellä myös
sellaiseksi, että sen merkitys on jokin vanha komento joillakin
kiinteillä valitsimilla. Tällöin alias
-komennon
toinen argumentti kannattaa kirjoittaa heittomerkkeihin,
esim.
alias L 'ls -lt'
Tällöin pelkkä L
toimii kuten ls -lt
,
mutta sille voidaan antaa myös argumentteja ja lisävalitsimia;
esimerkiksi L -a foo*
tarkoittaisi samaa kuin
ls -lt -a foo*
.
Määrittelyssä voi myös käyttää putkea. Esimerkiksi komento
alias dir 'ls -lt | more'
määrittelee dir
-komennon, joka toimii kuten ls -lt
mutta tulostus menee more
-komennon kautta, siis sivutettuna.
Huomaa, että
edellä esitetyn alias-määrittelyn jälkeen
et voi antaa dir
-komennolle argumentteja,
koska ne menisivät argumentiksi more
-komennolle eivätkä
ls
-komennolle!
Tämä rajoitus voidaan kyllä kiertää, mutta alias
-komennon
hienouksien opettelun asemesta
saattaa olla järkevämpää opetella käyttämään
esim. ns. pieniä kieliä.
Voimassaolevat alias-määrittelyt saa selville komennolla
alias
ilman argumentteja. Ota huomioon, että
todennäköisesti on voimassa joukko oletusarvoisia
alias-määrittelyjä itse antamiesi lisäksi.
Alias-määrittelyn, jossa määriteltävä komento on ollut kom,
voi poistaa komennolla unalias
kom.
Ympäristömuuttujat (environment variables) ovat shellissä määriteltyjä muuttujia, jotka ovat myös shellin aliprosessien eli shellistä käynnistettyjen ohjelmien käytettävissä. Otetaan aluksi aiheesta yksinkertainen esimerkki:
Jossakin järjestelmässä saattaisi olla vaikkapa
enscript
-niminen komento
paperitulostusta
varten ja siinä
-P
-valitsin, jolla voi määrätä, mille kirjoittimelle
tulostus menee. Tällöin voisi olla käytännöllistä
asettaa
kirjoittimelle istuntokohtainen oletusarvo.
Jos
Tämä voidaan tehdä
määrittelemällä ympäristömuuttuja PRINTER
seuraavasti:
setenv PRINTER psy199
Tämän jälkeen sellainen enscript
-komento, jossa
ei ole -P
-valitsinta, toimii ikäänkuin siinä olisi
valitsin -Ppsy199
. Tämä johtuu siitä, että
enscript
valitsee kirjoittimen seuraavien sääntöjen mukaan:
-P
-valitsin, käytä siinä
ilmoitettua kirjoitinta.
PRINTER
arvo ilmoittaa.
(Jos käyttäjä ei ole sitä muuttujaa määritellyt,
enscript
käyttää muuttujan järjestelmäkohtaista
oletusarvoa, jos sellainen on, ja antaa virheilmoituksen
muussa tapauksessa.)
Riippuu komennosta tai ohjelmasta, käyttääkö se joidenkin ympäristömuuttujien arvoja jollakin tavalla ja miten se niitä käyttää. Periaatteessa asian pitäisi selvitä ainakin komennon tai ohjelman man-sivulta.
Järjestelmässä voi olla paljonkin valmiiksi määriteltyjä ympäristömuuttujia. Niiden tarkoituksena on osittain se, että jotkin ohjelmat toimisivat oletusarvoisesti jollakin järkeväksi harkitulla tavalla. Käyttäjä voi muuttaa oletusarvoja siten, että hän muuttaa ympäristömuuttujien arvoja.
Järjestelmässä ei ole mitään kiinteätä joukkoa ympäristömuuttujia.
Voit periaatteessa
määritellä minkä ympäristömuuttujan haluat ja antaa sille
minkä arvon haluat. Jos mikään prosessi ei käytä kyseisen
ympäristömuuttujan arvoa, ei määrittelyllä ole mitään käytännön
merkitystä. Toisaalta jos itse teet ohjelman, voit ainakin joissakin
tapauksissa tehdä siitä sellaisen, että se käyttää hyväkseen
ympäristömuuttujien arvoja, t.s. ohjelman toimintaan voidaan
vaikuttaa määrittelemällä jokin ympäristömuuttuja ennen ohjelman
käynnistämistä. Esimerkiksi C-ohjelmointikielessä tähän tarkoitukseen
voidaan käyttää standardifunktiota getenv
.
Voimassa olevat ympäristömuuttujien arvot saa selville
komennolla setenv
ilman argumentteja. Tulostus voi olla
aika pitkä. Seuraavassa näkyy vain tulostuksen alkuosa
eräässä tapauksessa:
epsilon ~ 51 % setenv ARCH=alpha DECW_BOOK=/p/doc/dxbook DISPLAY=yucca.hut.fi:0.0 EDITOR=emacs GROUP=staff HOME=/u/lai/lk/jkorpela HOST=epsilon.hut.fi HOSTTYPE=alpha ...Kaikkien ympäristömuuttujien merkitystä ei suinkaan tarvitse tietää - vain niiden, joiden arvojen asettaminen tai muuttaminen on jotenkin hyödyksi esim. jonkin ohjelman käytölle. Ja tällöin yleensä ohjelman käyttöohjeissa kerrotaan, millä ympäristömuuttujilla on merkitystä. Esimerkissämme näkyvistä muuttujista mainittakoon
EDITOR
,
jota jotkin ohjelmat käyttävät hyväkseen silloin, kun käyttäjä
antaa ohjelman sisällä käskyn, joka käynnistää editorin;
tällöin EDITOR
-muuttujan arvo saattaa määrätä,
mikä editori käynnistyy.
Ympäristömuuttujan arvon asettamisesta (tai muuttamisesta) oli jo esimerkki edellä. Komennon yleinen muoto on
setenv
muuttuja arvo
missä osan arvo rakenne riippuu siitä, mikä muuttuja on kyseessä. Usein arvo on rakenteeltaan hakemiston nimi, mutta se voi olla muutakin.
Varsin tärkeä ympäristömuuttuja on
PATH
.
Sen arvo on merkkijono, joka koostuu kaksoispisteellä toisistaan
erotetuista hakemistonnimistä. Shelli käyttää PATH
in
arvoa ohjelmien hakupolkuna:
jos käyttäjän kirjoittaman komennon
ensimmäinen sana ei ole shellin itsensä komento, niin shelli etsii
sennimistä niistä hakemistoista, jotka PATH
in arvossa
on lueteltu, ja nimenomaan siinä järjestyksessä, jossa ne on lueteltu.
Hakupolkuun voidaan lisätä hakemisto seuraavaan tapaan:
setenv PATH $PATH\:
hakemisto
(Tässä $PATH
viittaa PATH
-muuttujan vanhaan
arvoon, ja merkki \ "lainaa" sitä seuraavan merkin eli \: tarkoittaa
merkkiä :. Ilman "lainaamista" kaksoispisteellä olisi shellille
erikoismerkitys.)
On melko tavallista, että
järjestelmän perusasetusten mukaan
ohjelmien hakupolussa on mukana .
eli
kunkinhetkinen työhakemisto.
Tällöin esimerkiksi käyttäjän oma ohjelma
voidaan käynnistää suoraan nimellään, esim. a.out
pidemmän
vaihtoehdon ./a.out
asemesta.
Sellaiseen käytäntöön totutteleminen voi kuitenkin olla vaarallista.
Klassillinen esimerkki tästä on tilanne, jossa käyttäjä on antanut
omalle ohjelmalleen nimen test
. Vaikka työhakemisto olisi
mukana hakupolussa,
niin ohjelmaa ei välttämättä suinkaan voisi käynnistää komennolla
test
(vaan komennolla ./test
), sillä
on olemassa myös systeemiohjelma test
ja se hakemisto,
jossa se on, on todennäköisesti hakupolussa aiemmin!
Komennon setenv
vaikutus loppuu, kun pääteistunto
loppuu. Jos siis haluat pysyvästi asettaa joillekin ympäristömuuttujille
(alku)arvot, kirjoita setenv
-komennot
alustustiedostoon .cshrc.
Komento setenv
on nimenomaan T-shellin komento.
Muissa shelleissä on muita välineitä ympäristömuuttujien käsittelyyn.
Jos sinulla esiintyy toistuvasti tarvetta suorittaa sama
komentojen jono, voit kirjoittaa komennot tiedostoon
jollakin editorilla; tämän jälkeen
komentojono on suoritettavissa
source
-komennolla, jonka argumenttina on
kyseisen tiedoston nimi.
Komentoja sisältävää tiedostoa kutsutaan tässä nimellä
komentotiedosto; usein sellaisesta käytetään nimitystä shell script.
Seuraava esimerkki yksinkertaisesta komentotiedostosta
liittyy TeX-ladontaohjelmiston
käyttöön.
Olennaista asiassa aiheemme kannalta on se, että
TeXiä käytettäessä on käyttäjän
usein annettava sama komentojono. Tämä johtuu siitä, että käyttäjän
kirjoittama tiedosto käsiteltävä
TeX-ohjelmalla, jotta se saataisiin haluttuun muotoon, ja lisäksi
tulos on käsiteltävä toisella ohjelmalla, jotta se voitaisiin
tulostaa paperille.
Oletetaan, että käyttäjän kirjoittama tiedosto on nimeltään
dityo.tex
. Tällöin käyttäjä voisi kirjoittaa seuraavanlaisen
komentotiedoston,
joka olkoon nimeltään teksaa
ja joka sisältää
ne komennot, jotka käyttäjä muutoin naputtelisi käsin joka
kerta:
use tex latex dityo.tex dvips dityo.dviTämän jälkeen halutut asiat (TeXin käyttöönotto, tiedoston käsittely LaTeXillä ja sitten vielä tuloksen muuntaminen PostScript-muotoon mahdollista paperitulostusta varten) voidaan suorittaa komennolla
source teksaaOn mahdollista järjestää asiat niin, että komentotiedoston voi suorittaa kirjoittamalla vain sen nimi, esim.
teksaa
.
Tämä edellyttää kahta asiaa:
#!/bin/tcsh
chmod o+x teksaa
Komentotiedostossa voi pelkkien komentojen lisäksi olla
selittäviä kommentteja, jotka aloitetaan ristikkomerkillä #
,
sekä erilaisia ohjausrakenteita kuten ehdollisuuden aikaansaava
if
ja toiston aikaansaava while
.
Tässä oppaassa käsittelemme komentotiedostojen kehittyneemmästä
käytöstä vain yhtä tärkeää piirrettä: argumenttien käyttöä.
Esimerkiksi edellä esitetystä komentotiedostosta teksaa
saataisiin yleiskäyttöisempi seuraavasti:
use tex latex $1.tex dvips $1.dviTällöin samaa komentotiedostoa voitaisiin käyttää erinimisten tiedostojen käsittelyyn. Esimerkiksi komento
source teksaa dityo
tällöin aiheuttaisi
saman kuin aiempi teksaa
-tiedoston versio.
Tässä siis merkintä $1
tarkoittaa sillä komentorivillä
olevaa argumenttia, jolla komentotiedosto käynnistetään.
Lienee helppo arvata, että jos komentorivillä on useita argumentteja,
niihin viitataan yleisesti järjestyksessä merkinnöillä
$1
, $2
, $3
jne.
Ohjausrakenteissa on aika paljon eroja eri shellien välillä. Jos näitä aiheita ryhtyy opiskelemaan, kannattaa harkita, mitä shelliä silloin käyttää komentotiedostoissa. Toisaalta olisi luonnollista käyttää samaa shelliä kuin muutoinkin, siis T-shelliä, mutta toisaalta on melko vakiintunut tapa kirjoittaa komentotiedostot käyttämään Bourne shelliä muun muassa siirrettävyyden takia. Bourne shell löytynee jokaisesta Unixista, esim. T-shell ei suinkaan kaikista.
Oppaassa Ohjelmointi Unixissa on lisätietoja komentotiedostoista.
Tässä esitettävät asiat koskevat T-shelliä. Muissa shelleissä alustustiedostojen käyttö on periaatteessa samanlaista, mutta mm. tiedostojen nimissä on eroa.
Pääteistunnon alussa järjestelmä automaattisesti suorittaa
.cshrc
-nimisen
komentotiedoston, jos sellainen on olemassa, ja sitten
.login
-nimisen
komentotiedoston, jos sellainen on olemassa
.cshrc
-tiedoston
(mutta ei enää .login
-tiedostoa), kun shelli käynnistyy.
Tämä on tärkeätä mm. siksi, että
script
-komennon suoritukseen sisältyy uuden shellin
käynnistyminen aliprosessina.
Yhteyden ottaminen koneeseen X-ympäristössä xin
-komennolla
ei aloita pääteyhteyttä edellä tarkoitetussa muodossa. Toisin sanoen
silloin
järjestelmä suorittaa .cshrc
-tiedoston
mutta ei .login
-tiedostoa.
Käytännössä tämä merkitsee, että halutut alustustoimenpiteet,
esim. ympäristömuuttujien määrittelyt,
kannattaa suorittaa nimenomaan .cshrc
-tiedostossa,
ellei kyseessä ole asia, joka halutaan todellakin suorittaa vain
varsinaisen pääteistunnon alussa.
Varsin tavallista on, että
luodessaan käyttäjätunnuksen järjestelmän hallinnoija (ylläpitäjä)
automaattisesti perustaa käyttäjälle
tiedostot .cshrc
ja .login
tai vastaavat.
Niiden sisältönä saattaa olla esimerkiksi
asetuksia, jotka ovat enemmän tai vähemmän välttämättömiä
kyseisessä käyttöympäristössä, mutta myös sellaista, mikä on
vain hallinnoijan näkemys siitä, millaiset
komentojen synonyymit (aliakset) ovat
kivoja jne.
Valitettavasti tällaisten alustustiedostojen
dokumentaatio on usein puutteellinen tai
olematon, joten käyttäjän pääteltäväksi jää, mitä voi tai on syytä
muuttaa.
Tiedostojen käsittelyyn liittyviä komentoja kuvataan seuraavassa luvussa. Tässä esitellään eräitä muita usein tarvittavia komentoja.
Salasana vaihdetaan komennolla passwd
.
Komennossa ei anneta argumentteja, vaan se kyselee tarvittavat tiedot.
Vaihto näyttää tämäntapaiselta:
tunnus@kone hakemisto n % passwd
Changing password for
tunnus...
Old password:
New password:
Retype new passwd:
Järjestelmä siis kysyy ensin vanhan salasanan ja sitten uuden salasanan kahdesti. Kirjoittamasi salasanat eivät tässäkään tule näkyviin.
Kun haluat seuraavan kerran käyttää konetta salasanan vaihdon jälkeen,
niin login
-kyselyn jälkeiseen password
-kyselyyn
annetaan vastaukseksi tietenkin uusi salasana.
Koneessa voi olla salasanojen kelvollisuustarkistus, joka ei hyväksy liian yksinkertaisia salasanoja. Silloin asiasta tulostuu ilmoitus, ja vanha salasana jää voimaan.
Kun vaihdat salasanasi yhdessä Unix-koneessa, niin se ei automaattisesti suinkaan muuta salasanaasi muissa koneissa. On mahdollista, että eri koneet käyttävät samaa salasanajärjestelmää, jolloin salasanan vaihto vaikuttaa useissa koneissa, mutta tätä koskevat mahdolliset järjestelyt ovat erilaiset eri paikoissa ja koneissa ja voivat muuttua ajan myötä.
chfn
Jos haluat muuttaa niitä tietoja sinusta,
jotka näkyvät käytettäessä
finger
-komentoa,
käytä komentoa
chfn
(change finger (information)).
Komennolla voi muuttaa esimerkiksi sukunimensä, jos sukunimi on vaihtunut naimisiin menon yhteydessä. Joissakin koneissa on rajoitettu nimen muutosmahdollisuuksia. Komento tulostaa ruudulle ohjeita; Seuraa niitä.
Seuraavassa esimerkissä käyttäjä tarkistaa omat
finger
-tietonsa, muuttaa niitä ja tarkistaa muutosten
onnistumisen. Muutokset eli huoneennumeron ja puhelinnumeron lisäys
näkyvät jälkimmäisen finger
-komennon tulostuksen rivillä,
jonka alussa lukee Office:
epsilon ~ 51 % finger jkorpela Login name: jkorpela In real life: Jukka Korpela Directory: /u/lai/lk/jkorpela Shell: /bin/tcsh On since Feb 19 08:37:11 12 minutes Idle Time on ttys7 from yucca.hut.fi Plan: Please refer to URL ../index.html epsilon ~ 52 % chfn Default values are printed inside of '[]'. To accept the default, type <return>. To have a blank entry, type the word 'none'. Name [Jukka Korpela]: Room number (Exs: 597E or 197C) []: U137A Office Phone (Ex: 6426000) []: 4319 Home Phone (Ex: 9875432) []: epsilon ~ 53 % finger jkorpela Login name: jkorpela In real life: Jukka Korpela Office: U137A, x4319 Directory: /u/lai/lk/jkorpela Shell: /bin/tcsh On since Feb 19 08:37:11 12 minutes Idle Time on ttys7 from yucca.hut.fi Plan: Please refer to URL ../index.html epsilon ~ 54 %Niihin tietoihin, jotka sinusta näkyvät
finger
illä,
voit vaikuttaa myös
tiedostojen .plan
ja .project
sisällöllä.
rlogin
, xin
Kun olet yhteydessä Unix-koneeseen koneA, voit ottaa siitä yhteyden toiseen Unix-koneeseen koneB, jossa sinulla on tunnus, komennolla
rlogin
koneB
tai, jos sinulla on koneB:ssä eri käyttäjätunnus, tunnusB, kuin koneA:ssa, komennolla
rlogin
koneB -l
tunnusB
Huomaa, että tällöin valitsin on, yleisestä Unix-käytännöstä poiketen, komennon argumentin jäljessä eikä ennen sitä.
Edellä tunnusB tarkoittaa koneen Internet-nimeä,
esim.
kyyppari.hkkk.fi
.
Tietokoneen käyttö ilman asianmukaista lupaa on kiellettyä, ja sen yrityskin on rangaistava (rikoslain 38. luvun 8 §). Ei siis missään tapauksessa ole sallittua yrittää ottaa yhteys toiseen tietokoneeseen esim. salasanoja arvailemalla.
Otettaessa yhteyttä rlogin
-komennolla järjestelmä
ei kysy salasanaa, jos koneB:ssä tunnusB:n
kotihakemistossa on tiedosto nimeltä .rhosts
ja siinä
on rivi
koneA tunnusA
missä tunnusA on se tunnus, jolta yhteys otetaan.
Toisin sanoen perustamalla kotihakemistoosi .rhosts
-tiedoston,
jossa on mainitun muotoisia rivejä, voit sallia yhteydenotot ilman
salasanaa kyseisiltä tunnuksilta.
Tätä menettelyä tulee käyttää vain silloin, kun on kyse yhteyksien
mahdollistamisesta niiden omien käyttäjätunnustesi
välillä, joita sinulla on eri koneissa.
Rlogin-yhteys katkeaa normaalisti, kun yhteys toiseen koneeseen katkaistaan komennolla
logout
(tai exit
).
Yhteys voidaan lisäksi katkaista pakolla
kirjoittamalla merkkiyhdistelmä
<ret>~
.<ret>
missä <ret>
tarkoittaa rivinvaihtoa eli
return-näppäimen painamista.
Tällainen voi olla tarpeen mm. silloin, kun yhteys toiseen koneeseen
on jumissa esim. koneen "kaatumisen" tarkia.
Yhteys voidaan myös jättää taustalle (suspend)
kirjoittamalla merkkiyhdistelmä
<ret>~
control-z<ret>
joka siis ikäänkuin palauttaa tilapäisesti siihen koneeseen,
josta Rlogin-yhteys otettiin.
Takaisin Rlogin-yhteyteen päästään komennolla fg
(foreground).
lock
Jos joudut lähtemään päätteen äärestä lyhyeksi aikaa, pääte kannattaa lukita niin, ettei kukaan muu pääse vahingossa (tai ilkeyttään) käyttämään tunnustasi. Tämä tehdään komennolla
lock
.
Se kysyy sinulta salasanan ja sitten varmistuksen vuoksi vaatii sinua kirjoittamaan sen uudestaan. Tämä salasana on vapaasti valittavissasi, eikä sen tarvitse olla sama kuin se salasana, jota käytä yhteydenotossa (login-salasanasi).
Lukitsemisen jälkeen pääte jää tilaan, josta pääsee jatkamaan vain antamalla em. salasanan. Huomaa kuitenkin, että 15 minuutin kuluttua lukitus purkautuu itsestään.
Lukitseminen on siis todellakin tarkoitettu vain muutaman minuutin (enintään varttitunnin) poissaoloja varten. Jos poistut pitemmäksi aikaa, katkaise yhteys normaalisti.
Päätteellä lukitseminen voi näyttää esim. seuraavalta - asiassa on hiukan konekohtaista vaihtelua. Salasanat eivät tietenkään tule näkyviin. Salasanan kirjoittamisen jälkeen painetaan aina returnia.
vipunen ~ 167 % lock Key: Again: lock: /dev/pts/44 on vipunen.hut.fi. timeout in 15 minutes time now is Wed Apr 28 14:08:22 EET DST 1993 Key:Kun sitten tulet takaisin ja kirjoitat salasanan (ja painat returnia), tilanne palautuu normaaliksi ja päätteelle tulee komentotulkin kehote.
Tiedosto (file) on tiedon nimetty säilytyspaikka tietokoneessa. Tiedostoa voi verrata yhteen asiakirjaan, joka on isossa mapissa. Tiedosto voi syntyä joko ohjelmien tulostuksena tai ihmisten kirjoittamana tekstinä. Aloittelija on todennäköisesti eniten tekemisissä jälkimmäisen tiedostotyypin kanssa.
Tiedostolla on aina sekä nimi että sisältö. Mapissa olevalla asiakirjalla ei välttämättä ole nimeä, mutta tiedostolla siis on. Erona mappiin on myös se, että käyttäjän ei tarvitse käydä asiakirjoja läpi löytääkseen haluamansa, vaan riittää kertoa tiedoston nimi. Tietokoneen käyttöjärjestelmä nimittäin pitää kirjaa siitä, missä mikin tiedosto fyysisesti sijaitsee ja tekee hakemisen käyttäjän puolesta.
Tiedostoja voidaan järjestää hakemistoihin (directory). Hakemistoa voi verrata mappirivistön yhteen mappiin. Ja aivan kuten mappi voi sisältää välilehtiä, joilla mapin sisältämiä asiakirjoja ryhmitellään tarkemmin, voi hakemisto sisältää alihakemistoja (subdirectory).
Unixin tiedostojärjestelmässä hakemistoihin, alihakemistoihin, alialihakemistoihin jne. jakamista voidaan jatkaa niin pitkälle kuin halutaan. Tätä havainnollistetaan usein vertaamalla tiedostojärjestelmää puuhun, jossa puun oksat vastaavat hakemistoja, oksanhaarat alihakemistoja ja lehdet tiedostoja. Jos esimerkiksi olet tutkija, voit perustaa itsellesi kutakin tutkimushanketta varten erillisen hakemiston ja siihen tarvittaessa alihakemistoja hankkeen eri osia varten jne.
Puuvertaukseen liittyy se, että Unix-koneen tiedostojärjestelmän kaikkein ylimmän tason hakemistoa sanotaan juurihakemistoksi (root directory). Sen nimenä on vinoviiva /
.
Jos olet utelias, voit komennolla ls /
katsoa, minkänimisiä alihakemistoja juurihakemistossa on käyttämässäsi koneessa.
Tiedoston voi perustaa monella tavalla. Kuten edellä on mainittu, tekstitiedostot perustetaan yleensä jollakin editorilla kuten Emacsilla; lisäksi monet ohjelmat luovat tiedostoja. Tiedostoja voi myös muodostaa toisista tiedostoista erilaisilla muokkaus- ja muunnosohjelmilla.
Jos haluat perustaa aivan pienen tiedoston,
jota varten et viitsi käynnistää editoria,
voit käyttää cat
-komentoa seuraavasti:
cat >
tiedostonnimi
Tällöin komento lukee päätteeltä naputeltavat merkit ja kirjoittaa ne tiedostoon, joka saa annetun nimen. Merkkien kirjoittaminen lopetetaan siten, että kun viimeinen rivi on kirjoitettu loppuun ja on painettu returnia, annetaan seuraavaksi control-d.
Unix-järjestelmässä tiedoston tai hakemiston nimessä voi periaatteessa käyttää isoa valikoimaa merkkejä, mutta käytännössä kannattaa käyttää vain kirjaimia a-z ja numeroita sekä seuraavia erikoismerkkejä:
.
_
-
Skandinaaviset kirjaimemme å, ä ja ö yleensä aiheuttavat vain ongelmia, joten niitä ei kannata käyttää tiedostojen tai hakemistojen nimissä.
Muistathan, että Unixissa
isot ja pienet kirjaimet ovat eri merkkejä,
joten esim.
TKK
on aivan eri tiedostonnimi kuin tkk
tai Tkk
.
Yleensä on tapana käyttää pääasiassa pieniä kirjaimia. Jotkut erottelevat tiedostojen nimet hakemiston nimestä kirjoittamalla tiedoston nimen pienellä alkukirjaimella, kun taas hakemiston nimen isolla alkukirjaimella. Silloin siis
tkk
olisi tiedosto ja Tkk
hakemisto.
Mutta on jokaisen itse päätettävissä, miten omat tiedostonsa ja hakemistonsa nimeää.
Nimen pituudella ei käytännössä ole rajoitusta, sillä tiedoston tai hakemiston nimi voi olla jopa 256 merkkiä pitkä. Pitkät nimet ovat kuitenkin hankalia käyttää.
Unix tulkitsee tiedostojen (ja hakemistojen) nimet seuraavasti:
/etc/motd
tarkoittaa juurihakemiston
alihakemiston etc
motd
-nimistä tiedostoa
xyz
tarkoittaa normaalisti käyttäjän omaa
xyz
-nimistä tiedostoa ja
abc/foo
tarkoittaa käyttäjän oman alihakemiston
abc
tiedostoa foo
.
Piste on mahdollinen tiedoston (tai hakemiston) nimen ensimmäisenäkin
merkkinä, mutta sillä on erikoismerkitys.
Pisteellä alkavat tiedostonnimet eivät normaalisti näy
tiedostolistoissa, jotka saadaan ls
-komennolla.
Sellaiset tiedostot ovat yleensä eri ohjelmien alustustiedostoja tai
ohjelmien perustamia ja ylläpitämiä "kirjanpitotiedostoja", joista
oletetaan, että käyttäjät eivät yleensä halua nähdä niitä.
Esimerkkejä: Emacs-editori suorittaa .emacs
-nimisessä
tiedostossa määritellyt toimenpiteet, jos sellainen tiedosto on
käyttäjän kotihakemistossa.
Nyysiohjelmat yleensä luovat tiedostoja,
joiden nimet ovat sentapaisia kuin .newsrc
, ja ylläpitävät
niissä tietoja siitä, mitä nyysiryhmiä käyttäjä lukee ja mitä juttuja
niistä hän on jo lukenut.
foo~
ja #foo#
Jotkin ohjelmat saattavat automaattisesti luoda tiedostoja, joilla
on erikoisia nimiä. Tavallisimmin käyttäjä huomaa
sellaisten
tiedostonnimien kuin foo~
ja
#foo#
syntymisen. Niitä luo Emacs-editori.
Kun Emacsilla editoidaan tiedostoja, se tallettaessaan tiedoston
muokatussa muodossa automaattisesti tallettaa tiedoston aiemman
sisällön tiedostoon, jonka nimen perässä on tildemerkki ~
.
Siis kun talletat tiedoston foo
muokatussa muodossaan,
Emacs panee vanhan version talteen tiedostoon foo~
.
Näitä "varmuuskopioita" ei yleensä kannata hävittää, ellei
tiedosto ole hyvin suuri. "Varmuuskopiota" voit tarvita esimerkiksi
silloin, kun huomaat tehneesi tiedostoon vääriä muutoksia.
Jos Emacsin toiminta päättyy epänormaalisti esimerkiksi tietokoneen
(tai itse Emacs-ohjelman)
"kaatumisen" tai modemiyhteyden katkeamisen takia, Emacs ainakin
yrittää tallettaa editoitavan tiedoston senhetkisen tilan
tiedostoon, joka koostuu tiedostonnimestä ristikkomerkkien # sisällä.
Jos siis olet editoimassa tiedostoa foo
ja Emacsin
toiminta päättyy epänormaalisti, niin löydät tiedostosta foo
tilanteen sellaisena, kuin se oli viimeisellä normaalilla
tallennushetkellä, ja tiedostosta #foo#
mahdollisesti
uudemman version.
Joskus käyttäjä itse onnistuu saamaan aikaan hankalan tiedostonnimen,
esimerkiksi sellaisen, joka alkaa yhdysviivalla tai sisältää
kontrollimerkkejä. Sellaisiin tiedostoihin ei voi viitata normaalilla
tavalla komennoissa, joissa haluttaisiin esim. poistaa näitä
tiedostoja tai vaihtaa niiden nimiä.
Muun muassa
Unix-fakissa on
ohjeita hankalien tiedostonnimien käsittelyyn.
Tässä mainittakoon vain, että jos tiedostonnimi alkaa yhdysviivalla,
esim. -foo
, niin siihen voi viitata tyyliin
./-foo
, jolloin komentotulkki käsittää sen
tiedostonnimeksi eikä valitsimeksi.
Unix-komennoissa voi tiedostonnimissä käyttää ns. jokerimerkkejä eli "villikorttimerkkejä" (wildcards). Nimitys johtunee canastan ja jokeripokerin tapaisista korttipeleistä, joissa joitakin kortteja kuten jokereita voi käyttää "villeinä kortteina" minkä hyvänsä kortin asemesta. Tarkkaan ottaen kyse ei tällöin ole varsinaisista tiedostonnimistä vaan rakenteista, joita voi käyttää komentojen argumentteina tiedostonnimien paikalla ja jotka komentotulkki laventaa tiedostonnimilistoiksi.
Unixissa jokerimerkkejä ovat
marj?
tarkoittaa kumpaakin tiedostonnimistä marja
ja marjo
ja
myös mitä tahansa viisimerkkistä marj
-alkuista merkkijonoa.
Toisaalta
marj*
taas tarkoittaisi esimerkiksi
tiedostonnimiä
marjaana
, marja
,
marjo
, marj
, marjukka
jne.,
siis mitä tahansa merkkijonoa, mikä alkaa kirjaimilla marj
.
Lisää esimerkkejä:
ls tieto???
antaa listan kaikista niistä tasan
kahdeksan merkin mittaisista olemassaolevien tiedoston nimistä, jotka alkavat merkkijonolla tieto
ls tieto*
antaa listan kaikista niistä olemassaolevien tiedoston nimistä,
jotka alkavat merkkijonolla tieto
,
mukaan lukien nimi tieto
ls *tieto*
antaa listan kaikista niistä olemassaolevien tiedoston nimistä, joissa esiintyy jossakin kohdassa merkkijono
tieto
.*
ei siis lavennu aivan kaikkien tiedostonnimien listaksi, vaan pisteellä alkavat jäävät pois.
Jokerimerkkien käyttö tehostaa työskentelyä, mutta siinä on omat riskinsä. Vahingossa saattaa tulla viitatuksi sellaisen tiedoston tai hakemiston nimeen, johon ei ollut aikomus puuttua. Jokerimerkkien käytössä on siis hyvä olla huolellinen, ettei esim. tiedostoja poistettaisi turhaan.
Jokaisella käyttäjällä on Unix-koneessa hakemisto, joka on hänen omistuksessaan. Tätä hakemistoa sanotaan käyttäjän kotihakemistoksi (home directory). Kotihakemisto on normaalisti vain omistajan käytössä.
Kotihakemiston nimi sisältää
omistajan käyttäjätunnuksen, mutta muutoin nimi on erilainen eri
järjestelmissä.
Yleensä ei ole syytä viitata kotihakemistoonsa suoraan sen nimellä,
vaan kannattaa käyttää sen symbolista nimeä ~
(tämän merkin virallinen nimi on tilde, arkikielessä puhutaan usein
"matomerkistä"). Tosin kaikissa
shelleissä se ei ole mahdollista.
Toinen, yleispätevämpi ratkaisu on käyttää symbolista
nimeä $HOME
.
Käyttäjä voi myös viitata muiden käyttäjien kotihakemistoihin.
Riippuu hakemistojen suojauksista, onko tästä mitään hyötyä,
mutta joka tapauksessa käyttäjätunnuksen tunnus
kotihakemistoon voivat kaikki käyttäjät viitata symbolisella
nimellä ~
tunnus eli tilde-merkillä,
jota seuraa (ilman välilyöntiä) käyttäjätunnus.
Työhakemistoksi (working directory) eli nykyiseksi hakemistoksi
(current directory) kutsutaan sitä hakemistoa,
"jossa käyttäjä juuri sillä hetkellä on".
Täsmällisemmin sanottuna se tarkoittaa sitä hakemistoa, jonka
tiedostoihin tiedostonnimet oletusarvoisesti viittaavat.
Pääteistunnon alkaessa työhakemistona on kotihakemisto, mutta
työhakemistoa voi vaihtaa cd
-komennolla.
Tiedostonnimet siis viittaavat
oletusarvoisesti työhakemistoon.
Esimerkiksi kun olet hakemistossa mail/
ja tuhoat (komennolla rm foo
)
siellä tiedoston nimeltä foo
, niin tuhoaminen
ei vaikuta mitenkään kotihakemistossasi ehkä olevaan
tiedostoon nimeltä foo
.
Työhakemistollakin on symbolinen nimi, samoin sitä lähinnä ylemmällä hakemistolla:
pwd
kertooKomento
pwd
(print working directory) näyttää, missä hakemistossa ollaan eli mikä on senhetkinen työhakemisto.
Seuraavassa on kaksi esimerkkiä pwd
:n tulostuksesta.
Kummassakin tapauksessa käyttäjä jkorpela
on kotihakemistossaan
mutta eri koneissa; kuten nähdään, kotihakemistojen nimet voivat siis
eri koneissa olla aivan erilaiset:
/m/fs/lai/lai/lk/jkorpela /mnt/mds/univ2/tkk/jkorpela
cd
Komennolla cd
(change directory) siirrytään toiseen hakemistoon eli vaihdetaan työhakemistoa. Komennon muoto on
cd
hakemistonnimi
Argumentin oletusarvona on kotihakemisto.
Esimerkkejä:
cd
vie kotihakemistoon
cd foo
vie nykyisen hakemiston alihakemistoon foo
cd ~/test
vie kotihakemiston
alihakemistoon test
cd ..
vie siihen hakemistoon, jonka alihakemisto
nykyinen hakemisto on
cd ~sasu
vie käyttäjätunnuksen sasu
kotihakemistoon
cd /var/spool
vie järjestelmän (juurihakemiston
alaisen) hakemiston var
alihakemistoon spool
cd
-komennolla ei sinänsä
edellytä
hakemiston suojauksilta muuta kuin että
siihen on "suoritusoikeus" eli x-oikeus. Toisaalta
cd
-komento ei mitenkään lisää käyttäjän oikeuksia
kyseiseen hakemistoon tai sen tiedostoihin.
ls
kertools
-komentoAiemmin on jo mainittu, että
komento
ls
(list) antaa yksinkertaisen listan senhetkisen työhakemiston tiedostoista.
Jos työhakemistossa on alihakemistoja, ne näkyvät tiedostojen joukossa.
Seuraavassa tutustutaan ls
-komennon muihin muotoihin.
Komennossa voidaan antaa argumenttina
*.c
,
jolloin ls
näyttää sen "lavennuksen", esim.
kaikki ne tiedostonnimet, jotka loppuvat merkkeihin .c
ls
valitsimia saa enemmän ja yksityiskohtaisempaa tietoa tiedostoista ja hakemistoista.
Valitsimilla voi myös muutoin säädellä ls
-komennon tulostusta.
Kaikista valitsimista saa tietenkin listan
man
-komennolla: man ls
.
Monissa Unix-koneissa on valmiiksi määritelty erilaisia
ls
-komennon muunnelmia.
Tyypillisiä sellaisten muunnelmien nimiä ovat
l
, ll
, L
, LL
.
Jos käyttää niitä, kannattaa muistaa, että ne eivät ole käytettävissä
kaikissa Unix-koneissa.
-l
Tavallisimmin käytetty ls
-komennon
valitsin lienee -l
, jolla saa pitkän (long) tulostuksen, jossa on yksi rivillinen tietoa kutakin tiedostoa kohti. Komennolla
ls -l
saatava tulostus voisi olla esimerkiksi seuraava:
total 42 -rw-r--r-- 1 jkorpela users 169 Mar 30 11:09 MAIL drwxr-xr-x 2 jkorpela users 1024 Apr 24 09:08 Kirjeet -rwxr-xr-x 1 jkorpela users 16384 Mar 30 11:07 a.out -rw-r--r-- 1 jkorpela users 26 Mar 30 10:51 iku.c -rw-r--r-- 1 jkorpela users 71 Mar 30 11:00 juttu -rw-r--r-- 1 jkorpela users 31 Mar 30 10:57 juttu~Aluksi tulostuva
total
-luku kertoo tiedostojen
yhteenlasketun koon ns. blokkeina.
Yksi blokki on eri Unix-järjestelmissä erilainen:
1024, 512 tai 256 tavua.
Tavu (engl. byte) puolestaan on tiedostotilan (ja muistinkoon) perusyksikkö, joka tekstitiedostojen osalta vastaa yhtä merkkiä. Yleisesti käytetään tavu-sanan edessä etuliitteitä kilo-, mega- ja giga-, joilla on melkein mutta ei ihan sama merkitys kuin SI-järjestelmän mittayksiköissä: kilotavu tarkoittaa 1024 tavua, megatavu tarkoittaa 1024 kilotavua eli reilut miljoona tavua, gigatavu 1024 megatavua jne. (Jos tämä kuulostaa hämäävältä, älä huolestu; se on hämäävää.)
Muista riveistä kukin kertoo tietoja yhdestä tiedostosta seuraavasti:
-
tai d
sen mukaan, onko kyseessä tavallinen tiedosto vai hakemisto.
Esimerkissämme siis Kirjeet
on työhakemiston alihakemisto.
jkorpela
omistamia ja ryhmässä
users
.
Nämä asiat yhdessä
tiedoston suojausten
kanssa määräävät, kuka saa tehdä tiedostolle mitäkin.
iku.c
on 26 tavun kokoinen,
siis hyvin pieni.
-a
Normaalisti ls
:n tulostuksessa eivät näy sellaiset
tiedostot, joiden nimi alkaa pisteellä,
paitsi jos komennossa erikseen annetaan sellainen tiedostonnimi.
Esimerkiksi tiedosto .cshrc
ei näy komennon ls
tulostuksessa. Sen sijaan komento ls .cshrc
kyllä näyttää
sen, samoin esimerkiksi ls .c*
. (Komento
.*
joka ehkä tulee mieleen ei ole kovin hyvä ajatus,
sillä erinäisistä syistä se näyttää paljon muitakin tiedostoja
kuin luulisi.)
Jos ls
-komennossa on valitsin -a
, siis esim.
ls -a
, niin
se tulostaa myös ne tiedostonnimet, jotka alkavat pisteellä.
Esimerkki:
epsilon ~/test 51 % ls awktest scr testfile tex.tex typescript epsilon ~/test 52 % ls -a . .foo scr tex.tex .. awktest testfile typescript epsilon ~/test 53 %
Esimerkistä ilmenee se
valitsimen -a
hiukan hämäävä
piirre, että tulostuksessa näkyvät myös .
ja ..
jotka ovat työhakemiston ja sitä ylemmän hakemiston symbolisia nimiä.
-t
Jos ls
-komennossa on
valitsin -t
(time), niin se tulostaa tiedostolistan
aikajärjestyksessä
tiedoston viimeisimmän muuttamishetken mukaan,
uusimmasta vanhimpaan.
(Oletusarvona ls
-komennossa on tulostaminen
aakkosjärjestyksessä nimien mukaan.)
cat
"Perinteinen" mutta huono
tapa tulostaa tiedosto kuvaruudulle Unixissa on cat
-komento:
cat
tiedostonnimi.
Se on käytettävissä kaikissa Unixeissa.
Se onkin sen ainoa hyvä puoli seuraaviin vaihtoehtoihin verrattuna,
sillä cat
-komento ei esim. sivuta tulostusta vaan
pitkä teksti yleensä vilahtaa katseen ohi liian nopeasti.
Komennon nimi cat
johtuu englannin sanasta
catenate 'liittää yhteen'. Tämän taustalla on se, että komennolla
voi liittää yhteen tiedostojen sisältöjä seuraavaan tapaan:
cat aa bb cc > foo
Esimerkkikomento tuottaa tiedoston foo
, joka sisältää
tiedostojen aa
, bb
ja cc
sisällöt tässä järjestyksessä (hävittämättä alkuperäisiä tiedostoja).
more
Komento
more
tiedostonnimi
tulostaa tiedoston sisällön ruudullisen kerrallaan: jos sisältö on pitempi kuin ruudulle mahtuu, tulostuu ensimmäinen ruudullinen, ja tulostus jatkuu vasta käyttäjän painettua välilyöntinäppäintä.
Välilyönnin painamisen asemesta voit myös mm.
q
:lla (quit)
h
:lla (help).
less
Komento less
on hyvin samantapainen mutta
monipuolisempi kuin more
,
mutta sitä ei välttämättä löydy kaikista koneista,
joissa more
on käytettävissä.
Komennon nimi on tarkoitettu vitsiksi (less
is more
than more
). Myös less
-komennon man-sivulla
oleva "kuvaus" less - opposite of more
on olevinaan vitsi.
cp
(copy)Komento
cp
tiedosto1 tiedosto2
tekee tiedosto1:n sisällöstä kopion uuteen tiedostoon, joka saa nimen tiedosto2.
Jos
tiedosto2 on jo olemassa, sen vanha sisältö häviää.
Joissakin koneissa toiminta tässä tilanteessa voi olla erilaista,
esim. cp
-komento saattaa kysyä,
halutaanko todella kirjoittaa vanhan tiedon päälle.
Komennosta on myös muoto
cp
tiedosto1 tiedosto2 ... tiedostoN
hakemisto
joka kopioi kaikki luetellut tiedostot ilmoitettuun hakemistoon. Tällöin kunkin kopion suhteelliseksi nimeksi (siis varsinaiseksi nimiosaksi, ilman hakemistopolkua) tulee sama kuin vastaavan alkuperäisen tiedoston varsinainen nimi. Esimerkiksi komento
cp /usr/include/limits.h /usr/include/float.h .tekisi mainituista tiedostoista kopiot senhetkiseen työhakemistoon nimillä
limits.h
ja float.h
.
mv
(move)Komento
mv
vanhanimi uusinimi
muuttaa olemassaolevan tiedoston vanhanimi nimeksi uusinimi.
Jos ennestään on olemassa tiedosto nimeltä uusinimi, sen vanha sisältö häviää.
Jos olet esim.
vahingossa perustanut tiedoston, jolla on eri nimi kuin haluaisit,
voit vaihtaa sen mv
-komennolla.
Jos vaikka haluaa vaihtaa vahingossa väärin kirjoitetun tiedostonnimen
tetsi
nimeksi testi
,
niin sen voi tehdä komennolla
mv tetsi testi
.
Komentosana mv
johtuu englannin sanasta move,
mikä liittyy siihen, että usein mv
-komentoa käytetään
siirtämään tiedosto hakemistosta toiseen.
Sellainen siirto voidaan seuraavaan tapaan:
mv foo alihak/foo
taikka lyhyemmin niin, että toinen argumentti on
alihak/
tai alihak
,
jolloin tiedoston nimeksi kyseisessä hakemistossa tulee foo
.
Yleisemmin sanottuna
mv
-komennosta on myös muoto
mv
tiedosto1 tiedosto2 ... tiedostoN hakemisto
joka siirtää kaikki luetellut tiedostot ilmoitettuun hakemistoon.
rm
(remove)Komento
rm
tiedostonnimi
hävittää (poistaa, tuhoaa) ilmoitetun tiedoston. Sekä tiedoston sisältö että sen nimi häviävät heti. Komennolle voidaan antaa argumentteina myös lista tiedostonnimiä välilyönnillä toisistaan erotettuina.
Komennon rm
vaikutus on peruuttamaton.
Ole tämän takia erityisen tarkka käyttäessäsi
rm
-komennossa jokerimerkkejä.
Jos esimerkiksi haluat hävittää kaikki ne tiedostot,
joiden nimi alkaa a-kirjaimella, mutta kirjoitat oikean komennon
rm a*
asemesta
rm a *
,
niin tulet hävittäneeksi kaikki (senhetkisen työhakemistosi) tiedostot!
Vahingossa hävitetyn tiedoston palauttaminen saattaa joskus olla mahdollista, jos järjestelmästä otetaan varmuuskopioita. Palauttaminen vaatii kuitenkin operaattorin toimenpiteitä, ja se, miten tuore tilanne saadaan palautetuksi, riippuu varmuuskopioiden ottamisen tiheydestä.
Voit käyttää rm
-komennossa valitsinta -i
(esimerkiksi rm -i a*
),
jolloin komento kysyy "interaktiivisesti"
kustakin
tiedostosta erikseen, haluatko todella hävittää sen.
Valitsimen -i
käyttö on erityisen suositeltavaa
aina kun käytetään jokerimerkkejä.
Vaikka Unixissa hakemistot ovat tiedostoja ja näkyvät esim.
ls
-komennolla saatavissa tiedostolistoissa,
niitä ei luoda, käsitellä ja poisteta samalla tavalla kuin
normaaleja tiedostoja. Sen sijaan käytetään erityisiä komentoja,
jotka on tarkoitettu nimenomaan hakemistojen käsittelyyn.
mkdir
Hakemisto luodaan komennolla mkdir
(make directory).
Argumenttina annetaan se nimi, joka luotavalle hakemistolle halutaan.
Esimerkiksi
mkdir Harjoitustyot
perustaa hakemiston nimeltä Harjoitustyot
työhakemistoon.
Nimi siis tulkitaan suhteellisena suhteessa senhetkiseen työhakemistoon.
Hakemiston voi perustaa myös muualle kun työhakemistoon. Esimerkiksi
mkdir Harjoitustyot/C-kurssi
perustaa äsken luodulle Harjoitustyot
-hakemistolle
alihakemiston nimeltä C-kurssi
.
Saman olisi voinut tehdä siten, että ensin siirtyy
Harjoitustyot
-hakemistoon komennolla
cd Harjoitustyot
ja antaa sitten komennon
mkdir C-kurssi
.
mv
Edellä mv
-komennon kuvauksessa jo
kerrottiin, että sillä voi myös siirtää tiedoston hakemistosta toiseen.
Tässä annetaan vain muutama lisäesimerkki.
Jos haluat siirtää tiedoston nimeltä docu
edellisessä luvussa luotuun
Harjoitustyot
-hakemistoon, niin kirjoita
mv docu Harjoitustyot/
Jos taas haluaisitkin muuttaa
docu
-tiedoston nimeksi c-docu
ja samalla siirtää
sen
Harjoitustyot
-hakemiston
C-kurssi
-alihakemistoon, kirjoittaisit
mv docu Harjoitustyot/C-kurssi/c-docu
mv
Myös hakemiston nimeä voi muuttaa mv
-komennolla,
sillä kyseiset komennot voivat olla paitsi tavallisia tiedostonnimiä
myös hakemistonnimiä.
Esimerkiksi jos halutaan muuttaa hakemiston nimi Harjoitustyot
lyhyemmäksi nimeksi Harjtyot
, voidaan - kun työhakemistona
on se hakemisto, jonka alihakemisto uudelleennimettävä hakemisto on -
kirjoittaa vain
mv Harjoitustyot Harjtyot
Tämän jälkeen uudelleennimetyn hakemiston tiedostot ja mahdolliset alihakemistot löytyvät uuden nimen kautta.
Toinen esimerkki:
halutaan siirtää
hakemiston Harjoitustyöt
alihakemisto C-kurssi
suoraan työhakemiston
alihakemistoksi. Tällöin kirjoitetaan
mv Harjoitustyot/C-kurssi C-kurssi
On kuitenkin huomattava, että jos mv
-komennon
ensimmäinen argumentti on hakemistonnimi, niin sen toiminta riippuu
siitä, onko toinen argumentti olemassaolevan hakemiston nimi.
Jos on, niin
mv
a b
siirtää a:n hakemiston b alihakemistoksi (nimellä b). Mutta jos b-nimistä hakemistoa ei ole, niin kyseinen komento vain muuttaa a:n nimen b:ksi säilyttäen sen samalla hakemistotasolla, jolla se ennestään on.
rmdir
Hakemistoja voi myös poistaa, mutta normaalisti vasta kun ne ovat tyhjiä,
ts. niistä on poistettu kaikki tiedostot ja alihakemistot.
Komento on rmdir
(remove directory).
Argumenttina annetaan hakemiston nimi.
Jos sinulla on hakemisto Pascal
ja sen tiedostot samoin kuin itse hakemisto ovat tarpeettomia,
tuhoa ensin tiedostot hakemistosta rm
-komennolla
ja sitten itse hakemisto rmdir
-komennolla:
rm Pascal/* rmdir PascalTämä edellyttää, että hakemisto
Pascal
ei sisällä alihakemistoja, sillä niiden poistaminen ei onnistu
rm
:llä.
Jos siis poistettava hakemisto X
sisältää alihakemistoja, pitää ensin
poistaa X:n
kustakin alihakemistosta kaikki tiedostot (rm
:llä),
sitten nämä hakemistot (rmdir
:llä),
sitten X:n itsensä sisältämät tiedostot (rm
:llä)
ja vasta lopuksi itse X (rmdir
:llä).
On kyllä olemassa rm
-komennon valitsin -r
, joka
mahdollistaa komennon kohdistamisen hakemistoihinkin, vieläpä
rekursiivisesti, jolloin se poistaa myös sen hakemistot alihakemistoineen jne.
ja niiden kaikki hakemistot.
Sellainen komento voi tehdä
paljon tuhoa, jos käyttäjä on vähänkään huolimaton!
Jotkin ohjelmat luovat automaattisesti alihakemistoja, tavallisesti käyttäjän kotihakemistoon. Yleensä niistä ei tarvitse välittää eikä niihin ole syytä koskea.
Kerromme kuitenkin uteliaille aiheesta hiukan esimerkin avulla.
Esimerkkinä on Pine-ohjelma.
Se perustaa käyttäjän kotihakemistoon alihakemiston, jolle se antaa
nimen mail
.
Sinne Pine perustaa tiedostoja, jotka vastaavat Pinen kansioita
(folders) kuten lähetettyjen meilien kansio sent-mail
.
Käyttäjä voi katsella mail
-hakemistonsa sisältöä
tavallisilla komennoilla, esim. ls mail
.
Yleensä siihen ei kuitenkaan ole mitään aihetta, vaan kansioiden
ja niiden sisällön käsittely hoidetaan Pinen sisällä sen omilla
käskyillä.
Toisena esimerkkinä mainittakoon Netscape-ohjelma, joka perustaa
.netscape
-nimisen alihakemiston.
Siellä se ylläpitää mm. tiedostoa bookmarks.html
,
joka sisältää käyttäjän määrittelemät ns. kirjanmerkit - joita
voi aivan hyvin käyttää tietämättä mitään em. alihakemistosta ja
tiedostosta.
Sen listan alussa, jonka esim. komento
ls -l
antaa,
on kunkin tiedoston suojauksista kertova koodi. Seuraavassa on esimerkki:
total 42 -rw-r--r-- 1 jkorpela users 169 Mar 30 11:09 RMAIL -rwxr-xr-x 1 jkorpela users 16384 Mar 30 11:07 a.out drwxr-xr-x 2 jkorpela users 1024 Apr 24 09:08 Yhdistystoiminta -rw-r--r-- 1 jkorpela users 26 Mar 30 10:51 ikiliikkuja.c -rw-r--r-- 1 jkorpela users 71 Mar 30 11:00 notes -rw-r--r-- 1 jkorpela users 31 Mar 30 10:57 notes~Yritä hahmottaa rivin alussa oleva merkintä
--rw-r--r--
1+3+3+3 merkin ryhminä; esim.
RMAIL
-tiedoston osalta merkit pitäisi hahmottaa seuraavasti:
1. 2. 3. 4. ryhmä - rw- r-- r-- 1 jkorpela users 169 Mar 30 11:09 RMAILMainittujen merkkiryhmien merkitykset ovat seuraavat:
jkorpela
on kaikkien tiedostojen omistaja.
users
.
more
-komennolla, sen
voi tulostaa tai ottaa Emacsilla luettavaksi, siitä voi tehdä kopion jne.
Otetaan esimerkiksi RMAIL
-tiedosto:
-rw-r--r-- 1 jkorpela users 169 Mar 30 11:09 RMAILEnsimmäinen merkki on -, joten
RMAIL
on siis
tiedosto eikä hakemisto.
Toinen merkkien ryhmä on rw-
,
joka siis tarkoittaa, että tunnuksella jkorpela
on luku- ja kirjoitusoikeus, mutta hän ei voi ajaa tiedostoa ohjelmana.
Kolmas merkkiryhmä on r--
,
joka tarkoittaa sitä, että users
-ryhmällä on lukuoikeus,
mutta ei kirjoitus- tai ohjelman ajo-oikeutta.
Neljäs ryhmä on r--
, joka tarkoittaa, että muillakaan käyttäjillä ei ole muita oikeuksia kuin lukuoikeus.
Usein ryhmäjärjestelyjä ei käytetä, vaan kaikki käyttäjät kuuluvat samaan ryhmään. Silloin suojaus ryhmän suhteen on ratkaiseva, ja suojaus "kaikkien muiden" suhteen on syytä asettaa samaksi kuin ryhmän suhteen.
Hakemistolla on muodollisesti samanlaiset suojaustiedot kuin tavallisella tiedostollakin, mutta niiden merkitykset ovat toisenlaiset: hakemiston suojauksissa
ls
-komennolla) hakemiston sisällöstä ja
että muutoin hakemiston sisältämät tiedostonnimet
(ja alihakemistojen nimet) ovat "nähtävissä", mikä
vaikuttaa mm. tunnistuksen käyttöön tiedostonnimissä
mv
-komennolla)
sekä poistaa tiedostoja
ls -l
näyttää;
usein x-oikeutta hakemistoon kutsutaan hakuoikeudeksi (search permission),
mikä on siis melko harhaanjohtavaa.
ls
-komentoa eikä tunnistusta.
Suojaukset voi esittää paitsi kirjaimilla myös numerokoodeilla seuraavasti:
751
tarkoittaa samaa
kuin rwxr-x--x
.
Hakemistojen ja tiedostojen oletusarvoiset suojaukset ovat erilaisia eri Unix-koneissa. Varsin tavallista on, että käyttäjillä on oletusarvoisesti lukuoikeudet toistensa hakemistoihin ja tiedostoihin, ja heidän siis täytyy itse suojata tiedostonsa, jos eivät halua niiden sisällön näkyvän muille.
Esimerkiksi jos oletussuojaus on sellainen, että käyttäjillä ei ole mitään oikeuksia toistensa kotihakemistoihin, mutta toisaalta tiedostojen oletussuojaus on sellainen, että muilla käyttäjillä on niihin luku- ja suoritusoikeus, niin muilla ei ole mitään oikeuksia tiedostoihisi, koska kotihakemistosi suojaus estää sen. Mutta toisaalta jos tällöin haluat antaa muille lukuoikeudet (tai suoritusoikeudet) joihinkin tiedostoihisi, sinun pitää antaa muille x-oikeus kotihakemistoosi ja muuttaa kaikkien muiden tiedostojesi suojaukset, jotta ne eivät myös tulisi kaikkien nähtäville.
Tilanne on selvin silloin, kun käyttäjillä ei oletusarvoisesti ole mitään oikeuksia muiden käyttäjien tiedostoihin. Tällöin riittää, että käyttäjä vain lisää muille oikeuksia siinä määrin kuin haluaa.
chmod
Tiedoston suojaus muutetaan chmod
-komennolla.
Nimi tulee sanoista change mode; suojauksia
kutsutaan Unixissa yleisesti tiedoston moodiksi (mode).
Esimerkki chmod
-komennosta:
chmod go+r foobarTämän komennon argumentit voidaan lukea seuraavasti: samaan ryhmään kuuluville (
g
, group)
ja kaikille muille (o
, others)
lisätään (+
)
lukuoikeus (r
, read) tiedostoon foobar
.
Yleisesti chmod-komennossa ilmoitetaan tässä järjestyksessä
u
tarkoittaa omistajaa itseään (user)
g
tarkoittaa ryhmään kuuluvia (group)
o
tarkoittaa kaikkia muita (others)
a
tarkoittaa aivan kaikkia (all), siis sama kuin ugo
+
tai -
,
halutaanko lisätä vai poistaa oikeuksia
r
, w
,
x
), mitä oikeuksia muutos koskee
chmod
-komennolle siis kerrotaan vain, mikä muuttuu.
Muilta osin suojautukset pysyvät ennallaan.
Jos chmod
-komennolla yritetään lisätä (+) oikeus,
joka jo on olemassa, tai poistaa (-) oikeus, jota ei ole, mitään virheilmoitusta ei tule eikä mikään muutu tältä osin.
Korostettakoon, että chmod
-komennolla voi muuttaa vain
olemassaolevien tiedostojen suojauksia. Mikään chmod
-komento
ei vaikuta niiden tiedostojen suojauksiin, jotka luot komennon antamisen
jälkeen, vaan niiden suojaukset määräytyvät oletusarvojen mukaan.
On kyllä mahdollistaa muuttaa näitä oletusarvoja, joskin välineen
eli umask
-komennon oppimisessa on käsitteellisiä vaikeuksia.
Kyseisessä komennossa
(joka on shellin komento)
ilmaistaan suojaukset
numerokoodilla ja käänteisesti:
esim. umask 022
aiheuttaa sen, että vastedes syntyviin tiedostoihin
ryhmällä ja muilla ei ole koodia 2 vastaavaa oikeutta
eli kirjoitusoikeutta.
Komennon vaikutus on istuntokohtainen, joten jos se todella
halutaan pysyväksi, se on kirjoitettava sopivaan alustustiedostoon.
Käyttäjä voi myös ottaa itseltään pois kirjoitusoikeudet johonkin tiedostoon, esim.
chmod a-w
tiedosto poistaa kaikilta, myös itseltä,
kirjoitusoikeuden.
Jotkut käyttävät tätä turvatoimena estääkseen itseään vahingossa hävittämästä tai muuttamasta jotakin tärkeää tiedostoa.
Jos käyttäjä yrittää esim. hävittää näin suojatun tiedostonsa, tulee kysymys
override protection 544 for foo?
ja käyttäjä voi vastata y
tai n
sen mukaan, haluaako todella hävittää sen.
(Tiedoston suojaus näkyy siis edellä esitetyllä
tavalla numerokoodina.)
Jos tiedostolle yrittää tehdä jotain muuta, niin toiminto epäonnistuu
ja tulee virheilmoitus Permission denied
.
Käyttäjä voi tiedoston omistajana muuttaa näin suojatun tiedoston
suojauksia ja sitten tehdä sille mitä haluaa.
Seuraavassa on pieni esimerkki.
Käyttäjällä on tiedosto, jolla on sellainen suojaus, että
kaikilla, myös käyttäjällä itsellään, on siihen vain lukuoikeus.
Kun käyttäjä yrittää hävittää tiedoston, järjestelmä kysyy,
halutaanko ohittaa (override) sen suojaus; kun tähän vastataan y
,
toiminto onnistuu.
(Tässä ei tarkkaan ottaen ole kyse suojauksen suoranaisesta vaikutuksesta,
koska periaatteessa hävitysoikeus riippuu sen hakemiston suojauksesta,
jossa tiedosto on. Mutta käytännössä rm
-komento tarkistaa
lisäksi tiedoston suojauksen ja kysyy käyttäjältä varmistuksen.)
epsilon koe 51 % ls -l huuhaa -r--r--r-- 1 jkorpela staff 0 Feb 20 11:28 huuhaa epsilon koe 52 % rm huuhaa rm: override protection 444 for huuhaa? y epsilon koe 53 % ls -l huuhaa huuhaa not found epsilon koe 54 %
Tiedostot sijaitsevat käytännössä levyllä (disk). Samaan tietokoneeseen voidaan liittää useita levy-yksiköitä ja niillä olevia tiedostojärjestelmiä. Toisaalta asiat voidaan järjestää niin, että useat koneet käyttävät samoja levyjä. Yhä yleisemmin menetellään niin, että käytössä on erityisiä levy- eli tiedostopalvelimia (file server), jotka ovat erikoistarkoitukseen varattuja tietokoneita: tiedostopalvelin hallitsee suurta määrää levytilaa ja tarjoaa levypalveluita eri tietokoneille. Normaalisti käyttäjä ei juuri huomaa sitä, että hänen tiedostonsa ovat levypalvelimen hallitsemilla levyillä - paitsi jos palvelin tai tietoliikenneyhteys siihen ei toimi.
Vaikka nykyisissä tietokoneissa on käytettävissä suuri määrä levytilaa ja levy on suhteellisen halpaa, kyseessä on kuitenkin rajallinen resurssi. Koska suuri määrä käyttäjiä käyttää samoja levyjä, saattaa käydä niin, että yksi käyttäjä vahingossa (tai ilkivaltaisuuttaan) täyttää levytilan estäen siten muita tekemästä koneella juuri mitään. Tällaisten syiden takia monissa järjestelmissä on käytössä levytilan kiintiö (quota). Olipa kiintiöinti käytössä tai ei, käyttäjän on syytä silloin tällöin tarkistaa levytilan käyttönsä. Jotkin ohjelmat saattavat käyttäjän tietämättä luoda varsin isojakin tiedostoja, jotka ehkä jäävät tarpeettomasti kuluttamaan tilaa.
Komento df
(disk free) tulostaa tietoja
koko järjestelmän levytilan käytöstä.
Koska koneissa on usein monia levyjä,
komennolla voi saada pitkän listan,
josta aloittelija ei välttämättä ymmärrä mitään.
Tässä esimerkki df
-komennon tulostuksesta
eräässä koneessa:
vipunen ~ % df Filesystem Total KB free %used iused %iused Mounted on /dev/hd4 28672 7676 73% 1272 17% / /dev/hd2 323584 54840 83% 17233 21% /usr /dev/hd9var 20480 6544 68% 538 10% /var /dev/hd3 20480 12640 38% 472 7% /tmp /dev/lv03 131072 1544 98% 5077 15% /var2 /dev/lv01 2007040 19928 99% 183684 36% /u /dev/lv02 950272 16948 98% 43544 18% /u1 /dev/lv00 1015808 89132 91% 59858 23% /m/vipunen/u2 /dev/fslv00 507904 35068 93% 3654 2% /m/vipunen/scratch leka.hut.fi:/u/. 1982464 53844 97% - - /m/leka/u leka.hut.fi:/u1/. 851968 57660 93% - - /m/leka/u1 leka.hut.fi:/u2/. 1982464 259092 86% - - /m/leka/u2 leka.hut.fi:/usr/lpp/info/. 503808 72456 85% - - /m/leka/usr/lpp/infoUseimmiten eniten käyttöä on komennolle
df .
,
joka kertoo levytilan käyttöasteesta juuri sillä levyllä,
jossa työhakemistosi on.
Esimerkki komennon df .
tulostuksesta:
vipunen ~ % df . Filesystem Total KB free %used iused %iused Mounted on /dev/lv01 2007040 20276 98% 183685 36% /uTästä selviää, että levyn nimi on
lv01
ja sille on sijoitettu /u
-niminen hakemisto.
Toisin sanoen kaikki /u
-hakemiston alihakemistot
(joihin kyseisen käyttäjän työhakemistokin kuuluu)
ovat tällä fyysisellä levyllä.
Levyn koko on
tässä tapauksessa
2007040 kilotavua
eli n. 2000 megatavua, josta on vapaana 20276 kilotavua eli
noin 20 megatavua.
Levystä on käytössä 98 %.
Tällöin on aika lähellä se tilanne, jossa levy on aivan täynnä,
jolloin kukaan käyttäjä ei voi perustaa uusia tiedostoja
(eikä vanhojen tiedostojen uusia versioita) - siitä riippumatta,
onko heidän oma levytilankäyttönsä heidän henkilökohtaisen
kiintiönsä rajoissa.
Ja tällöin olisi kaikkien käyttäjien syytä tarkistaa, onko heillä
tarpeettomia isoja tiedostoja, joiden poistaminen parantaisi tilannetta.
Komennolla du
(disk usage)
taas voit seurata omaa levytilan käyttöäsi tai yleisemmin
hakemistojen viemää tilaa.
Komennolle annetaan argumenttina hakemiston nimi, ja komento tulostaa
koko hakemiston (alihakemistot mukaan luettuina) levytilan käytön.
Argumentin oletusarvona on työhakemisto.
Jos siis työhakemistonasi on kotihakemisto, niin antamalla
pelkän komennon du
saat selville, paljonko tiedostosi
kaikkineen vievät tilaa.
Levytilan mittayksiköt voivat olla erilaiset eri koneissa.
Usein, mutta ei välttämättä, yksikkönä on edellä mainittu kilotavu.
Joissakin koneissa
du
ilmoittaa levyn käytön
varausblokkeina, jotka ovat puolen kilotavun (512 tavun) kokoisia.
Kyseisissä koneissa saa du
-komennon tulostamaan
koon kilotavuina antamalla valitsimen -k
(esim. du -k
).
Usein kiintiöinti on sellainen, että kunkin käyttäjän levynkäytöllä on "pehmeä" ja "kova" kiintiö. Jos levytilankäyttösi ylittää "pehmeän" kiintiön, niin saat aina istunnon alussa ilmoituksen siitä, montako päivää sinulla on aikaa poistaa ylimenevä osa. Jos et poista ylimäärää, tietokonelupasi poistuu käytöstä ilmoitetun ajan umpeutuessa. Pehmeän rajan siis voi ylittää väliaikaisesti (muutamia päiviä). On olemassa myös "pehmeää" kiintiötä korkeampi "kova" kiintiö, jota ei voi hetkellisestikään ylittää: kun "kova" kiintiö on täynnä, kaikki tiedostojen perustamis- tai päivittämisyritykset epäonnistuvat, kunnes käyttäjä on poistanut tiedostoja tarpeellisessa määrin. - Perustellusta syystä käyttäjä voi ehkä saada lisäkiintiötä.
Kiintiöiden rajoissa pysymistä on helppo seurata: komennolla
quota
näet, oletko ylittänyt kiintiön.
Tarkemmin sanoen
quota
ei tulosta mitään, jos olet "pehmeän" kiintiön
alapuolella. Muussa tapauksessa se kertoo tilanteen:
käytössäsi olevan levytilan määrän (sarakkeessa usage
)
"pehmeän" kiintiön (sarakkeessa quota
) ja
"kovan" kiintiön (sarakkeessa limit
.
Voit myös seurata levynkäyttöäsi
siten, että annat quota
-komennossa valitsimen -v
,
siis quota -v
.
Tällöin komento aina tulostaa tiedot tilanteesta, vaikka olisit
"pehmeän" kiintiön rajoissa.
Tulostus voisi olla seuraavanlainen:
Filesystem usage quota limit timeleft files quota limit timeleft /m/fs/user0 3998 8192 15360 194 5000 10000Tässä tapauksessa tilaa on melko paljon käytössä, mutta ollaan vielä selvästi pehmeän kiintiön alapuolella. Lopussa oleva sarake
files
ja sitä seuraavat sarakkeet liittyvät
tiedostojen määrään, joka myös on kiintiöity, mutta näillä kiintiöillä
on merkitystä erittäin harvoin.
Jos tiedät tai epäilet, että tietynniminen tiedosto on koneessa olemassa
jossakin, voit etsiä sitä locate
- tai
find
-komennolla. Näistä find
on yleensä
kaikista Unixeista löytyvä, locate
taas
Gnu-ohjelmistoa eikä siis välttämättä kaikkialle asennettu mutta
huomattavasti nopeampi.
locate
-komennosta on lyhyt ja ytimekäs man-sivu.
Yksinkertaisimmillaan sitä käytetään yksinkertaisesti seuraavaan
tapaan:
locate f90
etsii koko tiedostojärjestelmästä
tiedostonnimiä, joissa esiintyy merkkijono f90
, ja tulostaa ne.
Tulostus on usein hyvin laaja. Etsintä perustuu siihen, että
järjestelmä aika ajoin luo tietokannan, johon se kokoaa
tiedostojen nimet. Tämän takia
haku on varsin nopea.
find
-komento on siis hitaampi, ja sen käyttö tulee
kyseeseen toisaalta niissä koneissa, joissa ei ole locate
-komentoa,
toisaalta etsittäessä tiedostoja joistakin nimenomaisista hakemistoista.
Käyttöesimerkki:
find . -name 'posts*' -print
etsii työhakemistosta ja sen alihakemistoista (ja niiden alihakemistoista
jne.) ne tiedostot, joiden varsinainen nimi alkaa merkkijonolla
posts
, ja tulostaa niiden täydelliset nimet kuvaruudulle.
Käyttö on siis hiukan mutkikkaampaa kuin locate
-komennon
käyttö.
Tämän oppaan varhainen edeltäjä oli TKK:n atk-keskuksen Unix-alkeisopas, jota kehittelemässä oli varsin monia ihmisiä, joista on syytä erikseen mainita Päivi Hyvärinen ja Sanna Suominen. Sitä laajentamalla minä (Jukka Korpela), pyrkien noudattamaan oman oppaani Kirjoita asiaa oppeja, kehittelin Unix-oppaan.
Kun TKK oli irtisanonut työsuhteeni tammikuussa 2001 ja saman tien estänyt minulta TKK:n tietokoneiden käytön, jouduin miettimään, mitä tehdä erilaisille Web-sivuilleni. Minusta riippumattomista syistä Unix-opasta ei ollut pitkähköön aikaa julkaistu painettuna vihkosena, ja osittain tämän takia sen Web-version kunnossapito oli jäänyt vähälle. Toisaalta oppaan sisältö on pääosin sellainen, että sen ei pitäisi kovin aktiivista ylläpitoa tarvitakaan. Päätin sitten (toukokuussa 2001) muokata oppaasta suunnilleen minimimuutoksin yleisen Unix-oppaan, jossa ei ole enää TKK:hon erityisesti liittyviä seikkoja ja josta on poistettu tai korjattu selvästi vanhentuneet kohdat (esimerkiksi muinaisen Mosaic-selaimen lyhyt kuvaus!), ja panna sen uuteen Web-sivustooni.
Osassa esimerkeistä esiintyy edelleen TKK:n tietokoneiden käyttöä. Näitä en ole pitänyt tarpeellisena muuttaa vain muuttamisen vuoksi, koska kyse on kuitenkin vain esimerkeistä.
Käsitykseni mukaan tekijänoikeus oppaaseen on minulla. TKK:lla olisi käyttöoikeus niihin versioihin, jotka olen laatinut työsuhteessa ollessani. (Ks. tarkemmin tekijänoikeusfakkiani, erityisesti kohtaa Kenellä on oikeus työ- tai virkasuhteessa tehtyyn teokseen?) Kuten edellä mainitsin, monet ihmiset ovat eri tavoin vaikuttaneet oppaan muotoutumiseen, mutta tekijänoikeus on sillä, joka on luonut teoksen johonkin kirjalliseen asuun.
Eräiden termien valinnoista ks. dokumenttia Perusteluja termeille netti, nyysit yms.
Atk-alan oppaissa ja opetuksessa yksi ikuisuuskysymys on, esitetäänkö ensin käyttöjärjestelmään liittyviä asioita vai sovelluksia. Yleisten asioiden järjestelmällinen esittäminen muodostaa hyvän pohjan sovellusten käytön opettelulle mutta voi aiheuttaa vaikeitakin motivaatio-ongelmia. Tässä oppaassa on pääosin noudatettu Unix-alkeisoppaassa omaksuttua linjaa: aluksi kerrotaan yhteydenotosta Unix-tietokoneeseen ja sitten mennään sovelluksiin, ja niiden jälkeen kerrotaan "itse Unixista" kuten tiedostojärjestelmästä. Näitä kaikkia ennen on kuitenkin lisätty lyhyt johdanto Unixiin jonkinlaiseksi orientaatioperustaksi. Tämä jäsennys on tehty ajatellen erityisesti sellaisia käyttäjiä, joilla on vain vähän tai ei ollenkaan aiempaa tietoa ja kokemusta Unixista.
Webissä on mm. seuraavat varsin laajat Unixia käsittelevät tietopaketit:
Suomenkielisestä peruskäyttäjille tarkoitetusta Unix-aineistosta Webissä mainittakoon seuraavat:
Lähinnä Fortran- tai C-kielisten ohjelmien kääntämistä ja ajamista sekä yksinkertaisten komentotiedostojen tekemistä Unix-koneissa käsittelee edellä mainittu opas Ohjelmointi Unixissa.
Kokeneemmalle käyttäjälle on tarjolla mm.
Linuxia, joka eräs suosittu Unix PC-mikroille, kuvaa Linux-kotisivu.
Unixista on kirjoitettu varsin paljon kirjoja. Niiden joukosta tuskin voidaan poimia parasta, koska eri lukijat tarvitsevat hyvin erilaisia tietoja. Kannattaa ottaa huomioon, että maailman kaikki Unixit eivät suinkaan ole samanlaisia ja että kirjoissa ei välttämättä tuoda esiin, että sen tiedot eivät päde niihin kaikkiin.
Salasana kannattaa rakentaa sellaiseksi, että se on itselle helppo muistaa mutta kenenkään muun mahdoton arvata. Salasanassa pitää olla tarpeeksi merkkejä, vähintään kuusi. Salasanasta vain kahdeksan ensimmäistä merkkiä ovat merkitseviä, mutta se ei toki estä muodostamasta pitempiä, jos ne ovat sinulle helpompia muistaa. Salasanassa on syytä olla muitakin merkkejä kuin kirjaimia. On syytä muistaa, että isot ja pienet kirjaimet ovat Unixissa eri merkkejä myös salasanoissa.
Seuraavassa on muutamia esimerkkejä hyvistä tavoista muodostaa salasanoja:
Tietenkään ei pidä käyttää edellä mainittuja konkreettisia merkkijonoja salasanoina!
Erityisesti salasana ei saa olla esim.
Monissa järjestelmissä salasanan asettaminen on tehty sellaiseksi, että salasanan pitää täyttää jotkin laatuvaatimukset, joilla pyritään estämään liian helposti arvattavien salasanojen käyttö.
Päätteen käytössä esiintyy lukemattomia erilaisia ongelmia, joista suuri osa riippuu siitä, millainen pääte on käytössä. Seuraava ohjeisto on erittäin kaukana kattavasta, mutta niistä voi olla hyötyä joissakin tapauksissa. Osa vinkeistä on kyllä vanhoja, ehkä vain historiallisia näppäimistöjä koskevia.
DEL-näppäin, jolla poistetaan viimeksi kirjoitettu merkki,
on eri näppäimistöissä erilainen.
Siinä voi olla teksti DEL
tai
teksti DELETE
tai vain
vasemmalle osoittava nuoli.
(Tätä ei pidä sekoita nuolinäppäimiin, jotka ovat
yhdessä neljän nuolinäppäimen ryhmässä.)
DEL-näppäimen asemesta voi komentoja kirjoitettaessa käyttää kontrollimerkkiä control-h.
Merkin ~ (tilde, arkikielessä usein "mato") tuottaminen näppäimistöltä voi tuottaa vaikeuksia. Joissakin näppäimistöissä se lähtee näppäimestä, jonka näppäinhatussa on saksalainen ü. Tällöin merkki ~ saattaa myös päätteen ruudulla näyttää sellaiselta, mutta Unix silti tulkitsee sen oikein, tildeksi.
Tavallisessa ns. PC-näppäimistössä tilde lähtee Alt-näppäimen avulla näppäimeistä, jonka hatussa on symbolit ¨~^ ja joka on ns. kuollut näppäin (dead key): sen painamisesta ei vielä seuraa mitään - ei tule mitään merkkiä näkyviin eikä mitään merkkiä tule näkyviin. Tällöin auttaa se, että tilden kirjoittamisen jälkeen painetaan välilyöntinäppäintä. Mainitunlaisessa näppäimistössä on muitakin erikoisuuksia; ks. ohjetta Erikoismerkkien kirjoittaminen suomalaisella PC-näppäimistöllä.
Jos mistään näppäinhatusta ei löydy ät-merkkiä (@) tai se ei suostu tulemaan siitä näppäimestä, missä se lukee, kannattaa kokeilla seuraavaa:
Näpäytetään function- tai compose character -näppäintä kerran. (Huomaa, että kyseessä on näpäytettävä näppäin, ei alhaalla pidettävä näppäin kuten shift- tai control-näppäin!) Tämä näppäin löytyy - jos päätteessä sellainen on - päätteistä yleensä välilyöntinäppäimen vasemmalta puolelta. Tämän jälkeen (ei siis samanaikaisesti) näpäytetään a-näppäintä kahdesti. @-merkin pitäisi ilmestyä näytölle.
Jos käytät Macintosh-mikroa päätteenä, @-merkin pitäisi löytyä alt-näppäimen avulla siitä näppäimestä, josta saadaan ' ja * (return-näppäimen yläpuolelta).
Monilla X-päätteillä @-merkki saadaan shift-näppäimen avulla siitä näppäimestä, jossa näkyy pykälänmerkki §. Tektronixin X-päätteistä @-merkki saadaan Alt Gr -näppäimen avulla siitä näppäimestä, jonka näppäinhatussa on @-merkki.
Jos näppäimistölle ei ole merkitty #-merkkiä (ristikkomerkki, arkikielessä usein "risuaita") tai se ei suostu tulemaan siitä näppäimestä, missä se lukee, kannattaa kokeilla seuraavaa:
Näpäytetään function- tai compose character -näppäintä kerran. Tämä näppäin löytyy päätteistä yleensä välilyöntinäppäimen vasemmalta puolelta. Tämän jälkeen (ei samanaikaisesti) painetaan +-näppäintä kahdesti. #-merkin pitäisi ilmestyä näytölle.
Nuolinäppäimillä tarkoitetaan neljää toisiaan lähekkäin olevaa näppäintä, joissa on nuolet ylös, alas, vasemmalle ja oikealle. Yleensä ne ovat tavallisten kirjainnäppäinten oikealla puolella.
Jos näppäimistöstä ei löydy nuolinäppäimiä tai jos ne jostain syystä eivät toimi, niin useissa yhteyksissä (esim. Emacsissa ja komentojen editoinnissa) voi käyttää vaihtoehtoista tapaa eli kontrollimerkkejä:
Jos pääte jostakin syystä jumiutuu eikä tunnu enää vastaavan näppäimistöltä annettuihin komentoihin, on olemassa hyvin monia mahdollisia syitä, ja ongelman ratkaisu tietysti riippuu syystä. Joskus syy on niinkin yksinkertainen kuin se, että päätteestä lähtevän johdon liitin on irronnut tai löystynyt.
Jumiutumistilanteessa voi kokeilla control-q:ta, joka
on päätteen merkkivirran vapauttava kontrollimerkki.
Jos tämä auttaa ongelmaan, pääte oli aiemmin
reagoinut control-s:ään, joka yleensä tarkoittaa, että päätteen pitää pysäyttää ruudulle tulostaminen.
(Tätä kutsutaan nimellä XON/XOFF flow control.)
Jos control-q auttoi, niin jatkossa
Emacs-editorin käyttö käy hankalaksi mm. siksi, että Emacsin
normaali
talletuskomento on control-x control-s.
Täkköin ongelman voi kiertää käyttämällä Emacsin vaihtoehtoista talletuskomentoa control-x s. Tällöin tosin Emacs aina kysyy erikseen, halutaanko tosiaan tallettaa ja kysymykseen pitää vastata
y
(yes), mutta se on pieni haitta päätteen täydelliseen jumiutumiseen verrattuna.
Jumiutumisen syynä voi olla myös se, että jonkin komennon tai ohjelman
suoritus kestää erittäin kauan - kenties ohjelma jopa on ikuisessa
silmukassa.
Tällöin voi yrittää katkaista toiminnan
control-c:llä.
Jos sekään ei auta, voit vielä yrittää "tappaa" sen
kill
-komennolla.
Jos päätteen ruutu menee sekaisin ja merkkejä tulostuu toinen toistensa päälle tai näyttö on muuten omituisen näköinen, näytön voi siivota (clear screen) control-l:llä. Tämä toimii yhtä hyvin komentotasolla kuin esim. Emacsin tai Pinen sisälläkin. Se pyyhkii ensin näytön puhtaaksi ja piirtää sitten näytön uudelleen eli näyttää sen, mikä oli näytön todellinen, häiriötön sisältö ennen ko. komentoa.