<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>https://kuutorvaja.eenet.ee/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wk</id>
	<title>Kuutõrvaja - Kasutaja kaastöö [et]</title>
	<link rel="self" type="application/atom+xml" href="https://kuutorvaja.eenet.ee/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wk"/>
	<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php/Eri:Kaast%C3%B6%C3%B6/Wk"/>
	<updated>2026-06-04T02:47:11Z</updated>
	<subtitle>Kasutaja kaastöö</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://kuutorvaja.eenet.ee/w/index.php?title=I/O&amp;diff=15299</id>
		<title>I/O</title>
		<link rel="alternate" type="text/html" href="https://kuutorvaja.eenet.ee/w/index.php?title=I/O&amp;diff=15299"/>
		<updated>2009-09-20T19:24:19Z</updated>

		<summary type="html">&lt;p&gt;Wk: /* Programmi väljundi ümbersuunamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Sisendi ja väljundi ümbersuunamine UNIXis===&lt;br /&gt;
&lt;br /&gt;
 Sissejuhatus&lt;br /&gt;
 Lihtsad ümbersuunamised&lt;br /&gt;
 Keerulised ümbersuunamised&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Igal töötaval programmil so protsessil on:&lt;br /&gt;
&lt;br /&gt;
    * &#039;&#039;&#039;sisend&#039;&#039;&#039; (ingl. k. standard input), mille kaudu sisenevad programmi andmed (sisendiks võib olla näiteks klaviatuur)&lt;br /&gt;
    * &#039;&#039;&#039;väljund&#039;&#039;&#039; (ingl. k. standard output), mille kaudu väljuvad programmist töödeldud andmed (nad võivad minna näiteks ekraanile)&lt;br /&gt;
    * &#039;&#039;&#039;veaväljund&#039;&#039;&#039; (ingl. k. standard error), mille kaudu väljuvad programmist veateated (tavaliselt lähevad nad ekraanile) &lt;br /&gt;
&lt;br /&gt;
Kombeks on neile kolmele viidata ka arvudega, vastavalt 0, 1, 2.&lt;br /&gt;
&lt;br /&gt;
UNIXis saab küllaltki paindlikult töötavate programmide &#039;&#039;&#039;sisend- ja väljundvoogusid&#039;&#039;&#039; (ingl. k. input/output ehk IO) ümber suunata. Situatsioonid, kus seda on kindlasti otstarbekas kasutada:&lt;br /&gt;
&lt;br /&gt;
    * programmi tekstilise väljundi lehitsemine (more, less)&lt;br /&gt;
    * programmi tekstilise väljundi filtreerimine (egrep, grep, sort)&lt;br /&gt;
    * programmi väljundi suunamine teise programmi sisendisse (arhiveerimine)&lt;br /&gt;
&lt;br /&gt;
===Lihtsad ümbersuunamised===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programmi väljundi ümbersuunamine===&lt;br /&gt;
&lt;br /&gt;
Suuname kalendrit ekraanile toova käsu &#039;&#039;&#039;cal&#039;&#039;&#039; väljundi faili nimega &#039;aprill_2000&#039;&lt;br /&gt;
&lt;br /&gt;
 kalake~$ cal 4 2000 &amp;gt; aprill_2000&lt;br /&gt;
&lt;br /&gt;
Suuname väljundi kettaseadmele (NB! Nii kirjutatakse alates ketta 0&#039;ndast sektorist ilma failisüsteemita; niisiis on see vajalik ainult erijuhtudel)&lt;br /&gt;
&lt;br /&gt;
 kalake~$ cal 4 2000 &amp;gt; /dev/fd0&lt;br /&gt;
&lt;br /&gt;
Suuname väljundi terminalile (selleks peab piisavalt õigusi olema)&lt;br /&gt;
&lt;br /&gt;
 bash#~$ cal 4 2000 &amp;gt; /dev/tty3&lt;br /&gt;
&lt;br /&gt;
===Programmi sisendi ümbersuunamine===&lt;br /&gt;
&lt;br /&gt;
 bash~$ nl &amp;lt; aprill_1998&lt;br /&gt;
 bash~$ wc &amp;lt; aprill_1998&lt;br /&gt;
&lt;br /&gt;
Näites kasutatakse ära asjaolu, et programmid &#039;&#039;&#039;wc&#039;&#039;&#039; (sõnadelugeja) ja &#039;&#039;&#039;nl&#039;&#039;&#039; (ridadenummerdaja) loevad sisendit. On kombeks, et viisakas UNIXi programm loeb oma sisendit, kui ta käivitada ilma argumentideta.&lt;br /&gt;
&lt;br /&gt;
===Tavaline ehk nimeta toru (pipe)===&lt;br /&gt;
&lt;br /&gt;
Ühe protsessi väljundi ühendamine teise protsessi sisendiga&lt;br /&gt;
&lt;br /&gt;
Näiteks käsu &#039;&#039;&#039;who&#039;&#039;&#039; väljundi suunamine käsu &#039;&#039;&#039;wc -l&#039;&#039;&#039; sisendisse annab tulemuseks hetkel süsteemi kasutavate kasutajate arvu&lt;br /&gt;
&lt;br /&gt;
 bash~$ who | wc -l&lt;br /&gt;
 3&lt;br /&gt;
&lt;br /&gt;
eeldusel, et käsu &#039;&#039;&#039;who&#039;&#039;&#039; väljund on selline&lt;br /&gt;
&lt;br /&gt;
 priit tty0 Jun  5 12:40&lt;br /&gt;
 mart  tty1 Jun  5 10:40&lt;br /&gt;
 kati  tty2 Jun  3 14:40&lt;br /&gt;
&lt;br /&gt;
Näide illustreerib, kuidas erinevad protsessid saavad UNIXis üksteisega suhelda. Antud juhul toimub suhtlus &amp;quot;nimeta toru&amp;quot; vahendusel. Tehniliselt on nimeta toru mälubuffer, mida kasutavad kaks protsessi: üks kirjutamiseks, teine lugemiseks. Arusaadavalt peavad protsesside õigused olema sobivad, näiteks peavad nad kuuluma samale kasutajale.&lt;br /&gt;
&lt;br /&gt;
Pikkade tekstifailide vaatamiseks on abiks programmid &#039;&#039;&#039;more&#039;&#039;&#039; ja &#039;&#039;&#039;less&#039;&#039;&#039;. Neid nimetatakse ka &amp;quot;lehitsejateks&amp;quot; (ingl. k. pager), sest teksti esitatakse ekraanitäite kaupa&lt;br /&gt;
&lt;br /&gt;
 bash~$ more failinimi&lt;br /&gt;
&lt;br /&gt;
Toru abil on võimalik lehitseda ka paljusõnaliste programmide väljundit:&lt;br /&gt;
&lt;br /&gt;
 bash~$ ls -la | more&lt;br /&gt;
 bash~$ ls -la | less&lt;br /&gt;
&lt;br /&gt;
===Fail nimega -===&lt;br /&gt;
&lt;br /&gt;
Paljudel juhtudel saab sisendfaili nimena kasutada &#039;-&#039; märki. See tähendab, et programm võtab andmed oma sisendist.&lt;br /&gt;
&lt;br /&gt;
 bash~$ who | cat fail1 - fail2 &lt;br /&gt;
&lt;br /&gt;
Tulemusena kuvatakse esmalt fail1 sisu, siis &#039;&#039;&#039;who&#039;&#039;&#039; väljund ja lõpuks fail2 sisu.&lt;br /&gt;
&lt;br /&gt;
===Keerulised ümbersuunamised===&lt;br /&gt;
&lt;br /&gt;
Algul märkisime, et andmevoogudele võib viidata ka &#039;&#039;&#039;deskriptoritega&#039;&#039;&#039; 0, 1 ja 2. Nende kasutamine muudab ümbersuunamiste kasutamise paindlikumaks. Näiteks saab kokku liita erinevaid andmevooge.&lt;br /&gt;
&lt;br /&gt;
Saadame programmi &#039;&#039;&#039;tar&#039;&#039;&#039; veaväljundi seadmesse /dev/null:&lt;br /&gt;
&lt;br /&gt;
 bash~$ tar seda.votit.pole.defineeritud 2&amp;gt; /dev/null &lt;br /&gt;
&lt;br /&gt;
Saadame programmi &#039;&#039;&#039;date&#039;&#039;&#039; väljundi seadmesse /dev/null&lt;br /&gt;
&lt;br /&gt;
 bash~$ date 1&amp;gt; /dev/null &lt;br /&gt;
&lt;br /&gt;
Mida programm ka ei väljastaks, st kas väljundit või veaväljundit, kõik suunatakse &#039;musta auku&#039;.&lt;br /&gt;
&lt;br /&gt;
 bash~$ ls -lR / 1&amp;gt; /dev/null 2&amp;gt; &amp;amp;1 &lt;br /&gt;
&lt;br /&gt;
Loomulikult ei pruugi kõiki vooge tingimata suunata /dev/null&#039;i. Võib kasutada igasuguseid protsesse ja seadmeid, mis sisendvoogudega midagi peale oskavad hakata.&lt;br /&gt;
&lt;br /&gt;
===Andmete kõrvaletoimetamine===&lt;br /&gt;
&lt;br /&gt;
Eelmises punktis tõime näiteid, kuidas mitut andmevoogu üheks kokku suunata. Nüüd näitame, kuidas on võimalik ühe protsessi väljundit samaaegselt &amp;quot;sisse sööta&amp;quot; mitmele muule protsessile. Selleks on programm &#039;&#039;&#039;tee&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 bash~$ ls -la | tee -a nimekiri | grep sala&lt;br /&gt;
&lt;br /&gt;
Näites suunatakse käsu &#039;&#039;&#039;ls -la&#039;&#039;&#039; väljund programmi &#039;&#039;&#039;tee&#039;&#039;&#039; sisendisse, mis ühe koopia sellest suunab otse oma väljundisse ning teise salvestab faili &#039;nimekiri&#039;. Võti &#039;-a&#039; näitab, et faili nimekiri olemasolu korral lisatakse käsu &#039;&#039;&#039;ls -la&#039;&#039;&#039; väljund selle lõppu; faili puudumisel moodustatakse uus fail. Programmi &#039;&#039;&#039;tee&#039;&#039;&#039; väljund on omakorda suunatud filtreerija &#039;&#039;&#039;grep&#039;&#039;&#039; sisendisse. Tulemusena näidatakse ekraanil vaid neid ls -la väljundi ridu, millel sisaldus järgnevus &#039;sala&#039;.&lt;br /&gt;
&lt;br /&gt;
===Andmete lisamine faili lõppu===&lt;br /&gt;
&lt;br /&gt;
Kui väljundi suunamisel faili kasutada &#039;&amp;gt;&#039; asemel märki &#039;&amp;gt;&amp;gt;&#039;, siis lisatakse uus info failis juba olemasolevale järgi. Kui fail enne puudus, siis ta luuakse.&lt;br /&gt;
&lt;br /&gt;
 bash~$ who &amp;gt;&amp;gt; ~/esimene_kursus/kohalolekukontroll&lt;br /&gt;
&lt;br /&gt;
© EENet 2000&lt;/div&gt;</summary>
		<author><name>Wk</name></author>
	</entry>
</feed>