Pogosto zastavljena vpra�anja o Unixu

                      Ted Timar <[email protected]>

                           v2.9, 11. junij 1996
    _________________________________________________________________

                                Povzetek

  Pred vami je slovenski prevod spisa Unix FAQ, pogosto zastavljenih
  vpra�anj z odgovori v novi�arskih skupinah comp.unix.questions in
  comp.unix.shell. Prosim, ne ponavljajte teh vpra�anj, ker so bila
  zastavljena �e velikokrat, in prosim, ne pljuvajte po ljudeh, ki morda
  niso videli tega obvestila. Hvala!
    _________________________________________________________________


  Kazalo


1. Administrativni podatki

    * 1.1 O tem spisu
    * 1.2 Pravna za��ita
    * 1.3 Dostopnost
    * 1.4 Zahvale

2. Splo�na vpra�anja

    * 2.1 Kaj pomeni �tevilka v oklepajih pri sklicevanju na ,rm(1)` ali
      ,ctime(3)`?
    * 2.2 Kaj pomeni {kak�en nerazumljiv ukaz na Unixu}?
    * 2.3 Kako deluje most med novi�arsko skupino
      ,,comp.unix.questions``
    * 2.4 Katere so uporabne knjige o Unixu ali C-ju?
    * 2.5 Kaj se je zgodilo s seznamom izgovarjave, ki je bil del tega
      spisa?

3. Relativno osnovna vpra�anja, ki jih navadno spra�ujejo za�etniki

    * 3.1 Kako odstranim datoteko z imenom, ki se za�ne z ,-`?
    * 3.2 Kako odstranim datoteko, ki ima v svojem imenu �udne znake?
    * 3.3 Kako dobim rekurziven izpis vsebine imenika?
    * 3.4 Kako lahko v svoj pozivnik vklju�im ime trenutnega imenika?
    * 3.5 Kako s skriptom ukazne lupine preberem znake s terminala?
    * 3.6 Kako preimenujem *.foo v *.bar ali spremenim imena datotek v
      male �rke?
    * 3.7 Zakaj dobim ob ukazu ,,rsh gostitelj ukaz`` [kak�no �udno
      sporo�ilo o napaki]?
    * 3.8 Kako naj {nastavim spremenljivko okolja, spremenim imenik}
      znotraj programa ali skripta ukazne lupine in dose�em, da bo to
      upo�tevala moja trenutna ukazna lupina?
    * 3.9 Kako lahko v csh lo�eno preusmerim stdout in stderr?
    * 3.10 Kako znotraj .cshrc ugotovim, ali sem prijavna ukazna lupina?
    * 3.11 Kako v lupini naredim ujemalni vzorec, ki se ujema z vsemi
      datotekami, razen z ,,.`` in ,,..``?
    * 3.12 Kako poi��em zadnji argument v skriptu Bournove ukazne
      lupine?
    * 3.13 Kaj je narobe, �e imam ,.` v svoji poti $PATH?
    * 3.14 Kako lahko iz skripta ukazne lupine zapiskam na terminalu?
    * 3.15 Zakaj ne morem uporabiti programa ,,talk`` za pogovor s
      prijateljem na stroju X?
    * 3.16 Zakaj da koledar napa�en izpis?

4. Vmesna vpra�anja

    * 4.1 Kako lahko ugotovim �as, ko je bila datoteka ustvarjena?
    * 4.2 Kako lahko uporabim rsh, ne da bi rsh po�akal konec
      oddaljenega ukaza?
    * 4.3 Kako lahko skraj�am datoteko?
    * 4.4 Zakaj simbol ,,{}`` ukaza find ne naredi to, kar �elim?
    * 4.5 Kako lahko za��itim simboli�ne povezave?
    * 4.6 Kako lahko ,,obnovim`` pobrisano datoteko?
    * 4.7 Kako lahko proces ugotovi, ali te�e v ozadju?
    * 4.8 Zakaj preusmerjanje v zanki ne dela, kot bi moralo? (Bournova
      lupina)
    * 4.9 Kako po�enem passwd, ftp, telnet, tip in druge interaktivne
      programe v skriptu ukazne lupine v ozadju?
    * 4.10 Kako lahko v skriptu ali programu ugotovim ID procesa, ki
      pripada programu z dolo�enim imenom?
    * 4.11 Kako preverim izhodni status oddaljenega ukaza, pognanega z
      rsh?
    * 4.12 Je mogo�e programu awk podati tudi spremenljivke ukazne
      lupine?
    * 4.13 Kako se znebim procesov-zombijev, ki vztrajajo?
    * 4.14 Kako dobim vrstice iz cevovoda tako, kot se pi�ejo, namesto
      le v ve�jih blokih?
    * 4.15 Kako lahko vstavim datum v ime datoteke?
    * 4.16 Zakaj se nekateri skripti za�nejo z ,,#!...``?

5. Napredna vpra�anja; radi jih vpra�ujejo ljudje, ki mislijo, da �e poznajo
vse odgovore

    * 5.1 Kako berem znake s terminala, ne da bi bilo uporabniku treba
      pritisniti RETURN?
    * 5.2 Kako preverim, �e je treba prebrati znak, ne da bi ga zares
      prebral?
    * 5.3 Kako ugotovim ime odprte datoteke?
    * 5.4 Kako lahko teko�i program ugotovi svojo lastno pot?
    * 5.5 Kako uporabim popen() za odprtje procesa za branje in pisanje?
    * 5.6 Kako izvedem v C-ju sleep() za manj kot sekundo?
    * 5.7 Kako pripravim skripte ,setuid` ukazne lupine do delovanja?
    * 5.8 Kako lahko ugotovim, kateri uporabnik ali proces ima odprto
      datoteko ali uporablja dolo�en datote�ni sistem (da ga lahko
      odklopim)?
    * 5.9 Kako izsledim ljudi, ki me tipajo (s finger)?
    * 5.10 Je mogo�e ponovno priklju�iti proces na terminal, ko je bil
      ta odklopljen, tj. po zagonu programa v ozadju in odjavi?
    * 5.11 Je mogo�e ,,vohuniti`` na terminalu, gledajo� izhod, ki se
      prikazuje na drugem terminalu?

6. Vpra�anja, povezana z razli�nimi ukaznimi lupinami in njihovimi razlikami

    * 6.1 Se lahko ukazne lupine klasificirajo v kategorije?
    * 6.2 Kako ,,vklju�im`` en skript ukazne lupine iz drugega
      lupinskega skripta?
    * 6.3 Ali vse ukazne lupine podpirajo vzdevke (angl. aliases)? Lahko
      uporabimo tudi kaj drugega?
    * 6.4 Kako se prirejajo spremenljivke ukaznih lupin?
    * 6.5 Kako ugotovim, ali poganjam interaktivno ukazno lupino?
    * 6.6 Katere datoteke ,,s piko`` uporabljajo razli�ne ukazne lupine?
    * 6.7 Zanima me ve� o razlikah med razli�nimi ukaznimi lupinami.

7. Pregled razli�ic Unixa

    * 7.1 Opozorilo in uvod
    * 7.2 Zelo kratek pogled na zgodovino Unixa
    * 7.3 Glavne vrste Unixa
    * 7.4 Glavni igralci in standardi Unixa
    * 7.5 Ugotovitev vrste va�ega Unixa
    * 7.6 Kratki opisi nekaterih znanih (komercialnih/prostih) Unixov
    * 7.7 Unixi, delujo�i v realnem �asu
    * 7.8 Slovar�ek Unixa

8. Primerjava sistemov za upravljanje konfiguracij (RCS, SCCS).

    * 8.1 RCS vs. SCCS: Uvod
    * 8.2 RCS vs. SCCS: Kako sta primerljiva vmesnika?
    * 8.3 RCS vs. SCCS: Kaj je v datoteki popravkov?
    * 8.4 RCS vs. SCCS: Katere so klju�ne besede?
    * 8.5 Kaj je simboli�no ime v RCS?
    * 8.6 RCS vs. SCCS: Kaj pa hitrost?
    * 8.7 RCS vs. SCCS: Identifikacija razli�ic
    * 8.8 RCS vs. SCCS: Kako se obna�ata v te�avah?
    * 8.9 RCS vs. SCCS: Kako se razumeta z ukazom make(1)?
    * 8.10 RCS vs. SCCS: Pretvorba
    * 8.11 RCS vs. SCCS: Podpora
    * 8.12 RCS vs. SCCS: Primerjava ukazov
    * 8.13 RCS vs. SCCS: Priznanja
    * 8.14 Ali lahko dobim ve� podatkov o sistemih za upravljanje
      konfiguracij?
    _________________________________________________________________


1. Administrativni podatki

1.1 O tem spisu

  Pred vami je slovenski prevod spisa Unix FAQ, pogosto zastavljenih
  vpra�anj z odgovori v novi�arskih skupinah comp.unix.questions in
  comp.unix.shell. Prosim, ne ponavljajte teh vpra�anj, ker so bila
  zastavljena �e velikokrat, in prosim, ne pljuvajte po ljudeh, ki morda
  niso videli tega obvestila. Hvala!

  �eprav so vsa vpra�anja legitimna, ka�e, da se vsako leto znova
  pojavljajo v novi�arskih skupinah comp.unix.questions in
  comp.unix.shell, navadno z odgovori, od katerih je le nekaj pravilnih,
  in skupaj z jadikovanjem o tem, kako so venomer postavljena enaka
  vpra�anja. Ob tem boste morda �eleli prebrati mese�ni �lanek ,,Answers
  to Frequently Asked Questions`` v novi�arski skupini
  news.announce.newusers, ki vam bo povedal, kaj pomeni ,,UNIX``.

  Pri pestrosti sistemov Unix na svetu je te�ko zagotoviti, da bodo ta
  vpra�anja delovala na vseh sistemih. Vselej preberite strani va�ega
  lokalnega referen�nega sistemskega priro�nika, preden posku�ate
  storiti karkoli tukaj priporo�enega. �e imate predloge ali popravke za
  katerikoli tukaj�nji odgovor, ga, prosim, po�ljite na
  [email protected].

  Slovenski prevod je nastal konec leta 1998, ko so nekateri odgovori �e
  zastareli. Prevajalec svetuje, da nasvete uporabljate z zrnom soli.
  Avtor originalnih Unix FAQ na�rtuje novo izdajo, ki jo bomo posku�ali
  prevesti, �e boste pokazali zanimanje za tole razli�ico. Prevajalec
  prosi za kakr�nekoli pripombe k prevodu - po�ljite jih na
  [email protected].

1.2 Pravna za��ita

  Zbirko originalnih nasvetov je pravno za��itil (c) 1994 Ted Timar,
  razen dela ,,Pregled razli�ic Unixa``, ki sta ga za��itila (c) 1994,
  Pierre Lewis in Ted Timar. Vse pravice so pridr�ane. Dovoljenje za
  raz�irjanje te zbirke imate, �e jo brezpla�no raz�irjate v elektronski
  obliki, �e ste naredili vse razumne poskuse, da bi uporabili njeno
  zadnjo razli�ico, �e so hranjene vse tu navedene zasluge in to
  sporo�ilo o pravni za��iti. O drugih vpra�anjih distribucije se bo
  premislilo. Vsem razumnim zahtevam se bo ugodilo.

  Vsi nasveti so bili priporo�eni z dobrimi nameni, vendar za njihovo
  to�nost ne jam�ijo niti pisci prispevkov niti avtor te zbirke niti
  prevajalec. Uporabniki v celoti prevzemajo odgovornost za morebitno
  povzro�eno �kodo.

  Slovenski prevod te zbirke z dne 26. septembra 1998 je delo Romana
  Maurerja. Za njegovo raz�irjanje veljajo enaki pogoji kot za izvirno
  zbirko.

1.3 Dostopnost

  Veliko zbirk pogosto zastavljenih vpra�anj (kraj�e PZV; angl. FAQ -
  Frequently Asked Questions), vklju�no s to, je dostopnih z anonimnim
  FTP-jem z arhivarskega mesta
  ftp://rtfm.mit.edu/pub/usenet/news.answers/, ki je zrcaljen tudi na
  slovenskem stre�niku ftp://ftp.arnes.si/usenet/news.answers/. Ime, pod
  katerim se arhivira PZV, vidite v vrstici ,,Archive-Name:`` na vrhu
  �lanka. Original teh PZV je shranjen pod imeni
  ,,unix-faq/faq/part[1-7]``.

  Formatirane razli�ice originalnega spisa Unix FAQ v formatu Texinfo,
  tekstovnem formatu in formatu za *roff so dostopne z anonimnim FTP-jem
  v imeniku ftp://ftp.wg.omron.co.jp/pub/unix-faq/docs/.

  Slovenska razli�ica v formatih TXT, SGML, Postscript in DVI je
  dostopna na mestu za anonimni FTP v podimenikih
  ftp://ftp.lugos.si/pub/lugos/doc/FAQ-sl/ (i��ite datoteke
  Unix-FAQ-sl.*) ali v svetovnem spletu na naslovu
  http://www.lugos.si/delo/slo/HOWTO-sl/Unix-FAQ-sl.html.

1.4 Zahvale

Subject: Who helped you put this list together?
Date: Thu Mar 18 17:16:55 EST 1993

  Ta spis je ena prvih zbirk pogosto zastavljenih vpra�anj (PZV; angl.
  Frequently Asked Questions - FAQ). Prvi� je bil sestavljen julija
  1989.

  Ted Timar <[email protected]> je prevzel vzdr�evanje tega seznama.
  Skoraj vse delo (in zasluge) za sestavljanje te zbirke gredo Stevu
  Haymanu.

  Veliko zahval dolgujemo tudi ducatom bralcev Useneta. Ti so prispevali
  vpra�anja, odgovore, popravke in predloge za ta seznam. Posebna
  zahvala gre Maartenu Litmaathu, Guyu Harrisu in Jonathanu Kamensu, ki
  so spisali posebej obse�ne prispevke.

  Temo ,,Vpra�anja, povezana z razli�nimi ukaznimi lupinami in njihovimi
  razlikami`` je prete�no zapisal Matthew Wicks <[email protected]>.

  Temo ,,Pregled razli�ic Unixa`` je prete�no zapisal Pierre (P.) Lewis
  <[email protected]>.

  Kjer je le mogo�e, je na vrhu odgovora naveden avtor posameznega
  odgovora na vpra�anje in datum zadnjega popravka. �al sem s to prakso
  za�el �ele nedavno, zato je veliko podatkov nepopolnih. Bil sem tudi
  brezbri�en do podatkov o avtorjih popravkov odgovorov. Opravi�ujem se
  vsem, ki ste napisali dragocene prispevke, a niste primerno omenjeni.

  Originalni dokument je dostopen v formatu *roff (paketi makro ukazov
  ms in mm). Andrew Cromarty ga je pretvoril v format Texinfo. Marty
  Leisner <[email protected]> je o�istil razli�ico v formatu
  Texinfo.

  Pisci obse�nej�ih prispevkov tega spisa so lahko omenjeni drugje ali
  pa tudi ne, a so:
    * Steve Hayman <[email protected]>
    * Pierre Lewis <[email protected]>
    * Jonathan Kamens <[email protected]>
    * Tom Christiansen <[email protected]>
    * Maarten Litmaath <[email protected]>
    * Guy Harris <[email protected]>

  Dne 26. septembra 1998 s popravki 16. februarja 1999 je Roman Maurer
  <[email protected]> ta spis prevedel v sloven��ino. Hvala
  Ale�u Ko�irju <[email protected]> za �tevilne popravke prevoda!
    _________________________________________________________________


2. Splo�na vpra�anja

2.1 Kaj pomeni �tevilka v oklepajih pri sklicevanju na ,rm(1)` ali ,ctime(3)`?

Subject: When someone refers to 'rn(1)' ...  the number in parentheses mean?
Date: Tue, 13 Dec 1994 16:37:26 -0500

  �tevilka je videti kot neke vrste klic funkcije, a to ni. Te �tevilke
  pomenijo poglavje ,,Priro�nika za Unix`` (angl. ,,Unix manual``), kjer
  najdete primerno dokumentacijo. Napi�ete lahko

man 3 ctime

  in s tem pogledate stran o ,,ctime`` v tretjem poglavju priro�nika.

  Tradicionalna poglavja priro�nika so:

  1
         Ukazi na uporabni�kem nivoju

  2
         Sistemski klici

  3
         Funkcije v knji�nicah

  4
         Naprave in gonilniki naprav

  5
         Datote�ni formati

  6
         Igre

  7
         Razli�ne zadeve - paketi makro ukazov itd.

  8
         Ukazi za vzdr�evanje in tek sistema

  Nekatere razli�ice Unixa uporabljajo ne�tevilska imena razdelkov.
  Xenix, na primer, uporablja ,,C`` za ukaze in ,,S`` za funkcije.
  Nekatere novej�e razli�ice Unixa se razlikujejo in razumejo ukaz v
  obliki ,,man -s# naslov`` namesto ,,man # title``.

  Vsako poglavje ima uvod, ki ga lahko preberete z ukazom

man # intro

  kjer je # �tevilka poglavja.

  �tevilka je v�asih potrebna, da lahko lo�ite med ukazom in funkcijo v
  knji�nici ali sistemskim klicem z enakim imenom. Va� sistem ima na
  primer morda ,,time(1)``, stran referen�nega priro�nika o ukazu ,time`
  za merjenje �asov izvajanja programov, in tudi ,,time(3)``, stran
  referen�nega priro�nika o podprogramu ,time`, s katerim prika�ete
  trenutni �as. Uporabite lahko razli�ici ,,man 1 time`` ali ,,man 3
  time`` in s tem dolo�ite, katera stran priro�nika vas zanima.

  Pogosto boste na�li druge razdelke za lokalne programe ali celo
  podrazdelke zgornjih razdelkov - Ultrix ima med drugim razdelke 3m,
  3n, 3x in 3yp.

2.2 Kaj pomeni {kak�en nerazumljiv ukaz na Unixu}?

Subject: What does {some strange unix command name} stand for?
Date: Thu Mar 18 17:16:55 EST 1993

  awk
         "Aho Weinberger & Kernighan"

         Jezik in program, ki ga interpretira, se imenujeta po
         za�etnicah priimkov njegovih avtorjev, ki so Al Aho, Peter
         Weinberger in Brian Kernighan.

  grep
         "Global Regular Expression Print"

         Izraz grep izhaja iz ukaza za ed, ki je izpisal vse vrstice, ki
         so ustrezale podanemu iskalnemu vzorcu

g/re/p

         kjer pomeni ,,re`` ,,regularni izraz`` (angl. regular
         expression).

  fgrep
         "Fixed GREP"

         fgrep i��e le fiksne vzorce. �rka ,f` ni okraj�ava za ,,fast``
         (slov. ,,hitro``) - pravzaprav je ,,fgrep foobar *.c`` navadno
         po�asnej�i kot ,,egrep foobar *.c`` (Da, to je nekam
         presenetljivo. Poskusite!)

         Fgrep je vseeno uporaben, ko i��ete v datoteki ve�je �tevilo
         iskalnih vzorcev, kot jih prenese egrep.

  egrep
         "Extended GREP"

         egrep uporablja imenitnej�e regularne izraze kot grep. Mnogi
         ljudje vselej uporabljajo egrep, saj uporablja bolj�e algoritme
         kot grep ali fgrep in je navadno najhitrej�i od njih.

  cat
         "CATenate"

         Obrobna angle�ka beseda ,,catenate`` pomeni ,,spenjati (z
         verigo)`` ali ,,povezovati v zaporedja``, kar je to�no to, kar
         naredi ,,cat`` z eno datoteko ali z ve� datotekami. Ne
         zamenjujte ga s C/A/T, (angl. Computer Aided Typesetter, slov.
         ra�unalni�ko podprti pisalni stroj).

  gecos
         "General Electric Comprehensive Operating Supervisor"

         Ko je podjetje General Electric prodalo svojo enoto za velike
         sisteme podjetju Honeywell, je ta izpustil ,,E`` iz ,,GECOS``.

         Datoteka z gesli za Unix ima polje ,,pw_gecos``. To polje je
         resni�ni ostanek zgodnjih �asov. Dennis Ritchie je poro�al:

    V�asih smo poslali tiskalni�ki izhod ali paketna opravila na stroj
    GCOS. Polje gcos v datoteki z gesli je bilo mesto, v katerega smo
    stla�ili podatke za kartico $IDENT. Ni ravno elegantno.

  nroff
         "New ROFF"

  troff
         "Typesetter new ROFF"

         To sta naslednika programa ,,roff``, ki je bil ponovna izvedba
         programa ,,runoff`` s sistema Multics in s katerim ste
         ,,iztirili`` (angl. ,,run off``) dober izvod va�ega dokumenta.

  tee
         T

         Po izrazoslovju vodovodnih in�talaterjev - cepilec pipe v
         obliki �rke T.

  bss
         "Block Started by Symbol"

         Dennis Ritchie pravi:

    Pravzaprav ta akronim (tako kot smo ga vzeli; morda ima druge
    verjetne etimologije) pomeni ,,Blok se je za�el s simbolom`` (angl.
    ,,Block Started by Symbol``). To je bila psevdo-operacija v FAP
    (Fortran Assembly [-hm?] Program), zbirnik za stroje IBM
    704-709-7090-7094. Definiral je svoje oznake in rezerviral prostor
    za dano �tevilo besed. Obstajal je �e psevdo-operator BES, ,,Block
    Ended by Symbol`` (slov. ,,Blok se je kon�al s simbolom``), ki je
    po�el podobno, a tako, da je bila oznaka definirana z zadnjo
    prirejeno besedo + 1. (Na teh strojih so bile fortranske tabele
    shranjene v obratnem vrstnem redu in so bile 1-za�etek.)

    Uporaba je razumno primerna in je podobna kot pri standardnem
    nalagalniku Unixa, kjer prirejeni pomnilnik ni potrebno vstaviti
    dobesedno v objekt, pa� pa je dostopen prek kazalca (angl. ,,the
    space assigned didn't have to be punched literally into the object
    deck but was represented by a count somewhere``).

  biff
         "BIFF"

         Ta ukaz, ki vklopi asinhrono obvestilo o po�ti, je bil
         pravzaprav poimenovan po psu v Berkeleyu. Eric Cooper z
         univerze Carnegie Mellon takole pripoveduje:

    Potrdim lahko izvor imena biff, �e vas zanima. Biff je bilo ime psu
    Heidi Stettner, ko je bila Heidi (in jaz in Bill Joy) �tudentka na
    U. C. Berkeley in so razvijali zgodnje verzije BSD. Biff je bil
    popularen med stanovalci Evans Hall in je bil znan po tem, da je
    vselej lajal na po�tarja. Od tod ime tega ukaza.

  rc (kot v ,,.cshrc`` ali ,,/etc/rc``)
         "RunCom"

         ,,rc`` izhaja iz ,,runcom`` s sistema MIT CTSS pribli�no okrog
         leta 1965. Brian Kernighan & Dennis Ritchie sta takole
         pripovedovala Vicki Brown:

    Obstajal je pripomo�ek, ki je izvedel ukaze, shranjene v datoteki;
    imenoval se je ,,runcom``, okraj�ava za ,,run commands`` (slov.
    po�eni ukaze), in tak�no datoteko smo za�eli klicati ,,neki
    runcom``.

    ,,rc`` v Unixu je ostalina te uporabe.

         ,,rc`` je tudi ime ukazne lupine novega operacijskega sistema
         Plan 9.

  Perl
         "Practical Extraction and Report Language" ali

  Perl
         "Pathologically Eclectic Rubbish Lister"

         Jezik Perl je zelo popularno orodje avtorja Larryja Walla. Je
         prosto dostopno in popolnoma prenosljivo. Uporablja se za
         obdelovanje besedil in delo z datotekami, ter premo��a prepad
         med ukazno lupino in programiranjem v jeziku C (ali med
         preprostim ukazom iz ukazne vrstice in puljenjem svojih las).
         Za nadaljne informacije glejte novi�arsko skupino Useneta
         comp.lang.perl.misc.

  Knjiga ,,Life with Unix`` Dona Libesa vsebuje mnogo ve� tak�nih
  poslastic.

2.3 Kako deluje most med novi�arsko skupino ,,comp.unix.questions`` in
elektronskim seznamom ,,info-unix``?

