[Seminaar - Unix Shells, omgewings] [Douglas Kline - Harvard Universiteit] [Hierdie is CS50. - CS50.TV] Vandag se onderwerp is die Unix dop. Ek is Douglas Kline, kenner, of ten minste redelik bevoegde gebruiker van die dop. 'N dop is die koppelvlak vir die gebruiker om die rekenaar se bedryfstelsel. Die naam is misleidend as, in teenstelling met 'n dier se dop, wat is hard en beskermende, die rekenaar dop vir die kommunikasie. So poreuse membraan sou waarskynlik 'n beter metafoor. Die oorspronklike dop vir Unix is ​​die Bourne dop. Bourne gespel B-O-U-R-N-E. Bourne was een van die oorspronklike skrywers van Unix, En so het die dop is na hom vernoem. Die naam van die dop as 'n opdrag is eenvoudig net SH. Dit is die opdrag wat jy kan voer. Die dop begin by inskrywing. Wanneer jy inteken op die rekenaar, die dop net begin hardloop vir jou, en dit is wat neem jou opdragte. Dit kan begin by ander tye ook. As jy bring 'n venster met geen ander aanduiding is, sal dit 'n dop vir jou begin. Dit is hoe dit is dat jy kan gaan na 'n venster en begin tik opdragte en so is daar weer selfs al is jy nie teken het in daardie venster. Verder, as jy 'n afgeleë login doen, dan sal dit 'n dop begin op die afgeleë rekenaar. En dit is moontlik opdragte uit te voer sonder 'n interaktiewe dop. Dit kan jou huidige werking bedoel, en dit kan ook beteken dat 'n afgeleë operasie. Jy kan 'n bevel stuur na 'n ander rekenaar, Dit sluit die oprigting van 'n dop daar. Trouens, dit het in te sluit die oprigting van 'n dop daar selfs al is dit nie die finale doel. Wanneer iets begin het soos hierdie, beteken dit nie noodwendig 'n nuwe dop. As jy bring 'n nuwe venster, is dit moontlik om dit te vertel te bring 'n redakteur of 'n ander opdrag. In daardie geval, sal die redakteur van nuuts af begin. Wanneer die redakteur eindig, die venster eindig. Dit is 'n bietjie ongewoon, maar dit kan gedoen word. In sulke gevalle is, sal dit nie wees om 'n dop. So is dit nie noodwendig die geval dat 'n venster of 'n so 'n aansoek sal bring 'n dop. Shell ontleed opdragte. Parsing beteken die identifisering van die verskillende elemente en die klassifikasie van hulle. Binne 'n bevel, die volledige string wat jy tik, Daar sal 1 of meer enkele opdragte wat uitgevoer moet word. Ander elemente kan wees argumente. Daar kan ook spesiale karakters wat invloed op die uitvoering van 'n opdrag. Hulle kan die uitset iewers anders as die skerm stuur As die opdrag gewoonlik sou dit stuur na die skerm. Dit kan insette lei, maar dit kan ook ander dinge. Daar is verskeie ander simbole, karakters, en so meer. Parsing behels die opsporing en die interpretasie van daardie dinge. Nou as daar nie meer vrae, wat is eerder geneig want daar is nie meer mense, ons gaan op na my volgende bladsy hier. Ek het vroeër gesê dat die Bourne dop is die aanvanklike dop. Daar is ook ander. Een daarvan is die C-dop. Die opdrag is csh. Die naam C-dop is net 'n spel op woorde. Dit dop is ingestel met Berkeley Unix in die middel van die 1970's. Berkeley Unix was 'n seminale gebeurtenis in die ontwikkeling van Unix. Dit was 'n groot revolusie en die bekendstelling van hierdie dop. Die rede hiervoor is dat die spel op woorde, C-dop, is dat die C-dop het 'n paar eienskappe in dit wat lyk soos die C-taal, wat die Bourne shell het nie - of dit het nie op daardie tydstip. Daar is ook die TC-dop. Dit is 'n superstel van die C-dop. Dit het bykomende funksies, baie van wat nuttig is vir interaktiewe gebruik, soos herinner opdragte in die geskiedenis meganisme, wat ek sal 'n bietjie later beskryf - in 'n eenvoudige manier, na die model van 'n redakteur. Dit het ook bindings wat toelaat dat jy 'n kort sleutel string na 'n langer opdrag te bind. Ons gaan nie te wees om in vandag. Dit het 'n paar eienskappe wat nuttig is vir ontwikkeling. Tog is die C-dop nie dikwels gebruik vir die dop ontwikkeling. Shell programme, as jy nie reeds weet, is programme wat bestaan ​​uit dop eienskappe. Jy kan hardloop dit as programme. Jy skryf 'n klomp van die tolk opdragte in 'n lêer en die lêer uit te voer. Jy hoef nie om dit te stel. Dit is 'n interpretatiewe taal. Die frase C-dop is nou dubbelsinnig omdat dit net kan verwys na die oorspronklike C-dop, csh, of aan alle C-skulpe, insluitend tcsh. Dit is 'n bietjie dubbelsinnig. 'N later dop is die Korn dop, ksh, vernoem na die programmeerder, Korn. Dit dop poging te neem in 1 dop die voordele van die C-dop vir interaktiewe gebruik en die Bourne dop vir ontwikkeling. Dit is gebruik as 'n interaktiewe dop deur sommige mense - 'n minderheid. Later egter, was daar 'n ander instelling, die Shell, bash, weer 'n spel op woorde, Bourne-weer dop. Dit is 'n uitbreiding van die Bourne dop. Korn dop is ook. Beide van hulle is. Dit het dieselfde doelstellings van die Korn dop van samevoeging van die C-Shell se en Bourne Shell se voordele in 1 dop. Baie van die versterking van die Korn dop is ook ingesluit in Bash. Bash egter, het meer en is dus verkieslik. Die Bourne-weer dop en die Korn dop is Bourne-tipe doppe genoem omdat hulle sluit die Bourne Shell se eienskappe, wat in stryd is in sommige opsigte met C-skulpe. Daar is ander doppe behalwe dié, 'n paar wat bedoel is vir beperkte gebruik, Miskien beperk tot sommige opdragte, miskien gespesialiseerde doeleindes, nie dikwels gebruik nie. Goed. Volgende item hier. Die Shell geword het wat verband hou met verskillende vorme van Linux. Ek is nie seker of dit waar is van elke vorm. Daar is baie vorms daar buite en ek het nie gebruik word om hulle almal, Maar in daardie wat ek gebruik het om dit wat daarmee gepaard gaan word. So ver as wat ek weet, is daar niks oor Bash Dit maak dit nie meer versoenbaar is met Linux as enige ander kombinasie van Shell en bedryfstelsel. Ek dink dit is waarskynlik net weerspieël die neigings van die programmeerders. Dat dit geassosieer word met Linux is 'n ander rede Bash te verkies om ksh sedert dinge is geneig om in dit geskryf word en dit is geneig om te versprei. Ek gee jou ander redes vir daardie later. Bourne dop skrifte moet hardloop onder die Korn dop of Bash. As jy iets vir die Bourne dop skryf, jy kan waarskynlik voer dit onder ksh of bash. Korn dop skrifte sal waarskynlik hardloop onder Bash, maar ek kan nie waarborg dat. Later hier, moet C-dop skrifte loop onder die TC-dop. Die C-dop was eintlik nooit op groot skaal gebruik vir script sedert die Bourne Shell en later die Bourne-tipe doppe was beter vir daardie doel. So wat werklik is nie al wat belangrik is. Daar is nogal 'n baie Bourne dop skrifte wat lank gelede geskryf is, voor die Korn dop of die Bourne-weer dop is ingestel. Dit is nog steeds in gebruik is, deel van die bedryfstelsel, en so sal jy hulle vind as jy kyk na die bedryfstelsel of 'n paar ou ontwikkeling pakkette. Bash is tot 'n mate om 'n soort van omgangstaal vir bedryfstelsels. Dit is reeds uitgebrei na Windows en VMS. VMS, in geval jy nie weet nie, is 'n eie bedryfstelsel Digitale Equipment Corporation, wat steeds in gebruik is, grootliks agter die skerms. En as dit gaan om te loop op verskillende bedryfstelsels, waarskynlik die mense is geneig om te skuif, want dit. Maar hierdie ontwikkeling is relatief onlangse. Dit is net die begin, so ek kan nie voorspel of dit sal uitdraai om werklik wees dat die soort van omgangstaal. Ook, omdat die lêer padnamen en biblioteke verskil tussen die verskillende bedryfstelsels, jy mag nie in staat wees om 'n bash script op een bedryfstelsel te skryf en dan loop dit op 'n ander een. Jy moet in staat wees om dit te skuif tussen verskillende Unix, Linux Mac OS bedryfstelsels, maar nie noodwendig op Windows of VMS. Jy het dalk 'n lêer padnaam beskrywings te verander, en sommige biblioteke kan anders wees, wat die manier waarop sommige opdragte werk affekteer of hoe hulle verwerk argumente en dies meer. Behalwe dat 'n ander waarskuwing hier is dat daar geen waarborg dat al die verskillende doppe wat ek genoem het - Bourne dop, C-dop, TC-dop, Korn dop, Bourne-weer dop - sal onder geen Unix beskikbaar wees of Linux of Mac OS rekenaar. Hulle kan eenvoudig nie daar wees nie. Dit is een van die waarsku hier. Dit is 'n ongelukkige beperking hier omdat jy wil dinge om oral werk, maar ongelukkig is, kan jy nie staatmaak op dit. Goed. Volgende een hier. Kom ons sê dat jy 'n dop script te skryf, 'n program wat bestaan ​​uit tolk opdragte. Jy skryf jou opdragte, sit hulle in 'n lêer en die lêer uit te voer. Wat gebeur as jy wil argumente in te sluit? In die geval van die dop bedrywighede word argumente parameters of posisionele parameters genoem en hulle sal deur 'n dollar teken en getal, $ 1, $ 2 genoem word. So as die script het hierdie naam, dalk my eerste argument argument 1 wees en my tweede argument kan wees 2, en binnekant my script as ek wil om te verwys na hierdie dinge - laat se vee dit omdat ek nie regtig gaan om dit te doen - binne my script ek $ 1 kan hê om te verwys na arg1, $ 2, wat sal kom uit die manier, arg2. So diegene simbole is beskikbaar om te verwys na argumente, en dié van toepassing op al die skulpe. Daarbenewens is daar die ander karakters. $ * Verwys na die hele argument lys, almal van hulle. $ # Verwys na die aantal argumente. Weereens, dit is van toepassing op al die skulpe. Diegene simbole, * en #, kan gebruik word om met dié betekenis in ander plekke ook. Ons sal nie wees om in daardie. Shell specific line. Wat is dit vir? Kom ons sê jy 'n script geskryf het en dit is vir 'n spesifieke dop en jy wil dit uit te voer. Hoe weet jy wat dop jou bedryfstelsel sal gebruik om jou script uit te voer? Op 'n stadium kon jy aanvaar dat hy dit sou loop in die Bourne dop as jy nie anders sê nie, maar die mense is nie die skryf van skrifte in die Bourne dop wat veel meer en jy kan nie eens vertrou dat nie. So hier het ons 'n dop specific line reg hier. Dit spesifiseer Bash. Let daarop dat dit bepaal dit in die padnaam, / bin / bash. As 'n rekenaar het die Shell, maar nie in die bin gids / bin, dit sal nie werk nie. Dit is 'n ander deelnemer, 'n ander waarskuwing hier. Die pond teken is die kommentaar lyn karakter. Dit geld vir alle doppe. Die spesifieke geval hier, #! aan die begin van 'n script, is 'n spesiale geval. Dit spesifiseer die dop waarin die script uit te voer. Soos ek gesê het, is dit dalk nie op dieselfde plek / bin. Daarbenewens is daar is 'n ander ding hier. As jy net gebruik om die pond teken met geen uitroepteken en padnaam, wat moet dui op 'n C-dop. Maar ek raai nie om dit te doen, want ek is nie in staat om te verseker dat wat altyd sal werk. As jy wil 'n C-dop, sou dit beter wees om dit te sê. Dan is daar iets eerder verwarrend hier. As jy 'n dop specific line soos / bin / bash en dat die dop nie beskikbaar is nie daar nie, daar is nie so iets soos / bin / bash op die spesifieke rekenaar, óf omdat dit nie Bash of omdat dit in 'n ander plek, jy 'n fout wat jy vertel dat die script wat jy het nie bestaan ​​nie kry. En natuurlik jou script bestaan, so die fout boodskap is verwarrend. Die rede is dat die bedryfstelsel gee jy die fout of, meer akkuraat, dat jou interaktiewe dop waarin jy loop dit gee die fout, is dat dit verslae van die opdrag wat jy gebruik, wat is die naam van die skrif. Daardie bevel effektief die dop genoem deur die naam van die skrif. Dit is waar jy wat verwarrend fout boodskap. Nog 'n manier dop script om te bel is deur die spesifiseer van die dop op die command line, as hier. Dit is 'n opdrag. Dit sê hardloop Bash en dan hardloop my script in Bash. Dit sal voorrang geniet bo 'n specific line, en dit het die funksie van die sodat jy voorsiening te maak vir verskillende padnamen. As jy net 'n bevel kan word, sal die bedryfstelsel kyk vir hierdie bevel in verskeie plekke. As dit beskikbaar is, moet hy dit vind. Die rekenaar sal Bash vind waar dit geleë is en loop dit, sodat jy nie nodig het nie, dan bekommerd wees oor waar dit bevind dat dit te wees. Daar is moontlik ander probleme hier, asof daar meer as 1 weergawe van Bash, wat moontlik is, hoewel dit onwaarskynlik. So dit is 'n ander manier om te gaan met hierdie dinge. Specific lyne kan enige dop noem. Hulle kan ook 'n beroep dinge anders as doppe. Voorbeelde Ek het hier sed, wat is die stroom editor; AWK, wat is 'n patroon verwerking van taal; en perl, 'n baie hoogs ontwikkelde script taal. As jy 'n specific line dui een van die programme aan die begin, dit sal direk in die program, eerder as die begin van 'n dop. Hierdie programme het perke aan hul vermoëns. Perl is baie bekwaam. Sed is 'n redakteur. Dit kan dinge doen as net redigering. Maar dit kan moeilik om te program. Daarbenewens, verby argumente en dinge te script of onmoontlik is of verwarrend. So in daardie gevalle, met AWK of sed, dit is, ten minste in my ervaring, verkieslik 'n dop script en oproep AWK te skryf of sed uit die dop script eerder as 'n beroep AWK of sed as die script specific line. Perl is 'n hoogs gediversifiseerde taal, soos ek gesê het. Jy kan nie interaktiewe opdragte loop in Perl, wat beteken dat jy nie dele van skrifte wat jy ontwikkel kan toets deur die loop van hulle interaktief. Dit is egter 'n uiters bekwame taal en het ontwikkel tot 'n baie wyd gebruik hulpmiddel. Dit is net 'n bietjie van 'n hakies opmerking oor die specific lyne. In alle of die meeste vorme van Linux - weer, ek kan nie seker wees dat alles wees - en in Mac OS, as jy tik csh jy tcsh, en as jy tik sh jy bash. Hulle is daar probeer om te gee wat jy die meer gevorderde weergawes van hierdie skulpe, maar dit kan verwarrend wees. As jy 'n script gebruik tcsh skryf of Bash funksies terwyl roeping csh of k en dan probeer om dit uit te voer op 'n rekenaar wat nie tcsh of Bash, jy kan kry 'n paar foute as daar opdragte in daar wat die doppe nie erken nie. Daarbenewens kan jy genoem het tot jou dop op jou plaaslike rekenaar noem dit as SH of csh en dan kry die meer gevorderde doppe. Jy kan nie eens dink aan die feit dat jy met behulp van die meer gevorderde dop. So, dit is 'n potensiële slaggat. Hoe is dit vasgestel dat as jy tik sh jy Bash, As jy tik csh jy tsch? Daar is dinge wat in hierdie rekenaars genoem skakels wat kan koppel name in te dien om te verwys na dieselfde ding. Dit kan óf 2 name vir dieselfde lêer of 'n lêer waarvan die doel is om te verwys na 'n ander lêer. Hulle is geroep hard en simboliese skakels. Ons sal nie gaan nie in daardie nie vandag. Daar kan ook afsonderlike lêers - 1 lêer SH, 1 lêer Bash - maar hulle albei loop Bash. Dan is daar nog 'n kwalifiseerder hier. As jy 'n beroep een van hierdie skulpe deur een naam, jy dink jy wil dieselfde funksie kry as noem dit 'n ander naam. Wel, wat eintlik is nie noodwendig waar nie. Hierdie opdragte kan die naam wat hulle genoem ondersoek en hulle kan, op grond van die naam, anders optree. Daar mag kwessies van probeer om te voldoen aan 'n standaard. Sommige van julle het seker al gehoor van die POSIX-standaard of 'n ander, Miskien ander funksies. Dit kan soms deur command line argumente gekies word of deur die opstel van die dop veranderlikes. Noem dit as SH of bash kan eintlik lei tot 'n ander uitvoering selfs al is dit dieselfde lêer wat jy uitvoer. Nog 'n ding om te oorweeg, is dat selfs as 'n ander rekenaar het tcsh of Bash, As hulle nie gekoppel word as hulle op jou plaaslike rekenaar as jy 'n Linux of Mac OS plaaslike rekenaar, dan weer jy sal die dop wat jy noem SH of csh, nie die een wat jy kan verkies te kry. Die huidige Bourne dop uitbreidings van minder as dié in Bash maar die verlede wat in die oorspronklike Bourne dop. As gevolg van dat, selfs die huidige Bourne dop, SH, selfs wanneer dit is nie Bash, lyk die C-taal meer is as die C-Shell. Dit was nie waar nie wanneer die C-dop vir die eerste keer geskep het, maar dit het op die manier ontwikkel. Jy kan hier sien dat al hierdie dop name, behalwe vir die Bourne dop iets om aan te dui wat hulle dop - csh, bash - Maar die Bourne dop is net k. Hoekom? Dit was die oorspronklike dop. Dit was die dop dan nie 'n dop, en aangesien dit die dop, daar is geen rede om dit te onderskei van 'n ander dop. So dit is waarom dit is dat die naam en nog steeds doen. Hierdie top hier is 'n lyn van 'n wagwoord databasis vir 'n rekening Ek het daar op 'n ander rekenaar. Ek gaan om te probeer om die naam te kry, sodat jy kan sien dat 'n deel aan die einde, die dop. Die wagwoord databasis hou met die aanmelding eienskappe vir al die gebruikers. Aan die begin is die rekening wat jy nou kan sien die laaste 2 letters van my. Die velde hier word geskei deur kommas. Die laaste veld, soos jy kan sien, is bin / tcsh, die dop. Dit is die dop specific. Daar is iets interessant hier. Wanneer Unix was die eerste ontwikkel het, was daar net 1 dop, so daar was geen ander keuse daar. So hoekom het hulle toelaat dat 'n veld in die wagwoord databasis 'n dop te spesifiseer? Ek weet nie, maar dit is gelukkig dat hulle gedoen het. Dit is nogal moeilik om die veranderinge in die wagwoord databasis-formaat te maak omdat baie programme verwys na die formaat en sal moet herskryf word. Dit is 'n gelukkige of toevallig ontwikkeling dat hulle ingesluit die gebied. Daardie soort van 'n wagwoord lêer lyn word gebruik op al Unix en Linux rekenaars so ver as wat ek weet. Die Mac het sy eie stelsel. Dit het eintlik 'n wagwoord lêer met die lyne in die formaat, maar dit is nie waar die gebruiker eienskappe gedefinieer word. Nog 'n opmerking hakies daar. As jy 'n dop roep, kan jy dit noem as 'n sub-dop van jou bestaande doppe. So as ek hier gaan, laat ons ontslae te raak van hierdie dinge. Hier is ek in die C-dop. Dit veranderlike, wat akkuraat my dop identifiseer, eintlik is nie altyd 'n betroubare manier om te bepaal wat die dop jy hardloop, maar in hierdie geval is dit. Wat as ek tik net - Nou is ek in Bash. Sommige dinge gaan dieselfde wees. LS vertel my bevele. As ek nie 'n skort terug na my C-dop, LS, dieselfde. Reg? FG, voorgrond, terug na my Shell. pwd, huidige gids, terug na die C-dop. pwd, ander gids - eintlik nie 'n ander gids in hierdie geval. Dit is dieselfde gids. Kom ons sê ek wil 'n opdrag om hier te noem: waar LS. Wat beteken dat jy doen? Dit sê vir my waar die LS beveel, die een wat gee my 'n gids notering, is geleë in LS. Kom ons gaan terug na Shell gaan. Kom ons probeer om dieselfde ding. Hmm, interessante daar waar: Opdrag nie gevind nie. Hoekom is dit? Die opdrag waar is gebou in die C-dop. Dit is nie 'n opdrag wat in die geheue van iewers anders te lees en uitgevoer word. Die C-dop loop dit deur die oordrag van die uitvoering te deel van sy eie kode en dit is nie in die Shell. So Bash, nie met so 'n ingeboude in bevel, lyk dit, het dit nie vind nie, en ons kry 'n fout. So daar het ons 'n Shell hardloop onder 'n C-dop, en ons noem dit 'n sub-dop. En net in geval jy nuuskierig, Shell het sy eie manier van die opspoor van opdragte. hashed verwys na die feit dat dit vinniger uitgevoer kan word, word vinniger gevind. Dit is een van die verbeterings in die gebou om 'n paar van hierdie skulpe. Bourne-tipe doppe word verkies vir ontwikkeling. Hulle het beheer strukture soos loops, voorwaardelike state, die soort van opdragte wat jy kan gebruik in programmeertale soos C of wat ook al taal. Miskien is jy programmering in Java of wat ook al. Doppe het diegene wat te. Die Bourne-tipe doppe, veral Bash, het meer en hulle is ontwerp om met 'n groter buigsaamheid. Die Shell het skikkings. Die oorspronklike Bourne dop nie. So wat kan aansienlik voordelig is vir ontwikkeling. Die C-Shell eintlik skikkings, maar het nie 'n groot deel van hierdie ander funksies. Die Bourne-tipe doppe sal vinniger uit te voer As hulle nie die eienskappe wat bedoel is vir interaktiewe gebruik. Jy laai dinge af een doel, dit laai hulle af vir 'n ander doel. Daar is dat die trade-off is daar. Die eienskappe wat bedoel is vir die interaktiewe gebruik regtig is van min of geen gebruik vir script. Dit is moontlik om 'n interaktiewe sub-dop om te gebruik, net soos die een wat ek daar begin uit te toets opdragte wat jy van plan is om te gebruik in 'n script. Dit is wat jy nie kan doen met Perl. Jy kan dit doen met die doppe. Selfs die strukture soos vir loops en so meer interaktief kan uitgevoer word. Hulle is soms nuttig om interaktief te hardloop, maar meer waarskynlik jy met hulle 'n script te ontwikkel. Aliassen. Dit gaan wees oor die C-dop. Geskiedenis meganisme waar jy terug na vroeër opdragte of dele van hulle wat jy reeds loop. Weereens, oor die C-dop, die Bourne shell en die Korn dop het hierdie dinge, maar ek gaan nie te kry in hulle. So hier is 'n paar nuttige aliasse wat ek het. In plaas van tik LS - dit is 'n gemeenskaplike bevel - tik net l en red jouself 1 karakter. LS met verskeie opsies, almal werk. Let daarop dat die definisies aanhalingstekens rondom hulle. In hierdie gevalle, die aanhalings is nie nodig nie. As jy dié aliasse kan definieer sonder die aanhalingstekens, sou dit nog steeds werk. Hulle word aanbeveel. Daar is situasies waar jy kan nie die aanhaling gebruik omdat jy iets om te gebeur wat die kwotasie sal voorkom wil. Soms kan jy deel van die definisie haal, maar nie alles nie. Dit is ook algemeen aanbeveel aanhalingstekens eerder as dubbel aanhalingstekens te gebruik. Double aanhalings uitwerking op veranderlike definisies, veral veroorsaak dat hulle eerder as om te stop dit geëvalueer word. Hoekom sal ons wil hê dat die evaluering te stop? En hoe aanhalings doen vir ons? Hier is 'n opdrag wat jy dalk interessant vind. 'LS g *' g *, soos jy seker weet, is 'n wildcard uitdrukking vir al die lêer name wat begin met g. As ek skryf net in 'n opdrag LS g *, sal ek 'n lys van al die name kry in my huidige gids. As ek definieer wat alias as dit is hier met die aanhalings, dit sal loop wat opdrag in jou huidige gids waar jy loop nie. Maar as jy die alias definisie hardloop sonder die aanhalingstekens, dit sal die wildcard g * evalueer wanneer dit loop van hierdie definisie van opdrag. So het die definisie van die alias sal LS gevolg word deur die lys van lêers in die gids waarin die alias opdrag uitgevoer word, ongeag van waar jy eintlik van plan om die opdrag uit te voer. Dit is nie van veel te gebruik, en die enkele aanhalings verhoed dat die evaluering van die asterisk. Sodat jy net die definisie wese LS g *. Dan wanneer jy die alias, LGS, is dit dan stel dat uit. Nou is daar geen kwotasies, en dit sal die asterisk evalueer wanneer jy die alias opdrag. So dit is een ding. Dubbele aanhalingstekens sou dit dieselfde effek hier het, maar daar is ander gevalle waar dubbele aanhalingstekens sou nie so goed werk. Hier is 'n ander een. Jy mag weet van die grep opdrag. Die grep opdrag kan gebruik word om 'n lêer vir lyne wat sekere snare te scan. So laat ons gaan oor hier en ek sal verlaat my Bourne dop. Goed. Hier is 'n lêer. Kom ons sê dit is grep ABC snare. Daar is dit. As ek dit doen grep zddd, ek kry niks nie. Goed. Dit vind dus 'n string, dit verslae, dit nie kry nie, beteken dit nie dit rapporteer. Dit uitgange enige lyn wat dat string op dit. Daar is allerhande opsies hier wat jy kan vind in die dokumentasie. Hier is een manier om dit te doen nie. Wat van hierdie een, alias grabc 'grep ABC? Dit gaan 1 argument in te sluit wanneer die alias gedefinieer word. So as ek doen wat hier, nou as ek dit doen grabc, nou die alias sluit meer as die eenvoudige opdrag. Dit het ook die argument. Tot dusver wat werk. Ek het nog 'n opdrag hier, hierdie een, sodat die verskillende snare daar en wys dat dit nie iets vind daar omdat dit nie pas nie. Wat as ek wil in te sluit in die alias definisie die lêer wat ek gaan soek en ek wil 'n argument aan die alias die tou wat ek soek om te gee? Ek mag dalk wil ABC om te sê as die argument na my alias, Maar die alias reeds die lêer bepaal. En dit is waar hierdie uitdrukking kom in Let hier het ons grep net soos voorheen. Ons het die lêer hier, stringe. \! ^, Soort van 'n vreemde uitdrukking, dink ek, as jy nog nooit hierdie gesien. Uitroepteken is deel van die C-dop geskiedenis meganisme. Dit kan vroeër opdragte onthou, kan dit argumente daardie opdragte te onthou en so meer. Die geskiedenis meganisme word gebruik as deel van aliasing. As jy 'n lyn na die uitroepteken, sal dit verwys na die lyn in die geskiedenis lys, wat ons nie sal wees om in nou want dit is 'n heel ander onderwerp. Dit is moontlik deel van 'n lyn te spesifiseer. So! 03:02 sal die tweede argument van die opdrag nommer 3 wees. Die kappie hier in hierdie uitdrukking staan ​​vir die eerste argument. As jy nie gee dit 'n aanduiding van wat beveel jy verwys, verwys dit na die onmiddellik voorafgaande gebod, en die kappie is 'n simbool vir die eerste argument. Want dit is die kappie en nie die aantal, jy hoef nie die kolon te gebruik, so! ^ beteken die eerste argument na die vorige opdrag. 'N bietjie deurmekaar hier. In hierdie geval, wanneer jy gebruik dit as 'n alias definisie, Die geskiedenis verwysing verwys terug na die opdragte in wat die alias gebruik word. So hierdie gaan terug 1 opdrag as 'n geskiedenis operasie, maar as 'n alias werking verwys dit na die opdrag in wat jy wil tik, sê grstrings_file. Ons het die aanhalings hier in dit. Wat is die backslash vir? In hierdie geval, soos elders, ons wil nie die geskiedenis meganisme uit te voer terwyl die definisie van die alias. As ons nie die backslash daar was, sou die dop trek in die eerste argument van die opdrag reg voor dit het die alias opdrag, wat ons wil hê nie. Ons wil dit in die alias bevel gebou word om later bel in 'n argument. Enkele aanhalings nie ontsnap nie 'n uitroepteken, die geskiedenis verwysing. Miskien weet jy die uitdrukking ontsnapping beteken die betekenis van iets te verander. In hierdie geval, beteken dit iets om te verhoed dat 'n spesiale betekenis. Uitroepteken se spesiale betekenis is geskiedenis. Ontsnap en dit het nie daardie betekenis. Aanhalings nie doen nie; backslash doen. So ons is eintlik die gebruik van 2 vlakke van ontsnapping hier. Ek gaan hierdie opdrag om te skuif na die ander venster sonder om dit te tik deur die gebruik van hierdie redigering bedrywighede, wat jy mag nuttig vind. Iets anders hier het ek sal jou wys. As jy net tik alias met geen argumente, dit vertel dat jy al jou argumente. Dit is 'n klomp van die aliasse wat ek al hier gehad Behalwe dié wat ek hier vandag gebruik. Maar as ek tik net met die naam van 'n alias, dit vertel my wat dit beteken. Let daarop dat die aanhalings is verby en die backslash is weg. Hierdie string hier is die resultaat van daardie alias definisie, en nou is dit net! ^ in dit. Dit gaan om te kyk in die lêer snare vir enigiets nie. So as ek dit doen grstrings_file snare, het ek nie gee dit iets om na te kyk, want daar, maar dit is op soek na in snare. Dit het nie die woord snare vind in die lêer snare, maar dit beteken ABC. En dit nie vind nie. So hier gee ons 'n argument wat treffers in die definisie van die alias, wat is opgeneem in dit. Dit is waar hierdie uitdrukking vandaan kom. Jy kan gebruik om meer as 1. Die kappie is 'n simbool vir die eerste argument. As jy wil 'n tweede argument te gebruik, sal jy dan sê: 2. Daar is geen spesiale simbool vir die tweede argument. En omdat jy met behulp van 'n syfer, sal jy die kolon te gebruik. Daar is egter 'n ander keuse hier. Die dollar-teken staan ​​vir die laaste argument. En omdat dit 'n simbool, kan jy die kolon laat. So dit sou die laaste argument in die lys wees. En daar is ook dat 'n mens. Asterisk beteken al, so dit is die volledige argument lys en weer, kan jy die kolon laat, want dit is nie 'n syfer. Ek hoop dat jy al die waarneming van al hierdie. Die geskiedenis meganisme kan terug na vroeër lyne gaan in die geskiedenis lys. Jy kan dit doen in 'n alias definisie. Ek het nog nooit gesien het dit gedoen. Dit sou die effek van die trek uit vroeër opdragte uit die geskiedenis lys het wanneer jy die alias, wat kan wees die verskillende opdragte uit te voer afhangende van wanneer en waar jy dit uit te voer. Verstaanbaar jy dalk wil om te trek uit so 'n verwysing net om te weet wat 'n vroeëre opdrag was. Ek het nog nooit gesien dat dit gebeur. Ek veronderstel iemand dalk wil, maar dit is baie onwaarskynlik. Daar is nog 'n ding hier. As jy dat die geskiedenis-tipe verwysing, dan slegs die argumente wat daar is so 'n verwysing gebruik word. As jy 'n alias definisie wat nie 'n geskiedenis-tipe verwysing gebruik, As dit maar net die begin van die opdrag en jy het verdere argumente, dan is enigiets wat jy tik nadat sal bygevoeg word om die opdrag. In hierdie geval, die voorbeeld wat ek net daar het, het ons die eerste argument; Ons het nie enige ander gebruik. As ander argumente gegee is op die opdrag lyn, sou hulle nie gebruik word nie. So as jy die geskiedenis verwysing gebruik nie, dan moet jy dit gebruik om enige argument te kry. Daar is 'n ander ding hier wil ek net noem, deels parenthetically, naamlik dat hierdie geskiedenis meganisme met die uitroepteken gaan terug na die oorspronklike C-dop. Die tcsh bekendgestel geskiedenis bedrywighede wat die vorme van opdragte en snare van die redakteurs te gebruik, óf Emacs of vi. My persoonlike mening is Emacs is veel makliker om te gebruik vir hierdie doel selfs as jy vi gebruik vir jou gereelde redigering. Daar is verskeie Emacs opdragte wat nou aangepas vir die geskiedenis. Control P kry die vorige lyn in die geskiedenis lys. Nog Control P sal kry jy die een voor dit. Die pyl nie dieselfde ding. Beheer N kry die volgende opdrag as jy reeds scrolled terug 'n paar maniere. Down pyl doen dit ook. Jy kan skuif na links na regs met die pyle en verskeie ander dinge. Dit kan gebruik maak van die geskiedenis meganisme baie makliker as die gebruik van die uitroepteken sintaksis, maar jy sal nie gebruik wat in 'n alias definisie. Ons gaan oor wat 'n ander tyd. Veranderlikes. Jy weet wat veranderlikes is in programmeertale. Die doppe het hulle ook. Die C-dop gebruik die opdrag stel veranderlikes te ken, sodat stel die veranderlike 'n waarde van b - soos ek gesê het, 'n nuttelose definisie, maar 'n voorbeeld van hoe dit gebruik word. Die stel opdrag sal 'n veranderlike te skep as dit nie reeds bestaan. Die posisionele parameters vir die dop skrifte kan beskou word as veranderlikes, maar die gebruik van hulle en die reëls vir hulle is 'n bietjie anders. Jy kan nie 'n waarde $ 1 wys in die loop van 'n script. Jy sal 'n nuwe veranderlike te definieer vir daardie doel as 'n paar van julle wou. Tik stel met geen argumente en jy 'n lys van al die huidig ​​gedefinieerde veranderlikes. En laat ons oor aan my ander dop hier en kyk wat ons kry as ons dit doen. Nogal 'n lang lys daar, reg? Blaai 'n bietjie. Kyk na alles wat. Sommige van hierdie dinge word outomaties bepaal deur die dop. Die dop skep die veranderlike en gee dit 'n waarde. Sommige van hulle is gedefinieer deur die dop, maar dan geherdefinieer deur die gebruiker volgens sy voorkeure. En sommige van hulle is geskep deur die gebruiker, afhangende van wat hy doen daardie dag. Dit is net soos met geen argumente. Daar is 'n vreemde verskynsel hier van hierdie ding. Daar het óf geen spasies tussen die gelykaanteken en die veranderlike naam wees en die waarde of spasies aan beide kante van die gelykaan teken, soos in hierdie een. Dit sal nie werk nie, en dit is eintlik 'n geldige opdrag maar dit sal nie doen wat jy wil. Daardie bevel sal werk nie, want as jy net sê stel en 'n veranderlike naam met geen gelykaanteken of stel en 'n veranderlike naam met 'n gelykaanteken en geen waarde, dit sal die veranderlike stel om 'n nul waarde. So het 'n = 'n geldige opdrag. Die opdrag set kan meer as 1 veranderlike te definieer op dieselfde lyn. So hierdie opdrag hier het die effek van die definisie van beide A en B waardes null. Waarskynlik nie wat jy wil. Hierdie een hier, wat vroeër genoem is, sal lei tot 'n fout omdat = b is nie 'n geldige uitdrukking. 'N veranderlike naam kan nie begin met die gelykaanteken. En daar is die verdere dinge hier. Die dubbelpunte gebruik argumente uit die geskiedenis lyne te kies, en dit gebruik kan word - en ek het nie gaan in voor - dié dinge te verander. Hulle kan ook gebruik word om dop veranderlikes aan te pas. Hierdie een hier, $ a, 'n waarde. : R sal opstyg 'n uitbreiding. 'N uitbreiding sal enigiets aanleiding van 'n kol wees, 'n kol en enigiets volgende aan die einde van 'n lêer, eers aan die einde van die lys na die laaste streep. So ek het dit hier. 'n is dat. Dit sal daal die. O. As daar geen uitbreiding, net die padnamen na die laaste streep, sal dit geen effek. A: h, wat veranderlike uitdrukking, sal opstyg die laaste element van 'n gids lys, weer, net na die laaste streep. So / a / b / c word / a / b, maar hierdie een is verander omdat die element na die lys is leeg. Hier is iets wat ek ook wil beklemtoon. Hierdie kwalifiseerders nie soek nie vir die bestaan ​​van hierdie lêers. Hulle kyk net vir strykers. Dit is bedoel om die lêer name te manipuleer, padnamen, maar hulle kan gebruik word op enige string selfs al is dit nie 'n lêer naam. En hulle lyk nie vir die bestaan, So as daar is geen sodanige lêer, / a / b / c, dit sal nog steeds werk. Of is dit van enige nut is 'n ander vraag, maar dit sal nog steeds werk. Veranderlikes is anders in die Bourne doppe. Ons sal later aan daardie. Dollar-teken kan ontsnap word net soos die uitroepteken en die asterisk. Dollar-teken kan ontsnap word met 'n backslash of die aanhalingstekens. Dubbele aanhalingstekens het die vreemde uitwerking in alle doppe dwing die evaluering van 'n dollar teken veranderlike uitdrukking. So as dit is wat een manier ontsnap, kan die dubbele aanhalingstekens die effek veroorsaak dit in elk geval word geëvalueer. Dit is 'n bietjie verwarrend. As daar is verskeie vlakke van ontsnapping, soos 'n enkele aanhalings binne dubbele aanhalingstekens of dubbele aanhalingstekens binne enkele aanhalings, moet jy toets om te sien wat sal gebeur 'n veranderlike As jy een. Diegene 2 situasies - dubbel binnekant van 'n enkele, enkele binnekant van dubbel - nie noodwendig vir jou nie dieselfde resultaat. Omgewing veranderlikes, gebind C-dop veranderlikes. Omgewing veranderlikes is ook veranderlikes in die C-dop, en hulle is ook veranderlikes in ander doppe ook. In die C-dop, hulle is afsonderlike stelle. Die dinge wat ek voor sê is oor die dop veranderlikes. Omgewing veranderlikes is 'n duidelike stel veranderlikes met die uitsondering van 'n paar veranderlikes wat ons noem gebonde veranderlikes, wat baie belangrik is en ons sal kry in die later. Omgewing veranderlikes word outomaties oorgedra skulpe of opdragte wat uitgevoer word uit jou dop. Die ander dinge is nie. Die dop veranderlikes, die aliasse is nie. Omgewing veranderlikes is. Dit is hoekom ons noem hulle omgewing veranderlikes, die idee is dat die omgewing strek verby net jou huidige dop. Hulle kan gebruik word om dinge vir instruksies te definieer. Hier is 'n voorbeeld. Bosmanstraat, LPDEST. Beide van die veranderlikes kan 'n drukker wat 'n opdrag sal gebruik om dinge te druk definieer. As jy meer drukkers rondom, wil jy dalk die een wat jy wil om te sit. Die rede waarom ons het 2 veranderlikes is dat verskillende stelle van instruksies is geskryf die gebruik van hierdie verskillende veranderlikes. Jy kan gee hulle verskillende waardes. Heel waarskynlik sal jy gee hulle albei dieselfde waarde. Daardie dinge werk nie, want die bevele wat dit doen druk is geprogrammeer om die waardes van die veranderlikes te ondersoek. As 'n program is nie so geskryf is, as dit is geskryf om iets anders om te doen, die veranderlike sal irrelevant wees. So die bedryfstelsel is nie op soek na hierdie veranderlikes elke keer as jy verwys na 'n drukker. 'N opdrag wat nie die druk is op soek na hierdie veranderlikes as dit is geprogrammeer dat die pad. Hierdie veranderlikes word dikwels gedefinieer in jou inisialisering lêers maar nie noodwendig nie. Jy kan dit op die opdrag lyn definieer. Hulle kan gedefinieer word in 'n opdrag. 'N bevel dat iets loop kan sy eie keuse van veranderlikes het - veranderlikes wat eie is aan 'n bepaalde pakket, byvoorbeeld. Hulle sal gedefinieer word wanneer jy die pakket. Hoe word hierdie veranderlikes geslaag om 'n sub-dop? Wanneer 'n sub-dop geskryf is, beteken dit nie in daardie gebied te skryf. Die oppervlakte van die sub-dop wat toegewy is aan die omgewing veranderlikes is nie geskryf deur die sub-dop, dit is geskryf deur die kopiëring. Wanneer jy 'n gewone opdrag, soos hierdie opdragte te druk of wat ook al, hulle begin af deur die skep van 'n nuwe dop. Die dop skep 'n dop en dan oor skryf deel van dit met die opdrag dat jy hardloop, wat is 'n bietjie verwarrend, maar dit is hoe hierdie opdragte kry die omgewing veranderlikes dat hulle dan verwys na later. Die opdrag hier vir die definisie van die veranderlike setenv. Dit is hoe jy dit definieer. Dit is 3 elemente: setenv, veranderlike, waarde. As jy net nie setenv met geen argumente, wat kry jy? 'N lys van al die veranderlikes. Weereens, dit is 'n lekker lang lys en in hierdie geval, soos in die ander, hierdie veranderlikes word grootliks bepaal deur my login werking deur die dop self eerder as deur enigiets wat ek gedoen het. Daar is nog 'n opdrag hier, printenv. Dit druk ook uit die omgewing. Let op hierdie laaste ding hier, redakteur = vi. Wat sê dat as ek die gebruik van iets wat roep 'n redakteur en ek 'n redakteur spesifiseer nie en dit laat my die keuse is, kan dit vir my gee vi. Wat as ek dit doen printenv Editor? Dit sê vir my wat dit is. Reg voor dit, was daar 'n veranderlike, minder. Dit is jou standaard opsies wanneer ek hardloop minder opdrag, wat vertoon lêers. So as ek dit doen, kan printenv neem 1 argument of 0 argumente, nie meer as 1. Daar is ander opdragte ook, maar ons gaan nie te kry in alles wat vandag. Onthou daar was die wysigers vir die dop veranderlikes soos: h, wat die laaste element van 'n padnaam sal daal, of: R wat sal 'n uitbreiding daal. Diegene nou aansoek doen om die omgewing veranderlikes ook. Hulle het nie gebruik word om te. Dit word gebruik om hulle kon nie verander word nie. Nou hulle kan wees. Dit is een van die vooruitgang met die ontwikkeling van die doppe oor die jare. Ek het gesê dat die skulpe as deel van die omgewings en dop veranderlikes in die C-dop is, met 'n paar uitsonderings, afsonderlike stelle. Jy kan vestig 'n omgewing veranderlike en 'n dop veranderlike met dieselfde naam. Hulle sal verskillende veranderlikes wees, hulle verskillende waardes kan hê. Die verandering van die waarde van een sal nie die waarde van die ander verander. Hierdie veranderlikes is almal geëvalueer met die dollar teken - $ n $ ookal. So wat as jy dit? Weet jy watter een jy? In my toetse het ek die dop veranderlike, maar dit is nie gedokumenteer en jy kan nie op daardie staatmaak. Daarom vra ek jou, is die skep van Shell en omgewing veranderlikes met dieselfde name 'n goeie idee? No Goed. Wat is die vernaamste uitsonderings waarop die omgewing en dop veranderlikes gekoppel is aan mekaar? Daar is hierdie 4. Hoofletter KWARTAAL omgewing veranderlike, dop veranderlike term in klein letters, tipe terminale nydigheid. Ek gaan net oor te gaan hier en ek gaan hier eggo, 'n nuttige opdrag te doen, $ Begrip $ termyn. En daar. xterm is 'n terminale tipe vir vensters vertoon in die X Window System. xterm-kleur is 'n variasie van die wat toelaat dat verskillende kleure. Hoekom moet ons definieer dit? Wat is dit goed vir? Opdragte wat op die skerm soos die redakteur herrangskik stuur die besonder rye, genoem ontsnapping rye, 'n terminaal of 'n venster om dit te herrangskik en so meer. Diegene rye is verskillend vir verskillende tipes van terminale. Dit sê dit wat om te gebruik. Soms is daar kwessies is daar. Jy mag dalk wil om dit te verander. As dinge nie werk nie, soms die terminale tipe is ingestel verkeerd is, kan jy dalk om dit te los deur die herdefiniëring van die term veranderlike. In hierdie gevalle, die verandering van een veranderlike, die omgewing veranderlike of die dop veranderlike, moet die ander een verander. Ek deur ervaring ontdek het dat die verandering term in hoofletters nie altyd verander dop veranderlike term in klein letters. Dit is 'n fout. Ek weet nie of dit is altyd waar. Die meeste van die tyd wat dit is nie waar nie, maar dit kan wees. So as jy 'n verandering, net seker te maak dat uit. Dit is nie dikwels dat jy moet besef dat die waarde te verander nie, maar een keer in 'n rukkie wat jy doen. Omgewing veranderlike gebruiker. Weereens, omgewing veranderlike in hoofletters, dop veranderlike in klein letters. Dit is jou gebruikersnaam. Dit is slegs onder baie uitsonderlike omstandighede wat jy graag wil hê om dit te verander. As jy jou gebruikersnaam is iemand anders, kan dit gooi allerhande dinge af. Tuisgids, gebruiker se tuisgids. Weereens, sal jy nie wil om dit te verander. Kennisgewing in al hierdie gevalle en die een wat ons oor te dek, die pad veranderlike, omgewing veranderlike is in hoofletters en die gebonde dop veranderlike is in klein letters. As jy een van hulle verander, moet jy die ander verander. Hierdie soort van binding kan nie vasgestel word as jy nie kan 2 veranderlikes bind, anders as hierdie 4, en die binding in hierdie veranderlikes kan nie ongedaan gemaak word nie, jy kan hulle nie skei nie. So het hierdie 4 pare veranderlikes gebind. Hulle sal altyd wees. Geen ander sal wees. Daarbenewens, sou dit moontlik wees om veranderlikes met dieselfde name te skep van die teenoorgestelde tipes. Jy kan 'n dop veranderlike term maak in klein letters of 'n omgewing veranderlike term in hoofletters. Diegene veranderlikes sou onafhanklik van hierdie veranderlikes gepaar word en hulle sal onafhanklik van mekaar wees. Ek kan nie dink hoekom jy sou doen nie, tensy jy wil hê mense te verwar. Hierdie een hier, pad veranderlike, dit is 'n baie belangrike een. Nog 'n ding hier is dat daar gevalle kan wees veranderlikes met soortgelyke pare name wat nie gebind is aan mekaar. Daar kan veranderlikes, Shell en Shell, in kapitaal en klein letters. Gebaseer op die naam, jy weet nie of dit veranderlike is 'n dop veranderlike of 'n omgewing veranderlike, en hulle is nie gebind aan mekaar. So dat die soort van saam name impliseer nie gebonde veranderlikes. Die pad veranderlike, wat ek was voor wys, is 'n lys van padnamen waarin die dop lyk vir opdragte. Kom ons kry oor hierdie venster hier en ons sal doen echo $ PATH, hoofletters - omgewing veranderlike - echo $ pad, klein letters - dop veranderlike. Let daarop dat die lys van gidse is dieselfde. Hierdie is gebind. Verander, jy die ander verander. In die omgewing veranderlike die elemente word geskei deur kommas. Let daarop dat. Die dop veranderlikes word deur spasies geskei. Hierdie omgewing veranderlike is 'n enkele string. Die dop veranderlike is 'n skikking. Die Bourne dop het nie skikkings. Bash doen nie, maar dit is reeds 'n vaste deel van die dop. Dit is 'n enkele string en nie 'n skikking. Die C-dop altyd skikkings het. Die skikkings is baie makliker om te werk met. Jy kan verwys na dele daarvan. So eggo $ pad [1] en ek kry / usr / bin, die eerste element. Weereens, onthou dollar-teken staan ​​vir die laaste deel van die geskiedenis lys. Wat gebeur daar? Dit probeer dollar teken om te vind as 'n veranderlike simbool. Ek ontsnap nie. Oeps. Dit sou nie neem dat óf. Sommige van hierdie dinge nie so goed werk nie. Miskien sal ons net laat dit uit. Asterisk verwys na die hele ding, maar dit is wat jy kry as jy nie 'n element spesifiseer nie. Nog 'n manier dat verskeidenheid veranderlikes kan gemanipuleer word, aantal elemente is daar, 7 elemente. Hier het ons die pond teken voor die veranderlike naam. Hier is 'n ander een. Sit 'n vraagteken daar. Dit is 'n logiese waarde. Dit dui daarop dat die veranderlike bestaan. Dit is 'n ander manier van werk met veranderlikes. Dit, op die pad, het nie 'n skikking veranderlike te wees. Dit kan enige veranderlike. En as ek dit doen, is daar geen so 'n veranderlike en ek kry 'n 0. Nog 'n klein ding is daar oor die veranderlike evaluerings. Terug na hierdie een hier, as vir een of ander rede wou werk met hierdie eerder as om te werk met die skikking, die dop veranderlike, Daar is opdragte wat hierdie dinge kan skei op grond van die kolon. In werklikheid, as jy gaan hierdie te doen in die Shell moontlik, 'n soort van 'n script, sou dit waarskynlik wees hoe jy dit sou doen. Maar in die C-dop dit is baie makliker om die skikking te gebruik. In die Bourne dop, is veranderlikes wat deur 'n enkele uitdrukking soos hierdie, soos die manier waarop jy kan 'n veranderlike toewys in 'n programmeertaal, en hier moet daar geen spasies nie. Dit is nodig dat dit net 1 string. In die Bourne-tipe doppe, alle veranderlikes is dop veranderlikes. Omgewing veranderlikes is 'n subset van die dop veranderlikes. Hulle word onderskei van die nie-omgewing veranderlikes deur die uitvoer. Die opdrag om dit te doen is die uitvoer, soos die uitvoer drukker. As ons so 'n veranderlike te definieer, As ons wou 'n druk opdrag om dit te vind, sou dit 'n omgewing veranderlike te wees, en dit is hoe ons maak dit een. Hier is daar iets soort van verwarrend. Hierdie uitdrukking, uitvoer na die omgewing, is afgelei van die Bourne dop konsep, En tog het daardie uitdrukking gebruik in beskrywings van die C-dop, waar daar nie so 'n opdrag as die uitvoer. As jy net sê uitvoer deur self, kry jy 'n lys van uitgevoer - So as ek net nie die uitvoer van hier, nie so 'n ding. Goed, daar gaan ons. Hierdie dinge, deur die manier, is ook bepaal deur die dop. Ek het nie enige van hierdie definieer deur myself. Die Shell allerhande dinge deur die self. Dit moet dinge outomaties doen. In Bash of Korn dop, kan jy 'n opdrag loop soos hierdie, wat beide gee 'n veranderlike 'n waarde en uitvoer om dit in 1 opdrag. In die Bourne dop hulle het 'n aparte opdragte soos uitvoer 'n te wees. Hier is 'n ander aspek wat is verwarrend. Die stel opdrag in die C-dop definieer veranderlikes en met geen argumente vir jou vertel wat die veranderlikes se waardes is. In die Shell, die opdrag set met geen argumente nie dieselfde ding, maar met argumente dit nie iets heel anders. So dit is die verskillende argumente hier. Sommige van hierdie is die omgewing veranderlikes, sommige van hulle is dop veranderlikes. Almal van hulle is dop veranderlikes regtig nie. Sommige van hulle is omgewing veranderlikes. Die opdrag set met argumente kan gebruik word om te werk op die posisionele parameters na 'n script, wat is 'n manier om hulle almal op een slag. Ons kan nie regtig gaan in vandag. Dit kan ook gebruik word om dop gedrag te verander. Veral in Bash daar veranderlikes wat sal bepaal hoe die dop optree. Dan ook net hierdie een opdrag wat jy kan sien, hierdie bevel. Set gevolg deur veranderlikes en veranderlike tipes word gebruik in die Korn en Bash doppe. Dit is nie verpligtend nie, maar dit kan gebruik word om die waardes van veranderlikes te beperk, wat nuttig foute te voorkom kan word, en dit is redelik algemeen. So is ek net noem dat in die geval dat jy dit iewers sien. Die waar opdrag. Onthou ek vroeër genoem die waar opdrag in die C-dop, wat kan vertel nie die plek van 'n bevel padnaam. Hier is bevel vervang. Jy moet vind op jou sleutelbord iewers 'n karakter wat lyk soos hierdie. Die plek op die sleutelbord gaan wissel. Ons het dit genoem backquote. Dit is ongeveer die grootte van 'n kwotasie. Dit gaan van links bo na regs onder. Hier op my Mac sleutelbord dit is in die boonste linkerhoek. Dit karakter kan gebruik word om 'n opdrag binne 'n bevel uit te voer. As jy 'n uitdrukking in backquotes, daardie uitdrukking is 'n opdrag, is dit hardloop. Die uitset van daardie bevel word dan vervang vir die hele backquote uitdrukking binne 'n langer opdrag wat loop dan met die opbrengs as deel van sy string van argumente en so meer. Hier is 'n opdrag wat gebruik maak van dit. Kom ons demonstreer die operasie hier. Kom ons gaan hier, neem die backquotes. Beheer van 'n kry my aan die begin van die lyn met die Emacs redigering sintaksis. Tot dusver het die padnamen is wat waar kom, maar toe ek dit doen soos hierdie, is dit dan prop in die lys van padnamen in die plek van hierdie hele backquote uitdrukking en lopies LS-l op hulle. Soort van gerieflike, huh? So dit is een ding netjies. Dit is hoe backquotes werk. Kom ons gaan af 'n bietjie verder nou. Dit is aliasse. Ek het eintlik die gebruik van hierdie. Ek sal probeer om dit in te kry met 1 redigering operasie. Goed. Nou laat ons sien hoe die definisies uitgekom. alias LWH my vertel hoe dit gedefinieer word. Let daarop dat dit is net dit nie, maar die buitenste aanhalings is geneem uit en die uitroepteken is geneem uit. *, Volledige lys van al die argumente. In 'n alias definisie dit terug sal van toepassing wees waar ek dit gebruik. LWH ksh bash. Goed. Sien hoe dit werk? Dit spaar my 'n paar tik. Kom ons gaan 'n bietjie net iets anders om hier te noem. Let hier die verskillende doppe. Ek moet dit voor genoem het. Die csh het 'n 2 hier en so ook / bin / tcsh. Ons kon vestig deur 'n ander manier wat dit is eintlik dieselfde lêer. Onthou ek het gesê as jy tik sh jy bash. Tik hierdie en jy kry hierdie. Maar dit is nie gekoppel. Diegene het enkele mense daar. En dit is nie die aard van die lêer wat kan 'n ander een noem. So dit is afsonderlike lêers, die C-dop kinders is dieselfde lêer. Terug hier, die ander een hier, hierdie alias, daarop dat hardloop hierdie opdrag, lêer. Dit alias loop nie. File vertel jy die tipe van 'n lêer. So FWH ksh bash. Goed. Dit is die opbrengs van die lêer opdrag. Ek weet nie of jy weet wat dit beteken hier, Mach-O universele binêre met 2 argitekture. Daar is 2 moontlike verwerker tipes in Mac, en 'n paar programme is geskryf om in staat wees om te hardloop met beide, en die lêer opdrag kan bepaal dat, so dit is wat dit beteken nie. Beide van hierdie lêers is geskryf dat die pad. So sien ons hoe die alias werk, sien ons hoe die backquote werk, ons sien hoe die werklike lêer LS of lêer werk. Dit kan nie werk nie. Probeer "waar waar" en "LWH waar". Goed, kom ons probeer dit. waar waar. waar is 'n dop ingeboude. Onthou vroeër ons gewys dat Bash het nie waar. As jy tik, waar in die Shell, kry jy 'n fout boodskap. Dit is net 'n deel van die dop, eerder as om 'n aparte opdrag. Wat gebeur as ek tik LWH soek waar? Sien wat daar gebeur. Gehardloop waar waar, het hierdie produksie, en dan probeer LS te hardloop as l op die plek waar 'n dop ingeboude. waar is daar, maar die ander mense nie bestaan ​​nie. Nie een van hierdie bestaan ​​nie, eintlik. Sodat nie altyd werk nie, en dit illustreer ook hoe sommige dinge doen nie heeltemal wat jy dalk gedink het. Kom ons gaan 'n bietjie verder hier. Dit is hier is in Bash. Dit is ook die opdrag vervang soos die backquote. Maar in teenstelling met backquote, dit maak gebruik van hierdie veranderlike styl. Daar is 'n aantal uitdrukkings wat begin met 'n dollar-teken, en terwyl dit is nie veranderlikes, het hulle geleen om die gebruik van die dollar-teken 'n uitdrukking van 'n soort aan te dui. Dit kan omring word deur hakies of hakies of dubbel hakies, wat 'n ander doel. Enkele hakies hier is 'n bevel vervang, net soos die backquotes. Double hakies is eintlik 'n rekenkundige operasie. Daar is ander syntaxes, ander bedrywighede. Backquote sintaksis is beskikbaar in Bash. Maar hierdie een is beter. Dit is veel makliker om te lees en dit laat broei. Jy kan binne (opdrag) $ n ander opdrag, iets soos - Ek kry 'n lys daar. Dit sal werk as ek die backquote ook. Wat as ek wil iets te doen - Jy sal waarskynlik nie eintlik gebruik van hierdie opdrag, maar hierdie interne opdrag vervanging eggo die name van al die lêers wat begin met 'n, dan is hierdie een loop LS-l op die lêers, en dan hierdie een eggo net die uitset. Jy sal waarskynlik nie doen nie, jy net wil nie die eggo of LS, maar dit illustreer hoe die nes van opdragte werk. So net nog 'n kenmerk hier.  Ek het dit vroeër, dat wanneer jy waar in die C-dop, tik werke in die Bourne-tipe doppe vir die opspoor van opdragte. Ingeboude opdragte, net wat ek daar gesê. Opdragte is deel van die dop, soos waar. Wanneer die dop voer 'n opdrag soos LS, is dit geplaas om dit deur middel van die pad, vind dit in sommige Gids iewers, lees wat in die geheue, skep 'n nuwe dop, lees die opdrag LS of wat ook al in die dop waar die omgewing veranderlikes is reeds geleë, en dan dra dit uitvoering om dit te. Ingeboude in bevel, die kode vir daardie bevel is binne-in die dop, sodat die dop net begin uitvoer deel van sy eie kode. waar so 'n bevel. Dit raak eintlik vinniger. Dit hoef nie iets in die geheue te lees nie, dit is reeds in die geheue. Ingeboude opdragte altyd voorkeur bó opdragte met dieselfde naam. Opdragte wat in dopgehou in die pad kan dieselfde naam het, opdragte in verskillende dopgehou, lêers in verskillende dopgehou. Die een wat vroeër in die pad kom, is die een wat jy kry. As daar 'n ingeboude in bevel, het jy altyd kry. Daar is geen manier om dit 'n laer voorrang as 'n opdrag in die pad te gee. As jy wil hê dat die pad bevel te kry, kan jy tik die volle padnaam. As daar 'n opdrag waar in die pad iewers, jy kan / bin / waar tik en jy sal dit kry. As jy nie wil hê dat die hele padnaam te tik, kan jy 'n alias definieer. In werklikheid, as jy het die alias dieselfde naam as die gebou in opdrag, sou dit werk omdat die alias definisie geëvalueer voor die dop bepaal dat dit 'n ingeboude in opdrag wat uitgevoer moet word. Dan is hierdie kry 'n bietjie meer ingewikkeld met 'n paar opdragte hier. Die geval van sommige opdragte is eintlik gebou in opdragte en in die pad. Een van hulle is eggo, die opdrag Ek het net 'n kort rukkie gelede gebruik in daardie voorbeelde. Echo is 'n opdrag in die pad en dit is in elke dop. Hulle noodwendig al tree nie op dieselfde manier. Dit was oorspronklik 'n bevel net in die pad. Dit is later in die doppe gebou. Want daar is opsies wat afhanklik is van die omgewing en die command line opsies, die gebou in opdragte geskryf dieselfde as die opdrag wat was in die pad te kan funksioneer, dit is onwaarskynlik dat hulle wil hê dat die manier geskryf gewees het As die opdrag nie reeds geskryf vir die pad. So dit het newe-effekte. Sy geskiedenis het gevolge hier. Daar is opsies wat daar. Daar is ook 'n opsie gedefinieer deur 'n veranderlike in die tcsh genoem echo_style. Dit is een van die veranderlikes wat die manier waarop ECHO werk verander. Daar is ander gevalle waar jy kan 'n veranderlike toewys wat verander die manier waarop die dop operasie, insluitend 'n ingeboude in bevel, werk. Dit sou nie enige iets anders raak aangesien ander opdragte nie toegang tot die dop veranderlikes het nie, net die omgewing veranderlikes. Maar dop bedrywighede kan die dop veranderlikes lees. Dit sal nie werk vir csh. Dis net tcsh. Dit is een van die verbeterings. Parsing het rye wanneer dit evalueer metakarakters, wanneer dit evalueer veranderlikes, aliasse, geskiedenis verwysings. Daar is 'n bepaalde volgorde vir hierdie dinge. As dit nie in 'n bepaalde volgorde en kry om iets wat 'n uitdrukking van 'n soort wat reeds geëvalueer word, sal dit nie weer te evalueer. As dit nie, dan sal dit net verby op die karakters. So as evaluering van 'n paar uitdrukkings soos command vervanging of veranderlike of wat ook al wat aanleiding gee tot 'n uitdrukking wat jy graag wil hê om geëvalueer te word, wat sal werk net as wat evaluering later in die volgorde plaasvind. Ek hoop ek wat duidelik daar. Dit ontleding ry, 'n operasie in die C-dop, is nie dieselfde vir ingeboude opdragte soos dit is vir nie-ingeboude opdragte. Ek is nie seker oor Bash daar. Byvoorbeeld, as 'n dop veranderlike het 'n geskiedenis verwysing, sou dit waarskynlik nie weer terug in die geskiedenis gaan. Dit sou net die uitroepteken. In werklikheid, kan ons net probeer dat uit nou. a = en ons sal dit in daar te vestig. O, wag. Jammer. Ek het dit gedoen in die bash. Ek wou dit hier doen. Sien, so dit het nie dat die geskiedenis verwysing evalueer want dit was al verby die punt van die evaluering van die geskiedenis uitdrukkings wanneer dit geëvalueer die veranderlike. So dit is 1 effek van ontleding. En weer, is 'n ingeboude in bevele nie gedoen op dieselfde manier. Alle regte. Kom ons gaan na die volgende een hier. Dit is bedoel om 1 lyn te wees nie, maar dit maak dit makliker om te lees. Wat beteken dat jy doen? Jy kan onthou dat ons sterretjies as lêernaam wildcards kan evalueer, en daar is ander lêernaam wildcards soos die vraagteken en bracket uitdrukkings. Daardie soort evaluering globbing genoem. stel noglob aan die begin van hierdie bevel sê dit nie doen nie. ontstel noglob sê gaan terug na dit te doen. Let daarop dat stel glob wil nie hê dat effek. In gewone taal, sou stel glob of ontstel noglob blyk te wees ekwivalent, maar hier is dit nie. Dit is ontstel noglob. Nou tStel. tStel staan ​​vir terminale stel. Dit is nie wat dikwels nou gebruik, maar voor te venster stelsels beskikbaar geword het en jy het 'n enkele terminaal, kan jy die tipe om te bepaal. En as daar iets is oor 'n Ethernet of van die netwerk kom, wil jy dalk om te sê dit is 'n VT100. VT100 is soort van 'n standaard in die terminale besigheid. Dit kom van die Desember terminale. As jy net doen inbel - sien dat? Dit gaan terug 'n manier, huh? So as ons net nie tStel hier, as ek net doen tStel, is dit die Herstel my terminale, maar jy het niks gesien nie. Dit het nie regtig verander nie. -S Goed. setenv KWARTAAL xterm-kleur. Ons weet reeds dat die term is vasgestel dat die pad, so dit het nie verander nie. Dit is die manier waarop ons wil hê om dit te doen. Maar let op dat hierdie opdrag, tStel-s, net uitset hierdie opdragte. Dit het nie hardloop hulle. Dit het nie hierdie gebooie loop nie, dit uitset hulle. So dit is bedoel om bevele wat dan uitgevoer word om te produseer. Jy onthou die bevel in daardie lêer Ek het net het jy 'n Q in dit. So laat ons dit doen. Die Q onderdruk sommige uitvoer, maar dit maak nie saak hier, soos jy kan sien. Ek is net om dit te doen om te wys dat dit nie saak maak nie. Dit is in backquote sintaksis. Let op die backquote hier, backquote hier. Ek laat hierdie dinge hier. Dit is gevalle van vertel dit wat om te doen in die geval van spesifieke tipes van terminale - Ethernet, netwerk, inbel, wat jy het. Dit maak nie saak hier, want ons is nie eintlik enige van hierdie dinge. Ek is net ter illustrasie van die opdrag. As ek dit doen met die backquote, wat gaan ek te kry? Let ook hier dat dit sluit in die versameling noglob en die ontstel noglob, So dit is nou oorbodig die definisie. Dit was nie altyd waar nie, maar nou is hulle in hierdie opdrag. Maar laat ons kyk wat gebeur as ek doen wat en gaan na die begin van die lyn met die beheer oor 'en ek doen nie. Goed, gestel: Opdrag nie gevind nie. Dit is soort van vreemd, is dit nie? stel is 'n bekende opdrag. Dit is deel van die dop. stel: Opdrag nie gevind nie? Hoekom is dit? Hmm. Wel, laat ons dink oor hierdie. Dit loop 'n backquote bevel vervang, en wat gebeur op 'n sekere deel van die volgorde van die ontleding van die opdrag. stel is 'n ingeboude in bevel. So deur die tyd wat dit doen wat bevel vervang, dit is reeds gekry verby die punt van die identifisering van ingeboude opdragte. So dit behandel soos asof dit 'n opdrag in die pad. Nodeloos om te sê, beteken dit nie vind nie, en jy kry 'n fout. Wel. Daar is 'n voorbeeld van ontleding ry. En wat doen ons daaraan? Let op hierdie baie interessante opdrag hier, eval. Ek wonder wat dit beteken. As jy kyk na die handleiding - en laat ons net doen wat om te wys hoe verwarrend hierdie handleidings is - man tcsh, verward handleiding, vind dinge hier is nie maklik nie. Hier gaan ons, eval arg, sodat ons 1 of meer argumente kan hê en daar is 'n lys van die dinge wat daar. Behandel die argumente as insette tot die dop en voer die gevolglike bevele in die konteks van die huidige dop. Dit word gewoonlik gebruik om opdragte gegenereer as gevolg van die opdrag uit te voer of veranderlike vervanging, want ontleding plaasvind voor die plaasvervangers. Baie goed. En hier is hulle selfs verwys na die tStel opdrag vir 'n voorbeeld gebruik soos die een wat ek net het jy. Nou het ek die venster om terug na 'n nuttige plek kry. Kom ons kry hier en ons sal sien wat eval word net voor dit. So laat ons sien wat gebeur as ons het - hier gaan ons met die pyle aan daardie bevel en beheer oor 'n aan die begin, eval. Goed, so dit werk. As jy dit doen eval, neem dit wat kom nadat dit en maak dit 'n opdrag. Dit stel jou in staat om te ontleed nie in wese is dit twee keer. Die artikel hier loop die opdrag binne die backquotes, kry die uitset. Uitset is veronderstel om te loop nie as daardie opdragte hier soos hierdie op hierdie een en hierdie een. So daardie opdragte is nou hier in hierdie volgorde, maar hierdie is 'n ingeboude in opdragte en dit nie kan kry hulle dadelik. So ons gaan na eval, eval optel wat op, begin die hele ding alles weer, en dit werk. 'N voorbeeld van beide backquoting, eval, ontleding, gevolge van ontleding, en 'n opdrag wat waarskynlik baie min gebruik vir jou vandag. Goed. Alle reg, Umask. Kom ons kyk hier by hierdie opdrag, Umask 022. Ek wonder wat dit beteken. Kom ons tik net Umask met niks nadat dit. 22. Goed. 022 en dit weer doen. Soos jy kan raai, Umask met geen argumente vertel jy die huidige masker; Umask met argumente maak dit nie, maar dit was die een wat ek reeds gehad het. Wat beteken 022 beteken? Dit is hier om die beskerming vir 'n lêer. Hulle bepaal wat toegelaat is om te lees, skryf of voer die lêer. Beskerming is ook regte genoem. Die r staan ​​vir lees, die w vir skryf, en die x, wat nie teenwoordig is nie daar nie, staan ​​vir uitvoer. Daar is 3 kategorieë is daar. Die laaste 3 elemente is in die kategorie van die gebruiker. Diegene van toepassing op my, die gebruiker. Hierdie 3 hier is van toepassing op die groep. Die lêer behoort aan 1 groep, kan die gebruiker behoort aan verskeie groepe, maar as die gebruiker is in die groep waaraan hierdie lêer behoort, dan is hierdie beskerming sal geld vir hom of hy is nie die gebruiker. En hierdie een is almal anders. Hierdie kategorieë is wedersyds uitsluitend. Die gebruiker beskerming van toepassing vir hom die groep beskerming van toepassing op lede van die ander groep as die gebruiker, en die ander te beskerm net van toepassing op mense anders as die gebruiker en die lede van die groep. As daar 'n r of AW of 'n x, beteken dit dat die beskerming verleen word. As daar 'n koppelteken, beteken dit dit is nie. Daar is eintlik ander dinge wat ingestel kan word hier Behalwe dit, wat ek sal nie in nou. Die Umask definieer 'n standaard vir lêers wat jy skep. En as 'n masker, basies sê die stukkies wat jy nie opgestel. Hoe het dit geword stukkies? As jy dink van elk van hierdie as 'n oktale getal, dit is die 1'e bietjie, dit is die 2's, dit is die 4s. So 0 tot 7 sal beskryf wat n kombinasie van r's, w's, en x se jy vir hierdie 3 en dan 'n soortgelyke nommer vir hierdie en dan vir hulle nie. So 022 beteken 0 vir ander, 2 vir die groep, 2 vir die gebruiker. Maar dit is 'n masker. Die masker is wat jy nie het nie. Ek is jammer. Ek het net jy het dinge in die verkeerde volgorde. Dit is die eerste 3. Hierdie 3 is die gebruiker, hierdie 3 is die groep, hierdie 3 is die ander. Jammer ek het julle dit in die verkeerde volgorde. Die 0, wat is die eerste van die, nie die waarde vertoon, Maar as 'n aantal nie daar is nie, is dit 'n 0. Dit beteken dat al 3 van hulle sal toegelaat word nie. Let daarop dat in hierdie spesifieke een die x word nie toegelaat nie. Die rede hiervoor is dat die dop in staat is om te bepaal of 'n lêer uitgevoer moet word of nie. Aangesien dit nie 'n uitvoerbare lêer, het dit nie stel die x. Die 2 beteken dat toestemming, die tweede kategorie hier skryf, die een in die middel, word ontken. So weer, dit is die dinge wat dit ontken. Wel, is x toegelaat nie, maar dit is nie hier omdat dit nie uitvoerbaar en soortgelyk vir die ander. So dit is 'n algemene Umask. Nog 'n algemene een is 700 - gee jouself alles en niemand anders nie. En daar is ander moontlikhede. Ek kom terug na wat gaan. Met behulp van die geskiedenis wat ek kan terug soek vir wat, LWH daar. Goed. So hier, dit is die doppe. Bash, die eienaar wat stelsel rekening, alles kan doen. Groep en almal kan doen lees of uit te voer, maar nie skryf nie. Hierdie een het nie eens toelaat dat die eienaar dit te skryf. Indien die eienaar wou skryf nie, die stelsel rekening Hy wil hê dat die beskerming van die eerste verander. Maar weereens, die Umask verstek deur 'n masker nie, deur aan te dui die stukkies wat nie sal opgestel word. Dit is tipies in een van jou inisialisering lêers, wat is die. Cshrc vir die C-dop of die. profiel vir die Bourne-tipe doppe. Dit kan elders ook as daar ander inisialisering lêers op die stelsel. In elk geval, dit is Umask. Daar is iets soort van vreemd hier, en dit is die rede waarom daar 'n enkele opdrag vir hierdie? As ek skryf van hierdie, sal ek dit 'n veranderlike, Umask = 'n waarde maak. Hoekom is daar 'n hele opdrag net vir hierdie doel? Die rede hiervoor is dit gaan net terug na die oorsprong van Unix. Unix was net 'n paar programme projek by Bell Labs in die vroeë 1970's. Mense het net saam te program. Hulle het nooit bedoel dat dit tot 'n wêreldwye bedryfstelsel word. Verskillende mense het verskillende dele sonder om te dink baie van hoe hulle gebruik gaan word - eerder oppervlakkig. En dit bymekaar gekom het soos dit, en dit is nog steeds soos wat in sommige opsigte. So wat weerspieël die geskiedenis, en daar is nog steeds hierdie teenstrydighede en vreemde elemente van dit. Goed. Volgende een hier. Soos ek vroeër geskryf het, is die C-dop nie regtig gebruik baie vir ontwikkeling, hoewel dit kan wees. Dit voer stadiger, weer die trade-off tussen interaktiewe gebruik, wat meer verwerking betrokke as spoed, wat kan doen sonder die verwerking. Die ekstra funksies bygevoeg tot die Bourne dop deur die Korn en Bourne-weer doppe nie lyk om hulle te vertraag, en ek weet nie hoekom dit is. Dit mag dalk net 'n beter ontwikkeling, maar ek is nie in 'n posisie om te weet. Spoed hier is eintlik nie so 'n groot deal, maar dit word genoem. Die rede hiervoor is dat die dop skrifte eintlik redelik vinnig. As daar 'n klomp van opdragte soos in 'n Berekende program, sou jy waarskynlik nie doen dit in 'n skulp script. Die bedrywighede daar is redelik eenvoudig en duidelik. Die mense wat ek ervaar het wat te stadig behels herhaalde aansoeke van stadige opdragte. Vroeër het ek genoem die stroom editor sed. Daardie bevel is stadig. As jy voer sed baie keer, sal jy 'n stadige script kry, maar dit is nie die dop wat is stadig. Loop dit in die Bourne dop sal nie veel vinniger as loop dit in die C-dop, Hoewel daar is dalk 'n paar voordele daar. Die bykomende ontwikkeling vermoëns, aan die ander kant, beduidende redes waarom jy die Bourne-tipe doppe sal gebruik. C-dop het vreemde eienskappe na dit - die feit dat jy nie weet wanneer 'n veranderlike is 'n dop veranderlike of 'n omgewing veranderlike. Dit kan baie verwarrend wees. Dit is nie so maklik om te skryf Net op grond van jou ervaring van die ontwikkeling in ander tale. Ek dink jy kan vind die Bourne-tipe doppe meer in ooreenstemming met jou ervaring. Sommige skrifte, al is, kan duisende lyne in lengte. Diegene wat ek gesien word gebruik vir lap bedryfstelsels. Diegene kan baie stadig uit te voer, maar jy diegene loop nie baie dikwels. Dit is eers wanneer jy doen lap, en dit is net die stelsel bestuurder wat dié dinge doen, so dit is nie regtig veel van 'n probleem. Diegene wat honderde lyne lank eintlik voer redelik vinnig. Waarin hierdie hier, wat is die uitbreidings? Ek het reeds genoem 'n paar van hulle - skikkings, berekeninge, die $ () uitdrukking vir berekeninge in die Shell, die ander soort bevel vervang. Daar is verskillende soorte van die toets opdragte deur wat jy kan doen voorwaardelike toetse op die bestaan ​​van 'n lêer of ander dinge. Laas hier, hierdie bevel hier. Wat beteken dit doen, en hoekom sou enige iemand dit gebruik? printenv veranderlike. Ons weet wat printenv doen. Dit vertel ons die waarde van 'n veranderlike. En printenv veranderlike sal nie vir ons sê baie, want daar is nie so veranderlike. Leeg. Maar kom ons gee dit iets betekenisvol. Dit is nie daar nie. Goed. Ek dink ek het nooit gedefinieer nie. Kom ons kyk net my omgewing. Dit is nog 'n opdrag wat jy kan jou omgewing inspekteer. Daar is 'n goeie ou redakteur, die een wat ons gesien het voor. Wat beteken dat jy doen? Hier het ons 'n backquote uitdrukking. Onthou, dit is die C-dop. So printenv Editor gee ons 'n waarde van redakteur. Dit is vi. En dan sal dit wat waarde ingestel op veranderlike a, die opdrag set. So as ek nou doen echo $ a, ek kry vi. Dit lyk nie vreeslik nuttig. Dit is egter nie eintlik 'n doel. Omdat ons weet nie of 'n veranderlike is 'n dop veranderlike of 'n omgewing veranderlike deur gebruik te maak van die dollar teken evaluering sintaksis, kan ons printenv gebruik om seker te maak dat dit 'n omgewing veranderlike nie. So as daar 'n dop veranderlike redakteur, sou dit nie gekry het nie. Dit werk slegs met die omgewing veranderlike. As daar 'n dop veranderlike en ek wou die waarde daarvan, Ek wil hê 'n ander manier om dit te doen om uit te vind. Een manier om dit te doen sou wees om deur te doen stel en pype. Dit is een van die metakarakters, spesiale karakters. Dit stuur die opbrengs van stel na iets anders. Kom ons kyk wat ons daar kon vind. Niks nie. Goed. Laat ons net sien wat daar alles saam. Dit was echo_style, die een wat ek voorheen genoem. Goed, laat ons dit doen. Onthou ek voorheen genoem, echo_style bepaal die manier waarop die eggo opdrag sal loop. bsd staan ​​vir Berkeley Standard Distribution. Dit is die Berkeley Unix uit die 1970's. Dit is een van die maniere wat eggo kan hardloop. Die opstel echo_style tot daardie waarde in die TC-dop sal veroorsaak eggo die manier om op te tree. So stel dit doen, maar stel net kry dop veranderlikes. Dit sou nie vind redakteur, wat nie 'n dop veranderlike. Niks nie. So dit is 'n manier om te onderskei hulle. Maar die feit dat jy hoef te gaan deur 'n paar vreemde opdrag soos wat om te onderskei tussen dop veranderlikes of omgewing veranderlikes toon die soort onprakties aard van die C-dop vir sekere doeleindes. En nou, die laaste en miskien die minste nie, is dit die man bladsye. Diegene van wie jy ken, die man is die opdrag kort vir die handleiding. Die man bladsye vir die dop is moeilik om te lees. Hulle is baie lank. Hulle is georganiseer in 'n manier dat dit moeilik maak om te vind wat jy soek. So as jy op soek is na iets met 'n doel, jy mag nie weet of dit die doel is om 'n dop veranderlike of iets anders, sodat jy mag nie weet waar om te kyk vir dit. Jy kan kyk vir verskillende snare, maar die snare word dikwels herhaal. So dit is oor die algemeen moeilik om te lees. Ons het net gekyk na die TC-dop man bladsy 'n bietjie voor die eval opdrag te vind. Sommige dinge gaan vinniger. Een benadering is om te soek na 'n string. Jy kan die pager gebruik. Pager het die streep te kyk vir 'n opdrag of 'n string in 'n pager operasie. Man by verstek sal gebruik pagers, hetsy meer of minder wees. Ek weet nie of jy vertroud is met diegene, maar dié kan lêers bietjie wys bietjie. Ek het al met behulp MINDER hierdie spesifieke lêers wat ons hier het, te vertoon. Jy kan daar binne soek. Jy kan probeer om met behulp van verskillende soek snare. Ook man bladsye in verskillende bedryfstelsels kan nie dieselfde wees nie. Hulle kan aparte bladsye vir csh en tcsh. Hulle is nie op die Mac, maar hulle kan wees as dit is afsonderlike instruksies. As k nie regtig Bash noem, is daar waarskynlik 'n aparte man bladsy wees. Sommige stelsels het 'n aparte man bladsye net vir die C-dop ingeboude opdragte. Soms as jy wil 'n beskrywing van 'n ingeboude in bevel om te lees dit is ook in die pad, soos eggo, moet jy die man-bladsy op daardie opdrag op ECHO te lees om te bepaal hoe dit sal werk as 'n gebou in opdrag selfs as jy nie die roeping van die gebou-in-bevel. Dit is 'n nadeel van die bedryfstelsel in die algemeen, nie net vir die doppe, Hoewel die doppe in die besonder die man bladsye is baie lank, deels omdat hulle het nuttige funksies bygevoeg aan hulle, wat dalk 'n positiewe. Goed. Is daar enige vrae? Enige onderwerpe wat jy wil om te laat opkom? Enigiets wat hier ter sprake? Wel, dit is baie mooi praat met julle almal. Ek hoop jy het iets uit van hierdie seminaar wat nuttig sal wees vir jou in jou toekoms. [CS50.TV]