Selviytymisopas: Komentorivin käyttö

Tämän ohjeen tarkoitus on selvittää, mikä on komentorivi ja tekstipohjainen tietokoneen käyttö. Alkupuoli syksyn 2007 Ohjelmointi 1:stä tehdään täysin komentorivipohjaisesti, ja demonpalautus tehdään komentorivillä alusta loppuun saakka.

Contents

Yleistä: mitä on tekstimuotoisuus

Ensinnäkin kyseessä on tekstimuotoinen ohjelmien ja käyttöjärjestelmän käyttö. Lähes synonyymejä ovat komentorivipohjainen, tekstimuotoinen tai konsolista (tai terminaalista) käsin tapahtuva tietokoneen käyttö. Perusidea on varsin yksinkertainen:

  • annat tietokoneelle syötteen näppäimistöä käyttäen
  • tietokone toimii, ja tulostaa vasteen (==tuloste, output)
  • annat uuden syötteen jne.

Näin tietokonetta on voitu käyttää jopa ilman näyttöpäätettä: Syötteet on kirjoitettu "kirjoituskoneella" ja tekstimuotoinen tuloste on tullut luettavaksi paperiprintterille. Tänä päivänä tulosteet tulevat ns. konsoli-ikkunaan eli konsoliin eivätkä printterilaitteelle, mutta edelleen tekstimuotoinen koneen käyttö on moneen tarkoitukseen paras ja tehokkain tapa. Näppäimistönkään käyttö ei ole ihmiselle nopein tapa kommunikoida (puhe ehkä voisi olla), mutta harjaantumisen kautta siitä tulee monin paikoin nopeampaa kuin hiirellä klikkaileminen.

Ohjelmointimielessä tekstipohjaisten ohjelmien toiminta on paljon yksinkertaisempaa ymmärtää täydellisesti kuin graafisten. Niinpä ohjelmointi kannattaa aloittaa pelkästään tekstipohjaisesti, etenkin yliopistossa, jossa ymmärtäminen on vähintään tasavertaisen tärkeätä pelkkään tekemiseen nähden.

Windows perustuu vahvasti graafisiin käyttöliittymiin, joten ns. "peruskäyttäjän" ei useinkaan tarvitse käyttää komentoriviohjelmia. Myös nykyiset Unix-tyyppiset käyttöjärjestelmät näkyvät peruskäyttäjälle hyvin graafisesti. Ohjelmointi ei kuitenkaan ole enää ihan peruskäyttöä, joten työkalustoa ja osaamista on ajateltava eri näkökulmasta. Usein ohjelmoinnissa on toki syytä käyttää graafisia apuvälineitä, kuten tällä kurssilla myöhemmin nähtävä Eclipse. Nämä kuitenkin pohjimmiltaan käyttävät tekstipohjaista kalustoa piilottaen niiden toiminnallisuuden pois silmistä ja mielestä. Se taas on asioiden ymmärtämisen kannaltaa vaaratekijä! Haemme jatkuvaa ymmärtämystä, joten aloitamme tekstityökaluilla, joissa kaikki on näkyvillä ja paljonkaan ei jää konepellin alle piiloon.

Windowsissa konsoliohjelmia käytetään Command Prompt -nimisen ohjelman avulla, joka tulee aina Windowsin mukana (command prompt on suomeksi "komentokehote" eli kaiketi "ohjelma, joka aina kehottaa antamaan seuraavan komennon" tjsp). Unixeissa käytetään ns. terminaaliohjelmia, jotka toimivat vastaavalla tavoin. (Englantilainen kantasana on terminal eli pääte. "Pääte" on myös yksi mahdollisuus sanoa "terminaali" suomeksi; toinen nimi vastaavalle on konsoli, engl. console. Uskoisin, että sanat juontavat juurensa aikoihin, jolloin monen käyttäjän tietokonetta käytettiin usean ns. päätteen kautta.) Komennot tulkitsee Unix-maailmassa kuitenkin ns. shell eli "käyttöjärjestelmän kuori" eli käyttäjälle näkyvä rajapinta koneen käyttöön. Voisi sanoa, että "päätteen kautta käytetään shelliä, jonka avulla käytetään tietokoneen ohjelmistoja". Shellejä on erilaisia, mutta enimmäkseen ne toimivat keskenään hyvin samankaltaisesti. Tässä selviytymisoppaassa kerrotaan erikseen sekä Windowsin Command Promptin käytöstä että Unixin shellin käytöstä. Molempia tullaan käyttämään Ohjelmointi 1:llä.

