Yliopiston etusivulle Suomeksi
Helsingin yliopisto
Kurssin harjoitukset

Yhteystiedot:

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

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

Kurssin harjoitukset

1 Harjoitusten tekemisestä

Harjoitusten pääasiallinen tarkoitus on tuoda Unix-järjestelmää tutuksi. Harjoituksia käytetään myös kurssin suorittamisen tarkkailuun, mutta tästä aiheutuva vaiva yritetään saada mahdollisimman pieneksi. Tehtävien vastaukset lähetetään vapaamuotoisesti sähköpostitse luennoitsijalle ja 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.

Uudet harjoitukset ilmestyvät verkkoon luentopäivinä viimeistään klo 18.00. Ne tulee palauttaa kurssiassistentille viimeistään seuraavana päivänä kello 18.00 mennessä.

Harjoitukset tehdään mieluiten venus-palvelimella. Ellet saa jotain tehtyä venuksella, yritä marsilla. Yhteyden venukselle saat näin:

ssh venus.ling.helsinki.fi

Tehtävien pisteytystä voipi tarkastella täällä. Jos sinulla on arvostelusta kysyttävää, voit lähettää sähköpostia (ctl130-teacher@ling.helsinki.fi).

Ensimmäisen luennon harjoitukset

  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

  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 /ling/corp/demo/alice11.txt | head -15 | tail -3"
  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. Hanki harjoitushakemistoosi teksti alice11.txt (ks. tehtävä 5). Tarkista, että se on siellä. Muuta tiedoston 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?
  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. 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ä.)
  10. 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.
  11. 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.)

Viidennen luennon harjoitukset

Näiden tehtävien tekemiseen on poikkeuksellisesti aikaa koko viikonloppu. Palautus siis ma 18.00 mennessä.

  1. Ohjaa 3. luennon tehtävän 10 (alice-tiedoston normalisointi) lopputulos kotihakemistossasi tiedostoon h4-3.txt ja palauta ko. tiedosto liitetiedostona luennoitsijalle. (Postin lähetykseen soveltuu esim. unix-ohjelma Pine - muitakin ohjelmia saa toki käyttää.)
  2. Laadi käskyt, jotka laskevat montako a-kirjainta tiedosto sisältää. Yritä ottaa huomioon sekä 'A' että 'a'.
  3. mail-komennolla voi postittaa haluamaansa osoitteeseen mitä tahansa merkkivirtoja. Find-komento puolestaan etsii tiedostoja mm. niiden nimien tai koon perusteella. Tee komento, joka lähettää sinulle sähköpostissa listan kotihakemistosi yli 10 kilotavua vievistä tiedostoista ja hakemistoista. Aja se taustalla ja poistu komentotulkista.
  4. Muodosta komento, jolla voit katsoa, kuinka monta kertaa olet ehtinyt kirjautua sisään palvelimelle.
  5. Miten saat selville ympäristömuuttujan arvon?
  6. Kokeile PRINTER-muuttujan arvon asettamista. Tarkista, että arvo vaihtui.
  7. Anna ympäristömuuttujalle PS1 erilaisia arvoja. Mihin muuttujan arvon muuttaminen vaikuttaa? Selvitä myös mitä merkinnät \u, \h, \t, \w ja \007 saavat aikaan PS1:ssa.
  8. Tee aliakset eniten käyttämillesi komennoille (niiden selville ottaminen oli edellisen kerran harjoituksia). Sijoita kyseiset aliasmäärittelyt kotihakemistosi .bashrc-tiedoston perään, jotta voit myös tulevaisuudessa käyttää niitä.
  9. Testaa prosessinhallintaa:
    • Aloita työ man man.
    • Keskeytä työ odotustilaan.
    • Aloita työ man less.
    • Keskeytä sekin.
    • Mitä sanoo komento jobs?
    • Mitä sanoo komento ps?
    • Siirrä työ etualalle. Mitä tapahtui?
    • Käynnistä työ man man uudelleen, keskeytä se ja tapa se.
    • Onko sinulla jäljellä joitain töitä (jobs)?
  10. Kirjaudu Unix-palvelimelle sisään ssh:lla useita kertoja yhtaikaa. Tarkastele, millaisia prosesseja sisäänkirjautumisesi aiheuttavat.
  11. Anna komento yes. Mitä se tekee? Miten sen saa lopettamaan?
  12. Komennolla uptime voi tarkastella koneen kuormitusta. Lue uptime:n ohjeet. Käynnistä taustalle muutamia yes >/dev/null -prosesseja, tarkastele koneen kuormituksen kehittymistä, ja tapa prosessit. (Tässä tehtävässä esiintyvä /dev/null on keino päästä kivuttomasti eroon minkä tahansa ohjelman tulosteesta.)
  13. Miten ssh suhtautuu Ctrl-Z:an? Katso man-sivuilta, miten ssh:n saa pysäytetyksi.
  14. Muodosta säännöllinen lauseke (grep-komento), joka löytää syötteestä kaikki HTML-tagit. HTML-tagi on muotoa >jotain jotain jotain<
  15. Muodosta säännöllinen lauseke, joka löytää syötteestä isolla kirjaimella alkavat sanat. (Syötettä itseään pääsi käsittelemään mm. aloittamalla putkilinjan käskyllä "cat -")
  16. Käytä ls-, grep- ja xargs-komentoja (vihje: tässä järjestyksessä) näyttäksesi cat-komennolla .txt-päätteisten tiedostojen sisällön. Eli siis: tee putkilinja, joka toimii samoin kuin cat *.txt, muttei käytä *-rakennetta.
  17. Muodosta komento, joka poistaa hakemistosta kaikki tiedostot, joiden sisällössä esiintyy yli 10 numeroa pitkä luku.

Kuudennen (viimeisen) luennon harjoitukset

Viimeisellä luennolla kerrattiin jo opittuja asioita. Niinpä myös viimeisten harjoitusten aiheena on kertaus - tai pikemminkin paikkaus. Nyt on siis tilaisuus nostaa pistesaldoaan korjaamalla tai täydentämällä aiempien kertojen harjoitusvastauksiaan. Muistakaa kertoa vastauksissanne sekä luentokerran että tehtävän numero, tunnisteettomat vastaukset hylätään surutta.

Paikkaustehtävät tulee palauttaa perjantaihin mennessä. Kannattaa aloittaa kokonaan palauttamatta jääneistä tehtävistä. Muiden tehtävien kohdalla varmin keino löytää puutteelliset vastaukset on katsoa oletko todella lukenut harjoituskysymyksen huolella ja todella vastannut sen kaikkiin kohtiin. Myös pistetaulukko auttaa tässä.

Ellei mikään muu auta, voit kysyä puutteellisista harjoituksistasi luennoitsijalta (hyvissä ajoin ennen perjantain dedistä) osoitteesta jlasyrja-ÄT-ling.helsinki.fi.

Tähän mennessä opitut komennot

Tekstinprosessointi:

cat, uniq, sort, tr, wc, cut, less, grep, head, tail, rev, egrep, sed

Tiedostot ja hakemistot:

ls, mkdir, rmdir, cd, pwd, cp, mv, rm, chmod, chown, chgrp, diff, file, tree

Tulostaminen:

lpr, mpage

Prosessinhallinta:

fg, bg, jobs, ps, kill, top

Käyttäjätiedot ja -kommunikaatio:

finger, pine, write, mesg, ytalk

Muut:

echo, ssh, emacs, passwd, man, apropos, info, which, locate, touch

Hae laitoksen sivuilta:

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