[Powered by Google Translate] Tommy: En ĉi tiu video, ni lernos pri redireccionando kaj tuboj. Ĝis nun, ni estis uzante funkciojn kiel printf al eligo datumojn al la terminalo kaj funkcioj kiel GetString por permesi al la uzanto por havigi enigo al nia programo uzanta la klavaro. Ni rapide rigardu programo kiu ricevas linio de enigo de la uzanto kaj tiam eligas ĝin. Sur la linio 7, ni instigante al la uzanto por kordoj, kaj tiam la linio 8, ni presi ĝin eksteren. Ni tradukigi kaj ruli nia programo. Granda. La kordoj ni havigis estis eĥita reen nin al la terminalo. Ĉi tio okazis ĉar la printf funkcio skribis al rivereto nomita normo ekster, aŭ s-t-d-out. Kiam io estas skribita al stdout, estas defaŭlte montritaj de la terminalo. Do jen ĉio bone, sed kio se, anstataŭ simple montrante la ĉeno, ni volis savi ĝin al dosiero? Ekzemple, ni povus volas memori precize kion niaj programo faris kiam ni donis gxin aparta enigo poste. Unu proksimigo estus fari tion en nia C programon, uzante iuj specialaj funkcioj por skribi al dosieroj por ke ni instruos vin vidi en alia video. Eĉ pli facila, tamen, estus iel ridirektanta stdout al dosiero. Tiu vojo, kiam printf skribas al stdout, la enhavo volo esti skribita al dosiero anstataŭ montritaj de la terminalo. Ni povas fari ĝuste tion per aldono de pli granda ol signo, sekvis per dosiernomo, al la komando ni uzas por ekzekuti nia programo. Do, anstataŭ simple ekzekuti. / Alidirektilo, ni povas kuri. / alidirektilo, sekvita de iu pli granda ol signo, sekvita de dosiernomo, kiel file.txt. Ni vidu kio okazos. OK. Rimarku ke tiu tempo, nenio estis montrata je la fina stacio, sed ni ne modifis la enhavon de nia C programon tute ne. Ni nun ekzameni la enhavon de tiu ĉi dosierujo kun ls. Bone. Ni nun havas novan dosieron en nia katalogo nomis file.txt, kiu estas la dosiernomo ni havigis kiam ni kuris nia Alidirektila programo. Ni malfermi file.txt. Kaj tie, ni povas vidi ke la stdout el alidirektilo estis skribis al la dosiero nomata file.txt. Do ni kuras la antaŭa komando denove, sed provizado de malsamaj enigo ĉi tiu tempo. Okay. Ni rigardu file.txt nun. Ni povas vidi ĉi tie ke la dosiero estis anstataŭigi, do nia originalaj enigo ne estas tie plu. Se ni anstataŭ volas aldonas al ĉi tiu dosiero, metante la novajn enigo sub la ekzistantaj enhavon de la dosiero, ni povas uzi du pli grandaj ol signoj anstataŭ nur unu. Ni provu tion. Nun, se ni malfermas file.txt denove, ni povas vidi ambaux niaj enigo linioj. En iuj kazoj, ni eble volas forĵeti ajna eligo de nia programo. Anstataŭ skribi la eliro al dosiero kaj poste forigi la dosiero kiam ni el tio, ni povas skribi al specialaj dosiero nomata / dev / null. Kiam io estas skribita al / dev/null-- aŭ nur devnull por mallongaj - ĝi estas aŭtomate forĵetita. Do pensu pri devnull kiel nigra truo por via datumoj. Do nun ni vidis kiel la granda ol signo povas redirekti stdout, vidu kiel ni povas redirekti normo en - aŭ s-t-d-in - la analoga de stdout. Dum funkcioj kiel printf skribi al la rojo nomata stdout, GetString kaj similaj funkcioj legis el la rivereto vokis stdin, kiu, implicite, estas la kurento de karakterojn tajpita en la klavaro. Ni povas redirekti stdin uzanta la malpli ol signo, sekvis per dosiernomo. Nun, pli ol instigante la uzanto por enigo en la fina stacio, programo malfermos la dosieron ni specifas kaj uzi liaj linioj kiel enigo. Ni vidu kio okazos. Granda. La unua linio de file.txt estis presita la fina ĉar ni vokas GetString unufoje. Se ni havis alian alvokon al GetString en nia programo, la sekvanta linio de file.txt estus uzata kiel enigo al tiu alvoko. Denove, ni ne modifis nian C programon tute ne. Ni nur ŝanĝas kiel ni ruli ĝin. Kaj ankaŭ memoras, ni ne nomumata stdout ĉi tiu tempo, do la eligo de la programo estis ankoraŭ montrata ĉe la stacio. Ni povas, kompreneble, alidirektilo ambaŭ stdin kaj stdout ŝatas tion. Nun, file2.txt enhavas la unuan linion de file.txt. Do, uzante tiujn operatoroj, ni povis legi kaj skribi de tekstaj dosieroj. Nun, ni vidu kiel ni povas uzi la eligo de unu programo kiel la eniro al alia programo. Do jen alia simpla C programon mi ili tie nomas hello.c. Kiel vi povas vidi, ĉi simple eligas "Saluton tie! "al la uzanto. Se mi volas redirekti uzi kiel eniro la eligo de saluton - alia programo - Mi povus unue alidirektilo la stdout de saluton al dosiero nomata input.txt, tiam alidirektilo la stdin de alidirektilo al tiu sama dosiero - input.txt. Do mi povas fari. / Saluton> input.txt. Premu Enter por ekzekuti ĉi. Sekvata de. / Alidirektilo < input.txt kaj plenumados tio. Do ni povas mallongigi tiun iom kun punktokomo, kiu permesas ni kuri du aŭ pli komandojn sur la sama linio. Do mi povas diri,. / Saluton> input.txt, punktokomo, . / Alidirektilo Final.txt. Do, se ni malfermas final.txt, ni havas precize kion ni estis serĉas: listo de unika nomojn en alfabeta ordo, savis al teksta dosiero. Cetere, ni ankaux povus esti diris speco < students.txt | uniq> final.txt fari precize la sama afero, uzante ĉiu de la operatoroj ni vidis en ĉi tiu video. Mia nomo estas Tommy, kaj ĉi tiu estas CS50.