Sisendväljundi ümbersuunamine Linuxi/Unixi näidetes
⚡ Nutikas kokkuvõte
Ümbersuunamine Linuxis ja Unixis muudab käsku sisendi lugemise või väljundi saatmise kohta, vahetabping klaviatuuri ja ekraani failide või seadmete jaoks, kasutades operaatoreid nagu suurem-kui-märk, väiksem-kui-märk ja lisamisoperaator.

Ümbersuunamine on üks kasulikumaid funktsioone Linux ja Unixi kest, sest see võimaldab teil otsustada, kuhu käsk sisendit loeb ja väljundit saadab. See leht selgitab väljundit, sisendit ja vea ümbersuunamist koos näidetega.
Mis on ümbersuunamine?
Ümbersuunamine on Linuxi funktsioon, mis võimaldab käsu täitmisel muuta standardseid sisend- ja väljundseadmeid. Iga käsu põhiline töövoog Linuxi käsk on see, et see võtab sisendi ja annab väljundi.
- Standardne sisendseade (stdin) on klaviatuur.
- Standardne väljund (stdout) seade on ekraan.
Ümbersuunamise abil saab ülaltoodud standardset sisendit ja väljundit muuta.
Väljundi ümbersuunamine
Allolev graafik tähistab väljundi ümbersuunamise näidete algust.
Väljundi (STDOUT) ümbersuunamiseks kasutatakse sümbolit '>'.
Näide:
ls -al > listings
Siin suunatakse käsu ls -al väljund ekraanipildi asemel faili „listings“. Allolev ekraanipilt näitab tulemust.
Märkus: Kasutage käsu väljundi failile ümbersuunamisel õiget failinime. Kui sama nimega fail on juba olemas, kustutab ümbersuunatud käsk selle sisu ja kirjutab selle seejärel üle.
Kui te ei soovi faili ülekirjutamist, kuid soovite olemasolevale failile sisu lisada, kasutage operaatorit '>>'. Allolev ekraanipilt näitab sisu, millele on lisatud '>>'.
Standardväljundit saab suunata mitte ainult failidesse, vaid ka seadmetesse.
$ cat music.mp3 > /dev/audio
Käsk cat loeb faili muusikat.mp3 ja saadab väljundi kausta /dev/audio, mis on heliseade. Kui teie arvuti helikonfiguratsioon on õige, esitab see käsk failimuusikat.mp3.
Sisestuse ümbersuunamine
Allolev graafik tutvustab sisendi ümbersuunamist.
Sümbolit '<' kasutatakse sisendi (STDIN) ümbersuunamiseks.
Näide: Linuxi meiliprogramm aitab teil terminalist e-kirju saata.
Saate e-kirja sisu sisestada klaviatuuri abil, mis on standardne sisestusseade. Aga kui soovite e-kirjale faili lisada, saate kasutada sisestuse ümbersuunamise operaatorit järgmises vormingus.
mail -s "Subject" to-address < Filename
Allolev ekraanipilt näitab, kuidas e-posti käsk loeb sisendiks faili.
See lisab faili e-kirjale ja see saadetakse adressaadile.
Ülaltoodud näited olid lihtsad. Nüüd vaatame mõningaid täiustatud ümbersuunamistehnikaid, mis kasutavad failikirjeldajaid.
Fail Descriptors (FD)
Linuxis ja Unixis on kõik failid. Tavalised failid, kataloogid ja isegi seadmed on failid. Igal failil on seotud number, mida nimetatakse faili deskriptoriks (FD).
Allolev diagramm näitab standardvooge ja nende failikirjeldusi.
Sinu ekraanil on ka failideskriptor. Programmi käivitamisel saadetakse väljund ekraani failideskriptorisse ja sa näed programmi väljundit oma monitoril. Kui väljund saadetaks printeri failideskriptorisse, prinditaks programmi väljund.
Viga ümbersuunamisel
Alati, kui terminalis programmi või käsku käivitad, on avatud kolm faili: standardsisend, standardväljund ja standardveafail.
Need failid on programmi käivitamisel alati olemas. Nagu varem selgitatud, on iga failiga seotud failikirjeldaja.
| Fail | Fail Descriptor |
|---|---|
| Standardsisend STDIN | 0 |
| Standardväljund STDOUT | 1 |
| Standardviga STDERR | 2 |
Vaikimisi kuvatakse veavoog ekraanil. Vea ümbersuunamine suunab vead ekraanilt muusse faili.
Miks ümbersuunamise viga?
Vea ümbersuunamine on üks Unixi ja Linuxi väga populaarseid funktsioone.
Sagedased Unixi kasutajad teavad, et paljud käsud annavad tohutul hulgal vigu. Näiteks failide otsimisel tekib tavaliselt luba keelatud vead, mis tavaliselt ei aita konkreetse faili otsijat. Shelliskriptide käivitamisel ei ole sageli soovitatav, et veateated risustaksid tavalist programmi väljundit.
Lahendus on veateadete faili suunamine.
Näiteks 1
$ myprogram 2>errorsfile
Allolev ekraanipilt näitab seda käsku terminalis.
Ülalpool käivitame programmi nimega minuprogramm. Standardvea failideskriptor on 2. Kasutades „2>“, suuname veaväljundi ümber faili nimega „veafail“. Seega ei ole programmi väljund vigadest üle koormatud.
Näiteks 2
Siin on veel üks näide, mis kasutab find-lauset.
find . -name 'my*' 2>error.log
Käsu find abil otsime praegusest kataloogist „.” faili, mille nimi algab tähega „minu” ja saadame kõik vead faili error.log.
Näide 3: Vaatame keerulisemat näidet.
Serveriadministraatorid loetlevad sageli katalooge ja salvestavad nii vea- kui ka standardväljundi faili, mida saab hiljem töödelda. Siin on käsk.
ls Documents ABC> dirlist 2>&1
Allolev diagramm näitab mõlema voo jäädvustamist ühte faili.
siin:
- 2>&1 tähendab, et STDERR suunatakse ümber samale sihtmärgile kui STDOUT (mis on failikataloog).
- Veaväljund suunatakse standardväljundisse, mis omakorda suunatakse faili „dirlist“. Seega kirjutatakse mõlemad vood faili „dirlist“.
Allolev diagramm võtab kokku, kuidas sisend, väljund ja vea ümbersuunamine omavahel sobivad.






.png)