[Powered by Google Translate] TOMMY: Bideo honetan, ikasi dugu buruz
eta berbideratu hodiak.
Orain arte, izan dugu funtzioak erabiliz gustatzen printf to
irteera terminal datuak eta GetString bezalako funtzioak
Erabiltzaileak sarrera eman ahal izateko, gure
programa teklatua erabiliz.
Dezagun azkar hartu begirada bat lerro bat lortzen duen programa bat
erabiltzaileak sarrera eta, ondoren, irteera.
>> On line 7, kate bat erabiltzaile ari gara galdetu, eta
gero, on line 8, ari gara inprimatzeko atzera out.
Dezagun gure programa konpilatu eta exekutatu.
Great.
Eman dugu katea oihartzuna itzuli zen
terminalean.
Hau gertatu da printf funtzioa bat idatzi delako
korronte estandarra out izeneko, edo s-t-d-out.
Denean, zerbait idatzi stdout, lehenespenez
terminalean bistaratzen dira.
>> Beraz, guztiak ondo eta ona da, baina zer da, bada, ordez, besterik gabe-
katea, erakusteak fitxategi batean gorde nahi izan dugu?
Esate baterako, gogoratu nahi dugu zehatz-mehatz zer gure
programa egin eman dugu, bereziki sarrera bat geroago.
Ikuspegi Horretarako, gure C programa erabiliz izango litzateke
fitxategiak idazteko funtzio berezi batzuk zaitugu
beste bideo bat ikusi.
Are errazagoa da, baina, nolabait, izan
redirect stdout fitxategi batean.
Horrela, printf irteera estandarrean idazten du, edukiak
fitxategi bat baino gehiago idatzi
terminalean bistaratzen dira.
Besterik ez da egin ahal izango ditugu, handiagoa baino seinale bat gehitzea, ondoren
fitxategi-izen bat, komando hau erabiliko dugu gure programa exekutatu.
>> Beraz, baino, besterik gabe. Exekutatzean / redirect, ezin dugu
exekutatu. / redirect, zeinu baino handiagoa da, eta ondoren
filename, file.txt bezala.
Dezagun zer gertatzen den ikus-en.
Ados.
Oharra Une honetan, ez da ezer terminalean agertzen zen,
baina ez dugu aldaketa gure edukiak
C programa guztiak.
Dezagun gaur egun aztertu ls direktorioa honen edukia.
>> Guztiak eskubidea.
Dugu orain gure direktorioan fitxategi berria izeneko file.txt,
fitxategi izena hornitu dugu gure ran dugu
Redirect programa.
Dezagun ireki file.txt.
Eta hemen, ikus stdout redirect-
izeneko file.txt fitxategia idatzi.
Hargatik, aurreko komandoa berriro exekutatu, baina hornitzeko
beste sarrera denbora honetan.
Ongi da.
Dezagun file.txt begirada bat.
>> Ikusiko dugu hemendik fitxategia que ha sido gainidatzi, beraz, gure
jatorrizko sarrera ez da jada.
Ordez fitxategi hau erantsi nahi baduzu, berria jarriz
fitxategia lehendik dauden edukiak beheko sarrera,
handiagoa baino bi seinaleak erabili ordez bakarrarekin.
Dezagun saiatu egiten.
Orain, ireki file.txt berriro, bai gure ikus ahal izango dugu
sarrera lerroak.
Zenbait kasutan, edozein baztertu nahi dugu
gure programa irteera.
Beharrean irteera fitxategi batean idazten eta gero ezabatzen baino
ari egiten dugunean, fitxategia bereziak idatzi ahal izango dugu
izeneko fitxategi / dev / null.
Noiz ezer idatziko to / dev/null--
edo, besterik gabe, short for devnull
automatikoki baztertu da.
Beraz devnull uste zure datuak zulo beltz bat bezala.
>> Beraz, gaur egun ikusten dugu nola baino handiagoa ikurra redirect
stdout, utzi nola redirect standard dezakegu ikus-en -
edo s-t-d--
stdout-analogikoa.
Funtzioak bitartean gustatzen printf izeneko korronte idatzi
stdout, GetString eta antzeko funtzioak korrontea irakurri
izeneko stdin, berez, erreka
teklatuaren karaktereak idatzi.
Stdin zeinu baino gutxiago erabiltzen redirect ahal izango dugu, eta ondoren
fitxategi-izen bat.
Orain, baizik eta erabiltzailearen sarrera baino galdetu
terminal programa bat fitxategia ireki egingo dugu zehaztu eta erabili
bere sarrera gisa lerroak.
>> Dezagun zer gertatzen den ikus-en.
Great.
File.txt lehenengo lerroan izan da terminalean inprimatu
ari gara GetString deituz delako behin.
Izan genuen dei bat baduzu GetString gure programa,
file.txt line hurrengo izan zen gisa erabiltzen
sarrerako dei hori.
Berriz ere, ez dugu aldaketa gure C programa guztiak.
Bakarrik ari gara nola exekutatu aldatzen ari dira.
Eta, gainera, gogoratu, ez dugu birbideratutako stdout Une honetan,
beraz, programaren irteera izan zen oraindik
terminalean bistaratzen dira.
, Ezin dugu, noski, redirect bai stdin
eta hau atsegin stdout.
Orain, file2.txt file.txt lehenengo lerroa dauka.
>> Beraz, operadore hauek erabiliz, izan dugu irakurri eta gai
testu-fitxategiak idatzi.
Orain, dezagun ikus irteera programa bat nola erabili ahal izango dugu
beste programa bat da sarrera.
Hortaz, hona hemen,, C programa simple beste I
hemen izeneko hello.c.
Ikusten duzun bezala, hau da, besterik gabe, irteerak "Hi
ez! "erabiltzaileari.
Redirect kaixo irteera sarrera gisa erabili nahi dut bada -
beste programa bat -
Izan nuen lehenik eta behin redirect kaixo-stdout izeneko fitxategia
input.txt, ondoren birbideratu redirect-stdin berean
file - input.txt.
Beraz, egin ahal izango dut / kaixo> input.txt.
Sakatu Sartu exekutatu.
Jarraitzen. / Redirect <
input.txt, eta exekutatu.
Beraz, puntu eta komaz pixka bat, horri esker, laburtu dugu
lerro berean bi edo gehiago komandoak exekutatu.
Beraz, esan dezaket. / Kaixo> input.txt, puntu eta koma,
/ Redirect <input.txt.
>> Obra hau, beraz,, baina sentitzen, hala ere, nahiko inelegant.
Esan nahi dut, ez benetan behar dugu hau bitartekari testu fitxategi hori
jada ez redirect eskailerak ondoren beharrezko?
Zorionez, zer testu fitxategi gehiago erabiliz ekidin ahal izango dugu
tutu izeneko.
Esan badut, / kaixo |. / Redirect, ondoren stdout
ezkerreko programa
Kasu honetan, kaixo -
sarrera estandarra erabiliko da
eskubidea programa.
Kasu honetan, redirect. Beraz, dezagun exekutatu honetan.
>> Bertan dugu.
Kaixo irteera zen erabili ahal izango dugu, sarrera gisa
redirect.
Komandoak elkarrekin stringing hodiak erabiliz, zer osatzen dugu
izeneko hodi baten, gure irteera mugitzen da funtsean geroztik
Komando sekuentzia baten bitartez.
Hodiak erabiliz, cool stuff batzuk beharrik gabe egin ahal izango dugu
batere idazten kodea.
Esate baterako, demagun zenbat fitxategiak dira, jakin nahi dugu
Direktorio honen barruan.
Tutu erabiliz, ls komando konbinatu dezakegu wc batera -
edo Wordcount
komandoa.
Ls fitxategi bakoitzean bistaratu egingo stdout direktorioa, eta
wc esango digu zenbat lerro eman ziren stdin bidez.
Beraz, esan badugu ls | wc-l -
wc-l Ez hornitzeko dira lerroak zenbatzeko
zehazki zenbat fitxategiak dira ikusi ahal izango dugu
uneko direktorioan.
>> Beraz, dezagun adibide bat gehiago begirada bat.
Hemen daukat students.txt izeneko fitxategi bat,
izenen zerrenda bat.
Hala ere, izen horiek ez dira edozein ordenatan guztiak, eta itxura
gutxi izen bat bezala errepikatzen dira.
Zer nahi dugun izen berezia da Alfabetikoki zerrenda bat da
ordena, izeneko fitxategi bat final.txt gorde.
Izan dugu, noski, idatzi C programa hau egin digu.
Baina alferrik da
konplexua nahiko azkar.
Dezagun ordez erabili hodiak eta eraikitako-tresnak konpontzeko
Arazo hau.
>> Egin behar dugun lehenengo gauza da fitxategia irakurri students.txt.
Cat komandoa besterik ez da egingo.
Zehaztutako fitxategia izango da, irakurri eta idazteko
bere edukia estandarrean.
Ondoren, testu-fitxategia irakurtzen dugu, zaitugu
izenak ordenatzeko.
Ordenatu komandoa hau kudeatu ahal izango dugu.
Ordena stdin bidez hornitutako stdout line bistaratu
ordena ordenatuko.
Ordena, students.txt edukiak hornitzeko
sort-en stdin, tutu erabili izan dugu cat eta sort uztartzeko.
Sort eta | Beraz cat students.txt exekutatu ditzakeen I
sakatu Sartu.
Eta orain, students.txt edukia ikusiko dugu
ordena alfabetikoa.
>> Beraz, dezagun komandoa beste bat gehitu
uniq, edo berezia
gure pipeline.
Dituzu: asmatzea bezala, baliteke uniq, hornitu bat ordenatuko sekuentzia
stdin bidez lerro, lerro berezia bistaratu egingo da.
Beraz, gaur egun cat students.txt dugu
| Sort | uniq.
Azkenik, kanalizazioa irteera bat gorde ahal izango dugu.
sort | | uniq cat students.txt bidez fitxategia
> Final.txt.
Beraz, ireki dugu final.txt sortu bada, zehatz-mehatz zer ginen dugu
bila:
ordena alfabetikoan izen berezia zerrenda bat,
testu-fitxategi batean gorde.
Bide batez, esan dugu ezin sort <
students.txt | uniq> final.txt egin zehatz-mehatz
gauza bera, operadore ikusi dugu bakoitza erabiltzeko
bideo honetan.
>> Nire izena Tommy da, eta hau da CS50.