Aluksi tekstimuotoisuuden hahmottamiseen menee luultavasti aikaa ja energiaa. Tämä kuitenkin toivottavasti palkitsee myöhemmin, koska pääsemme käsittelemään itse ohjelmointia yksinkertaisesti ja ruohonjuuritasolta aloittaen.

Yleistä: mikä on komentorivi

Komentorivi tai lyhyemmin komento tarkoittaa komentokehotteelle (tai Unix-maailmassa pääteyhteyden kautta shellille) annettavaa komentoa, jonka tarkoitus on jompi kumpi seuraavista:

  • tehdä joku tietokoneen käyttöön liittyvä perustoiminto (kuten tiedoston kopiointi, hakemiston luonti, hakemistolistauksen näyttäminen tmv.)
  • suorittaa konsoliohjelma (eli tekstimuotoinen ohjelma).

Olipa tarkoitus kumpi tahansa, niin käyttäjän näkökulmasta tapahtuu komennon kirjoittaminen. Komento on muotoa:

komennon_nimi ARGUMENTTILISTA

Komento "lähtee", kun komentorivi on kirjoitettu valmiiksi, ja painetaan enteriä. Komennon nimi on useimmiten sen ohjelman nimi, joka halutaan suorittaa. Esimerkkejä: java-kääntäjä javac, javan virtuaalikone java, javan dokumentaatiotyöväline javadoc, javan paketointityökalu jar, IRC-keskusteluohjelma irssi, SSH-yhteysohjelma ssh, kuvankäsittelyohjelma convert, MP3-dekooderi lame, sähköpostiohjelma pine, tekstieditori emacs ... siis mikä tahansa ohjelma, joka on asennettu komennettavalle tietokoneelle ja jonka nimi tunnetaan.

Argumenttilista puolestaan sisältää ohjausvalitsimia ja tiedostonimiä tai muita merkkijonoja, joiden perusteella ohjelma voi toimia erilaisin tavoin. Esimerkiksi Java-ohjelman kääntäminen voisi tapahtua seuraavalla komennolla:

javac MunOhjelma.java MunApukirjasto.java VielaLuokkaKunTarviin.java

Tämä komento tarkoittaa ohjelman javac käynnistämistä sillä tavoin, että ohjelma saa käyttöönsä kolme ns. argumenttia eli kertakaikkiaan vain merkkijonot:

"MunOhjelma.java"
"MunApukirjasto.java"
"VielaLuokkaKunTarviin.java"

Oletus Java-kääntäjän kohdalla on, että kääntäjä tekee suorituskelpoiset ohjelmayksiköt kolmesta lähdekooditiedostosta, joiden nimet ovat nuo kolme argumenttia.

Toisena esimerkkinä ihan erilainen komento:

convert -quality 60 -resize 640x kurssilogo.png kurssilogo.jpg

Tämä komentorivi tarkoittaa ohjelman convert käynnistämistä sillä tavoin, että ohjelma saa käyttöönsä kuusi argumenttia:

"-quality"
"60"
"-resize"
"640x"
"kurssilogo.png"
"kurssilogo.jpg"

Tämän mm. Jalavaan asennetun ohjelmiston dokumentaatio (jos muistan oikein) lupaa, että yllämainitulla komentorivillä käynnistettynä convert muuntaa kuvatiedoston kurssilogo.png JPG-muotoiseksi siten, että pakkauksen laatu on 60% ja kuva skaalataan pienemmäksi tai suuremmaksi siten, että leveys on 640 kuvapistettä.

Ohjelman tulee tulkita argumenttinsa, ja sen käyttöohjeesta tulee ilmetä, miten argumentteja käytetään.

