Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.2.PRZEKIEROWANIA
program>xyz2>&1
Przekierowanieobustandardowychwyjśćdoplikuxyz.Mogłobysięwydawać,żewa-
riantyprogram2>&1>xyzlubprogram>xyz2>xyzrównieżzadziałają,jednak
takniestetyniejest(patrzrównieżramkahJakrozwiązywaneprzekierowania[VER-
BOSE]”orazramkahDwaprzekierowaniadojednegopliku[BEYOND]”).
program|inny-program
Standardowewyjściepierwszegoprogramuzostanieprzekierowanenastandardowe
wejściedrugiegoprogramu.Drugiprogramnajczęściejalbofiltrujeotrzymanedane
(np.wyszukująctylkopodanychwzorców),albopoddajejedalszejobróbce.
Jakrozwiązywaneprzekierowania[VERBOSE]
Wspomniałemjuż,żeprzyprzekierowaniuobustandardowychwyjść(stdout,stderr)
dojednegoplikunależyużyćpoleceniaprogram>xyz2>&1orazżepodanieprze-
kierowańwodwrotnejkolejnościniezadziałazgodniezoczekiwaniamiwynikato
zesposobuichrealizacji.
Wdużymuproszczeniu:ostosowanymzapisiewstylulewa-strona>prawa-
strona,lewa-strona<prawa-stronaitd.możnamyślećjakoostandardowej
operacjiprzypisanialewa-strona=prawa-strona,przyzałożeniu,żeobie
stronyzmiennymi(deskryptorami),którewtymprzypadkureprezentująfaktyczne
odwołaniadopotoków,plików,konsoliitp.
Wartopamiętać,żepunktemwyjściazawszedeskryptorystdin/stdout/stderr
odziedziczonepoprocesieinterpretera(rodzica),awięc:
deskryptor0(wprzykładzieponiżejoznaczanyjakofd0),czylistdinprocesu
potomnego,wskazujenatosamourządzeniestandardowegowejścia,które
jestużywaneprzezinterpreter;
deskryptor1(fd1),czylistdoutprocesupotomnego,wskazujenastdoutpro-
cesurodzica;
deskryptor2(fd2),czylistderrprocesupotomnego,wskazujenastderrpro-
cesurodzica.
Korzystajączpowyższegouproszczeniaimającnauwadzepunktwyjścia,rozważ-
my,cosięstaniewprzypadkuwykonaniapoleceniaprogram2>&1>xyz:
1.2>&1(awięcfd2=fd1)deskryptor2maodterazwskazywaćnatensam
potok/plikitp.,doktóregoodnosisiędeskryptor1.Wtymmomenciedeskryp-
tor1wskazujenaodziedziczonepointerpreterzestdout,zatemdeskryptor2
odtegomomentubędzierównieżodnosićsiędostandardowegowyjścia
interpretera.
2.>xyz(awięcfd1=file("xyz",WRITE))deskryptor1odterazma
wskazywaćnanowootwarty(dozapisu)plikxyz.Deskryptor2niejestwżaden
sposóbuaktualnianyanizmieniany,zatemcałyczasodnosisiędostandardo-
wegowyjściainterpretera.
29