Stdin: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Labner (talk | contribs)
Labner (talk | contribs)
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''mustand'''<br>
<br>
'''stdin''' (standard input) on UNIX süsteemides standardsisendvoog. Vt. ka [[Stdout|stdout]] ja [[Stderr|stderr]]
'''stdin''' (standard input) on UNIX süsteemides standardsisendvoog. Vt. ka [[Stdout|stdout]] ja [[Stderr|stderr]]
<br>
<br>


== Standardvood ==
== Standardvood ==
[[File:stdstreams.png|thumb|right|Joonis 1. The standard streams for input, output, and error. Allikas: https://en.wikipedia.org/wiki/Standard_streams]]Linuxis ja teistes Unix-i laadsetes süsteemides on kasutusel standardvood. Iga protsess käivitatakse automaatselt koos kolme andmevooga: sisendvoog stdin ja väljundvoog [[Stdout|stdout]] (standard output) ja veavoog [[Stderr|stderr]] (standard error). Need vood kujutavad endast spetsiaalset tüüpi faili ja võivad sisaldada ''plain text'' andmeid.<ref>Standard Input Definition http://www.linfo.org/standard_input.html</ref>
[[File:stdstreams.png|thumb|right|Joonis 1. The standard streams for input, output, and error. Allikas: https://en.wikipedia.org/wiki/Standard_streams]]Linuxis ja teistes Unix-i laadsetes süsteemides on kasutusel standardvood. Iga protsess käivitatakse automaatselt koos kolme andmevooga: sisendvoog stdin ja väljundvoog [[Stdout|stdout]] (standard output) ja veavoog [[Stderr|stderr]] (standard error). Need vood kujutavad endast spetsiaalset tüüpi faili ja sisaldavad ''plain text'' andmeid.<ref>Standard Input Definition http://www.linfo.org/standard_input.html</ref><ref>Standard Output Definition http://www.linfo.org/standard_output.html</ref><ref>Standard Error Definition http://www.linfo.org/standard_error.html</ref>
Igale avatud failile omistatakse ka arvuline deskriptor. stdin, stdout ja stderr arvulised failideskriptorid on vastavalt 0,1 ja 2.
Igale avatud failile omistatakse ka arvuline deskriptor. stdin, stdout ja stderr arvulised failideskriptorid on vastavalt 0,1 ja 2.
Tüüpiliselt on need vood seotud terminaliga (tty), kuid võivad ka viidata teistele failidele või seadmetele, kui protsess on vastavalt seadistatud.  
Tüüpiliselt on need vood seotud terminaliga (tty), kuid võivad ka viidata teistele failidele või seadmetele, kui protsess on vastavalt seadistatud.  
Line 12: Line 10:


== stdin ümbersuunamine ==
== stdin ümbersuunamine ==
Vaikimisi tuleb stdin-i sisu klaviatuurisisestustest. Kuid stdin-i nagu ka stdout-i ja stderr-i saab ümber oma vajaduste kohaselt ümber suunata.
Vaikimisi tuleb stdin-i sisu klaviatuurisisestustest. Kuid stdin-i nagu ka stdout-i ja stderr-i saab ümber oma vajaduste kohaselt ümber suunata.<br>
Standardsisendit saab ümber suunata, kas argumentide abil või ümbersuunamisoperaatorit <code><</code> kasutades. Käsu sisendiks võib argumendina anda faili nime või muud andmed.
Standardsisendit saab ümber suunata, kas argumentide abil või ümbersuunamisoperaatorit <code><</code> kasutades. Käsu sisendiks võib argumendina anda faili nime või muud andmed.<br>


Hea näide on <code>wc</code> käsk, mis loendab tekstis sisalduvaid ridu, sõnu ja tähemärke.
Hea näide on <code>wc</code> käsk, mis loendab tekstis sisalduvaid ridu, sõnu ja tähemärke.<br>
Ilma argumentideta käivitades, jäädakse sisendit ootama klaviatuurilt.
Ilma argumentideta käivitades, jäädakse sisendit ootama klaviatuurilt.<br>
Ctrl+D Enter pöörab käsu täitmisele ja ekraanile kuvatakse ridade, sõnade ja tähtede arv ning programm lõpetab töö.
Ctrl+D pöörab käsu täitmisele ja ekraanile kuvatakse ridade, sõnade ja tähtede arv ning programm lõpetab töö.<br>
Näiteks:
Näiteks:<br>
<code>wc
<pre>
wc
lehm kass koer
lehm kass koer
hobune
hobune
Line 25: Line 24:
Ctrl+D
Ctrl+D
     3    7    35
     3    7    35
</code>
</pre>
 
Kui anda argumendiks failinimi, siis suunatakse standardsisend sellele failile. Järgmises näites saab standardsisendiks fail file1.txt ja wc trükib välja file1.txt ridade, sõnade ja tähemärkide arvu.<br>
 
<code>wc file1.txt</code>
 
Samuti saab standardsisendi ümbersuunamiseks kasutada <code><</code> operaatorit.<br>


Selleks, et protsessi sisendvoogu jõuaks tuleks klaviatuuri asemel failist, tuleb kasutada < märki. Näiteks:
<code>wc < file1.txt</code>
 
Tulemus on sama, kuid mehhanism on erinev.
Veel üks:<br>


<code>sort &lt; list.txt</code>
<code>sort &lt; list.txt</code>


Selles näites saab sort käsk sisendi failist list.txt. <br>
Selles näites saab sort käsk sisendi failist list.txt. <br>
Klaviatuuri või faili asemel võib standardsisendvooks oll ka mõne teise programmi väljund. Seda saab teha toru (pipe) abil. Näiteks:
Ka standardväljundi võib suunata ekraani asemel faili.<br>
 
<code>sort < list.txt > sorted.txt</code>
 
Sisend võetakse failist list.txt ja väljund suunatakse faili sorted.txt. Ümbersuunamise järejekord ei ole tähtis.
Täpselt sama tulemuse saab käsuga:<br>
 
<code>sort > sorted.txt < file.txt</code>
 
Oluline on, et <code><</code> ja <code>></code> peavad tulema teiste argumentide järel.
 
 
Klaviatuuri või faili asemel võib standardsisendvooks olla ka mõne teise programmi väljund. Seda saab teha toru (pipe) abil.<br> Näiteks:


<code>ls -1 | wc -l</code>
<code>ls -1 | wc -l</code>


Selles käsus on ls -1 käsu väljund suunatud wc -l käsu sisendiks. ls -1 - faililisting igal real üks fail, wc -l - loeb kokku read.
Selles käsus on <code>ls -1</code> käsu väljund suunatud <code>wc -l</code> käsu sisendiks. <code>ls -1</code> - faililisting igal real üks fail, <code>wc -l</code> - loeb kokku read.


Vaata ka <ref>I/O Redirection http://linuxcommand.org/lc3_lts0070.php</ref>
Vaata ka <ref>I/O Redirection http://linuxcommand.org/lc3_lts0070.php</ref>

Latest revision as of 01:40, 11 January 2017

stdin (standard input) on UNIX süsteemides standardsisendvoog. Vt. ka stdout ja stderr

Standardvood

Joonis 1. The standard streams for input, output, and error. Allikas: https://en.wikipedia.org/wiki/Standard_streams

Linuxis ja teistes Unix-i laadsetes süsteemides on kasutusel standardvood. Iga protsess käivitatakse automaatselt koos kolme andmevooga: sisendvoog stdin ja väljundvoog stdout (standard output) ja veavoog stderr (standard error). Need vood kujutavad endast spetsiaalset tüüpi faili ja sisaldavad plain text andmeid.[1][2][3]

Igale avatud failile omistatakse ka arvuline deskriptor. stdin, stdout ja stderr arvulised failideskriptorid on vastavalt 0,1 ja 2. Tüüpiliselt on need vood seotud terminaliga (tty), kuid võivad ka viidata teistele failidele või seadmetele, kui protsess on vastavalt seadistatud. [4] Tavaliselt läheb standardsisendvoogu klaviatuurilt sisestatav tekst ning väljundvoog ning veavoog kuvatakse ekraanile.

stdin ümbersuunamine

Vaikimisi tuleb stdin-i sisu klaviatuurisisestustest. Kuid stdin-i nagu ka stdout-i ja stderr-i saab ümber oma vajaduste kohaselt ümber suunata.
Standardsisendit saab ümber suunata, kas argumentide abil või ümbersuunamisoperaatorit < kasutades. Käsu sisendiks võib argumendina anda faili nime või muud andmed.

Hea näide on wc käsk, mis loendab tekstis sisalduvaid ridu, sõnu ja tähemärke.
Ilma argumentideta käivitades, jäädakse sisendit ootama klaviatuurilt.
Ctrl+D pöörab käsu täitmisele ja ekraanile kuvatakse ridade, sõnade ja tähtede arv ning programm lõpetab töö.
Näiteks:

wc
lehm kass koer
hobune
kana ja kits
Ctrl+D
    3    7    35

Kui anda argumendiks failinimi, siis suunatakse standardsisend sellele failile. Järgmises näites saab standardsisendiks fail file1.txt ja wc trükib välja file1.txt ridade, sõnade ja tähemärkide arvu.

wc file1.txt

Samuti saab standardsisendi ümbersuunamiseks kasutada < operaatorit.

wc < file1.txt

Tulemus on sama, kuid mehhanism on erinev. Veel üks:

sort < list.txt

Selles näites saab sort käsk sisendi failist list.txt.
Ka standardväljundi võib suunata ekraani asemel faili.

sort < list.txt > sorted.txt

Sisend võetakse failist list.txt ja väljund suunatakse faili sorted.txt. Ümbersuunamise järejekord ei ole tähtis. Täpselt sama tulemuse saab käsuga:

sort > sorted.txt < file.txt

Oluline on, et < ja > peavad tulema teiste argumentide järel.


Klaviatuuri või faili asemel võib standardsisendvooks olla ka mõne teise programmi väljund. Seda saab teha toru (pipe) abil.
Näiteks:

ls -1 | wc -l

Selles käsus on ls -1 käsu väljund suunatud wc -l käsu sisendiks. ls -1 - faililisting igal real üks fail, wc -l - loeb kokku read.

Vaata ka [5]

Autor

Liina Abner DK23
jaanuar 2017

Allikad