>> [Seminar - Školjke Unix, Environments]
[Douglas Kline - Harvard University]
[To je CS50. - CS50.TV]
>> Današnja tema je lupina Unix.
Sem Douglas Kline, strokovnjak ali vsaj razumno pristojni uporabnik, lupine.
Lupina je vmesnik za uporabnika na operacijski sistem računalnika.
Ime je zavajajoče, saj za razliko od lupine žival je,
, ki je trda in zaščitne lupine računalnik omogoča komunikacijo.
Torej bi porozna membrana verjetno bolje metafora.
>> Originalna lupina za Unix je Bournova lupina.
Bourne je napisane B-O-U-R-N-C.
Bourne je bil eden od prvotnih avtorjev Unixa
in tako je lupina poimenovali po njem.
Ime te lupine kot ukaz je samo preprosto sh.
To je ukaz, ki ga je mogoče izvršiti.
Lupina zažene ob prijavi.
Ko se prijavite v računalnik, lupina šele začne teče za vas,
in to je tisto, kar ima svoje ukaze.
To se lahko začne tudi v drugih obdobjih.
Če ste odprlo okno z nobeno drugo označbo, se bo začela lupino za vas.
To je, kako je to, da lahko greš k oknu in začnite tipkati ukaze
in tako naprej, pa čeprav se niste prijavili v to okno.
Poleg tega, če vam oddaljena prijava,
potem pa bo začelo lupino na oddaljenem računalniku.
In je možno, da se izvajajo ukaze brez interaktivno lupino.
To lahko pomeni v vašem trenutnem delovanju,
in to lahko pomeni tudi daljinsko upravljanje.
Lahko pošljete ukaz v drug računalnik,
ki vključuje začetek lupino tam.
Dejstvo je, da mora vsebovati zagonom lupino tam
čeprav to ni vaš končni cilj.
Ko se nekaj zažene, kot je ta, da ni nujno, da začnete novo lupino.
Če ste odprlo novo okno, je možno, da je povedal, da bi do urednika
ali kakšen drug ukaz.
V tem primeru bo urednik začeti iz nič.
Ko konča urednik okno konča.
To je malce nenavadno, vendar je mogoče storiti.
V teh primerih, ne bo lupina.
Torej ni nujno, da bo okno ali nekatere taka uporaba bruhati lupino.
>> Shell razčleni ukaze.
Razčlenjevanje pomeni opredelitev različnih elementov in njihovo razvrščanje.
Okviru ukaza, popoln niz, ki ga vnesete,
ne bo 1 ali več enoposteljnih ukaze, ki se izvedejo.
Drugi elementi so lahko argumenti.
Obstajajo lahko tudi posebne znake, ki vplivajo na izvedbo ukaza.
Prav tako lahko pošljete izhod nekje razen zaslonu
če bi ukaz običajno ga pošljite na zaslonu.
To je mogoče preusmeriti vhoda, to lahko storite tudi druge stvari.
Obstajajo različne druge simbole, znake in tako naprej.
Razčlenjevanju vključuje odkrivanje in razlagi teh stvari.
>> Zdaj, če ne obstajajo več vprašanj, kar je precej verjetno, saj ne obstajajo več ljudi,
bomo šli na moj naslednji strani tukaj.
>> Sem že prej dejal, da je začetna lupina Bourne shell.
Obstajajo drugi.
Ena je C-shell. Ukaz je csh.
Ime C-shell je samo besedna igra.
Ta lupina je bila uvedena z Berkeley Unix v sredini 1970-ih.
Berkeley Unix je Prvinsko dogodek v razvoju Unix.
To je bila velika revolucija in ki vključuje uvedbo te lupine.
Razlog za to besedno igro, C-shell,
je, da ima C-shell nekatere značilnosti v njem, ki spominjajo na jezik C,
ki Bournova lupina nima -
ali pa niso imeli v tistem času.
Tam je tudi TC-shell.
To je nadgradnja C-lupini.
To ima še dodatne funkcije, od katerih so mnogi koristni za interaktivno uporabo,
kot opozarja ukaze v mehanizmu zgodovine,
katere bom opisal nekoliko kasneje -
na enostaven način, po vzoru urednik.
Ima tudi vezi, ki vam omogočajo, da se veže na kratko ključno niz daljši ukaz.
Mi ne bomo dobili v to danes.
To ima nekaj značilnosti, ki so koristne za programiranje.
Vendar, C-lupina ni pogosto uporablja za programiranju.
Programi shell, če niste že veste,
so programi, ki so sestavljeni iz značilnosti lupine.
Lahko bi vodenje teh programov, kot je.
Pišete kup ukazov lupine v datoteko in izvajajo datoteko.
Vam ni treba, da ga pripravijo. To je interpretativna jezik.
Stavek C-shell je zdaj dvoumno, saj lahko nanaša le na izvirno C-lupine, csh,
ali za vse C-lupin, vključno tcsh. To je malce dvoumno.
>> Kasneje lupine Korn, ksh, poimenovana po programer, Korn.
Ta lupina poskušal vključiti v 1 lupino
prednosti C-lupini za interaktivno uporabo
in Bournova lupina za programiranje.
To je bil uporabljen kot interaktivno lupino, ki ga nekateri ljudje - manjšino.
Kasneje, čeprav je bil še en uvod, bash lupini, BASH,
spet besedna igra, Bourne-spet lupini.
To je razširitev lupine Bourne. Korn je prav. Oba sta.
Ima enake cilje Korn o združil C-shell je
in prednosti Bournova lupina je v 1. lupini.
Mnoge izboljšave v Korn so vključene tudi v Bash.
Bash, vendar pa je bolj in je zato prednostna.
Bourne-spet lupini in Korn se imenujejo Bourne tipa lupine
, ker vsebujejo značilnosti Bournova lupina je,
ki so nezdružljive v nekaterih pogledih C-lupin.
Obstajajo druge lupine poleg tistih, nekatere namenjene za omejeno uporabo,
morda omejena na nekaterih ukazov, morda specializirane namene, ne uporabljajo prav pogosto.
>> Ok. Next item tukaj.
Bash shell je postala povezana z različnimi oblikami Linux.
Nisem prepričan, če to velja za vsako obliko.
Obstaja veliko oblik tam in sem jih vse ne uporabljajo,
ampak v tistih, ki so bili uporabljeni je postala povezana z njim.
Kolikor vem, ni ničesar Bash
zaradi česar je več združljiva s Linux
kot katerikoli drugi kombinaciji lupine in operacijskega sistema.
Mislim, da je to verjetno le odraža naklone programerje.
To je postal povezan z Linux je še en razlog, da raje Bash za KSH
ker so stvari, ki bi lahko bili napisani v njem, in je verjetno, da se širijo.
Dam ti druge razloge za to kasneje.
Bournova lupina skripti naj bi potekal v okviru Korn ali Bash.
Če pišete nekaj za Bournova lupina,
ga verjetno lahko izvrši pod ksh ali bash.
Korn skripte bo verjetno potekal v okviru Bash, vendar ne morem jamčiti, da.
Kasneje tukaj, C-shell skripte potekal v okviru TC lupini.
C-shell bil nikoli dejansko v veliki meri uporabljajo za skripte
saj Bourne shell in kasneje so bolje za ta namen lupine Bourne tipa.
Tako, da res ni tako pomembno.
Obstaja precej veliko Bournova lupina skripte, ki so bile napisane že davno,
pred Korn in Bourne-spet shell so bili uvedeni.
Tisti, ki so še vedno v uporabi, ki je del operacijskih sistemov,
in tako jih boste našli, če pogledaš v operacijski sistem
ali nekaj starih programskih paketov.
>> Bash je do neke mere postane neke vrste lingua franca za operacijske sisteme.
To je že razširjen operacijski sistem Windows in VMS.
VMS, v primeru, da ne veste, je lastniški operacijski sistem
Digital Equipment Corporation, ki je še vedno v uporabi, predvsem v zakulisju.
In če se dogaja, da teče na različnih operacijskih sistemih,
verjetno se ljudje nagibajo k premik za to.
Toda ta razvoj je razmeroma nova.
To je šele začetek, tako da ne morem napovedati, če se bo to izkazalo za resnično, da nekako lingua franca.
Tudi zato, ker datotek in knjižnice poti pa se razlikujejo
med temi različnimi operacijskimi sistemi,
morda ne boste mogli napisati Bash skripta na eni operacijski sistem
in potem jih predvajajo na drugo.
Vi bi morali imeti možnost, da se premaknete med različnimi Unix, Linux
Operacijskih sistemov Mac OS, vendar ni nujno, da Windows ali VMS.
Morda boste morali spremeniti opise datoteke ime poti,
in nekatere knjižnice lahko drugačna,
ki lahko vplivajo na način, da so nekateri ukazi delo
ali kako obdelati argumente in podobno.
Poleg tega je še ena previdnost tukaj je, da ni nobenega zagotovila,
da vse različne školjke, ki sem jih omenili - Bourne shell, C-shell,
TC-shell, Korn, Bourne-spet lupini - bo na voljo v vsakem Unixu
ali Linux ali računalnik Mac OS.
Preprosto ne bi bilo tam.
To je eden od opozorila tukaj.
To je žalostno, omejitev tukaj, ker bi radi stvari povsod delo,
ampak žal, ne more sklicevati na to.
>> Ok. Naslednja tukaj.
Recimo, da želite napisati shell skript,
Program, ki sestoji iz ukazov lupine.
Napišete svoje ukaze, da jih v spis, in izvajajo datoteko.
Kaj pa, če želite vključiti argumente?
V primeru operacij lupine, so argumenti imenujemo parametri ali položajne parametre
in jih bomo se imenuje po znaku za dolar in številčne oznake, $ 1, $ 2.
Torej, če je scenarij to ime, bi moj prvi argument je argument 1
in moj drugi morda argument 2,
in v moji pisavi, če želim, da se sklicuje na te stvari -
dajmo izbrisati to, ker sem v resnici ne dogaja, da bi sistem deloval -
znotraj moj scenarij bi jaz imel $ 1 do nanašajo na arg1,
$ 2, ki bo prišel ven na tak način, arg2.
Torej ti simboli so na voljo za sklicevanje na trditve,
in tiste, veljajo za vse lupin.
Poleg tega obstajajo še drugi znaki.
$ * Se nanaša na celoten seznam argumentov, vse od njih.
$ # Nanaša na število argumentov.
Tudi to velja za vse lupin.
Ti simboli, * in # se lahko uporablja s temi pomene v drugih mestih tudi.
Mi se ne bomo dobili v to.
>> Shell določilo črta. Kaj je to?
Recimo, da ste napisal scenarij in to je za neko lupino in ga želite zagnati.
Kako veš, kaj lupini vaš operacijski sistem bo uporabljal zagnati skript?
Na neki točki bi si domnevati, da bi bilo teči v Bournova lupina
Če ni rekel drugače,
ampak ljudje se ne bi pisal skripte v Bournova lupina, da je veliko več
in ti niti ne more zanašati na več.
Torej, tukaj imamo lupine določilo linijo tukaj.
, Ki določa Bash.
Opozarjamo pa, da jo podaja v ime poti, / bin / bash.
Če ima računalnik bash lupino, vendar ne v imenik bin / bin, to ne bo delovalo.
To je še en kvalifikant, še ena previdnost tukaj.
Lojtra je komentar linija znak.
To velja za vse školjke.
Zlasti v tem primeru, #! na začetku skripta, je poseben primer.
, Ki določa lupino, v kateri teči scenarij.
Kot sem rekel, to ne bi bilo isto mesto / bin.
Poleg tega obstaja še ena stvar tukaj.
Če ste jo pravkar uporabljate lojtra brez klicajem in ime poti,
da je treba navesti C-lupino.
Vendar jaz ne priporočam početje to zato, ker nisem mogel zagotoviti
da bo ta vedno deluje.
Če želite carski lupino, bi bilo bolje, da tako rečem.
Potem je tu še nekaj precej zmedeno tukaj.
Če uporabljate lupino določilo črto kot / bin / bash
in da lupina ni na voljo tam,
ni taka stvar kot je / bin / bash na določenem računalniku ne,
bodisi zato, ker nima Bash ali zato, ker je na drugi lokaciji,
boste dobili napako, vam pove, da je skripta, ki jo je pretekel ne obstaja.
In seveda tvoj scenarij obstaja, tako da sporočilo o napaki, je zmedeno.
Razlog, da operacijski sistem, vam daje to napako
ali, natančneje, da je vaš interaktivno lupino, v kateri ste tekmovanje v teku to daje to napako,
, da se poročila ukaz, ki ga uporablja, ki je ime scenarija.
Ta ukaz učinkovito imenuje lupino z imenom skripta.
To je, kjer boste dobili, da je zmedeno sporočilo o napaki.
Drug način, da pokličete shell skript
je z določitvijo lupine v ukazni vrstici, kot je tukaj.
To je ukaz. Ta pravi, da teče bash in nato zaženite svoj skript v bash.
Da bo prednost pred določilo linije,
in to je značilnost vam omogoča, da predvidi različno pathnames.
Če si dal ukaz, bo operacijski sistem iskati ta ukaz
v različnih krajih.
Če je na voljo, bi jo našli.
Računalnik bo našel Bash kjerkoli se nahaja, in ga vodijo,
tako da vam ni treba potem biti zaskrbljeni, če ga najde.
Obstajajo lahko tudi druge skrbi tukaj,
kot če obstaja več kot 1 različica Bash, kar je mogoče, čeprav malo verjetno.
Tako da je še en način za spopadanje s temi stvarmi.
Določilo linije lahko pokličete nobene lupino.
Prav tako lahko pokličete tudi druge stvari, kot lupine.
Primeri, ki jih imam tukaj sed, ki je urednik tok;
awk, ki je jezik, obdelava za vzorec;
in perl, zelo visoko razvita skriptni jezik.
Če si dal določilo črto, ki označuje eno od teh programov na začetku,
bo šel neposredno v tem programu, ne pa začetek lupino.
Ti programi so meje svojih zmožnosti.
Perl je zelo sposoben. Sed je urednik. To lahko počnejo stvari, onkraj preprosto urejanje.
Ampak to je lahko težko programirati, da.
Poleg tega, da posredujete argumente in stvari, skript, nemogoča ali zavajajoče.
Torej v teh primerih z awk ali sed, to je, vsaj po mojih izkušnjah,
bolje napisati shell skripta in klicev awk ali sed iz skripte
namesto da bi awk ali sed kot scenarij določilo linijo.
Perl je zelo raznolika jezik, kot sem rekel.
Ne morete zagnati interaktivne ukaze v perl,
kar pomeni, da ni mogoče preizkusiti dele skripte, da ste v razvoju
tako, da jih teče interaktivno.
Vendar pa je zelo sposoben jezik
in se je razvila v zelo široko uporablja orodje.
To je samo malo je oklepaji pripombo o določilo linij.
>> Na vse ali večino oblik Linux - še enkrat, ne morem biti prepričan, da je vse -
in Mac OS, če vtipkate csh dobiš tcsh,
in če ste tip sh dobiš zabavo.
Bili so tam poskušajo, da bi vam bolj napredne različice teh školjk,
vendar je to lahko zavajajoče.
Če napišete skript uporabljate tcsh ali bash funkcije, medtem ko kliče csh ali sh
in nato poskusite, da jih predvajajo na računalniku, ki nima tcsh in bash,
boste morda dobili nekaj napak, če obstajajo ukazi tam
ki te školjke ne priznavajo.
Poleg tega se lahko, da ste vpoklicani lupino na vašem računalniku
kliče kot sh ali csh in nato dobili več naprednih lupine.
Morda niti ne pomislite na to, da ste z uporabo bolj napredno lupino.
Torej je to potencialna past.
Kako je bilo ugotovljeno, da če vtipkate sh dobiš Bash,
Če ste tip csh dobiš tsch?
Obstajajo stvari v teh računalnikov imenovanih links
ki se lahko poveže z datoteko imen se nanašajo na isto stvar.
To je lahko bodisi 2 imena za iste datoteke ali datoteke, katere namen je, da se nanašajo na druge datoteke.
Pravijo jim trde in simbolne povezave. Mi se danes ne bo šlo v to anymore.
Obstajajo lahko tudi ločene datoteke - 1 slika sh, 1 slika Bash -
vendar sta oba poganjal bash.
Potem je tu še en kvalifikant tukaj.
Če kličeš enega od teh školjk eno ime,
morda mislite, da bi dobili enako funkcionalnost, kot jo kliče z drugim imenom.
No, to je pravzaprav ni nujno res.
Ti ukazi lahko preuči ime, s katerim so bili imenovani
in jih lahko, na podlagi tega imena, obnašajo drugače.
Obstajajo lahko vprašanja poskuša v skladu s standardom.
Nekateri ste morda slišali standarda POSIX ali drugo,
morda druge funkcije.
To lahko včasih izbere argumente ukazni vrstici
ali z določitvijo lupine spremenljivk.
Kliče kot sh ali bash lahko dejansko privede do drugačne izvedbe
tudi če je ista datoteka, ki ste izvršitve.
Še ena stvar, ki menijo, da je, tudi če drug računalnik tcsh in bash,
če niso povezani, saj so na lokalnem računalniku
če imate Linux in Mac OS lokalni računalnik,
potem spet boste dobili lupino, ki jo imenujemo sh ali csh, ne tisti, ki bi jih raje.
Sedanji Bournova lupina ima izboljšav manjši od tistih v Bash
vendar peto tiste iz prvotne Bourneovi lupini.
Kot rezultat, da tudi tok Bournova lupina, SH,
tudi takrat, ko to ni Bash, podoben jezik C več kot C-lupina.
To ni bilo res, ko je bila prvič ustvarjena C-shell, vendar pa se je razvila v to smer.
Morda boste opazili, da sem vse te shell imena, razen za Bournova lupina
nekaj navesti, za katere lupina so - csh bash -
ampak Bournova lupina je le sh.
Zakaj? Da je bila prvotna lupina.
Bilo je lupina takrat, ne lupina,
in ker je lupina, ni bilo razloga, da se razlikuje od druge lupine.
Torej, to je razlog, zakaj je to ime in še vedno počne.
>> To top tukaj je črta iz baze podatkov, gesel za račun imam tam
na drugem računalniku.
Bom poskusil, da bi dobili to ime, tako da lahko vidite, da je del, na koncu lupino.
Podatkovna baza geslo ima značilnosti prijavo za vse uporabnike.
Na začetku je ime, ki si lahko ogledate zadnje črke 2 rudnika zdaj.
Polja Tu so ločeni z debelo črevo.
Zadnje polje, kot lahko vidite, je bin / tcsh, lupina.
To je lupina določilo.
Tukaj je nekaj zanimivega tukaj.
Ko je bil Unix najprej razvil, je bil samo 1 lupina,
tako da ni bilo izbire tam.
Torej, zakaj jim omogočajo, polje v podatkovni bazi gesel za določitev lupino?
Ne vem, ampak to je srečo, da so to storili.
To je precej težko, da bi spremembe v formatu geslo baze podatkov
ker mnogi programi se nanašajo na njegovo obliko
in bi bilo treba prepisovati.
To je posrečena ali naključen razvoj, ki so vključene tem področju.
Da je neke vrste geslo vrstici datoteke se uporabljajo na vseh računalnikih, Unix in Linux, kolikor vem.
Mac ima svoj sistem.
Je dejansko datoteko gesel s črtami v tej obliki,
vendar to ni v katerih so opredeljene značilnosti uporabnikov.
Druga pripomba oklepaji tam.
>> Če kličeš lupino, ga lahko imenujemo kot podlupine vaših obstoječih lupin.
Torej, če grem tukaj, kaj je znebiti teh stvari.
Tukaj sem v C-lupini.
Da je spremenljivka, ki natančno opredeljuje moje lupine,
dejansko ni vedno zanesljiv način za ugotavljanje, kaj lupine ste tekmovanje v teku,
toda v tem primeru je.
Kaj pa, če sem tip -
Zdaj sem v Bash.
Nekatere stvari se bodo enaki. Ali mi pravi moje ukaze.
Če me ustavi nazaj na mojo C-lupini, LS, isto. Kajne?
fg, novo znanje, nazaj na moj Bash lupine.
pwd, trenutni imenik, nazaj v C-lupini.
pwd, drugačna imenik - pravzaprav ne razlikuje imenik v tem primeru.
To je isti imenik.
Recimo, da želim, da pokličete ukaz tukaj: Kje ls.
Kaj naj bi to naredil?
To mi pove, kje ukaz ls,
tista, ki mi daje imenika, se nahaja v ls.
Vrnimo se k Bash lupine. Poskusimo isto stvar.
Hmm, zanimivo tam, kjer je: ukaz ni bil najden.
Zakaj je tako?
Kjer je ukaz je vgrajena v C-lupini.
To ni ukaz, da je treba brati v spominu od nekje drugje in usmrtili.
C-shell ga zažene s prenosom izvršitve, da del svoje lastne kode
in to ne v lupini Bash.
Torej Bash, ki nimajo takega vgrajen ukaz, išče ga, ga ne najdejo,
in smo dobili napako.
Tako da imamo Bash lupino teče pod C-lupine in pravimo, da je sub-shell.
In samo v primeru, da ste radovedni, bash lupini ima svoj način za lociranje ukazov.
delčku zgoščenega se nanaša na dejstvo, da se lahko izvede hitreje,
najdena hitreje.
To je ena od izboljšav, vgrajene v nekaterih od teh školjk.
>> Bourne tipa lupine so prednostni za programiranje.
Imajo nadzorne strukture, kot so zanke, pogojni stavki,
vrsta ukazov, ki jih lahko uporabite pri programskih jezikih, kot so C
ali katerem koli jeziku. Morda ste programiranju v Javi ali karkoli.
Lupine imajo tisti, preveč.
Lupine Bourne tipa, zlasti Bash, imajo več
in so izdelani z večjo prožnostjo.
Bash shell ima nize. Prvotni Bournova lupina ne.
Tako da je lahko precej koristno za programiranje.
C-shell dejansko ima nize, vendar nima veliko teh drugih funkcij.
Lupine Bourne tipa bodo izvajale hitreje
če nimajo značilnosti, namenjene za interaktivno uporabo.
Boste naložili stvari navzdol za en namen, to jim naloži navzdol za druge namene.
Tam je, da kompromis ni.
Te funkcije, ki so namenjeni za interaktivno uporabo
Res so malo ali nič uporabe skripte.
Možno je, da uporabite interaktivni sub-lupino, tako kot tisti, ki sem začel tam
preizkusiti ukazov, ki jih nameravate uporabiti v scenariju.
To je tisto, kar ni mogoče storiti z perl. To lahko storite z lupinami.
Tudi objekti, kot za zanke in tako naprej, se lahko vodijo interaktivno.
So včasih koristno, da delujejo interaktivno,
vendar je bolj verjetno ste jih uporabljajo za razvoj scenarija.
>> Vzdevki.
To se bo o C-lupini.
Zgodovina mehanizem, kjer boste dobili nazaj v prejšnjih ukazov
ali njihovih delov, ki ste jih že teče.
Spet o C-lupini, Bournova lupina in Korn imajo te stvari,
ampak ne bom priti v njih.
Torej, tukaj je nekaj koristnih vzdevki, ki jih imam.
Namesto da vnesete ls - to je skupno ukaz -
samo tip l in prihranite 1 značaja.
Je z različnimi možnostmi, vse tiste delo.
Upoštevajte, da imajo te opredelitve narekovaje okoli njih.
V teh primerih, citati niso potrebni.
Če lahko opredeliti tiste vzdevke brez narekovajev, bi to še vedno dela.
Priporočljive so.
Obstajajo primeri, v katerih ne morete uporabiti citat
ker hočeš nekaj zgodilo ki bi quote preprečiti.
Včasih lahko citiram del opredelitve, vendar ne vse.
Prav tako je na splošno priporočljivo, da uporabite enojne narekovaje namesto dvojne narekovaje.
Dvojne kotacije imajo učinke na spremenljivih opredelitev,
še posebej zaradi česar jih je mogoče ovrednotiti namesto da bi ga ustavil.
Zakaj bi si želeli, da se ustavi oceno?
In kako kotacije naredil za nas?
>> Tukaj je ukaz, ki bi vas lahko zanimale.
"Ali je g *"
g *, kot verjetno veste, je nadomestni izraz
za vseh imen datotek, ki se začnejo z g.
Če sem samo napisati na ukaz ls g *, bom dobil seznam vseh teh imen v mojem trenutnem imeniku.
Če bi opredelil ta vzdevek, saj je tukaj z narekovaji,
pa bo trajal ta ukaz v vašem trenutnem imeniku, kjer ste ga teče.
Ampak, če naletite na opredelitev alias brez narekovajev,
Ocenila bo nadomestni G *, ko teče ta definira ukaz.
Tako opredelitev alias bo ls sledi seznam datotek v direktoriju
v katerem ukaz alias se izvrši,
glede na to, kje ste dejansko nameravajo zagnati ukaz.
To ni veliko uporabo in enojne narekovaje preprečiti oceno zvezdico.
Torej ste pravkar dobili ločljivosti počutje ls g *.
Potem ko zaženete alias, LGS, potem postavlja to.
Zdaj pa so brez narekovajev, in to bo ocenila zvezdico, ko zaženete ukaz alias.
Tako, da je ena stvar.
Dvojne narekovaje, da bi imela enak učinek tukaj,
vendar pa obstajajo še drugi primeri, v katerih dvojni narekovaji ne bi delovalo tako dobro.
>> Tu je še eden.
Morda veste ukaz grep.
Ukaz grep se lahko uporablja za skeniranje datotek za progah, ki so določene nize.
Torej, gremo tja in bom izhod iz mojega Bourne lupine.
Ok. Tukaj je slika.
Recimo, da je grep abc strune. Tukaj je.
Če naredim grep zddd, dobim ničesar. Ok.
Tako da najde niz, poroča, da ne bi našli, da ne poročajo o njih.
Je izhodi nobene vrstice, ki je ta niz na njej.
Obstajajo vse vrste možnosti, ki tukaj lahko najdete v dokumentaciji.
Tukaj je eden od načinov, da to storite.
Kaj pravite na to, alias grabc "grep abc"?
To se dogaja zaradi vključitve 1 argumenta, ko je alias opredeljena.
Torej, če naredim to tukaj, zdaj, če jaz grabc,
Zdaj alias vključuje več kot preprostega ukaza. Prav tako ima argument.
Tako daleč, da deluje.
Imam še en ukaz, tukaj, ta, tako tistih, ki so različni nizi tam
in kažejo, da to ne bi našli ničesar ni, ker se ne ujema.
>> Kaj, če želim, da pri opredeljevanju alias vključujejo datoteko, da sem bom za iskanje
in želim, da bi kot argument alias godalni da iščem?
Jaz bi rad povedal, abc kot argument na moje drugo ime,
ampak alias že določena datoteko.
In to je, če je ta izraz pride noter
Opazili tukaj imamo grep tako kot prej.
Imamo datoteko tukaj, strune.
\! ^, Nekakšen čuden izraz, mislim, če še niste videli tega.
Klicaj je del zgodovine mehanizma C-shell.
Lahko se spomnimo prejšnje ukaze, lahko pa opozarjajo, argumente za te ukaze in tako naprej.
Mehanizem Zgodovina se uporablja kot del aliasing.
Če določite črto, potem ko je klicaj, bo to nanaša na to črto na seznamu zgodovine,
ki ne bomo dobili v zdaj, saj je to povsem druga tema.
Možno je določiti del črte.
Torej! 03:02 bo drugi argument v ukazu številko 3.
Strešica tukaj v tem izrazom predstavlja prvi argument.
Če ga ne pokažeta, katere ukaze ste se sklicuje na,
se nanaša na neposredno prejšnjega ukaza,
in strešica je simbol za prvi argument.
Ker je strešica in ne številko, vam ni treba uporabljati debelo črevo,
tako! ^ pomeni prvo trditev na prejšnji ukaz.
Malo pomešal tukaj.
V tem primeru, ko to uporabiti kot opredelitev alias,
Referenčna zgodovina sklicuje na ukaze, v katerih se uporablja alias.
Torej, to se vrača 1 ukaz za operacijo zgodovine,
ampak kot dejavnost, alias se nanaša na ukaz, v katerem bi jo vpišete,
pravijo, grstrings_file.
Imamo narekovajev tukaj v njej. Kaj je Nagibnica za?
V tem primeru, tako kot drugod, ne želimo izvesti mehanizem zgodovino
medtem ko opredelitev vzdevek.
Če nismo imeli poševnico tam, bi lupina potegnite v prvem argumentu
ukaza tik preden je potekal ta ukaz, vzdevek, ki ne želimo.
Želimo, to se bo gradilo v ukazu vzdevka za klic v argument kasneje.
Enojnih narekovajih, ne bodo izognili klicaj, sklic zgodovino.
Mogoče veste, izraz pobeg pomeni, da spremenijo pomen nečesa.
V tem primeru, to pomeni, da se prepreči nekaj iz imajo poseben pomen.
Klicaj je poseben pomen je zgodovina.
Escape in da nima v tem smislu.
Citati ne delaj; Nagibnica ne.
Torej smo dejansko uporabo 2 ravni uhaja tukaj.
Grem, da se premaknete tega ukaza v drugo okno, ne da bi ga vnesete
z uporabo teh operacij urejanja, ki boste morda našli koristne.
Nekaj ​​drugega tukaj vam bom pokazal.
Če si tip alias brez argumentov, to vam pove vse svoje argumente.
To je kup vzdevkov sem že tu
poleg tistih, ki sem bil z danes tukaj.
Ampak, če sem samo tip z imenom vzdevkom, da mi pove, kaj to pomeni.
Opazili, da so citati več in poševnica nazaj ni več.
Ta niz tukaj je rezultat te opredelitve alias,
in zdaj je samo! ^ v njem.
To bo pogledati v datoteki strune za karkoli.
Torej, če naredim grstrings_file strune, nisem ji dati ničesar iskati tam,
vendar je videti v nizih.
To ni našel besednih nizov v datoteki nizih, vendar pa ne najdejo abc.
In to ne da najdejo.
Tako da tukaj dajemo argument, ki hits v opredelitev alias,
, ki je vstavljen v njem.
To je, če je ta izraz prihaja.
Lahko uporabite več kot 1.
Strešica je simbol za prvi argument.
Če boste želeli uporabiti drugo trditev, bi potem rekli: 2.
Ni posebnega simbol za drugega argumenta.
In ker ste z uporabo številčne oznake, ki bi jih morali uporabiti debelo črevo.
Obstaja pa še ena izbira tukaj.
Dolar znak stoji za zadnji argument.
In ker je to simbol, lahko izpustite debelo črevo.
Torej bi bilo zadnji argument v seznamu.
In tam je tudi, da je eden.
Zvezdica pomeni vse, tako da je to popoln seznam argumentov,
in spet, lahko izpustite debelo črevo, ker to ni številka.
Upam, da ste vsi opazujemo vse to.
>> Mehanizem zgodovina lahko vrnete na prejšnjih vrstic v seznamu zgodovine.
Lahko bi to naredili v definiciji vzdevka.
Še nikoli nisem videl to narejeno.
To bi imelo za posledico, da izvlečete prejšnje ukaze iz seznama zgodovine
ko izvedete vzdevka, ki bi lahko različni ukazi
odvisno od tega, kdaj in kje ste jo izvrši.
Razumljivo boste morda želeli izvleči takšno sklicevanje
samo da vem, kaj je bilo prej ukaz.
Še nikoli nisem videl to zgodilo.
Mislim, da nekdo morda želeli, vendar je to zelo malo verjetno.
Obstaja pa še ena stvar tukaj.
Če ste uporabili, da sklicevanje zgodovina tipa,
nato pa se uporabljajo le argumente za katere obstaja takšno sklicevanje.
Če imate definicijo vzdevka, ki ne uporablja sklicevanje na zgodovino tipa,
če to postane začetek ukaza
in boste imeli dodatnih argumentov, potem kaj vnašate po tem
bo dodan ukaz.
V tem primeru je primer sem dal tam, smo uporabili prvi argument;
nismo uporabljali nobene druge.
Če bi bili drugi argumenti glede na ukazni vrstici, jih ne bo uporabljal.
Torej, če boste uporabili sklic zgodovine sploh, potem morate uporabiti, da bi dobili nobenega argumenta.
>> Še ena stvar, ki si želim omeniti, delno Mimogrede,
in sicer, da ta zgodovina mehanizem s klicajem
sega v prvotni C-lupine.
Tcsh predstavil zgodovino poslovanja
ki uporabljajo vrste ukazov in godala iz urednikov,
bodisi Emacs ali vi.
Moje osebno mnenje je Emacs je veliko lažje za uporabo za ta namen
tudi če ste vi uporabljate za vaše redne urejanje.
Obstajajo različne Emacs, ukazi, ki so zdaj prilagojeni za zgodovino.
Control P dobi prejšnjo vrstico v seznamu zgodovine.
Drug Control P boste dobili eno pred tem.
Puščica gor počne isto stvar.
Control N dobi naslednji ukaz, če ste že pomika nazaj nekaj načinov.
Puščica dol pa to preveč.
Lahko premaknete z leve proti desni s puščicami in raznih drugih stvari.
To se lahko uporabi mehanizma zgodovine
veliko lažje kot z uporabo točke sintakso klicajem,
vendar ga ne bo uporabila, da je v definiciji vzdevka.
Mi bomo šli čez, da kdaj drugič.
>> Spremenljivke.
Veš, kaj spremenljivke so v programskih jezikih.
Lupine jih imajo tudi.
C-shell uporablja ukaz nastavljena dodelite spremenljivke,
tako, da določa spremenljivo A na vrednost B -
kot sem rekel, nekoristen opredelitev, ampak ponazarja, kako se to uporablja.
Set ukaz bo ustvaril spremenljivko, če ne že obstajajo.
Pozicijska parametri za shell skripte se lahko šteje za spremenljivke,
vendar uporaba njih ter pravila za njimi pa so nekoliko drugačne.
Ne morete dodeliti vrednost $ 1 v okviru scenarija.
Ti bi morali določiti novo spremenljivko za ta namen, če ste nekateri želeli.
Tipom, brez argumentov in dobili boste seznam vseh trenutno definiranih spremenljivk.
In kaj je dobil na moj drugi lupini tukaj in videli, kaj bomo dobili, če bomo to storili.
Precej dolg seznam obstaja, kajne?
Pomaknite se gor malo. Pogled na vse to.
Nekatere od teh stvari se samodejno opredeljena z lupino.
Lupina ustvari spremenljivko in ji daje vrednost.
Nekateri izmed njih so opredeljene z lupino, nato pa na novo s strani uporabnika
po njegovih željah.
In nekateri od njih so ustvarjene s strani uporabnika, odvisno od tega, kaj počne tisti dan.
To je samo nastaviti brez argumentov.
Tam je čudno lastnost tukaj te stvari.
Tam morajo biti bodisi ni presledkov med enačajem in ime spremenljivke
in vrednost ali prostori na obeh straneh enačajem
kot v tej.
To ne bo delovalo, in to dejansko je veljaven ukaz
vendar to ne bo storila, kaj nameravate.
Ta ukaz bo deloval, ker če si rekel nastaviti in ime spremenljivke
brez enačaj ali nastaviti in ime spremenljivke z enačajem in ne vrednost,
bo nastavitev spremenljivke na ničelno vrednost.
Torej nastaviti A = je veljaven ukaz.
Set ukaz lahko določite več kot 1 spremenljivko na isti liniji.
Torej ta ukaz tukaj ima učinek opredeljuje tako A in B k null vrednosti.
Verjetno ne, kaj hočeš.
Ta tukaj, je bilo že omenjeno, bo povzročila napake
ker = B ni veljaven izraz.
Ime spremenljivke ne more začeti z enačajem.
In tam so tukaj te dodatne stvari.
V colons so bili uporabljeni za izbiro argumente iz zgodovine linij,
in se jih lahko uporabi - in nisem šel v prej - spremeniti te stvari.
Lahko se uporablja tudi za spreminjanje lupine spremenljivke.
Ta tukaj, $, ima svojo vrednost.
: R bo off podaljšanje.
Podaljšanje bo nič po piko,
dot in kaj po njej na koncu datoteke,
šele na koncu seznama po zadnjem poševnica.
Torej ga imam tukaj.
je da. To bo zmanjšalo. O.
Če ni podaljšek, le poti pa po zadnjem poševnica, bo imel nobenega učinka.
: h, da bo spremenljivka izraz, vzlet zadnji element seznama imenika,
še enkrat, šele po zadnji slash.
Torej / / b / c postane / / b,
vendar je to ena spremenilo, ker element po seznamu, je nična.
Tukaj je nekaj, kar prav tako želim poudariti.
Te kvalifikanti ne iščejo za obstoj teh datotek.
Ti samo poglej za godala.
Ti so namenjeni za manipulacijo imena datotek, pathnames,
vendar se jih lahko uporablja na vsakem nizu, tudi če to ni ime datoteke.
In ne izgledajo za obstoj,
tako da če obstaja taka datoteka ne, / a / b / c, da bo to še vedno dela.
Ali je to za nobeno rabo, je drugo vprašanje, vendar bo še vedno delovala.
Spremenljivke so v The Bourne lupin drugačna. Bova kasneje.
Znak za dolar lahko pobegnil, tako kot klicajem in zvezdico.
Znak za dolar lahko pobegnil s poševnico nazaj ali enojnimi narekovaji.
Dvojne kotacije ima čuden učinek v vseh lupin
silijo oceno dolar prijavite spremenljivo izražanje.
Torej, če je to, ki je pobegnil v eno smer, v narekovajih lahko imelo za posledico
povzročiti, da jih je treba oceniti anyway.
To je malo zmedeno.
Če obstaja več ravni uhaja, kot enojnimi narekovaji znotraj narekovajev
ali dvojne narekovaje znotraj enojnih narekovajev, morate test, da vidimo, kaj se bo zgodilo
spremenljivki, če uporabljate eno.
Ti 2 situacije - dvojni znotraj enotnega, enotni notranji dvojni -
vam ni nujno, da je enako učinkovit.
Okoljske spremenljivke, vezane spremenljivke C-shell.
Spremenljivke okolja so tudi spremenljivke v C-lupini,
in so tudi spremenljivke v drugih školjk preveč.
V C-lupino, so ločeni skupini.
Stvari, ki sem rekel, preden so o navideznih spremenljivk.
Spremenljivke okolja, so ločena skupina spremenljivk
z izjemo nekaterih spremenljivk, ki jih imenujemo vezanih spremenljivk,
ki so zelo pomembne in da bomo dobili na tiste, ki kasneje.
Okoljske spremenljivke se samodejno prenesejo na
na lupinah ali ukazov, ki jih vodijo iz vaše lupine.
Druge stvari niso. Spremenljivke, shell, da vzdevki niso. Okoljske spremenljivke.
Zato jim pravimo spremenljivke okolja,
Ideja je, da okolje razteza mimo samo vaš trenutni lupine.
Lahko se uporabljajo za določanje stvari za ukaze.
Tukaj je primer. PRINTER, LPDEST.
Oba od teh spremenljivk lahko določite tiskalnik, ki bo ukaz uporabite za tiskanje stvari.
Če imate več tiskalnikov naokoli, boste morda želeli, da dajo eno vam je všeč.
Razlog imamo 2 spremenljivk je, da so bili napisani različnih sklopov ukazov
z uporabo teh različnih spremenljivk.
Boste morda jim različne vrednosti.
Najverjetneje ste jim bom dal oba enako vrednost.
Te stvari delujejo, ker so ukazi za tiskanje
so bili programirani, da preuči vrednosti teh spremenljivk.
Če program ni bila napisana na ta način, če bi bila napisana za nekaj drugega,
spremenljivka bi bilo nepomembno.
Tako je operacijski sistem ne išče za te spremenljivke
vsakič, ko se nanašajo na tiskalniku.
Ukaz, ki ne tiskanje išče za te spremenljivke, če je programirana, da je tako.
Te spremenljivke so pogosto opredeljena v vaših inicializacijo datoteke
vendar ne nujno.
Lahko jih določite v ukazni vrstici.
Lahko se je definirano v ukaz.
Ukaz, ki zažene kaj bi lahko svoj izbor spremenljivk -
spremenljivke, ki so edinstveni za posameznega programskega paketa, na primer.
Bodo opredeljene, ko zaženete ta paket.
Kako se ti podatki prenesejo na podlupine?
Ko je sub-shell napisana, da ne pišejo v tem območju.
Območje podlupine, ki je namenjen spremenljivke okolja
ni napisal podlupine, to je napisano s kopiranjem.
Ko zaženete navaden ukaz, kot so ti ukazi za tiskanje ali karkoli,
so začeli z ustvarjanjem novega lupino.
Lupina ustvarja lupino in nato prepiše del tega
z ukazom, da ste tekmovanje v teku, kar je malo zmedeno,
ampak to je, kako so ti ukazi priti spremenljivke okolja
ki jih nato oglejte kasneje.
Ukaz tukaj za določanje variabilnega SETENV.
To je, kako ga definirati. To je 3 elemente: setenv, spremenljive, vrednost.
Če si ne SETENV brez argumentov, kaj imaš od tega?
Seznam vseh teh spremenljivk.
Še enkrat, to je lepo dolg seznam in v tem primeru, tako kot v drugih,
Te spremenljivke so opredeljene predvsem z mojo prijavo operacije z lupino sam
namesto da jih kar sem storil.
Še en ukaz tukaj, printenv.
, Ki prav tako natisne okolje.
Opazili to zadnja stvar tukaj, urednik = vi.
, Ki pravi, da če sem z nekaj, kar kliče urednika
in jaz ne podate urednik in to mi omogoča izbiro, lahko pa mi vi.
Kaj pa, če naredim printenv urejevalniku? To mi pove, kaj je to.
Tik pred, da je bil spremenljiv, MANJ.
To so vaše možnosti privzete ko sem prost manj ukaz,
ki prikazuje datoteke.
Torej, če sem to storil, lahko printenv traja 1 argument, ali 0 argumente,
ne več kot 1.
Obstajajo tudi drugi ukazi, vendar ne bomo dobili v vsem tem danes.
Ne pozabite, da so modifikatorji za spremenljivke, kot so lupine: h
, ki bo znižala zadnji element je ime poti,
ali: r, kar bo zmanjšalo podaljšanje.
Tisti, ki zdaj veljajo za spremenljivke okolja preveč. Niso vajeni.
Včasih je treba, da jih ni mogoče spremeniti. Zdaj so lahko.
To je eden od napredka pri razvoju sistema lupin v preteklih letih.
Sem rekel, da lupine kot del okolja
in spremenljivke shell v C-lupino, so z nekaj izjemami, ločenih sklopov.
Lahko ustanovi spremenljivko okolja in lupine spremenljivko z enakim imenom.
Ti bodo različne spremenljivke, imajo lahko različne vrednosti.
Spreminjanje vrednosti enega ne spremeni vrednost drugih.
Te spremenljivke so vsi ocenili z znak za dolar - $ $ karkoli.
Pa kaj, če imate to? Ali veste, katero ste dobili?
V mojih testih sem spremenljivko lupine,
vendar to ni dokumentirana in vam ne more sklicevati na to.
Zato vas prosim, ustvarja lupine in spremenljivk okolja
z enakimi imeni dobra ideja? No redu.
Katere so tiste velike izjeme, v katerih okolja in shell spremenljivke
so povezani med seboj?
Tam so ti 4.
Črka TERM okoljska spremenljivka,
lupine spremenljivo izraz z malimi črkami, tip emulacijo terminala.
Jaz sem samo šel sem in bom naredil odmev, uporaben ukaz tukaj
$ $ TERM izraz. In tam.
xterm je vrsta terminal za okna, prikazanih na X Window System.
xterm-barva je sprememba, ki omogoča, da različne barve.
Zakaj opredeliti to? Kaj je to dobro za?
Ukazi, ki preurediti zaslon kot urednik
poslati posebne sekvence, imenovane sekvence za izhod v sili,
priklop ali okna, da ga preurediti in tako naprej.
Te sekvence so različni za različne vrste terminalov.
To je tisti, ki za uporabo pove.
Včasih so vprašanja tam.
Morda boste želeli spremeniti.
Če se stvari ne delajo, včasih se tip terminala nastavite napačno,
boste morda lahko, da se določi nova opredelitev pojma spremenljivko.
V teh primerih se spreminja eno spremenljivko, spremenljivko okolja ali spremenljivko lupine,
morali spremeniti drugega.
Odkril sem skozi izkušnje, ki spreminja TERM z velikimi tiskanimi črkami
vedno ne spremenijo lupine spremenljivo mandat z malimi črkami.
To je napaka.
Ne vem, če je to vedno res. Večino časa ni res, vendar je lahko.
Torej, če ste naredili spremembo, samo preveriti, ven.
Ne zgodi se pogosto, da boste morali spremeniti to vrednost, ampak enkrat v nekaj časa delate.
Spremenljivka okolja UPORABNIK.
Again, spremenljivko okolja z velikimi tiskanimi črkami, shell spremenljivke z malimi črkami.
To je tvoje ime.
To je le v zelo izjemnih okoliščinah
da bi si želeli to spremeniti.
Če je vaše uporabniško ime nekoga drugega, lahko vrgel vse mogoče stvari off.
Domači imenik, uporabnikov domači imenik.
Again, si ne bi želeli to spremeniti.
Opazili v vseh teh primerih, in tisti, ki smo na tem, da zajema spremenljivo pot,
spremenljivka okolja je z velikimi črkami in vezan lupina spremenljivka je z malimi črkami.
Če spremenite eno, bi morali spremeniti druge.
Ni mogoče ugotoviti ta vrsta zavezujoče, kot si ne more vezati 2 spremenljivk,
Razen tega 4, in pri teh spremenljivkah vezavo ni mogoče razveljaviti,
jih ni mogoče ločiti.
Torej so te 4 pari spremenljivk zavezuje.
Vedno bodo. Noben drugi bo.
Poleg tega bi bilo mogoče ustvariti spremenljivke z enakimi imeni
nasprotnih vrstah.
Lahko bi lupine spremenljivo izraz z malimi črkami
ali spremenljivko okolja TERM z velikimi tiskanimi črkami.
Navedene spremenljivke bi bilo neodvisno od teh parih spremenljivk
in bi bili neodvisna drug od drugega.
Ne morem si predstavljati, zakaj bi to naredil, če želite zamenjati ljudi.
Ta tukaj, pot spremenljivka, to je res pomembno.
Druga stvar tukaj je, da lahko obstajajo primeri,
spremenljivk s podobnimi v paru, imeni, ki niso vezani na drug drugega.
Ne more biti spremenljivke, SHELL in lupine, z velikimi in malimi črkami.
Na osnovi tega imena, ne vem, če je spremenljivka je lupina spremenljivka
ali nastavljena, oni ni vezan na drug drugega.
Tako da nekako seznanjenih imen ne pomeni, vezanih spremenljivk.
Spremenljivka pot, ki sem jo kazal prej,
je seznam pathnames pri kateri lupina išče ukazov.
Pojdimo v to okno tukaj in potrudili se bomo echo $ PATH, z velikimi črkami -
spremenljivka okolja - echo $ PATH, male črke - lupini spremenljivko.
Opazimo, da je seznam imenikov isto. Ti so vezani.
Spremenite eno, lahko spremenite druge.
V spremenljivko okolja so elementi ločeni z dvopičjem. Opazil.
V lupinskih so ločeni s presledki.
Ta spremenljivka okolja je en sam niz.
Spremenljivka lupina je matrika.
Bournova lupina ni imela nize.
Bash počne, vendar je to že določen del školjke.
To je en sam niz in ne matrika.
C-shell vedno imela nize.
Na nizi so veliko lažje delati.
Lahko se nanašajo na njegove dele.
Torej echo $ Pot [1] in dobim / usr / bin, prvi element.
Še enkrat, ne pozabite dolar znamenje stoji za zadnji element seznama zgodovine.
Kaj se dogaja tam? Je poskušala najti znak za dolar kot variabilni simbol.
Sem pobegniti. Ups. Da ne bo niti tega.
Nekatere od teh stvari ne delujejo tako dobro.
Mogoče bomo pustite, da ven.
Zvezdica nanaša na celotno stvar, ampak to je tisto, kar dobiš, če ne določite element.
Drug način, da se zaporedji spremenljivke lahko manipulira,
število elementov tam, 7 elementov.
Tukaj smo se lojtra pred imenom spremenljivke.
Tukaj je še eden. Daj vprašaj tam.
To je logična vrednost. To kaže, da je spremenljivka.
To je še en način za delo s spremenljivkami.
To, mimogrede, ni nujno, da je matrika spremenljivka.
, Da bi lahko katera koli spremenljivka.
In če naredim, tam je taka spremenljivka ni in dobim 0.
Obstaja še ena majhna stvar spremenljivih ocen.
Nazaj na tale tukaj, če iz nekega razloga si želel delati s tem
namesto dela s paleto, spremenljivka lupina,
so ukazi, ki lahko ločujejo te stvari, ki temelji na debelem črevesu.
V bistvu, če boš to počel v bash lupini možnosti
nekakšen scenarij, da bi bilo verjetno, kako bi si to naredil.
Ampak v C-lupini je veliko lažje, da uporabite paleto.
V Bournova lupina, so spremenljivke, ki jih določi en sam izraz, kot je ta,
kot način si lahko dodeli spremenljivko v programskem jeziku,
in tu ne sme biti nobenih presledkov.
To je potrebno, da je bilo samo 1 niz.
V lupin The Bourne tipa, vse spremenljivke so shell spremenljivke.
Spremenljivke okolja so podmnožica spremenljivk lupine.
Odlikuje od spremenljivk, ki niso okolju z izvozom.
Ukaz za to, da je izvoz, kot so izvozne tiskalnik.
Če smo bili, da opredelijo take spremenljivke,
če bi želeli ukaz za tiskanje, da ga najdejo, bi moral biti spremenljivka okolja,
in to je, kako bi bilo eno.
Tukaj je nekaj nekako zmedeno.
Ta izraz, izvoz za okolje, izhaja iz tega Bourne shell koncept,
in vendar se ta izraz uporablja v opisih C-lupini,
kjer ni takega ukaza ni kot izvoz.
Če ste pravkar rekel izvoz po sebi, boste dobili seznam izvozi -
Torej, če sem se izvažajo tukaj, nič takšnega.
Ok, pa gremo.
Te stvari je, mimogrede, so opredeljeni tudi lupine.
Nisem opredeli nobenega od teh, ki jih sama.
Shell pa vse mogoče stvari, ki jih sama.
To bi morali storiti stvari samodejno.
V Bash ali Korn, lahko zaženete ukaz, kot je ta,
ki bosta dala spremenljivka, vrednost in jo izvoziti v 1 poveljevanja.
V Bournovi lupini, morajo biti ločene ukaze, kot izvoziti.
Tu je še en vidik, ki je zmedeno.
Set ukaz v C-lupini definira spremenljivke
in brez argumentov vam pove, kaj se vrednosti spremenljivk "so.
V Bash lupini, set ukaz brez argumentov počne isto stvar,
ampak z argumenti počne nekaj povsem drugega.
Torej, to so različni argumenti tukaj.
Nekatere od teh so spremenljivke okolja, nekateri od njih so shell spremenljivke.
Vsi izmed njih so shell spremenljivke res. Nekateri od tistih, ki sta spremenljivki okolja.
Ukaz set z argumenti, se lahko uporablja za delovanje
o pozicijskih parametrov do scenarija,
ki je način jih dobili vse naenkrat.
Mi ne morem iti v to danes.
Lahko se uporablja tudi za spremembo obnašanja lupine.
Zlasti v Bash obstajajo spremenljivke, ki bodo ugotovili, kako se obnaša lupina.
Potem tudi samo tale ukaz, ki ga lahko vidite, ta ukaz.
Stavljene sledi spremenljivk in tipov spremenljivk se uporablja v Korn in bash.
To ni obvezno, vendar ga je mogoče uporabiti za omejitev vrednosti spremenljivk,
ki so lahko koristni za preprečevanje napak, in to je dokaj pogost.
Torej, jaz sem samo omeniti, da v primeru, da ste ga videli nekje.
Ukaz kje.
Spomnim se, da sem omenil že prej, če ukaz v C-lupini,
ki vam lahko pove, kje ukazni pot.
Tukaj je ukaz zamenjavo.
Moral bi najti na tipkovnici nekje znakov, ki izgleda takole.
Mesto na tipkovnici se bo razlikujejo.
Smo jo imenovali backquote. To je približno velikosti ponudbo.
To gre od zgoraj levo do spodaj desno.
Tu na mojem Mac tipkovnici, da je v zgornjem levem kotu.
Ta znak se lahko uporablja za izvršitev ukaza okviru ukaza.
Če imate izraz znotraj backquotes,
ta izraz je ukaz, to je prost.
Izhod iz tega ukaza
Nato substituiran za celotno backquote izražanja
znotraj daljšega ukaz, ki potem poteka s tem izhodno
kot del niza argumentov in tako naprej.
Tukaj je ukaz, ki uporablja to.
Oglejmo prikazati delovanje tukaj.
Pojdiva sem gor, da iz backquotes.
Nadzorna mi pride na začetku vrstice s urejanja sintakso Emacs.
Doslej poti pa je, kaj, če ne,
ampak ko sem to naredil, kot je ta, potem svečke na tem seznamu pathnames
namesto tega celotnega backquote izražanja in teče ls-l na njih.
Nekako prikladno, kajne?
Tako, da je ena gladka stvar. Tako backquotes delo.
Zdaj greva dol malo naprej.
To so vzdevki. Pravzaprav sem uporabljati.
Bom poskusil dobiti tega z 1 operacijo urejanja.
Ok.
Zdaj pa poglejmo, kako te opredelitve je prišel ven.
alias LWH mi povedal, kako je to opredeljeno.
Opazili, da je samo to, ampak zunanja citati so bili ukinjeni
in klicaj je vzletelo.
! *, Popoln seznam vseh argumentov.
Pri opredelitvi alias bo uporabljala nazaj, kjer sem uporabljati.
LWH ksh bash. Ok.
Oglejte si, kako to deluje? To mi prihrani nekaj tipkanja.
Greva gor malo samo omeniti nekaj drugega tukaj.
Opazil sem te različne lupine. Moral bi že prej omenil.
Csh ima 2 tukaj in tako ne / bin / tcsh.
Mi lahko ugotovi z drugimi sredstvi, da so tisti, ki dejansko ista slika.
Ne pozabite, sem rekel, če ste tip sh dobiš zabavo.
Tip to in dobiš to.
Vendar pa so tisti, ki niso povezani. Tisti, ki imajo eno samo tisti tam.
In to ni vrsta datoteke, ki lahko zahtevajo še enega.
Torej tistih, ki so ločene datoteke, C-shell tisti, ki so na ista datoteka.
Tukaj nazaj navzdol, drugi pa tukaj, to alias,
Upoštevajte, da teče ta ukaz, datoteko.
To alias teče to. Datoteka vam pove tip datoteke.
Torej FWH ksh bash. Ok.
To je izhod ukaza datoteko.
Ne vem, če veste, kaj je to tukaj pomeni,
Mach-O univerzalna binarna z 2 arhitektur.
Obstajata 2 možni vrsti procesor na Mac,
in nekateri programi so bili napisani, da se lahko vozijo z obema,
in ukaz datoteke lahko določi, da, tako da je, kaj to pomeni.
Oba od teh spisov so bili napisani na tak način.
Tako da bomo videli, kako alias deluje, bomo videli, kako backquote deluje,
bomo videli, kako dejansko datoteko ls ali datoteke deluje.
To morda ne bo delovala. Poskusite ", kjer, če" in "LWH kje". Ok, poskusimo to.
kjer kadar.
kjer je lupina vgrajen.
Ne pozabite pred tem smo pokazali, da Bash ni imel kam.
Če ste tip, kje v Bash lupini, boste dobili sporočilo o napaki.
To je samo del lupine, namesto da bi ločen ukaz.
Kaj se zgodi, če sem s tipom LWH iskal kje? Poglejte, kaj se tam dogaja.
Ran, kjer kjer je dobila ta izhod, in nato poskušal teči ls
kot sem o tem, kje je lupina vgrajen.
kadar je tam, vendar ostale pa ne obstajajo.
Nobena od teh obstajajo, pravzaprav.
Torej, to vedno ne deluje, prav tako ponazarja, kako se nekatere stvari
ne delaj tisto, kar ste morda mislili.
Pojdimo še malo tukaj.
To tukaj je v Bash. To je tudi ukaz substitucija kot backquote.
Toda za razliko od backquote, ki jih uporablja ta spremenljivi slog.
Obstajajo številne izraze, ki se začnejo z znak za dolar,
in čeprav ne gre za spremenljivke, ki jih sposodil uporabo znak za dolar
, ki označuje izraz neke vrste.
, Ki se lahko obdan z oklepaji ali razredi ali dvojnih oklepajih,
ki ima drugačen namen.
Samski oklepaji so tukaj zamenjavo ukaz tako kot backquotes.
Dvojne oklepaje je pravzaprav aritmetično operacijo.
Obstajajo tudi druge skladnji, druge operacije.
Backquote sintaksa je na voljo v Bash.
Vendar pa ta je prednostna. To je veliko lažje brati in omogoča gnezdenje.
Imaš notri $ (ukaz), lahko drug ukaz,
nekaj podobnega -
Dobim seznam tam.
To bi delovalo, če sem imel backquote tudi.
Kaj, če želim narediti nekaj podobnega -
Verjetno si ne bi dejansko uporabiti ta ukaz,
vendar je to notranja zamenjava ukaz odmeva imena vseh datotek, ki se začnejo z,
potem je to ena teče ls-l na teh datotek,
in potem je to eno samo odmeva izhod.
Verjetno si ne bi to naredil, boš pač odmev ali ls,
vendar to kaže, kako gnezdenje ukazov deluje.
Torej samo še ena značilnost tukaj.
Sem omenil že prej, da če imate kje v C-lupini,
tip dela v lupinah The Bourne tipa za iskanje ukazov.
Vgrajeni ukazi, samo tisto, kar sem bil tam rekel.
Ukazi so del lupine, kot so kje.
Ko lupina izvede ukaz kot ls, jo najde skozi sredino,
ga najde v nekem imeniku nekje
se glasi, da v spomin, ustvarja novo lupino,
bere ukaz ls ali karkoli v lupini
kjer so spremenljivke okolja že nahaja,
in potem prenese izvrševanje z njo.
Vgrajen ukaz, oznaka za ta ukaz je v notranjosti lupine,
tako lupina šele začne izvršitve del lastne kode.
če je tak ukaz. To dejansko postane hitreje.
To ni nujno, da se glasi kaj v spomin, to je že v spominu.
Vgrajeni ukazi vedno prednost pred ukaze z enakim imenom.
Ukazi, ki so v imenikih v poti, imajo lahko isto ime,
ukazi v različne imenike, datoteke v različnih imenikih.
Tisti, ki prej pride na pot je tista, ki jo boste dobili.
Če je vgrajen ukaz, vedno si ga dobil.
Ni šans, da ga nižjo prednost kot ukaz na poti.
Če želite, da bi dobili ta ukaz poti, lahko vnesete polno ime.
Če ne bi bilo ukaza, kjer na poti nekje,
lahko bi tip / bin / kje in boš dobil.
Če ne želite vnesti celotno ime poti, lahko določite vzdevek.
V bistvu, če si dal vzdevek, enako ime kot vgrajen ukaz, bi to delo
ker se ocenjuje definicija alias
pred lupina ugotovi, da je vgrajen ukaz kar je treba izvesti.
Potem to postane malo bolj zapletena pri nekaterih ukazov tukaj.
Pri nekaterih ukazov dejansko vgrajeno v poveljstvih in na poti.
Eden od njih je, echo, ukaz sem uporabiti nekaj časa nazaj v teh primerih.
Echo je ukaz na poti in da je v vsakem lupine.
Ni nujno, da se vsi obnašajo enako.
To je bil prvotno ukaz le na poti.
Zgrajena je bila leta na lupinah kasneje.
Ker obstajajo možnosti, ki so odvisne od okolja
in možnosti v ukazni vrstici, so vgrajeni ukazi
je napisano kot deluje enako kot ukaz, ki je bila v sredino,
to je malo verjetno, da bi bila napisana na ta način
če bi ukaz ni bilo napisano za pot.
Torej, to ima tudi stranske učinke. Njegova zgodovina je učinek tukaj.
Obstajajo možnosti tam.
Obstaja tudi možnost, ki jo spremenljivko je opredeljena v tcsh imenovano echo_style.
To je ena od teh spremenljivk, ki lahko spremenijo tako, da ECHO sodeluje.
Obstajajo še drugi primeri, v katerih boste lahko določite spremenljivko
, ki spreminja način, da operacija lupina, vključno z vgrajeno ukaz, ki deluje.
To ne bi vplivalo kaj drugega
ker drugi ukazi nimajo dostopa do spremenljivk lupine,
Samo okoljske spremenljivke.
Vendar pa lahko operacije shell prebrati spremenljivk lupine.
Da ne bo delo za csh. To je samo tcsh. To je ena od izboljšav.
Razčlenjevanje ima sekvenc pri oceni metacharacters,
pri oceni spremenljivke, vzdevke, reference zgodovine.
Tam je posebna sekvenca za te stvari.
Če se to zgodi stvari v določenem zaporedju
in dobi za nekaj, kar je izraz neke
, ki je bila že ocenili, da ne bo ponovno oceni.
Če se ga dobi, potem bo to šele prenesti znakov.
Torej, če vrednotenje nekaterih izrazov, kot ukazni zamenjavo
ali spremenljivo ali karkoli povzroča izraz
ki bi si želeli, da je treba oceniti,
da bo deloval le, če se je ta ocena kasneje v zaporedju.
Upam, da bom na jasnem tam.
Da razčlenjevanju zaporedje, operacija v C-lupini,
ni enaka za vgradne ukazov, saj je za nekadilce in vgrajenih ukazov.
Nisem prepričan o Bash tam.
Na primer, če lupina spremenljivka proizvaja sklicujejo na zgodovino,
to verjetno ne bi šel nazaj v zgodovino.
To bi šele dobili klicaj.
V bistvu, lahko poizkusiva da ven prav zdaj.
nastavite A = in bomo morali dati to tam.
Oh, počakaj. Žal mi je. To sem naredil v Bash. Želel sem, da to storite tukaj.
Glej, tako da ni ocenjeval, da sklicevanje zgodovino
ker je bil že mimo točke vrednotenja zgodovine izrazov
ko ocenili spremenljivko.
Tako da je 1 učinek razčlenjevanju.
In spet so vgrajeni ukazi niso storile enako.
Vse je v redu. Gremo na naslednjo igro.
To naj bi bila 1 linijo, vendar je lažje brati.
Kaj naj bi to naredil?
Morda se spomnite, da smo lahko oceni zvezdicam kot datotečnih nadomestnih znakov,
pa obstajajo še drugi filename nadomestne znake, kot vprašajem in nosilec izrazov.
Ta vrsta vrednotenja se imenuje vzorcev v datotekah.
nastavite noglob na začetku tega ukaza pravi, ne delaj tega.
nenastavljeni noglob pravi, da se vrnete na tem.
Upoštevajte, da niz glob ne bi imela tak učinek.
V običajnem jeziku, bi določila glob ali nenastavljeni noglob zdi, da so enakovredni,
ampak tukaj je ni. To je nenastavljeni noglob.
Zdaj TSET. Tset stal na terminalu.
Ni pa to zdaj pogosto uporabljajo, vendar preden je bil na voljo okenski sistemi
in bi imeli en sam terminal, boste morda morali določiti vrsto.
In če je nekaj, prihajajo preko Ethernet ali iz mreže,
boste morda želeli, da pravijo, da je VT100.
VT100 je nekako standarda v poslovanje terminala. Izhaja iz december terminala.
Če si naredil dialup - opazil, da? To sega nazaj v čas, kajne?
Torej, če smo samo mi TSET tukaj,
če sem naredil TSET, to je ponastavitvi mojo terminal, vendar nisi videl ničesar.
To ni res ničesar spremeniti.
-S
Ok.
setenv TERM xterm-color.
Mi že vemo, da je bil izraz nastavljen na ta način, tako da se ni spremenilo.
To je način, kako bi želeli, da to storite.
Ampak obvestilo, da je ta ukaz, Tset-ov, samo izhodni ukazi. To jim ni prost.
To ni bilo v teh ukazov, da izhod njih.
Torej je ta namenjen za proizvodnjo ukaze, ki se bo nato teči.
Se spomniš ukaz v tej datoteki sem pokazala, da si imel Q v njej.
Torej, kaj je to.
Q zavira nekaj moči, toda to ni važno tukaj, kot lahko vidite.
Jaz sem samo delaš, da bi vam pokazal, da ni važno.
To je v backquote sintakso.
Bodite pozorni na backquote tukaj, backquote tukaj.
Jaz opustitev te stvari tukaj.
To so primeri je povedal, kaj storiti
v primeru posebnih vrst terminalov -
Ethernet, mreža, dialup, kar imate.
Ni važno tukaj, ker smo dejansko ne delaš koli od teh stvari.
Jaz sem samo kaže na ukaz.
Če naredim to z backquote, kaj bom dobil?
Opazili tudi tukaj, da se to vključi zastavljeni noglob in nenastavljeno noglob,
tako tistih, ki so zdaj odveč opredelitev.
To ni bilo vedno res, zdaj pa oni so vključeni v ta ukaz.
Ampak poglejmo, kaj se zgodi, če naredim to
in pojdite na začetku vrstice s kontrolnimi A in sem to naredil.
Ok, določi: Command not found. To je nekako čudno, kajne?
Niz je znana ukaz. To je del lupine.
nastavite: Command not found? Zakaj je tako?
Hmm. No, kaj je razmišljati o tem.
To je tekmovanje v teku zapoved menjavo backquote,
in ki se pojavlja v določenem delu zaporedja razčlenjevanje ukaz.
Niz je vgrajen ukaz.
Torej, do takrat pa naj bi to zapoved menjavo,
to je že prišel mimo točke identifikacije vgrajenimi ukazi.
Tako da obravnava določena kot da bi bil ukaz na poti.
Ni treba posebej poudarjati, da ne najdejo in dobiš napako.
Dobro. Tam je primer razčlenjevanju zaporedju.
In kaj naj storimo glede tega?
Opazili to zelo zanimiv ukaz tukaj, eval.
Zanima me, kaj to počne.
Če pogledaš na navodila - in kaj je samo to, da
pokazati, kako nejasne so ti priročniki -
Človek tcsh, zmeden priročnik, iskanju stvari tukaj ni enostavno niti.
Gremo, eval arg, tako da imamo lahko 1 ali več argumentov
in tam je seznam stvari tam.
Obravnava argumente, kot so vhodi v lupini
in izvede posledica ukazov v okviru trenutne lupine.
To se običajno uporablja za izvajanje ukazov, ki nastanejo kot rezultat ukaza
ali spremenljivo zamenjavo, saj se pojavlja pri razčlenjevanju pred temi menjav.
Zelo dobro.
In tukaj se celo nanašajo na ukaz TSET za uporabo vzorca
kot tisti, pravkar sem ti pokazal.
Zdaj moram okno nazaj na uporabno mesto.
Pojdimo tja in bomo videli, da eval se uporablja tik pred tem.
Pa poglejmo, kaj se zgodi, če smo se - gremo v korak s puščicami za ta ukaz
in nadzor na začetku, eval.
Ok, tako da deluje.
Ko boste to storili eval, saj traja kar pride po njo in jo naredi ukaz.
To vam omogoča, da v bistvu to razčleniti dvakrat.
Oddelek tukaj teče ta ukaz znotraj backquotes,
dobi izhod.
Izhod naj bi se vodijo kot tiste ukaze tukaj, kot ti
na ta in ta.
Torej ti ukazi so zdaj tukaj, v tem zaporedju,
vendar pa so te vgrajene ukaze, zato jih ne more dobiti takoj.
Torej gremo na eval, eval pobere, da se prične celotno stvar znova in deluje.
Primer oba backquoting, eval, razčlenjevanje, posledice razčlenjevanje,
in ukaz, ki je verjetno zelo malo uporabljajo za vas danes.
Ok. Vse je v redu, umask.
Oglejmo si ta ukaz tukaj umask 022. Zanima me, kaj to počne.
Reciva, tip umask nič po njej. 22. Ok.
022 in še enkrat.
Kot ste morda uganili ste, umask brez argumentov vam pove trenutni masko;
umask z argumenti, zaradi česar je to, ampak da je bil tisti, ki sem že imel.
Kaj pomeni 022?
To so tu zaščite za datoteko.
Ti določajo, kdo sme brati ali pisati ali izvajajo datoteko.
Zaščite so imenovane tudi dovoljenja.
R stoji za branje, w za pisanje,
in x, ki niso prisotni, stoji za izvedbo.
Obstajajo 3 kategorije tam.
Zadnje 3 elementi so v kategoriji uporabnika. Tisti, ki se uporablja za mene, uporabnika.
Te 3 tu veljajo za skupino.
Datoteka spada v skupino 1, uporabnik lahko pripada več skupinam,
toda, če je uporabnik v skupino, v kateri je ta datoteka pripada,
potem bodo te zaščite veljajo za njim, če ni uporabnik.
In ta je vsakdo drug.
Te kategorije so med seboj izključujejo.
V zaščite uporabnikov uporablja zanj,
z varstvom, skupina za člane skupine, razen uporabnika,
in druge zaščite uporabljajo le za druge, kot uporabnika in člani skupine ljudi.
Če je r ali aw ali x, to pomeni, da se zaščita odobri.
Če je vezaj, to pomeni, da ni.
Obstaja dejansko tudi druge stvari, ki jih lahko dal noter poleg teh
ki je ne bom dobil v zdaj.
Umask določa privzeto za datoteke, ki jih ustvarite.
In kot masko, v bistvu pravi, bite, da ne boste zastavili.
Kako je to postalo bitov?
Če menite, da je vsak od teh, kot osmiško število,
To je 1S bit, to je 2S, to je 4S.
Torej od 0 do 7
bo opisal, kaj kombinacija r-ih, je w in x je imate za te 3
in potem podobno številko za to in potem za njih.
Torej 022 pomeni 0 Za druge 2 za skupino 2 za uporabnika.
Ampak to je maska. Maska je tisto, kar vam ni treba.
Žal mi je. Pravkar sem ti dal stvari v napačnem vrstnem redu.
To je prva 3. Te 3 so uporabnik, ti ​​3 so skupina, ti 3 so drugi.
Oprosti, ker sem ti dal to v napačnem vrstnem redu.
0, ki je prvi od tistih, ne prikaz vrednosti,
vendar če število ni tam, je 0.
To pomeni, da vse 3 od teh bi bila dovoljena.
Opazimo, da v tem posebnem one x ni dovoljeno.
Razlog za to je, da je lupina lahko določi
ali naj se datoteka izvrši ali ne.
Ker to ni izvedljivo datoteko, da niso bili določeni x.
V 2 pomeni, da pišejo dovoljenje, drugo kategorijo tu,
ena na sredini, je zanikal.
Torej še enkrat, to so stvari, ki jih zanikal.
No, x dovoljeno, vendar to ni tukaj, ker to ni izvedljivo
Podobno velja tudi za ostale.
Tako da je skupno umask.
Druga skupna ena je 700 - da si vse, kar je in nihče drug ničesar.
In obstajajo tudi druge možnosti.
Vrnil se bom k temu. Uporaba zgodovine sem lahko poiščete nazaj, da LWH tam.
Ok. Torej tukaj, to so lupine.
Bash, lastnik, ki je sistem za račun, lahko storite vse, kar je.
Skupina in vsi ostali lahko preberemo ali izvršitev, ne pa pisati.
Tale sploh ne dovoli lastnik pisati z njo.
Če je lastnik želel napisati na to, sistemski račun,
kar bi morali najprej spremeniti zaščito.
Ampak še enkrat, umask določa privzeto, da jo maskiranje,
z navedbo bite, ki se ne bodo določene.
Ta je ponavadi v eni od inicializacijo datoteke, ki je. Cshrc za C-lupini
ali. profil lupine Bourne tipa.
To je lahko tudi na drugem mestu, če obstajajo drugi inicializacijo datotek na sistemu.
Kakorkoli že, to je umask.
Nekaj ​​je nekako čudno tukaj
in da je, zakaj je tam en sam ukaz za to?
Če bi bilo to pisanje, jaz bi, da je spremenljivka, umask = nekaj vrednosti.
Zato obstaja cela ukaz samo za ta namen?
Razlog za to je to samo sega v začetke Unix.
Unix je samo nek programski projekt v Bell Labs v začetku leta 1970.
Ljudje pravkar dobil skupaj s programom.
Oni nikoli ni bila namenjena, da postane svetovni operacijski sistem.
Različni ljudje napisal različnih delov brez razmišljanja zelo
o tem, kako so bili, da bo treba uporabiti - precej nedorečena.
In je prišel skupaj, kot da, in to je še vedno všeč, da je v nekaterih pogledih.
Tako, da odseva zgodovino, in še vedno obstajajo te nedoslednosti in lihe elemente njej.
Ok. Naslednja tukaj.
Kot sem napisal že prej, je C-shell ni res uporablja zelo veliko za programiranje,
čeprav je lahko.
Izvaja bolj počasi, spet kompromis med interaktivno uporabo,
ki ima več procesiranja vključena kot hitrosti
kar lahko storite brez obdelave.
Dodatne funkcije, dodane Bournova lupina, ki jih Korn in Bourne-spet školjk
ne zdi, da jih upočasni, in ne vem, zakaj je tako.
Morda bi le bilo bolje programiranje, ampak jaz nisem v položaju, da veš.
Speed ​​tukaj pravzaprav ni tako velik posel, čeprav je bilo omenjeno.
Razlog za to je, da skriptov dejansko dobili dokaj hitro.
Če obstaja veliko ukazov, kot v calculational programa,
vam verjetno ne bi mogla v skripte.
Operacije so dokaj preprosta in enostavna.
Tiste, ki sem jih doživela, da so prepočasne
vključujejo ponavljajoče se prošnje počasi ukazov.
Prej sem omenil tok urednik sed. Ta ukaz je počasen.
Če izvedete sed večkrat, boste dobili počasi scenarij, vendar to ni lupina, ki je počasen.
To tekmovanje v teku v Bournova lupina ne bo veliko hitreje, kot to poteka v C-lupini,
čeprav je morda nekaj prednosti tam.
Dodatna programska zmogljivosti, na drugi strani pa
so pomembni razlogi, zakaj bi jih uporabite lupine Bourne tipa.
C-shell ima čuden funkcije za njo -
Dejstvo, da ne vem, če spremenljivka je spremenljivka lupina ali spremenljivka okolja.
To je lahko zelo zavajajoče.
To ni tako enostavno napisati
temelji le na vaše izkušnje programiranja v drugih jezikih.
Mislim, da boste ugotovili, lupine Bourne tipa bolj v skladu z vašo izkušnjo.
Nekatere skripte, čeprav je lahko na tisoče vrstic v dolžino.
Tisti, ki sem jih videl se uporabljajo za krpanje operacijskih sistemov.
Tisti, ki lahko izvajajo zelo počasi, vendar vam ne zmanjka tistih, ki zelo pogosto.
To je samo takrat, ko delaš zaplata,
in to je edini sistem manager, ki počne te stvari,
tako da to ni res veliko vprašanje.
Tisti, ki so na stotine vrstic dolg dejansko izvajati precej hitro.
Omenjajo tu, kaj so te izboljšave?
Sem že omenil nekaj od njih - nizi, izračuni,
The $ () izraz za izračune v Bash lupini,
druga vrsta ukaza zamenjavo.
Obstajajo različne vrste ukazov za testiranje
, s katerim lahko storite pogojne teste o obstoju datoteke ali druge stvari.
Trajal tukaj, ta ukaz tukaj.
Kaj to storiti in zakaj bi kdorkoli uporablja?
printenv variablename.
Vemo, kaj printenv počne. To nam pove vrednost spremenljivke.
In printenv variablename nam ne bo povedal zelo veliko, ker ni taka spremenljivka ni.
Prazno.
Ampak dajmo mu nekaj pomembnega.
Da ni tam niti. Ok. Mislim, da ne bom nikoli opredeljeno, da.
Reciva, preverite svoj okolja.
To je še en ukaz, s katerim lahko preverite svoje okolje.
Tam je dobra stara UREDNIK, eno smo videli prej.
Kaj naj bi to naredil?
Tukaj imamo backquote izraz.
Shrani to je C-shell.
Torej nam bo printenv UREDNIK dala vrednost urednik. To je vi.
In potem se bo določila, da je vrednost spremenljivki A, določenem ukazu.
Torej, zdaj, če naredim echo $ a, sem dobil vi.
To se ne zdi strašno koristen.
Vendar pa dejansko ima svoj namen.
Ker ne vemo, ali je spremenljivka spremenljivka lupina ali spremenljivka okolja
s pomočjo sintakse ocenjevalnega znak za dolar, lahko uporabite printenv
se prepričajte, da je spremenljivka okolja.
Torej, če je bilo lupina spremenljivka urednik, to ne bi ga dobila.
To deluje samo z okoljsko spremenljivko.
Če ne bi bilo lupina spremenljiv in sem želela svojo vrednost,
Jaz bi moral najti drug način, da to storite.
Eden od načinov za to, da bi se s tem niz in cevovodov.
To je eden izmed metacharacters, posebnimi znaki.
To pošilja izhod nastavljen na nekaj drugega.
Poglejmo, kaj bi lahko našli tam.
Nič. Ok. Da vidimo, kaj se je tam vse skupaj.
To je bil echo_style, eden preden sem omenil. Ok, naredimo to.
Zapomni si prej sem omenil, echo_style
določa način echo ukaz bo teči.
bsd stoji za Berkeley standardne distribucije.
To je Berkeley Unix iz leta 1970.
To je eden od načinov, ki odmeva mogoče zagnati.
Nastavitev echo_style tej vrednosti v TC-lupini povzroči odmev, da se obnašajo na ta način.
Tako nastavljen, da počne, vendar so le dobi lupine spremenljivk.
To ne bi našli urednik, ki ni lupina spremenljivka.
Nič.
Tako da je eden od načinov za njihovo razlikovanje.
Toda dejstvo, da boste morali iti skozi nek čuden ukaz, kot da
razlikovati med spremenljivkami oklepu ali spremenljivke okolja
prikazuje vrsto nepraktičen po naravi C-lupini za nekatere namene.
In zdaj, zadnji in morda najmanj, to je man strani.
Tisti, ki veste, človek je ukaz za kratka navodila.
Man strani lupine so težko prebere. Oni so zelo dolgo.
Oni so organizirana na način, ki bi lahko oteži, da bi našli tisto, kar iščete.
Torej, če iščete nekaj z namenom,
morda ne boste vedeli, če je v ta namen je spremenljivka lupina ali kaj drugega,
zato morda ne boste vedeli, kje iskati za to.
Si lahko ogledate za različne strune, vendar strune so pogosto ponovi.
Tako da je na splošno težko prebere.
Pravkar smo pogledal man strani TC-shell malo prej, da bi našli ukaz eval.
Nekatere stvari gredo hitreje.
Ena možnost je, da poiščete niz.
Lahko uporabite pozivnik.
Pozivnik ima poševnica, da si za ukaz ali niz znotraj operacijo pozivnik.
Človek se privzeto uporabljajo pozivniki, bodisi bolj ali manj.
Ne vem, če ste seznanjeni s tistimi, ampak tistih, ki lahko pokažejo files bit by bit.
Sem bil z uporabo manj prikaz te posebne datoteke imamo tukaj.
Iščete lahko tam notri.
Lahko poskusite z uporabo različnih iskalnih nizov.
Tudi strani man v različnih operacijskih sistemih, ne sme biti isti.
Lahko so ločene strani za csh in tcsh.
Oni niso na Mac, vendar pa bi lahko, če so ločeni ukazi.
Če ne sh ni res poklical Bash pa verjetno bi bilo ločeno man stran.
Nekateri sistemi imajo ločene man strani samo za C-shell vgrajenih ukazov.
Včasih, če želite prebrati opis vgrajenim ukazom
, ki je tudi na poti, kot odmev, morate prebrati stran man o tem ukazu o odmeva
ugotoviti, kako bo to delovalo kot vgrajenim ukazom
tudi če niste kliče vgrajenega ukaza.
To je pomanjkljivost operacijskega sistema na splošno, ne samo za lupin,
čeprav lupin, so zlasti man strani precej dolg,
deloma zato, ker smo jim dodali uporabne funkcije z njimi, ki je lahko pozitivna.
Ok. Ima kdo kakšno vprašanje? Morebitne teme, ki jih želite bruhati?
Kaj tukaj pomembno?
No, to je bilo zelo lepo, se pogovarjam z vami vsemi.
Upam, da imaš nekaj od tega seminarja
, ki bo koristno za vas v vaših prihodnjih prizadevanj.
[CS50.TV]