Subject: How does the gateway between "comp.unix.questions" ... work ?
Date: Thu Mar 18 17:16:55 EST 1993

  Elektronska seznama ,,info-unix`` in ,,unix-wizards`` sta posebni
  po�tni razli�ici skupin comp.unix.questions in comp.unix.wizards. Med
  vsebino elektronskih po�tnih seznamov in novi�arskih skupin ne bi
  smelo biti razlik.

  �e se �elite prijaviti na enega teh seznamov, po�ljite pismo na
  [email protected] ali [email protected]. Ne
  pri�akujte takoj�njega odgovora.

  Tukaj so podrobnosti, zahvaljujo� vzdr�evalcu seznama, Bobu Reschlyju:

 Po�iljanje na seznama info-UNIX in UNIX-wizards

  Vse, kar po�ljete na seznam, se objavi; pisem ne moderiram - BRL
  deluje le kot prepisovalnik. Prispevki naro�nikov z Interneta naj bodo
  poslani na naslov seznama (info-UNIX ali UNIX- wizards); naslova z
  ,-request` sta le za dopisovanje z vzdr�evalcem seznama [mano]. Pisma,
  poslana prek Useneta, naj bodo naslovljene na primerno novi�arsko
  skupino ( comp.unix.questions ali comp.unix.wizards).

  Naro�niki z Interneta dobivajo pisma dveh vrst: posamezna sporo�ila in
  povzetke pisem. Pisma, ki prispejo na BRL prek Interneta in BITNET-a
  (�ez most BITNET-Internet), se takoj razpo�ljejo na vse naslove na
  po�tnem seznamu. Pisma z Useneta se zberejo v povzetke in ti se dnevno
  po�ljejo na naslove �lanov na seznamu.

  Promet z BITNET-a je precej podoben prometu prek Interneta. Glavna
  razlika je, da vzdr�ujem le en naslov za pisma, naslovljena na vse
  naro�nike BITNET-a. Ta naslov ka�e na ve�ji seznam, ki vsebuje
  posamezne naro�nike BITNET-a. Tako mora v vsaki smeri le po eno pismo
  med BITNET-om in Internetom.

  Naro�niki USENET-a vidijo le posamezna pisma. Vsa pisma, odposlana z
  Internetu, se razpo�iljajo na na� stroj z USENET-om. Potem se uvrstijo
  v primerno novi�arsko skupino. �al pri sporo�ilih, ki gredo prek
  mostu, po�iljatelj postane ,,news@brl-adm``. To je trenutno neizbe�ni
  stranski u�inek premostitvenega programja.

  Kar se ti�e publike, USENET ima izjemno veliko bralcev - domnevam, da
  ve� tiso� gostiteljev in na desetine tiso�ev bralcev. Glavni seznam,
  ki ga vzdr�ujemo tu na BRL, poganja okoli 150 vnosov, od katerih jih
  je pribli�no 10% lokalnih redistribucijskih seznamov. Nimam natan�nega
  ob�utka za velikost redistribucije po BITNET-u, a domnevam, da je
  pribli�no enake velikosti in sestave kot glavni seznam. Promet vsebuje
  v povpre�ju od 150 Kb do 400 Kb sporo�il na teden.

2.4 Katere so uporabne knjige o Unixu ali C-ju?

Subject: What are some useful Unix or C books?
Date: Thu Mar 18 17:16:55 EST 1993

  Mitch Wright ([email protected]) vzdr�uje dober seznam knjig o Unixu in
  C-ju, z opisi in z nekaterimi kratkimi pregledi. Trenutno je na
  njegovem seznamu 167 knji�nih naslovov.

  Kopijo tega seznama dobite z anonimnim FTP-ju na naslovu
  ftp://ftp.rahul.net/pub/mitch/YABL/yabl (192.160.13.1). Popravke in
  predloge po�iljajte na [email protected].

  Samuel Ko ([email protected]) vzdr�uje �e en seznam knjig za Unix. Ta seznam
  vsebuje le priporo�ene knjige in je torej kraj�i, knjige pa so
  razvr��ene po kategorijah, kar je morda primernej�e, �e i��ete dolo�en
  tip knjige.

  Kopijo tega seznama dobite na naslovu
  ftp://rtfm.mit.edu/pub/usenet/news.answers/books/unix. Popravke in
  predloge po�iljajte na [email protected].

  �e ne morete uporabiti anonimnega FTP-ja, po�ljite vrstico ,,help`` na
  [email protected] za navodila o prena�anju datotek po elektronski
  po�ti.

2.5 Kaj se je zgodilo s seznamom izgovarjave, ki je bil del tega spisa?

Subject: What happened to the pronunciation list ... ?
Date: Thu Mar 18 17:16:55 EST 1993

  Od nastanka v letu 1989 dalje so originalna angle�ka PZV vklju�evala
  iz�rpen seznam izgovarjave, ki ga je vzdr�eval Maarten Litmaath
  (hvala, Maarten!). Prvi seznam je pripravil Carl Paukstis
  <[email protected]>.

  Seznam se je upokojil, saj njegov naslov ,,Vpra�anja o Unixu`` ne
  ustreza. �e vedno ga lahko najdete kot del �iroko raz�irjene datoteke
  ,,Jargon`` (vzdr�uje jo Eric S. Raymond, <[email protected]>), ki
  je veliko primernej�i forum na temo ,,Kako naj izgovorim /* ?``.

  �e �elite kopijo seznama, se pove�ite z 133.210.4.4, in jo poi��ite v
  imeniku
  ftp://ftp.wg.omron.co.jp/pub/unix-faq/docs/Pronunciation-Guide.
    _________________________________________________________________


3. Relativno osnovna vpra�anja, ki jih navadno spra�ujejo za�etniki

3.1 Kako odstranim datoteko z imenom, ki se za�ne z ,-`?

Subject: How do I remove a file whose name begins with a "-" ?
Date: Thu Mar 18 17:16:55 EST 1993

  Poi��ite tak na�in imenovanja datoteke, da se ne za�ne s pomi�ljajem.
  Najpreprostej�i odgovor je primer

rm ./-imedatoteke

  (seveda predvidevamo, da je ,,-imedatoteke`` v tem primeru v trenutnem
  imeniku).

  Ta na�in izogibanja dvoumnemu ,-` na za�etku imen deluje tudi pri
  drugih ukazih.

  Veliko ukazov, posebej tistih, ki so bili napisani z uporabo rutine
  ,,getopt(3)`` za raz�lembo argumentov, sprejme tudi argument ,,--``,
  ki pomeni ,,to je zadnja izbira, vse po tem ni ve� izbira``. Va�a
  razli�ica rm potemtakem morebiti razume tudi

rm -- -imedatoteke

  Nekatere razli�ice rm, ki ne uporabljajo getopt(), razumejo podobno
  tudi en sam ,,-``, torej lahko poskusite kar z ,,rm - -imedatoteke``.

3.2 Kako odstranim datoteko, ki ima v svojem imenu �udne znake?

Subject: How do I remove a file with funny characters in the filename ?
Date: Thu Mar 18 17:16:55 EST 1993

  �e je ,,�uden znak`` znak ,/`, presko�ite na zadnji del odgovora. �e
  je �uden znak nekaj drugega, na primer presledek ali kontrolni znak
  ali znak s pri�ganim osmim bitom (to so npr. slovenske �rke
  ,,蹾ȩ�``), nadaljujte z branjem.

  Prvi klasi�ni odgovor je uporaba ukaza na na�in

rm -i vzorec*ki*ustreza*le*datoteki*ki*jo*�elite

  Ukaz vpra�a za vsako datoteko, ki ustreza vzorcu, �e jo �elite
  odstraniti. Nasvet morda v va�i ukazni lupini ne bo deloval zaradi
  znakov s pri�ganim osmim bitom, saj ga ukazna lupina lahko odre�e.

  Drugi klasi�ni odgovor je

rm -ri .

  ki vas za vsako datoteko v trenutnem imeniku vpra�a, ali naj jo
  odstrani.

  V angle�kem okolju odgovorite z ,y` pri problemati�ni datoteki in z
  ,n` pri vseh ostalih datotekah. �al to ne deluje pri veliko razli�icah
  rm. Hkrati se bo ukaz izvedel za vse datoteke na vseh podimenikih
  trenutnega imenika, torej boste morda za�asno hoteli te imenike
  narediti nedostopne z ,,chmod a-x``, da vas ne bodo motili.

  Vselej globoko vdihnite in razmislite, kaj po�nete, ter dvakrat
  preverite, kaj ste zapisali v ukazni vrstici, kadar uporabljate
  zastavico ,,-r`` ukaza rm ali znaka * ali ? (angl. wildcard).

  Tretji klasi�ni odgovor je

find . -type f ... -ok rm '{}' \;

  kjer je ,,...`` skupina oznak, ki enoli�no dolo�a ime datoteke. Ena od
  mo�nosti je, da za problemati�no datoteko poi��ete njeno �tevilko
  inode (z uporabo ukaza ,,ls -i .``) in potem uporabite

find . -inum 12345 -ok rm '{}' \;

  ali

find . -inum 12345 -ok mv '{}' novo-ime-datoteke \;

  ,,-ok`` je varnostno preverjanje - program vas bo vpra�al za potrditev
  ukaza, preden ga bo izvedel. Spra�evanju se lahko izognete z uporabo
  ,,-exec``, �e radi �ivite nevarno, ali �e domnevate, da ime datoteke
  vsebuje zaporedje �udnih znakov, ki vam bodo ob izpisu zme�ali zaslon.

  Kaj, �e ime datoteke vsebuje znak ,/`?

  Te datoteke so res posebni primeri in jih lahko ustvari le hro��ata
  koda v jedru (tipi�no jih naredijo implementacije NFS, ki ne po�istijo
  neveljavnih znakov iz imen datotek na oddaljenih strojih). Najprej
  posku�ajte natanko razumeti, zakaj je ta problem tako izjemen.

  Spomnite se, da so imeniki v Unixu preprosto pari imen datotek in
  �tevilk inode. Imenik tipi�no vsebuje podobno informacijo:

ime datoteke  inode

datoteka1     12345
datoteka2.c   12349
datoteka3     12347

  Teoreti�no sta ,/` in ,\0` le dva znaka, ki se ne moreta pojaviti v
  imenu datoteke - znak ,/` zato, ker se uporablja za lo�evanje imenikov
  in datotek, in znak ,\0` zato, ker kon�uje ime datoteke.

  �al nekatere izvedbe omre�nega datote�nega sistema NFS pre�erno
  ustvarjajo datoteke z vklju�enimi nagibnicami kot odgovor na zahteve
  oddaljenih strojev. Na primer, to se lahko zgodi, ko se nekdo na Macu
  ali drugem ne-Unixu odlo�i narediti oddaljeno datoteko NFS na va�em
  Unixu, z datumom v imenu datoteke. Va� imenik na Unixu ima potem v
  sebi tole:

ime datoteke  inode

91/02/07      12357

  Tak�ne datoteke ne bo pobrisalo nobeno zgoraj opisano �aranje z
  ukazoma find in rm, saj morata tako tadva pripomo�ka kot tudi vsi
  drugi programi na Unixu razumeti znak ,/` na obi�ajen na�in.

  Vsak obi�ajen program bo �elel narediti unlink("91/02/07"), kar jedro
  razume kot ,,pobri�i datoteko 07 v podimeniku 02 imenika 91``, toda to
  ni tisto, kar ho�emo - imamo datoteko imenovano ,,91/02/07`` v
  trenutnem imeniku. To je komaj zaznavna, a klju�na razlika.

  Kaj lahko naredite v tem primeru? Najprej se poskusite vrniti na Maca,
  ki je ustvaril ta nev�e�ni vnos, in sku�ajte prepri�ati Maca in va�
  lokalni stre�nik NFS, da datoteko preimenujeta v nekaj, kar ne vsebuje
  nagibnic.

  �e to ne deluje ali morda ni izvedljivo, boste potrebovali pomo�
  va�ega sistemskega upravitelja, ki bo moral poskusiti kaj od
  naslednjega. Uporabite ,,ls -i``, da boste izvedeli �tevilko inode
  nesre�ne datoteke, potem odklopite datote�ni sistem (z umount),
  uporabite ,,clri`` za izbris inodea, in popravite datote�ni sistem s
  ,,fsck`` in s stisnjenimi pestmi. Postopek uni�i podatke o datoteki.
  �e jih �elite obdr�ati, lahko poskusite:
    * ustvarite nov imenik v istem star�evskem imeniku, kot ga ima
      imenik, ki vsebuje datoteko na slabem glasu,
    * iz starega imenika v novega premaknite vse, kar lahko (se pravi
      vse, razen datoteke s slabim imenom),
    * na imeniku z datoteko s slabim imenom napravite ,,ls -id`` , da
      dobite njegovo �tevilko inumber,
    * odklopite datote�ni sistem,
    * uporabite ,,clri`` na imeniku, ki vsebuje sporno datoteko,
    * obnovite datote�ni sistem s ,,fsck``.

  Potem boste datoteko poiskali takole:
    * namestite datote�ni sistem;
    * preimenujte imenik, ki ste ga ustvarili, tako da bo imel enako
      ime, kot stari imenik (saj je stari imenik dokon�no pobrisal
      ,,fsck``);
    * premaknite datoteko iz imenika ,,lost+found`` v imenik s
      primernej�im imenom.

  Alternativa temu pristopu je popravljanje imenika na zahteven na�in z
  brkljanjem po surovem datote�nem sistemu (angl. raw file system).
  Uporabite ,,fsdb``, �e ga imate.

3.3 Kako dobim rekurziven izpis vsebine imenika?

Subject: How do I get a recursive directory listing?
Date: Thu Mar 18 17:16:55 EST 1993

  Nekaj od tega bo naredilo to, kar �elite:

ls -R                   (vse razli�ice ,ls` nimajo ,-R`)
find . -print           (to mora delovati povsod)
du -a .                 (poka�e ime in velikost)

  �e i��ete vzorec z jokerji (angl. wildcard), ki bo ustrezal vsem
  datotekam ,,.c`` v tem imeniku in pod njim, ga ne boste na�li, pa� pa
  lahko uporabite:

% nek-ukaz `find . -name '*.c' -print`

  ,,find`` je zmogljiv program. Pou�ite se o njem.

3.4 Kako lahko v svoj pozivnik vklju�im ime trenutnega imenika?

Subject: How do I get the current directory into my prompt?
Date: Thu Mar 18 17:16:55 EST 1993

  Odvisno od tega, katero ukazno lupino uporabljate. V nekaterih ukaznih
  lupinah je to preprosto, v drugih pa te�ko ali celo nemogo�e.

    * C Shell (csh):
      Vstavite tole v svojo datoteko .cshrc - preuredite spremenljivko
      pozivnika po svojem okusu.

alias setprompt 'set prompt="${cwd}% "'
setprompt           # nastavitev uvodnega pozivnika
alias cd 'chdir \!* && setprompt'
      �e uporabljate pushd in popd, boste potrebovali tudi:

alias pushd 'pushd \!* && setprompt'
alias popd  'popd  \!* && setprompt'
      Nekatere lupine csh nimajo spremenljivke $cwd - namesto tega lahko
      uporabite `pwd`.
      �e �elite dobiti v va� pozivnik le zadnjo komponento va�ega
      trenutnega imenik (,,mail% `` namesto ,,/usr/spool/mail% ``),
      lahko uporabite

alias setprompt 'set prompt="$cwd:t% "'
      Pomen operatorjev && in || v nekaterih starej�ih lupinah csh je
      zamenjan. Poskusite:

false && echo napaka
      �e izpi�e ,,napaka``, morate zamenjati && in || (in dobiti bolj�o
      razli�ico csh.)
    * Bourne Shell (sh):
      �e imate novej�o razli�ico Bournove ukazne lupine (SVR2 ali
      novej�o), lahko uporabite za izdelavo svojega ukaza funkcijo
      lupine, denimo ,,xcd``:

xcd() { cd $* ; PS1="`pwd` $ "; }
      �e imate starej�o Bournovo ukazno lupino, je to zapleteno, a
      mogo�e. Dodajte v va�o datoteko .profile:

LOGIN_SHELL=$$ export LOGIN_SHELL
CMDFILE=/tmp/cd.$$ export CMDFILE
# 16 je SIGURG, izberite signal, ki se navadno ne uporablja
PROMPTSIG=16 export PROMPTSIG
trap '. $CMDFILE' $PROMPTSIG
      in potem postavite ta izvedljivi skript (brez zamikanja!), recimo
      mu ,,xcd`` nekam v va�o pot (PATH).

: xcd directory - change directory and set prompt
: by signalling the login shell to read a command file
cat >${CMDFILE?"not set"} <<EOF
cd $1
PS1="\`pwd\`$ "
EOF
kill -${PROMPTSIG?"not set"} ${LOGIN_SHELL?"not set"}
      Zdaj spreminjajte imeniku z ukazom ,,xcd /nek/imenik``.
    * Korn Shell (ksh):
      Vstavite to v va�o datoteko .profile:

PS1='$PWD $ '
      �e �elite le zadnjo komponento imenika, uporabite

PS1='${PWD##*/} $ '
    * T C shell (tcsh)
      Tcsh je popularna izbolj�ana razli�ica csh z nekaterimi dodatnimi
      vgrajenimi spremenljivkami (in veliko drugih zmo�nosti):

%~          trenutni imenik, uporablja ~ za $HOME
%/          polna pot trenutnega imenika
%c ali %.   kon�na komponenta trenutnega imenika
      tako, da lahko preprosto uka�ete

set prompt='%~ '
    * BASH (FSF-jeva ukazna lupina ,,Bourne Again SHell``)
      Simbol \w v $PS1 daje polno ime poti trenutnega imenika, z uporabo
      ~ za $HOME; \W daje osnovno ime (angl. basename) trenutnega
      imenika. Torej lahko poleg zgornjih re�itev za sh in ksh uporabite
      tudi

PS1='\w $ '
      ali

PS1='\W $ '

3.5 Kako s skriptom ukazne lupine preberem znake s terminala?

Subject: How do I read characters from the terminal in a shell script?
Date: Thu Mar 18 17:16:55 EST 1993

  V sh, uporabite read. Navadno se uporabi podobna zanka:

while read vrstica
do
   echo $vrstica
   ...
done

  V csh uporabite $<, kot tukaj:

while ( 1 )
   set vrstica = "$<"
   if ( "$vrstica" == "" ) break
   ...
end

  �al se v csh ne da razlo�evati med prazno vrstico in koncem datoteke.

  �e uporabljate sh in bi radi prebrali en sam znak s terminala, lahko
  poskusite nekaj podobnega:

echo -n "Vstavite znak: "
stty cbreak         # ali  stty raw
beriznak=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
stty -cbreak

echo
echo "Hvala, da ste vtipkali $beriznak ."

3.6 Kako preimenujem *.foo v *.bar ali spremenim imena datotek v male �rke?

Subject: How do I rename "*.foo" to "*.bar", or change file names to lowercase?
Date: Thu Mar 18 17:16:55 EST 1993

  Zakaj ne deluje ,,mv *.foo *.bar``? Premislite, kako ukazna lupina
  razvija jokerje (angl. wildcards). Niza ,,*.foo`` in ,*.bar`` se
  razvijeta, preden ukaz mv sploh vidi argumente. Odvisno od va�e ukazne
  lupine lahko to spodleti na ve� na�inov. CSH izpi�e ,,No match.``, ker
  ne najde ,,*.bar``. SH izvede ,,mv a.foo b.foo c.foo *.bar``, kar bo
  uspelo le, �e imate en sam imenik, ki ustreza ,,*.bar``, kar je zelo
  neverjetno in skoraj zagotovo ni tisto, kar ste imeli v mislih.

  Odvisno od va�e ukazne lupine lahko to storite z zanko, v kateri
  po�enete ,,mv`` na vsaki posamezni datoteki. �e ima va� sistem
  ,,basename``, lahko uporabite:
    * C Shell:

foreach f ( *.foo )
   set base=`basename $f .foo`
   mv $f $base.bar
end
    * Bourne Shell:

for f in *.foo; do
   base=`basename $f .foo`
   mv $f $base.bar
done

  Nekatere ukazne lupine poznajo posebne mehanizme za zamenjavo
  vrednosti spremenljivk (angl. variable substitution features), tako
  lahko namesto ukaza ,,basename`` uporabite vgrajene mehanizme, kot so:
    * C Shell:

foreach f ( *.foo )
   mv $f $f:r.bar
end
    * Korn Shell:

for f in *.foo; do
   mv $f ${f%foo}bar
done

  �e nimate ukaza ,,basename`` ali bi �eleli preimenovati foo.* v bar.*,
  lahko uporabite kar ,,sed`` ali podobno orodje, da predelate ime
  datoteke, a v splo�nem je ideja zanke enaka. S pripomo�kom ,,sed``
  lahko spremenite imena datotek v ukaze za mv in po�ljete ukaze za
  izvajanje lupini ,,sh``. Poskusite:

ls -d *.foo | sed -e 's/.*/mv & &/' -e 's/foo$/bar/' | sh

  Obstaja program Vladimirja Lanina, imenovan ,,mmv``, ki opravi
  preimenovanje datotek in je bil aprila 1990 objavljen v
  comp.sources.unix (Volume 21, issues 87 and 88). Omogo�a vam uporabo
  na na�in

mmv '*.foo' '=1.bar'

  V ukaznih lupinah zanke, podobne zgornjim, pomagajo pri zamenjavi imen
  datotek iz velikih �rk v male ali obratno. Velike �rke v imenih
  datotek prevedete v male takole:
    * C Shell:

foreach f ( * )
   mv $f `echo $f | tr '[A-Z]' '[a-z]'`
end
    * Bourne Shell:

for f in *; do
   mv $f `echo $f | tr '[A-Z]' '[a-z]'`
done
    * Korn Shell:

typeset -l l
for f in *; do
   l="$f"
   mv $f $l
done

  �e �elite biti posebno temeljiti in pravilno obravnavati datoteke z
  izrojenimi imeni (ki vklju�ujejo presledke ali takoreko� karkoli),
  boste morali uporabiti:
    * Bourne Shell:

for f in *; do
   g=`expr "xxx$f" : 'xxx\(.*\)' | tr '[A-Z]' '[a-z]'`
   mv "$f" "$g"
done
      Ukaz ,expr` vedno izpi�e ime datoteke, tudi, �e je to enako ,-n`,
      ali, �e vsebuje ube�na zaporedja za System V, kakr�no je ,\c`.
      Nekatere razli�ice ukaza ,,tr`` potrebujejo ,[` in ,]`, nekatere
      ju ne. V tem konkretnem primeru ju je povsem ne�kodljivo
      vklju�iti. Razli�ice ukaza tr, ki no�ejo ,,[]`` bodo primerno
      mislile, da bi morale preslikati ,[` v ,[` in ,]` v ,]`.
    * �e imate name��en programski jezik ,,perl``, lahko ta skript
      Larryja Walla za preimenovanje datotek uporabite zelo koristno.
      Uporabljate ga lahko za �irok spekter sprememb imen datotek.

#!/usr/bin/perl
#
# primeri uporabe skripta rename (avtor lwall):
#       rename 's/\.orig$//' *.orig
#       rename 'y/A-Z/a-z/ unless /^Make/' *
#       rename '$_ .= ".bad"' *.f
#       rename 'print "$_: "; s/foo/bar/ if <stdin> =~ /^y/i' *

$op = shift;
for (@ARGV) {
   $was = $_;
   eval $op;
   die $@ if $@;
   rename($was,$_) unless $was eq $_;
}

3.7 Zakaj dobim ob ukazu ,,rsh gostitelj ukaz`` [kak�no �udno sporo�ilo o
napaki]?

Subject: Why do I get [some strange error message] when I "rsh host command" ?
Date: Thu Mar 18 17:16:55 EST 1993

  (Govorimo o programu za oddaljeno ukazno lupino ,,rsh``, ki se ponekod
  imenuje ,,remsh`` ali ,,remote``. Obstaja tudi ukazna lupina z
  omejitvami, imenovana ,,rsh``, kar pa je druga stvar.)

  �e va� oddaljeni ra�un uporablja C-jevsko ukazno lupino (csh), bo
  oddaljeni gostitelj pognal csh, da bi izvedel va� ,ukaz`, in ukazna
  lupina bo prebrala va�o oddaljeno datoteko .cshrc. Morda ta .cshrc
  vsebuje ,,stty``, ,,biff`` ali kak�en drug ukaz, ki ni primeren za
  neinteraktivno ukazno lupino. Nepri�akovan izhod ali sporo�ilo o
  napaki pri teh ukazih lahko zapleteta va�o lupino rsh na �udne na�ine.

  Tukaj je primer. Denimo, da imate v va�i datoteki .cshrc tole:

stty erase ^H
biff y

  Dobili boste �udna sporo�ila, kot je tole:

% rsh nek-stroj date
stty: : Can't assign requested address
Where are you?
Tue Oct  1 09:24:45 EST 1991

  Podobne napake lahko dobite, �e izvajate dolo�ena opravila pripomo�kov
  ,,at`` ali ,,cron``, ki prav tako bereta va�o datoteko .cshrc.

  Na sre�o je popravek preprost. Zelo verjetno je v va�i datoteki
  ,,.cshrc`` na kupe operacij, ki jih preprosto ni vredno izvajati
  drugje kot v interaktivnih ukaznih lupinah (npr. ,,set history=N``).
  Tedaj jih postavite v pogojni blok v va�i ,,.cshrc`` z

if ( $?prompt ) then
       operacije...
endif

  Ker v neinteraktivnih ukaznih lupinah spremenljivka ,,prompt`` ni
  nastavljena, bodo sporne operacije izvedene le v interaktivnih ukaznih
  lupinah.

  Morda boste �eleli premakniti nekatere ukaze v va� prijavni skript
  .login. �e se morajo ti ukazi izvesti le ob va�i prijavi na sistem
  (iskanje nove po�te, neprebranih novi�arskih sporo�il in tako naprej),
  jih je bolje imeti v datoteki .login.

3.8 Kako naj {nastavim spremenljivko okolja, spremenim imenik} znotraj programa
ali skripta ukazne lupine in dose�em, da bo to upo�tevala moja trenutna ukazna
lupina?

Subject: How do I ... and have that change affect my current shell?
Date: Thu Mar 18 17:16:55 EST 1993

  V splo�nem tega ne morete storiti, vsaj ne brez posebnih priprav. Ko
  nek proces ustvari svoj podproces, ta podeduje kopijo spremenljivk
  svojega o�eta (vklju�no s trenutnim imenikom). Otrok lahko spremeni
  podedovane vrednosti, kolikor ho�e, vendar te spremembe ne bodo
  prizadele star�evskega okolja, saj otrok spreminja le svojo kopijo
  originalnih podatkov.

  Mo�ne so nekatere posebne priprave. Va� otro�ki proces lahko izpi�e
  spremenjene spremenljivke, �e je o�e vnaprej pripravljen prebrati ta
  izhod in ga razumeti tako, da ustrezno nastavi svoje lastne
  spremenljivke.

  Ukazne lupine lahko izvajajo skripte tudi v okolju osnovnega procesa,
  namesto v okolju podprocesa, in tedaj bodo spremembe prizadele tudi
  osnovno ukazno lupino.

  Na primer, �e je va�emu skriptu za csh ime ,,mojskript`` in ta
  vsebuje:

cd /zelo/dolga/pot setenv PATH /nekaj:/nekaj-drugega

  ali �e imate podoben skript za Bournovo ali Kornovo ukazno lupino

cd /zelo/dolga/pot PATH=/nekaj:/nekaj-drugega export PATH

  in posku�ate pognati ,,mojskript`` v va�i ukazni lupini, se bo va�a
  ukazna lupina razvejila in pognala lupinski skript kot svoj podproces,
  v katerem bo izvedla ukaz ,,cd``. Ta bo spremenil svoj trenutni
  imenik, in z ukazom ,,setenv`` spremenil svoje okolje, vendar nobeden
  od ukazov ne bo vplival na trenutni imenik ukazne lupine, v katerem
  tipkate (va�e prijavne ukazne lupine, denimo).

  �e �elite prepri�ati va�o prijavno ukazno lupino, da po�ene skript v
  trenutnem procesu (brez razvejevanja), morate uporabiti ukaz ,,.`` (za
  Bournovo ali Kornovo lupino) ali ukaz ,,source`` (za lupino C). Se
  pravi, v Bournovih ali Kornovih ukaznih lupinah napi�ete

mojaskripta

  v lupini C pa

