Input Output Redirection Linux/Unix Esimerkkejä
⚡ Älykäs yhteenveto
Uudelleenohjaus Linuxissa ja Unixissa muuttaa komentojen luku- ja lähetyskohtia, kuten swap-kohtia.ping näppäimistöä ja näyttöä tiedostoille tai laitteille käyttämällä operaattoreita, kuten suurempi kuin -merkki, pienempi kuin -merkki ja liitä-operaattori.

Uudelleenohjaus on yksi hyödyllisimmistä ominaisuuksista Linux ja Unix-kuoressa, koska sen avulla voit päättää, mistä komento lukee syötteen ja lähettää tulosteen. Tällä sivulla selitetään tuloste, syöte ja virheiden uudelleenohjaus toimivien esimerkkien avulla.
Mikä on uudelleenohjaus?
Uudelleenohjaus on Linuxin ominaisuus, jonka avulla komentoa suoritettaessa voidaan vaihtaa vakiomuotoisia syöttö- ja tulostuslaitteita. Minkä tahansa komentojen perustyönkulku Linux-komento on, että se ottaa syötteen ja antaa tulosteen.
- Tavallinen syöttölaite (stdin) on näppäimistö.
- Vakiolähtölaite (stdout) on näyttö.
Uudelleenohjauksella yllä olevaa vakiotuloa ja -lähtöä voidaan muuttaa.
Tulostuksen uudelleenohjaus
Alla oleva kuva osoittaa tulosteen uudelleenohjauksen esimerkkien alkua.
Symbolia '>' käytetään lähdön (STDOUT) uudelleenohjaukseen.
Esimerkiksi:
ls -al > listings
Tässä komennon ls -al tuloste ohjataan tiedostoon ”listings” näytön sijaan. Alla oleva kuvakaappaus näyttää tuloksen.
Huomautus: Käytä oikeaa tiedostonimeä ohjatessasi komentoa tiedostoon. Jos samanniminen tiedosto on jo olemassa, uudelleenohjattu komento poistaa sen sisällön ja korvaa sen.
Jos et halua tiedoston päällekirjoitettavan, mutta haluat lisätä sisältöä olemassa olevaan tiedostoon, käytä '>>'-operaattoria. Alla olevassa kuvakaappauksessa sisältö on lisätty '>>'-merkillä.
Voit ohjata vakiotulosteen paitsi tiedostoihin, myös laitteisiin.
$ cat music.mp3 > /dev/audio
cat-komento lukee tiedoston musiikkitiedostot.mp3 ja lähettää lähdön /dev/audio-hakemistoon, joka on äänilaite. Jos tietokoneesi ääniasetukset ovat oikein, tämä komento toistaa tiedostomusiikin.mp3.
Tulon uudelleenohjaus
Alla oleva grafiikka esittelee syötteen uudelleenohjauksen.
Symbolia '<' käytetään syötteen (STDIN) uudelleenohjaukseen.
Esimerkki: Linuxin sähköpostiohjelma voi auttaa sinua lähettämään sähköposteja terminaalista.
Voit kirjoittaa sähköpostin sisällön näppäimistöllä, joka on vakiosyöttölaite. Mutta jos haluat liittää sähköpostiin tiedoston, voit käyttää syötteen uudelleenohjausoperaattoria seuraavassa muodossa.
mail -s "Subject" to-address < Filename
Alla olevassa kuvakaappauksessa mail-komento lukee syötteenä tiedostoa.
Tämä liittää tiedoston sähköpostiin ja lähettää sen vastaanottajalle.
Yllä olevat esimerkit olivat yksinkertaisia. Tarkastellaan nyt joitakin edistyneitä uudelleenohjaustekniikoita, jotka hyödyntävät tiedostokuvauksia.
filee Descriptors (FD)
Linuxissa ja Unixissa kaikki on tiedostoa. Tavalliset tiedostot, hakemistot ja jopa laitteet ovat tiedostoja. Jokaisella tiedostolla on siihen liittyvä numero, jota kutsutaan tiedostokuvaajaksi (FD).
Alla oleva kaavio näyttää vakiovirrat ja niiden tiedostokuvaukset.
Näytölläsi on myös tiedostodeskriptori. Kun ohjelma suoritetaan, tuloste lähetetään näytön tiedostodeskriptoriin, ja näet ohjelman tulosteen näytölläsi. Jos tuloste lähetettäisiin tulostimen tiedostodeskriptoriin, ohjelman tuloste tulostuisi.
Virhe uudelleenohjauksessa
Aina kun suoritat ohjelman tai komennon päätelaitteessa, kolme tiedostoa on aina auki: vakiosyöte, vakiotuloste ja vakiovirhetiedosto.
Nämä tiedostot ovat aina läsnä ohjelman suorituksen aikana. Kuten aiemmin selitettiin, jokaiseen näistä tiedostoista liittyy tiedostokuvaaja.
| filee | filee Descriptor |
|---|---|
| Vakiotulo STDIN | 0 |
| Vakiolähtö STDOUT | 1 |
| Vakiovirhe STDERR | 2 |
Oletusarvoisesti virhevirta näkyy näytöllä. Virheiden uudelleenohjaus reitittää virheet muualle kuin näytölle.
Miksi uudelleenohjausvirhe?
Virheiden uudelleenohjaus on yksi Unixin ja Linuxin erittäin suosituista ominaisuuksista.
Usein Unix-käyttäjät tietävät, että monet komennot antavat valtavan määrän virheitä. Esimerkiksi tiedostoja etsittäessä saa tyypillisesti lupa estetty -virheet, jotka eivät yleensä auta tietyn tiedoston etsijää. Shell-skriptejä suoritettaessa ei usein haluta virheilmoitusten tukkivan normaalia ohjelman tulostetta.
Ratkaisu on ohjata virheilmoitukset tiedostoon.
Esimerkki 1
$ myprogram 2>errorsfile
Alla oleva kuvakaappaus näyttää tämän komennon terminaalissa.
Yllä suoritamme ohjelmaa nimeltä myprogram. Standard error -tiedoston kuvaaja on 2. Käyttämällä ”2>” ohjaamme virhetulosteen tiedostoon nimeltä ”errorsfile”. Näin ohjelman tuloste ei ole täynnä virheitä.
Esimerkki 2
Tässä on toinen esimerkki, joka käyttää find-lauseketta.
find . -name 'my*' 2>error.log
find-komennolla etsimme nykyisestä hakemistosta "." tiedostoa, jonka nimi alkaa kirjaimilla "my", ja lähetämme mahdolliset virheet error.log-tiedostoon.
Esimerkki 3: Katsotaanpa monimutkaisempaa esimerkkiä.
Palvelimen ylläpitäjät listaavat usein hakemistoja ja tallentavat sekä virhe- että vakiotulosteen tiedostoon, jota voidaan käsitellä myöhemmin. Tässä on komento.
ls Documents ABC> dirlist 2>&1
Alla oleva kaavio näyttää molempien virtojen tallentamisen yhteen tiedostoon.
Tässä:
- 2>&1 tarkoittaa, että STDERR ohjataan samaan kohteeseen kuin STDOUT (joka on tiedostohakemisto).
- Virhetuloste ohjataan standarditulosteeseen, joka puolestaan ohjataan tiedostoon dirlist. Näin ollen molemmat virrat kirjoitetaan tiedostoon dirlist.
Alla oleva kaavio havainnollistaa, miten syöte, tuloste ja virheiden uudelleenohjaus sopivat yhteen.






.png)