Yliopiston etusivulle Suomeksi
Helsingin yliopisto
Ctl130 - Unix-kurssi Turussa - syksy 2004

Yhteystiedot:

Osoite:
Yleisen kielitieteen laitos
PL 9
Siltavuorenpenger 20A
00014 Helsingin yliopisto

Puhelin: +358 (09) 1911 (vaihde)
Faksi: +358 (09) 191 29307

Kurssin harjoitukset

Harjoitusten tekemisestä

Harjoitusten tarkoitus on tutustuttaa opiskelijat Unixin perustoimintoihin. Tehtävissä saattaa ilmetä hienoista redundanssia, jotta perusrutiinit iskostuisivat selkäytimeen asti. Tehtävien vastaukset lähetetään vapaamuotoisesti sähköpostitse kurssiassistentille (ctl130-teacher@ling.helsinki.fi).

Tehtävää kannattaa yrittää, vaikka se osoittautuisi liian vaikeaksi. Kesken jääneet ratkaisut kannattaa myös lähettää ja merkitä niihin [kesken] - niistä saa puolet tehtävän suorituksesta, jos näkee, että on tosissaan yritetty. Kesken jääneet tehtävät tarjoavat myös arvokasta tietoa siitä, mikä on koettu hankalaksi.

Huom! Teethän tehtävät yliopiston unix-palvelimella, koska tehtävien tarkastaja ei muuten voi tietää, millaisia käskyjä ja rakenteita käytetyssä palvelimessa ilmenee.

Tehtävien pisteytystä voipi aikanaan tarkastella täällä. Jos sinulla on arvostelusta kysyttävää, voit lähettää sähköpostia tehtävien tarkastajalle (ctl130-teacher@ling.helsinki.fi). Muista merkitä viestin otsikkokenttään tunnus "Turku", jotta kurssiassistentti tietää mistä tehtäväkokoonpanosta on kyse.

Ensimmäisen luennon harjoitukset

Ennen kuin aloitat...

Tehtävä 0: Lähetä ilmoittautumisesi kurssiassistentille/tehtävien tarkastajalle (Reetta Vuokko/HY) osoitteeseen ctl130-teacher@ling.helsinki.fi. Käytä ilmoittautumisen lähettämiseen pine-sähköpostiohjelmaa. Viestiksi riittää mikä tahansa hilpeästä tervehdyksestä maailmankaikkeuden syvimmän olemuksen pohtimiseen; olennaista on, että tehtävien tarkastaja saa tietoonsa kaikkien kurssille osallistuvien nimet ja sähköpostiosoitteet jossain muodossa.

  1. Vaihda unix-salasanasi (ellet ole jo tehnyt sitä). Älä kerro sitä kenellekään. (Jälkimmäinen ei liity harjoitukseen mitenkään).
  2. Luo kotihakemistosi alle alihakemisto unixtesti ja siirry siihen.
  3. Mikä on tämänhetkinen työhakemistosi?
  4. Siirry takaisin työhakemistoosi
  5. Montako kertaa komento cd .. pitää antaa, jotta pääsee kotihakemistostasi juurihakemistoon kääyttämälläsi palvelimella
  6. Keksi jokin äärimmäisen epäkäytännöllinen tapa mennä hakemistoon /usr/lib.
  7. Mitä tekee komento lpq? Mitä muita komentoja liittyy samaan aihepiiriin?
  8. Suunnittele jokin kiva hakemistorakenne kotihakemistollesi (Tarkoittaa, että päätät, miten nykyiset ja tulevat tiedostot jakautuvat alihakemistoihin kotihakemistossasi).
  9. Kuinka monta paikka tiedostojärjestelmästä onnistut löytämään, joita sinulla ei ole oikeutta selailla?
  10. Löydätkö man-sivuja, joiden BUGS-osiossa olisi jotain hauskaa?

