>> [Seminár - Unix Mušle, prostredie]
[Douglas Kline - Harvard University]
[To je CS50. - CS50.TV]
>> Dnešná téma je unixový shell.
Som Douglas Kline, expert, alebo aspoň rozumne príslušný užívateľ, škrupiny.
Shell je rozhranie pre užívateľa na operačnom systéme počítača.
Názov je zavádzajúci, pretože, na rozdiel od shellu zvieraťa,
, Ktorá je tvrdá a ochranné, počítač shell umožňuje komunikáciu.
Takže porézna membrána by asi bolo lepšie metafora.
>> Pôvodné Shell pre Unix je shell Bourne.
Bourne sa píše B-O-u-R-N-E.
Bourne bol jedným z pôvodných autorov Unix,
a tak shell je pomenovaný po ňom.
Názov tejto nádrži ako príkazu je jednoducho sh.
To je príkaz, ktorý možno vykonať.
Shell sa spustí pri prihlásení.
Keď sa prihlásite k počítaču, shell len spustí za vás,
a to je to, čo sa vaše príkazy.
Je možné začať inokedy tiež.
Ak máte vyvolať okno s žiadnym iným označením, bude to spustiť shell pre vás.
To je, ako to je, že môžete ísť k oknu a začnite písať príkazy
a tak ďalej, že aj keď ste sa prihlásiť do tohto okna.
Navyše, ak si vzdialené prihlásenie,
potom to začne shell na vzdialenom počítači.
A to je možné spúšťať príkazy bez interaktívnym shellu.
To môže znamenať priamo vo Vašom súčasnom prevádzky,
a to môže tiež znamenať diaľkové ovládanie.
Dalo by sa poslať príkaz k inému počítaču,
ktorý zahŕňa spustenie shellu tam.
V skutočnosti, že musí obsahovať zakladanie shell tam
aj keď to nie je váš konečný účel.
Keď sa niečo začne takto, to nemusí nutne začať nový shell.
Ak máte vychovávať nové okno, je možné povedať, že, aby sa editor
alebo nejaký iný príkaz.
V tomto prípade, editor bude začínať od nuly.
Keď editor skončí, skončí okno.
To je trochu nezvyčajné, ale to môže byť vykonané.
V týchto prípadoch nebude shell.
Takže to nie je nevyhnutne pravda, že okno alebo niektoré z týchto aplikácií prinesie do shellu.
>> Shell analyzuje príkazy.
Analýze znamená identifikáciu jednotlivých prvkov a ich klasifikáciu.
V rámci príkazu, kompletný reťazec, ktorý zadáte,
tam bude jeden alebo viac jednotlivé príkazy, ktoré majú byť vykonané.
Ostatné prvky môžu byť argumenty.
Tam môže byť tiež špeciálne znaky, ktoré ovplyvňujú výkon príkazu.
Môžu posielať výstup inam než na obrazovke
v prípade, že príkaz by zvyčajne odoslať ju na obrazovke.
Je možné presmerovať vstup, to môže robiť iné veci tiež.
Existujú rôzne iné symboly, znaky, a tak ďalej.
Syntaktická analýza zahŕňa detekciu a interpretáciu tie veci.
>> Teraz, ak nie sú k dispozícii žiadne ďalšie otázky, ktoré je skôr pravdepodobné, pretože tam nie sú viac ľudí,
pôjdeme na moje ďalšie stránky tu.
>> Som povedal skôr, že Bourne shell je predvolený shell.
Tam sú iní.
Jedným z nich je C-shell. Príkaz je csh.
Názov C-shell je len hra so slovami.
Tento shell bol predstavený s Berkeley Unix v polovici roka 1970.
Berkeley Unix bol významnou udalosťou vo vývoji Unixu.
Bola to obrovská revolúcia a vrátane zavedenia tohto shellu.
Dôvodom pre túto hru so slovami, C-shell,
je, že C-shell má niektoré vlastnosti v ňom, ktoré sa podobajú jazyka C,
ktoré Bourne shell nemá -
alebo to nemal v tej dobe.
K dispozícii je tiež TC-shell.
To je nadmnožinou C-shell.
To má ďalšie funkcie, z ktorých mnohé sú užitočné pre interaktívne použitie,
ako je napríklad pripomínajúce príkazy v mechanizme histórie,
ktoré budem popisovať niečo neskôr -
jednoduchým spôsobom, modeled po editore.
Má tiež viazanie, ktoré vám umožní zviazať krátky reťazec kľúče na dlhšiu príkazu.
Nebudeme sa dostať do toho dnes.
To má niektoré funkcie, ktoré sú užitočné pre programovanie.
Avšak, C-shell nie je často používaný pre shell programovania.
Programy Shell, ak ste už nevedeli,
sú programy, ktoré sa skladajú z vlastností shellu.
Dalo by sa spustiť to ako programy.
Môžete napísať veľa príkazov shellu do súboru a spustiť súbor.
Nemusíte ho skompilovať. To je interpretačné jazyk.
Frázy C-shell je teraz nejasný, pretože by mohol odkazovať len na pôvodného C-shellu, csh,
alebo na všetkých C-škrupiny, vrátane tcsh. Je to trochu nejasné.
>> Neskôr shell je shell Korn, ksh, pomenovaný po programátor, Korn.
Tento shell pokúšal začleniť do 1 shellu
výhody C-shell pre interaktívne použitie
a Bourne shell pre programovanie.
To bolo použité ako interaktívny shell niektorými ľuďmi - minoritné.
Neskôr však došlo k ďalšiemu predstavenie, Bash shell, bash,
opäť hra so slovami, Bourne-znovu shell.
Je to rozšírenie plášťa Bourne. Korn shell je tiež. Obaja z nich sú.
Má rovnaké ciele Korn o zlúčenie C-shell je
a výhody Bourne Shell v roku 1 škrupine.
Mnoho vylepšení z Korn shellu sú tiež zahrnuté v Bash.
Bash, má však viac, a je preto vhodnejšie.
Bourne-znovu shell a Korn shell sa nazýva Bourne typu škrupiny
pretože obsahujú vlastnosti Bourne Shellu,
ktoré sú v rozpore v niektorých ohľadoch s C-škrupiny.
Existujú aj iné škrupiny okrem tých, niektoré určené pre obmedzené použitie,
možná len na niektorých príkazov, možno špecializované účely, nie je často používaný.
>> Dobre. Ďalšia položka tu.
Bash shell stalo sa spojené s rôznymi formami Linuxu.
Nie som si istý, či je to pravda, každej forme.
Existuje mnoho foriem tam, a ja som nepoužil všetky,
ale tie, ktoré som použil to stalo s ním spojené.
Takže pokiaľ viem, neexistuje nič, čo Bash
čo je viac, kompatibilný s operačným systémom Linux
než akékoľvek iné kombinácie plášťa a operačný systém.
Myslím, že to asi len odráža sklony programátorov.
To, že má byť spájaná s operačným systémom Linux je ďalší dôvod, prečo radšej Bash na KSH
od veci, je pravdepodobné, že bude v ňom napísané, a je pravdepodobné, že sa šíri.
Dám vám ďalšie dôvody, ktoré neskôr.
Bourne shell skripty by mali prebiehať pod Korn shellu alebo Bash.
Ak máte napísať niečo pre Bourne shellu,
môžete pravdepodobne spustiť pod ksh alebo bash.
Korn shell skriptov bude pravdepodobne spustený pod Bash, ale nemôžem zaručiť, že.
Neskôr tu na, C-shell skripty by mali prebiehať v rámci TC-shell.
C-shell bol vlastne nikdy vo veľkej miere používajú pre skriptovanie
od Bourne shell a neskôr Bourne typu škrupiny boli vhodnejšie na tento účel.
Takže to naozaj nie je tak dôležité.
Existuje pomerne veľa Bourne shell skripty, ktoré boli napísané dávno,
pred Korn shellu alebo Bourne-znovu shell boli zavedené.
Tí, ktorí sú ešte v použití, ktorý je súčasťou operačných systémov,
a tak zistíte, je, ak sa pozriete do operačného systému
alebo niektoré staré programové balíčky.
>> Bash je do istej miery stáva akási lingua franca operačných systémov.
Je to už bola rozšírená na Windows a VMS.
VMS, v prípade, že neviete, je proprietárny operačný systém
Digital Equipment Corporation, ktorý je ešte v použití, a to predovšetkým v zákulisí.
A ak to bude beh na niekoľkých rôznych operačných systémov,
pravdepodobné, že ľudia majú tendenciu sa posúvať za to.
Ale tento vývoj je pomerne nedávny.
Je to len začiatok, takže nemôžem predvídať, či to bude dopadať byť naozaj ten druh lingua franca.
Tiež preto, že cestami súborov a knižníc sa líšia
medzi rôznymi operačnými systémami,
nemusíte byť schopní napísať bash skript na jednom operačnom systéme
a spustite ho na iný.
Mali by ste byť schopní sa pohybovať medzi rôznymi Unix, Linux
Operačné systémy Mac OS, ale nie nevyhnutne na Windows alebo VMS.
Možno budete musieť zmeniť popis súboru názov cesty,
a niektoré knižnice sa môže líšiť,
ktoré môžu ovplyvniť spôsob, akým niektoré príkazy pracovať
alebo ako spracovať argumenty a podobne.
Okrem toho, ďalšie opatrnosť je, že neexistuje žiadna záruka
že všetky rôzne mušle som sa už zmienil - Bourne shell, C-shell,
TC-shell, Korn shell, Bourne-znovu shell - bude k dispozícii v každom Unixu
alebo Linux alebo Mac OS počítača.
Oni proste nemusí byť tam.
To je jeden z upozornenia tu.
Je to nešťastné obmedzenia tu, pretože ste chceli veci pracovať všade,
ale bohužiaľ, môžete sa spoľahnúť na to.
>> Dobre. Ďalší, kto tu.
Povedzme, že chcete napísať skript,
Program sa skladá z príkazov shellu.
Môžete písať svoje príkazy, dať ich do súboru a spustiť súbor.
Čo keď chcete zahrnúť argumenty?
V prípade škrupinových operácií, argumenty sa nazývajú parametre a pozičné parametre
a oni budú volány znak dolára a číslice, $ 1, 2 doláre.
Takže v prípade, že skript má toto meno, môj prvý argument by mohol byť argumentom 1
a môj druhý by mohol byť argument, 2,
a vo vnútri môjho scenára, keď chcem, aby sa na tieto veci -
poďme vymazať to, pretože som naozaj chystá spustiť -
v mojom skriptu budem mať $ 1 odkazujú na arg1,
$ 2, ktorý príde na to, že spôsob, arg2.
Takže tie symboly sú k dispozícii odkazovať na argumenty,
a tie sa vzťahujú na všetky granáty.
Okrem toho existujú ďalšie znaky.
$ * Sa vzťahuje na celý zoznamu argumentov, všetky z nich.
$ # Sa odkazuje na počet argumentov.
Opäť platí, že to platí pre všetky škrupiny.
Tieto symboly * a #, môže byť použitý s týmito významy v iných miestach tiež.
Nebudeme sa dostať do toho.
>> Shell špecifikátor riadok. Čo to je?
Povedzme, že ste napísali scenár a je to pre konkrétny shell a chcete ho spustiť.
Ako viete, čo shell váš operačný systém bude používať na spustenie skriptu?
Na jednom mieste, kde by mohol predpokladať, že by ho spustiť v Bourne shellu
ak ste nepovedal inak,
ale ľudia nie sú písanie skriptov v Bourne shell, ktorý už toľko
a nemôžete ani spoliehať na to už.
Takže tu máme shell špecifikátor linku tu.
To určuje Bash.
Všimnite si, že to určuje ju v cestu k priečinku, / bin / bash.
Ak počítač má Bash shell, ale nie v adresári bin, / bin, to nebude fungovať.
To je ďalší kvalifikátor, ďalšie opatrnosť tu.
Krížik je komentár linka charakter.
To platí pre všetky granáty.
Najmä prípad, #! na začiatku skriptu, je zvláštny prípad.
To určuje shell, v ktorom je skript spustený.
Ako som hovoril, to nemusí byť rovnaké miesto / bin.
Okrem toho je tu ešte jedna vec tu.
Ak stačí použiť znak libry bez výkričníkom a cestu k priečinku,
, Že by malo byť uvedené C-shell.
Avšak, ja neodporúčam robiť to, pretože nie som schopný zaručiť
že bude vždy fungovať.
Ak chcete C-shell, že by bolo lepšie, aby to tak povedať.
Potom je tu niečo, čo skôr mätúce tu.
Ak používate shell Špecifikátor líniu, ako je / bin / bash
a že shell nie je k dispozícii tam,
tam žiadna taká vec ako / bin / bash na danom počítači,
a to buď preto, že nemá Bash, alebo preto, že je v inom mieste,
dostanete chybu oznamujúce, že skript, ktorý bežal neexistuje.
A samozrejme váš skript existuje, takže chybové hlásenie je zavádzajúce.
Dôvodom, že operačný systém vám dáva túto chybu
alebo, presnejšie, že interaktívny shell, v ktorom je spustený dáva túto chybu,
je, že sa hlási príkaz, ktorý ste použili, čo je názov skriptu.
Tento príkaz efektívne nazýva shell menom skriptu.
To je miesto, kde môžete dostať, že mätúce chybové hlásenie.
Ďalším spôsobom, ako volať skript
je zadaním shell na príkazovom riadku, ako je tu.
To je príkaz. To hovorí, že beží Bash a potom spustiť svoj skript v bash.
To bude mať prednosť pred Špecifikátor línie,
a to má funkciu umožňuje stanoviť rôznu cestami.
Ak ste práve dať príkaz, bude operačný systém hľadať pre tento príkaz
na rôznych miestach.
Ak je k dispozícii, malo by to nájsť.
Počítač nájde Bash všade tam, kde je umiestnený, a spustite ho,
takže nemusíte potom mať obavy o tom, kde ich nájde.
Existuje prípadne ďalšie otázky tu,
ako v prípade, že je viac než 1 Bash, čo je možné, aj keď nepravdepodobné.
Takže to je ďalší spôsob, ako sa vysporiadať s týmito vecami.
Špecifikátor linky môžete volať akúkoľvek shell.
Môžu tiež volať iné než škrupiny veci.
Príklady mám tu sed, čo je prúd editor;
awk, čo je jazyk pre spracovanie vzor;
a perl, veľmi vysoko rozvinutý skriptovací jazyk.
Ak dáte špecifikátor líniu označujúci jeden z týchto programov na začiatku,
pôjde priamo do tohto programu skôr než spustenie shellu.
Tieto programy majú medze svojich schopností.
Perl je veľmi schopný. Sed je editor. To môže robiť než len úpravou veci.
Ale to môže byť ťažké naprogramovať, že.
Okrem toho, odovzdávanie argumenty a tak sa skript je buď nemožná, alebo mätúce.
Takže v týchto prípadoch, s awk a sed, to je, aspoň podľa mojich skúseností,
vhodnejšie napísať shell skript a volanie awk alebo sed z shell skript
skôr než volanie awk alebo sed ako skript špecifikátor riadku.
Perl je vysoko diverzifikovaná jazyk, ako som povedal.
Nemožno spustiť interaktívne príkazy v perlu,
čo znamená, že nemôžete testovať časti skriptov, ktoré ste rozvojovej
tým, že je interaktívne.
Avšak, je to veľmi schopný jazyk
a sa vyvinul do veľmi široko používaný nástroj.
To je len trochu v zátvorkách poznámku o špecifikátor liniek.
>> Vo všetkých alebo väčšiny foriem Linux - opäť, nemôžem byť istý, že je všetko -
a Mac OS, ak ste typ csh dostanete tcsh,
a ak zadáte sh dostanete bash.
Snažili sa, aby vám tie pokročilejšie verzie týchto granátov,
ale to môže byť mätúce.
Ak máte napísať skript pomocou tcsh alebo Bash je k dispozícii pri volaní csh alebo sh
a pokúste sa ho spustiť v počítači, ktorý nemá tcsh alebo Bash,
môžete získať nejaké chyby, ak existujú príkazy tam
ktoré tieto granáty neuznávajú.
Okrem toho, môžete si vyvolať shell na lokálnom počítači
volanie ako sh alebo csh a potom sa dostať na pokročilejšie shelly.
Nesmiete ani myslieť na to, že ste pomocou viac Advanced Shell.
Tak to je potenciálne úskalia.
Ako je dokázané, že ak zadáte sh vám Bash,
Ak zadáte csh dostanete tsch?
Existujú veci, ktoré v týchto počítačoch volal odkazy
ktoré možno pripojiť k súboru mená sa odkazovať na rovnakú vec.
To môže byť buď 2 názvy pre rovnaký alebo iný súbor, ktorého cieľom je poukázať na iný súbor.
Sú to tzv pevné a symbolické odkazy. Nebudeme ísť do toho už dnes.
Tam môže byť tiež samostatné súbory - 1 súbor sh, 1 súbor Bash -
ale obaja beží Bash.
Potom je tu ešte jeden kvalifikátor tu.
Ak voláte jeden z týchto mušlí jedno meno,
by ste si mohli myslieť by ste si rovnakú funkcionalitu ako volať to pod iným názvom.
No, to vlastne nie je nevyhnutne pravda.
Tieto príkazy môžete prezrieť na meno o ktorom sa hovorilo
a môžu na základe tohto názvu, sa správajú odlišne.
Tam môžu byť otázky sa snaží odpovedať štandardu.
Niektorí z vás možno počuli o štandardu POSIX alebo iný,
možno ďalšie funkcie.
To môže byť vybraný niekedy argumenty príkazového riadku
alebo nastavením premennej shellu.
Volanie ako sh alebo bash, môže skutočne viesť k odlišnému vyhotoveniu
aj keď je to rovnaký súbor, ktorý ste vykonávania.
Ďalšia vec, aby zvážila, že aj keď iný počítač má tcsh alebo Bash,
pokiaľ nie sú spojené, ako sú na lokálnom počítači
Ak máte Linux alebo Mac OS lokálneho počítača,
potom zase budete mať shell, ktorý vám volať sh alebo csh, a nie ten, ktorý by ste mohli dať prednosť.
Aktuálne Bourne shell má vylepšenia menšie ako v Bash
ale za tie, v pôvodnom Bourne shell.
V dôsledku toho, aj aktuálne Bourne shell, sh,
aj keď to nie je Bash, podobá sa jazyk C viac, než C-shell robí.
To nebola pravda, keď bol C-shell najprv vytvoril, ale vyvinula týmto spôsobom.
Môžete si všimnúť, tu, že všetky tieto mená shell s výnimkou Bourne shellu
niečo pre indikáciu, ktoré shell sú - csh, bash -
ale Bourne shell je len sh.
Prečo? To bol pôvodný shell.
Bolo to shell potom, nie shell,
a od tej doby to bol shell, tam bol žiadny dôvod, aby ju odlíšil od iného shellu.
Takže to je dôvod, prečo má tento názov a stále robí.
>> Tento top je tu rad z databázy hesiel pre účet mám tam
na inom počítači.
Budem sa snažiť, aby sa to meno, takže môžete vidieť, že časť na konci, shell.
Databáza heslo drží prihlasovacie vlastnosti pre všetkých užívateľov.
Na začiatku je užívateľské meno, ktoré môžete vidieť posledné dve písmená bane teraz.
Polia sú tu oddelené dvojbodkami.
Posledné pole, ako môžete vidieť, je bin / tcsh, shell.
To je shell špecifikátor.
Je tu niečo zaujímavé tu.
Keď Unix bol najprv vyvinutý, bol tam len jeden shell,
takže tam nebol žiadny výber.
Tak prečo sa im umožňujú poľa v databáze hesiel zadajte shell?
Neviem, ale je to šťastie, že oni robili.
Je to dosť ťažké, aby sa zmeny v databázovom formáte heslo
pretože mnoho programov nájdete na jeho formát
a bude musieť byť prepísaný.
Je to vhodný alebo náhodné vývoj, že súčasťou tejto oblasti.
Tento druh súboru heslo riadku sa používa na všetkých počítačoch Unix a Linux, takže ak viem.
Mac má svoj vlastný systém.
To má v skutočnosti súbor s heslami s linkami v tomto formáte,
ale to nie je tam, kde sú definované užívateľské vlastnosti.
Ďalšie vsunutá poznámka tam.
>> Ak voláte shell, môžete volať ako sub-shell vašich existujúcich mušlí.
Takže keď som sa ísť sem, poďme sa zbaviť týchto vecí.
Tu som v C-shellu.
To je veličina, ktorá presne identifikuje svoju škrupinu,
v skutočnosti nie je vždy spoľahlivý spôsob, ako určiť, čo shell vediete,
ale v tomto prípade to je.
Čo keď som typ -
Teraz som v Bash.
Niektoré veci sa bude rovnaký. Je mi hovorí moje príkazy.
Ak by som sa pozastaviť späť do môjho C-shell, LS, rovnako. Je to tak?
fg, popredia, späť do môjho Bash shellu.
pwd, aktuálny adresár, späť na C-shell.
pwd, iný adresár - vlastne nie iný adresár, v tomto prípade.
Je to rovnaký adresár.
Povedzme, že chcem, aby tu zavolať príkaz: kde ls.
Čo to bolo?
To mi hovorí, kde príkaz ls,
ten, ktorý mi dáva výpis adresára, sa nachádza v ls.
Vráťme sa k Bash shellu. Skúsme to isté.
Hmm, tam zaujímavé, kde: command not found.
Prečo je to tak?
Kde príkaz je postavený do C-shell.
To nie je príkaz, ktorý má byť čítaný v pamäti niekde inde a popravený.
C-shell spustí ho prenosom výkonu na časti vlastného kódu
a to nie je v Bash shellu.
Takže Bash, ktoré nemajú taký vstavaný príkaz, hľadá to, nenájde ju,
a dostaneme chybu.
Takže tam máme Bash shell beží pod C-shell, a hovoríme, že sub-shell.
A práve v prípade, že ste zvedaví, Bash shell má svoj vlastný spôsob, ako lokalizovať príkazy.
hodnotu hash odkazuje na skutočnosť, že môže byť vykonaná rýchlejšie,
bolo nájdených viac rýchlo.
To je jeden z vylepšení postavených v niektorej z týchto mušlí.
>> Bourne typu škrupiny sú prednostné pre programovanie.
Majú kontrolné štruktúry, ako sú slučky, podmienené príkazy,
druh príkazov, ktoré môžete použiť v programovacích jazykoch ako C
alebo čokoľvek iného jazyka. Možno, že ste programovanie v jazyku Java alebo čokoľvek iného.
Mušle sú tie taky.
V Bourne typu škrupiny, najmä Bash, viac
a sú navrhnuté s väčšou flexibilitou.
Bash shell má pole. Pôvodnej Bourne shell nie je.
Takže to môže byť značne výhodný pre programovanie.
C-shell vlastne robí má pole, ale nemá mnoho z týchto ďalších funkcií.
V Bourne typu škrupiny budú vykonávať rýchlejšie
v prípade, že nemajú vlastnosti určené pre interaktívne použitie.
Môžete nahrať veci dole pre jeden účel, to načíta je dole k inému účelu.
Tam je, že existuje trade-off.
Tieto vlastnosti, ktoré sú určené pre interaktívne použitie
naozaj malú alebo žiadnu použitie pre skriptovanie.
Je možné použiť interaktívne sub-shell, rovnako ako ten, že som začal
vyskúšať príkazy, ktoré chcete použiť v skripte.
To je to, čo nemôžete urobiť s perl. Môžete to urobiť s granátmi.
Dokonca aj štruktúry ako pre slučky a tak ďalej možno spustiť interaktívne.
Sú užitočné pre občas interaktívne,
ale viac pravdepodobné, že používate im rozvíjať skript.
>> Aliasy.
To bude asi C-shell.
História mechanizmus, kde sa dostanete späť do skorších príkazov
alebo ich časti, ktoré ste už spustili.
Opäť platí, že o C-shell, shell Bourne a Korn shell majú tieto veci,
ale nemienim sa dostať do nich.
Takže tu sú niektoré užitočné aliasy, ktoré mám.
Miesto písania ls - je to bežný príkaz -
len typ L a ušetriť 1 znak.
ls s rôznymi možnosťami, všetky tie práce.
Všimnite si, že tieto definície majú úvodzovky okolo nich.
V týchto prípadoch, úvodzovky nie sú nutné.
Ak môžete definovať tie aliasy bez úvodzoviek, to by ešte fungovať.
Sú odporúčané.
Existujú situácie, v ktorých nie je možné použiť na ponuku
pretože chcete, aby sa niečo stalo, ktorý citát by sa zabrániť.
Niekedy môžete citovať časť definície, ale nie všetky z nich.
Je tiež všeobecne odporúča používať apostrofy skôr než dvojité úvodzovky.
Úvodzovky majú vplyv na definície premenných,
najmä spôsobuje, že majú byť hodnotené, ako zastaviť.
Prečo by sme sa zastaviť hodnotenie?
A ako sa citácie urobiť pre nás?
>> Tu je príkaz, ktorý ste mohli nájsť zaujímavé.
"Ls g *"
g *, ako asi viete, je zástupný výraz
pre všetky názvy súborov začínajúcich g
Keby som len napísať na príkaz ls g *, budem si zoznam všetkých tých mien v mojom aktuálnom adresári.
Mám chcete definovať, že alias, ako je to tu s citáciami,
to bude fungovať, že príkaz v aktuálnom adresári, kam to beží.
Ale ak spustíte definíciu aliasu bez úvodzoviek,
bude vyhodnocovať zástupný g * pri spustení tohto definujúce príkaz.
Takže definícia aliasu bude ls nasleduje zoznam súborov v adresári
v ktorom príkaz alias sa spustí,
bez ohľadu na to, kde ste skutočne v úmysle spustiť príkaz.
To nie je k ničomu, a jednoduché úvodzovky predchádzať vyhodnotenie hviezdičkou.
Takže stačí dostať definície bytosť ls g *.
Potom pri spustení aliasu, LGS, potom dá to von.
Teraz nie sú žiadne citácie, a to bude vyhodnocovať hviezdičku pri spustení príkazu alias.
Takže to je jedna vec.
Úvodzovky bude mať ten rovnaký efekt tu,
ale existujú aj iné prípady, keď dvojité úvodzovky nebude fungovať tak dobre.
>> Tu je ešte jeden.
Možno viete, príkaz grep.
Príkaz grep môže byť použitý na kontrolu súboru riadky, ktoré majú niektoré reťazca.
Takže poďme sem a budem opustiť moje Bourne shellu.
Dobre. Tu je súbor.
Povedzme, že je to grep abc reťazca. Tu to je.
Ak sa mi grep zddd, som si nič. Dobre.
Tak to nájde reťazec, hlási, že nenájde, nie je to nahlásiť.
To výstupy ľubovoľný riadok, ktorý má tento reťazec na neho.
Tam sú všetky druhy možností, ktoré tu môžete nájsť v dokumentácii.
Tu je jeden spôsob, ako to urobiť.
Čo o tejto jednej, alias grabc "grep abc"?
To bude zahŕňať jeden argument, keď je definovaný alias.
Takže ak som to urobiť tu, teraz keď to urobím grabc,
Teraz alias obsahuje viac ako jednoduchým príkazom. To je tiež argument.
Zatiaľ to funguje.
Mám iný príkaz tu, túto, tak tie sú rôzne reťazce tam
a ukázať, že to nie je nič, čo by tam, pretože to nezodpovedá.
>> Čo keď budem chcieť zahrnúť do definície aliasu súbor, ktorý Idem hľadať
a chcem dať ako argument alias reťazec, ktorý som hľadal?
By som chcel povedať, abc ako argument k môjmu alias,
ale alias už stanovený súbor.
A to je miesto, kde tento výraz vypovedaciu
Všimnite si, tu máme grep, rovnako ako predtým.
Máme súbor tu, reťazca.
\! ^, Trochu zvláštny výraz, myslím, ak ste ho ešte nevideli predtým.
Výkričník je súčasťou histórie mechanizmu C-shell.
To môže vyvolať predchádzajúcich príkazov, môže vyvolať argumenty týchto príkazov, a tak ďalej.
Mechanizmus história sa používa ako súčasť aliasingu.
Ak zadáte riadok po výkričník, bude odkazovať na tento riadok v zozname histórie,
ktoré nebudeme sa dostať do teraz, pretože je to úplne iný tému.
Je možné zadať časť linky.
Takže! 03:02 bude druhý argument z príkazového číslo 3.
Strieška tu v tomto výraze je skratka pre prvý argument.
Ak nechcete, aby to označenie, ktoré príkazu máte na mysli,
sa vzťahuje k bezprostredne predchádzajúci príkaz,
a strieška je symbol pre prvý argument.
Vzhľadom k tomu, že je strieška a nie číslo, nemusíte používať hrubého čreva,
tak! ^ znamená, že prvý argument na predchádzajúci príkaz.
Trochu poplietol tu.
V tomto prípade, keď sa použijú ako definíciu aliasu,
referencie histórie odkazuje na príkazy, v ktorých sa používa alias.
Tak to sa vracia 1 príkaz ako operácia histórie,
ale ako operácia alias odkazuje na príkaz, v ktorom by ste zadali,
povedať, grstrings_file.
Máme úvodzovky tu v ňom. Čo je spätné lomítko pre?
V tomto prípade, rovnako ako kdekoľvek inde, nechceme spúšťať mechanizmus histórie
pri definovaní alias.
Ak by sme nemali spätné lomítko tam, shell by vytiahnuť v prvom argumente
príkazu tesne predtým, než ho spustili tento alias príkazu, čo nechceme.
Chceme, aby to bolo postavené v príkaze alias volať na argumente neskôr.
Jednotlivé citácie neunikli výkričník, odkaz históriu.
Možno viete, že výraz útek znamená zmeniť význam niečoho.
V tomto prípade, to znamená, že sa niečo zastaviť od mať osobitný význam.
Osobitný význam výkričník je história.
Útek a nemá to zmysel.
Citáty nerobte to, spätné lomítko robí.
Takže sme vlastne pomocou 2 úrovní uniknúť tu.
Chystám sa presunúť tento príkaz do iného okna, bez toho aby napísaním
pomocou týchto editačných operácií, ktoré môžete nájsť užitočné.
Niečo, čo tu ešte ukážem vám.
Ak stačí zadať alias bez argumentov, to vám povie všetky svoje argumenty.
To je banda aliasov už som tu mal
okrem tých, ktoré som používal dnes.
Ale keď som typ s názvom aliasu, to mi hovorí, čo to znamená.
Všimnite si, že úvodzovky sú preč a spätné lomítko je preč.
Tento reťazec je tu výsledkom tejto definície aliasu,
a teraz to má len! ^ v ňom.
To bude vyzerať v reťazcoch súborov pre čokoľvek.
Takže ak som to grstrings_file reťazca, nechcel som, aby to nič hľadať tam,
ale to vyzerá v reťazcoch.
To nenašiel slovo reťazca v reťazci súborov, ale to sa nájsť abc.
A to nenájde to.
Tak tu dávame argument, ktorý zasiahne do definície aliasu,
, Ktorá je vložená do neho.
To je miesto, kde tento výraz pochádza.
Môžete použiť viac ako jeden.
Strieška je symbol pre prvý argument.
Ak by ste chceli použiť druhý argument, by ste potom povedal: 2.
Neexistuje žiadny špeciálny symbol pre druhý argument.
A pretože ste pomocou číslice, mali by ste použiť dvojbodku.
Tam je, však, ďalšia možnosť tu.
Znak dolára stojí za posledný argument.
A pretože je to symbol, môžete vynechať dvojbodku.
Tak to by bolo posledné tvrdenie v zozname.
A je tu tiež, že jeden.
Hviezdička znamená, že všetky, takže to je kompletný zoznam argumentov,
a znova, môžete vynechať dvojbodku, pretože to nie je číslica.
Dúfam, že ste všetci pozorovať všetko.
>> Mechanizmus histórie môže vrátiť do predchádzajúcej riadky v zozname histórie.
Dalo by sa to urobiť v definícii aliasu.
Nikdy som nevidel to urobiť.
To by malo za následok vyťahovanie skoršie príkazy zo zoznamu histórie
Pri spustení alias, ktoré by mohli byť rôzne príkazy
v závislosti na tom, kedy a kde ste ho spustiť.
Tým pádom budete chcieť vytiahnuť takýto odkaz
Len vedieť, čo predtým bol príkaz.
Nikdy som nevidel to stalo.
Myslím, že by niekto mohol chcieť, ale je to veľmi nepravdepodobné.
Tam je ďalšia vec, ktorú tu.
Ak použijete túto históriu, typové označenie,
potom sú použité iba argumenty, ktoré tam je taký odkaz.
Ak máte definíciu aliasu, ktorý nepoužíva odkaz históriu typu,
v prípade, že sa stane len začiatok príkazu
a máte ďalšie argumenty, potom niečo napíšete, že po
bude pridaná do príkazu.
V tomto prípade, príklad som tam dal, sme použili prvý argument;
sme nepoužili žiadne iné.
Keby bola daná ďalšie argumenty na príkazovom riadku, ktoré by nemali byť používané.
Takže ak použijete odkaz histórii vôbec, potom musíte použiť, aby sa žiadny argument.
>> Je tu ďalšia vec, ktorú tu chcem len spomenúť, čiastočne v zátvorkách,
a to, že táto história mechanizmus s výkričníkom
vráti do pôvodného C-shell.
Tcsh predstavil históriu operácií
ktoré používajú najrôznejšie príkazy a reťazca z redaktorov,
buď Emacs alebo vi.
Môj osobný názor je Emacs je oveľa jednoduchšie použiť na tento účel
aj keď vi použiť pre svoje pravidelné úpravy.
Existujú rôzne Emacs príkazy, ktoré sú teraz upravené v histórii.
Ovládacie P dostane predchádzajúci riadok v zozname histórie.
Ďalšie Control P sa dostanete ten pred tým.
Šípka hore robí to isté.
Ovládacie N dostane ďalší príkaz, ak ste už posúvať späť niektoré spôsoby.
Šípka dole robí to taky.
Môžete sa pohybovať zľava doprava s šípkami a rôzne iné veci.
To môžu využiť mechanizmus histórie
oveľa jednoduchšie, než pomocou bodu syntaxe výkričník,
ale nebude používať, že v definícii aliasu.
Pôjdeme cez to niekedy inokedy.
>> Premenné.
Vieš, čo premenné sú v programovacích jazykoch.
Nábojnice je mať tiež.
C-shell používa príkaz set priradiť premenné,
tak, že nastaví premenné A na hodnotu b -
ako som už povedal, k ničomu definíciu, ale ilustráciu toho, ako je tento používaný.
Príkaz set vytvorí premennú, ak už neexistuje.
Pozičné parametre pre shell skriptov možno považovať za premenné,
ale využitie z nich, a pravidlá pre nich sú trochu odlišné.
Nemôžete priradiť hodnotu $ 1 v priebehu skriptu.
Budete musieť definovať novú premennú pre tento účel, ak niektorí z vás chcel.
Zadajte sada bez argumentov a dostanete zoznam všetkých aktuálne definovaných premenných.
A poďme na moje ďalšie shell tu a uvidíme, čo dostaneme, ak budeme robiť, že.
Pomerne dlhý zoznam tam, že jo?
Vyberte si trochu. Pozrite sa na všetko, čo.
Niektoré z týchto vecí sú automaticky definované shellu.
Škrupina vytvorí premennú a dáva mu hodnotu.
Niektoré z nich sú definované plášťa, ale potom sa znovu definovať užívateľ
podľa svojich preferencií.
A niektoré z nich sú vytvorené užívateľom v závislosti na tom, čo robí, že deň.
To je len nastaviť bez argumentov.
Je tu zvláštne vlastnosť tu na tejto veci.
Tam musí byť medzi znaky rovná a názov premennej buď bez medzier
a hodnotu alebo priestory na oboch stranách rovnítka,
ako v tomto jednom.
To nebude fungovať, a to je vlastne platný príkaz
ale to nebude robiť to, čo máte v úmysle.
Tento príkaz bude fungovať, pretože ak ste práve hovoria, nastaviť a názvu premennej
s žiadne znamienko rovnosti, alebo nastaviť, a názov premennej s znakom rovná a žiadna hodnota,
bude to nastaviť premennú na hodnotu null.
Takže nastavenie = je platný príkaz.
Príkaz set možno definovať viac ako 1 premennú na rovnakom riadku.
Takže tento príkaz tu má vplyv na definovanie A aj B na hodnoty null.
Pravdepodobne nie je to, čo chcete.
Tento tu bolo spomenuté predtým, povedie k chybe
pretože = b nie je platný výraz.
Názov premennej nesmie začínať znakom rovná.
A tam sú tie ďalšie veci tu.
V dvojbodky boli použité pre výber argumentov z histórie liniek,
a môžu byť použité - a ja som nešiel do pred - meniť tie veci.
Môžu byť taktiež použité na úpravu shell premennej.
Tento, $, má hodnotu.
: R bude štartovať rozšírenie.
Rozšírenie bude niečo po bode,
dot a niečo po ju na koniec súboru,
iba na konci zoznamu po poslednom lomítkom.
Tak som si to tu.
je to, že. To bude klesať. O.
Pokiaľ nie je rozšírenie, iba cestami po poslednom lomítkom, bude to mať žiadny vplyv.
: H, že premenná výraz, bude štartovať posledný prvok zoznamu adresárov,
opäť až po poslednom lomítkom.
So / a / b / c sa / a / b,
ale toto sa zmení, pretože prvok po zozname je null.
Tu je niečo, čo chcem tiež zdôrazniť.
Tieto kvalifikátory nemajú hľadať existenciu týchto súborov.
Oni sa len pozrieť na reťazca.
Tie sú určené na manipuláciu s názvami súborov, cestami,
ale môžu byť použité na akýkoľvek reťazec, aj keď to nie je názov súboru.
A oni nevyzerajú na existenciu,
takže v prípade, že to nie je taký súbor, / / ​​b / c, to bude ešte pracovať.
Či už je to k ničomu, je iná otázka, ale to bude ešte pracovať.
Premenné sú odlišné v škrupinách Bourne. K tomu sa dostaneme neskôr.
Znak dolára možno zrušiť rovnako ako výkričníkom a hviezdičkou.
Znak dolára môže byť unikol s lomítkom alebo apostrofy.
Úvodzovky majú podivný účinok vo všetkých mušlí
nútiť hodnotenie dolára podpísať variabilný expresie.
Takže ak to je unikol jeden spôsob, ako je možné, že dvojité úvodzovky mať za následok
spôsobiť, že majú byť hodnotené rovnako.
To je trochu mätúce.
Ak existuje viac úrovní uniknúť, ako je napríklad apostrofy vnútri úvodzoviek
alebo dvojité úvodzovky vnútri apostrofov, mali by ste vyskúšať, aby videli, čo sa bude diať
premenné, ak používate jeden.
Tieto dve situácie - dvojitý vnútri z jedného, ​​jediného vnútorné dvojitý -
nemusí nutne dať rovnaký výsledok.
Premenné prostredie, viazané C-shell premenné.
Premenné prostredia sú tiež premenné v C-shellu,
a sú tiež premenné v iných mušlí taky.
V C-shell, sú odlišné sady.
To, čo som hovoril predtým, než sa o premenných shellu.
Premenné prostredia sú zreteľné súbor premenných
s výnimkou niekoľkých premenných, ktoré nazývame viazané premenné,
ktoré sú veľmi dôležité a budeme sa dostať do tých neskôr.
Premenné prostredia sú automaticky odovzdávané
do škrupiny alebo príkazy, ktoré sú spúšťané z vášho shellu.
Ostatné veci nie sú. Premenné shellu, aliasy nie sú. Premenné prostredia sú.
To je dôvod, prečo im hovoríme premenné prostredie,
Myšlienka je, že životné prostredie rozširuje minulosti len vaše aktuálne shellu.
Môžu byť použité pre definovanie veci príkazy.
Tu je príklad. PRINTER, LPDEST.
Obe tieto premenné možno definovať tlačiareň, ktorá príkaz bude používať k tlači veci.
Ak máte viac tlačiarní okolo seba, možno budete chcieť, aby sa vám páči.
Dôvod, prečo máme 2 premenných je to, že boli napísané rôzne sady príkazov
Pomocou týchto rôznych premenných.
Dalo by sa im rôzne hodnoty.
S najväčšou pravdepodobnosťou budete im obaja rovnakú hodnotu.
Tieto veci fungujú, pretože príkazy, ktoré robia tlače
boli naprogramované tak, aby skúmať hodnoty týchto premenných.
Ak program nepísal takto, keby bolo napísané niečo iné,
premenná bude irelevantné.
Takže operačný systém sa nepozerá na týchto premenných
zakaždým, keď sa odvolávajú na tlačiarni.
Príkaz, ktorý robí tlač hľadá týchto premenných, ak je naprogramovaný tak.
Tieto premenné sú často definované vo svojich konfiguračných súboroch
, Ale nie nevyhnutne.
Môžete definovať je na príkazovom riadku.
Môžu byť definované v príkaze.
Príkaz, ktorý spúšťa niečo, čo môže mať svoj vlastný výber premenných -
premenných, ktoré sú špecifické pre konkrétny softvérový balík, napríklad.
Budú definované pri spustení balík.
Ako sú tieto premenné odovzdávané sub-shell?
Keď je napísaný sub-shell, to nezapisuje do tejto oblasti.
Oblasť sub-shell, ktorý je venovaný premenných prostredia
nie je napísaný sub-shell, to napísal kopírovanie.
Pri spustení obyčajný príkaz, ako napríklad tieto príkazy vytlačiť alebo čokoľvek,
sa začať tým, že vytvorí nový shell.
Škrupina vytvorí shell a potom prepíše jeho časť
s príkazom, že ste so systémom, ktorý je trochu mätúce,
ale to, ako sa tieto príkazy získať premenné prostredie
ktoré potom odkazujú na neskôr.
Príkaz tu pre definovanie premennej setenv.
To je, ako to definovať. Je to 3 prvky: setenv, variabilný, hodnota.
Ak ste jednoducho setenv bez argumentov, čo dostanete?
Zoznam všetkých týchto premenných.
Opäť, je to pekný dlhý zoznam, a v tomto prípade, rovnako ako v ostatných,
Tieto premenné sú definované prevažne môjho prihlásenia prevádzky samotnej nádrže
skôr než čokoľvek, čo som urobil.
Je tu ďalší príkaz tu, printenv.
To tiež vytlačí na životné prostredie.
Všimnite si, to posledné, čo tu, EDITOR = vi.
To hovorí, že ak budem používať niečo, čo volá editor
a ja neuvediete editor a umožňuje mi na výber, môže mi dať vi.
Čo keď urobím printenv EDITOR? To mi hovorí, že to, čo to je.
Tesne predtým, než to, že tam bol variabilný, LESS.
To sú vaše možnosti predvolené hodnoty, keď som spustení MENEJ príkaz,
ktorý zobrazuje súbory.
Takže keď som to urobil, printenv môže trvať jeden argument alebo 0 argumenty,
nie viac ako 1.
Existujú aj ďalšie príkazy tiež, ale nebudeme sa dostať do všetkej tej dnešnej.
Pamätajte si, že boli modifikátory pre premenné shellu ako: h,
ktoré klesne na posledný prvok cestu k priečinku,
alebo: r, čo zníži rozšírenie.
Tí, ktorí teraz platí pre premenné prostredie príliš. Oni nie sú zvyknutí.
To bolo, že nemôže byť modifikovaný. Teraz môžu byť.
Je to jeden zo záloh s vývojom škrupín v priebehu rokov.
Hovoril som, že škrupiny ako súčasť prostredia,
a shell premenné v C-shellu sú, až na niektoré výnimky, rôznych sád.
Môžete vytvoriť premennú prostredia a shell premennú s rovnakým názvom.
Budú rôzne premenné, ktoré môžu mať rôzne hodnoty.
Zmena hodnoty jedného nezmení hodnotu druhej.
Tieto premenné sú hodnotené s znak dolára - $, $ čokoľvek.
Takže to, čo máte toto? Viete, ktorý z nich dostanete?
V mojich testoch som premennú shellu,
ale to nie je zdokumentované a môžete sa spoľahnúť na to.
Tak som sa vás opýtať, je vytváranie shellu a premenné prostredia
s rovnakými názvami dobrý nápad? No jo.
Aké sú tie hlavné výnimky, ktoré životné prostredie a premenné shellu
sú navzájom prepojené?
K dispozícii sú tieto 4.
Veľké písmeno TERM premenná prostredia,
shell variabilný termín malými písmenami, typ emulácie terminálu.
Len som ísť sem, a budem robiť ozvenu, užitočný príkaz tu,
$ TERM $ termín. A tam.
xterm je typ terminálu pre okná zobrazená v X Window System.
xterm-color je variant, že umožňuje rôzne farby.
Prečo by sme definovať tie? Čo je to dobré?
Príkazy, ktoré zmeniť usporiadanie obrazovky, podobne ako v editore
Poslať konkrétnej sekvencie, tzv escape sekvencie,
na termináli alebo v okne, aby sa usporiadanie, a tak ďalej.
Tieto sekvencie sú rôzne pre rôzne typy terminálov.
To je, ktoré z nich použiť povie.
Niekedy tam sú problémy tam.
Možno budete chcieť zmeniť.
Ak veci nefungujú, niekedy aj typ terminálu je nastavený zle,
môžete byť schopní opraviť predefinovanie pojmu premenné.
V týchto prípadoch, zmena jednej premennej, premenné prostredia alebo premenné shellu,
by sa malo zmeniť na druhú.
Zistil som, na základe skúseností, ktoré mení výraz v veľkými písmenami
nemusí vždy zmeniť shell premennú termín malými písmenami.
To je chyba.
Neviem, či je to vždy pravda. Väčšinu času to nie je pravda, ale to môže byť.
Takže ak urobíte zmenu, stačí skontrolovať, že von.
Nestáva sa často, že budete musieť zmeniť túto hodnotu, ale raz za čas, čo robíte.
Premenná prostredia USER.
Opäť platí, že premenná prostredia paličkovým písmom, shell premenné malými písmenami.
Toto je vaše užívateľské meno.
Je to len za veľmi výnimočných okolností
že by ste chceli zmeniť.
Ak je vaše užívateľské meno je niekto iný, je možné hádzať všetky druhy vecí preč.
Domovský adresár, domovský adresár užívateľa.
Opäť platí, že by ste nechceli zmeniť.
Všimnite si, vo všetkých týchto prípadoch a ten, ktorý sa chystáme na pokrytie premennej PATH,
Premenná prostredia je veľkými písmenami a viazaná premenná shellu je malými písmenami.
Ak zmeníte jeden, mali by ste zmeniť iné.
Tento druh väzby nie je možné stanoviť, pretože nie je možné zviazať dve premenné,
iné ako tie 4 a záväzné v týchto premenných nemožno vrátiť späť,
nemožno oddeliť.
Takže tieto štyri párov premenných sú viazané.
Vždy bude. Žiadne ďalšie bude.
Okrem toho by malo byť možné vytvoriť premenné s rovnakými názvami
z opačných typov.
Dalo by sa urobiť shell variabilný termín malými písmenami
alebo premenná prostredia TERM veľkými písmenami.
Tieto premenné by byť nezávislý na týchto párových premenných
a že by sa na sebe nezávislé.
Neviem si predstaviť, prečo by ste si, že ak chcete miasť ľudí.
Tento, variabilný cesta, je to naozaj dôležité.
Ďalšia vec je, že tam môžu byť prípady,
premenných s podobnými spárovaný názvami, ktoré nie sú viazané na seba.
Tam môžu byť premenné, SHELL a shell, veľkými a malými písmenami.
Na tomto základe mena, neviete-li, že premenná je premenná shellu
alebo premenné prostredie, a že to nie je viazaný k sebe.
Takže tento druh párových mien neznamená viazaných premenných.
Premenná cesta, ktorou som sa pred zobrazením,
je zoznam cestami, v ktorých shell hľadá príkazy.
Poďme sa k tomuto oknu tu a budeme robiť echo $ PATH, veľké písmená -
Premenná prostredia - echo $ PATH, malé písmená - shell premenné.
Všimnite si, že zoznam adresárov je rovnaký. Tie sú viazané.
Zmena jedného, ​​môžete zmeniť ďalšie.
V premenné prostredia sú prvky oddelené dvojbodkami. Všimnite si, že.
Premenné shell sú oddelené medzerami.
Táto premenná prostredia je jeden reťazec.
Premenná prostredia je pole.
Bourne shell nemala poľa.
Bash robí, ale to je už pevnou súčasťou plášťa.
To je jediný reťazec, a nie pole.
C-shell vždycky poľa.
Tieto polia sú oveľa jednoduchšie pracovať.
Môžete odkazovať na jej časti.
Takže echo $ path [1], a dostanem / usr / bin, prvý prvok.
Opäť, nezabudnite dolár znamenie je skratka pre posledný prvok v zozname histórie.
Čo sa tam deje? Snažil sa nájsť znak dolára ako variabilný symbol.
Aj uniknúť. Oops. To by sa, že buď.
Niektoré z týchto vecí nefungujú tak dobre.
Možno, že budeme len tak nechať, že von.
Asterisk sa vzťahuje na celú vec, ale to je to, čo dostanete, ak neuvediete prvok.
Ďalším spôsobom, že premenné pole možno manipulovať,
Počet prvkov tam, 7 prvkov.
Tu sme dať krížik pred názvom premennej.
Tu je ešte jeden. Dajte otáznik tam.
To je logická hodnota. To znamená, že premenná existuje.
Je to ďalší spôsob, ako pracovať s premennými.
To, mimochodom, nemusí byť premenná poľa.
To by mohlo byť ľubovoľná premenná.
A keď to urobím, že žiadna taká premenná, a ja si 0..
Ďalšie maličkosť, že o variabilné hodnotenie.
Späť na tento tu, ak z nejakého dôvodu chcel pracovať s týmto
skôr ako pracovať s poľami, variabilný shell,
tam sú príkazy, ktoré možno oddeliť tieto veci na základe hrubého čreva.
V skutočnosti, ak budete robiť to v Bash shellu možná,
nejaký skript, ktorý by pravdepodobne, ako by ste to urobiť.
Ale v C-shellu, že je oveľa jednoduchšie použiť pole.
V Bourne shellu, premenné sú priradené jediným výrazom, ako je tento,
ako spôsob, ako by ste mohli priradiť premennú v programovacom jazyku,
a sem tam nesmie byť žiadne medzery.
Je to potrebné, aby to bolo len 1 reťazec.
V Bourne typu granátov, všetky premenné sú premenné shellu.
Premenné prostredia sú podmnožinou premenných shellu.
Oni sú rozlišované od premenných non-prostredie exportom.
Príkaz k tomu, že je export, rovnako ako export tlačiarne.
Ak by sme mali definovať také premenné,
ak by sme chceli tlačový príkaz, aby ju nájsť, malo by to byť premenná prostredia,
a to ako z neho robí jeden.
Tu je niečo trochu mätúce.
Tento výraz, export do životného prostredia, pochádza z tejto Bourne shell koncepcie,
a napriek tomu, že výraz sa používa v opise C-shell,
tam, kde žiadny takýto príkaz ako export.
Ak ste práve povedal vývoz sám o sebe, dostanete zoznam exportovať -
Takže ak som to export tu, nič také.
Dobre, ideme na to.
Tieto veci, mimochodom, sú tiež definované shellu.
Nechcel som definovať niektorý z nich sám.
Shell robí veľa vecí sám.
Je potrebné robiť veci automaticky.
V Bash alebo Korn shell, môžete spustiť príkaz ako je tento,
ktoré sa obaja dať premennú hodnotu a exportovať ich v 1. príkaz.
V Bourne shellu majú byť samostatné príkazy, ako je exportovať.
Tu je ďalší aspekt, ktorý je mätúce.
Príkaz set v C-shellu definuje premenné
a bez argumentov vám povie, čo sa hodnoty premenných "sú.
V Bash shellu, súbor príkaz bez argumentov robí to isté,
ale s argumentmi, že robí niečo celkom iné.
Tak to sú rôzne argumenty tu.
Niektoré z nich sú premenné prostredia, niektoré z nich sú premenné shellu.
Všetky z nich sú naozaj premenné shellu. Niektoré z nich sú premenné prostredia.
Príkaz set s argumentmi možno použiť na ovládanie
na pozičné parametre skriptu,
čo je spôsob, ako ich všetky naraz.
Nemôžeme naozaj ísť do toho dnes.
To môže byť tiež použitý k zmene správania shell.
Najmä v Bash sú premenné, ktoré budú určovať, ako shell chová.
Potom tiež len tento jeden príkaz, ktorý ste mohli vidieť, tento príkaz.
Vysádzať nasleduje premenné a typy premenných sa používa v Korn a bash.
Nie je to povinné, ale môže byť použitý pre obmedzenie hodnoty premenných,
ktoré môžu byť užitočné, aby sa zabránilo chybám, a je to celkom bežné.
Takže som len spomenúť, že v prípade, že ste ju vidieť niekde.
Príkaz kde.
Spomínam si, ako už bolo spomenuté, kde príkaz v C-shellu,
ktoré vám povedať, umiestnenie príkazového názov cesty.
Tu je substitúcia príkazu.
Mali by ste nájsť na vašej klávesnici niekde znak, ktorý vyzerá takto.
Umiestnenie na klávesnici sa bude líšiť.
Nazvali sme ju backquote. Je to o veľkosti cenovú ponuku.
To ide z ľavej hornej časti na pravej dolnej.
Tu na mojom Mac klávesnica je v ľavom hornom rohu.
Tento znak môže byť použitý na vykonanie príkazu v rámci príkazu.
Ak máte výraz vnútri jednoduchých spätných úvodzoviek,
že výraz je príkaz, je to beh.
Výstup tohto príkazu
sa potom nahradí celú backquote výraz
v dlhšom príkazom, ktorý potom beží s týmto výstupom
ako súčasť svojho reťazca argumentov, a tak ďalej.
Tu je príkaz, ktorý používa to.
Poďme si ukázať prevádzku tu.
Poďme sem, vyberte jednoduchých spätných úvodzoviek.
Riadenie ma dostane na začiatku riadku so syntaxou úpravy Emacs.
Zatiaľ cestami je to, čo kde robí,
ale keď som to takto, potom sa zapája v tomto zozname cestami
miesto celej tejto backquote prejavu a beží ls-l na nich.
Druh pohodlné, čo?
Takže to je jedna užitočná vec. To je, ako jednoduchých spätných úvodzoviek pracovať.
Teraz poďme sa trochu ďalej.
Jedná sa o aliasy. Ja vlastne používať.
Budem sa snažiť, aby si na túto 1x úpravy prevádzky.
Dobre.
Teraz sa poďme pozrieť, ako tieto definície vyšiel.
alias DxŠxV mi povedať, ako je to definované.
Všimnite si, že je to práve to, ale vonkajšie citácie boli vzlietlo
a výkričník sa vzlietlo.
! *, Úplný zoznam všetkých argumentov.
V definícii aliasu, bude platiť tam, kde som sa použiť.
LWH ksh bash. Dobre.
Pozrite, ako to funguje? To mi ušetrí trochu písania.
Poďme sa trochu len spomenúť niečo iné tu.
Všimnite si, tieto rôzne mušle. Mal som sa zmienil predtým.
Csh má 2 nad tú, a tak sa / bin / tcsh.
Mohli by sme vytvoriť inými prostriedkami, že sú to vlastne rovnaký súbor.
Spomínam si, ako hovoril, napíšete ak sh máte bash.
Opíšte tento kód, a dostanete to.
Ale tie nie sú prepojené. Tí, ktorí majú jediné tie tam.
A to nie je typ súboru, ktorý môže volať iný.
Takže to sú samostatné súbory, na C-shell z nich sú rovnaký súbor.
Tu staré, druhý tu, tento alias,
Upozorňujeme, že so spustením tohto príkazu, súbor.
To alias beží to. Súbor vám povie, typ súboru.
Takže FWH ksh bash. Dobre.
To je výstup príkazu súboru.
Neviem, či viete, čo to znamená tu,
Mach-O univerzálny binárny 2 architektúr.
K dispozícii sú 2 možné typy procesorov v systéme Mac,
a niektoré programy boli napísané, aby boli schopné prevádzkovať s oboma,
a príkazový súbor môže určiť, že tak to je, čo to znamená.
Oba tieto súbory boli písané týmto spôsobom.
Tak vidíme, ako alias funguje, vidíme, ako backquote funguje,
vidíme, ako skutočné ls súborov alebo súborov funguje.
Toto nemusí fungovať. Skúste ", kde kde" a "LWH kde". Dobre, poďme to skúsiť.
kde kde.
kde je shell vstavaný.
Nezabudnite, skôr sme ukázali, že Bash nemal kam.
Ak zadáte ak v Bash shellu, zobrazí sa chybové hlásenie.
Je to len časť plášťa skôr ako samostatný príkaz.
Čo sa stane, keď som typ LWH hľadal, kde? Pozrite sa, čo sa deje tam.
Rán, kedy, kde, dostal tento výstup, a potom sa pokúsil spustiť ls
ako l o tom, kde je shell vstavaný.
kde je tam, ale tie ostatné neexistujú.
Žiadny z nich existujú, v skutočnosti.
Takže to nemusí vždy fungovať, a to tiež ukazuje, ako niektoré veci
nerobia presne to, čo by ste si mysleli.
Poďme sa trochu ďalej tu.
Toto je Bash. To je tiež náhrada príkaz ako Backquote.
Ale na rozdiel od backquote, používa túto premennú štýl.
Existuje celý rad výrazov, ktoré začínajú znakom dolára,
a keď to nie je variabilný, oni si požičiavali použitie znak dolára
uviesť výraz nejakého druhu.
To môže byť obklopený zátvorkách alebo hranatých zátvorkách alebo dvojitých zátvoriek,
, Ktoré má iný účel.
Jednotlivé zátvorky sú tu substitúcia príkazu rovnako ako jednoduchých spätných úvodzoviek.
Dvojité zátvorky je vlastne aritmetické operácie.
Existujú aj iné syntaxe, ďalšie operácie.
Backquote syntax je k dispozícii v Bash.
Avšak, toto je výhodné. Je to oveľa čitateľnejšie a umožňuje hniezdenia.
Môžete mať vnútri $ (command) ďalší príkaz,
niečo ako -
Mám zoznam tu.
To by fungovať, ak som mal Backquote tiež.
Čo keď chcem urobiť niečo ako -
Tie by sa pravdepodobne skutočne používať tento príkaz,
ale to vnútorné nahradenie príkaz odráža názvy všetkých súborov začínajúcich,
potom je to jeden beží ls-l na tieto súbory,
a potom je to jedno len odráža výstup.
Asi by si to neurobil, by si jednoducho echo alebo ls,
ale ukazuje, ako vnorenie funguje.
Takže len ďalšie funkcie tu.
Spomenul som to už skôr, že ak máte kde v C-shellu,
Typ práce v Bourne typu mušle pre vyhľadanie príkazov.
Vstavané príkazy, len to, čo som tam ostatní.
Príkazy sú súčasťou plášťa, ako kde.
Keď shell spustí príkaz ako ls, že nájde to cez cestu,
nájde ho v nejakom adresári niekde,
znie, že do pamäte, vytvorí nový shell,
číta príkaz ls alebo čo do shellu
kde sú premenné prostredia už nachádza,
a potom ich prenáša výkon na to.
Vstavaný príkaz, kód tohto príkazu je vnútri plášťa,
takže shell práve začína spustením časť svojho vlastného kódu.
kde je taký príkaz. Je to vlastne dostane rýchlejšie.
Nemusí čítať niečo v pamäti, je to už v pamäti.
Vstavané príkazy majú vždy prednosť pred príkazy s rovnakým názvom.
Príkazy, ktoré sú v adresároch v ceste môžu mať rovnaký názov,
Príkazy v rôznych adresároch, súbory v rôznych adresároch.
Ten, ktorý nastane skôr, v ceste je jednou dostanete.
Ak je vstavaný príkaz, vždy dostanete to.
Neexistuje žiadny spôsob, ako dať nižšiu prioritu ako príkaz v ceste.
Ak chcete získať tento príkaz path, môžete zadať úplnú cestu.
Ak by sa príkaz, kde v ceste niekam,
môžete zadať / bin /, kde a vy by ste si to.
Ak nechcete zadať celú cestu, môžete definovať alias.
V skutočnosti, ak ste dali alias rovnaký názov ako vstavaný príkaz, že to bude fungovať
pretože definícia alias je hodnotená
pred tým, než shell zistí, že sa jedná o vstavaný príkaz, ktorý by mal byť vykonaný.
Tak to je trochu zložitejšie s niektorými príkazmi tu.
U niektorých príkazov sú v skutočnosti vstavané príkazy a v ceste.
Jedným z nich je echo, príkaz som použiť pred chvíľou v týchto príkladoch.
Echo je príkaz v ceste, a to v každom shellu.
Nemusia nutne všetci správať rovnakým spôsobom.
To bolo pôvodne príkaz len v ceste.
Bol postavený v roku lastúry neskôr.
Vzhľadom k tomu, tam sú možnosti, ktoré sú závislé na prostredí
a možnosti príkazového riadku, vstavané príkazy
boli zapísané do rovnakej funkcie ako príkaz, ktorý bol v ceste,
to je nepravdepodobné, že by bolo napísané, že spôsob, akým
v prípade, že príkaz nebol už bolo napísané na cestu.
Tak to má vedľajšie účinky. Jej história má účinky tu.
Existujú možnosti tam.
K dispozícii je tiež možnosť definovať premennú v tcsh názvom echo_style.
To je jedna z týchto premenných, ktoré môžu zmeniť spôsob, akým ECHO spolupracuje.
Existujú aj ďalšie prípady, v ktorých môžete priradiť premennú
, Ktorá mení spôsob, akým operácie shell, vrátane vstavaného príkazu, funguje.
Nebolo by to mať vplyv na nič iné
pretože ostatné príkazy nemajú prístup k premenným shellu,
iba premenné prostredia.
Ale shell operácia môže čítať premenné shellu.
To nebude fungovať pre csh. To je len tcsh. To je jedným z ďalších rozšírení.
Syntaktická analýza má sekvencie pri hodnotení metaznaky,
keď sa vyhodnocuje premenné, aliasy, história odkazy.
Tam to najmä sekvencie pre tieto veci.
Ak tomu tak je, čo v určitom poradí
a dostane sa na niečo, čo je výrazom druhu
ktoré už boli hodnotené, nebude to vyhodnotiť znovu.
Ak sa dostane to, potom to bude len odovzdávať znaky.
Takže ak vyhodnotenie niektorých výrazov, ako je substitúcia príkazu
pohyblivú alebo čo vedie k výrazu
ktoré by ste chceli byť hodnotené,
že bude fungovať len v prípade, že dôjde, že vyhodnotenie neskôr v poradí.
Dúfam, že som je jasné, že.
To analýze sekvencie, operácie v C-shellu,
nie je rovnaký pre vstavaných príkazov, ako je to pre non-vstavaných príkazov.
Nie som si istý, o Bash tu.
Napríklad, v prípade, že premenná shell produkoval odkaz histórie,
pravdepodobne by sa vrátiť do histórie.
Bolo by len dostať výkričník.
V skutočnosti, môžeme len skúsiť hneď teraz.
sada = a budeme musieť dať to tam.
Oh, počkaj. Prepáčte. Urobil som to v Bash. Chcel som to urobiť tu.
Vidíš, tak to nebolo hodnotiť tento odkaz histórii
pretože to bolo už za bod vyhodnotenie histórie výrazov
kedy sa hodnotí premenné.
Takže to je jeden efekt analýzu.
A opäť, vstavané príkazy nie sú vykonaná rovnakým spôsobom.
Dobrá. Poďme k ďalšiemu tu.
To má byť 1 riadok, ale je to uľahčuje čítanie.
Čo to bolo?
Možno si spomínate, že môžeme hodnotiť hviezdičkami ako zástupné znaky názvu súboru,
a tam sú iné meno súboru zástupné znaky, ako je otáznik a držiaku výrazov.
Tento druh hodnotenia sa nazýva globbing.
nastaviť noglob na začiatku tohto príkazu hovorí, nerobte to.
unset noglob hovorí, že vrátiť sa na tom, že.
Všimnite si, že súbor glob nebude mať tento účinok.
V bežnom jazyku, nastavte glob alebo unset noglob sa zdá byť rovnocenné,
ale tu to nie je. Je to unset noglob.
Teraz Tset. Tset stál terminálu sadu.
Je to nepoužíva tak často teraz, ale pred okenné systémy boli k dispozícii
a mal jediný terminál, budete musieť určiť typ.
A ak niečo príde cez Ethernet alebo zo siete,
budete chcieť povedať, že je to vt100.
VT100 je docela štandard v odbore termináli. Pochádza z terminálu decembra.
Ak ste práve robiť dial-up - všimnite si, že? To siaha spôsoby, čo?
Takže ak by sme jednoducho Tset sem,
či som to Tset, to resetovanie môj terminál, ale nič nevidel.
To sa naozaj nič meniť.
-S
Dobre.
setenv TERM xterm-color.
Už vieme, že termín bol nastavený týmto spôsobom, tak, aby sa nezmenil.
To je spôsob, akým by sme chceli urobiť.
Ale všimnite si, že tento príkaz, Tset-s, len výstupné tieto príkazy. Nebolo spustiť.
Nebolo spustiť tieto príkazy, ale výstup je.
Takže toto je určené na výrobu príkazy, ktoré potom budú spustené.
Pamätáš si príkaz v tomto súbore som ukázal, že máš Q v ňom.
Tak poďme na to.
Q potláča nejaký výstup, ale to nevadí tu, ako vidíte.
Robím len, že vám ukázať, že na tom nezáleží.
To je v syntaxi backquote.
Poznámka Backquote tu, backquote tu.
Ja vynechanie tieto veci tu.
Jedná sa o prípady hovoriť to, čo má robiť
v prípade jednotlivých typov terminálov -
Ethernet, siete, dial-up, čo majú vás.
Nezáleží na tom, tu, pretože sme vlastne robiť žiadne z týchto vecí.
Ja som len ilustrujúci príkaz.
Ak som to s Backquote, čo budem mať?
Tiež si všimnite, že tu to vrátane nastavenú noglob a unset noglob,
tak tie sa stali nadbytočnými v definícii.
To nie je vždy pravda, ale teraz sú zahrnuté v tomto príkaze.
Ale poďme sa pozrieť, čo sa stane, keď to urobím, že
a prejdite na začiatku riadku s ovládacím A a robím to.
Dobre, sada: Command not found. To je trochu divné, nie?
Sada je dobre známy povel. Je to časť plášťa.
sada: Príkaz nebol nájdený? Prečo je to tak?
Hmm. Dobre, poďme si o tom myslíte.
Je to beh príkazu substitúciu backquote,
a, ktorý sa vyskytuje v určitej časti sekvencie analýzy príkaz.
Sada je vstavaný príkaz.
Takže v čase, keď to robí, že príkaz substitúcia,
je to už dostali za bod identifikácia vstavané príkazy.
Tak sa chová nastaviť ako keby sa jednalo o príkaz v ceste.
Netreba dodávať, že sa nenájde ju a dostanete chybu.
No. K dispozícii je príkladom syntaktickej analýzy sekvencie.
A čo budeme robiť, že?
Všimnite si tento veľmi zaujímavý príkaz tu, eval.
Zaujímalo by ma, čo to robí.
Ak sa pozriete na manuál - a povedzme to, že
ukázať, ako mätúce Tieto príručky sú -
man tcsh, zmätený manuálna, hľadanie vecí tu nie je ľahké ani.
Ideme na to, eval arg, takže môžeme mať jeden alebo viac argumentov
a tam je zoznam vecí, ktoré tam.
Zaobchádza s argumentmi ako vstupy do shellu
a vykonáva výsledné príkazy v kontexte súčasného plášťa.
To sa zvyčajne používa na vykonávanie príkazov generovaných ako výsledok príkazu
alebo premennú substitúcia, pretože parsovanie dôjde pred týchto substitúcií.
Veľmi dobrá.
A tu dokonca odkazujú na príkaz tNastaví pre použitie vzorky
ako ten, ktorý som práve ukázal vám.
Teraz mám dostať okno späť na užitočné miesto.
Poďme sem a uvidíme, že eval sa používa len pred tým.
Takže poďme sa pozrieť, čo sa stane, keď dáme - ideme s šípkami v tomto príkaze
a riadenie na začiatku, eval.
Dobre, tak to funguje.
Ak tak urobíte eval, to znamená to, čo príde po nej, a je to príkaz.
To umožňuje, aby v podstate analyzovať ju dvakrát.
Tento úsek vedie tento príkaz vnútri jednoduchých spätných úvodzoviek,
dostane výstup.
Výstup by mal byť spustený ako tie príkazy tu ako ty
na tento a tento.
Takže tieto príkazy sú teraz tu v tomto poradí,
ale títo sú vstavané príkazy, a to nemôže dostať hneď.
Tak ideme na eval, eval zdvihne, že sa začína celú vec znova, a to funguje.
Príkladom obaja backquoting, eval, rozobrať, dôsledky rozobrať,
a príkaz, ktorý je pravdepodobne veľmi malé použitie pre vás v dnešnej dobe.
Dobre. Dobre, umask.
Pozrime sa na tento povel tu, umask 022. Zaujímalo by ma, čo to robí.
Povedzme, napíšte umask nič po ňom. 22. Dobre.
022 a urobiť to znova.
Ako ste si mohli myslieť, umask bez argumentov vám povie aktuálne masku;
umask s argumentmi, je to, že, ale to bolo raz už som mal.
Čo to 022 znamená?
Jedná sa tu o ochrán na súbor.
Majú zistiť, kto je oprávnený čítať alebo písať, alebo spustiť súbor.
Ochrany sú tiež nazývané oprávnenia.
R je skratka pre čítanie, w pre zápis,
a x, ktorý nie je prítomný, znamená vykonať.
K dispozícii sú 3 kategórie tam.
Posledné 3 prvky sú v kategórii užívateľa. Tí, ktorí sa na mňa vzťahujú užívateľa.
Tieto 3 tu platí pre skupiny.
Súbor patrí do 1. skupiny, môže užívateľ patriť do niekoľkých skupín,
ale ak je používateľ v skupine, ku ktorej tento súbor patrí,
potom sa táto ochrana sa bude vzťahovať k nemu, ak to nie je užívateľ.
A toto je každý iný.
Tieto kategórie sa navzájom vylučujú.
Užívateľ ochrany sa vzťahujú k nemu,
ochrán skupiny sa vzťahujú na členov skupiny iných, než je používateľ,
a ďalšie ochrana platí len pre iné ako pre používateľov a členov skupiny ľudí.
Ak existuje r alebo aw alebo x, to znamená, že ochrana je poskytovaná.
Ak je pomlčka, znamená to, že tomu tak nie je.
Tam vlastne sú iné veci, ktoré môžu byť zaradené do tu vedľa nich,
ktoré som sa dostať do teraz.
Umask definuje predvolené nastavenie pre súbory, ktoré ste vytvorili.
A ako masku, v podstate hovorí, že kúsky, ktoré nechcete nastaviť.
Ako sa to stane bitov?
Ak si myslíte, že každý z nich ako osmičkové číslo,
to je 1s bit, to je 2 s, to je 4S.
Takže 0 až 7
popíše, aká kombinácia r je, w je, a x je máte pre tieto tri
a podobný počet pre tieto a potom sa pre tieto prípady.
Takže 022 znamená 0 ​​pre ostatné, 2 pre skupinu, 2 pre užívateľa.
Ale to je maska. Maska je to, čo nemáte.
Je mi to ľúto. Len som ti dal veci v zlom poradí.
Je to prvá 3. Tieto 3 sú užívateľ, tieto 3 sú skupina, tieto 3 sú ostatné.
Prepáč, že som ti to dal v nesprávnom poradí.
0, čo je prvá z tých, nezobrazuje hodnotu,
ale ak číslo nie je, to je 0.
To znamená, že všetky 3 z nich by bolo povolené.
Všimnite si, že v tomto konkrétnom jednom x nie je povolené.
Dôvodom je to, že plášť je schopný určiť
či súbor by mal byť spustený, alebo nie.
Vzhľadom k tomu, že to nie je spustiteľný súbor, to nenastavil x.
Na 2 znamená, že povolenie na zápis, na druhú kategóriu tu,
jeden v strede, sa zamieta.
Takže znovu, to sú veci, ktoré to popieral.
No, x je povolený, ale nie je to tu, pretože to nie je spustiteľný
a podobne pre ostatné.
Tak to je spoločná umask.
Ďalším spoločným jeden je 700 - dať si všetko a nikto iný nič.
A existujú aj iné možnosti.
Vrátim sa k tomu. Použitie histórie môžem hľadať späť, že LWH tam.
Dobre. Tak tu, to sú škrupiny.
Bash, majiteľ, ktorý je systémový účet, môžete robiť všetko.
Group a všetci ostatní môžu urobiť, čítať alebo spúšťať, ale nie písať.
Tento človek nedovolí ani majiteľ zapisovať do neho.
Ak majiteľ chcel napísať to, systémový účet,
by musel najprv zmeniť ochranu.
Ale opäť, umask nastaví východiskový zakrývať to,
uvedením bity, ktoré nebudú nastavené.
To je zvyčajne v jednom zo svojich konfiguračných súborov, čo je. Cshrc pre C-shell
alebo. profilu pre Bourne-typu mušlí.
To môže byť na inom mieste aj v prípade, že sú aj iné inicializačné súbory v systéme.
Mimochodom, to je umask.
Je tu niečo, čo trochu divný tu,
a to je, prečo je tam jeden príkaz na to?
Keby som písal to by som aby to premenná, umask = nejaká hodnota.
Prečo je tam celý príkaz len na tento účel?
Dôvodom je to len ide späť ku koreňom Unix.
Unix bol len nejaký programovací projekt v Bellových laboratóriách v roku 1970.
Ľudia proste dali dohromady, aby program.
Oni nikdy nemal v úmysle, aby sa stala po celom svete operačného systému.
Rôzni ľudia písali rôzne časti bez premýšľania moc
o tom, ako sa chystajú využiť - skôr útržkovité.
A to zišlo takto, a je to stále ako, že v niektorých ohľadoch.
Tak, že odráža históriu, a tam sú ešte tieto nezrovnalosti a nepárne prvky neho.
Dobre. Ďalší, kto tu.
Ako som písal predtým, C-shell nie je naozaj používa moc pre programovanie,
aj keď to môže byť.
To vykonáva pomalšie, znova trade-off medzi interaktívnym použitie,
ktorá má viac zapojiť, ako rýchlosť spracovania,
ktoré môžete urobiť bez spracovania.
Medzi ďalšie funkcie pridané do Bourne shellu od Korn a Bourne-znova mušlí
Nezdá sa spomaliť, a ja neviem, prečo tomu tak je.
Mohlo by to byť len lepšie programovania, ale ja nie som v pozícii, vedieť.
Rýchlosť tu v skutočnosti nie je tak veľký problém, aj keď je uvedené.
Dôvodom je, že skripty skutočne získať pomerne rýchlo.
Ak tam je veľa príkazov ako v calculational programu,
pravdepodobne by sa to urobiť v shell skript.
Operácia je pomerne jednoduché a priamočiare.
Tie, ktoré som zažil, že sú príliš pomalé
zahŕňať opakované aplikácie pomalých príkazov.
Predtým som sa zmienil o prúdový editor sed. Tento príkaz je pomalý.
Ak vykonáte sed mnohokrát, budete mať pomalý scenár, ale nie je to shell, ktorý je pomalý.
Beh je v Bourne shellu nebude oveľa rýchlejšie, než beží to v C-shellu,
aj keď to možno niektoré výhody tam.
Medzi ďalšie programovacie funkcie, na druhej strane,
sú významné dôvody, prečo by ste používajú Bourne typu škrupiny.
C-shell má nepárne funkcie na to -
Skutočnosť, že neviem, či je premenná shellu premennú alebo premennú prostredia.
To môže byť veľmi mätúce.
Nie je to tak ľahké písať
len na základe svojich skúseností z programovania v iných jazykoch.
Myslím, že môžete nájsť Bourne typu škrupiny viac v súlade s vašou skúsenosťou.
Niektoré skripty, aj keď môžu byť tisíce liniek v dĺžke.
Tie, ktoré som videl sa používajú pre zaplátanie operačných systémov.
Tí môžu vykonávať veľmi pomaly, ale nechcete spustiť tie veľmi často.
Je to len vtedy, keď robíte záplatovanie,
a je to len systém manažér, ktorý robí tieto veci,
takže to naozaj nie je moc problém.
Tí, ktorí sú stovky riadkov dlho vlastne vykonať pomerne rýchlo.
, Kde je tento tu, aké sú tie vylepšenia?
Už som sa zmienil niektoré z nich - pole, výpočty,
na $ () výraz pre výpočty v Bash shellu,
iný druh substitúcia príkazu.
Existujú rôzne druhy príkazov testovanie
ktorú môžete urobiť, podmienené testy na existenciu súboru alebo iné veci.
Naposledy tu, tento príkaz tu.
Čo to urobiť, a prečo by ho použiť niekto?
printenv variablename.
Vieme, čo printenv robí. To nám hovorí, že hodnotu premennej.
A printenv variablename sa nám to povedať moc, pretože tam žiadna taká premenná.
Blank.
Ale dajme tomu niečo zmysluplného.
To nie je ani tam. Dobre. Myslím, že som nikdy definovaná tak, že.
Povedzme, pozri sa na môj prostredia.
To je ďalší príkaz, ktorú si môžete prezrieť svoje prostredie.
Tam je starý dobrý EDITOR, ktorý sme videli predtým.
Čo to bolo?
Tu máme backquote výraz.
Nezabudnite, je to C-shell.
Takže printenv EDITOR nám dá hodnotu editora. Je to vi.
A potom sa nastaví túto hodnotu do premennej a, príkazom set.
Takže teraz, keď to urobím echo $ a, mám vi.
To sa nezdá byť strašne užitočné.
Avšak, to vlastne robí má zmysel.
Vzhľadom k tomu, že nevieme, či premenná je premenná shellu alebo premennú prostredia
pomocou syntaxe skúšobnej znak dolára, môžeme použiť printenv
aby sa ubezpečil, že je to premenná prostredia.
Takže ak tam bolo shell variabilný editor, to by sa nedostal ju.
To pracuje iba s premennou prostredia.
Ak by sa premenná shellu a chcel som jeho hodnotu,
Budem musieť nájsť nejaký iný spôsob, ako to urobiť.
Jeden spôsob, ako to urobiť, by bolo tým, že robí sadu a potrubia.
To je jeden z metaznaky, špeciálne znaky.
To pošle výstup súboru na niečo iné.
Poďme sa pozrieť, čo sme tam mohli nájsť.
Nič. Dobre. Poďme sa len pozrieť, čo je tam všetko dohromady.
Bolo echo_style, ktorú som už spomenul. Dobre, poďme to urobiť.
Spomínam si, ako už bolo spomenuté predtým, echo_style
určuje spôsob echo príkaz spustiť.
bsd je skratka pre Berkeley štandardné distribúcie.
To je Berkeley Unix z roku 1970.
To je jeden zo spôsobov, ktoré odrážajú môže bežať.
Nastavenie echo_style na túto hodnotu v TC-shell spôsobí, že echo správať týmto spôsobom.
Takže nastaviť robí, ale nastavte dostane iba premenné shellu.
To by sa nenašiel Editor, ktorý nie je premenná shellu.
Nič.
Takže to je jeden spôsob, ako ich rozlíšiť.
Ale skutočnosť, že budete musieť ísť cez nejakého podivného príkazom, že
rozlišovať medzi premenných shellu a premenné prostredia
ukazuje druh nepraktické povahe C-shell pre niektoré účely.
A teraz, posledná a možno najmenej, to je manuálové stránky.
Tí, ktorí možno viete, človek je príkaz skratka pre návodu.
Manuálové stránky pre škrupiny sú ťažko čitateľné. Sú veľmi dlho.
Sú organizovaná spôsobom, ktorý môže robiť to ťažké nájsť, čo hľadáte.
Takže ak hľadáte niečo s účelom,
nemusí vedieť, či tento účel je premenná shellu alebo niečo iné,
takže nemusia vedieť, kde ju hľadať.
Môžete sa pozrieť na rôzne reťazca, ale reťazca sa často opakujú.
Takže je to väčšinou zle čitateľný.
Práve sme sa pozrel na manuálové stránke TC-shell trochu pred nájsť príkaz eval.
Niektoré veci idú rýchlejšie.
Jedným zo spôsobov je hľadať reťazec.
Môžete použiť pager.
Pager má lomítko sa pozrieť na príkaze alebo reťazca vnútri prevádzku pagera.
Muž v predvolenom nastavení bude používať pagery, či už viac či menej.
Ja neviem, či ste oboznámení s tými, ale ti môže ukázať súbory kúsok po kúsku.
Bol som pomocou LESS zobrazenie týchto jednotlivých súborov sme sa sem dostali.
Môžete hľadať tam vnútri.
Vyskúšajte stránkovania pomocou rôznych vyhľadávacích reťazcov.
Tiež manuálové stránky v rôznych operačných systémoch nemusia byť rovnaké.
Môžu byť samostatné stránky pre csh a tcsh.
Sú to nie sú na Mac, ale môžu byť, ak sú samostatné príkazy.
Ak sh nie je naozaj volať Bash, tam asi bude samostatný muž stránku.
Niektoré systémy majú oddelené manuálové stránky iba pre C-shell vstavaných príkazov.
Niekedy, ak si chcete prečítať popis vstavaným príkazom
to je tiež v ceste, ako ozvena, musíte si prečítať stránku manuálu na tento príkaz na echo
zistiť, ako to bude fungovať ako vstavaný príkaz
aj keď nie ste volanie vstavaný príkaz.
To je nevýhoda operačného systému všeobecne, nielen pre škrupiny,
aj keď pre škrupín najmä manuálové stránky sú pomerne dlhé,
čiastočne preto, že som pridal užitočných funkcií k nim, čo môže byť pozitívny.
Dobre. Sú nejaké otázky? Všetky témy, ktoré chcete vychovať?
Niečo tu relevantné?
No, bolo to veľmi príjemné hovoriť s vami všetkými.
Dúfam, že sa vám niečo z tohto seminára
ktoré budú užitočné pre vás vo vašej ďalšej činnosti.
[CS50.TV]