source myscript

  �e je vse, kar posku�ate storiti, le sprememba imenika ali nastavitev
  spremenljivke okolja, bo verjetno najla�je, da uporabite vzdevek
  (angl. alias) v lupini C ali funkcijo v Bournovi/Kornovi ukazni
  lupini. Glejte razdelek ,,Kako lahko dobim trenutni imenik v moj
  pozivnik?`` za nekaj primerov.

  Veliko bolj podroben odgovor je pripravil Thomas Michanek
  <[email protected]>. Dobite ga lahko po FTP-ju z naslova
  ftp://ftp.wg.omron.co.jp/pub/unix-faq/docs/script-vs-env.

3.9 Kako lahko v csh lo�eno preusmerim stdout in stderr?

Subject: How do I redirect stdout and stderr separately in csh?
From: [email protected] (Mark Brader)
Date: Mon, 26 Oct 1992 20:15:00 -0500

  V csh lahko preusmerite stdout z ,,>`` ter hkrati stdout in stderr z
  ,,>&``, a ni neposrednega na�ina le za preusmeritev stderr. Najbolj�e,
  kar lahko naredite, je

( ukaz >datoteka_za_stdout ) >&datoteka_za_stderr

  ki po�ene ,,ukaz`` v ukazni podlupini; stdout se preusmeri znotraj
  podlupine v datoteko ,,datoteka_za_stdout``, stdout in stderr
  podlupine pa se skupaj preusmerita v datoteko ,,datoteka_za_stderr``,
  toda na tej to�ki je stdout �e preusmerjen, tako da v datoteki
  ,,datoteka_za_stderr`` kon�a pravzaprav le stderr.

  �e �elite le prepre�iti preusmeritev stdout, tedaj to za vas stori sh:

sh -c 'ukaz 2>datoteka_za_stderr'

3.10 Kako znotraj .cshrc ugotovim, ali sem prijavna ukazna lupina?

Subject: How do I tell inside .cshrc if I'm a login shell?
Date: Thu Mar 18 17:16:55 EST 1993

  Ko ljudje govorijo tako, pravzaprav s tem mislijo nekaj od
  naslednjega:
    * Kako lahko ugotovim, ali gre za interaktivno ukazno lupino? ali pa
    * Kako lahko ugotovim, ali gre za najvi�je nivojsko ukazno lupino?

  Morda lahko ugotovite, ali je va�a ukazna lupina resni�no prijavna
  lupina (se pravi, bo prebrala ,,.login`` potem, ko bo opravila z
  ,,.cshrc``) tako, da zapravljate �as s ,,ps`` in ,,$$``. Prijavne
  lupine imajo v splo�nem imena, ki se za�nejo s ,-`. �e vas v resnici
  zanimata drugi dve vpra�anji, je tukaj na�in organizacije va�e
  datoteke .cshrc, da to izveste.
    _________________________________________________________________

if (! $?CSHLEVEL) then
       #
       # To je "najvi�jenivojska" ukazna lupina,
       # morda prijavna lupina, morda lupina, pognana z
       # 'rsh stroj nek-ukaz'
       # Tukaj moramo nastaviti pot PATH in vse drugo,
       # kar �elimo imeti v vsaki od na�ih ukaznih lupin.
       #
       setenv      CSHLEVEL        0
       set home = ~username        # za vsak slu�aj
       source ~/.env               # nastavimo okolje
else
       #
       # Ta lupina je otrok ene od drugih ukaznih lupin, zato
       # nam ni treba ponovno nastaviti vseh spremenljivk okolja.
       #
       set tmp = $CSHLEVEL
       @ tmp++
       setenv      CSHLEVEL        $tmp
endif

# Izhod iz .cshrc, �e ni interaktivna, npr. pod rsh.
if (! $?prompt) exit

# Tukaj smemo nastaviti pozivnik ali vzdevke, ki bi bili
# uporabni le za interaktivne ukazne lupine.

source ~/.aliases
    _________________________________________________________________

3.11 Kako v lupini naredim ujemalni vzorec, ki se ujema z vsemi datotekami,
razen z ,,.`` in ,,..``?

Subject: How do I construct a ... matches all files except "." and ".." ?
Date: Thu Mar 18 17:16:55 EST 1993

  In vi ste mislili, da bo to preprosto ...

  *
         Ustreza vsem datotekam, ki se ne za�enjajo z ,,.``;

  .*
         Ustreza vsem datotekam, ki se za�enjajo z ,,.``, toda to
         vklju�uje posebna vnosa ,,.`` in ,,..``, ki ju pogosto ne
         �elite;

  .[!.]*
         (Le novej�e ukazne lupine; nekatere lupine uporabljajo ,,^``
         namesto ,,!``; ukazne lupine POSIX-a morajo sprejeti ,,!``, a
         lahko sprejmejo tudi ,,^``; prenosljive aplikacije ne bi smele
         uporabljati necitiranega ,,^`` takoj za ,,[``.)

         Ustreza vsem datotekam, ki se za�nejo z ,,.`` in jim sledi
         ne-,,.``; �al bo to spregledalo ,,..foo``;

  .??*
         Ustreza datotekam, ki se za�nejo z ,,.`` in so dolge vsaj tri
         znake. To se prikupno izogne ,,.`` in ,,..``, a tudi spregleda
         ,,.a``.

  �e �elite varno ujemanje z vsemi datotekami, razen ,,.`` in ,,..``,
  morate uporabiti 3 vzorce (�e nimate imen datotek, kot je ,,.a``,
  lahko izpustite prvega):

[!.]* .??* *

  Alternativno lahko zaposlite zunanji program ali dva in uporabite
  substitucijo znotraj narekovaja (angl. backquote substitution). To
  (ali ,ls -A` na nekaterih razli�icah Unixa) je precej dobro:

`ls -a | sed -e '/^\.$/d' -e '/^\.\.$/d'`

  a tudi to bo zamo�ilo pri datotekah z znaki za novo vrsto, znaki IFS
  ali jokerjih v njihovih imenih.

  V ksh lahko uporabite:

!(.|) *

3.12 Kako poi��em zadnji argument v skriptu Bournove ukazne lupine?

Subject: How do I find the last argument in a Bourne shell script?
Date: Thu Mar 18 17:16:55 EST 1993

  Odgovor sta prispevala:
    * Martin Weitzel <@mikros.systemware.de:[email protected]>
    * Maarten Litmaath <[email protected]>

  �e ste prepri�ani, da argumentov ni ve� kot devet, potem lahko
  uporabite:

eval zadnji=\${$#}

  V ukaznih lupinah, zdru�ljivih s standardom POSIX, to deluje za vsako
  �tevilo argumentov. Vselej deluje tudi:

for zadnji
do
       :
done

  Primer se posplo�i takole:

for i
do
       predpredzadnji=$predzadnji
       predzadnji=$zadnji
       zadnji=$i
done

  Zdaj pa denimo, da �elite odstraniti zadnji argument iz seznama ali
  obrniti seznam argumentov ali za vsak N dostopati neposredno do N-tega
  argumenta. Tukaj navajamo osnovni primer, kako to storiti, in
  uporabimo le vgrajene konstrukte ukazne lupine, ne da bi ustvarjali
  dodatne podprocese:

t0= u0= ostanek='1 2 3 4 5 6 7 8 9' argv=

for h in '' $ostanek
do
       for t in "$t0" $ostanek
       do
               for u in $u0 $ostanek
               do
                       case $# in
                       0)
                               break 3
                       esac
                       eval argv$h$t$u=\$1
                       argv="$argv \"\$argv$h$t$u\""   # (1)
                       shift
               done
               u0=0
       done
       t0=0
done

# zdaj obnovimo argumente
eval set x "$argv"                                      # (2)
shift

  Ta primer deluje za prvih 999 argumentov. Dovolj? Dobro poglejte
  vrstici, ozna�eni z (1) in (2) in se prepri�ajte, da se originalni
  argumenti res obnovijo, ne glede na to, katere �udne znake vsebujejo!

  N-ti argument lahko zdaj poi��ete takole:

eval argN=\$argv$N

  �e �elite obrniti argumente, morate spremeniti vrstico, ozna�eno z
  (1),

argv="\"\$argv$h$t$u\" $argv"

  Kako odstranite zadnji argument, vam prepu��amo za nalogo.

  �e dovoljujete tudi podprocese, ki morda izvajajo nevgrajene ukaze,
  lahko spremenljivke ,argvN` dolo�ite preprosteje:

N=1

for i
do
       eval argv$N=\$i
       N=`expr $N + 1`
done

  Za obra�anje argumentov obstaja �e preprostej�a metoda, ki niti ne
  ustvarja podprocesov. Ta pristop lahko uporabite tudi, ko �elite
  pobrisati npr. zadnji argument, a v tem primeru se ne morete ve�
  sklicevati neposredno na N-ti argument, saj so spremenljivke ,argvN`
  nastavljene v obratnem vrstnem redu:

argv=

for i
do
       eval argv$#=\$i
       argv="\"\$argv$#\" $argv"
       shift
done

eval set x "$argv"
shift

3.13 Kaj je narobe, �e imam ,.` v svoji poti $PATH?

Subject: What's wrong with having '.' in your $PATH ?
Date: Thu Mar 18 17:16:55 EST 1993

  Malce ozadja: spremenljivka okolja PATH je seznam imenikov, lo�enih z
  dvopi�ji. Ko vpi�ete ukaz brez jasno dolo�ene poti (npr. napi�ete
  ,,ls`` in ne ,,/bin/ls``), va�a ukazna lupina i��e izvedljivo datoteko
  s tem imenom po vseh imenikih, na�tetih v seznamu PATH, lepo po vrsti,
  in izvede prvi program, ki ga najde.

  Eden od imenikov v seznamu PATH je lahko tudi trenutni imenik ,,.``.
  Kot znak za trenutni imenik v seznamu PATH lahko uporabite tudi prazni
  imenik. Ta dva na�ina ozna�evanja sta ekvivalentna:
    * za uporabnike csh:

setenv PATH :/usr/ucb:/bin:/usr/bin
setenv PATH .:/usr/ucb:/bin:/usr/bin
    * za uporabnike sh ali ksh:

PATH=:/usr/ucb:/bin:/usr/bin export PATH
PATH=.:/usr/ucb:/bin:/usr/bin export PATH

  Posestvovanje ,,.`` nekje v PATH je udobno - za poganjanje programov v
  trenutnem imeniku lahko namesto ,,./a.out`` napi�ete ,,a.out``. A
  obstaja kavelj.

  Premislite, kaj se zgodi v primeru, da je ,,.`` prvi vnos v seznamu
  PATH. Denimo, da je va� trenutni imenik javno dostopen za pisanje, na
  primer ,,/tmp``. �e je tam slu�ajno program, imenovan ,,/tmp/ls``, ki
  ga je tam pustil kak drug uporabnik, ter vi napi�ete ,,ls`` (namesto,
  da bi, seveda, pognali obi�ajen program ,,/bin/ls``), bo va�a ukazna
  lupina pognala ,,./ls``, program tistega drugega uporabnika. Odve� je
  napisati, da vas lahko poganjanje neznanega programa, kot je ta,
  nadvse preseneti.

  Bolje je postaviti oznako za trenutni imenik ,,.`` na konec PATH:

setenv PATH /usr/ucb:/bin:/usr/bin:.

  �e ste zdaj v imeniku /tmp in napi�ete ,,ls``, bo ukazna lupina
  najprej preiskala /usr/ucb, /bin in /usr/bin za program, imenovan
  ,,ls``, preden bo pogledala v ,,.``, kar daje manj mo�nosti, da bi
  nehote pognali program ,,ls`` drugega uporabnika. Tudi to ni povsem
  varno - �e ste neroden strojepisec in nekega dne napi�ete ,,sl -l``
  namesto ,,ls -l``, tvegate, da boste pognali ,,./sl``, �e ta obstaja.
  Kak ,,bister`` programer lahko ra�una na pogoste tipkarske napake in
  pu��a programe s takimi imeni raztrosene po javnih imenikih. Pazite!

  Veliko izku�enih uporabnikov Unixa shaja povsem dobro, ne da bi sploh
  imeli ,,.`` vklju�en v PATH:

setenv PATH /usr/ucb:/bin:/usr/bin

  �e naredite to, boste morali za zagon programov vselej pisati
  ,,./program`` namesto program, a pove�anje varnosti je verjetno vredno
  tega truda.

3.14 Kako lahko iz skripta ukazne lupine zapiskam na terminalu?

Subject: How do I ring the terminal bell during a shell script?
From: [email protected] (Uwe Waldmann)
Date: Fri, 30 Apr 93 16:33:00 +0200

  Odgovor je odvisen od razli�ice va�ega Unixa (ali raje od vrste
  programa ,,echo``, ki je na voljo na va�em stroju).

  BSD-jevski ,,echo`` uporablja izbiro ,,-n`` za prepre�itev izpisa
  kon�nega znaka za konec vrstice (angl. final newline) in ne razume
  osmi�kega zapisa \nnn. Ukaz se torej glasi

echo -n '^G'

  kjer ^G pomeni dobesedni znak BEL (vstavite ga lahko v Emacsu s
  kombinacijo ,,Ctrl-Q Ctrl-G`` ali v vi z uporabo ,,Ctrl-V Ctrl-G``).

  Na Unixih SysV ukaz ,,echo`` razume zapis \nnn in uporablja \c za
  prepre�itev izpisa kon�nega znaka za konec vrstice, torej je odgovor:

echo '\007\c'

3.15 Zakaj ne morem uporabiti programa ,,talk`` za pogovor s prijateljem na
stroju X?

Subject: Why can't I use "talk" to talk with my friend on machine X?
From: [email protected] (Ted Timar)
Date: Thu Mar 18 17:16:55 EST 1993

  Unix ima tri raz�irjene programe ,,talk`` in nobeden od njih se ne zna
  pogovoriti z ostalima. ,,Stari`` talk vklju�uje prva dva tipa. Ta
  razli�ica (pogosto imenovana otalk) pri pogovoru med stroji ni
  upo�tevala vrstnega reda bytov. Zaradi tega se razli�ica otalk za Vax
  ni mogla pogovarjati z razli�ico otalk za Sun. Te razli�ice talk-a
  uporabljajo vrata 517.

  Okoli leta 1987 se je ve�ina proizvajalcev (razen Suna, ki je
  potreboval �est let ve� od svojih tekmecev) dogovorila o standardu za
  novi program talk (pogosto imenovan ntalk), ki ve za omre�ni vrstni
  red bytov. Ta talk deluje med vsemi stroji, ki ga podpirajo. Ta
  razli�ica talk-a uporablja vrata 518.

  Dandanes obstaja nekaj programov talk, ki hkrati govorijo ntalk in eno
  od razli�ic otalk. Najbolj znan med njimi se imenuje ,,ytalk``.

3.16 Zakaj da koledar napa�en izpis?

Subject: Why does calendar produce the wrong output?
From: [email protected] (Ted Timar)
Date: Thu Sep  8 09:45:46 EDT 1994

  Pogosto ljudje ugotovijo, da izhod Unixovega koledarskega programa
  ,,cal`` ne ustreza njihovim pri�akovanjem.

  Koledar za september 1752 je zelo �uden:

  September 1752
S  M Tu  W Th  F  S
      1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

  To je mesec, v katerem so ZDA (pravzaprav celoten Britanski Imperij)
  zamenjale julijanski koledar z gregorijanskim.

  Drug pogost problem, ki ga imajo ljudje s koledarskim programom, je,
  da mu podajajo argumente kot je ,,cal 9 94``. To izpi�e koledar za
  september leta 94, ne pa leta 1994.
    _________________________________________________________________


4. Vmesna vpra�anja

4.1 Kako lahko ugotovim �as, ko je bila datoteka ustvarjena?

Date: Thu Mar 18 17:16:55 EST 1993

  Ne morete ga - nikjer se ne shrani. Datoteke imajo podatke o �asu
  zadnje spremembe (poka�e ga ,,ls -l``), �asu zadnjega dostopa (poka�e
  ga ,, ls -lu``) in �asu zadnje spremembe inode (poka�e ga ,,ls -lc``).
  Zadnji se pogosto imenuje ,,�as ustvarjenja`` - celo v nekaterih
  straneh referen�nega priro�nika (za man) - a to je narobe; spremeni se
  tudi z operacijami kot so mv, ln, chmod, chown in chgrp.

  Pojasnila so dostopna v poglavju referen�nega priro�nika o stat(2).

4.2 Kako lahko uporabim rsh, ne da bi rsh po�akal konec oddaljenega ukaza?

Subject: How do I use "rsh" without having the rsh hang around ... ?
Date: Thu Mar 18 17:16:55 EST 1993

  (Glejte odgovor na vpra�anje ,,Zakaj dobim ob ukazu rsh gostitelj ukaz
  {kak�no �udno sporo�ilo o napaki}?``, o katerem ,,rsh`` govorimo.)

  O�itni odgovori odpovejo:

rsh stroj ukaz &

  ali

rsh stroj 'ukaz &'

  Na primer, poskusite narediti

rsh stroj 'sleep 60 &'

  in videli boste, da rsh ne bo takoj vrnil ukazne vrstice. Po�akal bo
  60 sekund, dokler se ne bo oddaljeni ukaz ,,sleep`` izvedel do konca,
  �eprav se ukaz na oddaljenem stroju po�ene v ozadju. Kako torej
  pripravite rsh do tega, da kon�a z delom takoj, ko za�ne te�i sleep?

  Re�itev - �e uporabljate na oddaljenem stroju csh:

rsh machine -n 'command >&/dev/null </dev/null &'

  �e na oddaljenem stroju uporabljate sh:

rsh machine -n 'command >/dev/null 2>&1 </dev/null &'

  Zakaj? ,,-n`` pove�e standardni vhod ukaza rsh na /dev/null, torej
  lahko po�enete celotni ukaz rsh v ozadju na lokalnem stroju. Torej ima
  ,,-n`` ekvivalenten pomen, kot da bi �e enkrat dolo�ili ,,<
  /dev/null``. �e ve�, preusmeritve vhoda in izhoda na oddaljenem stroju
  (znotraj enojnih narekovajev) zagotavljajo, da rsh misli, da se seja
  lahko prekine (ker ni ve� toka podatkov).

  Opomba: Datoteko, na katero ali s katere preusmerjate na oddaljenem
  ra�unalniku ni nujno /dev/null; katerakoli datoteka bo v redu.

  V veliko primerih razli�ni deli tega zapletenega ukaza niso potrebni.

4.3 Kako lahko skraj�am datoteko?

Subject: How do I truncate a file?
Date: Mon, 27 Mar 1995 18:09:10 -0500

  Funkcija BSD-ja ftruncate() nastavi dol�ino datoteke. (Toda vse
  razli�ice se ne obna�ajo enako.) Ka�e, da tudi druge razli�ice Unixa
  podpirajo neke vrste kraj�anje.

  Obstajajo tri znana obna�anja funkcije ftruncate v sistemih, ki jo
  podpirajo:
    * BSD 4.2
         + Ultrix, SGI, LynxOS
         + kraj�anje ne pove�a datoteke
         + kraj�anje ne premika datote�nega kazalca
    * BSD 4.3
         + SunOS, Solaris, OSF/1, HP/UX, Amiga
         + kraj�anje lahko pove�a datoteko
         + kraj�anje ne premika datote�nega kazalca
    * Cray
         + UniCOS 7, UniCOS 8
         + kraj�anje ne pove�a datoteke
         + kraj�anje spremeni datote�ni kazalec

  Ostali sistemi pridejo v �tirih mo�nostih:
    * F_CHSIZE
         + le SCO
         + nekateri sistemi definirajo izraz F_CHSIZE, a ga ne podpirajo
         + obna�a se kot BSD 4.3
    * F_FREESP
         + le Interative Unix
         + nekateri sistemi (npr. Interative Unix) definirajo izraz
           F_FREESP, a ga ne podpirajo
         + obna�a se kot BSD 4.3
    * chsize()
         + QNX in SCO
         + nekateri sistemi (npr. Interative Unix) imajo funkcijo
           chsize(), a je ne podpirajo
         + obna�a se kot BSD 4.3
    * ni�
         + ni znanih sistemov
         + tukaj bodo sistemi, ki sploh ne podpirajo truncate

  Moderatorjevo sporo�ilo: Spodnje funkcije sem posnel nekaj let nazaj.
  Ne morem ve� ugotoviti prvotnega pisca. S. Spencer Sun
  <[email protected]> je tudi prispeval verzijo za F_FREESP.

  Sledijo funkcije za neavtohtono funkcijo ftruncate.
    _________________________________________________________________

/* Emulacije ftruncate(), ki delujejo na nekaterih Systemih V.
  Ta datoteka je v javni lasti. */

#include
#include

#ifdef F_CHSIZE

int
ftruncate (fd, length)
    int fd;
    off_t length;
{
 return fcntl (fd, F_CHSIZE, length);
}
#else
#ifdef F_FREESP
/* Naslednjo funkcijo je napisal
  [email protected] (William Kucharski) */

#include
#include
#include

int
ftruncate (fd, length)
    int fd;
    off_t length;
{
 struct flock fl;
 struct stat filebuf;

 if (fstat (fd, &filebuf) < 0)
   return -1;

 if (filebuf.st_size < length)
   {
     /* Extend file length. */
     if (lseek (fd, (length - 1), SEEK_SET) < 0)
       return -1;

     /* Write a "0" byte. */
     if (write (fd, "", 1) != 1)
       return -1;
   }
 else
   {
     /* Truncate length. */
     fl.l_whence = 0;
     fl.l_len = 0;
     fl.l_start = length;
     fl.l_type = F_WRLCK;      /* Zapi�i klju�avnico na prostor datoteke. */

     /* To se zana�a na NEDOKUMENTIRAN argument F_FREESP funkcije
        fcntl, ki skraj�a datoteko tako, da se kon�a na polo�aju,
        ki ga dolo�a fl.l_start.
        Se manj�a �udesa nikoli ne bodo kon�ala? */
     if (fcntl (fd, F_FREESP, &fl) < 0)
       return -1;
   }

 return 0;
}
#else
int
ftruncate (fd, length)
    int fd;
    off_t length;
{
 return chsize (fd, length);
}
#endif
#endif
    _________________________________________________________________

4.4 Zakaj simbol ,,{}`` ukaza find ne naredi to, kar �elim?

Subject: Why doesn't find's "{}" symbol do what I want?
Date: Thu Mar 18 17:16:55 EST 1993

  Ukaz find ima izbiro -exec, ki izvede podani ukaz na vseh izbranih
  datotekah. Ukaz find zamenja vse nize ,,{}``, ki jih vidi v ukazni
  vrstici, z imenom datoteke, ki jo trenutno obdeluje.

  Tako lahko lepega dne poskusiti uporabiti find, da bi pognali ukaz na
  vsaki datoteki, imenik po imenik. Poskusite lahko tole:

find /pot -type d -exec ukaz {}/\* \;

  upajo�, da bo find izvajal ukaze takole:

ukaz imenik1/*
ukaz imenik2/*
..

  �al find razvije simbol ,,{}`` le, ko nastopa sam. Vse drugo, kot na
  primer ,,{}/*`` bo find pustil pri miru, torej bo namesto �elenega
  dejanja izvedel

ukaz {}/*
ukaz {}/*
..

  enkrat za vsak imenik. To je lahko hro��, lahko je odlika, a shajati
  moramo s takim vedenjem.

  Kako se mu izognemo? En na�in je s trivialnim kratkim skriptom v
  ukazni lupini, denimo ,,./naredi``, ki vsebuje le

ukaz "$1"/*

  Potem lahko uporabljate

find /pot -type d -exec ./naredi {} \;

  Ali, �e se �elite izogniti skriptu ,,./naredi``, lahko uporabite

find /pot -type d -exec sh -c 'ukaz $0/*' {} \;

  (To deluje, ker se znotraj ,ukaza` ,,sh -c 'ukaz' A B C ...``, $0
  razvije v A, $1 v B, in tako naprej.)

  Ali pa uporabite trik sestavljanja ukaza s pripomo�kom sed:

find /pot -type d -print | sed 's:.*:ukaz &/*:' | sh

  �e na vsak na�in �elite zmanj�ati �tevilo klicev ukaza ,,ukaz``, lahko
  pogledate, �e ima va� sistem ukaz xargs. Ukaz xargs prebere argumente
  po vrsticah s standardnega vhoda in jih zbere, kolikor le lahko, v eno
  samo ukazno vrstico. Uporabite lahko torej

find /pot -print | xargs ukaz

  kar bo pognalo enkrat ali ve�krat

ukaz datoteka1 datoteka2 datoteka3 imenik1/datoteka1 imenik1/datoteka2

  �al to ni popolnoma robustna ali varna re�itev. Xargs pri�akuje, da se
  vhodne vrstice kon�ajo z znakom za novo vrsto (angl. newline), zato se
  bo zmedel ob datotekah, poimenovanih s �udnimi znaki, kakr�ni so znaki
  za novo vrsto.

4.5 Kako lahko za��itim simboli�ne povezave?

Subject: How do I set the permissions on a symbolic link?
Date: Thu Mar 18 17:16:55 EST 1993

  Za��ite (angl. permissions, dovolilnice tipa -rw-r--r-) pri
  simboli�nih povezavah pravzaprav ne pomenijo ni�esar. Edina
  dovoljenja, ki �tejejo, so za��ite datotek, na katere ka�ejo povezave.

4.6 Kako lahko ,,obnovim`` pobrisano datoteko?