Päätä sekoittaakseni kerron, että termin "argumentti" synonyyminä sanotaan joskus komentoriviparametri tai muuta vastaavaa.

Eri käyttöjärjestelmien ohjelmilla on erilaisia perinteitä siinä, miten argumentit tulee muotoilla. Usein kuitenkin on ainakin seuraavanlaisia käytäntöjä:

  • Jokainen välilyönti erottaa vierekkäiset argumentit toisistaan.

  • Jos halutaan sisällyttää yksittäiseen argumenttiin välilyönti, se pitää esittää eri tavoin, esim. laittamalla kyseisen argumentin ympärille lainausmerkit.

  • Argumenttien järjestyksellä on väliä!

    (Esim. edellä convert olettaa että argumentin "-quality" jälkeen välittömästi seuraavana tulee kokonaisluku väliltä 1-100.)

Tässä selviytymisoppaassa esitellään Command Prompt ja Unix-shell sekä olennaisimmat erot komentoriveissä.

Yleistä: mikä on työhakemisto

Oletetaan tunnetuksi, tai sitten nyt opitaan ensimmäistä kertaa, että tietokoneessa kaikki pitkäaikaisesti tallennetut tiedot sijaitsevat tiedostojärjestelmässä, eli karkeasti suomennettuna "sellaisessa sydeemijutskassa, jonka tarkoitus on arkistoida tietoja hallitusti ja helppokäyttöisesti erilaisille laitteille kuten kovalevyille, USB-tikuille, disketeille, DVD:lle jne.". Erityisesti on olemassa joku hakemistorakenne, eli hierarkkinen malli, jossa kukin tiedosto sijaitsee hakemistossa muiden, mieluiten samaan aiheeseen liittyvien, tiedostojen kanssa.

Hakemisto puolestaan sijaitsee useimmiten jossain toisessa ns. ylemmän tason hakemistossa tai sitten "juurihakemistossa", jonka yläpuolella hierarkiassa ei ole enää mitään. Hakemistossa voi olla sisällä monta muuta hakemistoa. Niinpä juurihakemistosta alkaen syntyy puu, jolla on juuri, haaroja (hakemistot) sekä lehtiä (tiedostot ja toistaiseksi tyhjät hakemistot)... Joskus sanotaan alihakemisto kun puhutaan jostakin, joka on alempana hierarkiassa kuin joku muu samassa yhteydessä mainittu hakemisto. Hakemistoa sanotaan joskus kansioksi.

Kun annetaan komentoja joko Command Promptissa tai Unixin shellissä, on huomattava, että jokaista komentoa annettaessa yksi hakemisto on niin sanottu työhakemisto. Voisi sanoa, että komentoja antaessasi "sijaitset aina yhdessä hakemistossa" ja karkeasti ottaen oletuksena kaikki toiminnot kohdistuvat juuri tuon työhakemiston sisältöön (ja sen alihakemistoihin), ellet komenna väkisin muuta. Työhakemistoa voi vaihtaa komennolla, joka sekä Windowsin Command Promptissa että Unix-shelleissä on cd (tulee engl. sanoista "change directory"). Windowsissa pitää lisäksi huomioida työlevy, koska levyasemat ovat siellä erillisiä.

Nämä ovat realiteetit ja toimintaympäristö tietokoneessa aina, pohjimmiltaan. Jotta voisit esim. kääntää Java-ohjelman, on syytä ensin "mennä" siihen hakemistoon, jossa ohjelmasi lähdekoodi on. Siis sinun tulee vaihtaa cd -komennolla työhakemistoksi se, jossa koodisi ovat. Sitten vaan vaikkapa javac MunSiistiPeli.java

Asia tulee ymmärtää nimenomaan siksi, että myöhemmin käytetään graafisia työkaluja, joissa hakemistoja ei ole jatkuvasti näkyvillä. Niilekin on kerrottava, mistä hakemistosta kaikki tarvittava löytyy -- muuten ne eivät voi toimia.

Command Prompt ja Unix-shellit näyttävät tiedostojärjestelmän vähän eri tavoin. Alla on selitetty erikoispiirteet, jotka on syytä tuntea.

