[Powered by Google Translate] TOMMY: În acest videoclip, vom afla mai multe despre redirecționarea și conducte. Până acum, am fost folosind funcții cum ar fi printf să date de ieșire la terminalul și funcțiile similare getString pentru a permite utilizatorului să ofere informații noastră program folosind tastatura. Să aruncăm o privire la rapid un program care devine o linie de de intrare de la utilizator și apoi să emită. Pe linia 7, suntem fapt care ia determinat utilizatorul pentru un șir, și apoi pe linia 8, ne-l imprimați înapoi. Să compila și executa programul nostru. Mare. Șir am oferit a fost trimis inapoi la noi la terminal. Acest lucru sa întâmplat pentru că funcția printf scris într-o curs de apa strigat de iarnă, sau s-t-d-out. Când ceva este scris la stdout, e în mod implicit afișată de terminale. Deci, asta e tot bine și bună, dar ce se întâmplă dacă, în loc de pur și simplu afișarea șir, am vrut să-l salvați într-un fișier? De exemplu, am putea dori să-și amintească exact ce ne Programul de făcut atunci când am dat un anumit input mai târziu. O abordare ar fi să se facă acest lucru în programul nostru de C, utilizând unele funcții speciale pentru scrierea fișierelor pe care le voi a se vedea într-un alt film. Chiar mai ușor, deși, ar trebui să fie într-un fel redirect stdout într-un fișier. În acest fel, atunci când scrie printf la stdout, conținutul va fi scrise într-un fișier, mai degrabă decât afișată de terminale. Noi putem face doar că, prin adăugarea unui semn mai mare decât, urmat printr-un nume de fișier, pentru a comanda vom folosi pentru a executa programul nostru. Deci, mai degrabă decât pur și simplu de executare / redirect,. Putem rulați / redirect., urmat de un semn mai mare, urmată de Filename, cum ar fi file.txt. Să vedem ce se întâmplă. OK. Observați că de această dată, nimic nu a fost afisat la terminal, dar nu au modificat conținutul nostru C program la toate. Să examinăm acum conținutul acestui director cu ls. Bine. Avem acum un nou fișier în directorul nostru numit file.txt, care este numele fișierului am furnizat atunci când ne-am întâlnit nostru Redirect program. Să deschidem file.txt. Și aici, putem vedea că stdout din redirecționare a fost scris fișier numit file.txt. Deci, haideți să rulați comanda anterioară din nou, dar furnizează o intrare diferit de data asta. Bine. Să aruncăm o privire la file.txt acum. Putem vedea aici că dosarul a fost suprascris, asa nostru intrare original nu este acolo. Dacă ne în schimb doriți să adăugați la acest dosar, punerea noua de intrare de mai jos conținutul existent al fișierului, putem utilizați două mai mare decât semne în loc de unul singur. Să încercăm asta. Acum, dacă vom deschide din nou file.txt, putem vedea atat al nostru intrare linii. În unele cazuri, s-ar putea dori să se debaraseze orice de ieșire a programului nostru. , Mai degrabă decât scris de ieșire într-un fișier și apoi ștergerea fișierul atunci când am terminat cu ea, putem scrie o la construcții fișier numit / dev / null. Atunci când ceva este scris / dev/null-- sau devnull doar pentru scurt - acesta este automat eliminată. Deci, cred că a devnull ca o gaura neagra pentru datele tale. Deci, acum am văzut cum semnul mai mare decât cea care poate redirecționa stdout, să vedem cum putem redirecționa standard în - sau s-t-d-in - analog al stdout. În timp ce funcțiile place să scrie printf curs de apa numit stdout, getString și funcții similare citit din fluxul numit stdin, care, în mod implicit, este fluxul de caractere tastat la tastatura. Ne putem redirecționa stdin folosind mai puțin de semn, urmat printr-un nume de fișier. Acum, mai degrabă decât determinat de utilizator pentru intrare la terminale, un program se va deschide fișierul am specificat și de a folosi liniile sale ca intrare. Să vedem ce se întâmplă. Mare. Prima linie de file.txt a fost tipărită la terminalul pentru ca suntem de asteptare getString o dată. Dacă am fi avut un alt apel la getString în programul nostru, următoarea linie de file.txt ar fi fost folosite ca de intrare la acel apel. Din nou, nu ne-am modificat programul nostru C, la toate. Suntem doar schimbă modul în care o executați. Și amintiți-vă, de asemenea, nu ne-am redirecționat stdout acest timp, astfel de ieșire a programului a fost încă afișate la terminal. Ne putem, desigur, atât de redirecționare stdin și consolă de genul asta. Acum, file2.txt conține prima linie de file.txt. Deci, folosind aceste operatori, am fost capabili să citească și scrie din fișiere text. Acum, să vedem cum putem folosi de ieșire a unui program ca de intrare la un alt program. Deci, aici e un alt program simplu C I au chemat aici hello.c. După cum puteți vedea, aceasta pur și simplu scoate "Max acolo "a utilizatorului!. Dacă vreau să redirecționeze utilizați ca intrare de ieșire de salut - un alt program - Aș putea redirecționa prima stdout de salut într-un fișier numit INPUT.TXT, apoi redirecționați stdin din redirecționare a aceleiași fișier - INPUT.TXT. Deci, eu pot face. / Salut> INPUT.TXT. Apăsați Enter pentru a executa acest lucru. Urmat de. / Redirect < INPUT.TXT, si veti executa. Astfel încât să putem scurta acest bit o cu un punct și virgulă, care permite ne să curgă la două sau mai multe comenzi pe aceeași linie. Deci, eu pot spune,. / Buna ziua> INPUT.TXT, punct și virgulă, / Redirect. Final.txt. Deci, dacă ne deschidem final.txt, avem exact ceea ce am fost In cautare de: o listă de nume unice în ordine alfabetică, salvate într-un fișier text. Apropo, am fi putut spune, de asemenea, un fel < students.txt | Uniq> final.txt să facă exact același lucru, folosind fiecare dintre operatorii care le-am văzut în acest videoclip. Numele meu este Tommy, iar acest lucru este CS50.