Subject: How do I "undelete" a file?
Date: Thu Mar 18 17:16:55 EST 1993

  Neko� boste po pomoti napisali nekaj kot ,,rm * .foo`` in ugotovili,
  da ste pravkar pobrisali ,,*`` namesto ,,*.foo``. Mislite si, da je to
  obred minljivosti.

  Seveda bi moral vsak spodoben upravitelj sistema redno delati
  varnostne kopije. Preverite pri svojem upravitelju, �e je na voljo
  nedavna varnostna kopija va�e datoteke. �e te ni, berite naprej.

  Pri vseh okoli��inah ko enkrat pobri�ete datoteko z ukazom ,,rm``, te
  ni ve�. Ko na datoteki uporabite ukaz ,,rm``, sistem popolnoma pozabi,
  kateri bloki, razsejani po disku, so bili del va�e datoteke. �e huje -
  bloki pravkar pobrisane datoteke bodo prvi uporabljeni in prepisani,
  ko bo sistem potreboval ve� diskovnega prostora. Vendar nikoli ne
  recite nikoli. Teoreti�no je mogo�e vrniti del�ke podatkov, �e takoj
  po ukazu rm zaustavite sistem (angl. shut down). A tedaj raje imejte
  pri roki zelo �arovni�ki tip osebe, ki ima na voljo dolge ure ali
  dneve, da vam obnovi pobrisano.

  Ko po pomoti pobri�ete datoteko z rm, bo prvi nasvet, da naredite
  vzdevek v ukazni lupini ali pa proceduro, ki bo spremenila ukaz ,,rm``
  tako, da boste datoteko namesto pobrisali, raje prestavili v ko� za
  smeti. Tako lahko datoteke obnovite, �e napravite napako, a morate
  ob�asno prazniti ko� za smeti. Dve opombi: prvi�, splo�no mnenje je,
  da je to slaba ideja. Na novo lastnost ukaza se boste vselej zana�ali
  in ko se boste zna�li na obi�ajnem sistemu, kjer ukaz ,,rm`` zares
  izvede ,,rm``, boste pri�li v te�ave. Drugi�, verjetno boste
  ugotovili, da je ob vsej zme�njavi z diskovnim prostorom in �asom,
  porabljenim za vzdr�evanje ko�a za smeti, vseeno la�je malo bolj
  paziti pri uporabi ukaza ,,rm``. Za za�etnike zado��a, da si v va�em
  priro�niku ogledate izbiro ,,-i`` ukaza ,,rm``.

  �e ste �e vedno pogumni, potem je tukaj mo�en preprost odgovor.
  Naredite si ukaz ,,can``, ki bo premikal datoteke v imenik-smetnjak
  trashcan. V csh(1) lahko postavite naslednje ukaze v datoteko
  ,,.login`` v va�em doma�em imeniku:

alias can       'mv \!* ~/.trashcan'       # vrzi datoteko/e v ko�
alias mtcan     'rm -f ~/.trashcan/*'      # nepovratno izprazni ko�
if ( ! -d ~/.trashcan ) mkdir ~/.trashcan  # zagotovi obstoj ko�a

  Morda boste tudi �eleli postaviti:

rm -f ~/.trashcan/*

  v datoteko ,,.logout`` v va�em doma�em imeniku, da boste samodejno
  izpraznili ko� vselej, ko se odjavite. (Razli�ici za ukazni lupini sh
  in ksh sta prepu��eni bralcu kot vaja.)

  Pri projektu Athena na MIT-u je nastal obse�en paket za
  brisanje/vrnitev/izbris/�i��enje, ki lahko slu�i kot popolno
  nadomestilo za rm, vendar dopu��a obnovitev datotek. Ta paket je bil
  objavljen v comp.sources.misc (volume 17, issue 023-026)

4.7 Kako lahko proces ugotovi, ali te�e v ozadju?

Subject: How can a process detect if it's running in the background?
Date: Thu Mar 18 17:16:55 EST 1993

  Najprej raz�istimo: �elite vedeti, ali te�ete v ozadju ali �elite
  vedeti, ali te�ete interaktivno? �e se odlo�ate, ali boste izpisovali
  pozivnik in podobno, je to verjetno bolj�i kriterij. Poglejte, �e je
  standardni vhod terminal:

sh:  if [ -t 0 ]; then ... fi
C:  if(isatty(0)) { ... }

  V splo�nem ne morete preveriti, ali te�ete v ozadju. Osnovni problem
  je, da imajo razli�ne ukazne lupine in razli�ne razli�ice Unixa
  razli�ne predstave o tem, kaj pomenita ,,ospredje`` in ,,ozadje`` - in
  na najbolj pogostem tipu sistema z dobro raz�i��enima pojmoma se lahko
  programi poljubno premikajo med ospredjem in ozadjem!

  Sistemi Unix brez nadzora opravil tipi�no postavijo proces v ozadje
  tako, da ignorirajo SIGINT in SIGQUIT ter preusmerijo standardni vhod
  na ,,/dev/null``; to naredi ukazna lupina.

  Ukazne lupine, ki podpirajo nadzor opravil (angl. job control), na
  sistemih Unix, ki podpirajo nadzor opravil, postavijo proces v ozadje
  tako, da mu priredijo identifikacijsko �tevilko ID razli�no od skupine
  procesov, ki pripadajo terminalu. V ospredje ga premaknejo tako, da
  popravijo skupinsko procesno �tevilko terminala (angl. terminal's
  process group ID) s procesno �tevilko. Ukazne lupine, ki ne podpirajo
  nadzora opravil, na sistemih Unix, ki podpirajo nadzor opravil,
  tipi�no naredijo isto kot ukazne lupine na sistemih, ki ne podpirajo
  nadzora opravil.

4.8 Zakaj preusmerjanje v zanki ne dela, kot bi moralo? (Bournova lupina)

Subject: Why doesn't redirecting a loop work as intended?  (Bourne shell)
Date: Thu Mar 18 17:16:55 EST 1993

  Oglejte si naslednji primer:

foo=bar

while read line
do
       # naredi nekaj z $line
       foo=bletch
done < /etc/passwd

echo "foo je zdaj: $foo"

  Kljub prireditvi ,,foo=bletch`` bo to izpisalo ,,foo je zdaj: bar`` v
  mnogih izvedbah Bournove ukazne lupine. Zakaj? Zaradi naslednje,
  pogosto nedokumentirane lastnosti zgodovinskih Bournovih ukaznih
  lupin: preusmerjanje kontrolne strukture (kot je zanka ali stavek
  ,,if``) naredi ukazno podlupino, v kateri se struktura izvede;
  spremenljivke, nastavljene v podlupini (kot priredba ,,foo=bletch``),
  seveda ne vplivajo na trenutno lupino.

  Odbor za standardizacijo ukaznih lupin in vmesnika orodij POSIX 1003.2
  prepoveduje zgornje neutemeljeno ravnanje, se pravi, na sistemu,
  usklajenemu s P1003.2, v Bournovih ukaznih lupinah zgornji primer
  izpi�e ,,foo je zdaj: bletch``.

  V zgodovinskih (in s P1003.2 usklajenih) izvedbah uporabite naslednji
  trik, da se izognete te�avam s preusmerjanjem:

foo=bar

# datote�ni deskriptor 9 naj postane duplikat datote�nega deskriptorja 0 (stdin
);
# potem pove�i stdin s /etc/passwd; originalni stdin smo si zdaj
# ,zapomnili` v datote�nem deskriptorju 9; glej dup(2) in sh(1)
exec 9<&0 < /etc/passwd

while read line
do
       # naredi nekaj z $line
       foo=bletch
done

# naj bo stdin duplikat datote�nega deskriptorja 9, se pravi,
# spet ga pove�emo z originalnim stdin; zatem zapremo deskriptor 9
exec 0<&9 9<&-

echo "foo je zdaj: $foo"

  To bi moralo vselej izpisati ,,foo je zdaj; bletch``. Prav, vzemite
  naslednji primer:

foo=bar

echo bletch | read foo

echo "foo je zdaj: $foo"

  To bo izpisalo ,,foo je zdaj: bar`` v veliko izvedbah in ,,foo je
  zdaj: bletch`` v nekaterih drugih. Zakaj? V splo�nem se vsak del
  cevovoda izvede v drugi ukazni podlupini; v nekaterih izvedbah pa je
  zadnji ukaz v cevovodu izjema: �e je to vgrajeni ukaz, kakr�en je
  ,,read``, ga bo izvedla trenutna lupina, sicer pa bo izveden v
  podlupini.

  POSIX 1003.2 dovoljuje oba na�ina, zaradi �esar se prenosljivi skripti
  ne morejo zana�ati na nobenega od njiju.

4.9 Kako po�enem passwd, ftp, telnet, tip in druge interaktivne programe v
skriptu ukazne lupine v ozadju?

Subject: How do I run ... interactive programs from a shell script ... ?
Date: Thu Mar 18 17:16:55 EST 1993

  Ti programi pri�akujejo terminalski vmesnik. Ukazne lupine jim ga
  posebej ne priskrbijo. Torej, ti programi ne morejo biti
  avtomatizirani v skriptih ukaznih lupin.

  Program ,,expect`` poskrbi za programabilen terminalski vmesnik za
  avtomatsko interakcijo s takimi programi. Naslednji skript za expect
  je primer neinteraktivne razli�ice ukaza passwd(1).

# uporabni�ko ime je dano kot 1. argument, geslo kot 2.
set geslo [index $argv 2]
spawn passwd [index $argv 1]
expect "*password:"
send "$geslo\r"
expect "*password:"
send "$geslo\r"
expect eof

  Program expect lahko delno avtomatizira interakcijo, kar je posebej
  uporabno za telnet, rlogin, razhro��evalnike in druge programe, ki
  nimajo vgrajenega ukaznega jezika. Distribucija priskrbi tudi poskusni
  skript za nenehen zagon igre rogue, dokler se ne pojavi dobra za�etna
  postavitev. Potem se nadzor vrne uporabniku, ki lahko u�iva v igri.

  Na sre�o so bili napisani nekateri programi za obdelavo povezave na
  terminalu pseudo-tty, tako da lahko poganjate te vrste programov v
  skriptu.

  Program expect dobite tako, da po�ljete ,,send
  pub/expect/expect.shar.Z`` na naslov [email protected] ali
  uporabite anonimni FTP za prenos imenovane datoteke s stre�nika
  ftp.cme.nist.gov.

  �e ena mo�nost re�itve je z uporabo programa pty 4.0, ki deluje kot
  program pod sejo psevdo-tty, in ga dobite na comp.sources.unix, volume
  25. Postopek, ki to naredi prek pty z uporabo poimenovanih cevi, je
  videti takole:

#!/bin/sh
/etc/mknod out.$$ p; exec 2>&1
( exec 4<out.$$; rm -f out.$$
<&4 waitfor 'password:'
   echo "$2"
<&4 waitfor 'password:'
   echo "$2"
<&4 cat >/dev/null
) | ( pty passwd "$1" >out.$$ )

  Tukaj je ,,waitfor`` preprost C-jevski program, ki bere s standardnega
  vhoda znak po znak, dokler ti znaki niso enaki njegovemu argumentu.

  Preprostej�a re�itev z uporabo pty (ki ima to napako, da se ne
  sinhronizira pravilno s programom passwd) je

#!/bin/sh
( sleep 5; echo "$2"; sleep 5; echo "$2") | pty passwd "$1"

4.10 Kako lahko v skriptu ali programu ugotovim ID procesa, ki pripada programu
z dolo�enim imenom?

Subject: How do I find the process ID of a program with a particular name ... ?
Date: Thu Mar 18 17:16:55 EST 1993

  V skriptu ukazne lupine:

  Doslej �e ni pripomo�ka, ki bi bil posebej na�rtovan za preslikovanje
  med imeni programov in procesnimi ID-ji. �e ve�, tak�ne preslikave so
  pogosto nezanesljive, saj lahko obstaja ve� procesov z enakim imenom
  in ker je mo�no, da proces med tekom spreminja svoje ime. Toda pogosto
  zado��a, da uporabimo naslednji cevovod, ki izpi�e seznam procesov (v
  va�i lasti) z dolo�enim imenom:

ps ux | awk '/ime/ && !/awk/ {print $2}'

  Pri tem zamenjajte ,,ime`` z imenom procesa, ki ga i��ete.

  Splo�ni postopek prestre�e izhod ukaza ps in z orodji awk ali grep in
  podobnimi poi��e vrstice z dolo�enim nizom znakov ter izpi�e polje PID
  v teh vrsticah. Opazili boste, da zgornji ukaz ,,!/awk/`` iz izpisa
  izlo�i so�asni proces awk.

  Morda boste morali v odvisnosti od vrste Unixa, ki ga uporabljate,
  spremeniti argumente za ps.

  V kodi programa v C-ju:

  Prav tako kot ni nobenega pripomo�ka, posebej na�rtovanega za
  preslikavo med imeni programov in procesnimi ID-ji, tudi ni
  (prenosljive) C-jevske knji�nice funkcij za to opravilo.

  Nekateri proizvajalci sicer priskrbijo funkcije za branje pomnilnika
  jedra; na primer, Sun vklju�uje funkcije ,,kvm_`` in Data General
  funkcije ,,dg_``. Mo�no je, da jih sme uporabljati vsak uporabnik, a
  morebiti so dostopne le super-uporabniku (ali uporabniku v skupini
  ,,kmem``), �e je na va�em sistemu omejeno branje pomnilnika jedra.
  Nadalje so te funkcije pogosto nedokumentirane ali vsaj slabo
  dokumentirane in se lahko spreminjajo od izdaje do izdaje.

  Nekateri proizvajalci naredijo datote�ni sistem ,,/proc``, ki se ka�e
  kot imenik s kupom datotek v njem. Datoteke so poimenovane s �tevili,
  ki ustrezajo ID procesov. Te datoteke lahko odpirate in berete ter
  tako dobite podatke o procesu. Kot re�eno pa je dostop do tega imenika
  morebiti omejen in vmesnik se lahko spreminja od sistema do sistema.

  �e ne morete uporabiti posebnih proizvajal�evih knji�ni�nih funkcij in
  �e nimate sistema /proc ter bi radi vse postorili v C-ju, boste morali
  sami brskati po pomnilniku jedra. Za dober primer, kako se to po�ne na
  ve�ih sistemih, poglejte izvorno kodo ,,ofiles``, dostopno v arhivih
  novi�arske skupine comp.sources.unix. (Paket, imenovan ,,kstuff``, ki
  pomaga pri brskanju po jedru, je bil poslan na alt.sources v maju 1991
  in je tudi dostopen po anonimnem FTP-ju kot {329{6,7,8,9},330{0,1}} v
  imeniku usenet/alt.sources/articles/ na wuarchive.wustl.edu.

4.11 Kako preverim izhodni status oddaljenega ukaza, pognanega z rsh?

Subject: How do I check the exit status of a remote command executed via "rsh"?
Date: Thu Mar 18 17:16:55 EST 1993

  Tole ne deluje:

rsh nek-stroj nek-zoprn-ukaz || echo "Ukazu je spodletelo"

  Izhodno stanje ,,rsh`` je 0 (uspeh), �e se sam program rsh kon�a
  uspe�no, kar verjetno ni to, kar �elite.

  �e �elite preveriti izhodni status oddaljenega programa, lahko
  uporabite skript ,,ersh`` Maartena Litmaatha, ki je bil poslan na
  alt.sources v oktobru 1994. Skript ersh je lupinski skript, ki pokli�e
  rsh, uredi, da oddaljen stroj na koncu izpi�e status zadnjega
  izvedenega ukaza, in kon�a v tem izhodnem stanju.

4.12 Je mogo�e programu awk podati tudi spremenljivke ukazne lupine?

Subject: Is it possible to pass shell variable settings into an awk program?
Date: Thu Mar 18 17:16:55 EST 1993

  Za to obstajata dva razli�na na�ina. S prvim preprosto razvijemo
  spremenljivke povsod, kjer je to potrebno v programu. Na primer,
  seznam vseh terminalov tty, ki jih uporabljate, dobite takole:

who | awk '/^'"$USER"'/ { print $2 }'

  Enojni narekovaji se uporabljajo za ozna�evanje programa v awk-u, saj
  se v njem pogosto uporablja znak ,$`, ki je lahko interpretiran v
  ukazni lupini, �e zaprete program v dvojne narekovaje, ne pa tudi, �e
  ga zaprete v enojne. V tem primeru ho�emo, da ukazna lupina
  interpretura ,$` v ,,$USER``, zato zapremo enojne narekovaje in potem
  vstavimo ,,$USER`` v dvojne. Pozorni bodite na to, da ni nikjer
  nobenih presledkov, torej bo ukazna lupina vse skupaj videla kot en
  sam argument. Opazili boste tudi, da dvojni narekovaji v tem
  konkretnem primeru verjetno niso potrebni, lahko bi torej naredili
  tudi

who | awk '/^'$USER'/ { print $2 }'

  a jih moramo vseeno vklju�iti, saj bi lahko lupinska spremenljivka
  $USER vsebovala posebne znake, kot so presledku.

  Drugi na�in za podajanje spremenljivih nastavitev programu awk je
  uporaba pogosto nedokumentirane lastnosti awk-a, ki dovoljuje, da se
  spremenljivke podajajo v ukazni vrstici kot ,,la�na imena datotek``.
  Na primer:

who | awk '$1 == uporabnik { print $2 }' uporabnik="$USER" -

  Spremenljivke se uporabijo, ko se zasledijo v ukazni vrstici, torej,
  na primer, lahko s to tehniko naro�ite programu awk, kako naj se
  obna�a za razli�ne datoteke. Na primer:

awk '{ program, ki je odvisen od s }' s=1 datoteka1 s=0 datoteka2

  Opazite, da nekatere verzije programa awk povzro�ijo, da se pred
  izvedbo bloka BEGIN zasledijo spremenljivke pred vsemi pravimi imeni
  datotek, toda nekatere ne, zato se na to ne gre zana�ati.

  Opazite tudi, da awk ob navedbi spremenljivk namesto pravih datotek
  sam od sebe ne bo bral s stdin, zato morate dodati argument ,,-`` na
  konec va�ega ukaza, kot je to v predprej�njem primeru.

  Tretja mo�nost je uporaba novej�e verzije programa awk (nawk), ki
  dopu��a neposreden dostop do spremenljivk okolja. Na primer:

nawk 'END { print "Va�a pot je " ENVIRON["PATH"] }' /dev/null

4.13 Kako se znebim procesov-zombijev, ki vztrajajo?

Subject: How do I get rid of zombie processes that persevere?
From: Jonathan I. Kamens
From: [email protected] (Casper Dik)
Date: Thu, 09 Sep 93 16:39:58 +0200

  �al je nemogo�e posplo�iti, kako naj se zaklju�i podproces, saj se na
  razli�nih vrstah Unixa mehanizmi medsebojno razlikujejo.

  Predvsem morate narediti wait() za podproces na vseh vrstah Unixa. Ne
  poznam Unixa, ki bi avtomati�no pospravil za podprocesom, ki se je
  kon�al, �e mu tega niste posebej naro�ili.

  Drugi�, �e na nekaterih, iz SysV izpeljanih, sistemih naredite
  ,,signal(SIGCHLD, SIG_IGN)`` (no, pravzaprav je lahko SIGCLD namesto
  SIGCHLD, toda ve�ina novej�ih sistemov SysV ima ,,#define SIGCHLD
  SIGCLD`` v datotekah z glavami), se otro�ki procesi samodejno
  po�istijo, brez nadaljnega truda na va�i strani. Najpreprosteje to
  preverite na svojem stroju, tako da poskusite, ali deluje, �eprav se
  ni priporo�ljivo zana�ati na to, �e posku�ate pisati prenosljivo kodo.
  �al POSIX tega ne predpisuje. Nastavitev SIGCHLD na SIG_IGN je v
  POSIX-u nedefinirana, torej tega ne morete uporabiti v svojem
  programu, �e naj bo skladen s standardom POSIX.

  Kak�en je potemtakem na�in, skladen s POSIX? Kot re�eno, morate
  namestiti upravljalnik signalov (angl. signal handler) in po�akati z
  wait. V POSIX-u so upravljalniki signalov name��eni s funkcijo
  sigaction. Ker vas ne zanimajo ,,zaustavljeni`` podprocesi, pa� pa
  prekinjeni, dodajte zastavicam sa_flags vrednost SA_NOCLDSTOP. �akanje
  brez blokiranja se izvede z waitpid(). Prvi argument funkciji waitpid
  naj bo -1 (�akaj na katerikoli PID), tretji naj bo WNOHANG. To je
  danes najbolj prenosljiv na�in in bo verjetno v prihodnosti postal �e
  bolj prenosljiv.

  �e va� sistem ne podpira standard POSIX, obstaja vrsta re�itev.
  Najpreprosteje je uporabiti signal(SIGCHLD, SIG_IGN), �e to deluje. �e
  samodejnega �i��enja ne morete dose�i s SIG_IGN, morate napisati
  upravljalnik signalov, da bo to storil. Zaradi naslednjih
  nekonsistentnosti ga sploh ga ni preprosto napisati tako, da bi
  deloval na vseh vrstah Unixa:

  Na nekaterih vrstah Unixa se upravljalnik signalov SIGCHLD pokli�e, �e
  se kon�a eden ali ve� podprocesov. �e va� upravljalnik signalov le
  enkrat pokli�e wait(), to pomeni, da ne bo po�istil za vsemi
  podprocesi. Prepri�an sem, da ima na sre�o programer na teh Unixih, na
  katerih to dr�i, vselej na voljo klica wait3() ali waitpid(), ki z
  izbiro WNOHANG preverita, ali morata po�istiti �e kaj podprocesov. Va�
  upravljalnik signalov na sistemih, ki poznajo funkciji
  wait3()/waitpid(), toliko �asa kli�e eno od teh funkcij z izbiro
  WNOHANG, dokler ni ve� nobenih otrok za po�i��enje. Bolj�a izbira je
  waitpid(), ker je vklju�ena v POSIX.

  Na sistemih, izpeljanih iz SysV, se signali SIGCHLD regenerirajo, �e
  po izhodu upravljalnika signala SIGCHLD �e vedno ostane kak�en otro�ki
  proces za po�istiti. Torej je na ve�ini sistemov SysV ob klicu
  upravljalnika signalov varno predpostaviti, da morate po�istiti le en
  signal, in pri�akovati, da se bo upravljalnik poklical ponovno, �e je
  po izhodu iz njega ostalo �e kaj nepo�i��enih signalov.

  Na starej�ih sistemih ni nobenega na�ina, da bi prepre�ili
  upravljalnikom signalov, da se ob klicu samodejno nastavijo na
  SIG_DFL. Na takih sistemih morate kot zadnjo stvar upravljalnika
  signalov postaviti ,,signal(SIGCHILD, catcher_func)`` (kjer je
  ,,catcher_func`` ime upravljalni�ke funkcije), da se resetirajo.

  Na sre�o novej�e izvedbe dovoljujejo upravljalnikom signalov, da se
  namestijo, ne da bi bili resetirani na SIG_DFL, ko se po�ene
  upravljalni�ka funkcija. Temu problemu se na sistemih, ki nimajo
  wait3()/waitpid(), a imajo SIGCLD, izognete tako, da morate resetirati
  upravljalnik signalov s klicem signal(), ko ste izvedli v
  upravljalniku vsaj en wait(), vsaki�, ko se kli�e. Zaradi zgodovinskih
  zdru�ljivostnih razlogov bo System V obdr�al staro pomenoslovje
  (resetiral upravljalnik ob klicu) funkcije signal(). Upravljalniki
  signalov, ki se prilepijo, se lahko namestijo s sigaction() ali
  sigset().

  Povzetek vsega tega je, da morate funkcijo waitpid() (POSIX) ali
  wait3() na sistemih, ki jo imajo, tudi uporabljati in, da mora te�i
  va� upravljalnik signalov v zanki, na sistemih, ki pa teh funkcij
  nimajo, morate imeti ob vsaki zahtevi po upravljalniku signalov po en
  klic wait().

  �e ena stvar - �e ne �elite iti skozi vse te te�ave, obstaja
  prenosljiv na�in, da se izognete temu problemu, �eprav je malce manj
  u�inkovit. Va� star�evski proces naj se razveji (s fork) in potem �aka
  na mestu, da se kon�a otro�ki proces. Otro�ki proces se potem spet
  razveji, in vam da otroka in vnuka. Otrok se takoj prekine (in torej
  star�, ki ga �aka, izve za njegov konec in nadaljuje z delom), vnuk pa
  po�ne, kar bi moral prvotno narediti otrok. Ker je njegov star�
  kon�an, ga nasledi proces init, ki bo opravil vse potrebno �akanje. Ta
  metoda je neu�inkovita, ker potrebuje dodatno razvejanje, a je
  popolnoma prenosljiva.

4.14 Kako dobim vrstice iz cevovoda tako, kot se pi�ejo, namesto le v ve�jih
blokih?

Subject: How do I get lines from a pipe ... instead of only in larger blocks?
From: Jonathan I. Kamens
Date: Sun, 16 Feb 92 20:59:28 -0500

  Knji�nica stdio trenutno dela vmesno pomnenje (angl. buffering)
  razli�no, odvisno od tega, ali misli, da te�e na tty ali ne. �e misli,
  da je na tty, dela vmesno pomnenje po posameznih vrsticah; sicer
  uporablja ve�ji vmesni pomnilnik kot je ena vrstica.

  �e imate izvorno kodo odjemnika, za katerega bi radi onemogo�ili
  vmesno pomnenje, lahko za to uporabite setbuf() ali setvbuf().

  �e ne, je najbolj�i na�in, da prepri�ate program, da te�e na tty tako,
  da ga po�enete pod pty, se pravi, da uporabite program ,,pty``,
  omenjen v vpra�anju ,,Kako po�enem passwd, ftp, telnet, tip in druge
  interaktivne programe v skriptu ukazne lupine v ozadju?``.

4.15 Kako lahko vstavim datum v ime datoteke?

Subject: How do I get the date into a filename?
From: melodie neal <[email protected]>
Date: Fri, 7 Oct 1994 09:27:33 -0400

  To ni te�ko, a je na prvi pogled malce kripti�no. Za�nimo najprej s
  samim ukazom date: date lahko vzame niz s formatom izpisa in ga
  upo�teva. Niz za formatiranje mora biti objet z narekovaji, da
  prepre�imo ukazni lupini poskus njegove interpretacije, preden ga dobi
  sam ukaz date. Poskusite tole:

date '+%d%m%y'

  Morali bi dobiti nekaj kot 130994. �e �elite imeti vmes lo�ila,
  preprosto postavite znake, ki bi jih radi uporabljali, v niz za
  formatiranje (brez nagibnic ,/`):

date '+%d.%m.%y'

  Obstaja veliko simbolov, ki jih lahko uporabite v nizu za
  formatiranje: o njih izveste v strani referen�nega priro�nika (man
  date).

  Zdaj pa �e to spravimo v ime datoteke. Denimo, da bi radi ustvarili
  datoteke imenovane report.130994 (ali katerikoli datum �e je danes):

FILENAME=report.`date '+%d%m%y'`

  Opazite, da tukaj uporabljamo dva nabora narekovajev: notranji nabor
  prepre�uje formatirnemu nizu prezgodnjo interpretacijo; zunanji nabor
  pove ukazni lupini naj izvede objeti ukaz, in zamenja rezultat v izraz
  (zamenjava ukazov, angl. command substitution).

4.16 Zakaj se nekateri skripti za�nejo z ,,#!...``?

Subject: Why do some scripts start with #! ... ?
From: chip@@chinacat.unicom.com (Chip Rosenthal)
Date: Tue, 14 Jul 1992 21:31:54 GMT

  Chip Rosenthal je v preteklosti v novi�arski skupini comp.unix.xenix
  odgovoril na zelo podobno vpra�anje.

  Mislim, da ljudi bega, da obstajata dva razli�na mehanizma, ki se oba
  za�neta z znakom ,#`. Oba re�ujeta isti problem na zelo omejenem
  naboru primerov - a nista ni� manj razli�na.

  Nekaj ozadja. Ko se jedro sistema UNIX odlo�i pognati program (eden
  sistemskih klicev dru�ine exec()), najprej pogleda prvih 16 bitov
  datoteke. Teh 16 bitov se imenuje magi�na �tevilka. Prvi�, magi�na
  �tevilka prepre�uje jedru, da bi naredilo kaj neumnega, kot na primer
  posku�alo izvesti datoteko z bazami podatkov o va�ih strankah. �e
  jedro ne prepozna magi�ne �tevilke, se prito�i z napako ENOEXEC.
  Program po�ene le, �e je magi�na �tevilka prepoznavna.

  Drugi�, s�asoma so se uvajali razli�ni formati izvedljivih datotek in
  magi�na �tevilka ni le povedala jedru ali naj izvede datoteko, pa� pa
  tudi kako naj jo izvede. Na primer, �e prevedete program na sistemu
  SCO XENIX/386 in nesete binarno datoteko na sistem SysV/386, bo jedro
  prepoznalo magi�no �tevilko in reklo ,,Aha! To je binarna datoteka
  tipa x.out!`` in se nastavilo tako, da bo uporabljalo klice,
  zdru�ljive s sistemom XENIX.

  Pomnite, da jedro lahko poganja le binarne izvedljive slike
  pomnilnika. Kako torej, se vpra�ujete, te�ejo skripti? Konec koncev,
  lahko napi�em v pozivniku ukazne lupine ,,moj.skript`` in ne dobim
  napake ENOEXEC. Odgovor: skripti se ne izvajajo v jedru, pa� pa v
  ukazni lupini. Koda v ukazni lupini lahko izgleda podobno:
    _________________________________________________________________

/* poskusi pognati program */
execl(program, basename(program), (char *)0);

