[Seminar - Unix skeljar, Umhverfi] [Douglas Kline - Harvard University] [Þetta er CS50. - CS50.TV] Efni dagsins er Unix skel. Ég er Douglas Kline, sérfræðingur, eða að minnsta kosti sæmilega bær notandi, úr skelinni. A skel er tengi fyrir notandann til að stýrikerfi tölva '. Nafnið er villandi eins ólíkt skel dýri, sem er erfitt og hlífðar, tölvuna skel leyfa fyrir samskipti. Svo porous himna myndi líklega vera betri samlíking. Upprunalega skel fyrir Unix er Bourne skel. Bourne er stafsett B-O-U-R-N-E. Bourne var einn af upprunalegu höfundum Unix, og svo skel er nefnd eftir honum. Nafn sem skel sem stjórn er bara einfaldlega SH. Það er stjórn sem þú getur keyrt. Skel hefst kl innskráningu. Þegar þú skráir þig inn á tölvuna, skel byrjar bara að keyra fyrir þig, og það er það sem tekur skipanir. Það getur byrjað á öðrum tímum líka. Ef þú koma upp gluggi með engum öðrum ábendingu, mun það byrja að skel fyrir þig. Það er hvernig það er að þú getur farið að glugga og byrjar að slá skipanir og svo framvegis þar jafnvel þó þú hafir ekki skráð þig inn á þeim glugga. Þar að auki, ef þú gera a fjarlægur tenging, þá mun það byrja skel á the fjarlægur tölva. Og það er hægt að keyra skipanir án gagnvirk skel. Það getur þýtt innan núverandi rekstri þínum, og það getur einnig þýtt á fjarstýringu. Þú gætir sent skipun til annar tölva, sem felur í byrjun upp a skel þar. Í raun hefur það að fela í sér að byrja upp á skel þar jafnvel ef það er ekki endanleg tilgangur þinn. Þegar eitthvað fer upp eins og þetta, er það ekki endilega að byrja nýja skel. Ef þú koma upp nýjan glugga, það er hægt að segja það að ala upp ritil eða einhver önnur stjórn. Í því tilfelli, ritstjóra mun byrja frá grunni. Þegar ritstjóri endar, glugga lýkur. Þetta er svolítið óvenjulegt en það er hægt að gera. Í þeim tilvikum, það mun ekki vera skel. Svo það er ekki endilega raunin að glugga eða einhver slík forrit mun koma upp skel. Shell flokka skipanir. Þáttun þýðir að skilgreina ýmsa þætti og flokka þær. Innan stjórn, heill strengur sem þú skrifar, það verða 1 eða fleiri stakir skipanir til að framkvæma. Aðrir þættir geta verið rök. Það getur líka verið sérstafir sem hafa áhrif á framkvæmd stjórn. Þeir geta sent framleiðsla annarsstaðar en á skjánum ef stjórn myndi venjulega senda það á skjáinn. Það getur endurvísa inntak, það getur gert aðra hluti líka. Það eru ýmsar aðrar tákn, stafir, og svo framvegis. Þáttun felst að greina og túlka þá hluti. Nú ef það eru ekki fleiri spurningar, sem er frekar líklegt þar sem það eru engin fleiri fólk, við munum fara á næstu síðu mína hér. Ég sagði áðan að Bourne skel er fyrsta skel. Það eru aðrir. Eitt er C-skel. Skipunin er frá CNet. Nafnið C-skel er bara að spila á orðum. Þetta skel var kynnt með Berkeley Unix í miðjum 1970. Berkeley Unix var seminal atburði í þróun Unix. Það var gríðarlegur bylting og með tilkomu þessa skel. Ástæðan fyrir því að spila á orðum, C-skel, er sú að C-skel hefur einhverja eiginleika í það sem líkjast C tungumál, þar sem Bourne skel hefur ekki - eða það hafði ekki á þeim tíma. Það er líka TC-skel. Þetta er superset af C-skel. Það hefur fleiri valkosti, margir sem eru gagnlegar fyrir gagnvirka notkun, svo sem að minnast skipanir í sögu kerfisins, sem ég mun lýsa nokkru síðar - á einfaldan hátt, byggð eftir ritstjóra. Það hefur einnig bókband sem gerir þér kleift að binda ýtt band til lengri stjórn. Við erum ekki að fara að fá inn að í dag. Það hefur einhverja eiginleika sem eru gagnlegar fyrir forritun. Hins vegar er C-skel er ekki oft notuð fyrir Shell forritun. Shell forrit, ef þú hefur ekki nú þegar vita, eru forrit sem samanstanda af skel einkenni. Þú getur keyrt þetta eins og forrit. Þú skrifar fullt af skeljarskipanir í skrá og keyrt skrána. Þú þarft ekki að þýða það. Þetta er túlkandi tungumál. Orðasambandið C-skel er nú óljós þar sem það gæti átt aðeins við upprunalega C-skel, CNet, eða öll C-skeljar, þ.mt tcsh. Það er svolítið óljós. A síðar skel er Korn skel, KSH, nefndur eftir forritari, Korn. Þessi skel reyndi að fella inn 1 skel kostir C-skel fyrir gagnvirka notkun og Bourne skel fyrir forritun. Það hefur verið notað sem gagnvirkt skel sumra manna - minnihluti. Seinna þó, það var annar kynning, Bash skel, bash, aftur að spila á orðum, Bourne-aftur skel. Það er framhald af Bourne skel. Korn skel er líka. Þau bæði eru. Það hefur sömu markmið Korn skel amalgamating C-skel er og kosti Bourne Shell í 1 skel. Margir af endurbætur á Korn skel eru einnig í Bash. Bash, hefur hins vegar meira og er því æskilegt. The Bourne-aftur skel og Korn skel eru kallaðir Bourne-gerð skeljar vegna þess að þeir eru einkenni The Bourne Shell er, sem eru ósamrýmanleg í sumu leyti með C-skeljar. There ert annar skeljar auk þeirra, sumir ætlað fyrir takmarkaða notkun, kannski takmarkað við sumum skipunum, kannski sérhæfð tilgangi, ekki oft notuð. Lagi. Næsta atriði hér. Bash skel hefur orðið í tengslum við ýmsa Linux. Ég er ekki viss um að ef það er satt af hverju formi. There ert margir eyðublöð þarna úti og ég hef ekki notað þá alla, en í þeim sem ég hef notað það hefur orðið í tengslum við það. Svo langt sem ég veit, það er ekkert um Bash sem gerir það eitthvað meira samhæft með Linux en nokkur annar blöndu af skel og stýrikerfi. Ég held að þetta sennilega bara endurspeglar hugrenningar af forriturum. Að það hefur orðið í tengslum við Linux er önnur ástæðan til að kjósa Bash til KSH síðan hlutirnir eru líklegri til að vera skrifuð í það og það er líklegt til að dreifa. Ég skal gefa þér aðrar ástæður fyrir því síðar. Bourne skel forskriftir skulu hlaupa undir Korn skel eða bash. Ef þú skrifar eitthvað fyrir Bourne skel, þú getur sennilega keyrt það undir ksh eða bash. Korn skel forskriftir mun sennilega hlaupa undir Bash, en ég get ekki ábyrgst það. Seinna hér, C-skel forskriftir skulu hlaupa undir TC-skel. C-skel var reyndar aldrei mikið notað til forskriftarþarfir þar sem Bourne skel og síðar The Bourne-gerð skeljar voru æskilegt í þeim tilgangi. Svo í raun er það ekki allt sem máli. Það eru alveg fullt af Bourne skel forskriftir sem ritað var fyrir löngu, áður en Korn skel eða The Bourne-aftur skel voru kynnt. Þeir eru enn í notkun, hluti af stýrikerfi, og svo þú munt finna þá ef þú lítur inn í stýrikerfi eða nokkur gömul pakka forritun. Bash er að nokkru leyti verða eins konar Lingua Franca fyrir stýrikerfum. Það er nú þegar verið framlengdur til Windows og VMS. VMS, ef þú veist ekki, er sér-stýrikerfi Digital Equipment Corporation, sem enn er í notkun, að mestu á bak við tjöldin. Og ef það er að fara að keyra á mismunandi stýrikerfum, líklegt að fólk hafa tilhneigingu til að skipta um það. En þessi þróun er tiltölulega nýleg. Það er rétt að byrja, þannig að ég get ekki sagt hvort þetta mun snúa út að virkilega að vera svona Lingua Franca. Einnig, vegna þess að skrá pathnames og bókasöfn mismunandi milli þessara mismunandi stýrikerfa, þú might ekki vera fær um að skrifa bash handrit á eitt stýrikerfi og þá hlaupa það á annað. Þú ættir að vera fær um að færa það á milli mismunandi Unix, Linux Mac OS stýrikerfi, en ekki endilega að Windows eða VMS. Þú gætir þurft að breyta skrá pathname lýsingar, og sumir bókasöfn gæti verið öðruvísi, sem getur haft áhrif á þann hátt að sumir skipanir vinna eða hvernig þeir vinna rök og þess háttar. Til viðbótar við þessi, annar varúð hér er að það er engin trygging að allar mismunandi skeljar sem ég hef nefnt - Bourne skel, C-skel, TC-skel, Korn skel, Bourne-aftur skel - verður aðgengilegt samkvæmt Unix eða Linux eða Mac OS tölvan. Þeir einfaldlega gæti ekki verið þar. Það er einn af varar hér. Það er óheppileg takmörkun hér þar sem þú vilt hlutina til að vinna alls staðar, en því miður er ekki hægt að treysta á það. Lagi. Næsta einn hér. Segjum að þú viljir skrifa skel handrit, A program samanstendur af skeljarskipanir. Þú skrifar skipanir þínar, setja þá í skrá, og keyrt skrána. Hvað ef þú vilt að fela rök? Þegar um er að ræða skel starfsemi, eru rök sem kallast færibreytur eða afstöðu breytur og þeir ætla að boða með dollaramerki og númeri, $ 1, 2 $. Þannig að ef handritið hefur þetta nafn, fyrsta rifrildi mitt skyldi rök 1 og annað mitt skyldi rök 2, og inni handriti mínu ef ég vil vísa til þessa hluti - skulum eyða þessu þar sem ég er ekki alveg að fara að keyra hana - inni handriti mínu að ég gæti hafa $ 1 til að vísa til arg1, $ 2, sem mun koma út þannig, arg2. Svo þessir tákn eru í boði til að vísa til röksemda, og þeir eiga að öllum skeljar. Í samlagning, there ert annar stafir. $ * Vísar til alls rifrildi listanum, þeim öllum. $ # Vísar til fjölda rök. Aftur, þetta á við um allar skeljar. Þeir tákn, * og #, er hægt að nota með þeim merkingu í öðrum stöðum líka. Við munum ekki vera að fá inn í það. Shell specifier línu. Hvað er það fyrir? Segjum að þú hafir skrifað handrit og það er fyrir ákveðna skel og þú vilt að keyra það. Hvernig veistu hvað skel stýrikerfi verður að nota til að keyra handrit? Á einum tímapunkti sem þú gætir ráð fyrir að það myndi keyra það í Bourne skel ef þú did ekki segja annað, en fólk er ekki að skrifa handritin í Bourne skel sem mikið lengur og þú getur ekki einu sinni treyst á það lengur. Svo hér erum við með skel specifier línu hérna. Sem skilgreinir Bash. Athugaðu að það skilgreinir það í pathname, / bin / bash. Ef tölvan hefur bash skel en ekki í bin möppu, / bin, þetta mun ekki virka. Það er önnur undankeppni, annar varúð hér. The pund merki er athugasemd lína eðli. Það tekur til allra skeljar. Einkum raunin hér, #! í upphafi handrit, er sérstakt tilfelli. Sem skilgreinir skel til þess að keyra það. Eins og ég var að segja, gæti það ekki verið á sama stað / bin. Í samlagning, there er annar hlutur hér. Ef þú notar bara pund merki án upphrópunarmerki og pathname, sem ætti að benda til C-skel. Hins vegar, ég mæli með ekki að gera það vegna þess að ég er ekki fær um að tryggja að það verður alltaf að vinna. Ef þú vilt C-skel, það væri betra að segja það. Þá er það eitthvað frekar ruglingslegt hér. Ef þú notar skel specifier línu eins / bin / bash og að skel er ekki til þar, það er ekkert sem heitir / bin / bash á þeirri tölvu, annaðhvort vegna þess að það hefur ekki Bash eða vegna þess að það er á öðrum stað, þú munt fá villu að segja þér að handritið þú hleypur ekki til. Og auðvitað handritið til, svo að villuboð er ruglingslegt. Ástæðan sem stýrikerfið gefur þér að villa eða, réttara, að gagnvirk skel þína sem þú ert að keyra þetta gefur þessi villa, er að það skýrslur skipunina sem þú notaðir, sem er nafn á handriti. Að stjórn í raun kallað skel eftir nafni handriti. Það er þar sem þú færð þessi ruglingslegt villa skilaboð. Önnur leið til að hringja skel handrit er með því að skilgreina skel á stjórn lína, eins og hér. Þetta er skipun. Þetta segir hlaupa bash og þá hlaupa handriti mínu í Bash. Sem mun hafa forgang yfir specifier línu, og þetta hefur eiginleika sem gerir þér kleift að sjá fyrir mismunandi pathnames. Ef þú gefur bara skipun, the stýrikerfi mun líta fyrir þessi stjórn á ýmsum stöðum. Ef það er í boði, það ætti að finna það. The tölva vilja finna Bash hvar það er staðsett og keyra það, svo þú þarft ekki þá að hafa áhyggjur óður í hvar það finnur það. Það eru hugsanlega önnur áhyggjuefni hér, eins og ef það er meira en 1 útgáfa af Bash, sem er mögulegt en þó ólíklegt. Svo er það önnur leið til að takast á við þessa hluti. Specifier línur geta hringt í hvaða skel. Þeir geta líka hringt önnur en skeljar hluti. Dæmi sem ég hef hér eru sed, sem er læk ritstjóri; awk, sem er mynstur vinnslu tungumál; og Perl, mjög mjög þróuð forskriftarþarfir tungumál. Ef þú setur specifier línu gefur til kynna eitt af þessum verkefnum í upphafi, það mun fara beint inn í þessi forrit frekar en að byrja í skel. Þessir programs hafa takmörk getu þeirra. Perl er mjög hæfur. Sed er ritstjóri. Það getur gert hluti út því einfaldlega að breyta. En það getur verið erfitt að forrita það. Auk þess, sem liggur í rök og dót til að handriti er annaðhvort ómögulegt eða ruglingslegt. Svo í þeim tilvikum, með AWK eða sed, er það, að minnsta kosti í minni reynslu, æskilegt að skrifa skel handrit og kalla awk eða sed úr skel handrit frekar en að hringja awk eða sed sem handritið specifier línu. Perl er mjög fjölbreytt tungumál, eins og ég sagði. Þú getur ekki keyrt gagnvirka skipanir í perl, sem þýðir að þú getur ekki próf hluta forskriftir sem þú ert að þróa því að keyra þá gagnvirkt. Hins vegar er það afar hæfur tungumál og hefur þróast í mjög mikið notaður. Það er bara lítill hluti af parenthetical athugasemd um að specifier línum. Í öllum eða flestum formum af Linux - aftur, ég get ekki verið viss það er allt - og í Mac OS, ef þú slærð CNet þú færð tcsh, og ef þú skrifar SH þú færð bash. Þeir voru að reyna þar til að gefa þér fleiri háþróaður útgáfa af þessum skeljar, en það getur verið ruglingslegt. Ef þú skrifar handrit með tcsh eða Bash lögun á meðan að hringja CNet eða SH og þá reyna að keyra það á tölvu sem er ekki með tcsh eða bash, þú gætir fengið nokkrar villur ef það eru skipanir í það sem þeir skeljar kannast ekki. Að auki getur þú hefur kallað upp skel á þinni tölvu kalla það sem SH eða CNet og þá fá fleiri háþróaður skeljar. Þú getur ekki einu sinni hugsa um þá staðreynd að þú ert að nota fleiri háþróaður skel. Þannig að þetta er möguleiki pitfall. Hvernig er það þekkt að ef þú skrifar SH þú færð Bash, ef þú skrifar CNet þú færð tsch? Það eru hlutir í þessum tölvum kallast tenglar sem getur tengst að skrá nöfn að vísa til sama. Það getur annað hvort að vera 2 nöfn fyrir sömu skrá eða skrá sem Tilgangurinn er að vísa í aðra skrá. Þeir eru kallaðir harður og táknræn tengsl. Við munum ekki vera að fara inn í það aftur í dag. Það kann einnig að vera aðskilin skrár - 1 skrá SH, 1 skrá Bash - en þeir báðir keyra bash. Þá er það annar undankeppni hér. Ef þú ert að hringja eitt af þessum skeljum af öðru nafni, þú gætir held að þú vilt fá sömu virkni og að kalla það öðru nafni. Jæja, sem í raun er ekki endilega satt. Þessar skipanir geta skoða nafn sem þeir voru kallaðir og þeir geta, á grundvelli þeirrar nafn, haga sér á annan hátt. Það kann að vera vandamál af því að reyna að vera í samræmi við staðal. Sumir af þú mega hafa heyrt um POSIX staðlinum eða öðru, kannski aðra eiginleika. Þetta er hægt að velja stundum með stjórn lína rifrildi eða með því að setja skel breytur. Kalla það sem SH eða bash getur raunverulega leitt til mismunandi framkvæmd jafnvel ef það er sama skráin sem þú ert að framkvæma. Annar hlutur til íhuga er að jafnvel ef annar tölva hefur tcsh eða Bash, ef þeir eru ekki tengd eins og þeir eru á þinni tölvu ef þú ert með Linux eða Mac OS heimamaður tölva, þá aftur þú munt fá skel sem þú kallar SH eða CNet, ekki sá sem þú might vilja. Núverandi Bourne skelin aukahluti minni en í Bash en framhjá þeim í upprunalegu Bourne skel. Sem afleiðing af því að, jafnvel núverandi Bourne skel, SH, jafnvel þegar það er ekki bash, líkist C tungumál meira en C-skel gerir. Það var ekki satt þegar C-skel var fyrst búið til, en það hefur þróast þannig. Þú gætir tekið eftir hér að öll þessi skel nöfn nema fyrir Bourne skel hafa eitthvað til kynna hvaða skel sem þeir eru - CNet, Bash - en Bourne skel er bara SH. Hvers vegna? Það var upprunalega skel. Það var skel þá, ekki í skel, og þar sem það var skel, það var engin ástæða til að aðgreina það frá öðru skel. Svo er það hvers vegna það hefur að nafn og gerir enn. Þessi toppur hér er lína úr lykilorð gagnagrunninum fyrir reikning sem ég hef þar á annarri tölvu. Ég ætla að reyna að fá það nafn svo þú getur séð að hluta í lok, skel. Lykilorðið gagnasafn heldur tenging eiginleikum fyrir alla notendur. Í upphafi er username, sem þú getur séð síðustu 2 stafina minn núna. Reitina hér eru aðskilin með ristill. Síðasta sviði, eins og þú sérð, er bin / tcsh, skel. Það er skel specifier. Það er eitthvað áhugavert hér. Þegar Unix var fyrst þróað, það var aðeins 1 skel, þannig að það var ekkert val þar. Svo hvers vegna did þeir leyfa sviði í lykilorð gagnagrunninum til að tilgreina skel? Ég veit ekki, en það er heppinn að þeir gerðu. Það er frekar erfitt að gera breytingar á gagnagrunninum lykilorð sniði því margir programs vísa til snið og þyrfti að endurskrifa. Það er felicitous eða fortuitous þróun sem þeir með akur þann. Þannig að lykilorð skrá lína er notuð á öllum Unix og Linux tölvum svo langt sem ég veit. The Mac hefur eigin kerfi sitt. Það hefur reyndar lykilorð skrá með línurnar í því formi, en það er ekki þar sem notandinn einkenni eru skilgreind. Annar parenthetical athugasemd þar. Ef þú ert að hringja í skel, hægt að kalla það sem undir-skel af núverandi skeljar þínum. Þannig að ef ég fer hér, við skulum fá losa af þessum hlutum. Hér er ég í C-skel. Sem breytu, sem nákvæmlega greinir í skel mína, reyndar er ekki alltaf áreiðanleg leið til að ákvarða hvað skel þú ert að keyra, en í þessu tilviki sem það er. Hvað ef ég gerð bara - Nú er ég í Bash. Sumir hlutir eru að fara til vera the sami. LS segir mér boðorð mín. Ef ég er fresta heim til mín C-skel, LS, sama. Satt? fg, forgrunnur, aftur til að bash skel mína. pwd, núverandi skrá, aftur til C-skel. pwd, ólíkur skrá - í raun ekki a ólíkur skrá í þessu tilfelli. Það er í sömu möppu. Segjum að ég vil kalla skipun hér: Hvar Er. Hvað þýðir það að gera? Það segir mér hvar LS stjórn, sá sem gefur mér skrá skráningu, er staðsett í LS. Förum aftur til að bash skel. Skulum reyna það sama. Hmm, áhugavert þarna, þar sem: stjórn fannst ekki. Hvers vegna er það? HVAR stjórn er byggt á C-skel. Þetta er ekki stjórn sem þarf að lesa í að minni frá einhvers staðar annars og framkvæma. C-skel rekur það með því að flytja framkvæmd að hluta eigin númer þess og það er ekki í Bash skel. Svo Bash, ekki hafa svona innbyggt í stjórn, lítur út fyrir það, er ekki að finna það, og við færð villu. Svo þar höfum við bash skel keyra undir C-skel, og við köllum að undir-skel. Og réttlátur í tilfelli þú ert forvitinn, bash skel hefur sinn hátt til að finna skipanir. tætt er átt við þá staðreynd að það er hægt að framkvæma hraðar, að stofna hraðar. Það er einn af the aukahluti byggð á sumum þessara skeljar. Bourne-gerð skeljar eru valinn fyrir forritun. Þeir hafa mannvirki stjórn eins lykkjur, skilyrt yfirlýsingar, tegund af skipunum sem þú gætir notað í forritunarmál eins og C eða hvað tungumál. Kannski þú ert að forritun í Java eða hvað. Skeljar höfum þá líka. The Bourne-gerð skeljar, sérstaklega Bash, hafa meira og þeir eru hannaðir með meiri sveigjanleika. Bash skel hefur fylki. Upprunalega Bourne skelin gerir það ekki. Svo hægt verði töluvert hagstæður fyrir forritun. C-skel raunverulega hjartarskinn hafa fylki en ekki hafa a einhver fjöldi af þessum aðgerðum. The Bourne-gerð skeljar mun framkvæma hraðar ef þeir hafa ekki eiginleika ætlaðar fyrir gagnvirka notkun. Þú hleður það niður fyrir einn tilgang, þetta hleður þeim niður fyrir annan tilgang. Það er að málamiðlun þar. Þessir eiginleikar sem eru ætlaðir fyrir gagnvirka notkun eru í raun lítið eða ekkert fyrir forskriftarþarfir. Það er hægt að nota gagnvirkan undir-skel alveg eins og sá sem ég byrjaði þar að prófa skipanir sem þú ætlar að nota í handriti. Það er það sem þú getur ekki gert með perl. Þú getur gert það með skeljar. Jafnvel mannvirki eins fyrir lykkjur og svo framvegis hægt að keyra gagnvirkt. Þeir eru stundum gagnlegt að hlaupa gagnvirkt, en líklegra að þú ert að nota þá til að þróa handrit. Samheiti. Þetta er að fara til að vera um C-skel. Saga vélbúnaður þar sem þú færð til baka til fyrri skipanir eða hlutar af þeim sem þú hefur keyrt nú þegar. Aftur, um C-skel, sem Bourne skel og Korn skel hafa þetta, en ég ætla ekki að fara að fá inn í þá. Svo hér eru nokkrar gagnlegar samheiti sem ég hef. Í stað þess að ls - það er algengt stjórn - réttlátur tegund l og sparað þér 1 staf. LS með ýmsum möguleikum, öllum þeim vinna. Athugið að þeir skilgreiningar gæsalappa. Í þessum tilvikum eru tilvitnanir ekki nauðsynlegt. Ef þú getur skilgreint þau samheiti án gæsalappa, það vildi samt vinna. Þeir eru mælt. Það eru aðstæður þar sem þú getur ekki notað tilvitnun vegna þess að þú vilt eitthvað að gerast, sem vitna myndi koma í veg. Stundum er hægt að vitna í hluta af skilgreiningu en ekki minna en það. Það er einnig almennt mælt með að nota einn quotes frekar en gæsalappa. Gæsalappa hafa áhrif á breytilegum skilgreiningum, einkum veldur þeim að vera metin frekar en að stöðva það. Hvers vegna vildi að við viljum stöðva mat? Og hvernig vitna gera það fyrir okkur? Hér er stjórn sem þú gætir fundið áhugavert. 'LS g *' g *, eins og þú veist líklega, er algildisstaf tjáning fyrir alla skrá nöfn sem byrja á g. Ef ég skrifa bara í stjórn LS g *, ég fá lista yfir öll þessi nöfn í núverandi möppu mína. Ef ég skilgreina sem samheiti eins og það er hér með gæsalöppum, það mun hlaupa þessi stjórn í núverandi möppu þar sem þú ert að keyra það. En ef þú keyrir alias skilgreiningu án gæsalappa, það mun meta algildisstaf g * þegar það rennur þetta skilgreina stjórn. Svo skilgreiningu á alias verður LS fylgt eftir lista yfir skrár í möppu þar sem samheiti skipun er keyrð, óháð því hvar þú ætlar í raun að keyra skipunina. Þetta er ekki mikið notað, og einn vitna í veg fyrir mat á stjörnu. Þannig að þú færð bara skilgreiningu vera LS g *. Svo þegar þú keyrir dulnefni LGS, setur það þá út. Nú eru engar tilvitnanir, og það mun meta stjörnu þegar þú keyrir alias stjórn. Svo er það eitt. Gæsalappa myndi hafa þessi sömu áhrif hér, en það eru önnur mál sem gæsalappa myndi ekki virka svo vel. Hér er annað. Þú gætir vita grep skipunina. The grep skipunina er hægt að nota til að skanna skrá fyrir línur sem hafa ákveðna strengi. Svo skulum við fara yfir hér og ég ætla að loka frá Bourne skel mína. Allt í lagi. Hér er skrá. Skulum segja að það er grep ABC strengi. Það er það. Ef ég grep zddd, fæ ég ekkert. Allt í lagi. Svo það finnur band, það skýrslur, það er ekki að finna, það er ekki frá því. Það framleiðsla hvaða línu sem hefur að strengur á það. Það eru alls konar möguleikar hér, sem þú getur fundið í skjölum. Hér er ein leið til að gera það. Hvað um þetta einn, alias grabc 'grep abc'? Það er að fara að fela 1 rök þegar alias er skilgreint. Þannig að ef ég geri það hér, nú ef ég grabc, nú alias inniheldur meira en einföldum stjórn. Það hefur einnig þau rök. Svo langt sem virkar. Ég hef aðra stjórn hér, þetta einn, þannig að þeir eru mismunandi strengir í það og sýna að þetta er ekki að finna neitt þar þar sem það passar ekki. Hvað ef ég vil fela í alias skilgreiningu skrána sem ég ætla að leita og ég vil gefa sem rök alias strenginn sem ég er að leita að? Ég gæti langað til að segja abc sem rök til alias mitt, en alias þegar ákveðið skrána. Og það er þar sem þessi mál koma inn Tilkynning hér höfum grep eins og áður. Við höfum á skrá hér, strengi. \ ^, Eins konar undarleg tjáning, hygg ég, ef þú hefur ekki séð þetta áður. Upphrópunarmerki er hluti af sögu C-skel vélbúnaður. Það getur muna fyrri skipanir, getur það muna rök að þeim skipunum og svo framvegis. Saga vélbúnaður er notaður sem hluti af aliasing. Ef þú tilgreinir línu eftir upphrópunarmerki, það mun vísa til þess línu í sögu listanum, sem við munum ekki vera að fá inn núna þar sem það er allt annar umræða. Það er hægt að tilgreina hluti af línu. Svo 03:02! Myndi vera annað rök stjórn númer 3. The Caret hér í þessari tjáningu stendur fyrir fyrstu rök. Ef þú gefur það ekki vísbendingu um hvaða legg þú ert að vísa til, það er átt við strax fyrri stjórn, og Caret er tákn fyrir fyrstu rök. Því það er Caret og ekki tala, þú þarft ekki að nota í ristli, svo ^ þýðir fyrsta rifrildi við fyrri stjórn!. Smá ruglað hérna. Í þessu tilfelli, þegar þú notar þetta sem samnefni skilgreiningu, saga tilvísun vísar aftur á skipununum sem alias er notuð. Þannig að þetta er að fara aftur 1 stjórn sem saga rekstri, en sem samnefni aðgerð sem hún vísar til skipuninni sem þú vilt slá, segja, grstrings_file. Við höfum að vitna hér í það. Hvað er sviga fyrir? Í þessu tilviki, eins og annars staðar, gera við viljum ekki að framkvæma sögu vélbúnaður á meðan að skilgreina alias. Ef við ekki hafa sviga þarna, skel myndi draga í fyrstu rök af stjórn rétt áður en það hljóp þetta alias stjórn, sem við viljum ekki. Við viljum þetta að vera byggð inn á alias stjórn til að hringja í rifrildi síðar. Einn quotes gera flýja ekki upphrópunarmerki, sögu tilvísun. Kannski vita tjáningu flýja þýðir að breyta merkingu eitthvað. Í þessu tilviki, þýðir það að hætta að eitthvað af því að hafa sérstaka merkingu. Sérstaka þýðingu upphrópunarmerki er saga. Flýja og það virkar ekki að merkingu. Vitna gera það ekki, sviga gerir. Þannig að við erum í raun að nota 2 stigum sleppi hér. Ég ætla að færa þetta skipun í öðrum glugga án þess að slá það með því að nota þessar klippingu aðgerðir sem þú getur fundið gagnleg. Eitthvað annað hér sem ég skal sýna þér. Ef þú skrifar bara alias án rök, segir það þér allar röksemdir. Þetta er fullt af nöfnum sem ég hafði þegar hér auk þeirra sem ég hef verið að nota hér í dag. En ef ég gerð bara með nafni samnefni, segir það mér hvað það þýðir. Takið eftir að tilvitnanir eru farin og sviga er farinn. Þessi strengur hér er afleiðing þeirrar alias skilgreiningu, og nú hefur það bara! ^ í það. Þetta er að fara að líta í skránni strengi fyrir neitt. Svo ef ég grstrings_file strengi, gerði ég ekki gefa það neitt að leita þar, en það er útlit í strengi. Það var ekki að finna orð strengi í skrá strengi, en það er að finna abc. Og það er ekki að finna það. Svo hér erum við að gefa rök sem smellir inn í skilgreiningu á alias, sem er sett inn í það. Það er þar sem þessi mál koma frá. Þú getur notað fleiri en 1. The Caret er tákn fyrir fyrstu rök. Ef þú vildir nota annað rifrildi, myndir þú þá segja: 2. Það er engin sérstök tákn fyrir seinni rök. Og vegna þess að þú ert að nota tala, vildi að þú þarft að nota ristill. Það er hins vegar, annar kostur hér. The dollaramerki stendur fyrir síðustu rök. Og vegna þess að þetta er tákn, getur þú sleppt í ristli. Þannig að það væri síðasta rifrildi í listanum. Og það er líka þessi. Stjarnan þýðir allir, þannig að þetta er heill rök lista, og aftur, getur þú sleppt í ristli því það er ekki tala. Ég vona að þú ert allur að fylgjast allt þetta. Saga vélbúnaður geta farið aftur til fyrri línur í sögu listanum. Þú getur gert þetta í alias skilgreiningu. Ég hef aldrei séð þetta gert. Það myndi hafa þau áhrif að draga úr fyrri skipanir úr sögulistanum þegar þú framkvæma alias, sem gæti verið mismunandi skipanir eftir því hvenær og hvar sem þú framkvæma það. Hugsanlega gætir þú vilt að draga út slíka tilvísun bara að vita hvað á gengur eldri stjórn var. Ég hef aldrei séð þetta gerast. Ég geri ráð fyrir að einhver gæti langað til, en þetta er mjög ólíklegt. Það er annar hlutur hér. Ef þú notar þessi saga-gerð tilvísun, þá aðeins rök sem það er svo tilvísun eru notuð. Ef þú ert með alias skilgreiningu sem ekki nota sögu-gerð tilvísun, ef það verður bara byrjunin á stjórn og þú hefur frekari rök, þá allt sem þú setur á eftir að verður bætt við stjórn. Í þessu tilviki, sem dæmi I gaf bara það, sem notuð eru við fyrstu rök; vér höfum ekki hagnýtt allir aðrir. Ef önnur rök hefðu verið gefin á the stjórn lína, myndi hún ekki notuð. Þannig að ef þú ert að nota sögu tilvísun yfirleitt, þá verður þú að nota það til að fá hvaða rök. Það er annar hlutur hér vil ég bara að nefna, að hluta parenthetically, nefnilega að þessi saga kerfi með upphrópunarmerki fer aftur í upprunalegt C-skel. The tcsh kynnti sögu starfsemi sem nota konar skipanir og strengi frá ritstjóra, annaðhvort Emacs eða vi. Persónulega álit mitt er Emacs er miklu auðveldara að nota í þessum tilgangi jafnvel ef þú notar vi reglulega að breyta þinni. Það eru ýmsar Emacs skipanir sem eru nú framleidd til sögu. Control P fær fyrri línu í sögu listanum. Annar Control P mun fá þér einn fyrir það. Ör upp hjartarskinn the sami hlutur. Control N fær næsta skipun ef þú hefur þegar skrunað aftur nokkrar leiðir. Down arrow gerir það líka. Hægt er að færa vinstri til hægri með örvarnar og ýmsum öðrum hlutum. Þetta er hægt að gera nota af the sögu vélbúnaður miklu auðveldara en að nota upphrópunarmerki setningafræði, en þú myndir ekki nota það í alias skilgreiningu. Við munum fara yfir að sumir annar tími. Breytum. Þú veist hvað breytur eru í forritunarmál. The skeljar hafa þá líka. C-skel notar skipunina sett til að úthluta breytum, svo sem setur breytilega A við gildið b - eins og ég sagði, ónýt skilgreiningu heldur á því hvernig þetta er notað. The setja stjórn mun búa til breytu ef það er ekki þegar fyrir hendi. Jákvæðu breytur fyrir skel forskriftir geta talist breytur, en notkun þeirra og reglur um þá eru nokkuð mismunandi. Þú getur ekki úthluta gildi til $ 1 í tengslum við handrit. Þú þyrftir að skilgreina nýja breytu í þessu skyni ef einhver ykkar vildi. Sláðu sett án rök og þú færð lista yfir allar skilgreindir breytum. Og við skulum komast yfir til annarra skel mína hér og sjá hvað við fáum ef við gerum það. Nokkuð langur listi þar, ekki satt? Fletta upp smá. Horfðu á allt það. Sumir af þessir hlutir eru skilgreindar sjálfkrafa af skel. Skelin skapar breytu og gefur það gildi. Sumir þeirra eru skilgreind af skel, en þá skilgreina af notanda í samræmi við óskir hans. Og sumir þeirra eru búin til af notanda eftir því hvað hann er að gera þann daginn. Það er bara sett án rök. Það er undarleg lögun hér á þetta. Það verða að vera annaðhvort bil milli samasem merkið og breytu nafninu og gildi eða rými á báðum hliðum samasem merkið, eins og í þessu einn. Þetta mun ekki virka, og þetta raunverulega er gild stjórn en það mun ekki gera það sem þú ætlar. Að stjórn mun vinna því ef þú bara segja setja og breyta nafni með engin samasem merkið eða stilla og breytilegt nafn með samasem merkið og ekkert gildi, það mun láta breytu til núll gildi. Svo sett a = er gild stjórn. The setja stjórn má skilgreina meira en 1 breytu á sömu línu. Svo þessi skipun hér hefur áhrif að skilgreina bæði A og B til núll gildi. Sennilega ekki það sem þú vilt. Þetta hér, og fyrr, mun leiða til villu af því að = B er ekki gilt tjáningu. A breytu nafn má ekki byrja með samasem merkið. Og það eru þessir frekari hlutina hér. The ristill voru notaðar til að velja rök sögu línum, og þeir geta vera notaður - og ég ekki fara inn áður - til að breyta þessum hlutum. Þau geta einnig verið notuð til að breyta skel breytum. Þetta hér, $ a, hefur gildi. : R mun taka burt framlengingu. Í framhaldi verður nokkuð eftir punkt, punktur og eitthvað eftir það í lok skrá, aðeins í lok listanum eftir síðustu rista. Þannig að ég hef það hér. a er það. Það mun falla. O. Ef það er engin ending, aðeins pathnames eftir síðustu rista, mun það ekki hafa nein áhrif. a: H, sem breytu tjáning, mun taka af síðustu þáttur af directory listanum, aftur, bara eftir síðustu rista. Svo / a / b / c verður / a / b, en þetta er breytt vegna þess að þátturinn eftir listanum er núll. Hér er eitthvað sem einnig ég vil leggja áherslu á. Þessar undankeppni leita ekki fyrir tilvist þessara skráa. Þeir líta bara fyrir strengi. Þeim er ætlað að vinna skrá nöfn, pathnames, en þeir geta vera notaður á hvaða band jafnvel ef það er ekki skrá nafn. Og þeir líta ekki fyrir hendi, þannig að ef það er engin skrá, / a / b / c, þetta mun enn vinna. Hvort sem það er af allir nota er önnur spurning, en það vilja enn vinna. Breytur eru mismunandi í The Bourne skeljar. Við munum komast að því síðar. Dollaramerki má slapp bara eins upphrópunarmerki og stjörnu. Dollaramerki má slapp með sviga eða einn vitna. Gæsalappa hafa stakur áhrif í öllum skeljum neyða mat á dollaramerki breytilega tjáningu. Þannig að ef það er verið að slapp einn veg, í tvöföldum gæsalöppum getur haft áhrif að valda því að vera metin samt. Þetta er svolítið ruglingslegt. Ef það eru mörg stig af sleppi, svo sem einn vitna innan gæsalappa eða gæsalappa inni einn vitna, ættir þú að prófa að sjá hvað mun gerast til a breyta ef þú ert að nota einn. Þessir 2 aðstæður - tvöfaldur inni í einum, einn inni í tvöfaldur - ekki endilega gefa þér sömu niðurstöðu. Breytur, bundnum C-skel breytur. Breytur eru einnig breytur í C-skel, og þeir eru líka breytur í öðrum skeljar líka. Í C-skel, eru þeir greinilegur setur. Það sem ég var að segja áður eru um skel breytur. Breytur eru sérstakt sett af breytum að undanskildum nokkrum breytum sem við köllum bundið breytur, sem eru mjög mikilvæg og við munum fá í þeim síðar. Breytur eru sjálfkrafa liðið á að skeljar eða skipanir sem eru rekin úr skel. Önnur atriði eru það ekki. Skelin breytur eru samheiti ekki. Breytur eru. Það er þess vegna sem við köllum þá Breytur, Hugmyndin er sú að umhverfið nær fortíðinni bara núverandi skel. Þau er hægt að nota til að skilgreina hlutina fyrir skipanir. Hér er dæmi. Prentari, LPDEST. Báðir þessir breytur geta skilgreina prentara sem stjórn vilja nota til að prenta hluti. Ef þú ert með marga prentara í kring, getur þú vilt setja það sem þú vilt. Ástæðan sem við höfum 2 breytur er að mismunandi sett af stjórn voru skrifaðar nota þessar mismunandi breytum. Þú gætir gefið þeim mismunandi gildum. Líklegast að þú munt gefa þeim bæði sama gildi. Þessir hlutir vinna því að skipanir sem gera prentun voru forrita til að kanna gildi þessara stærða. Ef forrit voru ekki skrifaðar svona, ef það voru skrifuð til að gera eitthvað annað, breytan væri óviðkomandi. Svo að stýrikerfið er ekki að leita að þessum breytum hvert skipti sem þú átt við prentara. A stjórn sem gerir prentun er að leita að þessum breytum ef það er forritað þannig. Þessar breytur eru oft skilgreind í frumstilling skrá en ekki endilega. Er hægt að skilgreina þá á the stjórn lína. Þeir mega vera skilgreint í stjórn. A stjórn sem keyrir eitthvað gæti hafa eigin val sitt á breytum - breytur sem eru einstök fyrir tiltekinn hugbúnaðarpakka, til dæmis. Þeir verða skilgreindar þegar þú keyrir þessi pakki. Hvernig eru þessar breytur framhjá undir-skel? Þegar undir-skel er skrifað, er það ekki skrifað inn í þessi svæði. Flatarmál undir-skel sem er varið til umhverfið breytum er ekki skrifað af sub-skel, það er skrifað með afritun. Þegar þú keyrir venjuleg stjórn, svo sem þessar skipanir til að prenta eða hvað, þeir byrja á því að búa til nýja skel. Skel skapar skel og þá birtist hluti af því með skipuninni sem þú ert að keyra, sem er svolítið ruglingslegt, en það er hvernig þessar skipanir fá umhverfið breytum að þeir vísa síðan til síðar. Skipunin hér að skilgreina breytu setenv. Það er hvernig þú skilgreinir það. Það er 3 þættir: setenv Breytilegir, gildi. Ef þú bara setenv án rök, hvað þú færð? Listi yfir allar þessar breytur. Aftur, þess 'a ágætur langur listi og í þessu tilfelli, eins og í öðrum, þessar breytur eru skilgreindar mestu með rekstri innskráningu mína af skel sjálfri fremur en öllu sem ég gerði. There 'annar stjórn hér, printenv. Sem prentar einnig út umhverfið. Eftir þessu síðasta sem hér, ritstjóri = vi. Sem segir að ef ég er að nota eitthvað sem kallar ritstjóri og ég ekki tilgreina ekki ritstjóri og það gerir mér val, getur það gefið mér VI. Hvað ef ég printenv ritstjóri? Það segir mér hvað það er. Rétt áður en að það var breytilegt, minna. Þetta eru vanskil valkosti þegar ég hlaupa the Minna stjórn, sem sýnir skrár. Þannig að ef ég geri það, printenv getur tekið 1 rök eða 0 rök, ekki meira en 1. Það eru aðrar skipanir líka, en við erum ekki að fara að fá inn allt það í dag. Man það voru breytilyklum fyrir skel breytur eins og: H, sem mun falla síðasta stak í pathname, eða: r, sem mun falla í framhaldi. Þeirra sem nú gilda um umhverfið breytum líka. Þeir gerðu ekki að venjast. Það er notað til að vera að þeir gætu ekki breytt. Nú geta þeir verið. Það er einn af the framfarir með þróunar skeljar í gegnum árin. Ég var að segja að skeljar sem hluti af umhverfi og skel breytur í C-skel eru, með nokkrum undantekningum, skarpar setur. Þú getur að koma á umhverfi breyta og skel breytu með sama nafni. Þeir vilja vera mismunandi breytur, þeir geta haft mismunandi gildi. Breyting á verðmæti einn mun ekki breyta gildi hinn. Þessar breytur eru allir metnir með dollaramerki - $ a, $ hvað. Svo hvað ef þú hefur þetta? Veistu hver þú fá? Í prófunum mínum ég fékk skel breytu, en þetta er ekki skjalfest og þú getur ekki treyst á það. Svo ég spyr þig, er að búa til skel og umhverfið breytum með sama nafni góð hugmynd? Nei lagi. Hvað eru þessir helstu undantekningar þar sem umhverfið og skel breytur eru tengd við hvert annað? Það eru þessar 4. Capital bréf TERM umhverfi breyta, skel breytilegum tíma í litlum stöfum, tegund flugstöðina kappgirni. Ég ætla bara að fara að fara yfir hér og ég ætla að gera echo, a gagnlegur stjórn hér, $ TERM $ tíma. Og þar. xterm er flugstöðinni tegund fyrir glugga sem birtast í X Window System. xterm-litur er tilbrigði sem að leyfa mismunandi litum. Hvers vegna eigum við að skilgreina þetta? Hvað er þetta gott fyrir? Skipanir sem endurraða skjáinn eins og ritstjóri senda sérstaka röð, sem kallast Escape röð, í skjáhermi eða glugga til að endurraða það og svo framvegis. Þeir raðir eru mismunandi fyrir mismunandi tegundir af skautanna. Þetta segir það hver sjálfur að nota. Stundum eru mál þar. Þú vilt kannski breyta því. Ef hlutirnir eru ekki að virka, stundum flugstöðinni er stillt vitlaust, þú mega vera fær til að laga það með því að endurskilgreina hugtakið breytu. Í þessum tilvikum, að breyta einu breytu, umhverfi breyta eða skel breytu, ætti að breyta hinn. Ég hef uppgötvað í gegnum reynslu að breyta tíma í hástöfum ekki alltaf breytt skel breytilegum tíma í litlum stöfum. Þetta er padda. Ég veit ekki hvort það er alltaf satt. Flest af þeim tíma það er ekki satt, en það getur verið. Svo ef þú gerir breytingar, bara kíkja. Það er ekki oft sem þú þarft að breyta því gildi, en einu sinni í a á meðan þú gerir. Umhverfi breyta notanda. Aftur, umhverfi breyta hástöfum, skel breytu í litlum stöfum. Þetta er notendanafnið. Það er einungis undir mjög sérstakar aðstæður sem þú vilt til að breyta því. Ef notendanafnið þitt er einhver annar, það getur kastað alls kyns hlutum burt. Heimasvæði, heimasvæði notanda. Aftur, myndir þú ekki vilja til að breyta því. Tilkynningar í öllum þessum málum og sá sem við erum að fara að ná, leið breytu, umhverfi breyta er með hástöfum og bundna skel breyta er í litlum stöfum. Ef þú breytir einn, ættir þú að breyta öðrum. Þess konar bindandi geta ekki komið eins og þú getur ekki binda 2 breytur, Annar en þessi 4, og binding við þessar breytur geta ekki hægt að hætta, þú getur ekki aðskilið þau. Svo þessi 4 pör af breytum eru bundnir. Þeir alltaf verður. Enginn aðrir vilja vera. Þar að auki, væri til dæmis hægt að búa til breytur sem bera sömu nöfn hið gagnstæða gerðum. Þú gætir gert skel breytilegum tíma í litlum stöfum eða umhverfisbreyta TERM hástöfum. Þeir breytur væri óháð þessum paraðar breytur og þeir myndu vera óháð hvort öðru. Ég get ekki ímyndað mér af hverju þú myndir gera það nema þú viljir að rugla fólk. Þetta hér, slóð breytu, þetta er mjög mikilvægt. Annar hlutur hér er að það geta verið tilfelli breyta með svipuðum fyrir pöruð nöfn, sem ekki eru bundnir við hvert annað. Það geta verið breytur, skel og skel, í höfuðborg og litlum stöfum. Byggist á því nafni, þú veist ekki hvort að breytu er skel breytu eða umhverfi breyta, og þeir eru ekki bundnir við hvert annað. Svo að góður af pöruð nöfn felur ekki í sér bundið breytur. Slóðin breytu, sem ég var að sýna áður, er listi yfir pathnames sem skel útlit fyrir skipanir. Skulum fá yfir í þessa glugga hér og við munum gera echo $ PATH, hástafi - umhverfi breyta - echo $ PATH, litlum stöfum - skel breytu. Takið eftir því að listi af möppum er það sama. Þetta eru bundnir. Breyta einum, að breyta öðrum. Í umhverfi breytu þættir eru aðskilin með ristill. Takið eftir að. Skelin breytur eru aðskilin með bilum. Þetta umhverfi breyta er einn strengur. Skel breytu er fylki. The Bourne skelin ekki hafa fylki. Bash gerir, en þetta er nú þegar fastur hluti af skel. Þetta er einum streng og ekki vera fylki. C-skel hafði alltaf fylki. Fylki eru miklu auðveldara að vinna með. Þú getur átt við hluta hennar. Svo echo $ PATH [1] og ég fæ / usr / bin, fyrsta þáttur. Aftur, muna dollaramerki stendur fyrir síðasta þáttur í sögu listanum. Hvað gerist þar? Hann reyndi að finna dollaramerki sem breytu tákn. Ég flýja það. Úps. Það myndi ekki taka það heldur. Sumir af þessir hlutir virka ekki svo vel. Kannski við verðum bara að sleppa henni. Stjarnan vísar til the heild hlutur, en það er það sem þú færð ef þú tilgreinir ekki stak. Önnur leið sem array breytur geta vera handleika, fjöldi staka þar, 7 þætti. Hér erum við að setja pundi skrá þig áður breytu nafninu. Hér er annað. Setja spurningarmerki þar. Það er röklegt gildi. Það gefur til kynna að breytan er til staðar. Það er önnur leið til að vinna með breytum. Sem, við the vegur, þarf ekki að vera fylki breytu. Það gæti verið hvaða breytu. Og ef ég geri, það er engin sem breytu og ég fæ 0. Annar lítill hlutur þarna um breytilegum mati. Aftur til þessa hér, ef fyrir sumir ástæða þú vilja til vinna með þetta frekar en að vinna með fylki, skel breytu, það eru skipanir sem getur aðskilið þetta byggt á ristli. Í staðreynd, ef þú ert að fara að vera að gera þetta í Bash skel hugsanlega, einhvers konar handrit, sem væri líklega hvernig þú myndir gera það. En í C-skel það er miklu auðveldara að nota array. Í Bourne skel, eru breytur úthlutað af einum tjáningu eins og þessa, eins og the vegur þú gætir úthluta breytu í forritunarmáli, og hér það skal vera bil. Það er nauðsynlegt að það verður bara 1 band. Í Bourne-gerð skeljar, eru allar breytur skel breytur. Breytur eru hlutmengi af skel breytum. Þeir eru aðgreindar frá non-umhverfið breytum með því að flytja. Stjórn til að gera það er útflutningur, eins og útflutnings prentari. Ef við værum að skilgreina slíka breytu, ef við vildum prentun skipunina til að finna það, það þyrfti að vera umhverfi breyta, og það er hvernig við gera það einn. Hér það er eitthvað svona ruglingslegt. Þetta mál, útflutningur við umhverfið, dregið af þessu Bourne skel hugtak, og enn að tjáning er notað í lýsingar á C-skel, þar sem ekki er svo stjórn sem útflutnings. Ef þú segir bara útflutning af sjálfu sér, þú færð lista yfir flutt - Þannig að ef ég bara ekki flytja hér, ekkert sem heitir. Jæja, þar sem við förum. Þetta, við the vegur, eru einnig skilgreind af skel. Ég vissi ekki að skilgreina eitthvað af þessu af mér. Skelin er alls konar hluti af sjálfu sér. Það ætti að gera hlutina sjálfkrafa. Í Bash eða Korn skel, hægt að keyra skipun eins og þetta, sem mun bæði gefa breytu gildi og flytja hana í 1 stjórn. Í Bourne skel þeir verða að vera aðskilin skipanir eins flytja. Hér er annar þáttur sem er ruglingslegt. The setja stjórn í C-skel skilgreinir breytur og án rök segir þér hvaða gildi breyturnar 'eru. Í Bash skel, sem sett stjórn án rök hjartarskinn the sami hlutur, en með rökum það gerir eitthvað alveg öðruvísi. Svo þetta eru ýmis rök hér. Sumir af þessir ert Breytur, sumir þeirra eru skel breytur. Öllum þeim er skel breytur raun. Sumir af þeim sem eru Breytur. The setja stjórn með rökum er hægt að nota til að reka á jákvæðu þáttum í handriti, sem er leið til að fá þá alla í einu. Við getum í raun ekki fara inn að í dag. Það er einnig hægt að nota til að breyta skel hegðun. Sérstaklega í Bash eru breytur sem ákvarða hvernig skel hegðar sér. Þá líka bara þetta eina skipun sem þú gætir séð, þessi skipun. Typeset eftir breytum og breytilegum tegundum er notað í Korn og Bash skeljar. Það er ekki nauðsynlegt, en það er hægt að nota til að takmarka þau gildi á breytum, sem getur verið gagnlegt til að koma í veg fyrir villur, og það er nokkuð algengt. Þannig að ég ætla bara að minnast á að í tilfelli þú sérð það einhversstaðar. HVAR stjórn. Man ég nefndi áðan er þar stjórn í C-skel, sem getur sagt þér hvar stjórn pathname. Hér er stjórn skipta. Þú ættir að finna á lyklaborðinu einhverstaðar staf sem lítur svona út. Staðsetningu á lyklaborðinu er að fara að mismunandi. Við höfum kallað það backquote. Það er óður í the stærð af a vitna. Það fer frá efri vinstri til að lækka rétt. Hér á Mac lyklaborðinu mínu það er í efri vinstri-hönd horn. Að eðli er hægt að nota til að keyra skipun innan stjórn. Ef þú ert með tjáningu inni backquotes, að tjáning er stjórn, það er að keyra. Framleiðsla þess stjórn er síðan skipt út fyrir allt backquote tjáningu inni lengri stjórn sem þá rekur með þessi framleiðsla sem hluta af streng þess rök og svo framvegis. Hér er stjórn sem notar það. Skulum sýna aðgerðina hér. Við skulum fara upp hér, taka út backquotes. Control A fær mig til the byrjun af the lína við Emacs útgáfa setningafræði. Svo langt pathnames er það hvar er, en þegar ég geri það svona, innstungur það þá í þeim lista af pathnames í stað allri þessari backquote tjáningu og keyrir LS-l á þeim. Konar þægilegt, ha? Svo er það einn snyrtilegur hlutur. Það er hvernig backquotes vinna. Nú skulum fara niður smá lengra. Þetta eru samheiti. Ég nota reyndar þetta. Ég ætla að reyna að fá þetta í með 1 Breyti aðgerð. Allt í lagi. Nú skulum sjá hvernig þær skilgreiningar kom út. alias lwh segja mér hvernig það er skilgreint. Eftir það er bara þetta, en ytri markaðarins hafa verið teknar burt og upphrópunarmerki er tekið burt. ! *, Heill listi af öllum rökum. Í alias skilgreiningu eiga aftur að þar sem ég nota þetta. lwh KSH bash. Allt í lagi. Sjá hvernig það virkar? Það sparar mér vélritun. Við skulum fara upp a lítill hluti bara til að nefna eitthvað annað hér. Tilkynning hér þessar mismunandi skeljar. Ég ætti að hafa getið þetta áður. The CNet hefur 2 hérna og svo er / bin / tcsh. Við gátum að koma með öðrum hætti að þeir eru í raun þau sömu skrá. Man ég var að segja ef þú slærð SH þú færð bash. Sláðu þessu og þú færð þetta. En þeir eru ekki tengdir. Þeir hafa einn sjálfur þar. Og þetta er ekki góður af skrá sem hægt er að hringja annað. Þannig að þeir eru aðskilin skrár, en C-skel sjálfur eru þau sömu skrá. Back niður hér, hitt hér, þetta alias, huga að er í gangi þessa skipun, skrá. Sem alias keyrir það. Skrá segir þér hvaða skrá. Svo fwh KSH bash. Allt í lagi. Það er the framleiðsla af the skrá stjórn. Ég veit ekki hvort þú veist hvað þetta þýðir hér, Mach-O alhliða tvöfaldur með 2 arkitektúr. Það eru 2 mögulegar gerðir örgjörva í Mac, og sumir forrit voru skrifuð til að geta keyrt með bæði, og skrá stjórn getur ákveðið að, svo það er það sem þetta þýðir. Báðar þessar skrár voru skrifuð svona. Svo sjáum við hvernig alias virkar, sjáum hvernig backquote virkar, við sjáum hvernig the raunverulegur skrá LS eða skrá virkar. Þetta gæti ekki vinna. Reyna "þar sem" og "lwh þar". Jæja, við skulum reyna það. þar sem. þar er skel innbyggður-í. Mundu áðan við sýndu að bash ekki hafa þar. Ef þú slærð þar í Bash skel, fá þér villuboð. Það er bara hluti af skel frekar en að vera aðskilin stjórn. Hvað gerist ef ég tegund lwh leita að hvar? Sjá hvað gerist þar. Hljóp þar þar, fékk þessa framleiðsla, og þá reynt að keyra LS sem l um hvar er skel innbyggður-í. hvar er það, en hinar eru ekki til. Ekkert af þessum til, reyndar. Svo það þýðir ekki alltaf að vinna, og það sýnir einnig hvernig sumir hlutir gera ekki alveg hvað þú gætir hafa hugsun. Við skulum fara niður smá lengra hér. Þetta hér er í Bash. Það er einnig stjórn skipta eins og backquote. En ólíkt backquote, notar það þessa breytu stíl. There ert a tala af tjáning sem byrja með dollaramerki, og á meðan þetta eru ekki breytur, þeir láni notkun dollaramerki að gefa til kynna tjáningu af einhverju tagi. Það má umkringdur sviga eða hornklofa eða tvöfaldur sviga, sem hefur öðrum tilgangi. Single sviga hér eru stjórn skipta bara eins og backquotes. Tvöfaldur sviga er í raun tölur aðgerð. Það eru önnur syntaxes, aðrar aðgerðir. Backquote setningafræði er í boði í Bash. Þó, þetta er æskilegt. Það er miklu auðveldara að lesa og það gerir hreiður. Hægt er að hafa inni $ (stjórn) annað stjórn, eitthvað eins og - Ég fá lista þar. Sem myndi vinna ef ég hefði backquote líka. Hvað ef ég vil gera eitthvað eins og - Þú myndi sennilega ekki raunverulega nota þessa skipun, en þetta innri stjórn útskipting bergmál nöfn allra skrám sem byrja á A, þá er þetta einn keyrir LS-l á þeim skrám, og þá er þetta eitt bergmál bara framleiðsla. Þú myndi sennilega ekki gera þetta, þú vilt bara að gera bergmál eða LS, en þetta sýnir hvernig hreiður skipana virkar. Svo bara annar lögun hér.  Ég nefndi þetta áðan, að þegar þú ert þar í C-skel, tegund virkar í Bourne-gerð skeljar til að finna skipanir. Innbyggður-í stjórn, bara það sem ég var að segja það. Skipanir eru hluti af skel, eins og hvar. Þegar skel framkvæmt skipun eins LS, staðsetur það í gegnum the gangstígur, finnur það á einhvern möppu einhvers staðar, les það í minni, skapar nýja skel, les stjórn LS eða hvað inn í skel þar sem Breytur eru þegar staðsett, og þá flytja það framkvæmd til þess. Innbyggður-í stjórn, kóði fyrir viðkomandi stjórn er inni í skel, svo skelin bara byrjar framkvæmd hluta af eigin númer þess. þar er svo stjórn. Það kemur í raun hraðar. Það þarf ekki að lesa neitt í minni, það er nú þegar í minni. Innbyggður-í stjórn alltaf hafa forgang fram yfir skipanir með sama nafni. Skipanir sem eru í möppum í götunni kann að hafa sama nafn, skipanir í mismunandi möppur, skrár í mismunandi möppur. Sá sem verður fyrr í götunni er það sem þú munt fá. Ef það er a innbyggður-í stjórn, þú færð alltaf það. Það er engin leið til að gefa það a lægri forgang en skipun í braut. Ef þú vilt fá þessi slóð stjórn, getur þú slærð inn fullt pathname. Ef það væri stjórn þar í götunni einhvers staðar, þú gætir tegund / bin / þar og þú vilt fá hana. Ef þú vilt ekki að slá alla pathname, gæti þú skilgreinir alias. Í staðreynd, ef þú gafst samheiti sama nafn og the innbyggður-í stjórn, myndi það vinna vegna þess að alias skilgreiningu er metin áður en skel telur að það er innbyggt í stjórn sem ætti að framkvæma. Þá fær þetta svolítið flóknara með nokkrum skipunum hér. Um er að ræða nokkrar skipanir eru í raun innbyggð í stjórn og í götunni. Einn af þeim er echo, stjórn sem ég nota bara smá stund síðan í þeim dæmum. Echo er stjórn í the gangstígur og það er í öllum skel. Þeir gera ekki endilega allt hegða sér á sama hátt. Það var upphaflega skipun aðeins í götunni. Það var byggt í þeim skeljar síðar. Vegna þess að það eru möguleikar sem velta á umhverfið og stjórn lína valkostur, the innbyggður-í stjórn voru skrifuð til að virka sama og stjórn sem hafði verið í götunni, það er ólíklegt að þeir hefðu verið skrifuð svona ef stjórn hefði ekki verið skrifað fyrir braut. Svo hefur þetta aukaverkunum. Saga hennar hefur áhrif hér. Það eru möguleikar þarna. Það er einnig kostur skilgreint sem breytu í tcsh heitir echo_style. Það er ein af þessum breytum sem getur breytt því hvernig sem bergmáli verk. Það eru önnur mál sem þú geta framselja breytu að breytingar á þann hátt að skel rekstur, þ.mt innbyggður-í stjórn, það virkar. Það myndi ekki hafa áhrif á neitt annað síðan aðrar skipanir hafa ekki aðgang að skel breytur, aðeins umhverfið breytum. En skel aðgerðir geta lesið skel breytur. Það mun ekki vinna fyrir CNet. Það er aðeins tcsh. Það er einn af aukahlutum. Þáttun hefur röð þegar það metur metacharacters, þegar það metur breytur, samheiti, sögu tilvísanir. Það er einkum röð fyrir þessum hlutum. Ef það gerir það í tiltekinni röð og fær að eitthvað sem er tjáning á einhverskonar sem þegar hefur verið metið, mun það ekki meta það aftur. Ef það fær það, þá mun það bara fara á stafina. Þannig að ef mat á sumum tjáning eins stjórn skiptingu eða breyta eða hvað gefur tilefni til tjáningar sem þú vilt að aðrir komi metin, sem mun vinna aðeins ef að mat á sér stað síðar í röð. Ég vona ég að vera ljóst að það. Að þáttun röð, aðgerð í C-skel, er ekki það sama fyrir innbyggður-í stjórn eins og það er fyrir non-byggð-í stjórn. Ég er ekki viss um Bash þar. Til dæmis, ef skel breytu framleitt saga tilvísun, það myndi sennilega ekki fara aftur í sögunni. Það myndi bara fá upphrópunarmerki. Í raun getum við bara reyna það út núna. setja a = og við verðum að setja þetta í það. Ó, bíddu. Sorry. Ég gerði þetta í Bash. Mig langaði til að gera það hér. Sjá, svo það var ekki að meta að sagan tilvísun því það var komið langt fram yfir að benda á að meta sögu tjáning þegar það var lagt mat á breytu. Svo er það 1 áhrif þáttun. Og aftur, eru byggð-í stjórn ekki gert á sama hátt. Allt í lagi. Við skulum fara til the næstur einn hér. Þetta er ætlað að vera 1 lína, en það er að gera það auðveldara að lesa. Hvað þýðir það að gera? Þú getur muna að við getum metið stjörnum sem skráarendingu Algildisstafa, og það eru önnur Algildisstafa skráarnafni eins spurningarmerki og krappi tjáning. Svona mat er kallað globbing. setja noglob í upphafi þessa skipun segir gera það ekki. afvalið noglob segir fara aftur til að gera það. Athugaðu að setja glob myndi ekki hafa þessi áhrif. Er í venjulegum tungumál, setja glob eða afvalið noglob virðist vera jafngilt, en hér er það ekki. Það er afvalið noglob. Nú tSetja. tSetja stóð fyrir flugstöðinni setja. Það er ekki notað það oft núna, en áður en windowing kerfi varð laus og þú hefðir einn flugstöðinni, þú gætir þurft að ákvarða tegund. Og ef eitthvað var að koma yfir Ethernet eða af netinu, þú might vilja til að segja að það er vt100. VT100 er góður af a staðall í flugstöðinni fyrirtæki. Það kemur frá desember flugstöðinni. Ef þú bara velja símanúmer - taka eftir því? Þetta gengur til baka a hátt, ha? Þannig að ef við bara tSetja hérna, ef ég bara tSetja, það er endurstilla flugstöðinni minn, en þú hefur ekki séð neitt. Það var í raun ekki breyta neinu. -S Allt í lagi. setenv TERM xterm-litur. Við vitum nú þegar að hugtakið var sett þannig, svo sem ekki að breyta. Það er hvernig við myndum vilja að gera það. En taka eftir því að þessi skipun, tSetja-s, bara framleiðsla þessar skipanir. Það var ekki að keyra þá. Það var ekki keyrt þessar skipanir, það framleiðsla þá. Þannig að þetta er ætlað að framleiða skipanir sem mun þá vera keyrt. Þú manst skipunina í þessi skrá sem ég sýndi bara þú hefðir Q í það. Svo skulum gera það. Q bælir smá framleiðsla, en það skiptir ekki máli hér, eins og þú sérð. Ég ætla bara að gera það til að sýna þér að það skipti ekki máli. Þetta er í backquote setningafræði. Athugaðu að backquote hér, backquote hér. Ég er að sleppa þessum hlutum hér. Þetta eru tilfelli segja það hvað ég á að gera um er að ræða tilteknar tegundir af skautanna - Ethernet, net, velja símanúmer, hvað hefur þú. Það skiptir ekki máli hér því við erum í raun ekki að gera eitthvað af þessum hlutum. Ég ætla bara að sýna skipunina. Ef ég gera þetta með backquote, hvað er ég að fara að fá? Einnig taka eftir hér að þetta ma sett noglob og afvalið noglob, þannig að þeir eru nú ofaukið í skilgreiningunni. Það var ekki alltaf satt, en nú eru þeir með í þessari stjórn. En við skulum sjá hvað gerist ef ég geri það og fara til the byrjun af the lína við stjórna og ég geri það. Allt í lagi, setja: Skipun fannst ekki. Það er góður af skrýtið, er það ekki? sett er vel þekkt stjórn. Það er hluti af skel. setja: Skipun fannst ekki? Hvers vegna er það? Hmm. Jæja, við skulum hugsa um þetta. Það er að keyra backquote stjórn skiptingu, og sem á sér stað á ákveðinn hluta af röð þáttun stjórn. setja er a innbyggður-í stjórn. Svo eftir þann tíma sem það gerir þessi stjórn skiptingu, það er þegar komist yfir benda á að skilgreina innbyggður-í stjórn. Svo það meðhöndlar setja eins og ef það væri stjórn í the gangstígur. Óþarfur að segja, er það ekki að finna það og þú færð villu. Jæja. Það er dæmi um þáttun röð. Og hvað gerum við um það? Taka þetta mjög áhugavert skipun hér, legg. Ég velti því hvað það gerir. Ef þú horfir á handbók - og við skulum gera bara það til að sýna hvernig ruglingslegt þessar handbækur eru - maður tcsh, rugla handbók, finna hluti hér er ekki auðvelt heldur. Hér förum, meta Arg, svo við getum haft 1 eða fleiri rök og það er listi af hlutum þar. Meðhöndlar rök sem inntak í skel og keyrir sem af þessu leiðir skipanir í samhengi við núverandi skel. Þetta er venjulega notað til að framkvæma skipanir búnir til sem afleiðing af stjórn eða breytilega skipta því þáttun á sér stað áður en þessi skipti. Mjög gott. Og hér þeir vísa jafnvel til tSetja stjórn um sýnishorn notkun eins og sá sem ég sýndi bara þér. Nú þarf ég að fá gluggann aftur til góður staður. Skulum fá hérna og við munum sjá að meta er notað rétt fyrir það. Svo við skulum sjá hvað gerist ef við setjum - hér við fara upp með örvarnar til þessi stjórn og stjórna til the byrjun, legg. Allt í lagi, svo það virkar. Þegar þú gerir legg, það tekur það sem kemur á eftir henni og gerir það að skipun. Þetta gerir þér kleift að í raun flokka það tvisvar. Í kaflanum hér keyrir þessa skipun inni í backquotes, fær framleiðsla. Output er ætlast til að keyra eins og þeim skipunum hér eins og þessir á þessum eina og þessu. Svo þessir skipanir eru nú hér í þessari röð, en þetta eru byggð-í skipunum og það getur ekki fá þær strax. Svo við förum að meta, meta velja það upp, byrjar allt hlutinn aftur og aftur, og það virkar. Dæmi bæði backquoting, meta, þáttun, afleiðingar þáttun, og skipun sem er líklega mjög lítið notað til þín nú á dögum. Allt í lagi. Allt í lagi, umask. Við skulum líta á þessa stjórn hér, umask 022. Ég velti því hvað það gerir. Við skulum bara slá umask með ekkert eftir það. 22. Allt í lagi. 022 og gera það aftur. Eins og þú might hafa giska, umask án rök segir þú the straumur gríma; umask með rök sem gerir það að, en það var það sem ég hafði nú þegar. Hvað þýðir 022 meina? Þetta eru hér vernd fyrir a skrá. Þeir ákveða sem er leyft að lesa eða skrifa eða keyrt skrána. Vernd eru líka kölluð heimildir. R stendur fyrir að lesa, W fyrir skrifa, og x, sem er ekki til staðar þar, stendur fyrir framkvæma. Það eru 3 flokkar þar. Síðustu 3 þættir eru í flokki notanda. Þeir eiga við mig, notandann. Þessir 3 hér eiga við hópinn. Skráin tilheyrir 1 hópi, notandi getur tilheyrt mörgum hópum, en ef notandinn er í hópnum sem þessa skrá tilheyrir, þá eru þessir vernd eiga við hann ef hann er ekki notandi. Og þetta er allir aðrir. Þessir flokkar eru ósamrýmanlegir. Notandinn vernd gilda honum, vernd sem hópur um meðlimi hópsins, öðrum en notanda, og önnur vernd gilda aðeins um aðra en notandann og meðlimir hópsins. Ef það er r eða AW eða x, þá þýðir það að vernd er veitt. Ef það er bandstrik, þá þýðir það að það er ekki. Það reyndar eru önnur atriði sem hægt er að setja hér auki þessir, sem ég mun ekki fá inn núna. The umask skilgreinir sjálfgefið fyrir skrár sem þú býrð til. Og eins og grímu, í grundvallaratriðum, segir að það bita sem þú ekki sett. Hvernig hefur þetta orðið bits? Ef þú hugsa um hvert þessara sem áttundakerfi tala, þetta er 1S hluti, þá er þetta 2s, þá er þetta 4S. Svo 0 með 7 mun lýsa hvað samsetningu r er, W 'og X' þú hafa fyrir þessum 3 og þá svipaður fjöldi fyrir þetta og þá fyrir þetta. Svo 022 þýðir 0 fyrir aðra, 2 fyrir hópinn, 2 fyrir notandann. En þetta er gríma. Gríma er það sem þú þarft ekki. Fyrirgefðu. Ég bara gaf þér hlutina í rangri röð. Það er fyrsta 3. Þessir 3 eru, geta þessar 3 er sá hópur, eru þessar 3 hinn. Því miður ég gaf þér þetta í rangri röð. The 0, sem er fyrsta af þeim, ekki sýna gildi, en ef númerið er ekki þar, það er 0. Það þýðir Allir 3 af þessum yrði leyft. Takið eftir að í þessu tiltekna einn, x er ekki leyft. Ástæðan er sú að skel er fær um að ákvarða hvort skrá ætti að framkvæma eða ekki. Þar sem þetta er ekki executable skrá, gerði það ekki láta x. The 2 að skrifa leyfi, annar flokkur hér, einn í miðjunni, er hafnað. Svo aftur, eru þessir hlutir sem hún hafnað. Jæja, x er leyft en það er ekki hér vegna þess að það er ekki executable og tilsvarandi fyrir aðra. Svo er að sameiginleg umask. Önnur algeng einn er 700 - Gefðu þig allt og enginn annar neitt. Og það eru aðrir möguleikar. Ég fer aftur til þess tíma. Notkun sögu sem ég get leitað til baka fyrir það, lwh að þar. Allt í lagi. Svo hér eru þessir skeljar. Bash, eigandinn sem er kerfi reikning, getur gert allt. Hópur og allir aðrir geta ekki lesið eða framkvæma en ekki skrifa. Þetta er ekki einu sinni að leyfa eigandanum að skrifa það. Ef eigandi vildi skrifa það, kerfið reikning, hann þyrfti að breyta vörn fyrst. En aftur, umask stillir sjálfgefna með því að gríma hana, með því að tilgreina bita sem verður ekki sett. Þetta er yfirleitt í einu af frumstilling skrá þína, sem er. Cshrc fyrir C-skel eða. uppsetningu fyrir Bourne-gerð skeljar. Það getur verið annars staðar líka ef það eru aðrar frumstilling skrár í the kerfi. Engu að síður, það er umask. Það er eitthvað svona skrýtið hér, og það er, hvers vegna er það einn stjórn fyrir þetta? Ef ég væri að skrifa þetta, mundi ég gera það breytu, umask = eitthvert gildi. Hvers vegna er það allt stjórn bara í þessum tilgangi? Ástæðan er þetta bara fer aftur til uppruna Unix. Unix var bara Forritunarverkefni hjá Bell Labs í 1970. Fólk fékk bara saman að áætluninni. Þeir ætluðu aldrei það að verða alheims stýrikerfi. Mismunandi fólk skrifaði mismunandi hlutum án þess að hugsa mjög mikið um hvernig þeir ætluðu að nota - frekar sketchy. Og það kom saman eins og þessi, og það er enn eins og að sumu leyti. Svo kemur fram að sögu, og það eru enn þessar ósamræmi og stakur þættir í því. Allt í lagi. Næsta einn hér. Eins og ég skrifaði áðan, C-skel er í raun ekki notað mjög mikið fyrir forritun, Þó að það getur verið. Það keyrir hægar, aftur málamiðlun milli gagnvirka notkun, sem hefur meiri vinnslu þátt en hraða, sem getur gert án vinnslu. Auka möguleika bætt við Bourne skel með Korn og Bourne-aftur skeljar virðist ekki hægja þá niður, og ég veit ekki af hverju það er. Það gæti bara verið betra forritun, en ég er ekki í aðstöðu til að vita. Speed ​​hér í raun er ekki svo stór samningur, en það er getið. Ástæðan er sú að skel forskriftir raunverulega fá nokkuð hratt. Ef það er mikið af skipunum eins og í calculational program, Þú myndi sennilega ekki gera það í skel handrit. Starfsemi eru nokkuð einfalt og augljóst. Þeir sem ég hef upplifað sem eru of hægur falið endurteknar umsóknir hægur skipunum. Fyrr ég nefndi straum ritstjóri sed. Sem stjórn er hægur. Ef þú framkvæma sed mörgum sinnum, munt þú færð hægur handrit, en það er ekki skel sem er hægur. Keyra það í Bourne skel verður ekki mikið hraðar en að keyra hann í C-skel, þó það er kannski nokkur kostur þar. The viðbótar getu forritun, á hinn bóginn, eru verulegar ástæður af hverju þú myndir nota Bourne-gerð skeljar. C-skel hefur stakur eiginleikum við það - sú staðreynd að þú veist ekki hvort breytu er skel breytu eða umhverfi breyta. Það getur verið mjög ruglingslegt. Það er ekki svo auðvelt að skrifa bara byggt á reynslu þinni af forritun í öðrum tungumálum. Ég held að þú gætir fundið Bourne-gerð skeljar meira í samræmi við reynslu þína. Sumir forskriftir, þó getur verið þúsundir línur á lengd. Þeir sem ég hef séð eru notuð fyrir pjatla stýrikerfi. Þeir geta keyrt mjög hægt, en þú verðir ekki þá mjög oft. Það er aðeins þegar þú ert að gera pjatla, og það er bara kerfið framkvæmdastjóri, sem gerir þá hluti, svo það er í raun ekki mikið um málið. Þeir sem eru nokkur hundruð línur lengi raunverulega framkvæma nokkuð fljótt. Að nefna þetta hér, hvað eru þeir aukahluti? Ég hef þegar nefnt nokkur af þeim - fylki, útreikningar, The $ () segð fyrir útreikninga í Bash skel, Önnur tegund af stjórn skipti. Það eru mismunandi tegundir af próf skipanir sem þú getur gert skilyrðissetningar á tilvist skrá eða annars. Endast hér, þessi skipun hér. Hvað þýðir þetta að gera, og hvers vegna vildi einhver að nota það? printenv variablename. Við vitum hvað printenv gerir. Það segir okkur gildi breytu. Og printenv variablename mun ekki segja okkur mjög mikið vegna þess að það er engin sem breytu. Blank. En við skulum gefa það eitthvað mikilvægt. Það er ekki þar heldur. Allt í lagi. Ég held ég skilgreint það aldrei. Skulum athuga bara umhverfið. Þetta er annar stjórn sem þú getur skoða umhverfið. Það er gamall góður ritstjóri, sá sem við sáum áður. Hvað þýðir það að gera? Hér höfum við backquote tjáningu. Mundu þetta er C-skel. Svo printenv Editor mun gefa okkur a gildi af ritstjóri. Það er vi. Og þá mun það setja þessi gildi til breytu A, stillta stjórn. Svo nú ef ég echo $ a, fæ ég vi. Það virðist ekki hræðilega gagnlegur. Þó það hjartarskinn raunverulega hafa tilgang. Þar sem við vitum ekki hvort breytu er skel breytu eða umhverfisbreyta með því að nota dollaramerki mat setningafræði, við getum notað printenv að ganga úr skugga um að það er umhverfi breyta. Þannig að ef það væri skel breytilegum ritstjóri, þetta hefði ekki fengið það. Þetta virkar aðeins með umhverfisbreytunni. Ef það væri skel breytilegir og ég vildi gildi þess, Ég myndi þurfa að finna einhverja aðra leið til að gera það. Ein leið til að gera það væri með því að gera setja og lagnir. Þetta er einn af the metacharacters, sértákn. Það sendir úttak setja eitthvað annað. Við skulum sjá hvað við gætum fundið það. Ekkert. Allt í lagi. Við skulum sjá bara hvað er þarna öll saman. Það var echo_style, sá ég nefndi áður. Jæja, við skulum gera það. Man ég nefndi áður, echo_style ákvarðar hvernig echo stjórn mun keyra. BSD stendur fyrir Berkeley Standard Distribution. Þetta er Berkeley Unix frá 1970. Það er ein af þeim leiðum sem echo geta keyrt. Setja echo_style að þetta gildi á TC-skel mun valda echo að haga sér þannig. Svo sett gerir það, en setja aðeins fær skel breytur. Það myndi ekki finna ritstjóra, sem er ekki í skel breytu. Ekkert. Svo er það ein leið til að greina þau. Heldur sú staðreynd að þú þarft að fara í gegnum sumir skrýtinn stjórn svona að greina á milli skel breytur eða umhverfið breytum sýnir þá tegund af óhagkvæm eðli C-skel fyrir ákveðnum tilgangi. Og nú, síðasta og kannski síst, þetta er maðurinn síður. Þeir af hver þú mega vita, maðurinn er skipunin stytting á handbók. Man síðum fyrir skeljar er erfitt að lesa. Þeir eru mjög lengi. Þeir eru skipulögð á þann hátt sem getur gert það erfitt að finna það sem þú ert að leita að. Þannig að ef þú ert að leita að einhverju með tilgang, þú getur ekki vitað hvort að tilgangur er skel breytu eða eitthvað annað, svo þú getur ekki vita hvar á að leita að því. Þú geta leita að ýmsum strengi, en strengirnir eru oft endurtekin. Svo það er almennt erfitt að lesa. Við leit bara á TC-skel maður síðunni smá áður að finna eval stjórn. Sumir hlutir fara hraðar. Ein aðferð er að leita að streng. Þú getur notað Friðþjófur. Friðþjófur hefur skástrikinu til að leita að stjórn eða streng inni símboði aðgerð. Man sjálfgefið vilja nota pagers, annað hvort að vera meira eða minna. Ég veit ekki hvort þú ert kunnuglegur með þeim, en þeir geta sýna skrá smátt og smátt. Ég hef verið að nota minna til að birta þessar tilteknu skrár sem við höfum fengið hér. Hægt er að leita þarna inni. Þú getur prófað að nota mismunandi strengi leit. Einnig man síðum í mismunandi stýrikerfum mega ekki vera það sama. Þeir geta verið aðskilin síðum fyrir CNet og tcsh. Þeir eru eru ekki á Mac, en þeir gætu verið ef þeir eru aðskilin skipanir. Ef SH er í raun ekki kalla Bash, það myndi sennilega vera sérstakt maður síðu. Sum kerfi hafa sérstakar síður maður bara fyrir C-skel innbyggður-í stjórn. Stundum ef þú vilt lesa lýsingu af innbyggður-í stjórn það er líka í götunni, eins og bergmál, þú þarft að lesa maður síðu á þeirri stjórn á echo til að ákvarða hvernig það mun virka eins og a innbyggður-í stjórn jafnvel ef þú ert ekki að hringja í innbyggða stjórn. Það er galli í stýrikerfi almennt, ekki aðeins fyrir skeljar, þó að skeljar einkum man síðum er alveg löng, ma vegna þess að þeir bættir gagnlegur lögun til þeirra, sem kunna að vera jákvæð. Allt í lagi. Eru einhverjar spurningar? Hvaða efni sem þú vilt að koma upp? Nokkuð viðeigandi hér? Jæja, það hefur verið mjög gaman að tala við ykkur öllum. Ég vona að þú fékk eitthvað út úr þessari ráðstefnu sem mun vera gagnlegt fyrir þig í framtíðinni viðleitni þína. [CS50.TV]