Komentorivit Windowsissa: Command Prompt

Command Promptin käynnistäminen

Yleensä Command Prompt kaiketi löytyy suoraan Käynnistä -valikosta. Jos ei sieltä, niin sitten ainakin pitäisi löytyä kohdasta "Käynnistä->Kaikki Ohjelmat->Apuohjelmat"

Tässä kuvat Command Promptin käynnistämisestä, ja itse command promptista.

Käsittääkseni Command Prompt löytyy helpoiten tuolta:

command_prompt2.png

Jos ei se ole suoraan käynnistysvalikossa, niin se on aina vähintään apuohjelmien joukossa:

command_prompt.png

Käynnistämisen jälkeen Command Prompt näyttää jotakuinkin tältä:

command_prompt_ikkuna.png

Tyypillinen komennon muoto Windowsissa

Perinteisesti Windowsin (ja sen edeltäjän eli MS-DOSin) komennot käyttävät valitsimien alussa kauttaviivaa '/' (kun taas unixissa miinusmerkki '-' on tyypillisempi). Esimerkiksi työhakemiston listaaminen Command Promptissa:

dir /A /W

Eli komennon nimi on dir, ja sille menee kaksi argumenttia:

"/A"
"/W"

[Argumenttien merkitys tässä tapauksessa on valita listattavaksi myös piilotetut tiedostot (A=="all") ja myös käyttää leveätä tulostusta (W=="wide").]

Usein MS-DOS -komennoista saa käyttöohjeen antamalla argumentin /? eli esimerkiksi:

dir /?
HUOM:

Java-ohjelmiston käyttö poikkeaa Windowsin perinteistä! Sen argumentit ovat unixmaisia, eli myös Windowsin Command Promptissa kirjoitetaan esimerkiksi:

javac -verbose MunJokuOhjelma.java

Eli valitsimien alkuun tulee viiva. (Esimerkissä valitsin -verbose pyytää näyttämään Java-ohjelman kääntämisen yhteydessä tarkempaa tietoa käännöksen eri vaiheista; eri valitsimista saa tietoa komennolla javac -help).

Windowsin tiedosto- ja hakemistonimet

Windowsissa "levyasemat" eli erilliset juurihakemistot erilaisille tiedon tallennuspaikoille näkyvät erillisinä, ja niillä on jokaisella kirjaintunniste (kirjain ja kaksoispiste). Esimerkiksi Agoran mikroluokissa on seuraavia levyasemia ja vastaavia:

Kirjaintunniste Levyasema
A: diskettiasema
C: paikallisen koneen kovalevy
N: verkkolevy, jossa on joidenkin kurssien matskuja
U: oma kotihakemistosi THK:n isolla verkkolevyllä

Kirjaimet ja vastaavuudet riippuvat täysin siitä, miten koneyksilö on asennettu. Kotikoneellasi on siis ihan erilaiset levyasemat! Kuitenkin useimmiten A: on diskettiasema ja C: on ensimmäinen kovalevy (tarkemmin sanottuna paikallisen kovalevyn ensimmäinen osio, mutta sillä nyt ei ole niin väliä...)

Verkkolevy on sellainen, joka ei suinkaan sijaitse sillä koneella, jossa teet töitä, vaan jossakin kaukaisessa kopissa nettipiuhan päässä. Verkkolevystä yhdistetään joku hakemisto alihakemistoineen siten, että se näyttää ihan samalta kuin paikallinen eli tietokoneessa kiinni oleva levy, vaikka tieto liikkuukin nettipiuhaa pitkin.

Meillä yliopistolla Windows-koneissa U: -asemana näkyvä "levy" on itse asiassa oma kotihakemistosi verkkolevyllä. Se on täysin sama tallennuspaikka kuin esim. Unix-pääteyhteydessä näkyvä kotihakemistosi. (Fyysisesti bittisi tallentuvat ehkä jossain Mattilanniemen talossa; en ole varma... eikä sillä ole väliäkään...)