/* klic exec je spodletel - morda gre za skript ukazne lupine? */
if (errno == ENOEXEC)
    execl ("/bin/sh", "sh", "-c", program, (char *)0);

/* Oh, ne, g. Bill!! */
perror(program);
return -1;
    _________________________________________________________________

  (Ta primer je mo�no poenostavljen. Vpletenih je veliko ve� zadev, a to
  ponazarja bistvo, ki ga posku�am opisati.)

  �e je klic execl() uspe�en in se program za�ene, se koda za execl()
  nikoli ne po�ene. V zgornjem primeru uspe�en execl() programa
  ,program` pomeni, da se spodnje vrstice primera ne izvedejo. Namesto
  tega sistem izvaja binarno datoteko ,program`.

  �e, po drugi strani, prvi klic execl() spodleti, ta hipoteti�na ukazna
  lupina pogleda, zakaj ji je spodletelo. �e klic execl() ni uspel, ker
  ,program` ni bil prepoznan kot binarna izvedljiva datoteka, ga ukazna
  lupina posku�a nalo�iti kot skript ukazne lupine.

  Ljudje iz Berkeleya so imeli �edno idejo, kako raz�iriti na�in, na
  katerega jedro zaganja programe. Popravili so jedro, da prepozna
  magi�no �tevilko ,#!` (magi�ne �tevilke so velike 16 bitov in dva
  8-bitna znaka tvorita 16 bitov, prav?). Ko je jedro prepoznalo magi�no
  �tevilko ,#!`, je prebralo tudi ostanek vrstice in ga obravnavalo kot
  ukaz, ki ga naj po�ene na vsebini datoteke. S tem popravkom lahko zdaj
  po�nete podobne stvari:

#! /bin/sh

#! /bin/csh

#! /bin/awk -F:

  Ta popravek je obstajal le v svetu Berkeleya, in je pre�el na jedra
  USG kot del sistema System V Release 4. Pred V.4 jedro ni imelo
  mo�nosti ni�esar drugega, kot nalaganje in zaganjanje binarnih
  izvedljivih slik pomnilnika, razen v primerih proizvajal�eve dodane
  vrednosti.

  Vrnimo se �e nekaj let v preteklost, v �as, ko je ve� in ve� ljudi, ki
  so poganjali Unixe na jedrih USG, govorilo ,,/bin/sh je zani� kot
  interaktivni uporabni�ki vmesnik! Ho�em csh!``. Nekateri proizvajalci
  so dodali csh v njihove distribucije, �eprav csh ni bil del
  distribucije USG UNIX.

  To pa je predstavljalo problem. Denimo, da spremenite svojo prijavno
  ukazno lupino na /bin/csh. Denimo, nadalje, da ste bebec in vztrajate
  na programiranju skriptov csh. Vsekakor bi radi bili sposobni napisati
  ,moj.skript` in ga s tem pognati, �eprav je to skript za csh. Namesto,
  da bi ga pognali skozi /bin/sh, �elite, da se skript po�ene takole:

execl ("/bin/csh", "csh", "-c", "moj.skript", (char *)0);

  Kaj pa vsi tisti obstoje�i skripti -- nekateri od njih so deli
  sistemske distribucije? �e se po�enejo skozi csh, se bodo stvari
  kvarile. Potrebujete torej na�in, da po�enete nekatere skripte skozi
  csh, in nekatere druge skozi sh.

  Vpeljana re�itev je bila, da se popravi csh tako, da pogleda prvi znak
  skripta, ki ga �elite pognati. �e je ta ,#`, bo csh zagnal skript
  skozi /bin/csh, sicer bo pognal skript skozi /bin/sh. Primer zgornje
  kode bi zdaj izgledal takole:
    _________________________________________________________________

/* poskusi pognati program */
execl(program, basename(program), (char *)0);

/* klic exec je spodletel - morda gre za skript ukazne lupine? */
if (errno == ENOEXEC && (fp = fopen(program, "r")) != NULL) {
i = getc(fp);
(void) fclose(fp);
if (i == '#')
   execl ("/bin/csh", "csh", "-c", program, (char *)0);
else
   execl ("/bin/sh", "sh", "-c", program, (char *)0);
}

/* Oh, ne, g. Bill!! */
perror(program);
return -1;
    _________________________________________________________________

  Dve pomembni stvari, Prvi�, to je popravek lupine ,csh`. V jedru se ni
  ni� spremenilo in drugim ukaznim lupinam ni bilo ni� dodano. �e
  posku�ate pognati skript s klicem execl(), boste �e vedno dobili
  napako ENOEXEC, pa naj se skript za�ne z znakom ,#` ali pa ne. �e
  posku�ate pognati skript, ki se za�ne z znakom ,#` v �em drugem kot
  csh (na primer v /bin/sh), ga bo obravnavala lupina sh, ne csh.

  Drugi�, �arovnija je v tem, da se bodisi skript za�ne z ,#`, ali pa se
  ne za�ne z ,#`. Stvari kot so ,:` in ,: /bin/sh` na za�etku skriptov
  dela �arobne preprosto dejstvo, da niso ,#`. Torej je vse to
  identi�no, �e je na za�etku skripta:

:

: /bin/sh

               <--- prazna vrstica

: /usr/games/rogue

echo "Hm ... spra�ujem se, pod katero ukazno lupino te�em???"

  V vseh teh primerih bodo vse ukazne lupine posku�ale izvesti skript z
  /bin/sh.

  Podobno, tudi vse naslednje je identi�no, �e je na za�etku skripta:

#

# /bin/csh

#! /bin/csh

#! /bin/sh

# Hm ... spra�ujem se, pod katero ukazno lupino te�em???

  Vse te vrstice se za�nejo z znakom ,#`. To pomeni, da se bo skript
  pognal le, �e ga boste posku�ali pognati iz csh, sicer se bo pognal z
  /bin/sh.

  (Opomba: �e poganjate ksh, zamenjajte v zgornjem besedilu ,,sh`` s
  ,,ksh``. Kornova ukazna lupina je teoreti�no zdru�ljiva z Bournovo,
  torej posku�a sama pognati te skripte. Va�e izku�nje so lahko druga�ne
  z nekaterimi drugimi dostopnimi ukaznimi lupinami, kot so zsh, bash,
  itd.)

  O�itno postane popravek za ,#` nepotreben, �e imate v jedru podporo za
  ,#!`. Pravzaprav je lahko nevaren, saj ustvarja zmedo pri ugotovitvi,
  kaj naj bi se zgodilo v primeru ,,#! /bin/sh``.

  Uporaba ,#!` bolj in bolj prevladuje. System V Release 4 pobira
  �tevilne lastnosti z Berkeleya, vklju�no s to. Nekateri proizvajalci
  sistemov System V Release 3.2 nadgrajujejo na nekatere bolj vidne
  dobrote V.4 in vam posku�ajo prepri�ati, da je to dovolj in, da ne
  potrebujete stvari, kot so pravi, delujo�i tokovi ali dinami�no
  nastavljivi parametri jedra.

  XENIX ne podpira ,#!`. Ukazna lupina /bin/csh na Xenixu nima popravka
  za ,#`. Podpora za ,#!` v Xenixu bi bila fina, a sam ne bi zadr�eval
  diha med �akanjem nanjo.
    _________________________________________________________________


5. Napredna vpra�anja; radi jih vpra�ujejo ljudje, ki mislijo, da �e poznajo
vse odgovore

5.1 Kako berem znake s terminala, ne da bi bilo uporabniku treba pritisniti
RETURN?

Subject: How do I read characters ... without requiring the user to hit RETURN?
Date: Thu Mar 18 17:16:55 EST 1993

  Preverite na�in cbreak v BSD ali na�in ~ICANON v SysV.

  �e se sami ne �elite spoprijeti s terminalskimi parametri (z uporabo
  sistemskega klica ioctl(2)), lahko prepustite delo programu stty - a
  to je po�asno in neu�inkovito, in v�asih boste morali spremeniti kodo,
  da bo delala pravilno:
    _________________________________________________________________

#include <stdio.h>
main()
{
   int c;

   printf("Pritisnite katerikoli znak za nadaljevanje\n");
   /*
    * funkcija ioctl() bi bila tukaj bolj�a;
    * le leni programerji delajo takole:
    */
   system("/bin/stty cbreak");        /* ali "stty raw" */
   c = getchar();
   system("/bin/stty -cbreak");
   printf("Hvala, ker ste vnesli %c.\n", c);

   exit(0);
}
    _________________________________________________________________

  Nekaj ljudi mi je poslalo razli�ne bolj pravilne re�itve tega
  problema. �al mi je, da jih ne morem vklju�iti, saj zares presegajo
  namen tega seznama.

  Preveriti boste �eleli tudi dokumentacijo prenosljive knji�nice
  zaslonskih funkcij, imenovane ,,curses``. �e vas zanima V/I enega
  samega znaka, vas pogosto zanima tudi neka vrsta kontrole prikaza na
  zaslonu, in knji�nica curses priskrbi razli�ne prenosljive rutine za
  obe funkciji.

5.2 Kako preverim, �e je treba prebrati znak, ne da bi ga zares prebral?

Subject: How do I check to see if there are characters to be read ... ?
Date: Thu Mar 18 17:16:55 EST 1993

  V nekaterih razli�icah Unixa je mogo�e preveriti, ali je v danem
  datote�nem deskriptorju kaj neprebranih znakov. V BSD-ju lahko
  uporabite select(2). Uporabite lahko tudi FIONREAD ioctl, ki vrne
  �tevilo znakov, ki �akajo na prebranje, a to deluje le pri terminalih,
  cevovodih in vti�ih. V System V Release 3 lahko uporabite poll(2), a
  to deluje le na tokovih. V Xenixu - in torej na Unixu SysV r3.2 in
  poznej�ih - sistemski klic rdchk() poro�a o tem ali se bo klic read()
  na danem datote�nem deskriptorju blokiral.

  Ni na�ina, da bi preverili, ali so znaki dostopni za branje s kazalca
  FILE. (Lahko gledate po notranjih podatkovnih strukturah stdio, da bi
  videli, �e je vmesni pomnilnik vhoda neprazen, a to ne bo delovalo,
  saj ne veste, kaj se bo zgodilo naslednji�, ko boste hoteli napolniti
  vmesni pomnilnik.)

  V�asih ljudje vpra�ujejo to vpra�anje z namenom, da bi napisali

if (znaki dostopni iz fd)
       read(fd, buf, sizeof buf);

  in dobili u�inek neblokovnega branja z read. To ni najbolj�i na�in za
  izvedbo tega, saj je mo�no, da bodo znaki dostopni, ko preverite
  dostopnost, a ne bodo ve� dostopni, ko pokli�ete read. Namesto tega
  pri�gite zastavico O_NDELAY (ki se pod BSD imenuje tudi FNDELAY) z
  izbiro F_SETFL funkcije fcntl(2). Starej�i sistemi (Version 7, 4.1
  BSD) nimajo O_NDELAY; na teh sistemih lahko najbli�je neblokovnemu
  branju pridete z uporabo alarm(2), da branju pote�e �as.

5.3 Kako ugotovim ime odprte datoteke?

Subject: How do I find the name of an open file?
Date: Thu Mar 18 17:16:55 EST 1993

  V splo�nem je to prete�ko. Datote�ni deskriptor je lahko obe�en na
  cevovod ali pty, in v tem primeru nima imena. Lahko je obe�en na
  datoteko, ki je bila odstranjena. Lahko ima ve� imen, zaradi pravih
  ali simboli�nih povezav.

  �e morate to res storiti, in prepri�ajte se, da ste o tem razmislili
  na dolgo in �iroko in se odlo�ili, da nimate druge izbire, lahko
  uporabite find z izbiro -inum in morda �e -xdev, ali uporabite ncheck,
  ali �e enkrat opona�ajte funkcionalnost enega od teh orodij v va�em
  programu. Zavedajte se, da preiskovanje 600 megabytnega datote�nega
  sistema za datoteko, ki je morda sploh ni, traja nekaj �asa.

5.4 Kako lahko teko�i program ugotovi svojo lastno pot?

Subject: How can an executing program determine its own pathname?
Date: Thu Mar 18 17:16:55 EST 1993

  Va� program lahko pogleda argv[0]; �e se za�enja z ,,/``, je to
  verjetno ime absolutne poti do va�ega programa, sicer lahko va�
  program pogleda v vsak imenik, imenovan v okoljski spremenljivki PATH
  in posku�a najti prvi imenik, ki vsebuje izvedljivo datoteko, katere
  ime se ujema s programovim argv[0] (ki je po dogovoru ime programa, ki
  se izvaja). �e zdru�ite ta imenik in vrednost argv[0], imate verjetno
  pravo ime.

  Ne morete pa biti prepri�ani, saj je povsem legalno, da en program
  izvede drugega z exec() s katerokoli vrednostjo argv[0], ki si jo
  za�eli. Da exec izvaja nove programe z imenom izvedljive datoteke v
  argv[0], je le dogovor.

  Na primer, povsem hipoteti�ni primer:


#include <stdio.h>
main()
{
   execl("/usr/games/rogue", "vi Disertacija", (char *)NULL);
}

  Izvedeni program misli, da je njegovo ime (njegova vrednost argv[0])
  ,,vi Disertacija``. (Tudi nekateri drugi programi lahko mislijo, da je
  ime programa, ki ga trenutno poganjate ,,vi Disertacija``, a seveda je
  to le hipoteti�ni primer, zato tega ne posku�ajte sami :-)

5.5 Kako uporabim popen() za odprtje procesa za branje in pisanje?

Subject: How do I use popen() to open a process for reading AND writing?
Date: Thu Mar 18 17:16:55 EST 1993

  Problem, ko posku�ate preusmeriti vhod in izhod poljubnemu su�enjskemu
  procesu je, da lahko nastane mrtva zanka, �e oba procesa hkrati �akata
  na �e-ne-generiran vhod. Zanki se lahko izognemo tako, da obe strani
  upo�tevata strog protokol brez mrtvih zank, toda, ker to zahteva
  sodelovanje med procesi, je neprimerno za knji�ni�no funkcijo, podobno
  popen().

  Distribucija ,,expect`` vklju�uje knji�nico funkcij, ki jih lahko
  C-jevski programer kli�e neposredno. Ena izmed funkcij dela isto stvar
  kot popen za hkratno branje in pisanje. Uporablja ptys namesto cevi,
  in nima problemov z zaciklanjem. Prenosljiva je na BSD in SV. Glejte
  vpra�anje ,,Kako po�enem passwd, ftp, telnet, tip in druge
  interaktivne programe v skriptu ukazne lupine v ozadju?`` za ve�
  podatkov o distribuciji expect.

5.6 Kako izvedem v C-ju sleep() za manj kot sekundo?

Subject: How do I sleep() in a C program for less than one second?
Date: Thu Mar 18 17:16:55 EST 1993

  Najprej se zavedajte, da je vse, kar lahko dolo�ite minimalna koli�ina
  zakasnitve; dejanska zakasnitev bo odvisna od upravni�kih zadev, kot
  je obremenitev sistema, in je lahko poljubno dolga, �e nimate sre�e.

  Ne obstaja funkcija standardne knji�nice, na katero bi se lahko
  zanesli v vseh okolji za ,,dremanje`` (angl. napping, obi�ajen izraz
  za kratke spance). Nekatera okolja priskrbijo funkcijo ,,usleep(n)``,
  ki zadr�i izvajanje za n mikrosekund. �e va�e okolje ne podpira
  usleep(), je tukaj nekaj njenih implementacij za okolja BSD in System
  V.

  Naslednja koda Douga Gwyna je prirejena z emulacijske podpore Systema
  V za 4BSD in izrablja sistemski klic select() na 4BSD-ju. Doug jo je
  prvotno imenoval ,,nap()``; vi jo boste verjetno �eleli klicati
  ,,usleep()``:
    _________________________________________________________________

/*
   usleep - podporna rutina za emulacijo sistemskih klicev 4.2BSD
   zadnja sprememba originalne verzije:  29. oktober 1984     D A Gwyn
*/

extern int        select();

int
usleep( usec )                          /* vrne 0, �e je ok, sicer -1 */
   long                usec;           /* premor v mikrosekundah */
   {
   static struct                       /* `timeval' */
           {
           long        tv_sec;         /* sekunde */
           long        tv_usec;        /* mikrosekunde */
           }   delay;          /* premor _select() */

   delay.tv_sec = usec / 1000000L;
   delay.tv_usec = usec % 1000000L;

   return select( 0, (long *)0, (long *)0, (long *)0, &delay );
   }
    _________________________________________________________________

  Na Unixih System V bi lahko to storili takole:
    _________________________________________________________________

/*
podsekundni premori za System V - ali karkoli, kar ima poll()
Don Libes, 4/1/1991

BSD-jeva analogija te funkcije je definirana v mikrosekundah, medtem,
kot je poll() definiran v milisekundah.  Zaradi zdru�ljivosti, ta
funkcija priskrbi natan�nost "po dolgem teku" tako, da oklesti prave
zahteve na milisekundo natan�no in akumulira mikrosekunde med
posameznimi klici z idejo, da jo verjetno kli�ete v tesni zanki, in se
bo po dolgem teku napaka izni�ila.

�e je ne kli�ete v tesni zanki, potem skoraj gotovo ne potrebujete
mikrosekundne natan�nosti in v tem primeru vam ni mar za mikrosekunde.
�e vam bi bilo mar, tako ali tako ne bi uporabljali Unixa, saj lahko
naklju�no prebavljanje sistema (npr. razporejanje) zmelje �asomerilno
kodo.

Vrne 0 ob uspe�nem premoru, -1 ob neuspe�nem.

*/

#include <poll.h>

int
usleep(usec)
unsigned int usec;                /* mikrosekunde */
{
   static subtotal = 0;        /* mikrosekunde */
   int msec;                   /* milisekunde */

   /* 'foo' je tukaj le zato, ker so imele nekatere verzije 5.3
    * hro��a, pri katerem se prvi argument poll() preverja za
    * obstoj pravilnega pomnilni�kega naslova, �eprav je drugi
    * argument enak 0.
    */
   struct pollfd foo;

   subtotal += usec;
   /* �e je premor < 1 ms, ne naredi ni�esar, a si zapomni */
   if (subtotal < 1000) return(0);
   msec = subtotal/1000;
   subtotal = subtotal%1000;
   return poll(&foo,(unsigned long)0,msec);
}
    _________________________________________________________________

  �e ena mo�nost za dremanje na System V in verjetno tudi drugih ne-BSD
  Unixih je paket s5nap Jona Zeeffa, objavljen v comp.sources.misc,
  volume 4. Ne potrebuje namestitve gonilnika naprave, a deluje brez
  napak, ko se namesti, (Njegova lo�ljivost je omejena z vrednostjo HZ v
  jedru, saj uporablja rutino delay() jedra.)

  Mnogo novej�ih Unixov ima funkcijo nanosleep.

5.7 Kako pripravim skripte ,setuid` ukazne lupine do delovanja?

Subject: How can I get setuid shell scripts to work?
Date: Thu Mar 18 17:16:55 EST 1993

  [ Ta odgovor je dolg, a to je zapleteno in pogosto zastavljeno
  vpra�anje. Hvala Maartenu Litmaathu za ta odgovor in za spodaj
  omenjeni program ,,indir``. ]
   1. Najprej predpostavimo, da ste na razli�ici Unixa (npr. 4.3BSD ali
      SunOS), ki pozna tako imenovane ,,izvedljive skripte ukaznih
      lupin``. Tak�en skript se mora za�eti s podobno vrstico:

#!/bin/sh
      Skript se imenuje ,,izvedljivi``, ker se tako kot resni�na
      (binarna) izvedljiva datoteka za�ne s tako imenovano ,,magi�no
      �tevilko``, ki dolo�a tip izvedljive datoteke. Glejte tudi
      razdelek ,,Zakaj se nekateri skripti za�nejo z ,,#!...``?``. V
      na�em primeru je ta �tevilka enaka ,,#!`` in OS vzame ostanek prve
      vrstice kot interpreter za skript, ki mu morda sledi 1 uvodna
      izbira kot je:

#!/bin/sed -f
      Denimo, da se ta skript imenuje ,foo` in se nahaja v imeniku /bin.
      �e potem napi�ete:

foo arg1 arg2 arg3
      bo OS preuredil zadeve tako, kot bi napisali:

/bin/sed -f /bin/foo arg1 arg2 arg3
      Vendar je tukaj neka razlika: �e je pri�gan bit setuid za ,foo`,
      bo spo�tovan v prvi obliki ukaza; �e zares vpi�ete drugo obliko,
      bo OS spo�toval bite z dovoljenji programa /bin/sed, ki seveda ni
      setuid.
   2. Prav, toda kaj, �e se moj skript ukazne lupine ne za�ne s tak�no
      vrstico ,#!`, ali, �e moj OS o tem ni� ne ve?
      No, �e ga ukazna lupina (ali kdorkoli drug) posku�a izvesti, bo OS
      vrnil indikacijo napake, saj se datoteka ne za�ne z veljavno
      magi�no �tevilko. Ukazna lupina bo po sprejetju te indikacije
      predpostavila, da gre za skript ukazne lupine in mu dala �e eno
      prilo�nost:

/bin/sh lupinski_skript argumenti
      A zdaj smo �e videli, da se v tem primeru bit setuid datoteke
      ,lupinski_skript` ne bo spo�toval!
   3. Prav, kaj pa varnostna tveganja pri lupinskih skriptih setuid?
      Dobro, denimo, da se skript imenuje ,/etc/skript_setuid` in se
      za�enja z vrstico:

#!/bin/sh
      Zdaj pa poglejmo kaj se zgodi, �e izvedemo naslednje ukaze:

$ cd /tmp
$ ln /etc/skript_setuid -i
$ PATH=.
$ -i
      Vemo, da bo zadnji ukaz preurejen v:

/bin/sh -i
      Toda ta ukaz nam bo dal interaktivno ukazno lupino, ki bo z bitom
      setuid tekla, kot da bi jo pognal lastnik skripta!
      Na sre�o lahko to varnostno luknjo zlahka zapremo, �e napi�emo v
      prvo vrstico:

#!/bin/sh -
      Znak ,-` ozna�uje konec seznama izbir: naslednji argument ,-i` bo
      vzet kot ime datoteke, iz katere naj se berejo ukazi, kot bi tudi
      moral biti!
   4. Vendar pa obstajajo veliko resnej�i problemi:

$ cd /tmp
$ ln /etc/skript_setuid temp
$ nice -20 temp &
$ mv moj_skript temp
      Tretji ukaz bo preurejen v:

nice -20 /bin/sh - temp
      Ker se ta ukaz izvaja po�asi, bo morda lahko �etrti ukaz zamenjal
      originalno datoteko ,temp` s trojanskim konjem ,moj_skript` preden
      ukazna lupina sploh odpre ,temp`! Obstajajo 4 na�ini za krpanje te
      varnostne luknje:
        1. naj OS za�ene skript setuid na druga�en, varen na�in - System
           V R4 in 4.4BSD uporabljata gonilnik /dev/fd, s katerim podata
           interpreterju datote�ni deskriptor skripta;
        2. naj bo skript interpretiran posredno, skozi vmesnik, ki se
           prepri�a, da je vse v redu, preden po�ene pravi interpreter -
           �e uporabljate program ,indir` iz arhiva comp.sources.unix
           bodo skripti setuid izgledali takole:

