Manpages

NIMI

fortune − tulosta satunnainen, toivottavasti mielenkiintoinen elämänviisaus

YLEISKATSAUS

fortune [-aefilosw] [-n pituus] [ -m merkkijono] [[n%] tiedosto/hakemisto/all]

KUVAUS

Käynnistettäessä fortune ilman optioita se näyttää satunnaisen elämänviisauden. Nämä on jaettu useisiin luokkiin, joista jokainen on edelleen jaettu loukkaamattomiin ja mahdollisesti loukkaaviin.

OPTIOT
Tässä ovat ohjelman optiot:

-a

Valitse molemmista, loukkaavista ja loukkaamattomista listoista (Katso optiosta -o lisätietoja loukkaavista viisauksista.)

-e

Oleta kaikkien lähdetiedostojen olevan yhtä suuria (katso ohjeet useiden tiedostojen käytöstä).

-f

Näytä lista tiedostoista, joista viisauksia etsittäisiin, mutta älä näytä yhtään viisautta.

-l

Vain pitkät elämänviisaudet. Katso optiosta -n, kuinka ’’pitkä’’ määritellään.

-m merkkijono

Tulosta kaikki elämänviisaudet, joissa on mainittu merkkijono. Merkkijonon kielioppi riippuu siitä, kuinka järjestelmäsi määrittelee funktiokutsun re_comp(3) tai regcomp(3), mutta sen pitäisi olla samankaltainen syntaksiltaan kuin grep(1) käyttää.

Elämänviisaudet tulostetaan vakiotulosteeseen, kun taas tiedostonimet, joista ne luetaan, tulostetaan vakiovirheeseen. Kummatkin voidaan kuitenkin ohjata jonnekin muualle; jos vakiotuloste ohjataan tiedostoon, on tämä hyväksytty fortune-tietokantatiedosto. Jos taas myös vakiovirhe ohjataan tähän samaan tiedostoon, on tulostiedosto yhä hyväksytty, mutta siinä on ’’virheellisiä’’ elämänviisauksia eli nämä tiedostonimet sulkumerkkien sisällä. Tämä voi kuitenkin olla käytännöllistä, jos halutaan poistaa löytyneet viisaudet tiedostoistaan, koska jokainen tiedostonimitallenne edeltää siitä tiedostosta löytyneitä täsmäyksiä.

-n pituus

Säädä suurin elämänviisauden pituus (merkeissä), joka käsitetään vielä ’’lyhyenä’’ (oletusarvo on 160). Kaikki tätä pidemmät ovat ’’pitkiä’’. Ole varovainen! Jos asetat arvon liian lyhyeksi ja haluat lyhyitä viisauksia, tai asetat sen liian pitkäksi ja haluat pitkiä, joutuu ohjelma päättymättömään silmukkaan.

-o

Valitse vain mahdollisesti loukkaavista aforismeista.

Ole kiltti ja pyydä loukkaavaa aforismia vain, jos syvällä sydämessäsi uskot haluavasi tulla loukatuksi (ja vain lopetat -o:n käyttämisen sensijaan, että tuottaisit meille mieliharmia. Sovittu?)

... let us keep in mind the basic governing philosophy of The Brotherhood, as handsomely summarized in these words: we believe in healthy, hearty laughter -- at the expense of the whole human race, if needs be. Needs be.

--H. Allen Smith, "Rude Jokes"

-s

Vain lyhyet viisaudet. Katso optiota -n, kuinka ’’lyhyt’’ määritellään.

-i

Älä huomioi suurten ja pienten kirjainten eroa -m-optiota käytettäessä.

-w

Odota ohjelman loppumista tietty aika, joka lasketaan jutun sisältämien merkkien määrästä. Tämä ominaisuus on hyödyllinen, jos ohjelma halutaan osaksi uloskirjautumista, jolloin varmistetaan, että käyttäjä ehtii lukea viestin ennen kuin ruutu tyhjennetään.

Käyttäjä voi määritellä uusia sanontoja. Voit määritellä tiedoston tai hakemiston, jossa on useita tiedostoja, tai käyttää sanaa all jolloin käytetään kaikkia normaaleja tietokantoja. Näistä jokaisen eteen voidaan antaa prosenttilukema, joka on luku n 0 ja 100 välillä, jonka perässä on %. Näin määriteltynä n prosentin todennäköisyydellä viisaus otetaan siitä tiedostosta tai hakemistosta. Jos prosenttilukujen summa on alle 100% ja on annettu tiedostoja/hakemistoja, joille ei ole annettu prosenttimäärää, loput prosentit menevät niille, suhteellisesti kokojen mukaan jaettuna.

Esimerkkinä on kaksi tietokantaa, hassut ja ei-hassut, joista hassut on kaksi kertaa suurempi (elämänviisauksien määrässä mitattuna). Niinpä

fortune hassut ei-hassut

antaa sinulle kaksi kolmasosaa ajasta viisauksia hassut-tietokannasta. Komento

fortune 90% hassut 10% ei-hassut

ottaa 90% elämänviisauksista tiedostosta hassut (’’10%’’ on tarpeeton, koska 10% on kaikki, mitä on jäljellä).

Käyttämällä optiota -e kaikki tiedostot ovat samanarvoisia, jolloin

fortune -e hassut ei-hassut

tarkoittaa samaa, kuin

fortune 50% hassut 50% ei-hassut