Tietohallintokeskuksen nykyinen ohje on, että mahdollisimman paljon normaaleista töistä tehdään U: -asemalla, paitsi jos levytilan kiintiö ylittyisi sellaisten tietojen kohdalla, joiden automaattinen varmuuskopiointi ei ole välttämätöntä. Silloin on suositeltavaa käyttää paikallisen tietokoneen sisällä olevaa, varmuuskopioimatonta levyä. Ohjelmointi 1 tehdään alusta loppuun U: -asemalla (eli verkkolevyn kotihakemistossasi), jos se mikroluokissa tehdään. Etäsuorittajat käyttäkööt oman tietokoneensa levyjä, miten lystäävät.

Tiedostojen nimiin voi liittää hakemistorakenteen seuraavasti:

U:\ohj1\demo1\vastaus.txt

Eli ensin tulee "levyaseman" tunnus ja sitten hakemistohierarkia siten että aina ylemmän ja alemman tason hakemistojen nimien väliin laitetaan kenoviiva '\'.

Hiukan hankalaa on, että Command Promptin työhakemiston vaihtaminen toiselle levylle (esim. lähtötilanteesta C: -asemalla omaan kotihakemistoon eli U: -asemalle) vaatii levyaseman vaihdon eksplisiittisesti. Pitää siis tehdä esim. seuraavat komennot peräkkäin:

u:

cd ohj1\demo1\

Kummankin komennon jälkeen pitää painaa enteriä (kuten komennoissa aina). Ensimmäinen komento u: vaihtaa työlevyä, ja toinen komento vaihtaa työhakemistoa työlevyn hakemistorakenteen sisällä.

Java-työkalujen käyttö Windowsin Command Promptissa

Oletetaan, että sinulla on Ohjelmointi 1:n ensimmäistä demoa varten hakemisto U:\ohj1\demo1 ja olet noutanut sinne lähdekooditiedoston nimeltä HelloWorld.java kuten demotehtävässä pyydettiin.

Vähimmillään pääset kokeilemaan ohjelman toimintaa, kun käynnistät komentokehotteen ja komennat seuraavasti (aina jokainen rivi on yksi komento, ja rivin jälkeen painettava enter):

u:
cd ohj1\demo1
javac HelloWorld.java
java HelloWorld

Tässä on kuva:

command_prompt_helloworld.png

Tässä vielä selitykset lisätty jokaiseen näkyvään kohtaan:

command_prompt_helloworld_annotated.png

Näillä selviytyy erittäin pitkälle, kunhan oppii soveltamaan eri nimisille ohjelmille. Kotikäyttäjillä tietysti levyaseman ja hakemiston nimet ovat jotakin muuta!

Komentorivit Unixissa: Shellit

Pääteyhteyden muodostaminen

Pääteyhteys luodaan pääteyhteysohjelmalla. Tästä on erillinen ohje, joka tulee lukea erikseen. Oletamme seuraavassa, että osaat jo muodostaa yhteyden Jalavaan, ja olet aktivoinut THK:n tunnuksen.

Huomaa, missä kaikki toimii: Sillä koneella, jossa itse olet, toimii vain pääteyhteysohjelma (konsoli, terminaali, ... rakkaalla lapsella monta nimeä), joka siirtää merkkejä sinulta palvelimelle ja toisin päin. Itse ohjelmat ja komennot käynnistyvät kaukana istumapaikaltasi (käytännössä Mattilanniemessä) sijaitsevassa palvelimessa. Siellä ne toimivat, ja sieltä käsin ne lähettävät tulosteensa takaisin päätteellesi. Ja sinne sinä lähetät näppäinpainalluksiasi, joilla komennat etäkonetta. Ja niin edelleen.

Tyypillinen komennon muoto Unixissa

