Unix ja shell-ohjelmointi 2001, demo 3 Unix ja shell-ohjelmointi 2001, demo 3 (7.2.2001)

  1. Miten voisit

    1. etsiä /var -hakemiston alta kaikki tiedostot, joihin joko on maailmalla kirjoitusoikeus tai ryhmällä on kirjoitusoikeus ja ryhmä on users tai staff?
    2. poistaa $HOME/tmp -hakemiston alta kaikki tiedostot, joita ei ole käytetty viikkoon, paitsi keep-nimisten alihakemistojen alta ei mitään?
    3. kopioida hakemistopuun siten, että .o-loppuisia ja a.out ja core-nimisiä tiedostoja ei kopioida mutta muuten koko puurakenne kopioidaan sellaisenaan?

  2. Kirjoita skripti

    paloittele [-i input ] [-s string ] n1...

    joka jakaa stdinin tai tiedoston input osiin nimillä string .1, string .2 jne (oletuksena x.1, x.2...) siten, että ensimmäisessä on n1 riviä jne, ja viimeisessä kaikki loput. Esim,

    paloittele -i kalat -s k 5 6 5

    tekisi tiedostot k.1 olisi kalat-tiedoston rivit 1-5, k.2:ssa 6-11, k.3:ssa 12-16 ja k.4:ssa loput.

  3. Kirjoita skripti

    putkita [-i input ] [-o output ] komento...

    joka suorittaa annetut komennot peräkkäin putkitettuna, ts.

    putkita -i kalat -o fisut sort 'tr a-z A-Z' 'paste - -'

    tekisi saman kuin

    sort <kalat | tr a-z A-Z | paste - - >fisut

    Voit olettaa että komentoja on alle 10.

  4. Halutaan verrata kahta salasanatiedostoa (Unixin /etc/passwd-formaatti) ja etsiä tunnuksia jotka esiintyvät molemmissa mutta joiden uid tai nimikenttä eroavat. Kirjoita skripti joka

    1. tulostaa alekkain vastinrivit joilla on sama tunnus mutta jokin em. kentistä eroaa.
    2. tulostaa sellaisista tunnuksista rinnakkain yhdelle riville tunnus, uid1, nimi1, uid2, nimi2.

    Testiaineistona voit käyttää tiedostoja passwd1 ja passwd2.

  5. Kirjoita skripti, joka laskee annetun kokonaisluvun kertoman (n! = 1*2*...*n) siten, että se muistaa ja kertoo montako kertaa samaa lukua on jo kysytty. Varaudu siihen että sitä voidaan kutsua monta kertaa samanaikaisesti.

  6. Toteuta sh-skripteillä demoni, joka käynnistettäessä luo putken ja jää taustalle odottamaan, ja aina putkea luettaessa kertoo milloin sitä on viimeksi luettu, ja lopetettaessa poistaa putkensa. Käynnistys/lopetusskriptin pitää ymmärtää argumentit start ja stop.


File translated from TEX by TTH, version 1.98.
On 5 Feb 2001, 16:19.