#!/bin/indir -u
#?/bin/sh /etc/skript_setuid
        3. napravite ,,binarni ovoj``: pravo izvedljivo datoteko, ki je
           setuid in katere edina naloga je pognati interpreter z imenom
           skripta kot argumentom;
        4. napravite splo�en ,,stre�nik za skripte setuid``, ki posku�a
           najti zahtevano ,opravilo` v bazi podatkov veljavnih skriptov
           in ob uspehu po�ene pravi interpreter s pravimi argumenti.
   5. Zdaj, ko smo se prepri�ali, da se interpretira pravilna datoteka,
      ali so prisotna �e kak�na tveganja?
      Seveda! Za skripte ukazne lupine ne smete pozabiti eksplicitno
      nastavitev spremenljivke PATH na varno pot. Lahko ugotovite zakaj?
      Tukaj je �e spremenljivka IFS, ki lahko povzro�a te�ave, �e ni
      pravilno nastavljena. Tudi druge okoljske spremenljivke lahko
      ogrozijo varnost sistema, npr. SHELL ... Nadalje se morate
      prepri�ati, da ukazi v skriptih ne dovoljujejo interaktivnih
      ube�nih zaporedij ukazne lupine! Potem je tukaj umask, ki je lahko
      nastavljen na kaj �udnega ...
      Et cetera. Zavedati se morate, da skript setuid ,,podeduje`` vse
      hro��e in varnostna tveganja ukazov, ki jih kli�e!

  Po vsem tem dobimo vtis, da so lupinski skripti setuid precej tvegan
  posel! Morda bo za vas bolje programirati v C-ju!

5.8 Kako lahko ugotovim, kateri uporabnik ali proces ima odprto datoteko ali
uporablja dolo�en datote�ni sistem (da ga lahko odklopim)?


Subject: How can I find out which user or process has a file open ... ?
Date: Thu Mar 18 17:16:55 EST 1993

  Uporabite fuser (system V), fstat (BSD), ofiles (v javni lasti) ali
  pff (v javni lasti). Ti programi vam bodo povedali razli�ne stvari o
  procesih, ki uporabljajo dolo�ene datoteke.

  V arhivih comp.sources.unix, volume 18, najdete prenos fstat z 4.3 BSD
  na Dynix, SunOS in Ultrix.

  pff je del paketa kstuff in deluje na kar nekaj sistemih. Navodila za
  nabavo kstuff najdete v vpra�anju ,,Kako lahko v skriptu ali programu
  ugotovim ID procesa programa z dolo�enim imenom?``.

  Obve��en sem bil, da obstaja tudi program, imenovan lsof, a ne vem,
  kje se ga dobi.

  Michael Fink <[email protected]> dodaja:

  �e ne morete odmestiti datote�nega sistema (z umount), za katerega
  zgornja orodja ne poro�ajo o odprtih datotekah, se prepri�ajte, da
  datote�ni sistem, ki ga posku�ate odme��ati ne vsebuje aktivnih to�k
  name��anja (uporabite df(1)).

5.9 Kako izsledim ljudi, ki me tipajo (s finger)?

Subject: How do I keep track of people who are fingering me?
From: Jonathan I. Kamens
From: [email protected] (Nikola Malenovi�)
Date: Thu, 29 Sep 1994 07:28:37 -0400

  V splo�nem ne morete ugotoviti userid nekoga, ki vas tipa z
  oddaljenega stroja. Morda lahko ugotovite stroj, s katerega prihajajo
  oddaljene zahteve. Ena od mo�nosti, �e jo va� sistem podpira, in, �e
  je tipalnemu stre�niku (angl. finger daemon) prav, jo, da naredite
  va�o datoteko .plan za ,,imenovano cev`` (angl. named pipe) namesto
  obi�ajno datoteko. (Za to uporabite ,mknod`.)

  Potem lahko po�enete program, ki bo odprl va�o datoteko .plan za
  pisanje; odpiranje bo blokirano dokler nek drugi proces (namre�
  fingerd) ne odpre .plan za branje. Zdaj lahko skozi to pipo po�ljete,
  kar pa� �elite, kar vam omogo�a, da prika�ete razli�no informacijo
  .plan vsaki�, ko vas nekdo potipa. Eden od programov za to je paket
  ,,planner``, objavljen v volume 41 arhivov comp.sources.misc.

  Seveda to sploh ne bo delovalo, �e va� sistem ne podpira imenovanih
  cevi ali, �e va� lokalni fingerd vztraja, da imate navadne datoteke
  .plan.

  Va� program lahko tudi izkoristi prilo�nost in pogleda v izhod
  programa ,,netstat``, ter s tem ugotovi, odkod prihaja zahteva za
  finger, toda to vam ne bo izdalo identitete oddaljenega uporabnika.

  �e �elite dobiti oddaljeni userid, mora oddaljena stran poganjati
  identifikacijski stre�nik, kot je RFC 931. Trenutno obstajajo tri
  implementacije RFC 931 za popularne stroje BSD, in nekaj aplikacij
  (kot ftpd z wuarchive), ki podpirajo ta stre�nik. Za ve� informacij se
  priklju�ite elektronskemu spisku rfc931-users z obi�ajno zahtevo
  ,,subscribe`` na [email protected].

  Glede tega odgovora obstajajo tri opozorila. Prvo je, da mnogi sistemi
  NFS napa�no prepoznajo imenovano cev. To pomeni, da bo poskus branja
  cevi na drugem stroju lahko blokiral, dokler ne pote�e predviden �as,
  ali videl cev kot datoteko dol�ine 0, in je ne bo nikoli izpisal.

  Drugi problem je, da na veliko sistemih stre�nik fingerd preveri, ali
  datoteka .plan vsebuje podatke (in je bralna), preden jo posku�a
  brati. V tem primeru bodo oddaljeni klici finger popolnoma zgre�ili
  va�o datoteko .plan.

  Tretji problem je, da imajo sistemi, ki podpirajo imenovane cevi, na
  voljo v danem �asu le fiksno (kon�no) �tevilo le-teh - preverite
  nastavitveno datoteko jedra in izbiro FIFOCNT. �e �tevilo cevi na
  sistemu prekora�i vrednost FIFOCNT, sistem prepre�i izdelavo novih
  cevi, dokler nekdo ne sprosti virov. Razlog za to je, da je vmesni
  pomnilnik odmerjen v pomnilniku, ki se ne preklaplja (angl. buffers
  are allocated in a non-paged memory).

5.10 Je mogo�e ponovno priklju�iti proces na terminal, ko je bil ta odklopljen,
tj. po zagonu programa v ozadju in odjavi?

Subject: Is it possible to reconnect a process to a terminal ... ?
Date: Thu Mar 18 17:16:55 EST 1993

  Ve�ina razli�ic Unixa ne podpira ,,odklopa`` in ,,priklopa`` procesov
  (angl. detaching/attaching processes), kot ju podpirajo operacijski
  sistemi kot sta VMS in Multics. Vendar obstajajo prosto dostopni
  paketi, s katerimi lahko po�enete procese na tak�en na�in, da se lahko
  pozneje spet pritrdijo na terminal.

    * Prvi tak paket je ,,screen``, ki je opisan v arhivih
      comp.sources.unix kot ,,Screen, multiple windows on a CRT`` (slov.
      ,,Zaslon, ve� oken na CRT`` - glejte paket screen-3.2 v
      comp.sources.misc, volume 28). Ta paket bo tekel vsaj na sistemih
      BSD, System V r3.2 in SCO UNIX.
    * Drugi je ,,pty``, ki je v arhivih comp.sources.unix opisan kot
      ,,Run a program under a pty session`` (slov. ,,Po�enite program v
      seji pty`` - glejte pty v volume 23). Na�rtovan je le za uporabo v
      sistemih, podobnih BSD.
    * Tretji je ,,dislocate``, ki je skript, prilo�en distribuciji
      expect. Za razliko od prej�njih dveh bi moral ta te�i na vseh
      razli�icah Unixa. Podrobnosti o tem, kako dobite expect najdete v
      vpra�anju ,,Kako po�enem passwd, ftp, telnet, tip in druge
      interaktivne programe v skriptu ukazne lupine v ozadju?``.

  Nobeden od teh paketov ne deluje retroaktivno, se pravi, da morate
  pognati proces pod pripomo�kom screen ali pty, �e ga �elite odklopiti
  in priklopiti.

5.11 Je mogo�e ,,vohuniti`` na terminalu, gledajo� izhod, ki se prikazuje na
drugem terminalu?

Subject: Is it possible to "spy" on a terminal ... ?
Date: Wed, 28 Dec 1994 18:35:00 -0500

  Za to obstaja ve� razli�nih poti, �eprav nobena od njih ni popolna:
    * Pripomo�ek kibitz dovoljuje dvema (ali ve�) �lovekoma, da sta v
      stiku prek ukazne lupine (ali poljubnega programa). Uporaba
      vklju�uje:
         + opazovanje ali pomo� pri terminalski seji druge osebe;
         + bele�enje pogovora z mo�nostjo pomika nazaj, shranjevanje
           pogovora, in celo spreminjanje med tekom;
         + mo�tveno igranje iger, urejanje dokumentov ali druga
           opravila, pri katerih ima vsaka oseba dolo�ene kvalitete in
           dolo�ene pomanjkljivosti, ki se komplementirajo.
      kibitz pride kot del distribucije expect. Glejte ,,Kako po�enem
      passwd, ftp, telnet, tip in druge interaktivne programe v skriptu
      ukazne lupine v ozadju?``.
      Za uporabo pripomo�ka kibitz potrebujete dovoljenje osebe, ki jo
      �elite vohuniti. Vohunjenje brez privolitve zahteva manj prijetne
      pristope:
    * Napi�ete lahko program, ki brska po strukturah jedra in opazuje
      izhodni vmesni pomnilnik spornega terminala, ter pri tem izpisuje
      znake, kot se izpisujejo na izhod. To o�itno ni nekaj, kar naj bi
      posku�al kdorkoli, ki nima izku�enj pri delu okoli jedra
      operacijskega sistema Unix. �e ve�, katerokoli metodo boste �e
      uporabili, bo verjetno zelo neprenosljiva.
    * �e �elite to po�eti ves �as na dolo�enem pritrjenem terminalu
      (npr. �e �elite, da bodo lahko operaterji preverili zaslonski
      terminal stroja z drugih strojev), lahko dejansko pove�ete monitor
      s terminalskim kablom. Na primer, vtaknite izhod monitorja v
      serijska vrata drugega stroja, in na teh vratih po�enite program,
      ki bo nekam shranil svoj vhod in ga potem prenesel na druga vrata,
      tista, ki gredo zares na fizi�ni terminal. �e to po�nete, se
      morate prepri�ati, da se ves izhod terminala po�ilja nazaj po
      �ici, �e povezujete le �ice ra�unalnik->terminal, to ni problem.
      To ni nekaj, kar bi lahko po�el nekdo, ki ni doma� z napeljavo
      terminalskih �ic in podobno.
    * Zadnja razli�ica paketa screen vklju�uje ve�uporabni�ki na�in.
      Nekaj podatkov o paketu screen najdete v vpra�anju ,,Je mogo�e
      ponovno priklju�iti proces na terminal, ko je bil ta odklopljen,
      tj. po zagonu programa v ozadju in odjavi?``.
    * �e ima sistem, ki ga uporabljate, tokove (SunOS, SVR4), vam kot
      nasvet priporo�amo program, objavljen v volume 28 arhiva skupine
      comp.sources.misc. In ni ga treba najprej zagnati (vnaprej morate
      nastaviti va� sistem, da samodejno potisne modul advise na tok
      vsaki�, ko se odpre tty ali pty).
    _________________________________________________________________


6. Vpra�anja, povezana z razli�nimi ukaznimi lupinami in njihovimi razlikami

6.1 Se lahko ukazne lupine klasificirajo v kategorije?

Subject: Can shells be classified into categories?
From: [email protected] (Matthew Wicks)
Date: Wed, 7 Oct 92 14:28:18 -0500

  V splo�nem obstajata dva glavna razreda ukaznih lupin. Prvi razred
  sestavljajo lupine, izpeljane iz Bournove ukazne lupine, in vklju�uje
  sh, ksh, bash in zsh. Drugi razred sestavljajo ukazne lupine,
  izpeljane iz C-jevske in vklju�uje csh in tcsh. Kot dodatek je tukaj
  �e rc, za katero ve�ina ljudi meni, da je ,,razred zase``, �eprav
  nekateri lahko ugovarjajo, da rc spada v razred Bournovih ukaznih
  lupin.

  Z zgornjo klasifikacijo in nekaj previdnosti je mogo�e napisati
  skripte, ki bodo delovali v vseh ukaznih lupinah Bournove lupinske
  kategorije, in napisati druge skripte, ki bodo delovali v vseh ukaznih
  lupinah C-jevske lupinske kategorije.

6.2 Kako ,,vklju�im`` en skript ukazne lupine iz drugega lupinskega skripta?

Subject: How do I "include" one shell script from within another shell script?
From: [email protected] (Matthew Wicks)
Date: Wed, 7 Oct 92 14:28:18 -0500

  Vse ukazne lupine Bournove kategorije (vklju�no z rc) uporabljajo ukaz
  ,,.``. Vse ukazne lupine C-jevske kategorije uporabljajo ,,source``.

6.3 Ali vse ukazne lupine podpirajo vzdevke (angl. aliases)? Lahko uporabimo
tudi kaj drugega?

Subject: Do all shells have aliases?  Is there something else that can be used?
From: [email protected] (Matthew Wicks)
Date: Wed, 7 Oct 92 14:28:18 -0500

  Vse pomembnej�e ukazne lupine, razen sh, podpirajo vzdevke, a vse ne
  delajo z njimi na enak na�in. Na primer, nekateri ne sprejemajo
  argumentov.

  �eprav niso strogo ekvivalentne, imajo funkcije ukaznih lupin (ki
  obstajajo v ve�ini ukaznih lupin Bournove kategorije) skoraj isto
  funkcionalnost, kot vzdevki. Funkcije v ukaznih lupinah lahko po�nejo
  stvari, ki jih vzdevki ne morejo. Funkcije ne obstajajo v Bournovih
  ukaznih lupinah, izpeljanih iz Unixa Version 7, ki vklju�uje System
  III in BSD 4.2. BSD 4.3 in System V imata ukazne lupine s podporo
  funkcij.

  Uporabite unalias za odstranitev vzdevkov (nastalih z alias) in unset
  za odstranitev funkcij.

6.4 Kako se prirejajo spremenljivke ukaznih lupin?

Subject: How are shell variables assigned?
From: [email protected] (Matthew Wicks)
Date: Wed, 7 Oct 92 14:28:18 -0500

  Ukazne lupine C-jevske kategorije uporabljajo

set spremenljivka=vrednost

  za spremenljivke, lokalne ukazni lupini, in

setenv spremenljivka vrednost

  za okoljske spremenljivke. Spremenljivk se v teh ukaznih lupinah
  znebite z uporabo ukazov unset in unsetenv.

  Ukazne lupine Bournove kategorije uporabljajo

spremenljivka=vrednost

  in morda potrebujejo tudi

export IME_SPREMENLJIVKE

  da postavijo spremenljivko v okolje. Spremenljivk se znebite z unset.

6.5 Kako ugotovim, ali poganjam interaktivno ukazno lupino?

Subject: How can I tell if I am running an interactive shell?
From: [email protected] (Matthew Wicks)
From: [email protected] (DaviD W. Sanderson)
Date: Fri, 23 Oct 92 11:59:19 -0600

  V ukaznih lupinah C-jevske kategorije, poglejte spremenljivko $prompt.

  V Bournovi kategoriji ukaznih lupin lahko pogledate spremenljivko
  $PS1, vendar je bolj pogledati spremenljivko $-. �e $- vsebuje ,-i`,
  je ukazna lupina interaktivna. Preverite takole:

case $- in
*i*)    # izvedi stvari za interaktivno ukazno lupino
       ;;
*)      # izvedi stvari za neinteraktivno ukazno lupino
       ;;
esac

6.6 Katere datoteke ,,s piko`` uporabljajo razli�ne ukazne lupine?

Subject: What "dot" files do the various shells use?
From: [email protected] (Matthew Wicks)
From: [email protected] (Thomas M. Breuel)
Date: Wed, 28 Oct 92 03:30:36 +0100

  �eprav ta seznam morda ni popoln, ponuja ve�ino informacij.

  csh
         Nekatere razli�ice imajo sistemski datoteki .cshrc in .login.
         Vsaka razli�ica jih postavlja na razli�na mesta.

         Ob nastopu (v tem vrstnem redu):

         + .cshrc - vedno; razen ob uporabi izbire -f.
         + .login - prijavne ukazne lupine.

         Ob prekinitvi:

         + .logout - prijavne ukazne lupine.

         Ostalo:

         + .history - shranjuje zgodovino (temelji na $savehist).

  tcsh
         Ob nastopu (v tem vrstnem redu):

         + /etc/csh.cshrc - vedno.
         + /etc/csh.login - prijavne ukazne lupine.
         + .tcshrc - vedno.
         + .cshrc - �e manjka .tcshrc.
         + .login - prijavne ukazne lupine.

         Ob prekinitvi:

         + .logout - prijavne ukazne lupine.

         Ostalo:

         + .history - shranjuje zgodovino (temelji na $savehist).
         + .cshdirs - shranjuje sklad imenikov.

  sh
         Ob nastopu (v tem vrstnem redu):

         + /etc/profile - prijavne ukazne lupine.
         + .profile - prijavne ukazne lupine.

         Ob prekinitvi:

         + katerikoli ukaz (ali skript), dolo�en z ukazom:

trap "ukaz" 0

  ksh
         Ob nastopu (v tem vrstnem redu):

         + /etc/profile - prijavne ukazne lupine.
         + .profile - prijavne ukazne lupine; razen ob uporabi izbire
           -p.
         + $ENV - vedno, �e je nastavljena; razen ob uporabi izbire -p.
         + /etc/suid_profile - ob uporabi izbire -p.

         Ob prekinitvi:

         + katerikoli ukaz (ali skript), dolo�en z ukazom:

trap "ukaz" 0

  bash
         Ob nastopu (v tem vrstnem redu):

         + /etc/profile - prijavne ukazne lupine.
         + .bash_profile - prijavne ukazne lupine.
         + .profile - prijavne ukazne lupine, �e ni datoteke
           .bash_profile.
         + .bashrc - interaktivne neprijavne ukazne lupine.
         + $ENV - vedno, �e je nastavljena.

         Ob prekinitvi:

         + .bash_logout - prijavne ukazne lupine.

         Drugo:

         + .inputrc - inicializacija branja vrstic.

  zsh
         Ob nastopu (v tem vrstnem redu):

         + .zshenv - vedno, razen ob dolo�itvi izbire -f.
         + .zprofile - prijavne ukazne lupine.
         + .zshrc - interaktivne ukazne lupine, razen ob dolo�itvi
           izbire -f.
         + .zlogin - prijavne ukazne lupine.

         Ob prekinitvi:

         + .zlogout - prijavne ukazne lupine.

  rc
         Ob nastopu:

         + .rcrc - prijavne ukazne lupine.

6.7 Zanima me ve� o razlikah med razli�nimi ukaznimi lupinami.

Subject: I would like to know more about the differences ... ?
From: [email protected] (Matthew Wicks)
Date: Wed, 7 Oct 92 14:28:18 -0500

  Zelo podrobna primerjava ukaznih lupin sh, csh, tcsh, ksh, bash, zsh,
  in rc je v datoteki dostopna po anonimnem FTP-ju z ve� naslovov:
    * ftp://ftp.uwp.edu/pub/vi/docs/shell-100.BetaA.Z
    * ftp://utsun.s.u-tokyo.ac.jp/misc/vi-archive/docs/shell-100.BetaA.Z

  Ta datoteka primerja zastavice, programsko skladnjo, vhodno/izhodne
  preusmeritve in parametre/okoljske spremenljivke ukaznih lupin. Ne
  ukvarja pa se s tem, katere datoteke ,,s piko`` se uporabljajo in
  dedovanjem okoljskih spremenljivk in funkcij.
    _________________________________________________________________


7. Pregled razli�ic Unixa

7.1 Opozorilo in uvod

From: "Pierre (P.) Lewis" <[email protected]>
Date: Tue Aug 15 15:14:00 EDT 1995
X-Version: 2.9

  Opozorilo bralcem: Rad bi osve�il ta PZV s spletnimi kazalci na
  razli�ne Unixe, ki jih omenjam. Ne oklevajte s po�iljanjem, slej ko
  prej bom kon�al osve�itev tega dela. E-po�ta: [email protected].

  Nadaljnje besedilo je ponujeno brez zagotovitve to�nosti ali
  popolnosti. Storil sem, kar sem lahko storil v �asu, ki ga imam na
  voljo, pogosto z nasprotujo�imi si informacijami, in delo �e vedno
  napreduje. Upam, da bom nadaljeval z izbolj�evanjem tega povzetka.
  Komentarji in popravki so dobrodo�li: [email protected].

  Najprej kratka definicija. Z imenom ,,Unix`` mislimo operacijski
  sistem, tipi�no napisan v C-ju, s hierarhi�no urejenim datote�nim
  sistemom, integracijo V/I za datoteke in naprave, katerega vmesnik
  sistemskih klicev vklju�uje storitve kot sta fork(), pipe(), in
  katerega uporabni�ki vmesnik vklju�uje orodja kot so cc, troff, grep,
  awk, in izbiro ukazne �koljke. Opazite, da je ,,UNIX`` registrirana
  blagovna znamka podjetja USL (AT&T), zdaj v lasti konzorcija X/Open, a
  bo tukaj uporabljana v svojem generi�nem pomenu.

  Ve�ina Unixov je izpeljanih bolj ali manj neposredno iz izvorne kode,
  napisane v AT&T (zdaj Novell, verjetno je v ve�ini �e vedno kak�en
  ostanek prvotne kode prve razli�ice v C-ju), a obstajajo tudi kloni
  (se pravi, z Unixom zdru�ljivi sistemi brez kode AT&T).

  Kot dodatek, obstajajo okolja, podobna Unixu (npr. VOS), ki po�ivajo
  na drugih operacijskih sistemih (OS), in OS, ki jih je navdihnil Unix
  (da, tudi DOS!). Teh tukaj ne obravnavamo. Le malo pi�emo o Unixih, ki
  delujejo v realnem �asu (angl. real-time Unices), �eprav na�rtujemo
  ve�.

  Unix pride v izredno razli�nih okusih. To je v veliki meri posledica
  dostopnosti izvorne kode in preprostosti prenosa in spremembe Unixa.
  Tipi�no, izdelovalec Unixa za�ne z eno osnovnih vrst (glejte spodaj),
  vzame ideje/kodo od druge ve�je vrste, doda in spremeni veliko stvari,
  itd. Rezultat je �e ena nova vrsta Unixa. Dandanes je na voljo
  dobesedno na stotine Unixov, najbli�ja stvar standardnemu Unixu je (po
  definiciji) System V.

  Ta odgovor je bil napisan predvsem iz podatkov na Mre�i in e-po�ti.
  Nekaj posebnih virov je omenjenih v ustreznih razdelkih.

  Priznanja (poleg virov): [email protected], [email protected],
  [email protected], [email protected], [email protected],
  root%[email protected], [email protected],
  [email protected], [email protected],
  [email protected], [email protected], [email protected]
  [4.4BSD], [email protected], [email protected],
  [email protected], [email protected], [email protected],
  [email protected], [email protected], [email protected],
  [email protected], [email protected],
  [email protected], [email protected],
  [email protected], [email protected],
  [email protected], [email protected],
  [email protected], [email protected], [email protected],
  [email protected], [email protected], [email protected],
  [email protected], veliko ljudem, ki sem jih �e pozabil
  na�teti, in vsem drugim ljudem, katerih sporo�ila berem. Najlep�a
  hvala!

7.2 Zelo kratek pogled na zgodovino Unixa

  Zgodovina Unixa se za�ne davnega leta 1969 na slavnem
  ,,malo-uporabljanem ra�unalniku PDP-7 v kotu`` na katerem so Ken
  Thompson, Dennis Ritchie (�rka ,R` v ,,K&R``) in drugi za�eli delo na
  tem, kar je potem postalo Unix. Ime ,,Unix`` je bilo mi�ljeno kot
  besedna igra imena obstoje�ega operacijskega sistema ,,Multics`` (in
  se je najprej pisalo ,,Unics`` - iz angl. UNiplexed Information and
  Computing System).

  Prvih 10 let je bil razvoj Unixa pravzaprav omejen na Bell Labs. Te
  prve razli�ice so bile ozna�ene kot ,,Version n`` ali ,,Nth Edition``
  (priro�nikov), in so delovale na ra�unalnikih DEC PDP-11 (16 bitov) in
  poznej�ih VAX-ih (32 bitov). Pomembnej�e razli�ice vklju�ujejo:

    * V1 (1971): Prva razli�ica Unixa, v zbirniku na PDP-11/20.
      Vklju�evala je datote�ni sistem, fork(), roff, ed. Uporabljana je
      bila kot urejevalnik besedila za pripravo patentov. Klic pipe() se
      je pojavil prvi� v V2!
    * V4 (1973): Prepisan v C, kar je verjetno najpomembnej�i dogodek v
      zgodovini tega OS: pomeni, da se Unix lahko prena�a na novo
      strojno opremo v nekaj mesecih, spremembe pa so preproste.
      Programski jezik C je bil prvotno na�rtovan za operacijski sistem
      Unix, in torej obstaja mo�na sinergija med C-jem in Unixom.
    * V6 (1975): Prva razli�ica Unixa, �iroko dostopna zunaj ustanove
      Bell Labs (posebej na univerzah). To je bil tudi za�etek
      raznolikosti in popularnosti Unixa. 1.xBSD (PDP-11) je bil
      izpeljan iz te razli�ice. J. Lions je objavil svoj ,,Komentar o
      operacijskem sistemu Unix``, ki temelji na V6.
    * V7 (1979): Za veliko ljudi je to ,,zadnji pravi Unix``, ali
      ,,izbolj�anje glede na vse prej�nje in prihodnje Unixe`` [Bourne].
      Vklju�eval je popoln K&R C, uucp, Bournovo ukazno lupino. V7 je
      bil prenesen na VAX kot 32V. Jedro V7 je bilo veliko borih 40
      Kbytov!
      Tukaj so (za referenco) sistemski klici V7: _exit, access, acct,
      alarm, brk, chdir, chmod, chown, chroot, close, creat, dup, dup2,
      exec*, exit, fork, fstat, ftime, getegid, geteuid, getgid, getpid,
      getuid, gtty, indir, ioctl, kill, link, lock, lseek, mknod, mount,
      mpxcall, nice, open, pause, phys, pipe, pkoff, pkon, profil,
      ptrace, read, sbrk, setgid, setuid, signal, stat, stime, stty,
      sync, tell, time, times, umask, umount, unlink, utime, wait,
      write.

  Omenjene razli�ice Vn je razvila skupina Computer Research Group (CRG)
  ustanove Bell Labs. Druga skupina, Unix System Group (USG), je
  odgovorna za podporo. Tretja skupina pri Bell Labs je bila tudi
  vpletena v razvijanje Unixa, Programmer's WorkBench (PWB), kateri se
  moramo zahvaliti, na primer, za sccs, poimenske cevi (angl. named
  pipes) in druge pomembne zamisli. Obe skupini sta se leta 1983
  zdru�ili v Unix System Development Lab.

  Druga razli�ica Unixa je bila CB Unix (Columbus Unix) s kolumbijske
  veje Bell Labs, odgovorne za sisteme za podporo operacij. Njihov
  glavni prispevek je del SV IPC.

  Delo na Unixu v Bell Labs se je v osemdesetih nadaljevalo. Serije V je
  naprej razvijala skupina CRG (Stroustrup omenja V10 v drugi izdaji
  njegove knjige o C++), a sicer ne sli�imo veliko o tem. Podjetje, zdaj
  odgovorno za Unix (System V) se imenuje Unix System Laboratories (USL)
  in je bilo v ve�inski lasti koncerna AT&T do za�etka leta 1993, ko ga
  je kupil Novell. Konec leta 1993 je Novell odstopil pravice do uporabe
  blagovne znamke ,,UNIX`` mednarodnemu zdru�enju X/Open.

  A z Unixom se je veliko dogajalo zunaj AT&T, posebej na univerzi
  Berkeley (s koder prihaja druga ve�ja vrsta Unixa). Proizvajalci
  (predvsem delovnih postaj) so prav tako prispevali veliko (npr. NFS
  podjetja Sun).

  Knjiga ,,Life with Unix`` Dona Libesa in Sandy Ressler je fascinantno
  branje za vsakogar, ki ga zanima Unix, in pokriva veliko zgodovine,
  posredovanj, itd. Dobr�en del tega razdelka je povzetega po tej
  knjigi.

