Sisendväljundi ümbersuunamine Linuxi/Unixi näidetes
Mis on ümbersuunamine?
Ümbersuunamine on Linuxi funktsioon, mille abil saate käsu täitmisel muuta standardseid sisend-/väljundseadmeid. Põhiline töövoog mis tahes 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.
Ümbersuunamisega saab ülaltoodud standardset sisendit/väljundit muuta.
Click siin kui video pole juurdepääsetav
Väljundi ümbersuunamine
. '>' sümbolit kasutatakse väljundi (STDOUT) ümbersuunamiseks.
Näide:
ls -al > listings
Siin suunatakse käsu ls -al väljund teie ekraani asemel faili "loendid".
märkused: kasutage käsu väljundi faili ümbersuunamisel õiget failinime. Kui sama nimega fail on olemas, kustutab ümbersuunatud käsk selle faili sisu ja seejärel võidakse see üle kirjutada.
Kui te ei soovi faili üle kirjutada, kuid soovite olemasolevale failile rohkem sisu lisada, peaksite kasutama '>>' operaator.
Standardväljundit saate ümber suunata mitte ainult failidele, vaid ka seadmetele!
$ 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
. 'Sümbolit ' kasutatakse sisendi (STDIN) ümbersuunamiseks
Näide: Linuxi meiliprogramm aitab teil terminalist e-kirju saata.
Saate e-kirja sisu sisestada seadme standardse klaviatuuri abil. Kuid kui soovite e-kirjale faili manustada, saate kasutada sisendi ümbersuunamise operaatorit järgmises vormingus.
Mail -s "Subject" to-address < Filename
See manustaks e-kirjaga faili ja see saadetakse adressaadile.
Ülaltoodud näited olid lihtsad. Vaatame mõningaid varasemaid ümbersuunamistehnikaid, mis kasutavad faili Descriptvõi.
Fail Descriptors (FD)
Linuxis/Unixis on kõik failid. Tavafailid, kataloogid ja isegi seadmed on failid. Igal failil on seotud number nimega Fail Descriptvõi (FD).
Teie ekraanil on ka fail Descriptvõi. Kui programm on käivitatud, saadetakse väljund failile Descriptvõi ekraanilt ja näete oma monitoril programmi väljundit. Kui väljund saadetakse failile Descriptvõi printeri puhul oleks programmi väljund prinditud.
Viga ümbersuunamisel
Kui käivitate terminalis programmi/käsu, on alati avatud 3 faili, nimelt standardsisend, standardväljund, standardviga.
Need failid on alati olemas, kui programm käivitatakse. Nagu eelnevalt selgitatud, on faili deskriptor seotud kõigi nende failidega.
| Fail | Fail Descriptor |
|---|---|
| Standardsisend STDIN | 0 |
| Standardväljund STDOUT | 1 |
| Standardviga STDERR | 2 |
Vaikimisi kuvatakse ekraanil veavoog. Tõrgete ümbersuunamine suunab vead muusse faili kui ekraanikuva.
Miks ümbersuunamise viga?
Vea ümbersuunamine on üks väga populaarseid funktsioone Unix/Linux.
Sagedased UNIX-i kasutajad arvavad, et paljud käsud annavad teile tohutul hulgal vigu.
- Näiteks failide otsimisel kuvatakse tavaliselt loa keelamise vead. Need vead ei aita tavaliselt konkreetset faili otsivat inimest.
- Shelliskriptide täitmisel EI taha sageli, et veateated segaksid tavalist programmiväljundit.
Lahendus on suunata veateated uuesti faili.
Näiteks 1
$ myprogram 2>errorsfile
Ülalpool käivitame programmi nimega myprogram.
Standardvea failideskriptor on 2.
Kasutades "2>" suuname veaväljundi uuesti faili nimega "errorfile"
Seega ei ole programmi väljund vigu täis.
Näiteks 2
Siin on veel üks näide, mis kasutab leidmislauset -
find . -name 'my*' 2>error.log
Kasutades käsku "leida", otsime "." praegune kataloog faili jaoks, mille nimi algab tähega "minu"
Näide 3: Vaatame keerukamat näidet,
Serveriadministraatorid loetlevad sageli katalooge ja salvestavad nii vea kui standardväljundi faili, mida saab hiljem töödelda. Siin on käsk.
ls Documents ABC> dirlist 2>&1
Siin
- mis kirjutab ühe faili väljundi teise faili sisendisse. 2>&1 tähendab, et STDERR suunab ümber STDOUT-i sihtmärgile (mis on failide kataloog)
- Me suuname veaväljundi standardväljundisse, mis omakorda suunatakse uuesti faili kataloogi. Seega kirjutatakse mõlemad väljundid faili kataloogi
kokkuvõte
- Igal Linuxi failil on vastav fail Descriptvõi sellega seotud
- Klaviatuur on standardne sisendseade, samas kui teie ekraan on standardne väljundseade
- “>” on väljundi ümbersuunamise operaator. “>>” lisab väljundi olemasolevale failile
- "<" on sisendi ümbersuunamise operaator
- “>&” suunab ühe faili väljundi ümber teise.
- Saate vea uuesti suunata, kasutades sellele vastavat faili Descriptvõi 2.






.png)