Tässä ohjelmassa on myös tuki BSD-tyylin mukaiseen loukkaavia sanontoja sisältävien tiedostojen merkintään, eli ’’-o’’:n lisäykseen tiedostonimen loppuun. Näin fortune ei kuitenkaan tallenna niitä: loukkaavat elämänviisaudet tallennetaan erilliseen hakemistoon ilman ’’-o’’ -päätettä. Tähän päätteeseen loppuvasta nimestä (joka ei sisällä polkua eikä ole hakemisto) poistetaan pääte ja se haetaan loukkaavia sanontoja sisältävästä hakemistosta (vaikkei kumpaakaan optioista -a tai -o olisi annettu). Tämä ominaisuus on sekä yhteensopivuuden vuoksi että myös siksi, että käyttäjät voivat käyttää samannimisiä loukkaamattomia ja loukkaavia tietokantoja samaan aikaan.

Oletetaan esimerkiksi tietokanta, nimeltään määrittelyjä, joka on kummassakin, sekä loukkaavissa että loukkaamattomissa kokoelmissa. Seuraava komento valitsee loukkaamattoman 90% ja loukkaavan lopuilla 10% kerroista.

fortune 90% määrittelyjä määrittelyjä-o

TIEDOSTOT

Huomaa: nämä ovat käännön aikana määriteltyjä oletusavoja.
/usr/share/games/fortunes

Loukkaamattomien elämänviisauksien hakemisto.

/usr/share/games/fortunes/off

Loukkaavien elämänviisauksien hakemisto.

Jos jotain elämänviisauskokoelmaa ei haluta, on helpointa poistaa tiedostoon liittyvä .dat-tiedosto, jolloin ne kuitenkin jäävät levylle siltä varalta, että niitä tarvittaisiin myöhemmin. Kun sitten fortune ei löydä tätä osoitintiedostoa, se ohittaa em. tiedoston.

BUGIT

Jako loukkaaviin ja loukkaamattomiin elämänviisauksiin hakemiston eikä ’’-o’’ -päätteen avulla ei ole 100% yhteensopiva alkuperäisen BSD-fortunen kanssa. Vaikka ’’-o’’ -pääte tunnistetaan viittaukseksi loukkaavaan tietokantaan, näiden tiedostojen on silti oltava erillisessä hakemistossa. Kiertotie on tietysti ’’-o’’ -tiedostojen siirtäminen loukkaavaan hakemistoon (uudelleen nimettynä tai ei) ja käyttää optiota -a.

Mukanatoimitetut tietokannat on käsitelty niin, että vältettäisiin oikeinkirjoitus- ja sanastovirheitä sekä monisanaisuutta, toistettavuutta ja monisanaisuutta, erityisesti toistettavuutta. Tämä ei ole kuitenkaan onnistunut täydellisesti, joitakin elämänviisauksia on myöskin saattanut kadota.

Fortunen tietokannat on jaettu nyt suureen määrään pieniä tiedostoja, jotkut nimettynä muodon mukaan (arvoitukset (riddles), määrittelyt (definitions)), jotkut sisällön mukaan (ruoka (food), politiikka (politics)). Hakemistoissa on samoja tiedostoja (kuten fortunes/definitions ja fortunes/off/definitions). Kaikki mahdollisesti loukkaavat sanonnat eivät ole tiedostoissa, jonne ne kuuluisivat, eivätkä kaikki sanonnat loukkaavissa tiedostoissa loukkaa, vaikka suurta työtä on tehty suuremman johdonmukaisuuden saavuttamiseksi. Parempi jaottelu olisi myöskin voitu tehdä.

HISTORIA

Tämä versio pohjautuu NetBSD:n fortune 1.4:ään, mutta tästä on korjattu bugeja ja lisätty ominaisuuksia.

Alkuperäinen fortune/strfile -tiedostomuoto käsitti yhden tiedoston; strfile luki tekstitiedoston ja muunsi sen null-päätteisiksi merkkijonoiksi, jotka tallennettiin osoitintaulukon perään .dat-tiedostoon. NetBSD fortune 1.4:ssä tämä piti vaihtaa kahdeksi erilliseksi tiedostoksi: .dat -tiedosto sisälsi vain otsikkotiedot (osoitintaulukon ja liput, katso strfile.h), ja itse teksti jätettiin omaan tiedostoonsa. Mahdollinen ongelma oli, että tekstitiedosto ja otsikkotiedosto eivät olisi ajan tasalla, mutta hyötynä taas tekstitiedostoja pystyttiin muokkaamaan ilman jatkuvaa unstr-tietokannan uudelleenjärjestelyä. Myös pieniä levytilan säästöjä esiintyi (edellyttäen, että järjestelmänvalvojat säilyttivät ennen kummatkin tiedostot).

Monet NetBSD-versioon tehdyistä muutoksista olettivat käyttöjärjestelmän olevan Linux, eivätkä toimineet muissa järjestelmissä, kuten BSD:ssä. Lähdekoodia on sen jälkeen yleistetty ja nykyään ohjelma toimii Linuxin ohella myös SunOS 4.x:ssä. Tulevaisuudessa yhä useampi järjestelmä tulee tuetuksi. Huomaa, että joitakin bugeja löydettiin vahingossa ja korjattiin tämän prosessin aikana.

Arvatenkin moni ihminen on työstänyt tätä ohjelmaa, mutta he eivät ole jättäneet nimiään historiaan.

KATSO MYÖS

re_comp(3), regcomp(3), strfile(1), unstr(1)