Toisen luennon harjoitukset

  1. Selvitä mitä komento ln tekee.
  2. Tee hakemistolistauksesta tekstitiedosto (> listaus.txt; ohjaus tiedostoon) ja kopioi se unixtesti-hakemistoon. Katso, onko se siellä.
  3. echo-komennolla ja >-ohjauksella voit luoda yksinkertaisia tiedostoja. Miten voit kopioida tiedoston käyttämättä cp-komentoa?
  4. Kopioi listaus.txt kotihakemistoosi toiselle nimelle.
  5. Tuhoa unixtesti-hakemistossa oleva listaus.txt.
  6. Miten tuhoaisit kaikki hakemiston tiedostot yhdellä kertaa?
  7. Tee /tmp-hakemistoon alihakemisto, jonka nimeksi tulee käyttäjätunnuksesi. Mene ko. alihakemistoon ja luo siellä tiedosto tiedosto.foo. Palaa /tmp-hakemistoon. Poista äsken tekemäsi hakemisto. Onnistuuko, ja jos ei, niin miksei? Miten ongelma korjaantuu?
  8. Aseta listaus.txt:lle sellaiset oikeudet että kaverisikin pääsevät katsomaan sitä. (Muista myös hakemiston oikeudet.)
  9. Pystyvätkö käyttäjät lukemaan toistensa tekemiä tiedostoja? Perustele.
  10. Ota selvää, mitä umask-komento tekee. (Jos tämä osoittautuu liian vaikeaksi, ota selvää, mitä sleep-komento tekee.)
  11. Kommentoi emacs:n käyttöä. (Anna tulla vain!) Kirjoita kuvaus vähintään kuudesta emacsin toiminnosta, joita tarvitset tavallisessa tekstin muokkaamisessa.
  12. Käyttäjien www-sivut sijaitsevat laitoksen koneilla hakemistossa /web/ling/users/käyttäjätunnus, johon johtaa yleensä symbolinen linkkipublic_html käyttäjän omasta kotihakemistossa. Kirjoita emacs:lla www-hakemistoosi tiedosto vitsi.txt, joka sisältää jonkun lyhyen vitsin. Aseta tiedoston (ja hakemiston) oikeudet sellaisiksi, että näet vitsisi www-selaimella osoitteessa http://www.ling.helsinki.fi/~tunnus/vitsi.txt.
  13. Kirjoita kaunis runo ja tulosta se. (Jos suoritat tätä kotoa, mitä komentoa käyttäisit tässä tehtävässä? Miten?)
  14. Etsi emacs:sta toiminto, jolla voit korvata merkkijonon tiedostosta toisella.
  15. Selvitä kokeilemalla, mitä merkkejä unix-tiedoston nimessä ei voi olla.
  16. emacs tekee varmuuskopiotiedostoja, jotka loppuvat tilde-merkkiin (~). Katso diff:lla, mitä olet muuttanut viimeksi jostakin emacs:illa käsittelemästäsi tiedostosta.
  17. Perusta itsellesi breivari-hakemisto eli hakemisto, johon kaverit voivat käydä jättämässä viestejä ja muuta jännää. Kerro jollekulle kurssilaiselle sähköpostitse, missä hakemisto sijaitsee, ja pyydä häntä jättämään sinne viesti. (Tehtävän suorittamiseksi riittää että perustaa hakemiston ja asettaa sen oikeudet.)

Kolmannen luennon harjoitukset

Tehtävien materiaalina käytettävän tiedoston alice11.txt voi kopioida omaan kotihakemistonsa. Toki voit kopioida sen myös; tällöin joudut vain ottamaan huomioon, missä työskentelet (a.k.a. tehtävissä tarjotut hakemistot ovat väärin).

  1. Mitä tiedostoja kotihakemistossasi on? (katso myös piilotiedostot).
  2. Minkälaisia tiedostoja sijaitsee hakemiston /usr/lib alla? Entä /usr/share?
  3. Mene harjoituksia varten tekemääsi hakemistoon. Kirjoita sinne emacsilla tiedosto tärkeä.txt.
  4. Tee toinen tiedosto (esim. rakkautta.txt) muokkaamalla tärkeä.txt:a ja tallettamalla se eri nimellä.
  5. Selitä (itsellesi), mitä tulostuu komennolla "cat ~/alice11.txt | head -15 | tail -3" Tämä tehtävä on osi
  6. Laske merkit, sanat ja rivit jostakin tiedostosta. Ohjaa vastaus tiedostoon.
  7. Anna numeroitu listaus sisällä olevista käyttäjistä. Alkuun pääsee komennolla who.
  8. Muuta tiedoston alice11.txt sisältö pieniksi kirjaimiksi.
  9. Rivitä sanat kyseisestä tiedostosta (muunna sanavälit ja välimerkit rivinvaihdoiksi).
  10. Laadi alice11.txt normalisoivat käskyt. Eli muuta kaikki aakkoset pieniksi ja poista aakkosiin kuulumattomat merkit (älä välilyöntiä ja rivinvaihtomerkkiä).
  11. Komento rev kääntää jokaisen syötetiedoston rivin merkki merkiltä väärin päin. Mitä ihmeen hyötyä tällaisesta komennosta voi olla?
  12. Tee komento, joka tuottaa listan tiedoston sanoista ja niiden esiintymiskerroista esiintymistiheysjärjestyksessä.
  13. Tiedostossa /usr/share/dict/words on pitkähkö lista englannin kielen sanoja. Mitä hyötyä tästä voisi olla? (Lista löytyy vain ling-palvelimilta, mutta tehtävän teoreettisen luonteen huomioon ottaen ei alkuperäistä listaa tarvitse edes nähdä.)
  14. Katso, keitä kaikkia käyttäjiä on, joilla on sama sukunimi kuin itselläsi.