7.3 Glavne vrste Unixa

From: "Pierre (P.) Lewis" <[email protected]>
Date: Mon Jan  9 16:59:14 EST 1995
X-Version: 2.7

  Naslednje je bolj ali manj pogled zgodnjih 90-ih.

  Do nedavnega sta obstajali dve glavni vrsti Unixa: System V (pet)
  podjetja AT&T, in Berkeley Software Distribution (BSD). SVR4 je
  pravzaprav me�anica obeh teh vrst. Konec 1991 je bil pri Open Software
  Foundation izdan OSF/1 (kot neposreden tekmec Systemu V) in lahko
  (prihodnost bo povedala) spremeni to sliko.

  V nadaljevanju sledi pregled glavnih izdaj in lastnosti sistemov
  System V, BSD in OSF/1.

  System V podjetja AT&T. Tipi�no na strojni opremi Intela. Najbolj
  prena�ani Unix, tipi�no z raz�iritvami BSD (csh, nadzor opravil,
  termcap, curses, vi, simboli�ne povezave). Evolucijo Systema V zdaj
  nadzoruje Unix International (UI). �lanstvo UI vklju�uje AT&T, Sun,
  ... Novi�arski skupini: comp.unix.sysv286 in comp.unix.sysv386. Glavne
  izdaje:
    * System III (1982): prvi komercialni Unix podjetja AT&T
         + vrste FIFO (imenovane cevi) (pozneje?)
    * System V (1983):
         + paket IPC (shm, msg, sem)
    * SVR2 (1984):
         + funkcije ukazne lupine (sh)
         + SVID (definicija vmesnika System V, angl. System V Interface
           Definition)
    * SVR3 (1986) za platforme ?:
         + tokovi (STREAMS, navdih pri V8), poll(), TLI (omre�no
           programje)
         + RFS
         + deljene programske knji�nice
         + SVID 2
         + prenos pomnilni�kih strani na zahtevo (angl. demand paging),
           �e strojna oprema to podpira
    * SVR3.2:
         + zdru�itev s Xenixom (Intel 80386)
         + omre�enost
    * SVR4 (1988), glavni tok implementacij Unixa, me�anica sistemov
      System V, BSD, in SunOS.
         + S SVR3: sistemska administracija, terminal I/F, tiskalnik (z
           BSD-ja?), RFS, STREAMS, uucp
         + Z BSD-ja: FFS, TCP/IP, vti�i (angl. sockets), select(), csh
         + S SunOS: NFS, grafi�ni vmesnik OpenLook, X11/NeWS, podsistem
           navideznega pomnilnika z datotekami, ki ustrezajo pomnilniku,
           deljene knji�nice (!= od SVR3?)
         + ksh
         + ANSI C
         + internacionalizacija (8-bitno �ist)
         + ABI (Application Binary Interface - rutine namesto trapov (?
           angl. routines instead of traps))
         + POSIX, X/Open, SVID3
    * SVR4.1
         + asinhron V/I (s SunOS?)
    * SVR4.2 (temelji na SVR4.1ES)
         + datote�ni sistem Veritas, ACL-ji
         + dinami�no nalaganje modulov jedra
    * Prihodnost:
         + SVR4 MP (ve�procesorski)
         + uporaba mikrojedra Chorus

  Berkeley Software Distribution (BSD, distribucija programja z
  Berkeleya). Tipi�na na VAX-ih, RISC-ih, ve� delovnih postajah. Zdaj
  bolj dinami�ne, raziskovalne razli�ice kot System V. BSD Unix je
  odgovoren za ve�ino priljubljenosti Unixa. Ve�ina izbolj�av Unixa se
  je za�ela tukaj. Skupina, odgovorna na UCB (University of California,
  Berkeley) je Computer System Research Group (CSRG). Ukinili so jo leta
  1992. Novi�arska skupina: comp.unix.bsd. Glavne izdaje:

    * 2.xBSD (1978) za PDP-11, �e vedno pomemben? (2.11BSD je bil izdan
      1992!).
         + csh
    * 3BSD (1978):
         + navidezni pomnilnik
    * 4.?BSD:
         + termcap, curses
         + vi
    * 4.0BSD (1980).
    * 4.1BSD (?): osnova za poznej�e razli�ice AT&T CRG
         + nadzor opravil
         + samodejna nastavitev jedra
         + vfork()
    * 4.2BSD (1983):
         + TCP/IP, vti�i, ethernet
         + datote�ni sistem UFS: dolga imena datotek, simboli�ne
           povezave
         + novi zanesljivi signali (v SVR3 zdaj zanesljivi signali 4.1)
         + select()
    * 4.3BSD (1986) za VAX, ?:
         + TCP/IP, vti�i, ethernet
         + datote�ni sistem UFS: dolga imena datotek, simboli�ne
           povezave
         + novi zanesljivi signali (v SVR3 zdaj zanesljivi signali 4.1)
         + select()
    * 4.3 Tahoe (1988): 4.3BSD z izvorno kodo, podpora za Tahoe
      (32-bitni supermini)
         + Fat FFS
         + novi algoritmi za TCP
    * 4.3 Reno (1990) za VAX, Tahoe, HP 9000/300:
         + ve�ina standarda POSIX 1003.1
         + novi algoritmi za TCP
         + omre�ni datote�ni sistem NFS (od Suna)
         + pomnilni�ki datote�ni sistem MFS
         + OSI: TP4, CLNP, ISODE-ov FTAM, VT in X.500; SLIP
         + Kerberos
    * Trakova Net1 (?) in Net2 (junij 1991): del BSD, za katerega ni
      potrebna pravna za��ita raz�irjanja USL
    * 4.4BSD (alpha, junij 1992) za HP 9000/300, Sparc, 386, DEC, drugi;
      niti VAX, niti Tahoe; dve razli�ici, lahka (vsebina  Net2 plus,
      popravki in nove arhitekture) in ote�eno (vse, potrebuje licenco
      USL):
         + nov navidezni pomnilni�ki sistem (VMS), ki temelji na Mach
           2.5
         + vmesnik navideznega datote�nega sistema, logi�no strukturiran
           datote�ni sistem, velikost lokalnega datote�nega sistema do
           2^63, NFS (prosto raz�irljiv, deluje s Suni, �ez UDP ali TCP)
         + podpora omre�jem ISO/OSI (izpeljanim iz ISODE):
           TP4/CLNP/802.3 in TP0/CONS/X.25, seje in zgornje v
           uporabni�kem prostoru (angl. session and above in user
           space); FTAM, VT, X.500.
         + ve�ina POSIX.1 (posebej nov terminalski gonilnik a la SV),
           veliko od POSIX.2, izbolj�an nadzor opravil; glave ANSI C
         + Kerberos integriran z ve�ino sistema (vklju�no z NFS)
         + izbolj�ave TCP/IP (vklju�no s predvidevanjem glave (angl.
           header prediction), SLIP)
         + pomembne spremembe jedra (nov dogovor o sistemskih klicih,
           ...)
         + druge izbolj�ave: vrste FIFO, zaklepanje datoteke v dolo�enem
           obmo�ju bytov (angl. byte-range file locking)

  Ustanova Open Software Foundation (OSF) je konec leta 1991 izdala svoj
  Unix imenovan OSF/1. �e vedno potrebuje licenco SVR2.
  Zdru�ljiv/podrejen SVID 2 (in prihajajo�i 3), POSIX, X/Open, itd.
  �lani OSF vklju�ujejo Apollo, Dec, HP, IBM, ...

    * OSF/1 (1991):
         + po�iva na jedru Mach 2.5
         + simetri�no multiprocesiranje, paralelizirano jedro, niti
         + logi�ni diski, zrcaljenje diska (angl. disk mirroring), UFS
           (domoroden), S5 FS, NFS
         + izbolj�ana varnost (B1 z nekaterimi lastnostmi B2, B3; ali
           C2), 4.3BSD admin
         + STREAMS, TLI/XTI, vti�i (angl. sockets)
         + deljene knji�nice, dinami�ni nalagalnik (vklju�no z jedrom)
         + grafi�ni vmesnik Motif
    * izdaja 1.3 (junij 1994)
         + OSF/1 MK (mikro-jedro) temelji na Mach 3.0
         + zado��a trenutnemu osnutku specifikacije Specification 1170
           (mi�ljeno za standardizacijo v procesu Fast Track konzorcija
           X/Open)
         + Data Capture I/F, Common Data Link I/F,
         + podpora ISO 10646 (Unicode) in 64-bitna podpora

  Ta seznam ve�jih vrst bi moral verjetno vklju�evati tudi Xenix
  (Microsoft), ki je bil osnova za mnoge prenose. Izpeljan je bil iz V7,
  S III in kon�no System V, na zunaj jim je podoben, a znatno spremenjen
  navznoter (zmogljivosti so ugla�ene za mikrora�unalnike).

  Dve zelo dobri knjigi opisujeta notranjo sestavo dveh glavnih vrst. Ti
  knjigi sta:
    * System V: ,,Design of the Unix Operating System``, M. J. Bach.
    * BSD: ,,Design and Implementation of the 4.3BSD Unix Operating
      System``, Leffler, McKusick, Karels, Quaterman

  Za dober uvod v OSF/1 (ne tako tehni�en kot prej�nji dve knjigi),
  glejte: ,,Guide to OSF/1, A Technical Synopsis``, izdano pri zalo�bi
  O'Reilly. Na SunOS, ,,Virtual Memory Architecture in SunOS`` in
  ,,Shared Libraries in SunOS`` v spisih ,,USENIX Proceedings``, poletje
  1989.

  Dober nabor �lankov o prihodnosti Unixa je ,,Unix Variants`` v izdaji
  revije Unix Review, april 1992. Drugi dobri viri informacij
  vklju�ujejo datoteko bsd-faq in mnoge novi�arske skupine, omenjene v
  besedilu.

7.4 Glavni igralci in standardi Unixa

From: "Pierre (P.) Lewis" <[email protected]>
Date: Mon Jan 21 16:59:14 EST 1995
X-Version: 2.8

  Najpomembnej�i igralci na odru Unixa so trenutno (zgodnje leto 1995,
  popravki so zelo dobrodo�li, to so novi byti):
    * Novell, ki je kupil USL (zgodaj 1993) in ima zdaj izvorno kodo.
    * X/Open, ki ima tr�ne pravice do uporabe blagovne znamke ,,UNIX``.
    * OSF, kot razvijalec OSF/1 in Motif, in kot organizacija, ki vodi
      projekt CODE (OSF-jev nov delovni model). Organizacija OSF je bila
      reorganizirana leta 1994 (in Sun se je priklju�il), odnosi z
      X/Open so bili formalizirani.
    * IEEE s standardi POSIX, LAN.
    * PowerOpen (IBM, Apple, Motorola, Bull, drugi), ki promovira
      PowerPC. Ne zame�ajte ga z grafi�nim okoljem z istim imenom.

  Naslednje kratko opisuje najpomembnej�e standarde, ki se nana�ajo na
  Unix.

    * IEEE:
         + standardi 802.x (LAN) (LLC, ethernet, token ring, token bus)
         + POSIX (ISO 9945?): Portable Operating System I/F - prenosljiv
           vmesnik operacijskega sistema (Unix, VMS in OS/2!) (samo ? ti
           so bili do sedaj kon�ani)
              o 1003.1: knji�ni�ne procedure (ve�inoma sistemski klici)
                - pribli�no V7 razen za signale in terminalski vmesnik
                (1990)
              o 1003.2: ukazna lupina in pripomo�ki
              o 1003.3: testne metode in ustreznost
              o 1003.4: realni �as: binarni semaforji, zaklepanje
                pomnilnika procesa, v pomnilnik preslikane datoteke,
                deljen pomnilnik, razporejanje prioritet, signali v
                realnem �asu, ure in �asomerilci, podajanje sporo�il
                IPC, sinhroniziran V/I, asinhron V/I, datoteke v realnem
                �asu
              o 1003.5: povezave jezika Ada
              o 1003.6: varnost
              o 1003.7: sistemsko upravljanje (vklju�uje tiskanje)
              o 1003.8: transparenten dostop do datotek
              o 1003.9: povezave jezika FORTRAN
              o 1003.10: super-ra�unalni�tvo
              o 1003.12: vmesniki, neodvisni od protokola
              o 1003.13: profili v realnem �asu (angl. real-time
                profiles)
              o 1003.15: vmesniki za super-ra�unalni�ki batch (?)
              o 1003.16: povezave jezika C (?)
              o 1003.17: storitve z imeniki
              o 1003.18: standardiziran profil po POSIX (?)
              o 1003.19: povezave jezika FORTRAN 90
    * X/Open (konzorcij proizvajalcev, ustanovljen 1984):
         + X/Open Portability Guides (XPGn) - vodniki po zdru�ljivosti z
           X/Open:
              o XPG2 (1987), mo�an vpliv SV
                   # Vol 1: ukazi in pripomo�ki
                   # Vol 2: sistemski klici in knji�nice
                   # Vol 3: terminalski vmesnik (curses, termio), IPC
                     (SV), internacionalizacija
                   # Vol 4: programski jeziki (C, COBOL!)
                   # Vol 5: upravljanje s podatki (ISAM, SQL)
              o XPG3 (1989) dodaja: X11 API (sistemski klici za X11)
              o XPG4 (1992) dodaja: XTI? 22 komponent
         + zaporedja vmesnikov XOM:
              o XOM (X/Open Object Management) splo�ni mehanizmi
                vmesnikov za naslednje
              o XDS (X/Open Directory Service)
              o XMH (X/Open Mail ??)
              o XMP (X/Open Management Protocols) - ne Bullov CM API?
         + X/Open ima zdaj pravice za uporabo blagovne znamke ,,UNIX``
           (pozno 1993);
         + ,,Spec 1170`` - ta specifikacija v pripravi opisuje skupen
           API (programski vmesnik aplikacij), ki mu bodo morali
           zadostiti proizvajalci, ki �elijo uporabljati ime ,,UNIX``
           (ko bodo na voljo zbirke testov). Zdru�itev SVID, OSF-jev AES
           in druge re�i.
    * AT&T - (je to �e relevantno leta 1994? Kdo je zdaj odgovoren za
      SVID, TLI, APLI?)
         + System V Interface Definition (SVID) - definicija vmesnika
           Systema V
              o SVID1 (1985, SVR2)
                   # Vol 1: sistemski klici in knji�nice (podobno
                     XPG2.1)
              o SVID2 (1986, SVR3)
                   # Vol 1: sistemski klici in knji�nice (osnova,
                     raz�iritve jedra)
                   # Vol 2: ukazi in pripomo�ki (osnovni, napredni,
                     upravni�ki, razvoj programja), terminalski vmesnik
                   # Vol 3: terminalski vmesnik (spet), STREAMS in TLI,
                     RFS
              o SVID3 (19??, SVR4) dodaja
                   # Vol 4: ?? &c
         + vmesniki API (programski vmesnik za aplikacije)
              o Transport Library Interface (TLI)
              o ACSE/Presentation Library Interface (APLI)
    * COSE (COmmon Open Software Environment - skupno okolje odprtega
      programja) [IBM, HP, SunSoft in drugi]: cilj je zbli�ati razli�ne
      platforme Unixa. Iniciative v naslednjih podro�jih:
         + namizna okolja
         + aplikacijski vmesnik API (kot Spec 1180 - en sam programski
           vmesnik) - verjetneje najpomembnej�i dose�ek na tej to�ki;
           odstrani razlike med SCO, AIX, Solaris, HP-UX, UnixWare.
         + porazdeljene ra�unske storitve (OSF-jev DCE in SunSoftov ONC)
         + objektne tehnologije (OMG-jeva CORBA)
         + grafika
         + ve�predstavnost
         + upravljanje sistemov
    * PowerOpen Environment (POE, okolje PowerOpen), ki ga promovira
      zdru�enje PowerOpen (POA). Standard za Unixu podobne OS, ki te�ejo
      na �ipu PowerPC. Definira:
         + API (programski vmesnik za aplikacije, izpeljan iz AIX,
           ustreza POSIX, XPG4, Motif, &c) in
         + ABI (binarni aplikacijski vmesnik), razlo�ljiv faktor med
           drugimi standardi kot so POSIX, XPG4, &c.. Katerikoli sistem,
           ki bo ustrezal POE, bo lahko poganjal katerokoli programje za
           POE.
      Klju�ne odlike:
         + zasnova na arhitekturi PowerPC
         + neodvisnost od strojnega vodila
         + implementacije sistema se lahko raztezajo od prenosnikov do
           super-ra�unalnikov
         + potrebuje ve�uporabni�ki, ve�opravilni operacijski sistem
         + omre�na podpora
         + raz�iritve X windows, Motif
         + ustreznost preizku�ena in potrjena od neodvisne stranke (POA)
      AIX 4.1.1 bo ustrezal PowerOpen. MacOS ne ustreza in tudi ne bo.
      (Zgornje je prirejeno iz powerpc-faq novi�arske skupine
      comp.sys.powerpc.)

  IBM je vpleten v projekt COSE in v projekt POE. Kako neki bosta tadva
  sodelovala?

7.5 Ugotovitev vrste va�ega Unixa

From: "Pierre (P.) Lewis" <[email protected]>
Date: Mon May 30 15:44:28 EDT 1994
X-Version: 2.6

  Ta razdelek na�teva vrsto stvari, ki jih lahko pogledate v poskusu, da
  bi ugotovili osnovno vrsto va�ega Unixa. Glede na precej�njo izmenjavo
  kode in idej med razli�nimi vrstami in mnogih sprememb, ki so jih
  naredili proizvajalci, je vsaka izjava oblike ,,Ta Unix je tipa
  SVR2!`` v najbolj�em primeru statisti�na (razen nekaterih prenosov
  SVRn). Veliko Unixov ponuja tudi ve�ino iz obeh svetov (pome�ano, kot
  SunOS, ali striktno razlo�eno, kot Apollo?). Zato ta razdelek verjetno
  ni preve� uporaben ...

  Pomaga vam lahko tudi seznam lastnosti iz prej�njih razdelkov. Na
  primer, �e ima sistem poll(2), ne pa tudi select(2), je zelo verjetno,
  da izhaja iz SVR3. Namig vam lahko da tudi ime OS, kot tudi prijavno
  sporo�ilo (npr. SGI-jevo ,,IRIX SVR3.3.2``) ali izhod ukaza ,,uname
  -a``. Dostopni ukazi vam lahko tudi dajo namig, a to je verjetno manj
  zanesljivo kot lastnosti jedra. Na primer, tip terminalske
  inicializacije (inittab ali ttys) je bolj zanesljiv indikator, kot
  tiskalni�ki podsistem.

Lastnost            Tipi�no v SVRx          Tipi�no v xBSD

ime jedra           /unix                   /vmunix

terminalska
inicializacija      /etc/inittab            /etc/ttys (le getty do 4.3)

zagonska
inicializacija      imeniki /etc/rc.d       datoteke /etc/rc.*

mountani datote�ni
sistem              /etc/mnttab             /etc/mtab

obi�ajna ukazna
lupina              sh, ksh                 csh, #! hack

domorodni dat.
sistem              S5 (blk: 512-2K)        UFS (blk: 4K-8K)
                   imena dat. <= 14 bytov  imena datotek < 255 bytov

skupine             potrebuje newgrp(1)     avtomatsko �lanstvo
                   SVR4: ve� skupin

tiskalni�ki
podsistem           lp, lpstat, cancel      lpr, lpq, lprm (lpd daemon) ??

nadzor terminala    termio, terminfo,       termios (sgtty pred 4.3reno)
                   SVR4: termios (POSIX)   termcap

nadzor opravil      >= SVR4                 da

ukaz ps             ps -ef                  ps -aux

ve�kratni wait      poll                    select

string fcns         memset, memcpy          bzero, bcopy

mapiranje
procesov            /proc  (SVR4)

  Ko se pomikamo v pozna 90-ta leta, je to verjetno vedno manj in manj
  relevantno.

7.6 Kratki opisi nekaterih znanih (komercialnih/prostih) Unixov

