>> [Seminar - predhat Unix, Mjediset]
[Douglas Kline - Harvard University]
[Kjo është CS50. - CS50.TV]
>> Tema e sotme është shell Unix.
Unë jam Douglas Kline, ekspert, ose së paku të arsyeshme përdorues kompetent, e shell.
Një predhë është interface për përdoruesit të sistemit operativ të kompjuterit.
Emri është mashtruese si, ndryshe nga një predhë kafshës,
e cila është e vështirë dhe mbrojtëse, shell kompjuter lejon për komunikim.
Pra, membrana poroze ndoshta do të jetë një metaforë më e mirë.
>> Shell origjinal për Unix është shell Bourne.
Bourne është shkruar B-O-u-R-N-E.
Bourne ishte një nga autorët origjinalë të Unix,
dhe kështu shell është emëruar pas tij.
Emri i kësaj shell si një komandë është vetëm thjesht sh.
Kjo është komanda që ju mund të ekzekutojë.
Shell fillon në hyrje.
Kur ju hyni në kompjuter, shell vetëm fillon drejtimin për ju,
dhe kjo është ajo që e merr komandat tuaja.
Ajo mund të fillojë herët e tjera gjithashtu.
Nëse ju të sjellë një dritare me asnjë indikacion tjetër, ajo do të fillojë një shell për ju.
Kjo është se si ajo është se ju mund të shkoni në një dritare dhe të filloni të shtypni komandat e
dhe kështu me radhë atje edhe pse ju nuk hyni në atë dritare.
Përveç kësaj, në qoftë se ju bëni një hyrje të largët,
atëherë ajo do të fillojë një predhë në kompjuter në distancë.
Dhe kjo është e mundur për të kandiduar komandat pa një shell interaktiv.
Kjo mund të thotë brenda operacionit tuaj të tanishme,
dhe gjithashtu mund të thotë një operacion të largët.
Ju mund të dërgoni një komandë në një kompjuter tjetër,
e cila përfshin filluar një predhë atje.
Në fakt, ajo duhet të përfshijë filluar një predhë atje
edhe në qoftë se nuk është qëllimi juaj i fundit.
Kur diçka fillon si kjo, ajo nuk do të fillojë një shell të ri.
Nëse ju të sjellë një dritare të re, është e mundur për të të treguar atë të sjellë deri një redaktor
apo ndonjë komandë tjetër.
Në këtë rast, redaktori do të fillojë nga e para.
Kur mbaron redaktor, dritare përfundon.
Kjo është pak e pazakontë, por kjo mund të bëhet.
Në ato raste, ajo nuk do të jetë një shell.
Pra, nuk është detyrimisht rasti që një dritare ose disa aplikim i tillë do të sjellë një shell.
Shell >> parses komandat.
Parsing nënkupton identifikimin e elementeve të ndryshme dhe klasifikimin e tyre.
Brenda një komandë, vargu i plotë që ju shkruani,
nuk do të jetë 1 ose më shumë komandat e vetme që do të ekzekutohen.
Elemente të tjera mund të jenë argumente.
Nuk mund të jetë edhe karaktere të veçanta të cilat ndikojnë në ekzekutimin e një komande.
Ata mund të dërgoni e prodhimit diku tjetër se në ekran
nëse komanda zakonisht do ta dërgojnë atë në ekran.
Ajo mund të përcjellim të dhëna, ai mund të bëjë gjëra të tjera gjithashtu.
Nuk janë simbole të ndryshme të tjera, karaktere, dhe kështu me radhë.
Parsing përfshin zbulimin dhe interpretimin ato gjëra.
>> Tani në qoftë se nuk ka më shumë pyetje, që është mjaft e mundshme pasi nuk ka më shumë njerëz,
ne do të shkojmë në në faqen time të ardhshëm këtu.
>> Thashë më parë se Bourne shell është shell fillestar.
Ka edhe të tjerë.
Njëra është C-shell. Komanda është csh.
Emri C-shell është vetëm një lojë fjalësh.
Kjo shell u prezantua me Berkeley Unix në mes të viteve 1970.
Berkeley Unix ishte një ngjarje e farës në zhvillimin e Unix.
Kjo ishte një revolucion i madh dhe ka përfshirë futjen e këtij shell.
Arsyeja për këtë luajtur në fjalë, C-shell,
është se C-shell ka disa karakteristika në të cilat ngjajnë gjuhën C,
të cilat Bourne shell nuk ka -
ose ajo nuk kishte në atë kohë.
Ka gjithashtu TC-shell.
Kjo është një superset e C-skeletit.
Ajo ka karakteristika të tjera, shumë prej të cilave janë të dobishme për përdorim interaktive,
të tilla si duke kujtuar komandat në mekanizmin e historisë,
të cilat unë do të përshkruaj pak më vonë -
në një mënyrë të thjeshtë, modeluar sipas një redaktor.
Ai ka gjithashtu edhe lidhjet të cilat ju lejojnë për të lidhur një varg të shkurtër kyç për një komandë më të gjatë.
Ne nuk jemi duke shkuar për të marrë në se sot.
Ajo ka disa karakteristika që janë të dobishme për programimin.
Megjithatë, C-shell nuk është përdorur shpesh për programim shell.
Programet shell, në qoftë se ju nuk e dini tashmë,
janë programe që përbëhen nga karakteristikat shell.
Ju mund të kandidojë si këto programe.
Ju shkruani një bandë e komandave shell në një skedar dhe të ekzekutuar file.
Ju nuk keni nevojë për të hartuar atë. Ky është një gjuhë interpretuese.
Fraza C-shell tani është i paqartë pasi ajo mund të referohen vetëm në origjinal C-shell, csh,
ose të gjitha C-predha, duke përfshirë tcsh. Kjo është pak e paqartë.
>> Një predhë më vonë është Korn shell, KSH, i quajtur sipas programues, Korn.
Kjo predhë përpoq për të përfshirë në 1 shell
avantazhet e C-skeletit për përdorim interaktiv
dhe Bourne shell për programimin.
Ajo është përdorur si një shell interaktiv me disa njerëz - një e pakicave.
Më vonë edhe pse, nuk ishte një tjetër hyrje, shell bash, BASH,
përsëri një lojë fjalësh, Bourne-përsëri derdh.
Kjo është një zgjerim i shell Bourne. Korn shell është gjithashtu. Dy prej tyre janë.
Ajo ka të njëjtat objektiva të Korn shell të grupohet C-shell-së
dhe avantazhet Bourne Shell në 1 shell.
Shumë prej përmirësimeve të shell Korn janë të përfshira edhe në Bash.
Bash, megjithatë, ka më shumë dhe për këtë arsye është e preferueshme.
Bourne-përsëri derdh dhe shell Korn quhen predha Bourne-lloj
sepse ato përfshijnë karakteristikat e Bourne Shell-së,
të cilat janë të papajtueshme në disa aspekte me C-predha.
Ka predha të tjera përveç atyre, disa të destinuara për përdorim të kufizuar,
ndoshta i kufizuar në disa komandave, ndoshta për qëllime të specializuara, nuk përdoret shpesh.
Mirë >>. Pika Next këtu.
Bash shell është bërë lidhur me forma të ndryshme të Linux.
Unë nuk jam i sigurt nëse kjo është e vërtetë e çdo forme.
Ka shumë forma atje dhe unë nuk e kanë përdorur ata të gjithë,
por në ato që kam përdorur ajo është bërë të lidhur me të.
Deri sa di unë, nuk ka asgjë në lidhje me Bash
që e bën atë më të pajtueshme me Linux
se çdo kombinim tjetër të shell dhe të sistemit operativ.
Unë mendoj se kjo ndoshta vetëm reflekton prirjet e programuesit.
Se ajo ka bërë lidhur me Linux është një tjetër arsye për të preferojnë Bash për KSH
që gjërat janë të ngjarë të jetë e shkruar në të dhe është e mundshme për të përhapur.
Unë do të ju jap arsye të tjera për të cilat më vonë.
Scripts Bourne shell duhet të kandidojë nën shell Korn ose Bash.
Nëse ju shkruani diçka për shell Bourne,
ju ndoshta mund të ekzekutojë atë nën KSH ose bash.
Korn Scripts shell ndoshta do të kandidojë nën Bash, por unë nuk mund të garantojë se.
Më vonë këtu, scripts C-shell duhet të kandidojë nën TC-shell.
C-shell është në të vërtetë kurrë nuk e përdorur gjerësisht për të shkruar
që nga Bourne shell dhe më vonë predha Bourne-lloj ishin të preferueshme për atë qëllim.
Kështu që me të vërtetë nuk është e gjitha se e rëndësishme.
Nuk janë një shumë mjaft e Bourne shell Scripts të shkruara kohë më parë,
para shell Korn ose shell Bourne-sërish u paraqitën.
Ata janë ende në përdorim, pjesë e sistemeve operative,
dhe kështu ju do të gjeni ato në qoftë se ju shikoni në sistemin operativ
ose disa paketat e programeve të vjetra.
>> Bash është në një farë mase duke u bërë një lloj lingua franca për sistemet operative.
Ajo tashmë i është zgjeruar për Windows dhe të VMS.
VMS, në rast se ju nuk e dini, është një sistem operativ të pronarit
i Digital Equipment Corporation e cila është ende në përdorim, në masë të madhe në prapaskenë.
Dhe në qoftë se ajo do të të konkurrojnë në disa sisteme të ndryshme operative,
të ngjarë që njerëzit kanë tendencë të zhvendoset për të.
Por ky zhvillim është relativisht i kohëve të fundit.
Është vetëm fillimi, kështu që unë nuk mund të parashikojë nëse kjo do të kthehet të vërtetë të jetë kjo lloj lingua franca.
Gjithashtu, për shkak se pathname-in file dhe bibliotekat ndryshojnë
në mes të këtyre sistemeve të ndryshme operative,
ju nuk mund të jetë në gjendje për të shkruar një skenar bash në një sistem operativ
dhe pastaj të drejtuar atë në një tjetër.
Ju duhet të jetë në gjendje për të lëvizur atë në mes të ndryshme Unix, Linux
Sistemet operative Mac OS, por jo domosdoshmërisht të Windows ose VMS.
Ju mund të duhet të ndryshojë përshkrimet fotografi shtegun,
dhe disa biblioteka mund të jenë të ndryshme,
të cilat mund të ndikojnë në mënyrën se disa komanda të punuar
apo se si ata të procesit argumentet dhe si.
Përveç kësaj, një tjetër kujdes këtu është se nuk ka garanci
se të gjitha predha të ndryshme që unë kam përmendur - Bourne shell, C-shell,
TC-shell, shell Korn, Bourne-përsëri predhë - do të jenë në dispozicion nën ndonjë Unix
ose Linux apo Mac OS kompjuter.
Ata thjesht nuk mund të jetë atje.
Kjo është një nga këshillon këtu.
Kjo është një kufizim për të ardhur keq që këtu ju dëshironi gjërat për të punuar kudo,
por për fat të keq, ju nuk mund të mbështetet në atë.
Mirë >>. Një tjetër këtu.
Le të thonë se ju doni të shkruani një skenar shell,
një program të përbërë nga komandat shell.
Ju shkruani komandat tuaja, vënë ato në një skedar, dhe të ekzekutuar file.
Çfarë nëse ju doni të përfshijë argumente?
Në rastin e operacioneve të shell, argumentet janë quajtur parametrat ose parametra të pozicionit
dhe ata do të thirresh me një shenjë të dollarit dhe numëror, $ 1, $ 2.
Pra, nëse dorëshkrim ka këtë emër, argumenti im i parë mund të jetë argument i 1
dhe i dytë im të mbetet argumenti 2,
dhe brenda shkrimit tim në qoftë se unë dua të referohen këto gjëra -
le të shuaj këtë që unë nuk jam me të vërtetë duke shkuar për të drejtuar atë -
brenda shkrimin tim unë mund të duhet $ 1 për ta referohen ARG1,
$ 2, i cili do të dalë në këtë mënyrë, arg2.
Pra, këto simbole janë në dispozicion për t'iu referuar argumenteve,
dhe ato që zbatohen për të gjitha predha.
Përveç kësaj, ka karaktere të tjera.
$ * I referohet të gjithë listën argument të gjitha prej tyre.
$ # Referohet numrit të argumenteve.
Përsëri, kjo vlen për të gjitha predha.
Këto simbole, * dhe #, mund të përdoret me këto kuptime në vende të tjera gjithashtu.
Ne nuk do të marrë në atë.
>> Linjë Shell specifier. Çfarë është ajo për të?
Le të thonë se ju keni shkruar një skenar dhe kjo është për një shell të veçantë dhe ju doni të drejtuar atë.
Si mund të dini se çfarë derdh sistemi juaj operativ do të përdorë për të drejtuar shkrimit tuaj?
Në një moment ju mund të supozojmë se do të kandidojë atë në shell Bourne
në qoftë se ju nuk e thoni ndryshe,
por njerëzit nuk janë të shkrimit të shkrimeve në Bourne, predhë që shumë më
dhe ju nuk mund të mbështetet në atë më.
Pra, këtu ne kemi një linjë specifier shell drejtë këtu.
Kjo specifikon Bash.
Vini re se ajo përcakton atë në shtegun e treguar, / bin / bash.
Në qoftë se një kompjuter ka shell bash por jo në directory bin, / bin, kjo nuk do të funksionojë.
Kjo është një kriter tjetër, një tjetër kujdes këtu.
Shenjë kile është karakteri linjë koment.
Kjo vlen për të gjitha predha.
Rast i veçantë këtu, #! në fillim të një shkrimit, është një rast i veçantë.
Kjo specifikon shell në të cilën për të drejtuar script.
Siç isha duke thënë, nuk mund të jetë i njëjti vend / bin.
Përveç kësaj, ka një tjetër gjë këtu.
Nëse ju vetëm përdorni shenjën kile pa pikë thirrje dhe shtegun,
që duhet të tregojnë një C-shell.
Megjithatë, unë nuk e rekomandojmë duke bërë që për shkak se unë nuk jam në gjendje për të garantuar
se që gjithmonë do të punojnë.
Nëse doni një C-shell, do të ishte më mirë të them kështu.
Pastaj ka diçka më tepër konfuz këtu.
Në qoftë se ju përdorni një linjë të specifier shell të tilla si / bin / bash
dhe se shell nuk është në dispozicion atje,
nuk ka gjë të tillë si / bin / bash në atë kompjuter të veçantë,
ose për shkak se ajo nuk ka Bash ose për shkak se ajo është në një vend tjetër,
ju do të merrni një gabim duke i thënë se script ju u nuk ekziston.
Dhe sigurisht ekziston shkrimit tuaj, në mënyrë që mesazhi gabimi është konfuze.
Arsyeja se sistemi operativ ju jep këtë gabim
ose, më saktë, se shell juaj interaktive në të cilën ju do të vrapojnë kjo i jep atë gabim,
është se ai raporton komandën keni përdorur, i cili është emri i shkrimit.
Kjo komandë efektive quajtur shell me emrin e shkrimit.
Kjo është ajo ku ju merrni këtë mesazh gabimi konfuz.
Një tjetër mënyrë për të thirrur script shell
është duke specifikuar shell në rreshtin e komandave, si këtu.
Kjo është një komandë. Kjo thotë të drejtuar bash dhe pastaj të drejtuar script time në Bash.
Kjo do të marrë përparësi mbi një linjë specifier,
dhe kjo e ka cilësinë e lejuar ju për të siguruar për pathname ndryshme.
Nëse ju vetëm të jepni një komandë, sistemi operativ do të shikoni për atë komandë
në vende të ndryshme.
Nëse është në dispozicion, ajo duhet të gjeni atë.
Kompjuteri do të gjeni Bash kudo që është e vendosur dhe drejtuar atë,
kështu që ju nuk duhet pastaj të jenë të shqetësuar rreth ku ajo e gjen atë.
Ka shqetësime potencialisht të tjera këtu,
si në qoftë se ka më shumë se 1 version i Bash, që është e mundur, edhe pse nuk ka gjasa.
Pra, kjo është një tjetër mënyrë për t'u marrë me këto gjëra.
Linjat Specifier mund të telefononi çdo shell.
Ata gjithashtu mund të telefononi gjëra të tjera se sa predha.
Shembuj unë kam këtu janë sed, i cili është redaktor lumë;
awk, e cila është një gjuhë e përpunimit model;
dhe perl, një gjuhë shumë e shumë të zhvilluar e shkruar.
Nëse ju vendosni një linjë të specifier që tregon një nga ata programe në fillim,
ajo do të shkojnë direkt në atë program në vend se duke filluar një shell.
Këto programe kanë kufizime në aftësitë e tyre.
Perl është shumë e aftë. Sed është një redaktor. Ajo mund të bëjë gjëra përtej thjesht redaktimi.
Por kjo mund të jetë e vështirë për të programit se.
Përveç kësaj, duke kaluar argumente dhe sende të shkrimit është ose i pamundur ose konfuze.
Pra, në këto raste, me awk ose sed, është, të paktën në përvojën time,
e preferueshme për të shkruar një script shell dhe thirrjes awk ose sed nga script shell
në vend se duke e quajtur awk ose sed si linjë specifier script.
Perl është një gjuhë shumë të larmishëm, siç thashë.
Ju nuk mund të kandidojë komandat interaktive në Perl,
që do të thotë se ju nuk mund ta provoni pjesë të Scripts që ju jeni në zhvillim
duke xhiruar ato interaktive.
Megjithatë, kjo është një gjuhë jashtëzakonisht të aftë
dhe është zhvilluar në një mjet të përdorur shumë gjerësisht.
Kjo është vetëm pak e një vërejtje në kllapa për linjat specifier.
>> Në të gjitha ose shumica e formave të Linux - përsëri, unë nuk mund të jenë të sigurt se është e gjitha -
dhe në Mac OS, në qoftë se ju shkruani csh ju merrni tcsh,
dhe në qoftë se ju shkruani sh ju merrni bash.
Ata ishin duke u përpjekur atje për të ju japin versionet më të avancuara të këtyre predha,
por kjo mund të jetë konfuze.
Nëse ju shkruani një skenar duke përdorur tcsh ose Bash përmban ndërkohë që bëri thirrje csh ose sh
dhe pastaj të përpiqen për të drejtuar atë në një kompjuter i cili nuk ka tcsh ose Bash,
ju mund të merrni disa gabime nëse ka komandat në atje
të cilat ato predha nuk e njohin.
Përveç kësaj, ju mund të keni thirrur deri shell tuaj në kompjuterin tuaj lokal
duke e quajtur atë si sh apo csh dhe pastaj marrjen e predhave më të përparuara.
Ju nuk mund të mendoj edhe për faktin se ju jeni duke përdorur shell më të avancuar.
Pra, kjo është një kurth i mundshëm.
Si është e vendosur që në qoftë se ju shkruani sh ju merrni Bash,
në qoftë se ju shkruani csh ju merrni tsch?
Ka gjëra në këta kompjuterë quajtur links
të cilat mund të lidhen për të paraqitur emrat për t'iu referuar të njëjtën gjë.
Ajo mund të jetë ose 2 emra për të njëjtën file apo një file qëllimi i të cilit është për të referuar në një tjetër fotografi.
Ata janë quajtur lidhjet vështirë dhe simbolike. Ne nuk do të shkojnë në atë më sot.
Mund të ketë edhe fotografi të veçanta - 1 fotografi sh, bash 1 fotografi -
por ata të dy të drejtuar Bash.
Pastaj ka një kriter tjetër këtu.
Nëse ju jeni duke bërë thirrje një nga këto predha nga një emër,
ju mund të mendoni se ju do të merrni të njëjtën funksionalitetit si duke e quajtur atë një emër tjetër.
E pra, që në fakt nuk është domosdoshmërisht e vërtetë.
Këto komanda mund të shqyrtojë emrin me të cilin ata ishin të quajtur
dhe ata mund të, në bazë të atij emri, sillen ndryshe.
Nuk mund të jetë çështje e duke u përpjekur të jenë në përputhje me një standard.
Disa nga ju mund të keni dëgjuar standardit POSIX apo në një tjetër,
ndoshta karakteristika të tjera.
Kjo mund të zgjidhet ndonjëherë nga argumentet e linjës komanduese
ose nga përcaktimi i të ndryshueshmeve shell.
Duke e quajtur atë si sh ose bash në fakt mund të çojë në një ekzekutim të ndryshme
edhe në qoftë se është e njëjta fotografi që ju jeni ekzekutimin.
Një tjetër gjë për t'u marrë parasysh është se edhe në qoftë se një kompjuter ka tcsh ose Bash,
në qoftë se ata nuk janë të lidhura si ata janë në kompjuterin tuaj lokal
në qoftë se ju keni një kompjuter lokal Linux apo Mac OS,
pastaj përsëri ju do të merrni shell që ju telefononi sh ose csh, e jo një që ju mund të preferoni.
Aktuale Bourne shell ka enhancements më të vogël se ato në Bash
por e kaluara ato në origjinal shell Bourne.
Si rezultat i kësaj, edhe shell aktuale Bourne, sh,
edhe kur kjo nuk është bash, ngjan gjuha C më shumë se C-shell bën.
Kjo nuk ishte e vërtetë kur C-shell u krijua për herë të parë, por ajo ka zhvilluar në këtë mënyrë.
Ju mund të vini re këtu se të gjitha këto emra shell përveç shell Bourne
kanë diçka për të treguar cilat shell ata janë - csh, bash -
por Bourne shell është vetëm sh.
Pse? Kjo ishte shell origjinal.
Ishte shell atëherë, jo një predhë,
dhe pasi ishte shell, nuk kishte asnjë arsye për të dalluar atë nga një tjetër shell.
Pra, kjo është arsyeja pse ajo ka këtë emër dhe ende ka.
Kjo >> lartë këtu është një linjë nga një bazë të dhënash fjalëkalim për një llogari kam atje
në një kompjuter tjetër.
Unë do të përpiqen për të marrë këtë emër, që të shihni se një pjesë në fund, shell.
Baza e të dhënave fjalëkalimi mban karakteristikat e hyrjes për të gjithë përdoruesit.
Në fillim është emrin, të cilat ju mund të shihni e fundit 2 letra të mia tani.
Fushat këtu janë të ndara nga colons.
Fusha e fundit, si ju mund të shihni, është bin / tcsh, shell.
Kjo është specifier shell.
Ka diçka interesante këtu.
Kur Unix u zhvillua në fillim, nuk ishte vetëm 1 shell,
kështu që nuk ka pasur zgjedhje atje.
Pra, pse ata lejojnë një fushë në bazën e të dhënave me fjalëkalim për të specifikoni një predhë?
Unë nuk e di, por është me fat që ata vepruan.
Është mjaft e vështirë për të bërë ndryshime në formatin e bazës së të dhënave fjalëkalimi
për shkak se shumë programe referohen format e saj
dhe do të duhet të rishkruhen.
Kjo është një zhvillim i lumtur apo i rastësishëm që ata të përfshirë atë arë.
Ky lloj i një linjë skedar fjalëkalimi është përdorur në të gjitha Unix dhe Linux kompjuterat aq sa unë di.
Mac ka sistemin e vet.
Ajo në fakt ka një skedë fjalëkalimi me linjat e në atë format,
por që nuk është aty ku karakteristikat e përdoruesit janë të përcaktuara.
Një tjetër vërejtje kllapa atje.
>> Nëse ju jeni duke bërë thirrje një predhë, ju mund të telefononi atë si një nën-guaskë e predha tuaj ekzistues.
Pra, nëse unë shkoj këtu, le të të shpëtoj nga këto gjëra.
Ja ku jam në C-shell.
Kjo variabël, i cili identifikon me saktësi shell tim,
në të vërtetë nuk është gjithmonë një mënyrë të besueshme për të përcaktuar se çfarë derdh xhironi,
por në këtë rast ajo është.
Çka nëse unë vetëm lloji -
Tani unë jam në Bash.
Disa gjëra do të jetë i njëjtë. ls tregon mua urdhërimet e mia.
Nëse unë do të pezullojë një prapa në time C-shell, ls, njëjtë. E drejtë?
fg, i dukshëm, përsëri në shell tim Bash.
pwd, drejtori i tanishëm, përsëri në C-shell.
pwd, directory të ndryshme - në të vërtetë nuk është një directory të ndryshme në këtë rast.
Është e njëjta directory.
Le të thonë se unë dua të thërrasë një komandë këtu: ku ls.
Çfarë do të bëni?
Ajo tregon mua ku ls komandën,
ai që më jep një listë directory, është e vendosur në ls.
Le të kthehemi në Bash shell. Le të përpiqemi të njëjtën gjë.
Hmm, interesante aty, ku: komandë nuk u gjet.
Pse është kjo?
Ku komandës është ndërtuar në në C-shell.
Kjo nuk është një urdhër që duhet të lexohet në të kujtesën nga diku tjetër dhe të ekzekutuar.
C-shell shkon ajo duke transferuar ekzekutimin në pjesë të kodit të vet
dhe kjo nuk është në Bash shell.
Pra Bash, nuk ka një komandë të tillë ndërtuar-në, duket për atë, nuk e gjeni atë,
dhe ne të merrni një gabim.
Kështu që nuk kemi një shell bash drejtimin në bazë të një C-shell, dhe ne e quajmë se një nën-shell.
Dhe vetëm në rast se ju jeni kurioz, bash shell ka rrugën e vet të gjetjen komandat.
sheshuar i referohet faktit se ajo mund të ekzekutohet më shpejt,
duke u gjetur më shpejt.
Kjo është një nga enhancements ndërtuar në për disa nga këto predha.
>> Predha Bourne-lloj janë të preferuar për programimin.
Ata kanë strukturat e kontrollit si sythe, deklaratat kushtëzuara,
lloj komandave që ju mund të përdorni në gjuhët e programimit si C
apo çfarëdo gjuhë. Ndoshta ju jeni të programimit në Java apo çfarëdo.
Predhat kanë ato shumë.
Predha Bourne-lloj, veçanërisht bash, kanë më shumë
dhe ata janë të dizajnuara me fleksibilitet më të madh.
Bash shell ka vargjeve. Origjinal Bourne shell nuk ka.
Kështu që mund të jetë shumë e dobishme për programimin.
C-shell në fakt nuk kanë vargjeve, por nuk kanë shumë nga këto karakteristika të tjera.
Predha Bourne-lloj do të kryej më të shpejtë
në qoftë se ata nuk kanë karakteristika të destinuara për përdorim interaktive.
Ju ngarkesës gjëra poshtë për një qëllim, kjo ngarkon ato për një tjetër qëllim.
Ka që tregtisë-off atje.
Këto karakteristika të cilat janë të destinuara për përdorim interaktive
të vërtetë janë pak ose aspak përdorim për scripting.
Është e mundur që të përdorin një nën-shell interaktiv ashtu si e kam filluar aty
për të testuar nga komandat të cilat ju kanë për qëllim për të përdorur në një skenar.
Kjo është ajo që ju nuk mund të bëjë me perl. Ju mund ta bëni atë me predha.
Edhe strukturat si për sythe e kështu me radhë mund të drejtohet në mënyrë interaktive.
Ata janë herë pas here të dobishme për të kandiduar interaktive,
por më shumë të ngjarë që ju jeni duke përdorur ato për të zhvilluar një script.
>> Aliases.
Kjo do të jetë i lidhur me C lëvozhgë.
Mekanizmi Historia ku mund të merrni përsëri në komandat më parë
ose pjesë të tyre që e keni tashmë të drejtuar.
Përsëri, në lidhje me C-shell, shell Bourne dhe shell Korn kanë këto gjëra,
por unë nuk jam duke shkuar për të marrë në ta.
Pra, këtu janë disa pseudonime të dobishme që kam.
Në vend që të shtypni ls - kjo është një komandë të përbashkët -
vetëm lloji l dhe për të shpëtuar veten 1 karakter.
ls me opsione të ndryshme, të gjithë ata të punës.
Vini re se këto definicione kanë kuotat rreth tyre.
Në këto raste, kuotat nuk janë të nevojshme.
Nëse ju mund të përcaktojë ato emërtimet pa thonjëza, ajo ende do të punojnë.
Ata janë të rekomanduara.
Ka situata në të cilat ju nuk mund të përdorni të japin kuotën e
për shkak se ju doni diçka të ndodhë cilat japin kuotën e do të parandalojë.
Ndonjëherë ju mund të japin kuotën e tyre një pjesë të përkufizimit, por jo të gjithë atë.
Është gjithashtu e rekomanduar në përgjithësi për të përdorur Kuotat e vetme në vend se kuotat e dyfishtë.
Kuotat dopio kanë efekte në përkufizimet ndryshueshme,
veçanërisht duke shkaktuar ato që të vlerësohen në vend se ta ndalojmë atë.
Pse do të duam të ndaluar vlerësimin?
Dhe si do Kuotat e bëjnë këtë për ne?
>> Këtu është një komandë të cilat ju mund të gjeni interesante.
'Ls g *'
g *, si ju ndoshta e dini, është një shprehje wildcard
për të gjitha emrat e file të filluar me g.
Në qoftë se unë vetëm shkruaj në një komandë ls g *, unë do të merrni një listë të të gjitha atyre emrave në directory time aktuale.
Nëse unë të përcaktojë atë pseudonim si ajo është këtu me kuotat,
ajo do të kandidojë atë komandë në Direktorinë tuaj të tanishme kur ju jeni running atë.
Por në qoftë se ju drejtuar përkufizimin alias pa thonjëza,
ajo do të vlerësojë wildcard g * kur ajo shkon këtë komandë përcakton.
Pra, përkufizimi i alias do të ls pasohet nga lista e dosjeve në directory
në të cilën komanda Aliasi kryhet,
pavarësisht se ku ju në të vërtetë ndërmend të drejtuar komandën.
Kjo nuk është shumë e dobishme, dhe kuotat e vetme parandaluar vlerësimin e yll.
Pra, ju vetëm merrni përkufizim qenie ls g *.
Pastaj kur ju drejtuar alias, LGS, ajo pastaj e vë atë jashtë.
Tani nuk ka citate, dhe ajo do të vlerësojë yll kur ju drejtuar komandën alias.
Pra, kjo është një gjë.
Kuotat e dyfishtë do të kishte të njëjtin efekt këtu,
por ka raste të tjera në të cilat kuotat e dyfishta nuk do të punojnë aq mirë.
>> Këtu është një tjetër.
Ju mund të dini komandën grep.
Komanda grep mund të përdoret për të skanoni një skedar për linja të cilat kanë strings caktuara.
Pra, le të shkojë mbi këtu dhe unë do të dalë nga shell tim Bourne.
Mirë. Këtu ka një fotografi.
Le të thonë se është grep vargjet ABC. Nuk është.
Nëse unë bëj zddd grep, unë të marrë asgjë. Mirë.
Pra, ajo gjen një varg, ai raporton, por nuk ka gjetur, ajo nuk e denoncon këtë.
Ajo nxjerr ndonjë linjë e cila ka atë varg në të.
Nuk janë të gjitha llojet e opsioneve të cilat këtu ju mund të gjeni në dokumentacionin.
Këtu ka një mënyrë për të bërë atë.
Po në lidhje me këtë, një alias grabc 'grep abc "?
Kjo do të përfshijë 1 argumentin kur alias është përcaktuar.
Pra, në qoftë se bëj atë këtu, tani në qoftë se unë bëj grabc,
tani alias përfshin më shumë se komandën e thjeshtë. Ajo gjithashtu ka argument.
Deri tani që punon.
Unë kam një tjetër komandë këtu, këtë, kështu që ata janë vargjet e ndryshme në atje
dhe të tregojnë se kjo nuk do të gjeni ndonjë gjë atje pasi ajo nuk përputhet.
>> Çka nëse unë dua për të përfshirë në përkufizimin alias skedarin që unë jam duke shkuar për të kërkuar
dhe unë dua të jap si argument për alias varg që unë jam duke kërkuar për?
Unë mund të dua të them abc si argument për alias tim,
por alias tashmë të përcaktuar file.
Dhe kjo është ajo ku kjo shprehje vjen in
Vini re këtu ne kemi grep ashtu si më parë.
Ne kemi skedarin këtu, vargjet.
\! ^, Lloj shprehje e çuditshme, unë mendoj, në qoftë se ju nuk e keni parë këtë më parë.
Pikë thirrje është pjesë e mekanizmit të historisë C-shell.
Ajo mund të kujtojnë komandat më parë, ajo mund të kujtojnë argumente për ato komandat e kështu me radhë.
Mekanizmi historia përdoret si pjesë e aliasing.
Nëse ju specifikoni një vijë pas pikë thirrje, ajo do të referohen në atë linjë në listën e historisë,
të cilat ne nuk do të marrë në tani që kjo është një temë e tërë të tjera.
Është e mundur të specifikojë një pjesë të një linjë.
Pra! 03:02 do të jetë argumenti i dytë i numrit komandës 3.
Caret këtu në këtë shprehje qëndron për argumentin e parë.
Nëse ju nuk e jepte një indikacion të cilin urdhëroj ju jeni duke iu referuar,
ai i referohet komandën menjëherë të mëparshëm,
dhe caret është një simbol për argumentin e parë.
Sepse është e caret dhe jo numri, ju nuk keni nevojë të përdorni zorrës së trashë,
kështu! ^ do të thotë argumentin e parë në komandën e mëparshme.
Pak përzier këtu.
Në këtë rast, kur ju përdorni këtë si një përkufizim alias,
referencë historia i referohet përsëri në komandat në të cilat alias është përdorur.
Pra, kjo është kthim 1 komandë si një operacion të historisë,
por si një operacion alias ajo i referohet komandën në të cilën ju do të shkruani,
thonë, grstrings_file.
Ne kemi kuotat këtu në të. Çfarë është backslash për?
Në këtë rast, si në vende të tjera, ne nuk duam të ekzekutuar mekanizmin e historisë
duke përcaktuar pseudonimin.
Në qoftë se ne nuk e kemi backslash atje, shell do të tërheqë në argumentin e parë
e komandës e drejtë para se ajo u zhvillua këtë komandë alias, të cilat ne nuk e duam.
Ne duam që kjo që do të ndërtohet në të komandën alias për të thirrur në një argument më vonë.
Kuotat e vetme nuk do të shpëtojnë një pikë thirrje, referencën histori.
Ndoshta ju e dini shpëtuar shprehja do të thotë për të ndryshuar kuptimin e diçkaje.
Në këtë rast, kjo do të thotë për të ndaluar diçka nga të paturit e një domethënie të veçantë.
Domethënie të veçantë pikë thirrje-së është histori.
Shpëtuar dhe ajo nuk e ka atë kuptim.
Kuotat nuk e bëjmë këtë, backslash bën.
Pra, ne jemi të vërtetë duke përdorur 2 nivele të ikin këtu.
Unë jam duke shkuar për të lëvizur këtë komandë në dritare tjetër pa e shtypur atë
duke përdorur këto operacione redaktimi, të cilat ju mund të gjeni të dobishme.
Diçka tjetër këtu unë do të ju tregoj.
Nëse ju vetëm lloji pseudonim pa argumente, ajo ju tregon të gjitha argumentet tuaja.
Kjo është një bandë e emërtimet unë tashmë e kishte këtu
përveç atyre që unë kam qenë duke përdorur sot këtu.
Por në qoftë se unë vetëm lloji me emrin e një alias, ajo më thotë çfarë do të thotë.
Vini re se kuotat janë zhdukur dhe backslash është zhdukur.
Ky string këtu është rezultat i atij përkufizimi alias,
dhe tani ajo ka vetëm! ^ në të.
Kjo do të duket në vargjet e file për çdo gjë.
Pra, në qoftë se bëj vargjet grstrings_file, unë nuk jap asgjë për të kërkuar atje,
por ajo është në kërkim në vargjet.
Ajo nuk ka gjetur strings fjalë në vargjet e file, por ajo ka gjetur abc.
Dhe kjo nuk do të gjeni se.
Pra, këtu ne jemi duke i dhënë një argument që godet në përkufizimin e alias,
që është futur në të.
Kjo është ku kjo shprehje vjen nga.
Ju mund të përdorni më shumë se 1.
Caret është një simbol për argumentin e parë.
Nëse dëshironi të përdorni një argument të dytë, atëherë ju do të thonë: 2.
Nuk ka simbol të veçantë për argumentin e dytë.
Dhe për shkak se ju jeni duke përdorur një shifër, ju do të keni për të përdorur zorrës së trashë.
Nuk është, megjithatë, një tjetër zgjedhje këtu.
Shenja dollar qëndron për argumentin e fundit.
Dhe për shkak se kjo është një simbol, ju mund të heq zorrës së trashë.
Pra, kjo do të jetë argumenti i fundit në listë.
Dhe ka edhe që një.
Asterisk do të thotë të gjithë, kështu që kjo është lista e plotë argumenti,
dhe përsëri, ju mund të heq zorrës së trashë për shkak se ajo nuk është një shifër.
Unë shpresoj se ju jeni të gjithë duke respektuar të gjitha këto.
Mekanizmi >> Historia mund të shkoni përsëri në linjat e mëparshme në listën e historisë.
Ju mund ta bëni këtë në një përkufizim alias.
Unë kurrë nuk kam parë këtë bërë.
Ajo do të ketë efektin e tërhequr nga komandat më parë nga lista e historisë
kur ju të ekzekutuar alias që mund të jetë komandat e ndryshme
në varësi të kur dhe ku keni ekzekutuar atë.
Bindshëm ju mund të dëshironi që të tërhiqet nga një referencë të tillë
vetëm për të dini se çfarë një komandë më parë ishte.
Unë kurrë nuk kam parë këtë të ndodhë.
Unë mendoj dikush mund të dëshironi të, por kjo është shumë e vështirë.
Nuk është një tjetër gjë këtu.
Në qoftë se ju përdorni këtë referencë histori të tipit,
atëherë vetëm argumentet për të cilat ka një referencë të tillë janë përdorur.
Nëse ju keni një përkufizim alias i cili nuk e përdor një referencë histori të tipit,
në qoftë se ajo vetëm të bëhet fillimi i komandës
dhe ju keni argumente të tjera, atëherë çdo gjë që shkruani mbas se
shtohet tek komanda.
Në këtë rast, shembulli i vetëm i dha atje, kemi përdorur argumentin e parë;
ne nuk përdorim ndonjë të tjerët.
Nëse argumente të tjera janë dhënë në rreshtin e komandave, ato nuk do të përdoren.
Pra, nëse ju përdorni referencë historisë në të gjitha, atëherë ju duhet të përdorni atë për të marrë ndonjë argument.
>> Ka një tjetër gjë këtu unë vetëm dua të përmend, pjesërisht parenthetically,
domethënë se ky mekanizëm historia me pikë thirrje
shkon prapa në origjinal C-shell.
Tcsh futur operacionet e historisë
të cilat përdorin llojet e komandave dhe frazave nga redaktorët,
ose Emacs ose vi.
Mendimi im personal është Emacs është shumë më e lehtë për t'u përdorur për këtë qëllim
edhe në qoftë se ju përdorni vi për përpunim tuaj të rregullt.
Ka komanda të ndryshme Emacs të cilat janë të përshtatura tani për historinë.
Kontrolli P merr vijën e mëparshme në listën e historisë.
Një tjetër Kontrollit P do të merrni ju një të tillë para se.
Shigjeta up bën të njëjtën gjë.
Kontrolli N merr komandën e ardhshme në qoftë se ju keni scrolled tashmë prapa disa mënyra.
Shigjetë poshtë e bën atë shumë.
Ju mund të lëvizur majtas në të djathtë me shigjeta dhe gjëra të ndryshme të tjera.
Kjo mund të bëjë përdorimin e mekanizmit të historisë
shumë më e lehtë se sa duke përdorur pikë thirrje sintaksë,
por ju nuk do të përdorin atë në një përkufizim alias.
Ne do të shkoj për se disa kohë të tjera.
Variablat >>.
Ti e di se çfarë variablat janë në gjuhët e programimit.
Predha kanë edhe ata.
C-shell përdor komandën vendosur të caktojë variablave,
kështu që vendos të ndryshueshëm të a të vlerës së b -
siç thashë, një përkufizim të padobishme, por një ilustrim se si kjo është përdorur.
Komanda vendosur do të krijojë një ndryshore në qoftë se ajo nuk ekziston.
Parametrat e pozicionit për guackë mund të konsiderohet variabla,
por përdorimi i tyre dhe rregullat e tyre janë disi të ndryshme.
Ju nuk mund të caktojë një vlerë për 1 $ në rrjedhën e një script.
Ju do të duhet të përcaktojë një variabël të re për këtë qëllim, nëse disa nga ju të kërkuar për të.
Lloji vendosur pa argumente dhe që ju të merrni një listë të të gjitha variablave të përcaktuara aktualisht.
Dhe le të marrë mbi të shell tim të tjera këtu dhe të shohim se çfarë ne të merrni në qoftë se ne bëjmë këtë.
Një listë të gjatë atje mjaft, e drejtë?
Shkoni deri pak. Shikoni të gjitha këto.
Disa nga këto gjëra janë përcaktuar automatikisht nga shell.
Shell krijon ndryshueshme dhe i jep një vlerë.
Disa prej tyre janë të përcaktuara nga shell por pastaj ripërcaktuar nga përdoruesi
sipas preferencave të tij.
Dhe disa prej tyre janë të krijuar nga ana e përdoruesit në varësi të asaj që ai e bën atë ditë.
Kjo është vendosur vetëm pa argumente.
Ka një tipar çuditshme këtu për këtë gjë.
Nuk duhet të jetë ose pa hapësira në mes të barabartëve nënshkruajnë dhe emrin e ndryshueshme
dhe vlera ose hapësira në të dy anët e shenjës së barazimit,
si në këtë një të tillë.
Kjo nuk do të punojë, dhe kjo në fakt është një komandë e vlefshme
por kjo nuk do të bëni atë që keni ndërmend.
Kjo komandë do të punojë, sepse në qoftë se ju vetëm thonë vendosur dhe një emër të ndryshores
me ka shenjën e barazimit apo të vendosur dhe një emër e ndryshueshme me një shenjës së barazimit dhe pa vlerë,
ajo do të vendosë ndryshore në një vlerë null.
Pra vendosur një = është një komandë e vlefshme.
Komanda caktuar mund të përcaktojë më shumë se 1 ndryshore në të njëjtën linjë.
Pra, kjo komandë këtu ka efektin e përcaktimit të të dy a dhe b të null vlerat.
Ndoshta jo atë që ju dëshironi.
Ky këtu, u përmend më herët, do të çojë në një gabimi
sepse = b nuk është një shprehje e vlefshme.
Një emër ndryshore nuk mund të fillojë me shenjë të barabartë.
Dhe ka këto gjëra të mëtejshme këtu.
Të colons janë përdorur për të zgjedhur argumente nga linjat e historisë,
dhe ato mund të përdoren - dhe unë nuk shkoj në para - për të modifikuar këto gjëra.
Ata gjithashtu mund të përdoret për të modifikuar variablave shell.
Ky këtu, $ a, ka një vlerë.
: R do të ngrihen një zgjatje.
Një zgjerim do të jetë çdo gjë pas një pikë,
një dot dhe çdo gjë pas atë në fund të një fotografi,
vetëm në fund të lista pas plagë fundit.
Pra, unë kam këtu.
a është se. Ajo do të bjerë. O.
Nëse nuk ka extension, vetëm pathname-in pas plagë të fundit, ajo do të ketë efekt.
a: h, se shprehja e ndryshueshme, do të marrë jashtë elementin e fundit të një listë directory,
përsëri, vetëm pas slash fundit.
Pra / a / b / c të bëhet / a / b,
por kjo është ndryshuar sepse elementi pas listë është null.
Këtu ka diçka që edhe unë dua të theksoj.
Këto kualifikueset mos e kërko për ekzistencën e këtyre dosjeve.
Ata vetëm shikoni për vargjet.
Këto janë të destinuara për të manipuluar emrat e file, pathname-in,
por ato mund të përdoren në çdo varg edhe nëse kjo nuk është një emër file.
Dhe ata nuk e shohin për ekzistencën,
kështu që nëse nuk ka fotografi të tilla, / a / b / c, kjo do të vazhdojë të punojë.
Nëse kjo është e ndonjë përdorim është një pyetje tjetër, por ajo do të vazhdojë të punojë.
Variablat janë të ndryshme në predha Bourne. Ne do të shkoj në atë më vonë.
Shenjë Dollar mund të shpëtoi vetëm si pikë thirrje dhe yll.
Shenjë Dollar mund të shpëtoi me një backslash apo thonjëza të vetme.
Kuotat e dyfishtë të ketë efekt të rastësishëm në të gjitha predha
i detyruar vlerësimin e një dollar të nënshkruar shprehjen e ndryshueshme.
Pra, në qoftë se ajo është duke u arratis në një mënyrë, kuotat e dyfishtë mund të ketë efekt
e duke shkaktuar atë që të vlerësohet anyway.
Kjo është pak konfuze.
Nëse ka nivele të shumta të ikin, të tilla si kuotat e vetme brenda kuotat e dyfishtë
ose kuotat e dyfishtë brenda thonjëza të vetme, ju duhet të provoni të parë se çfarë do të ndodhë
në një variabël në qoftë se ju jeni duke përdorur një të tillë.
Këto 2 - situata brenda dyfishtë të vetme brenda, të vetme të dyfishtë -
jo doemos ju japin të njëjtin rezultat.
Mjedisit të ndryshueshëm, të lidhur variablat C-shell.
Variable Mjedisit janë edhe variablat në C-shell,
dhe ata janë gjithashtu të variablave në predha të tjera.
Në C-skeletit, ata janë grupe të dallueshme.
Gjërat që unë kam qenë duke thënë se para se të jeni gati variablave shell.
Variable Mjedisit janë një grup të veçantë të variablave
me përjashtim të disa variablat e cila ne quajmë variablat lidhur,
të cilat janë shumë të rëndësishme dhe ne do të merrni në ato më vonë.
Variable Mjedisit janë kaluar automatikisht në
për predha apo komandat që janë drejtuar nga shell tuaj.
Gjëra të tjera nuk janë. Variablat shell, se emërtimet nuk janë. Variable Mjedisit janë.
Kjo është arsyeja pse ne e quajmë ato mjedisit të ndryshueshëm,
me idenë që mjedisi shtrihet kaluara vetëm shell tuaj të tanishme.
Ato mund të përdoren për të përcaktuar gjëra për komandat.
Këtu është një shembull. Printer, LPDEST.
Të dyja këtyre variablave mund të përcaktojë një printer që një komandë do të përdorin për të shtypur gjëra.
Nëse keni printera të shumta rreth, ju mund të dëshironi të vënë një që ju pëlqen.
Arsyeja që ne kemi 2 variabla është se grupe të ndryshme të komandave u shkruan
duke përdorur këto variabla të ndryshme.
Ju mund të jepni atyre vlera të ndryshme.
Më shumë gjasa që ju do të jepni atyre si njëjtën vlerë të.
Këto gjëra të punojnë, sepse komandat që bëjnë shtypje
janë programuar për të shqyrtuar vlerat e këtyre variablave.
Nëse një program nuk janë shkruar në këtë mënyrë, nëse do të ishte shkruar për të bërë diçka tjetër,
variabël do të ishte e parëndësishme.
Pra sistemi operativ nuk është në kërkim të këtyre variablave
çdo herë që i referohen një printer.
Një komandë që bën shtypje është në kërkim të këtyre variablave, nëse ajo është e programuar në këtë mënyrë.
Këto variabla shpesh janë të përcaktuara në dosjet tuaja inicializimit
por jo domosdoshmërisht.
Ju mund të përcaktojë ato në rreshtin e komandave.
Ata mund të përcaktohen në një komandë.
Një komandë që shkon diçka mund të ketë përzgjedhje e vet të variablave -
variablat që janë unike për një paketë të veçantë software, për shembull.
Ata do të përcaktohet kur ju drejtuar atë paketë.
Si janë këto variabla kaluar në një nën-shell?
Kur një nën-shell është shkruar, kjo nuk do të shkruaj në atë zonë.
Zona e nën-shell që i kushtohet mjedis të ndryshueshëm
nuk është shkruar nga nën-shell, ajo e shkruar nga kopjimit.
Kur ju drejtuar një komandë të zakonshëm, të tilla si këto komanda për të shtypur apo çfarëdo,
ata nisem duke krijuar një shell të ri.
Shell krijon një predhë dhe pastaj overwrites pjesë të saj
me komandën që ju jeni të rrjedhshëm, që është pak konfuze,
por kjo është se si këto komanda merrni mjedis të ndryshueshëm
se ata pastaj i referohen më vonë.
Komanda këtu për përcaktimin e setenv ndryshueshme.
Kjo është se si ju define atë. Kjo është 3 elemente: setenv, e ndryshueshme, vlerë.
Nëse ju vetëm bëni setenv pa argumente, çfarë do të merrni?
Një listë e të gjithë atyre variablave.
Përsëri, kjo është një listë e bukur të gjatë dhe në këtë rast, si në të tjerët,
këto variabla janë të përcaktuara kryesisht nga operacioni Hyrja nga shell vetë
në vend se nga ndonjë gjë e kam bërë.
Ka një tjetër komandë këtu, printenv.
Kjo gjithashtu printime nga mjedisin.
Vini re këtë gjë fundit këtu, = vi editorin.
Kjo thotë se në qoftë se unë jam duke përdorur diçka që e quan një redaktor
dhe unë nuk e specifikon një redaktor dhe ajo lejon mua zgjedhjen, mund të më jepni vi.
Çka nëse unë bëj Editor printenv? Ajo tregon mua se çfarë është ajo.
E drejtë para se, ka pasur një variabël, PAK.
Këto janë defaults mundësitë tuaja kur unë të drejtuar komandën e PAK,
e cila tregon fotografi.
Pra, në qoftë se bëj atë, printenv mund të marrë 1 argumentin ose 0 argumente,
jo më shumë se 1.
Ka komanda të tjera gjithashtu, por ne nuk jemi duke shkuar për të marrë në të gjitha që sot.
Mos harroni se ishin modifiers për variablat shell si: h,
të cilat do të bjerë elementin e fundit të një shtegun,
ose: r, e cila do të bjerë një zgjatje.
Ata tani aplikojnë për variablat e mjedisit shumë. Ata nuk kanë përdorur për të.
Ajo përdoret për të se ata nuk mund të modifikohet. Tani ata mund të jenë.
Kjo është një nga përparimet me zhvillimet e predha gjatë viteve.
Unë kam qenë duke thënë se predha si pjesë e mjediseve
dhe variablave shell në C-shell janë, me disa përjashtime, vendos të dallueshme.
Ju mund të krijojë një variabël mjedisi dhe një ndryshore shell me të njëjtin emër.
Ata do të jenë variabla të ndryshme, ata mund të kenë vlera të ndryshme.
Ndryshimi vlerën e një nuk do të ndryshojë vlerën e tjera.
Këto variabla janë vlerësuar të gjitha me shenjën e dollarit - $ a, $ çdo gjë.
Pra, çfarë nëse ju keni këtë? A e dini në cilën ju merrni?
Në analizat e mia që kam marrë variablin shell,
por kjo nuk është e dokumentuar dhe ju nuk mund të mbështetet në atë.
Kështu që unë kërkoj nga ju, po krijon shell dhe mjedisit variablave
me emra të njëjtë një ide e mirë? Nr Mirë.
Cilat janë këto përjashtime të mëdha në të cilin mjedisi dhe shell variablat
janë të lidhura me njëra-tjetrën?
Nuk janë këto 4.
Letër Capital variabël mjedisi Term,
predhë termin ndryshueshme me shkronja të vogla, lloj rivalitet terminal.
Unë jam vetëm do të shkojnë mbi këtu dhe unë jam duke shkuar për të bërë jehonë, një komandë të dobishëm këtu,
$ Termi Term $. Dhe nuk ka.
xterm është një lloj terminali për dritare shfaqura në x Window System.
xterm-ngjyra është një variant i se që lejon ngjyra të ndryshme.
Pse nuk kemi përcaktuar këto? Çfarë është kjo e mirë për të?
Komandat që të korrigjoj ekran si e redaktorit
dërgoni sekuenca të veçanta, të quajtur sekuenca shpëtuar,
në një terminal ose një dritare për të korrigjoj atë dhe kështu me radhë.
Këto sekuenca janë të ndryshme për lloje të ndryshme të terminaleve.
Kjo tregon atë që ato për të përdorur.
Ndonjëherë ka çështje atje.
Ju mund të dëshironi të ndryshojë këtë.
Nëse gjërat nuk janë duke punuar, ndonjëherë lloji terminali është vendosur gabim,
ju mund të jeni në gjendje për të rregulluar atë duke ripërcaktimin ndryshueshme afat.
Në këto raste, ndryshimi i një ndryshore, të variabël mjedisi apo variablin shell,
duhet të ndryshojë një tjetër.
Unë e kam zbuluar nga përvoja që ndryshon gjatë në shkronja të mëdha
nuk ka gjithmonë të ndryshojë shell termin ndryshueshme me shkronja të vogla.
Kjo është një bug.
Unë nuk e di nëse kjo është gjithmonë e vërtetë. Shumica e kohës kjo nuk është e vërtetë, por ajo mund të jetë.
Pra, nëse ju bëni një ndryshim, vetëm shikoni se nga.
Kjo nuk është shpesh se keni nevojë për të ndryshuar atë vlerë, por një herë në një kohë që ju bëni.
USER Mjedisi ndryshueshme.
Përsëri, variabël mjedisi me shkronja të mëdha, predhë ndryshueshme me shkronja të vogla.
Kjo është emrin e përdoruesit.
Është vetëm në rrethana shumë të jashtëzakonshme
që ju do të duan të ndryshojnë këtë.
Nëse emrin e përdoruesit është dikush tjetër, ajo mund të hedhin të gjitha llojet e gjërave off.
Faqja kryesore directory, directory përdoruesit në shtëpi.
Përsëri, ju nuk do të duan për të ndryshuar këtë.
Vini re në të gjitha këto raste dhe një që ne jemi gati për të mbuluar, variablin rrugën,
Ndryshorja e mjedisit është me shkronja të mëdha dhe të ndryshueshme lidhur shell është me shkronja të vogla.
Nëse ju të ndryshojë një, ju duhet të ndryshojë të tjera.
Ky lloj detyrueshme nuk mund të përcaktohet si ju nuk mund të lidhet 2 variablave,
përveç keto 4, dhe lidhjen ne variablat nuk mund te fikur,
ju nuk mund të veçanta ato.
Pra, këto 4 palë variablave janë të lidhur.
Ata gjithmonë do të jetë. Askush tjetër nuk do të jetë.
Përveç kësaj, do të ishte e mundur për të krijuar variabla me emra të njëjtë
e llojeve të kundërta.
Ju mund të bëni një term shell ndryshueshme me shkronja të vogla
ose një mjedis Term variabël me shkronja të mëdha.
Këto variabla do të jetë i pavarur prej këtyre variablave çiftëzohet
dhe që do të jenë të pavarur nga njëra-tjetra.
Unë nuk mund ta imagjinoj pse ju do të bëni atë nëse nuk doni të ngatërruar njerëzit.
Ky këtu, e ndryshueshme rrugë, kjo është një e vërtetë e rëndësishme.
Një tjetër gjë këtu është se nuk mund të ketë raste
i variablat emrat ngjashme çiftuar që nuk janë të lidhur me njëri tjetrin.
Nuk mund të variablave, SHELL dhe shell, në kapitale dhe letra të vogla.
Bazuar në atë emër, ju nuk e di nëse kjo është e ndryshueshme një variabël shell
ose një variable mjedis, dhe ata nuk janë të lidhur me njëri tjetrin.
Pra, kjo lloj emrave çiftëzohet nuk nënkupton variablave të lidhur.
Ndryshueshme rrugë, të cilën unë u treguar më parë,
është një listë e pathname-in në të cilin shell duket për komandat.
Le të marrë mbi këtë dritare ketu dhe ne do të bëjmë echo $ PATH, shkronja të mëdha -
Ndryshorja e mjedisit - echo $ rrugën, letra të vogla - derdh ndryshore.
Vini re se lista e directories është e njëjtë. Këto janë të lidhur.
Ndryshimi një, ju ndryshim tjetër.
Në variabël ambiental elementet janë të ndara nga colons. Vini re se.
Variablat shell janë të ndara nga hapësira.
Kjo variabël mjedisi është një varg i vetëm.
Ndryshueshme shell është një koleksion.
Bourne shell nuk kishte vargjeve.
Bash bën, por kjo është tashmë një pjesë të caktuar të shell.
Ky është një varg i vetëm dhe jo një grup.
C-shell gjithmonë ka pasur vargjeve.
Vargjeve janë shumë më të lehtë për të punuar me të.
Ju mund të referohet në pjesë të tij.
Rruga Pra echo $ [1] dhe të shkoj / usr / bin, elementi i parë.
Përsëri, mos harroni dollar shenjë qëndron për elementin e fundit të listës së historisë.
Çfarë ndodh atje? Ai u përpoq për të gjetur shenjë e dollarit si një simbol të ndryshueshme.
I shpëtuar atë. Oops. Kjo nuk do të marrë atë ose.
Disa nga këto gjëra nuk punojnë aq mirë.
Ndoshta ne do të lënë vetëm atë jashtë.
Asterisk i referohet të gjithë gjë, por kjo është ajo që ju merrni nëse nuk e specifikoni një element.
Një tjetër mënyrë që variablat array mund të manipulohen,
Numri i elementeve atje, 7 elemente.
Këtu ne kemi vënë shenjën paund para emrin e ndryshueshme.
Ja një tjetër. Vendos një pikëpyetje atje.
Kjo është një vlerë logjike. Kjo tregon se ekziston ndryshueshme.
Kjo është një tjetër mënyrë për të punuar me variablave.
Kjo, nga rruga, nuk duhet të jetë një variabël grup.
Kjo mund të jetë çdo variabël.
Dhe në qoftë se unë bëj, nuk ka ndryshore të tilla dhe të marr një 0.
Një tjetër gjë e vogël ka lidhje me vlerësimet e ndryshueshme.
Mbrapsht në këtë këtu, në qoftë se për ndonjë arsye ju të kërkuar për të punuar me këtë
në vend se të punojnë me grup, ndryshueshme shell,
ka komandat që mund të ndajnë këto gjëra në bazë të zorrës së trashë.
Në fakt, në qoftë se ju jeni do të jetë bërë këtë në Bash shell ndoshta,
një lloj një skenar, kjo do të ishte me siguri se si do të bëhet kjo.
Por në C-shell është shumë më e lehtë për t'u përdorur array.
Në Bourne shell, variablat janë caktuar nga një shprehje të vetme si kjo,
si mënyrë ju mund të caktoni një ndryshore në një gjuhë programimi,
dhe këtu nuk duhet të ketë hapësira.
Është e nevojshme që ajo të jetë vetëm 1 string.
Në predha Bourne tipit, të gjithë variablat janë variablat shell.
Variable Mjedisit janë një mesin e variablave shell.
Ata dallohen nga variablave jo-mjedisore duke eksportuar.
Komanda për të bërë këtë është të eksportit, si eksportit printer.
Nëse do të përcaktojë një ndryshore të tillë,
nëse kemi dashur një komandë shtypjen për të gjetur atë, ajo do të duhet të jetë një variabël mjedisi,
dhe kjo është se si ne të bërë atë një.
Këtu ka diçka lloj i konfuze.
Kjo shprehje, eksporti në mjedis, buron nga ky koncept Bourne shell,
dhe akoma qe shprehja përdoret në përshkrimit të C-skeletit,
kur nuk ka të tillë urdhër si eksport.
Nëse ju vetëm thonë eksportit në vetvete, që ju të merrni një listë të eksportuar -
Pra, në qoftë se unë vetëm do të eksportit këtu, ka gjë të tillë.
Mirë, këtu ne do të shkojmë.
Këto gjëra, nga mënyra, janë gjithashtu të përcaktuar nga shell.
Unë nuk ka përcaktuar ndonjë nga këto me veten time.
Shell bën të gjitha llojet e gjërave në vetvete.
Ajo duhet të bëjë gjëra automatikisht.
Në Bash ose Korn shell, ju mund të kandidojë një komandë si kjo,
e cila do të të dy të japë një variable një vlerë dhe të eksportojë atë në 1 komandë.
Në shell Bourne ata duhet të jenë të komandave të veçanta si eksport një.
Këtu është një tjetër aspekt që është konfuze.
Komanda vendosur në C-shell përcakton variablat
dhe pa argumente ju tregon se çfarë vlerat e variablave janë të '.
Në Bash shell, komanda vendosur pa argumente bën të njëjtën gjë,
por me argumente që të bëjë diçka krejt të ndryshme.
Pra, këto janë argumentet të ndryshme këtu.
Disa nga këto janë të mjedisit të ndryshueshëm, disa prej tyre janë të variablave shell.
Të gjithë ata janë të variablave shell me të vërtetë. Disa nga ato janë të mjedisit të ndryshueshëm.
Komanda vendosur me argumente mund të përdoret për të vepruar
në parametrat pozicional në një skenar,
e cila është një mënyrë për të marrë ato të gjitha në të njëjtën kohë.
Ne nuk mund të vërtetë të shkojnë në atë sot.
Ajo gjithashtu mund të përdoret për të ndryshuar sjelljen shell.
Veçanërisht në Bash ka variabla të cilat do të përcaktojnë se si sillet shell.
Pastaj edhe vetëm këtë komandë një që ju mund të shihni, kjo komandë.
Typeset ndjekur nga variabla dhe llojet e ndryshueshme është përdorur në Korn dhe bash predha.
Kjo nuk është e detyrueshme, por ajo mund të përdoret për të kufizuar vlerat e variablave,
të cilat mund të jenë të dobishme për të parandaluar gabime, dhe kjo është mjaft e zakonshme.
Kështu që unë jam vetëm të përmendet se në rast se ju shohin atë diku.
Ku komandës.
Mos harroni përmenda më parë, ku komanda në C-shell,
të cilat mund të ju tregojnë vendndodhjen e një shtegun komandës.
Këtu është zëvendësimi komandës.
Ju duhet të gjeni në tastierën tuaj diku një karakter që duket si ky.
Vend në tastierë do të ndryshojnë.
Ne e kemi quajtur atë backquote. Është në lidhje me madhësinë e një kuotë.
Ajo shkon nga majta e sipërme për të ulur të drejtë.
Këtu në Mac tastierën e mia është në këndin e sipërm të majtë.
Që karakteri mund të përdoret për të ekzekutuar një komandë në një komandë.
Nëse ju keni një shprehje brenda backquotes,
kjo shprehje është një komandë, është e drejtuar.
Prodhimi i kësaj komande
zevendesohet pastaj për të tërë shprehjes backquote
brenda një komandë më të gjatë e cila më pas shkon me atë prodhim
si pjesë e vargut të tij të argumenteve e kështu me radhë.
Këtu është një komandë e cila përdor atë.
Le të demonstrojnë operacionin këtu.
Le të shkojnë deri këtu, të marrë nga backquotes.
Kontrolli Një merr mua në fillim të linjës me redaktimi sintaksë Emacs.
Deri tani pathname-in është ajo ku bën,
por kur kam bërë atë si kjo, ajo pastaj priza në atë listë të pathname-in
në vend të kësaj shprehje tërë backquote dhe shkon Ls-l mbi ta.
Lloji i përshtatshëm, huh?
Pra, kjo është një gjë zoti. Kjo është se si të punojnë backquotes.
Tani le të zbresin pak më tej.
Këto janë emërtimet. Unë në fakt përdorin këto.
Unë do të përpiqemi për të marrë këtë në me 1 operacion redaktimi.
Mirë.
Tani le të shohim se si dolën këto përkufizime.
alias LWH thënë mua se si është përcaktuar.
Vini re se kjo është vetëm kjo, por kuotat e jashtme janë marrë off
dhe pikë thirrje është marrë off.
! *, Lista e plotë e të gjitha argumenteve.
Në një përkufizim alias ajo do të aplikojë përsëri në ku unë të përdorur këtë.
LWH ksh bash. Mirë.
Shih se si punon kjo? Kjo kursen mua disa typing.
Le të shkojnë deri pak vetëm për të përmendur diçka tjetër këtu.
Vini re këtu këto predha të ndryshme. Unë duhet të ketë përmendur këtë më parë.
Csh ka një 2 mbi këtu dhe kështu bën / bin / tcsh.
Ne mund të krijojë me mjete të tjera se ata janë në të vërtetë të njëjtën fotografi.
Mos harroni Unë kam qenë duke thënë se në qoftë se ju shkruani sh ju merrni bash.
Lloji këtë dhe që ju të merrni këtë.
Por, ata nuk janë të lidhura. Ata kanë ato të vetme atje.
Dhe kjo nuk është lloji i skedarit cilat mund të telefononi një tjetër.
Pra, ata janë fotografi të veçanta, ato C-shell janë të njëjta fotografi.
Përsëri poshtë këtu, një tjetër këtu, kjo alias,
vini re që është duke këtë komandë, fotografi.
Kjo alias shkon se. Fotografi ju tregon llojin e një file.
Bash kështu FWH ksh. Mirë.
Kjo është prodhimi i komandës file.
Unë nuk e di nëse e dini se çfarë kjo do të thotë këtu,
Mach-O binar universal me 2 arkitektura.
Ka 2 lloje të mundshme procesor në Mac,
dhe disa programe janë shkruar që të jetë në gjendje për të drejtuar me të dyja,
dhe komandën fotografi mund të përcaktojë se, kështu që kjo është ajo që do të thotë kjo.
Të dyja këto fotografi janë shkruar në këtë mënyrë.
Pra, ne shohim se si punon alias, ne shohim se si punon backquote,
ne shohim se si ls aktuale e file ose fotografi punon.
Kjo mund të mos punojnë. Provoni "ku ku" dhe "LWH ku". Mirë, le të provojmë atë.
ku ku.
ku është një shell ndërtuar në.
Mos harroni më herët kemi treguar se bash nuk kishte ku.
Nëse ju shkruani, ku në Bash shell, ju merrni një mesazh gabimi.
Kjo është vetëm pjesë e shell në vend se të qënit një komandë të veçantë.
Çfarë ndodh nëse unë lloji LWH duke kërkuar për ku? Shih se çfarë ndodh atje.
Ran ku ku, mori këtë prodhim, dhe pastaj u përpoq për të drejtuar ls
si l se ku është një shell ndërtuar në.
ku është atje, por ato të tjera nuk ekzistojnë.
Asnjë nga këto nuk ekzistojnë, në të vërtetë.
Kështu që nuk funksionon gjithmonë, dhe kjo ilustron edhe se si disa gjëra
mos e bëni fare se çfarë ju mund të keni menduar.
Le të zbresin pak më tej këtu.
Kjo këtu është në Bash. Kjo është edhe zëvendësimi i komanda si backquote.
Por ndryshe nga backquote, ai përdor këtë stil të ndryshueshme.
Ka një numër të shprehjeve të cilat fillojnë me një shenjë dollar,
dhe ndërsa këto nuk janë variabla, ata huazuar përdorimin e shenjës së dollarit
për të treguar një shprehje të këtij lloji.
Që mund të jetë i rrethuar me kllapa ose kllapa ose kllapa dyshe
cila ka një qëllim tjetër.
Kllapat Beqar këtu janë një zëvendësim komandë vetëm si backquotes.
Kllapat dyshe është në fakt një operacion aritmetik.
Ka syntaxes të tjera, operacione të tjera.
Sintaksa Backquote është në dispozicion në Bash.
Megjithatë, kjo është e preferueshme. Është shumë më e lehtë për të lexuar dhe i lejon fole.
Ju mund të keni brenda $ (komanda) një tjetër komandë,
diçka si -
Unë të merrni një listë atje.
Kjo do të punojë në qoftë se kam pasur backquote gjithashtu.
Çka nëse unë dua të bëj diçka si -
Ju ndoshta nuk do të vërtetë e përdorin këtë komandë,
por kjo komandë zëvendësimi i brendshëm i bën jehonë emrat e të gjitha dosjeve që fillojnë me një,
atëherë kjo shkon ls-l në ato fotografi,
dhe pastaj kjo vetëm i bën jehonë e prodhimit.
Ju ndoshta nuk do të bëjë këtë, ju vetëm do të bëjë jehonë ose ls,
por kjo ilustron se si fole e komandave punon.
Pra, vetëm një tjetër tipar këtu.
I përmendur këtë më parë, se kur ju keni ku në C-shell,
shkruani punëve në predha Bourne tipit për gjetjen e komandave.
Ndërtuar në komandat, vetëm atë që unë isha duke thënë atje.
Komandat jane pjese e guaskes, si ku.
Kur shell ekzekuton një komandë si ls, ajo ndodhet atë nëpërmjet rrugën,
e gjen atë në një directory diku,
thuhet se në kujtesë, krijon një predhë të re,
lexon ls komandën ose çfarëdo në shell
ku mjedisit të ndryshueshëm janë të vendosura tashmë,
dhe pastaj ajo transferon ekzekutimin për të.
Built-in komandën, Kodi për atë komandë është brenda shell,
kështu shell vetëm fillon ekzekutimin e një pjesë të kodit të saj.
ku është një urdhër i tillë. Ajo në fakt merr më të shpejtë.
Ai nuk ka për të lexuar ndonjë gjë në kujtesë, është tashmë në kujtesën.
Komandat Built-në gjithmonë kanë përparësi ndaj komandave me të njëjtin emër.
Komandat që janë në directories në rrugën mund të ketë të njëjtin emër,
komandat në drejtorive të ndryshme, fotografi në directories të ndryshme.
Një që ndodh më herët në rrugën është një që ju do të merrni.
Nëse ka një komandë ndërtuar në, ju gjithmonë merrni atë.
Nuk ka asnjë mënyrë për të dhënë atë një përparësi më të ulët se një komandë në rrugën.
Nëse ju doni të merrni atë komandën rrugën, ju mund të shtypni e file të plotë.
Nëse do të kishte një komandë, ku në rrugën diku,
ju mund të shkruani / bin / ku dhe ju do të merrni atë.
Nëse ju nuk doni të shkruani të gjithë të file, ju mund të përcaktojë një pseudonim.
Në fakt, në qoftë se ju dha pseudonimin të njëjtin emër si ndërtuar në komandë, ajo do të punojë
sepse përkufizimi alias është vlerësuar
para shell përcakton se kjo është një ndërtuar në komandë të cilat duhet të ekzekutohet.
Atëherë kjo merr pak më e komplikuar me disa komandat këtu.
Rasti i disa komandave janë ndërtuar në të vërtetë komandat dhe në rrugën.
Një prej tyre është jehonë, komanda unë vetëm përdorur pak kohë më parë në këto shembuj.
Echo është një komandë në rrugën dhe është në çdo shell.
Ata jo domosdoshmërisht të gjithë sillen në të njëjtën mënyrë.
Kjo ishte fillimisht një komandë vetëm në rrugë.
Ajo është ndërtuar në të predha më vonë.
Sepse ka opsione të cilat varen nga mjedisi
dhe opsioneve të komandës, e ndërtuar në komandat
janë shkruar të funksionojë njëjtë me komandën që kishte qenë në rrugë,
është e pamundur që ata do të ishin shkruar në këtë mënyrë
nëse komanda nuk e kishte tashmë janë shkruar për rrugën.
Pra, kjo ka efekte anësore. Historia e saj ka efekte këtu.
Ka mundësi atje.
Ka edhe një opsion të përcaktuara nga një ndryshore në tcsh quajtur echo_style.
Kjo është një prej këtyre variablave që mund të ndryshojë mënyrën se ECHO vepra.
Ka raste të tjera në të cilat ju mund të caktojë një ndryshore
që ndryshon mënyrën se operacioni shell, duke përfshirë një komandë të ndërtuar-në, punon.
Kjo nuk do të ndikojë në çdo gjë tjetër
që nga komandat e tjera nuk kanë qasje në ndryshoret shell,
vetëm variablat e mjedisit.
Por operacionet shell mund të lexoni variablat shell.
Kjo nuk do të punojë për csh. Kjo është vetëm tcsh. Kjo është një nga enhancements.
Parsing ka sekuenca kur vlerëson metacharacters,
kur vlerëson variablave, emërtimet, referencat e historisë.
Ka një sekuencë të veçantë për këto gjëra.
Nëse e bën gjërat në një sekuencë të veçantë
dhe merr për diçka që është një shprehje e një lloj
i cili tashmë është vlerësuar, ajo nuk do të vlerësojë atë përsëri.
Nëse ajo merr atë, atëherë ai thjesht do të kalojë në karaktere.
Pra, nëse vlerësimi i disa shprehjeve si zëvendësim të komandës
ose variabël ose çfarëdo jep të rritet në një shprehje
të cilën ju do të duan të jenë të vlerësuar,
që do të punojnë vetëm në qoftë se vlerësimi ndodh më pas në rend.
Unë shpresoj se unë jam duke u qartë atje.
Kjo sekuencë parsing, një operacion në C-shell,
nuk është e njëjtë për të ndërtuar në komandat si ajo është për jo-të ndërtuar në komandat.
Unë nuk jam i sigurt për Bash atje.
Për shembull, në qoftë se një variabël predhë prodhuar një referencë të historisë,
kjo ndoshta nuk do të kthehemi në histori.
Ajo do të marrë vetëm me pikë thirrje.
Në fakt, ne mund të përpiqemi vetëm se nga tani.
vendosur një = dhe ne do të duhet për të vënë këtë në atje.
Oh, prisni. Më vjen keq. Unë e bëri këtë në Bash. Unë të kërkuar për të bërë atë këtu.
Shih, kështu që nuk ka vlerësuar se referimi të historisë
sepse ishte tashmë e kaluar në pikën e vlerësimit shprehje të historisë
kur është vlerësuar ndryshueshme.
Pra, kjo është 1 efekti i analizë gramatikore.
Dhe përsëri, ndërtuar në komandat nuk janë bërë në të njëjtën mënyrë.
Dakord. Le të shkojnë në një tjetër këtu.
Kjo ka për qëllim të jetë 1 linjë, por është duke e bërë më të lehtë për të lexuar.
Çfarë do të bëni?
Ju mund të kujtojnë se ne mund të vlerësojmë asterisks si vijat filename,
dhe ka si wildcards tjera filename si pikëpyetje dhe shprehjet kllapa.
Kjo lloj vlerësimi është quajtur globbing.
vendosur noglob në fillim të kësaj komande thotë se nuk e bëjnë këtë.
noglob unset thotë të kthehemi për të bërë atë.
Vini re se vendosur glob nuk do të kishte atë efekt.
Në gjuhën e zakonshme, të vendosur glob apo noglob unset do të duket të jetë e barabartë,
por këtu nuk është. Është noglob unset.
Tani TSET. TSET qëndroi për të vendosur terminal.
Nuk është përdorur që shpesh tani, por para se sistemet windowing u bë në dispozicion
dhe keni pasur një terminal të vetëm, ju mund të keni për të përcaktuar llojin.
Dhe nëse diçka po vinte mbi një Ethernet apo nga rrjeti,
ju mund të dëshironi të them se është një vt100.
Vt100 është lloj i një standardi në biznesin e terminalit. Ajo vjen nga terminali dhjetor.
Nëse ju vetëm bëni me telefon - të vini re se? Kjo shkon prapa një rrugë, huh?
Pra, nëse ne vetëm e TSET gjatë këtu,
në qoftë se unë vetëm bëj TSET, është e resetting terminal time, por ju nuk shihni asgjë.
Ajo nuk ka të vërtetë të ndryshojë asgjë.
-S
Mirë.
Term setenv xterm-ngjyra.
Ne tashmë e dimë se termi ishte vendosur në këtë mënyrë, kështu që nuk ka ndryshuar.
Kjo është mënyra që ne do të duan të bëhet kjo.
Por vini re se kjo komandë, TSET-s, vetëm të prodhimit këto komanda. Ai nuk ka drejtuar ato.
Ai nuk ka drejtuar këto komanda, por ata të prodhimit.
Pra, kjo ka për qëllim të prodhojë komandat të cilat më pas do të kandidojë.
Ju kujtohet komandën në këtë dosje unë vetëm tregoi se keni pasur një Q në të.
Pra, le ta bëjmë atë.
Q suppresses disa dalje, por kjo nuk ka rëndësi këtu, si ju mund të shihni.
Unë jam vetëm duke bërë që për të të treguar ju se kjo nuk kishte rëndësi.
Kjo është në backquote sintaksë.
Shënim backquote këtu, backquote këtu.
Unë jam duke lënë jashtë këto gjëra këtu.
Këto janë raste të thënë atë çfarë duhet të bëni
në rastin e llojeve të veçanta të terminaleve -
Ethernet, rrjet, me telefon, çfarë keni.
Nuk ka rëndësi këtu, sepse ne nuk jeni në të vërtetë duke bërë ndonjë nga këto gjëra.
Unë jam vetëm duke ilustruar komandën.
Po e bëra këtë me backquote, çfarë jam unë do të merrni?
Gjithashtu vini re këtu se kjo përfshinte noglob vendosur dhe noglob unset,
kështu që ata janë të tepërta tani në përkufizimin.
Kjo nuk ishte gjithmonë e vërtetë, por tani ata janë të përfshira në këtë komandë.
Por le të shohim se çfarë ndodh në qoftë se unë bëj që
dhe të shkojnë në fillim të vijë me të Kontrollit A dhe unë ta bëjë këtë.
Mirë, të vendosur: Komanda nuk u gjet. Kjo është lloj i rastësishëm, nuk është ajo?
vendosur është një urdhër i njohur. Kjo është pjesë e shell.
vendosur: Komanda nuk u gjet? Pse është kjo?
Hmm. E pra, le të mendojnë për këtë.
Është drejtimin e një zëvendësim të komandës backquote,
dhe që ndodh në një pjesë të caktuar të sekuencës së analizimit të komandës.
vendosur është një komandë ndërtuar në.
Kështu që nga ajo kohë e bën atë zëvendësim të komandës,
kjo është marrë tashmë e kaluara në pikën e identifikimit të ndërtuar në komandat.
Pra, ajo i trajton të vendosur si të ishte një komandë në rrugën.
Eshtë e panevojshme të thuhet, kjo nuk do të gjeni atë dhe që ju të merrni një gabim.
Well. Ka një shembull i rend analizë gramatikore.
Dhe çfarë bëjmë ne për këtë?
Vini re këtë komandë shumë interesante këtu, eval.
Pyes veten se çfarë ajo bën.
Nëse ju shikoni në doracakun - dhe le të vetëm të bëjë këtë
për të treguar se si konfuz këto manuale janë -
tcsh njeri, manual hutuar, duke gjetur gjëra këtu nuk është e lehtë as.
Këtu ne do të shkojmë, eval arg, kështu që ne mund të ketë 1 ose më shumë argumente
dhe ka një listë të gjërave atje.
Trajton argumentet si inpute në shell
dhe ekzekuton komandat që rezultojnë në kontekstin e shell aktuale.
Kjo përdoret zakonisht për të ekzekutuar komanda e krijuara si rezultat i komandës
ose zëvendësimi ndryshueshme sepse parsing ndodh para se këto zëvendësime.
Shumë mirë.
Dhe këtu ata edhe i referohen komandën TSET për një përdorim të mostrës
si ai që unë vetëm ju tregoi.
Tani unë kam për të marrë dritaren përsëri në një vend të dobishme.
Le të merrni mbi këtu dhe ne do të shohim se eval përdoret vetëm para se.
Pra, le të shohim se çfarë ndodh në qoftë se ne kemi vënë - këtu ne do të shkojmë me shigjeta në këtë komandë
dhe Kontrollit Një në fillim, eval.
Mirë, kështu që ajo punon.
Kur ju bëni eval, ajo merr atë që vjen pas saj dhe e bën atë një komandë.
Kjo ju mundëson që të kuptoj në thelb atë dy herë.
Seksioni këtu shkon këtë komandë brenda backquotes,
merr e prodhimit.
Output është menduar të jenë të drejtuar si ato komandat këtu si këto
në këtë dhe këtë.
Pra, ato komandat janë tani këtu në këtë rend,
por këto janë ndërtuar në komandat dhe nuk mund t'i merrni ato menjëherë.
Pra, ne do të shkojmë për të eval, eval zgjedh se deri, fillon të gjithë gjë nga e para, dhe ajo punon.
Një shembull të dy backquoting, eval, parsing, pasojat e parsing,
dhe një komandë e cila është ndoshta e shumë pak përdorim për ju në ditët e sotme.
Mirë. Në rregull, umask.
Le të shikojmë në këtë komandë këtu, umask 022. Pyes veten se çfarë ajo bën.
Le të vetëm lloji umask me asgjë pas saj. 22. Mirë.
022 dhe të bëjë atë përsëri.
Siç mund ta keni mendoi, umask pa argumente ju tregon maskë aktuale;
umask me argumente që e bën atë, por se ishte ai që unë tashmë kishte.
Çfarë do të thotë 022?
Këto janë këtu mbrojtjet për një fotografi.
Ata të përcaktuar se kush është i lejuar të lexojnë ose të shkruajnë apo të ekzekutuar file.
Mbrojtjet janë quajtur edhe lejet.
R qëndron për të lexuar, w për të shkruani,
dhe x, i cili nuk është i pranishëm aty, qëndron për ekzekutuar.
Ka 3 kategori atje.
3 elementet e fundit janë në kategorinë e përdoruesit. Ata që aplikojnë për mua, të përdoruesit.
Këto 3 këtu të zbatohet për grupin.
Skedari i takon 1 grup, përdorues mund ti përkasë disa grupeve,
por nëse përdoruesi është në grupin te cilin skedarit takon,
atëherë këto mbrojtje do të zbatohet për të nëse ai nuk është përdorues.
Dhe kjo është e të gjithë të tjerët.
Këto kategori janë reciprokisht ekskluzive.
Mbrojtjet e anëtarit zbatohen për të,
mbrojtjet e grupit të zbatohet për anëtarët e grupit të tjerë se sa të përdoruesit,
dhe mbrojtjet e tjera të zbatohet vetëm për njerëz të tjerë se sa të përdoruesit dhe anëtarëve të grupit.
Nëse ka një r ose aw ose një x, kjo do të thotë se mbrojtja është dhënë.
Nëse ka një vizë ndarëse, kjo do të thotë se nuk është.
Ka të vërtetë janë gjëra të tjera që mund të vihet në këtu përveç këtyre,
që unë nuk do të marrë në tani.
Umask përcakton një default për fotografi që keni krijuar.
Dhe si një maskë, në thelb ajo thotë copa që ju nuk e përcaktuara.
Si është bërë kjo bit?
Nëse ju mendoni për secilin nga këto si një numër oktal,
kjo është pak 1s, kjo është 2s, kjo është 4s.
Pra, përmes 0 7
do të përshkruajnë se çfarë kombinim i r-së, W-së, dhe x-së ju keni për këto 3
dhe pastaj një numër i ngjashëm për këto dhe pastaj për këto.
Kështu që do të thotë 022 0 per tjetrin, me 2 për grupin, 2 për përdoruesit.
Por kjo është një maskë. Maskë është ajo që ju nuk keni.
Më vjen keq. Unë vetëm ju dha gjërat në mënyrë të gabuar.
Kjo është e para 3. Këto janë 3 përdorues, këta 3 janë grupi, këto 3 janë të tjera.
Na vjen keq unë ju dha këto në mënyrë të gabuar.
0, i cili është i pari i atyre, nuk shfaq vlerën,
por në qoftë se një numër nuk është atje, kjo është një 0.
Kjo do të thotë të gjitha 3 e këto do të lejohet.
Njoftim se në këtë veçantë x nuk lejohet.
Arsye është se predhë është i aftë për përcaktimin
nëse një skedar duhet të ekzekutohet ose jo.
Që kjo nuk është një skedar i ekzekutueshëm, ajo nuk e ka vënë x.
Të 2 do të thotë që shkruajnë leje, kategorinë e dytë këtu,
një në mes, është mohuar.
Pra, përsëri, këto janë gjërat që ajo i mohoi.
E pra, x është i lejuar por nuk është këtu, sepse nuk është i ekzekutueshëm
dhe në mënyrë të ngjashme për të tjerët.
Pra, kjo është një umask të përbashkët.
Një tjetër e përbashkët është 700 - dhënë vetes çdo gjë dhe askush tjetër asgjë.
Dhe ka mundësi të tjera.
Unë do të kthehem në atë. Duke përdorur historinë unë mund të kërkoni përsëri për këtë, LWH për atje.
Mirë. Kështu që këtu, këto janë predha.
Bash, pronari i cili është llogaria sistemi, mund të bëjë gjithçka.
Grup dhe të gjithë të tjerët mund të bëjnë të lexojnë ose të ekzekutuar, por nuk shkruaj.
Ky i fundit nuk ka edhe të lejojë që pronari për të shkruar për të.
Nëse pronari donte për të shkruar për të, llogarinë e sistemit,
ai do të duhet të ndryshojë mbrojtjen e parë.
Por përsëri, umask vendos default nga maskimin atë,
duke treguar copa që nuk do të përcaktuara.
Kjo eshte zakonisht në një nga dosjet tu Gatitjeje, e cila është. Cshrc tuaj për C-skeletit
ose profilit. për skeleteve Bourne tipit.
Ajo mund të jetë diku tjetër edhe nëse ka fotografi të tjera Gatitjeje në sistemin.
Gjithsesi, kjo është umask.
Ka lloj diçka e çuditshme këtu,
dhe kjo është, pse nuk ka një komandë të vetme për këtë?
Nëse unë ishin të këtij shkrimi, unë do të bëjë atë një variabël, umask = disa vlera.
Pse ka një komandë të tërë vetëm për këtë qëllim?
Arsyeja është kjo vetëm shkon prapa në origjinën e Unix.
Unix ishte vetëm disa projekt programimit në Bell Labs në fillim të viteve 1970.
Njerëzit vetëm të marrë së bashku për të programit.
Ata kurrë nuk për qëllim që ajo të bëhet një sistem operativ të gjithë botën.
Njerëz të ndryshëm shkroi pjesë të ndryshme pa u menduar shumë
se si ata ishin duke shkuar për të përdorur - në vend të paqarta.
Dhe ajo erdhi së bashku si kjo, dhe është ende si kjo në disa aspekte.
Kështu që reflekton historinë, dhe ka ende këto mospërputhje dhe elemente të çuditshme të saj.
Mirë. Një tjetër këtu.
Siç kam shkruar më parë, C-shell nuk është përdorur me të vërtetë shumë për programimin,
edhe pse ajo mund të jetë.
Ajo ekzekuton më ngadalë, përsëri e tregtisë-off midis përdorimit interaktive,
e cila ka më shumë se shpejtësia e përpunimit të përfshirë,
të cilat mund të bëjë pa të përpunimit.
Karakteristika shtese mbi shell Bourne nga Korn dhe Bourne-përsëri predha
nuk duket për të ngadalësuar ato, dhe unë nuk e di pse kjo është.
Ajo mund të jetë vetëm programimit më të mirë, por unë nuk jam në gjendje të dinë.
Speed ​​këtu në të vërtetë nuk është një punë e madhe, edhe pse ajo është përmendur.
Arsyeja është se Scripts predhë të vërtetë të marrë në mënyrë të drejtë të shpejtë.
Nëse ka një shumë të komandave si në një program rrugedalje,
ju ndoshta nuk do të bëjë atë në një script shell.
Operacionet janë mjaft të thjeshtë dhe drejtpërdrejtë.
Ato që unë kam përjetuar që janë shumë të ngadaltë
përfshijnë aplikime të përsëritura të komandave të ngadaltë.
Më parë kam përmendur redaktor lumë sed. Kjo komandë është i ngadalshëm.
Nëse ju të ekzekutuar shumë herë sed, ju do të merrni një skenar të ngadaltë, por kjo nuk është shell që është i ngadalshëm.
Drejtimin e tij në Bourne shell nuk do të jetë shumë më shpejt se duke atë në C-shell,
edhe pse ka ndoshta disa avantazhe atje.
Aftësitë e programimit shtesë, nga ana tjetër,
arsye të rëndësishme pse ju do të përdorni predha Bourne-lloj.
C-shell ka karakteristika të çuditshme të saj -
fakti që ju nuk e dini nëse një variabël është një variabël shell ose një variabël mjedisi.
Ajo mund të jetë shumë konfuze.
Kjo nuk është aq e lehtë për të shkruar
vetëm bazuar në përvojën tuaj të programeve në gjuhë të tjera.
Unë mendoj se ju mund të gjeni predha Bourne tipit më shumë në përputhje me përvojën tuaj.
Disa scripts, megjithatë, mund të jetë mijëra linjave në gjatësi.
Ata që unë kam parë janë përdorur për patching sistemet operative.
Ata mund të ekzekutojë shumë ngadalë, por ju nuk do të kandidojë ata shumë shpesh.
Kjo është vetëm kur ju jeni duke bërë patching,
dhe kjo është vetëm menaxher sistemi që bën këto gjëra,
kështu që nuk është me të vërtetë shumë e një çështje.
Ata që me qindra e linjave të gjatë në të vërtetë të ekzekutuar mjaft shpejt.
Duke përmendur këtu këtë, çfarë janë ato enhancements?
Unë e kam përmendur tashmë disa prej tyre - vargjeve, llogaritjet,
e $ () shprehje për llogaritje në Bash shell,
lloj tjetër të zëvendësimit të komandës.
Ka lloje të ndryshme të komandave të testimit
me të cilat ju mund të bëni teste të kushtëzuara nga ekzistenca e një file apo gjëra të tjera.
Fundit për këtu, kjo komandë këtu.
Çfarë e bën këtë të bëjë, dhe pse do të përdorë dikush atë?
variablename printenv.
Ne e dimë se çfarë printenv bën. Ajo na tregon vlerën e një ndryshore.
Dhe variablename printenv nuk do të na tregojë shumë, sepse nuk ka asnjë variabël të tillë.
Blank.
Por le t'i jepte diçka të rëndësishme.
Kjo nuk është as atje. Mirë. I guess Unë kurrë nuk përcaktohet se.
Le të vetëm të kontrolluar mjedisin tim.
Kjo është një tjetër komandë me të cilat ju mund të inspektojnë mjedisin tuaj.
Nuk është redaktor të mirë të vjetër, e kemi parë më parë.
Çfarë do të bëni?
Këtu kemi një shprehje backquote.
Mos harroni kjo është C-shell.
Pra EDITOR printenv do të na japin një vlerë prej Editor. Është e vi.
Dhe atëherë ajo do të vendosë këtë vlerë të ndryshueshme a, komandën caktuar.
Deri tani në qoftë se bëj echo $ a, shkoj vi.
Kjo nuk duket tmerrësisht e dobishme.
Megjithatë, ai në fakt ka një qëllim.
Që ne nuk e dimë nëse një variabël është një variabël shell ose një variabël mjedisi
duke përdorur vlerësimit sintaksë shenjë dollar, ne mund të përdorim printenv
për të siguruar se kjo është një variabël mjedisi.
Pra, nëse do të kishte një redaktor predhë ndryshueshme, kjo nuk do të kishte marrë atë.
Kjo punon vetëm me variabël ambiental.
Nëse do të kishte një variabël shell dhe kam kërkuar vlerën e saj,
Unë do të duhet për të gjetur një mënyrë tjetër për të bërë atë.
Një mënyrë për të bërë këtë do të ishte duke bërë grup dhe gypave.
Kjo është një nga metacharacters, karaktere të veçanta.
Ajo dërgon prodhimin e vendosur për diçka tjetër.
Le të shohim se çfarë ne mund të gjeni atje.
Asgjë. Mirë. Le të shohim se çfarë është në atje të gjithë së bashku.
Ishte echo_style, e përmenda më parë. Mirë, le të bëjë këtë.
Mos harroni e përmenda më parë, echo_style
përcakton mënyrën komanda echo do të kandidojë.
BSD qëndron për Berkeley Standard Shpërndarjes.
Kjo është Berkeley Unix nga vitet 1970.
Kjo është një nga mënyrat që jehonë mund të kandidojë.
Vendosja echo_style për këtë vlerë në TC-shell do të bëjë jehonë të sillet në këtë mënyrë.
Në mënyrë të vendosur e bën këtë, por të vendosur vetëm merr variablave shell.
Kjo nuk do të gjeni redaktor, që nuk është një variabël shell.
Asgjë.
Pra, kjo është një mënyrë për të bërë dallimin e tyre.
Por fakti që ju duhet të kalojnë nëpër një komandë të çuditshme si kjo
të bëjnë dallimin në mes të variablave shell apo mjedis të ndryshueshëm
tregon llojin e natyrës jopraktike të C-shell për disa qëllime.
Dhe tani, i fundit dhe ndoshta më pak, kjo është faqet njeriu.
Ata të cilët ju mund të dini, njeriu është e shkurtër komanda për manual.
Faqet njeri për predha janë të vështirë për të lexuar. Ata janë shumë të gjatë.
Ata janë të organizuar në një mënyrë që mund të bëjnë të vështirë për të gjetur atë që ju po kërkoni.
Pra, nëse ju jeni duke kërkuar për diçka me një qëllim,
ju nuk mund të dini nëse se qëllimi është një variabël shell apo diçka tjetër,
kështu që ju nuk mund të dini ku të kërkoni për të.
Ju mund të shikoni për vargjet të ndryshme, por vargjet shpesh përsëriten.
Pra, është në përgjithësi e vështirë për të lexuar.
Ne vetëm shikuar në faqen e TC-shell njeri pak para për të gjetur komandën eval.
Disa gjëra shkojnë më të shpejtë.
Një mënyrë është për të kërkuar për një varg.
Ju mund të përdorni pager.
Pager ka plagë për të kërkuar një komandë apo një varg brenda një operacion pager.
Njeriu nga default do të përdorë pagers, të jetë ose shumë ose më pak.
Unë nuk e di nëse ju jeni të njohur me ata, por ata mund të tregojnë fotografi pak nga pak.
Unë kam qenë duke përdorur më pak për të shfaqur këto fotografi të veçantë ne kemi marrë këtu.
Ju mund të kërkoni brenda atje.
Ju mund të provoni duke përdorur vargjet e ndryshme të kërkimit.
Gjithashtu faqet njeriu në sisteme të ndryshme operative mund të mos jetë e njëjtë.
Ata mund të jenë të veçanta për faqet csh dhe tcsh.
Ata janë nuk janë në Mac, por ato mund të jenë, nëse ata janë të komandave të veçanta.
Nëse sh nuk ka të vërtetë të thirrur Bash, se ndoshta do të jetë një faqe e veçantë njeri.
Disa sisteme kanë faqet e ndara nga njeri vetëm për C-shell të ndërtuar në komandat e.
Ndonjëherë në qoftë se ju dëshironi të lexoni një përshkrim i një komande të ndërtuar në
kjo është edhe në rrugën, si jehonë, ju duhet të lexoni faqen e njeri në këtë komandë në jehonë
për të përcaktuar se si do të punojë si një komandë të ndërtuar-në
edhe në qoftë se ju nuk jeni duke e quajtur ndërtuar në komandën.
Kjo është një pengesë e sistemit operativ në përgjithësi, jo vetëm për predha,
edhe pse për predha në veçanti faqet njeriu janë mjaft të gjatë,
pjesërisht sepse ata kanë shtuar karakteristika të dobishme për ta, e cila mund të jetë një pozitiv.
Mirë. A ka ndonjë pyetje? Çdo tema ju doni të sjellë deri?
Çdo gjë e rëndësishme këtu?
E pra, kjo është shumë e bukur duke folur me ju të gjithë.
Unë shpresoj që ju të marrë diçka nga këtij seminari
që do të jenë të dobishme për ju në përpjekjet tuaja të ardhshme.
[CS50.TV]