[Powered by Google Translate] Tommy: Šiame vaizdo, mes daugiau sužinoti apie
nukreipti ir vamzdžiai.
Iki šiol, mes jau naudojant funkcijas patinka printf
išvesties duomenis į terminalą ir funkcijų, pavyzdžiui, GetString
kad vartotojas galėtų įnešti indėlį į mūsų
programa, naudodami klaviatūrą.
Leiskite greitai pažvelgti į programą, kuri gauna liniją
įvestis iš vartotojo ir tada rezultatai.
>> 7 on-line mes paskatino vartotoją styginių, ir
8 on-line, mes spausdinimą atgal.
Tegul sukompiliuoti ir paleisti mūsų programą.
Didysis.
Eilutė buvo pakartotas
mus į terminalą.
Tai atsitiko todėl, parašė printf funkcija
srautas vadinamas standartiniu atlikti, arba s-t-d-out.
Kai kas nors yra parašyta, kad stdout, tai pagal nutylėjimą
rodoma terminalo.
>> Taigi, kad viskas gerai ir gerai, bet ką, jei, užuot paprasčiausiai
rodyti eilutę, mes norėjome išsaugoti į failą?
Pavyzdžiui, mes norime tai prisiminti, ką mūsų
programa, kai mes davė jam tam tikrą indėlį vėliau.
Vienas iš būdų būtų tai padaryti mūsų C programa, naudojant
specialias funkcijas, kaip rašyti į failus, kad mes atsiųsime
pamatyti kitą video.
Net lengviau, nors, būtų kažkaip
nukreipti į failą STDOUT.
Tokiu būdu, kai printf rašo į stdout, turinys
būti įrašomi į failą, o ne
rodoma terminalo.
Mes galime padaryti, tik, kad pridedant didesnis nei ženklą, po
failo vardo, į komandą, mes naudojame mūsų programą vykdyti.
>> Taip, o ne tiesiog vykdyti. / Nukreipta, mes galime
paleisti. / nukreipti, kaip ženklas, po
Failo pavadinimas kaip plik.txt.
Leiskite pamatyti, kas atsitiks.
Gerai.
Atkreipkite dėmesį, kad šį kartą nieko buvo rodomas terminalo,
bet mes ne kartą keistas mūsų turinį
C programa ne visi.
Tegul dabar nagrinėja šio katalogo su ls turinį.
>> Gerai.
Dabar mes turime naują failą su mūsų katalogą, pavadintą plik.txt,
kuris yra failo pavadinimas, mes tiekiamos Kai nubėgome mūsų
Nukreipti programą.
Tegul atverti plik.txt.
Ir čia mes galime matyti, kad stdout iš nukreipti
parašyta į failą pavadinimu plik.txt.
Todėl galime paleisti ankstesnę komandą vėl, bet tiekti
skirtinga įėjimo laikas.
Gerai.
Paimkime atrodo plik.txt dabar.
>> Mes galime matyti, kad failas buvo perrašyti, kad mūsų
originalus šaltinis yra ne dingsta.
Jei mes vietoj norite pridėti prie šio failo, diegiant naujas
įvesties žemiau esamų failo turinio, mes galime
naudoti dvi didesnis nei požymių, o ne tik vieną.
Pabandykime kad.
Dabar, jei mes vėl atidaryti plik.txt, mes galime matyti tiek mūsų
įvesties eilutės.
Kai kuriais atvejais, mes norime sunaikinti bet
produkcija mūsų programoje.
O ne raštu išėjimo į failą ir tada ištrinti
byla, kai baigsite su juo, mes galime parašyti ypatingų
/ dev / null failą pavadinimu.
Kai kas nors yra parašyta, kad / dev/null--
arba tiesiog devnull trumpas -
jis yra automatiškai atmetamos.
Taigi manau, devnull juodąją skylę jūsų duomenis.
>> Taigi dabar mes matėme, kaip didesnis nei ženklas gali nukreipti
stdout, galime pamatyti, kaip mes galime nukreipti standartas -
arba s-t-d--
stdout analogas.
Nors funkcijos printf patinka rašyti upelio pavadinimu
stdout, GetString ir panašias funkcijas, skaityti iš srauto
vadinamas stdin, pagal nutylėjimą, yra srautas
ženklai įrašėte į klaviatūrą.
Mes galime nukreipti STDIN, naudojant mažiau nei ženklo, po
failo vardą.
Dabar, o ne paskatino vartotojo input už
terminalas, programa atvers failą nurodyti ir naudoti
jo linijos kaip pirkimo.
>> Leiskite pamatyti, kas atsitiks.
Didysis.
Buvo spausdinamas terminalo Pirmoje eilutėje plik.txt
dėl to, kad mes kuriam skambinate GetString vieną kartą.
Jei mes turėjome kitą skambutį GetString mūsų programoje,
kitą eilutę file.txt buvo naudojami kaip
įėjimas į šį kvietimą.
Vėlgi, mes ne kartą keistas mūsų C programa ne visi.
Mes tik keičiasi, kaip mes jį paleisti.
Ir taip pat prisiminti, mes negalime nukreipti STDOUT šį kartą,
programos produkcija vis dar buvo
rodomas terminalo.
Mes, žinoma, nukreipti tiek STDIN
ir stdout mėgsta tai.
Dabar file2.txt yra file.txt pirmąją eilutę.
>> Taigi, naudojant šių operatorių, mes galėjo skaityti ir
rašyti iš tekstinių failų.
Dabar pažiūrėkime, kaip mes galime naudoti vieną programą produkcijos
įėjimo į kitą programą.
Taigi čia dar vienas paprastas C programa
čia vadinama hello.c.
Kaip matote, tai tiesiog išveda "Labas
ten! "vartotojui.
Jei aš noriu nukreipti naudoti kaip įvesti "Hello produkcija -
kita programa -
Aš pirmiausia turėtų būti nukreipti failą pavadinimu "Hello STDOUT
input.txt, tada nukreipti nukreipti STDIN į tą pačią
failas - input.txt.
Taigi aš galiu padaryti. / Apie> input.txt.
Paspauskite "Enter", vykdyti.
Po / nukreipti <
input.txt ir vykdyti.
Taigi, mes galime sutrumpinti šį šiek tiek su kabliataškiu, kuri leidžia
mus vykdyti dvi ar daugiau komandų toje pačioje eilutėje.
Taigi aš galiu pasakyti. / Apie> input.txt, kabliataškis,
/ Peradresavimas <input.txt.
>> Taigi, tai veikia, bet ji vis dar jaučiasi gana Niewykwintny.
Aš turiu galvoje, mes tikrai reikia šio tarpininko tekstinį failą, kad
nebereikia po nukreipti veikia?
Laimei, mes galime išvengti šį papildomą tekstinį failą, naudojant, kas yra
vadinamas vamzdis.
Jei aš sakau,, / Apie. / Nukreipti, tada STDOUT
kairėje programa -
šiuo atveju, hello -
bus naudojamas kaip standartinę įvestį
programa dešinėje.
Šiuo atveju, nukreipti. Todėl galime paleisti šią.
>> Čia mes eiti.
Mes matome, kad "Hello produkcija buvo naudojamas kaip įvesties
už nukreipti.
Apjuostame komandas, kartu naudojant vamzdžius, mes sudaryti, kas
vadinamas dujotiekis, nes mūsų produkcija iš esmės juda
per komandų seka.
Naudojant vamzdžiai, mes galime padaryti šiek tiek įdomybių nereikia
kodą rašyti bet ne visiems.
Pavyzdžiui, tarkime, kad mes norime žinoti, kiek failų
šio katalogo viduje.
Naudojant vamzdžio, mes galime sujungti ls komandą su wc
arba wordcount -
komanda.
Lt atras kiekvieną failą iš katalogo į stdout ir
wc mums pasakys, kiek eilučių buvo suteikta per stdin.
Taigi, jei mes sakome, ls | wc-l -
tiekiant-l vėliava wc pasakyti, skaičiuoti linijas -
mes galime pamatyti, kiek tiksliai failai yra
einamojo katalogo.
>> Todėl galime imtis ne dar vienas pavyzdys išvaizdą.
Turiu čia failą pavadinimu students.txt,
pavadinimų sąrašą.
Tačiau šie pavadinimai nėra bet kokia tvarka visa tai ir atrodo
kaip keli pavadinimai kartojami.
Mes norime unikalių pavadinimus abėcėlės sąrašas
tvarka, įrašyti į failą pavadinimu final.txt.
Mes galime, žinoma, parašyti C programa tai padaryti už mus.
Bet jis ketina gauti be reikalo
sudėtingas gana greitai.
Tegul, o ne naudoti vamzdžiai ir kai built-in-tools išspręsti
šią problemą.
>> Pirmas dalykas, mes turime padaryti, yra perskaityti failo students.txt.
Katė komanda daryti tik tai.
Jis bus skaityti nurodyto failo ir rašyti
jo turinys stdout.
Po to, kai mes skaityti tekstinį failą, mes
norite surūšiuoti vardus.
Rūšiuoti komanda gali tvarkyti tai už mus.
Rūšiuoti atras liniją, pateiktą per stdin į stdout
rūšiuotas tvarka.
Tam, kad tiekti students.txt turinį
Rūšiuoti "stdin, mes galime naudoti vamzdį derinti kačių ir rūšiuoti.
Taigi aš galiu vykdyti kačių students.txt | Rūšiuoti
paspauskite Enter.
Ir dabar, mes pamatyti students.txt turinį
abėcėlės tvarka.
>> Todėl galime pridėti dar vieną komandą -
Uniq, ar unikalus -
mūsų vamzdyno.
Kaip jūs galite atspėti, Uniq, kai tiekiamos surikiuota seka
linijų, stdin, atras unikalias linijas.
Taigi dabar mes turime kačių students.txt
| Rūšiuoti | Uniq.
Galiausiai, mes galime išgelbėti dujotiekio išėjimo į
failas per students.txt | Rūšiuoti | unikaliam katės
> Final.txt.
Taigi, jei mes atverti final.txt, mes turime ką mes
ieško:
unikalių pavadinimų abėcėlės tvarka, sąrašas,
įrašyti į tekstinį failą.
Beje, mes taip pat galėjo Rūšiuoti <
students.txt | Uniq> final.txt daryti būtent
tas pats, naudojant kiekvieną operatorių, mes matėme
šį vaizdo įrašą.
>> My name is Tommy, ir tai yra CS50.