From: "Pierre (P.) Lewis" <[email protected]>
Date: Tue Aug 15 15:14:00 EDT 1995
X-Version: 2.9

  (Sploh nisem zadovoljen s tem razdelkom, �al nimam niti �asa, niti
  dokumentacije, da bi ga zelo izbolj�al. Vseboval naj bi le Unixe,
  znane �ir�emu ob�instvu. Majhni in neameri�ki Unixi so dobrodo�li,
  npr. Eurix. Nujno preformatiranje.)

  Ta razdelek na�teva (po abecedi) nekaj bolj znanih Unixov skupaj s
  kratkim opisom njihove narave. �al je zastarel skoraj po definiciji
  ...

  AIX: IBM-ov Unix, temelji na SVR2 (poznej�i na SVR3.2?) z raznimi
  stopnjami raz�iritev BSD za razli�no strojno opremo. Lasten sistemski
  upravljalnik (SMIT). Podpira CP 850 in Latin-1. Precej razli�en od
  ve�ine Unixov in tudi med sabo. Novi�arska skupina: comp.unix.aix.
    * 1.x (za 386 PS/2)
    * 2.x (za PC RT)
    * 3.x (za RS/6000), paging kernel, logical volume manager, i18n;
    * 3.2 dodaja TLI/STREAMS. Bazira na SV z veliko izbolj�avami.
    * 4.1 je zadnji (vklju�uje podporo za PowerPC?)
    * AIX/ESA, te�e na ra�unalnikih mainframe S/370 in S/390, temelji na
      OSF/1. AIX bi moral biti osnova za OSF/1, a so namesto njega
      izbrali Mach. Upam, da ta podrazdelek konvergira. :-)

  AOS (IBM): Prenos 4.3BSD na IBM PC RT (za izobra�evalne ustanove). Ne
  zame�ajte ga z DG-ovim OS istega imena.

  Arix: SV

  A3000UX (Commodore): Unix (?) SVR4 za ra�unalnike Amiga s procesorjem
  Motorola 68030.

  A/UX (Apple): SV z raz�iritvami z Berkeleya, NFS, Mac GUI. System 6
  (pozneje System 7) te�e kot gost A/UX (obratno kot MachTen).
  Novi�arska skupina: comp.unix.aux.
    * 2.0: SVR2 z 4.2BSD, aplikacije za Mac System 6.
    * 3.0 (1992): SVR2.2 z 4.3BSD in raz�iritvami SVR3/4; X11R4, MacX,
      TCP/IP, NFS, NIS, RPC/XDR, razli�ne ukazne lupine, UFS ali S5FS.
      aplikacije za System 7.
    * 4.0 bo OSF/1. Toda sli�im, da se je Apple odlo�il pustiti A/UX
      (zdaj bo skupaj z IBM uporabljal AIX za PPC).

  3B1 (680x0): Osnovan na SV, naredil Convergent za AT&T. Novi�arska
  skupina: comp.sys.3b1.

  BNR/2: pomeni BSD Net/2 Release? Vklju�uje NetBSD/1, FreeBSD.

  BOS za Bullov DPX/2 (680x0)
    * V1 (1990): SVR3 z raz�iritvami BSD (FFS, select, vti�i),
      simetri�no MP, X11R3
    * V2 (1991): dodaja nadzor opravil, zrcaljenje diska, varnost C2,
      raz�iritve DCE
    * Obstaja tudi BOS/X, in z AIX zdru�ljiv Unix za delovne postaje
      Bull PPC. Ni znano, v kak�nem sorodu je z zgornjima dvema.

  386BSD: Jolitzov prenos programja Net/2. POSIX, 32-biten, �e vedno v
  stanju alpha (zdaj razli�ica 0.1).

  BSD/386 (80386): od BSDI, z izvorno kodo (naraslo programje Net2)
  Novi�arska skupina: comp.unix.bsd.

  Chorus/MiXV: Unix SVR3.2 (SVR4) okoli zasnove Chorus, ABI/BCS.

  Coherent (Mark Williams Company): Za 80286. klon Unixa, zdru�ljiv z
  V7, nekaj SVR2 (IPC). V4.0 je 32-bitna. Novi�arska skupina:
  comp.os.coherent. Mark Williams je ukinil podjetje v zgodnjem 1995.

  Consensys: SVR4.2

  CTIX: osnova SV, od podjetja Convergent

  D-NIX: SV

  DC/OSx (Pyramid): SVR4. Novi�arska skupina: comp.sys.pyramid.

  DELL UNIX [DELL Computer Corp.]: SVR4

  DomainIX: glejte DomainOS spodaj.

  DomainOS (Apollo, zdaj HP): lasten OS; vrhnja plast je BSD4.3 in SVR3
  (proces lahko uporabi enega, nobenega ali oba). Razvoj je zdaj
  ustavljen, nekatere lastnosti so zdaj v OSF/1 (in NT). Zdaj na SR10.4.
  Ime za SR9.* je bilo DomainIX. Novi�arska skupina: comp.sys.apollo.

  DVIX (NT-jev DVS): SVR2

  DYNIX (Sequent): na osnovi 4.2BSD

  DYNIX/PTX: na osnovi SVR3

  EP/IX (Control Data Corp.): za MIPS 2000/3000/6000/4000; osnova je
  RISC/OS 4 in 5, zado��a POSIX-ABI. Na�ini SVR3, SVR4 in BSD.

  Esix (80386): �isti SVR4, X11, OpenLook (NeWS), Xview

  Eurix (80?86): SVR3.2 (Nem�ija)

  FreeBSD: 386bsd 0.1 s popravki in veliko osve�enimi pripomo�ki.

  FTX: Stratus fault-tolerant OS (stroj 68K ali i860-i960)

  Generics UNIX (80386): SVR4.03 (Nem�ija)

  GNU Hurd (?): ,,vaporware`` Free Software Foundation (FSF): Emulator
  Unixa na jedru Mach 3.0. Veliko GNU-jevih orodij je zelo popularnih
  (Emacs) in uporabljanih v prostih Unixih.

  HELIOS (Perihelion Software): za transputer INMOS in veliko drugih
  platform.

  HP-UX (HP): starej�i iz S III (SVRx), zdaj SVR2 (4.2BSD?) s pripomo�ki
  SV (imajo probleme z odlo�anjem).
    * 6.5: SVR2
    * 7.0: SVR3.2, symlinks
    * 7.5
    * 8.0: osnova BSD? za HP-9000 CISC (300/400) in RISC (800/700),
      delitev knji�nic
    * 9.0: vklju�uje DCE

  Interactive SVR3.2 (80x86): �isti SVR3. Interactive je kupil Sun; bo
  njihov sistem pre�ivel Solaris?

  Idris: prvi klon Unixa, naredil ga je Whitesmith. Majhen Unix? Za
  transputerje INMOS in druge?

  IRIX (SGI): Razli�ica 4: SVR3.2, precej BSD. Razli�ica 5.x (trenutna
  je 5.2) temelji na SVR4. Novi�arska skupina: comp.sys.sgi.

  Linux (386/486/586): Unix pod GNU Public License (vendar ne od FSF).
  Dostopen z izvorno kodo. Zado��a POSIX z raz�iritvami SysV in BSD.
  Prena�a se na Alpha/AXP in PowerPC (prenosi na Amige in Atarije s
  procesorji 680x0 �e obstajajo; prenos se dela tudi na MIPS/4000).
  Novi�arske skupine: comp.os.linux.{ admin, announce, development,
  help, misc}.

  MacBSD, ?: deluje na Mac II (neposredno na strojno opremo).

  MachTen, Tenon Intersystems: te�e kot gost pod MacOS; okolje 4.3BSD s
  TCP, NFS. Pomanj�ana razli�ica: MachTen Personal.

  MacMach (Mac II): 4.3BSD na mikrojedru Mach 3.0, X11, Motif, programje
  GNU, izvorna koda, poskusni System 7 kot opravilo Mach. Popoln z vso
  izvorno kodo (potrebuje licenco Unix).

  Mach386: od Mt Xinu. Temelji na Mach 2.5, z raz�iritvami 4.3BSD-Tahoe.
  Tudi 2.6 MSD (Mach Source Distribution).

  Microport (80x86): �isti SVR4, X11, OpenLook GUI

  Minix (80x86, Atari, Amiga, Mac): klon Unixa, zdru�ljiv z V7. Prodaja
  se z izvorno kodo. Se POSIXizira. Za PC-je in gotovo za veliko drugih
  (npr. transputer INMOS). Novi�arska skupina: comp.os.minix.

  MipsOS: SV-jevski (RISC/OS, zdaj opu��en, je bil BSD-jevski)

  more/BSD (VAX, HP 9000/300): Mt Xinu-ov Unix, temelji na 4.3BSD-Tahoe.

  NCR UNIX: SVR4 (4.2?)

  Net/2 tape (Berkeley, 1991): BSD Unix, posebej zdru�ljiv z 4.3BSD,
  vklju�uje le kodo, prosto kode AT&T, nobene nizkonivojske kode. Glejte
  386BSD in BSD/386 zgoraj.

  NetBSD 0.8: je pravzaprav 386bsd v novi obleki. Prenesen na
  ra�unalnike [34]86, MIPS, Amiga, Sun, Mac. Kak�no je razmerje z Net/2?
    * 1.0 je pri�la ven v 1994

  NEXTSTEP (Intel Pentium in 86486, Hewlett-Packard PA-RISC, NeXT
  68040): BSD4.3 na jedru Mach, lastni grafi�ni vmesnik.
    * 1.x, 2.0, 2.1, 2.2, 3.0, 3.1 (stare)
    * 3.2 (trenutna razli�ica, Intel Pentium in 86486, Hewlett-Packard
      PA-RISC, NeXT 68040)
    * 3.3 (prihaja; na voljo razli�ica za SPARC)
    * 4.0 (bo napovedana, vklju�evala bo razli�ico za Sun SPARC in bo
      upo�tevala OpenStep)
    * NEXTSTEP za PowerPC ali DEC Alpha �e ni napovedan (ali ga
      na�rtujejo?)

  NEWS-OS (Sony)
    * 3.2

  OSF/1 (DEC): DEC-ov prenos OSF/1. Mislim, da je to zdaj (april 1993)
  dostopno na DEC-ovi zadnji 64-bitni Alphi AXP.

  OSx (Pyramid): Dvojni prenos SysV.3 in BSD4.3. Novi�arska skupina:
  comp.sys.pyramid.

  PC-IX (IBM 8086): SV

  Plan 9 (AT&T): napovedan 1992, popoln ponoven napis, ni jasno, kako
  blizu Unixa je. Klju�ne to�ke: distribuiran, zelo majhen, razli�ni
  stroji (Sun, Mips, Next, SGI, generic hobbit, 680x0, PC-ji), C (ne
  C++, kot pravijo govorice), nov prevajalnik, okenski sistem ,,8 1/2``
  (tudi zelo majhen), 16-bitni Unicode, CPE/datote�ni stre�nik na zelo
  hitrih omre�jih.

  SCO Xenix (80x86): Razli�ice za XT (nerobustne!), 286, 386 (s
  preklapljanjem pomnilnika na zahtevo (angl. demand paging)). Danes je
  ve�ino kode iz Systema V. Stabilen izdelek.

  SCO Unix (80x86): SVR3.2 (prenehal jemati kodo USL na tej to�ki).

  Sinix [Siemens]: osnova System V.

  Solaris (Sparc, x86):
    * 1.0: pravzaprav isti kot SunOS 4.1.1, z OpenWindows 2.0 in
      pripomo�ki DeskSet.
    * 1.0.1: SunOS 4.1.2 z multiprocesiranjem (jedro ni ve�nitno); ni za
      386
    * 2.0: (sprva napovedovan kot SunOS 5.0 v 1988) po�iva na SVR4 (s
      simetri�nim MP?), vklju�eval bo podporo za 386; z OpenWindows 3.0
      (X11R4) in OpenLook, DeskSet, ONC, NIS. Oba formata binarnih
      datotek: a.out (BSD) in elf (SVR4). Podpora za Kerberos.
      Prevajalniki odvezani!
    * Solaris zado��a OpenStep (ne-NeXT, toda z NEXTSTEP API) z zadnjo
      razli�ico (1994?).
    * Sun bo poslal svojo implementacijo OpenStep s projektom DOE za
      Solaris. Prve razli�ice bodo za Sunove stroje SPARC, toda pozneje
      se bo pojavila razli�ica za Solaris 2.4 za x86 in PowerPC.

  UHC (80x86): �isti SVR4, X11, Motif

  Ultrix (DEC): temelji na 4.2BSD z veliko 4.3. Novi�arska skupina:
  comp.unix.ultrix.
    * 4.4 je zadnja

  UNICOS (Cray): osnova System V. Novi�arska skupina: comp.unix.cray.
    * 5.x, 6,x, 7.0

  UnixWare Release 4.2 [Univel]: SVR4.2; �ez NetWare. Univel ne obstaja
  ve�.

  UTEK (Tektronix)
    * 4.0

  VOLVIX (Archipel S.A.): OS na osnovi Unix, zgrajen okoli mikro-jedra
  temelje�ega na komunikaciji, distribuciji in realnem �asu. Sistemski
  klici SVR3.2, BSD4.4 datote�ni/omre�ni sistemski klici (VFS, FFS).
  Tudi NFS in X11. Pravi VOLVIX je za transputerje.

  Xenix (80x86): Prvi Unix na Intelovi strojni opremi, temelji na SVR2
  (prej na S III in celo V7). Novi�arska skupina: comp.unix.xenix.

7.7 Unixi, delujo�i v realnem �asu

From: "Pierre (P.) Lewis" <[email protected]>
Date: Tue Aug 15 15:14:00 EDT 1995
X-Version: 2.9

  Pozor! Ta razdelek hudo potrebuje dodatno delo. Je poln napak in je
  nepopoln. Upam, da ga bom imel �as pogledati to zimo (bilo je ,,to
  jesen``). Dvomim, da so vsi spodnji res Unixi - prispevki so
  dobrodo�li. Seznam tudi vklju�uje pogostej�e Unixe z lastnostmi
  realnega �asa, in nekatere ne-Unixa�ke sisteme z Unixu podobnim API.
  Mislim, da zadnji ne spadajo zares sem, a ko sem �e zbral nekaj
  podatkov jih no�em zavre�i. Glejte tudi novi�arsko skupino
  comp.realtime.

  AIX: AIX/6000 ima podporo realnemu �asu.

  Concurrent OS (Concurrent): pravi Unix, ki ga je Concurrent znatno
  spremenil.

  CX/UX: pravi UNIX, ki ga je znatno spremenil Harris, da bi ponujal
  zmo�nosti realnega �asa. Zado��a kon�ni razli�ici POSIX.4.

  EP/LX (Control Data): prenos sistema LynxOS na R3000. Prej se je
  imenoval TC/IX.

  LynxOS (Lynx Real-Time Systems, Inc): zdru�ljiv z Berkeley in SV,
  popoln ponoven napis (v lasti podjetja), prednik SVR5. Ni UNIX, a
  podpira ve�ino vmesnikov Unixa (SV in BSD). Upo�teva POSIX. Popolnoma
  predkupen (angl. preemptive), fiksne prioritete.

  MiX: implementacija SVR4 z mikrojedrom, izdelal Chorus.

  Motorola SVR4 ima zmo�nosti realnega �asa.

  QNX (Quantum Software): realno �asovni OS, zdru�ljiv z Unixom.

  REAL/IX: temelji na Systemu V 3.2 z odlikami RT features (povsem
  predkupno jedro, razporejevalnik fiksnih prioritet, �asomerilec RT,
  &c.). Za sisteme, grajene na 68xxx in 88xxx. Ustreza POSIX (1003.1 -
  1988) in v obliki za 88k ustreza tudi 88open BCS. Dostopen tudi za
  x86/Pentium.

  RTMX O/S [RTMX Incorporated]: elementi NET2, 4.4BSD-Lite in lastne
  kode. Vklju�uje tudi orodja FSF. Raz�iritve realnega �asa (POSIX).

  RTU (Concurrent), za �katle z 68K

  Solaris 2 ima realno �asovne zmo�nosti?

  Stellix (Stardent); je Unix, ali je tudi realno �asovni?

  Venix/386: Interactive SVR3.2 z realno �asovnimi raz�iritvami.

  VMEexec (Motorola): ni Unix, a deli nekatere vmesnike z Unixom.

  VxWorks (Wind River Systems): Malo skupnega z Unixom, le nekateri
  vmesniki (a ne datote�ni sistem). Novi�arska skupina: comp.os.vxworks.

  (o naslednjih ne vem ni�esar)

  Convex RTS

  REAL/IX (AEG)

  Sorix (Siemens)

  System V/86 (Motorola)

  TC/IX (CCD)

  Velocity (Ready Systems)

7.8 Slovar�ek Unixa

From: "Pierre (P.) Lewis" <[email protected]>
Date: Tue Aug 15 15:14:00 EDT 1995
X-Version: 2.9

  Ta razdelek ponuja kratke definicije razli�nih konceptov in komponent
  sistemov Unix (ali: povezanih s sistemi Unix).

  Chorus: mikrojedro s prenosom sporo�il (angl. message-passing
  microkernel), lahko predstavlja osnovo za prihodnje izdaje SV. Na
  Chorusu �e te�ejo SVR4 (binarno zdru�ljivi).

  CORBA (Common Object Request Broker Architecture).

  COSE (Common Open Software Environment) [Sun, HP, IBM]: skupni videz
  in ob�utek (Motif - Sun bo pustil OpenLook odmreti), skupni API.
  Reakcija proti Windows NT. Glejte zgornji razdelek ,,Glavni igralci in
  standardi Unixa``.

  DCE (Distributed Computing Environment, od OSF): Vklju�uje RPC (NCS
  Apolla), imeni�ke storitve (lokalne na DNS, globalne na X.500),
  �asovne, varnostne in nitne storitve, DFS (distribuirani datote�ni
  sistem), neodvisen od OS.

  DME (Distributed Management Environment, od OSF): prihodnost.

  DO (Distributed Objects [Enterprise]): ???.

  FFS (Fast File System): od Berkeley, 1983. Ekvivalent (to�en?) UFS v
  SunOS. Ima pojme kot so skupine cilindrov, fragmenti.

  FSF (Free Software Foundation)

  Mach: sodobna jedra z univerze CMU (Carnegie Mellon University), na
  katerih temelji veliko Unixov in drugih OS (npr. OSF/1, MacMach, ...):
    * 2.5: monolitno jedro z 4.2BSD
    * 3.0: mikrojedro s stre�nikom BSD Unix v uporabni�kem prostoru (in
      drugi OS, npr. MS-DOS)

  Novi�arska skupina: comp.os.mach.

  MFS (Memory File System): pomnilni�ki datote�ni sistem

  NeWS (Network extensible Window System), podjetja Sun?: temelji na
  PostScriptu, omre�en, zbirke orodij (in tudi odjemnikov) nalo�enih v
  stre�nik. Del OpenWindows.

  NFS (Network File System): Sun je prispeval v BSD, stre�nik brez stanj
  (angl. stateless server)

  ONC (Open Network Computing): Sun(?), vklju�uje RPC, imenski stre�nik
  (NIS, znan tudi kot YP), NFS, ... (najdemo ga v veliko Unixih in
  drugih OS).

  OpenStep [NeXT, Sun]: ???

  PowerOpen: standard in organizacija za promocijo PowerPC. Vklju�uje
  IBM, Apple in Motorolo; drugi? Glejte zgornji razdelek ,,Glavni
  igralci in standardi Unixa``.

  PowerPC (PPC): procesorski �ip RISC [IBM, Motorola].

  RFS (Remote File System): SV, stre�nik s stanji (angl. stateful
  server), nezdru�ljiv z NFS

  RPC (Remote Procedure Call): visoko-nivojski mehanizem IPC
  (med-procesna komunikacija). Dve vrsti.
    * ONC: �ez TCP ali UDP (pozneje OSI), uporablja XDR za �ifriranje
      podatkov.
    * DCE: ima druga�en mehanizem RPC (temelji na NCS Apolla)

  S5 FS: domorodni datote�ni sistem Systema V, bloki od 512 bytov do 2
  Kb.

  sockets (vti�i): BSD-jev vmesni�ki mehanizem za omre�ja (primerjajte s
  TLI).

  STREAMS: mehanizem podajanja sporo�il, najprej v SVR3, ki poskrbi za
  zelo dober vmesnik za razvoj protokolov.

  TFS (Translucent File System): Sun, COW, uporabljen na datotekah.

  TLI (Transport Library Interface): vmesnik SV do transportnih storitev
  (TCP, OSI). UI je tudi definiral APLI (ACSE/Presentation Library
  Interface)

  UFS (?): domorodni sistem BSD, kot ga vidi SunOS, bloki od 4 Kb do 8
  Kb, skupine cilindrov, fragmenti.

  XTI (X/Open Transport Interface): TLI z izbolj�avami

  X11: okenski sistem z MIT-a, orientiran na pike
    _________________________________________________________________

  Naprej Nazaj Vsebina

  #previous contents

  Naprej Nazaj Vsebina
    _________________________________________________________________

8. Primerjava sistemov za upravljanje konfiguracij (RCS, SCCS).

8.1 RCS vs. SCCS: Uvod

Subject: RCS vs SCCS:  Introduction
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  V nedavni anketi je bila ve�ina glasov v prid RCS, nekaj v prid SCCS,
  in nekaj predlaganih alternativ, kot je CVS.

  Funkcionalno sta RCS in SCCS prakti�no ekvivalentna. RCS ima nekaj ve�
  odlik, saj se �e naprej osve�uje.

  Vedite tudi, da se je RCS u�il na napakah SCCS ...

8.2 RCS vs. SCCS: Kako sta primerljiva vmesnika?

Subject: RCS vs SCCS:  How do the interfaces compare?
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  RCS ima za nove uporabnike preprostej�i vmesnik. Obstaja manj ukazov,
  je bolj intuitiven in konsistenten, in ponuja ve� uporabnih
  argumentov.

  V SCCS morajo biti veje posebej ustvarjene. V RCS se preverjajo kot
  katerikoli druga razli�ica.

8.3 RCS vs. SCCS: Kaj je v datoteki popravkov?

Subject: RCS vs SCCS:  What's in a Revision File?
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  RCS shranjuje zgodovino v datotekah s podalj�kom ,,,v``. SCCS
  shranjuje zgodovino v datotekah s predpono ,,s.``.

  RCS v trenutnem imeniku in podimeniku za RCS samodejno poi��e datoteke
  za RCS, lahko pa dolo�ite tudi kak�no drugo datoteko za RCS.
  Uporabni�ki vmesnik sccs programa SCCS vedno uporablja imenik za SCCS.
  �e ne uporabljate uporabni�kega vmesnika sccs, morate dolo�iti polno
  ime datoteke za SCCS.

  RCS shranjuje svoje popravke tako, da vzdr�uje kopijo zadnje razli�ice
  in razlike besedila do prej�njih razli�ic. SCCS uporablja koncept
  ,,zdru�evanja razlik``.

  Vsa aktivnost RCS se dogaja v eni sami datoteki za RCS. SCCS vzdr�uje
  ve� datotek. To je lahko neredno in begajo�e.

  Ro�no urejanje datotek za RCS ali za SCCS je slaba zamisel, saj so
  napake tako lahke za storiti in tako usodne za zgodovino datoteke. V
  obeh primerih je lahko urejati podatke o popravkih, vendar ne �elite
  popravljati resni�nega besedila razli�ice v RCS. �e urejate datoteko
  za SCCS, boste morali prera�unati kontrolno vsoto s programom admin.

8.4 RCS vs. SCCS: Katere so klju�ne besede?

Subject: RCS vs SCCS:  What are the keywords?
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  RCS in SCCS uporabljata razli�ne klju�ne besede, ki se v besedilu
  razvijejo. Pri SCCS se, ob izvle�enju datoteke za branje, klju�na
  beseda ,,%I%`` nadomesti s �tevilko popravka.

  Klju�ne besede RCS so la�je za zapomnitev, toda razvijanje klju�nih
  besed se la�je nastavi v SCCS.

  V SCCS se klju�ne besede razvijejo pri izvle�enju le za branje. �e se
  razli�ica z razvitimi klju�nimi besedami prepi�e v datoteko, ki bi
  morala biti razlikovana (angl. deltaed), so klju�ne besede izgubljene
  in podatki o razli�icah datoteke ne bodo osve�evani. Po drugi strani,
  RCS ob razvitju obdr�i klju�ne besede, torej se temu izogne.

8.5 Kaj je simboli�no ime v RCS?

Subject: What's an RCS symbolic name?
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  RCS vam dovoljuje obravnavati mno�ico datotek kot dru�ino datotek,
  medtem, ko je SCCS mi�ljen prvotno za hranjenje zgodovine popravkov
  datotek.

  RCS to omogo�a z uporabo simboli�nih imen: vse izvorne datoteke, ki so
  povezane z aplikacijsko razli�ico, lahko ozna�ite z uporabo

rcs -n

  in jih pozneje zlahka izvle�ete kot zdru�eno enoto. V SCCS bi morali
  za to napisati skript, ki bi vpisoval in bral vsa imena datotek in
  razli�ic v in iz datoteke.

8.6 RCS vs. SCCS: Kaj pa hitrost?

Subject: RCS vs SCCS:  How do they compare for performance?
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  Ker sistem RCS shranjuje celotno zadnjo razli�ico, je precej hitrej�i
  pri izvle�enju zadnje razli�ice. Od RCS 5.6 naprej je tudi hitrej�i od
  SCCS pri izvle�enju starej�ih razli�ic.

8.7 RCS vs. SCCS: Identifikacija razli�ic

Subject: RCS vs SCCS:  Version Identification.
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  SCCS zna ugotoviti, kdaj se je v sistem dodala dolo�ena vrstica kode.

8.8 RCS vs. SCCS: Kako se obna�ata v te�avah?

Subject: RCS vs SCCS:  How do they handle problems?
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  �e vam manjkajo orodja za SCCS ali RCS, ali, �e je datoteka popravkov
  v RCS ali SCCS pokvarjena in orodja no�ejo delati z njo, lahko �e
  vedno obnovite zadnjo razli�ico v sistemu RCS. To za SCCS ni res.

8.9 RCS vs. SCCS: Kako se razumeta z ukazom make(1)?

Subject: RCS vs SCCS:  How do they interact with make(1)?
Date: Wed, 30 Dec 1992 10:41:51 -0700
From: Blair P. Houghton <[email protected]>

  Dejstvo, da SCCS uporablja predpone za imena datotek (s.datoteka.c)
  pomeni, da jih make(1) ne more obravnavati na obi�ajen na�in, in
  morate uporabiti posebna pravila (z uporabo znakov ,~`), da ga
  pripravite k sodelovanju s SCCS; kljub temu make(1) na nekaterih
  platformah Unixa ne bo uporabil privzetih pravil za datoteke, ki jih
  upravlja SCCS.

  Zapis s podalj�kom (datoteka.c,v), ki ga uporablja RCS, pomeni, da
  lahko v vseh izvedbah programa make uporabljate obi�ajna podalj�kovna
  pravila, tudi, �e izvedba ni na�rtovana posebej za obvladovanje
  datotek RCS.

8.10 RCS vs. SCCS: Pretvorba

Subject: RCS vs SCCS:  Conversion.
Date: Tue, 10 Jan 1995 21:01:41 -0500
From: Ed Ravin <[email protected]>

  Za pretvorbo iz SCCS v RCS je na voljo nepodprti skript za ukazno
  lupino csh. Najdete ga lahko na naslovu
  ftp://ftp.std.com/src/gnu/cvs-1.3/contrib/sccs2rcs.

  Za pretvorbo iz RCS v SCCS morate napisati svoj skript ali program.

8.11 RCS vs. SCCS: Podpora

Subject: RCS vs SCCS:  Support
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  SCCS podpira podjetje AT&T. RCS podpira ustanova Free Software
  Foundation. Torej RCS te�e na veliko ve� platformah, vklju�no z
  osebnimi ra�unalniki.

  Ve�ina programov make prepozna SCCS-jevo predpono ,,s.``, medtem, ko
  je GNU-jev make eden redkih, ki obravnavajo RCS-jev podalj�ek ,,,v``.

  Nekateri programi tar imajo izbiro -F, ki ignorira imenike za RCS, za
  SCCS, ali oboje.

8.12 RCS vs. SCCS: Primerjava ukazov

Subject: RCS vs SCCS:  Command Comparison
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

SCCS                        RCS                   Razlaga
====                        ===                   =======

sccs admin -i -ndat dat     ci dat                Prvi� vpi�e datoteko
                                                 ,dat` in ustvari
                                                 datoteko sprememb.

sccs get dat                co dat                Izvle�e datoteko
                                                 ,dat` za branje.

sccs edit dat               co -l dat             Izvle�e ,dat` za
                                                 spremembo.

sccs delta dat              ci dat                Izvle�e predhodno
                                                 zaklenjeno datoteko.

what dat                    ident dat             Izpi�e informacijo
                                                 o klju�ni besedi.

sccs prs dat                rlog dat              Izpi�e zgodovino
                                                 datoteke.

sccs sccsdiff -rx -ry dat   rcsdiff -rx -ry dat   Primerja dva popravka.

sccs diffs dat              rcsdiff dat           Primerja trenutno
                                                 razli�ico z zadnjim
                                                 popravkom.

sccs edit -ix-y dat         rcsmerge -rx-y dat    Zdru�i spremembe med
                                                 dvema razli�icama
                                                 v datoteko.

???                         rcs -l dat            Zaklene zadnji
                                                 popravek.

???                         rcs -u dat            Odklene zadnji
                                                 popravek.  Morda
                                                 stre klju�avnico
                                                 drugega uporabnika,
                                                 a mu po�lje
                                                 sporo�ilo z razlago.

8.13 RCS vs. SCCS: Priznanja

Subject: RCS vs SCCS:  Acknowledgements
Date: Sat, 10 Oct 92 19:34:39 +0200
From: Bill Wohler <[email protected]>

  �elim se zahvaliti naslednjim ljudem, ki so prispevali te �lanke. Na
  ta spisek �elim dodati tudi va�e ime - prosim, po�ljite pripombe ali
  dodatne vire Billu Wohlerju <[email protected]>.
    * Karl Vogel <[email protected]>
    * Mark Runyan <[email protected]>
    * Paul Eggert <[email protected]>
    * Greg Henderson <[email protected]>
    * Dave Goldberg <[email protected]>
    * Rob Kurver <[email protected]>
    * Raymond Chen <[email protected]>
    * Dwight <[email protected]>

8.14 Ali lahko dobim ve� podatkov o sistemih za upravljanje konfiguracij?

Subject: Can I get more information on configuration management systems?
Date: Thu Oct 15 10:27:47 EDT 1992
From: Ted Timar <[email protected]>

  Bill Wohler, ki je zbral vse podatke v tem delu teh PZV, je zbral �e
  dosti ve� podatkov. Dobite jih na naslovu
  ftp://ftp.wg.omron.co.jp/pub/unix-faq/docs/rev-ctl-sys.
    _________________________________________________________________