Unix-perinteen mukaisissa komennoissa valitsimien alussa on usein miinusmerkki '-'. Varsinkin avoimen lähdekoodin GNU-projektin ohjelmissa valitsimet ovat pidempiä ja selkokielisempiä, jolloin niiden alussa on kaksi miinusmerkkiä peräkkäin "--". Mutta nämä ovat siis vain yleisiä käytäntöjä, ja jokaisen ohjelman tekijä tietysti itse päättää, noudattaako käytäntöjä vai sooloileeko ja keksii omiaan ihmisten elämän vaikeuttamiseksi... Lisäksi on historiallisia jäänteitä -- ohjelmia, joiden on oltava esim. 30 vuotta taaksepäin yhteensopivia ja siksi niiden on vielä tänäänkin hyväksyttävä eksoottisia argumenttimuotoja modernien lisäksi.

Esimerkki Unix-komennosta:

finger -p -m nieminen

Ihan samalla tavalla kuin Windowsin Command Promptissa, käynnistyisi ohjelma nimeltä finger, ja sille annettaisiin kolme argumenttia:

"-p"
"-m"
"nieminen"

(Tämä komento tulostaisi tietoja käyttäjätunnuksesta nieminen. Jos valitsinta -m ei olisi, haettaisiin tietoja kaikista, joiden nimessä on "Nieminen". Heitä on näköjään monta, mutta vain yhdellä on käyttäjätunnus täsmälleen nieminen. Jos valitsinta -p ei olisi, tulostuisi enemmän tietoja, mm. Niemisen työhuoneen numero.)

Java-ohjelmistojen argumentit ovat melkolailla Unix-tyylisiä, joten näitä tullaan kurssin aikana käyttämään ja oppimaan. (Myös Windowsin Command Promptissa Java-ohjelmiston argumentit ovat samanlaisia kuin Unixeissa).

Unixin tiedosto- ja hakemistonimet

Unixissa kaikki hakemistot ja levyasemat ja muutkin laitteet ovat yhden juurihakemiston alla. Tämä on monessa mielessä selkeätä. Ylimmän hakemiston nimi on pelkkä kauttaviiva "/" ja kaikki on sen alla. Useimmiten toimitaan oman kotihakemiston alla, joka näyttäytyy esimerkiksi muodossa /home3/363/nieminen/ -- Unixissa hakemistojen nimien välissä on kauttaviiva '/' kun taas Windowsissa samaa tarkoitusta toimittaa kenoviiva... Ja Windowsissa "levyasemat" näkyvät kirjaintunnuksilla. Muutoin perusidea tiedostojen nimien ja sijaintipaikkojen suhteen on sama.

Unix-pääteyhteyden alussa työhakemistona on kotihakemistosi. Se on siis sama paikka, joka näkyy yliopiston Windowseissa U: -asemanasi. Edelleen, se ei liene fyysisesti kiinni tietokoneessa Jalava, jota pääteyhteyden kautta käyttelet, vaan jossain toisessa mööpelissä. Kuitenkin näyttää, että se olisi. Voit myös käytännössä samaan aikaan operoida kyseistä kotihakemistoasi sekä Windowsin kautta että muutamalla eri pääteyhteydellä -- jos se on jostain syystä sopivaa... Eli varsin näppärä systeemi on kyseessä!

Hakemiston vaihtoja Unixissa:

cd

Pelkkä komento cd vaihtaa työhakemistoksi oman kotihakemistosi. Eli työhakemisto palaa samaksi, jossa se on heti alussa, kun uusi pääteyhteys on muodostunut. Jos vaikka eksyt, niin cd palauttaa "kotiin".

Vaihtaminen Ohjelmointi 1:n hakemistoon:

cd ohj1/demo1/

Tämä komento tietysti olettaa, että työhakemisto alussa on sellainen, josta löytyy alihakemisto nimeltä ohj1, josta puolestaan löytyy (ali)hakemisto demo1.

Yksi uusi hakemisto luodaan Unixissa seuraavalla komennolla:

mkdir provinssi07

Tämä loisi uuden hakemiston nimeltä provinssi07 nykyisen työhakemiston alihakemistoksi. Sen sijaan seuraava tekisi uuden hakemiston paikkaan, jossa on Jyväskylän yliopiston tietohallintokeskuksen käyttäjän julkinen nettisivu:

mkdir ~/www/provinssi07