Neljännen luennon harjoitukset

  1. Voiko olla tilanne, jossa et voi mitenkään poistaa hakemistoa, jonka omistaja olet (eli ls -l näyttää hakemiston omistajaksi sinut)? Millainen tilanne?
  2. Tee itsellesi .plan-tiedosto. Aseta oikeudet niin, että muu maailma voi finger:lla nähdä sen sisällön.
  3. Tee www-hakemistoosi alihakemistot julkinen ja salainen ja kopioi vitsi.txt molempiin niistä. Aseta näiden oikeudet siten, että vitsi.txt on selaimella haettavissa molemmista, mutta listauksen hakemiston sisältämistä tiedostoista näkee selaimella vain julkinen-hakemistosta, ei salainen-hakemistosta.
  4. Millä komennolla etsit merkkijonoa "Aika" tiedostoista, joiden nimessä on merkkijono "kurssi"? (Riittää jos etsit samassa hakemistossa olevista tiedostoista - perjantain luennolla selviää, miksi rekursiivinen haku ei tässä onnistu kovin yksinkertaisesti.)
  5. Millä komennolla saat tietää, missä tiedostoissa esiintyy sana villasukka siten, että saat samalla sen rivin rivinumeron, jossa ko. sana esiintyy? (Tähän on (ainakin) kaksi erilaista ratkaisua.)
  6. Mikä on aakkosjärjestyksessä toiseksi viimeinen sana alice11.txt-tiedostossa? (Käytetään sort-käskyssä eri kirjainkoot samanarvoisina käsittelevää optiota.). Eli sanat omille riveilleen ja siitä etiäppäin.
  7. Miten saat selville, kuinka monta tiedostoa yhdessä hakemistossa ja sen kaikissa alihakemistoissa yhteensä on?
  8. Muodosta komento, joka tuottaa listan tämänhetkisessä työhakemistossasi olevista tiedostoista, joissa on sana ja, yhdessä sen tiedon kanssa, kuinka monta kertaa kyseinen sana esiintyy tiedostossa.
  9. Tutki history-, sort- ja uniq-komennoilla, mitä komentoja olet antanut kaikkein eniten. Tästä tiedosta on hyötyä myöhemmin, kun opitaan tekemään aliaksia.
  10. Siirrä kaikki harjoitusten tuottama turha roska, jota et ole jostain syystä halunnut poistaa, kotihakemiston ali-alihakemistoon harjoitukset/ctl130. (Voit myös siirtää tiedostot johonkin toisennimiseen hakemistoon jonka olet tätä tarkoitusta varten perustanut.)

Jokeritehtävä:seuraavaa tehtävää ansiokkaasti pyörittelemällä voi paikata väliin jääneitä/metsähän menneitä tehtäviä:

Muodosta säännöllinen lauseke, joka löytää syötteestä sähköpostiosoitteet. (Huom! tämä on vaikea tehtävä. Mitä merkkejä sähköpostiosoitteessa saa olla? Ylettömään pedanttisuuteen ei tarvitse kuitenkaan ryhtyä.)

Viidennen luennon harjoitukset

Viidennen kerran harjoitukset käsittelevät prosessinhallintaa. Lisäksi on mahdollisuus palauttaa aiemmin tekemättä jääneitä/virheellisiä tehtäviä.

  1. Aloita tehtävä man man
  2. Pysäytä tehtävä odotustilaan.
  3. Aloita tehtävä man less.
  4. Pysäytä sekin.
  5. Mitä sanoo komento jobs?
  6. Mitä sanoo komento ps?
  7. Siirrä tehtävä etualalle. Mitä tapahtui?
  8. Käynnistä tehtävä man man uudelleen, pysäytä se ja tapa se.
  9. Onko sinulla jäljellä joitain töitä (jobs)?

Jokeritehtävä: Tutustu johonkin vapaavalintaiseen UNIX-sovellukseen ja esittele se lyhyesti. Toki pioneerihenkeä saa harrastaa laajemmassakin mittakaavaassa; tehtävän pisteet määräytyvät tehdyn työmäärän mukaan.

Hae laitoksen sivuilta:

Sivua muokattu viimeksi:
Copyright © 2003-2004 Helsingin yliopisto. Kaikki oikeudet pidätetään.