Input Output Redirection Linux/Unix Esimerkkejä
Mikä on uudelleenohjaus?
Uudelleenohjaus on Linuxin ominaisuus, jonka avulla voit vaihtaa vakiosyöttö-/tulostuslaitteita komentoa suoritettaessa. Perustyönkulku minkä tahansa Linux-komento on, että se ottaa syötteen ja antaa lähdön.
- Tavallinen syöttölaite (stdin) on näppäimistö.
- Vakiolähtölaite (stdout) on näyttö.
Uudelleenohjauksella yllä olevaa standardituloa/lähtöä voidaan muuttaa.
Napauta tätä jos video ei ole saatavilla
Tulostuksen uudelleenohjaus
- '>'-symbolia käytetään lähdön (STDOUT) uudelleenohjaukseen.
Esimerkiksi:
ls -al > listings
Tässä komennon ls -al tulos ohjataan uudelleen tiedostoon "listaukset" näytön sijaan.
Huomautuksia: Käytä oikeaa tiedostonimeä, kun ohjaat komennon tulosteen tiedostoon. Jos samanniminen tiedosto on olemassa, uudelleenohjattu komento poistaa tiedoston sisällön ja sen jälkeen se voidaan korvata."
Jos et halua, että tiedostoa korvataan, mutta haluat lisätä sisältöä olemassa olevaan tiedostoon, käytä ,'-operaattori.
Voit ohjata vakiotulosteen tiedostojen lisäksi myös laitteisiin!
$ cat music.mp3 > /dev/audio
Cat-komento lukee tiedoston music.mp3 ja lähettää tulosteen /dev/audio, joka on äänilaite. Jos tietokoneesi ääniasetukset ovat oikeat, tämä komento toistaa tiedoston music.mp3
Tulon uudelleenohjaus
- ''-symbolia käytetään syötteen (STDIN) uudelleenohjaukseen
Esimerkiksi: Linuxin sähköpostiohjelma voi auttaa sinua lähettämään sähköposteja terminaalista.
Voit kirjoittaa sähköpostin sisällön laitteen tavallisella näppäimistöllä. Mutta jos haluat liittää tiedoston sähköpostiin, voit käyttää syötteen uudelleenohjausoperaattoria seuraavassa muodossa.
Mail -s "Subject" to-address < Filename
Tämä liittäisi tiedoston sähköpostiin, ja se lähetettäisiin vastaanottajalle.
Yllä olevat esimerkit olivat yksinkertaisia. Katsotaanpa joitain edistyneitä uudelleenohjaustekniikoita, jotka käyttävät tiedostoa Descripttai.
filee Descriptors (FD)
Linuxissa/Unixissa kaikki on tiedostoa. Tavallinen tiedosto, hakemistot ja jopa laitteet ovat tiedostoja. Jokaiseen tiedostoon liittyy numero nimeltä Tiedosto Descripttai (FD).
Näytölläsi on myös tiedosto Descripttai. Kun ohjelma suoritetaan, tulos lähetetään tiedostoon Descripttai näytöstä, ja näet ohjelman ulostulon näytölläsi. Jos tulos lähetetään tiedostoon Descripttai tulostimesta, ohjelman tuloste olisi tulostettu.
Virhe uudelleenohjauksessa
Aina kun suoritat ohjelman/komennon päätteessä, 3 tiedostoa on aina auki, nimittäin vakiosyöte, vakiotulostus, vakiovirhe.
Nämä tiedostot ovat aina läsnä aina, kun ohjelma suoritetaan. Kuten edellä selitettiin, tiedostokuvaaja liittyy kuhunkin näistä tiedostoista.
filee | filee Descriptor |
---|---|
Vakiotulo STDIN | 0 |
Vakiolähtö STDOUT | 1 |
Vakiovirhe STDERR | 2 |
Oletusarvoisesti virhevirta näkyy näytöllä. Virheen uudelleenohjaus reitittää virheet muuhun tiedostoon kuin näyttöön.
Miksi uudelleenohjausvirhe?
Virheen uudelleenohjaus on yksi suosituimmista ominaisuuksista Unix / Linux.
Usein UNIX-käyttäjät uskovat, että monet komennot antavat sinulle valtavia määriä virheitä.
- Esimerkiksi tiedostoja etsiessään saa tyypillisesti lupa estetty -virheitä. Nämä virheet eivät yleensä auta tiettyä tiedostoa etsivää henkilöä.
- Kun suoritat shell-skriptejä, et usein halua virheilmoitusten sotkevan normaalia ohjelman tulosta.
Ratkaisu on ohjata virheilmoitukset tiedostoon.
Esimerkki 1
$ myprogram 2>errorsfile
Yllä suoritamme ohjelman, jonka nimi on myprogram.
Vakiovirheen tiedostokuvaaja on 2.
Käyttämällä "2>" ohjaamme virhetulosteen uudelleen tiedostoon nimeltä "errorfile"
Siten ohjelman tulos ei ole täynnä virheitä.
Esimerkki 2
Tässä on toinen esimerkki, joka käyttää find-lausetta -
find . -name 'my*' 2>error.log
Etsimme "find"-komennolla "." nykyinen hakemisto tiedostolle, jonka "nimi" alkaa "my"
Esimerkki 3: Katsotaanpa monimutkaisempi esimerkki,
Palvelimen ylläpitäjät listaavat usein hakemistoja ja tallentavat sekä virhe- että vakiotulosteet tiedostoon, joka voidaan käsitellä myöhemmin. Tässä on käsky.
ls Documents ABC> dirlist 2>&1
Täällä
- joka kirjoittaa tulosteen yhdestä tiedostosta toisen tiedoston tuloon. 2>&1 tarkoittaa, että STDERR uudelleenohjaa STDOUT-kohteeseen (joka on tiedostohakemisto)
- Uudelleenohjaamme virhetulosteen vakiolähtöön, joka puolestaan ohjataan tiedostohakemistoon. Siksi molemmat tulosteet kirjoitetaan tiedostohakemistoon
Yhteenveto
- Jokaisella Linuxin tiedostolla on vastaava tiedosto Descripttai liittyy siihen
- Näppäimistö on tavallinen syöttölaite, kun taas näyttösi on vakiotulostuslaite
- “>” on lähdön uudelleenohjausoperaattori. ”>>” lisää tulosteen olemassa olevaan tiedostoon
- "<" on syötteen uudelleenohjausoperaattori
- ">&"ohjaa tiedoston ulostulon toiseen.
- Voit ohjata virheen uudelleen käyttämällä sitä vastaavaa tiedostoa Descripttai 2.