Matomerkki '~' on lyhyt tapa kirjoittaa kotihakemiston osoite Unix-järjestelmissä. Tarkempaa käsittelyä ei tarvita Ohjelmointi 1 -kurssilla selviytymiseksi.

Java-työkalujen käyttö Unix-päätteen kautta

Tietokoneeseen jalava.cc.jyu.fi on asennettu Java-työkalut. Hätätilanteessa etäopiskelijat pääsevät käyttämään Javaa siellä aluksi. Ensitilassa tulee kuitenkin pyrkiä asentamaan vastaavat omalle tietokoneelle, koska siellä on paljon kätevämpää toimia. (Ainuva, että Command Promptissa ääkköset näkyvät hiukan hassusti syystä, joka opitaan myöhemmin).

Demonpalautus tehdään aina siten, että siirretään tiedostot yliopiston verkkolevylle, ja ajetaan siellä tietty ohjelma. Demonpalautus ohjeistetaan erikseen. Tässä opastetaan lyhyesti Java-työkalujen käyttö pääteyhteydellä.

Ensiksi ota yhteys siten kuin erillisessä selviytymisoppaassa on kerrottu. Yhteyden muodostuttua kirjoita seuraavat komennot. Oletamme, että THK:n kotihakemistossasi on hakemisto ohj1 kurssia varten, ja sen sisällä on ensimmäisen demon tehtäviä varten alihakemisto demo1. Komennat siis seuraavasti:

cd ohj1/demo1
javac HelloWorld.java
java HelloWorld

Tältä se näyttää, jos pääteyhteysohjelma on PuTTY SSH Client:

putty_helloworld.png

Java-työkalujen toiminta sekä tekstipohjaisuuden idea on ihan samanlaista kuin Command Promptissa, paitsi tiedostojärjestelmä on selkeämpi, ääkkösongelmaa ei ole, ja Unix-palvelimella voi tehdä aika paljon enemmän asioita kuin perus-Windowsilla... mutta se ei ole oikeastaan Ohjelmointi 1:n asia paljonkaan tätä selviytymistietoutta pidemmälle.

Tekstieditointi suoraan pääteyhteydellä

Vielä sen verran, että hätätilassa ohjelmia voi editoida suoraan Jalavassa esim. Nano-nimisellä editorilla. Joidenkin mielestä Jed on helppokäyttöisempi, ja siinä taitaa olla myös enemmän ominaisuuksia.

Esim. nanon käynnistys tapahtuisi komennolla:

nano HelloWorld.java

Taas jed käynnistyisi näin:

jed HelloWorld.java

Seuraavassa on kuva Nanosta. Editorin omat komennot painamalla Ctrl -näppäintä ja jotakin alareunassa näkyvää kirjainta (eli esim. poistuminen eli Exit Ctrl+X, ohjeet eli Help Ctrl+G jne.) Tekstin editointi ihan normaalisti kirjoittamalla...

putty_helloworld_nano.png

Nano on helppo oppia käyttämään, mutta liian rajoittunut järkevään työhön. (Helppokäyttöisyys ja tehokkuus liittyvät usein toisiinsa vahvasti juuri tällä tavoin). Sen sijaan tekstieditorit emacs (mun oma lemppari) sekä vim ovat aluksi vaikeita, mutta mahdollistavat oppimisen jälkeen tekstinkäsittelytehokkuuden, jota ei melkein uskoisi todeksi ennen kuin kokee sen käytännössä. Tekstieditoinnin tai työkalujen käyttöön käytettyä aikaa ei saa laskea kuuluvaksi Ohjelmointi 1:een, joten joudun suosittelemaan seuraavaa toimintamallia:

  • Ensisijaisesti käytä hyvää Windows-editoria, esim. ConTEXT
  • Jos täytyy käyttää suoraan Jalavassa, käytä Nanoa tai Jediä.
  • Tai sitten... opettele Emacs tai Vim, mutta älä tule sanomaan, että ohjelmointikurssi vaatii niiden takia aikaa. Nämä työkalut saa opetella vain harrastuspohjalta! (Nörtiksi haluaville toki suosittelen lämpimästi kyseistä harrastusta ensi tilassa)