Usein Unix-komennot ja Unixissa ajettavat ohjelmat lukevat ns. standardisyöttövirrasta (standard input, stdin) ja tulostavat normaalin tulostuksen standarditulostusvirtaan (standard output, stdout) ja virheilmoitukset mahdollisesti standardivirhevirtaan (standard error output, stderr). Oletusarvoisesti standardisyöttövirta tulee käyttäjän näppäimistöltä ja standarditulostusvirta ja standardivirhevirta menevät käyttäjän kuvaruudulle.
Edellä mainitut "virrat" voi kuitenkin eri tavoin määrätä toisenlaisiksikin, esimerkiksi siten, että komennon tulostus ei mene kuvaruudulle vaan tiedostoon.
Kirjoittamalla komennon loppuun
>
tiedostonnimi
saadaan aikaan, että komennon tulostus ei kirjoitu kuvaruudulle vaan ilmoitettuun tiedostoon.
Tämä tulostuksen uudelleenohjaus ei kuitenkaan välttämättä koske kaikkea sitä, mikä muutoin tulostuisi ruudulle, vaan virheilmoitukset saattavat silti tulostua päätteelle.
Annetun tiedostonnimen tulisi olla sellainen, että sennimistä tiedostoa ei ole ennestään olemassa. Jos tiedosto on jo olemassa, toiminta on erilaista eri Unixeissa: joissakin tiedoston vanha sisältö häviää, joissakin taas koko komennon suoritus epäonnistuu.
Esimerkiksi komento
ls -a mail/
tulostaa hakemiston mail/
kaikki tiedostojen nimet päätteen näytölle, mutta komento
ls -a mail/ >mail-hakemistoni
kirjoittaa kyseisen
tiedostolistauksen tiedostoon nimeltä mail-hakemistoni
.
On myös mahdollista ohjata tulostus olemassaolevaan tiedostoon sen
vanhan sisällön perään. Tämä tehdään käyttämällä kahta peräkkäistä
>
-merkkiä. Esimerkki:
grep foo bar >>loydetytOn mahdollista, että vaikka tulostus on ohjattu tiedostoon, osa tulosteista tulee silti kuvaruudulle. Tällöin käytettävä ohjelma ei tulostakaan standardisyöttövirtaan. Tavallisin tällainen tilanne on, että ohjelma tulostaa virheilmoitukset erilliseen "standardivirhevirtaan" stderr. Sekin on uudelleenohjattavissa, joskin eri shelleissä eri tavoin. T-shellissä menettely on, että käytetään
>
-merkin asemesta
merkkiparia >&
, jolloin sekä normaali tulostus että
virheilmoitukset menevät ilmoitettuun tiedostoon.
Esimerkki (jossa on kyse siitä, että C-kääntäjän virheilmoitukset
halutaan ohjata tiedostoon):
cc prog.c >& prog.msg
Kirjoittamalla komennon loppuun
<
tiedostonnimi
saadaan aikaan, että komento lukee syöttötietoja kyseisestä tiedostosta sen sijaan, että käyttäjä näpyttelisi tiedot näppäimistöltään.
Tätä mahdollisuutta voi käyttää myös yhdessä tulostuksen ohjauksen
kanssa, esim.
omaohj <datat.txt >tulos.txt