1 00:00:00,000 --> 00:00:02,320 >> [Seminář - Unix Mušle, prostředí] 2 00:00:02,320 --> 00:00:04,180 [Douglas Kline - Harvard University] 3 00:00:04,180 --> 00:00:07,160 [To je CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> Dnešní téma je unixový shell. 5 00:00:12,770 --> 00:00:20,600 Jsem Douglas Kline, expert, nebo alespoň rozumně příslušný uživatel, skořepiny. 6 00:00:20,600 --> 00:00:25,280 Shell je rozhraní pro uživatele na operačním systému počítače. 7 00:00:25,280 --> 00:00:29,580 Název je zavádějící, protože, na rozdíl od shellu zvířete, 8 00:00:29,580 --> 00:00:34,890 , která je tvrdá a ochranné, počítač shell umožňuje komunikaci. 9 00:00:34,890 --> 00:00:39,120 Takže porézní membrána by asi bylo lepší metafora. 10 00:00:39,120 --> 00:00:44,500 >> Původní Shell pro Unix je shell Bourne. 11 00:00:44,500 --> 00:00:46,450 Bourne se píše B-O-u-R-N-E. 12 00:00:46,450 --> 00:00:49,770 Bourne byl jedním z původních autorů Unix, 13 00:00:49,770 --> 00:00:51,700 a tak shell je pojmenovaný po něm. 14 00:00:51,700 --> 00:00:54,850 Název této nádrži jako příkazu je prostě sh. 15 00:00:54,850 --> 00:00:57,400 To je příkaz, který lze provést. 16 00:00:57,400 --> 00:01:00,810 Shell se spustí při přihlášení. 17 00:01:00,810 --> 00:01:04,459 Když se přihlásíte k počítači, shell jen spustí za vás, 18 00:01:04,459 --> 00:01:06,820 a to je to, co se vaše příkazy. 19 00:01:06,820 --> 00:01:09,790 Je možné začít jindy také. 20 00:01:09,790 --> 00:01:16,780 Máte-li vyvolat okno s žádným jiným označením, bude to spustit shell pro vás. 21 00:01:16,780 --> 00:01:20,450 To je, jak to je, že můžete jít k oknu a začněte psát příkazy 22 00:01:20,450 --> 00:01:23,960 a tak dále, že i když jste se přihlásit do tohoto okna. 23 00:01:23,960 --> 00:01:26,670 Navíc, pokud si vzdálené přihlášení, 24 00:01:26,670 --> 00:01:30,250 pak to začne shell na vzdáleném počítači. 25 00:01:30,250 --> 00:01:44,310 A to je možné spouštět příkazy bez interaktivním shellu. 26 00:01:44,310 --> 00:01:48,990 To může znamenat přímo ve Vašem současném provozu, 27 00:01:48,990 --> 00:01:50,700 a to může také znamenat dálkové ovládání. 28 00:01:50,700 --> 00:01:52,900 Dalo by se poslat příkaz k jinému počítači, 29 00:01:52,900 --> 00:01:55,460 který zahrnuje spuštění shellu tam. 30 00:01:55,460 --> 00:01:57,760 Ve skutečnosti, že musí obsahovat zakládání shell tam 31 00:01:57,760 --> 00:02:01,740 i když to není váš konečný účel. 32 00:02:05,310 --> 00:02:12,350 Když se něco začne takhle, to nemusí nutně začít nový shell. 33 00:02:12,350 --> 00:02:17,430 Máte-li vychovávat nové okno, je možné říct, že, aby se editor 34 00:02:17,430 --> 00:02:18,940 nebo nějaký jiný příkaz. 35 00:02:18,940 --> 00:02:20,560 V tomto případě, editor bude začínat od nuly. 36 00:02:20,560 --> 00:02:22,930 Když editor skončí, skončí okno. 37 00:02:22,930 --> 00:02:24,620 To je trochu neobvyklé, ale to může být provedeno. 38 00:02:24,620 --> 00:02:27,140 V těchto případech nebude shell. 39 00:02:27,140 --> 00:02:31,890 Takže to není nutně pravda, že okno nebo některé z takových aplikací přinese do shellu. 40 00:02:31,890 --> 00:02:34,030 >> Shell analyzuje příkazy. 41 00:02:34,030 --> 00:02:40,900 Analýze znamená identifikaci jednotlivých prvků a jejich klasifikaci. 42 00:02:40,900 --> 00:02:43,470 V rámci příkazu, kompletní řetězec, který zadáte, 43 00:02:43,470 --> 00:02:47,310 tam bude jeden nebo více jednotlivé příkazy, které mají být provedeny. 44 00:02:47,310 --> 00:02:50,050 Ostatní prvky mohou být argumenty. 45 00:02:50,050 --> 00:02:55,020 Tam může být také speciální znaky, které ovlivňují výkon příkazu. 46 00:02:55,020 --> 00:02:59,710 Mohou posílat výstup jinam než na obrazovce 47 00:02:59,710 --> 00:03:01,750 v případě, že příkaz by obvykle odeslat ji na obrazovce. 48 00:03:01,750 --> 00:03:04,390 Je možné přesměrovat vstup, to může dělat jiné věci také. 49 00:03:04,390 --> 00:03:08,120 Existují různé jiné symboly, znaky, a tak dále. 50 00:03:08,120 --> 00:03:13,600 Syntaktická analýza zahrnuje detekci a interpretaci ty věci. 51 00:03:13,600 --> 00:03:19,560 >> Nyní, pokud nejsou k dispozici žádné další otázky, které je spíše pravděpodobné, protože tam nejsou více lidí, 52 00:03:19,560 --> 00:03:24,620 půjdeme na mé další stránky zde. 53 00:03:24,620 --> 00:03:29,170 >> Jsem řekl dříve, že Bourne shell je výchozí shell. 54 00:03:29,170 --> 00:03:31,550 Tam jsou jiní. 55 00:03:31,550 --> 00:03:34,520 Jedním z nich je C-shell. Příkaz je csh. 56 00:03:34,520 --> 00:03:36,830 Název C-shell je jen hra se slovy. 57 00:03:36,830 --> 00:03:41,260 Tento shell byl představen s Berkeley Unix v polovině roku 1970. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix byl významnou událostí ve vývoji Unixu. 59 00:03:44,830 --> 00:03:48,770 Byla to obrovská revoluce a včetně zavedení tohoto shellu. 60 00:03:48,770 --> 00:03:50,790 Důvodem pro tuto hru se slovy, C-shell, 61 00:03:50,790 --> 00:03:56,490 je, že C-shell má některé vlastnosti v něm, které se podobají jazyka C, 62 00:03:56,490 --> 00:03:59,740 které Bourne shell nemá - 63 00:03:59,740 --> 00:04:02,140 nebo to neměl v té době. 64 00:04:02,140 --> 00:04:05,190 K dispozici je také TC-shell. 65 00:04:05,190 --> 00:04:07,360 To je nadmnožinou C-shell. 66 00:04:07,360 --> 00:04:11,470 To má další funkce, z nichž mnohé jsou užitečné pro interaktivní použití, 67 00:04:11,470 --> 00:04:16,050 jako je například připomínající příkazy v mechanismu historie, 68 00:04:16,050 --> 00:04:18,459 které budu popisovat něco později - 69 00:04:18,459 --> 00:04:23,120 jednoduchým způsobem, modeled po editoru. 70 00:04:23,120 --> 00:04:29,170 Má také vázání, které vám umožní svázat krátký řetězec klíče na delší příkazu. 71 00:04:29,170 --> 00:04:31,440 Nebudeme se dostat do toho dnes. 72 00:04:31,440 --> 00:04:33,650 To má některé funkce, které jsou užitečné pro programování. 73 00:04:33,650 --> 00:04:37,020 Nicméně, C-shell není často používán pro shell programování. 74 00:04:37,020 --> 00:04:39,080 Programy Shell, pokud jste už nevěděli, 75 00:04:39,080 --> 00:04:41,690 jsou programy, které se skládají z vlastností shellu. 76 00:04:41,690 --> 00:04:43,220 Dalo by se spustit to jako programy. 77 00:04:43,220 --> 00:04:46,760 Můžete napsat spoustu příkazů shellu do souboru a spustit soubor. 78 00:04:46,760 --> 00:04:49,760 Nemusíte jej zkompilovat. To je interpretační jazyk. 79 00:04:49,760 --> 00:04:57,320 Fráze C-shell je nyní nejasný, neboť by mohl odkazovat pouze na původního C-shellu, csh, 80 00:04:57,320 --> 00:05:01,200 nebo na všech C-skořápky, včetně tcsh. Je to trochu nejasné. 81 00:05:01,200 --> 00:05:08,250 >> Později shell je shell Korn, ksh, pojmenovaný po programátor, Korn. 82 00:05:08,250 --> 00:05:14,160 Tento shell pokoušel začlenit do 1 shellu 83 00:05:14,160 --> 00:05:16,960 výhody C-shell pro interaktivní použití 84 00:05:16,960 --> 00:05:19,230 a Bourne shell pro programování. 85 00:05:19,230 --> 00:05:25,440 To bylo použité jako interaktivní shell některými lidmi - minoritní. 86 00:05:25,440 --> 00:05:32,050 Později však došlo k dalšímu představení, Bash shell, bash, 87 00:05:32,050 --> 00:05:35,290 opět hra se slovy, Bourne-znovu shell. 88 00:05:35,290 --> 00:05:43,830 Je to rozšíření pláště Bourne. Korn shell je také. Oba z nich jsou. 89 00:05:43,830 --> 00:05:48,100 Má stejné cíle Korn o sloučení C-shell je 90 00:05:48,100 --> 00:05:50,980 a výhody Bourne Shell v roce 1 skořápce. 91 00:05:50,980 --> 00:05:56,810 Mnoho vylepšení z Korn shellu jsou také zahrnuty v Bash. 92 00:05:56,810 --> 00:06:00,710 Bash, má však více, a je proto vhodnější. 93 00:06:00,710 --> 00:06:05,180 Bourne-znovu shell a Korn shell se nazývá Bourne typu skořápky 94 00:06:05,180 --> 00:06:07,730 protože obsahují vlastnosti Bourne Shellu, 95 00:06:07,730 --> 00:06:11,180 které jsou v rozporu v některých ohledech s C-skořápky. 96 00:06:11,180 --> 00:06:15,520 Existují i ​​jiné skořápky kromě těch, některé určené pro omezené použití, 97 00:06:15,520 --> 00:06:20,670 možná pouze na některých příkazů, možná specializované účely, není často používán. 98 00:06:20,670 --> 00:06:24,240 >> Dobře. Další položka zde. 99 00:06:31,300 --> 00:06:38,970 Bash shell stalo se spojené s různými formami Linuxu. 100 00:06:38,970 --> 00:06:41,550 Nejsem si jistý, jestli je to pravda, každé formě. 101 00:06:41,550 --> 00:06:43,280 Existuje mnoho forem tam, a já jsem nepoužil všechny, 102 00:06:43,280 --> 00:06:46,870 ale ty, které jsem použil to stalo s ním spojené. 103 00:06:46,870 --> 00:06:49,670 Takže pokud vím, neexistuje nic, co Bash 104 00:06:49,670 --> 00:06:52,210 což je víc, kompatibilní s operačním systémem Linux 105 00:06:52,210 --> 00:06:55,020 než jakékoli jiné kombinace pláště a operační systém. 106 00:06:55,020 --> 00:06:59,690 Myslím, že to asi jen odráží sklony programátorů. 107 00:06:59,690 --> 00:07:07,500 To, že má být spojována s operačním systémem Linux je další důvod, proč raději Bash na KSH 108 00:07:07,500 --> 00:07:11,820 od věci, je pravděpodobné, že bude v něm napsáno, a je pravděpodobné, že se šíří. 109 00:07:11,820 --> 00:07:15,410 Dám vám další důvody, které později. 110 00:07:15,410 --> 00:07:21,330 Bourne shell skripty by měly probíhat pod Korn shellu nebo Bash. 111 00:07:21,330 --> 00:07:22,650 Máte-li napsat něco pro Bourne shellu, 112 00:07:22,650 --> 00:07:26,180 můžete pravděpodobně spustit pod ksh nebo bash. 113 00:07:26,180 --> 00:07:30,610 Korn shell skriptů bude pravděpodobně spuštěn pod Bash, ale nemohu zaručit, že. 114 00:07:30,610 --> 00:07:36,040 Později zde na, C-shell skripty by měly probíhat v rámci TC-shell. 115 00:07:38,850 --> 00:07:41,690 C-shell byl vlastně nikdy ve velké míře používají pro skriptování 116 00:07:41,690 --> 00:07:48,110 od Bourne shell a později Bourne typu skořápky byly vhodnější pro tento účel. 117 00:07:48,110 --> 00:07:50,620 Takže to opravdu není tak důležité. 118 00:07:50,620 --> 00:07:53,480 Existuje poměrně hodně Bourne shell skripty, které byly napsány dávno, 119 00:07:53,480 --> 00:07:56,860 před Korn shellu nebo Bourne-znovu shell byly zavedeny. 120 00:07:56,860 --> 00:07:59,300 Ti, kteří jsou ještě v použití, který je součástí operačních systémů, 121 00:07:59,300 --> 00:08:01,590 a tak zjistíte, je, pokud se podíváte do operačního systému 122 00:08:01,590 --> 00:08:03,760 nebo některé staré programové balíčky. 123 00:08:03,760 --> 00:08:12,840 >> Bash je do jisté míry stává jakási lingua franca operačních systémů. 124 00:08:12,840 --> 00:08:17,580 Je to již byla rozšířena na Windows a VMS. 125 00:08:17,580 --> 00:08:20,440 VMS, v případě, že nevíte, je proprietární operační systém 126 00:08:20,440 --> 00:08:25,480 Digital Equipment Corporation, který je ještě v použití, a to především v zákulisí. 127 00:08:25,480 --> 00:08:29,250 A pokud to bude běh na několika různých operačních systémů, 128 00:08:29,250 --> 00:08:31,110 pravděpodobné, že lidé mají tendenci se posouvat za to. 129 00:08:31,110 --> 00:08:33,840 Ale tento vývoj je poměrně nedávný. 130 00:08:33,840 --> 00:08:39,490 Je to jen začátek, takže nemůžu předvídat, zda to bude dopadat být opravdu ten druh lingua franca. 131 00:08:39,490 --> 00:08:43,539 Také proto, že cestami souborů a knihoven se liší 132 00:08:43,539 --> 00:08:46,210 mezi různými operačními systémy, 133 00:08:46,210 --> 00:08:50,250 nemusíte být schopni napsat bash skript na jednom operačním systému 134 00:08:50,250 --> 00:08:51,840 a spusťte jej na jiný. 135 00:08:51,840 --> 00:08:54,440 Měli byste být schopni se pohybovat mezi různými Unix, Linux 136 00:08:54,440 --> 00:08:59,020 Operační systémy Mac OS, ale ne nutně na Windows nebo VMS. 137 00:08:59,020 --> 00:09:01,390 Možná budete muset změnit popis souboru název cesty, 138 00:09:01,390 --> 00:09:03,180 a některé knihovny se může lišit, 139 00:09:03,180 --> 00:09:05,230 které mohou ovlivnit způsob, jakým některé příkazy pracovat 140 00:09:05,230 --> 00:09:09,730 nebo jak zpracovat argumenty a podobně. 141 00:09:09,730 --> 00:09:19,230 Kromě toho, další opatrnost je, že neexistuje žádná záruka 142 00:09:19,230 --> 00:09:23,570 že všechny různé mušle jsem se již zmínil - Bourne shell, C-shell, 143 00:09:23,570 --> 00:09:29,880 TC-shell, Korn shell, Bourne-znovu shell - bude k dispozici v každém Unixu 144 00:09:29,880 --> 00:09:33,750 nebo Linux nebo Mac OS počítače. 145 00:09:33,750 --> 00:09:35,620 Oni prostě nemusí být tam. 146 00:09:35,620 --> 00:09:38,300 To je jeden z upozornění zde. 147 00:09:38,300 --> 00:09:41,490 Je to nešťastné omezení tady, protože jste chtěli věci pracovat všude, 148 00:09:41,490 --> 00:09:44,380 ale bohužel, můžete se spolehnout na to. 149 00:09:44,380 --> 00:09:47,230 >> Dobře. Další, kdo zde. 150 00:09:50,280 --> 00:09:54,370 Řekněme, že chcete napsat skript, 151 00:09:54,370 --> 00:09:57,170 Program se skládá z příkazů shellu. 152 00:09:57,170 --> 00:10:01,200 Můžete psát své příkazy, dát je do souboru a spustit soubor. 153 00:10:01,200 --> 00:10:04,230 Co když chcete zahrnout argumenty? 154 00:10:04,230 --> 00:10:09,650 V případě skořápkových operací, argumenty se nazývají parametry a poziční parametry 155 00:10:09,650 --> 00:10:15,940 a oni budou volány znak dolaru a číslice, $ 1, 2 dolary. 156 00:10:15,940 --> 00:10:27,000 Takže v případě, že skript má toto jméno, můj první argument by mohl být argumentem 1 157 00:10:27,000 --> 00:10:30,540 a můj druhý by mohl být argument, 2, 158 00:10:30,540 --> 00:10:34,110 a uvnitř mého scénáře, když chci, aby se na tyto věci - 159 00:10:34,110 --> 00:10:36,810 pojďme vymazat to, protože jsem opravdu chystá spustit - 160 00:10:36,810 --> 00:10:42,160 v mém skriptu budu mít $ 1 odkazují na arg1, 161 00:10:42,160 --> 00:10:45,890 $ 2, který přijde na to, že způsob, arg2. 162 00:10:45,890 --> 00:10:50,080 Takže ty symboly jsou k dispozici odkazovat na argumenty, 163 00:10:50,080 --> 00:10:52,390 a ty se vztahují na všechny granáty. 164 00:10:52,390 --> 00:10:56,520 Kromě toho existují další znaky. 165 00:10:56,520 --> 00:11:01,700 $ * Se vztahuje na celý seznamu argumentů, všechny z nich. 166 00:11:01,700 --> 00:11:05,390 $ # Se odkazuje na počet argumentů. 167 00:11:05,390 --> 00:11:07,910 Opět platí, že to platí pro všechny skořápky. 168 00:11:07,910 --> 00:11:15,540 Tyto symboly * a #, může být použit s těmito významy v jiných místech také. 169 00:11:15,540 --> 00:11:17,940 Nebudeme se dostat do toho. 170 00:11:17,940 --> 00:11:20,460 >> Shell specifikátor řádek. Co to je? 171 00:11:20,460 --> 00:11:27,760 Řekněme, že jste napsali scénář a je to pro konkrétní shell a chcete jej spustit. 172 00:11:27,760 --> 00:11:33,500 Jak víte, co shell váš operační systém bude používat ke spuštění skriptu? 173 00:11:33,500 --> 00:11:37,230 Na jednom místě, kde by mohl předpokládat, že by jej spustit v Bourne shellu 174 00:11:37,230 --> 00:11:39,440 pokud jste neřekl jinak, 175 00:11:39,440 --> 00:11:41,730 ale lidé nejsou psaní skriptů v Bourne shell, který už tolik 176 00:11:41,730 --> 00:11:43,750 a nemůžete ani spoléhat na to už. 177 00:11:43,750 --> 00:11:48,740 Takže tady máme shell specifikátor linku tady. 178 00:11:48,740 --> 00:11:52,450 To určuje Bash. 179 00:11:52,450 --> 00:11:56,750 Všimněte si, že to určuje ji v cestu ke složce, / bin / bash. 180 00:11:56,750 --> 00:12:02,870 Pokud počítač má Bash shell, ale ne v adresáři bin, / bin, to nebude fungovat. 181 00:12:02,870 --> 00:12:06,870 To je další kvalifikátor, další opatrnost zde. 182 00:12:06,870 --> 00:12:09,500 Křížek je komentář linka charakter. 183 00:12:09,500 --> 00:12:12,300 To platí pro všechny granáty. 184 00:12:12,300 --> 00:12:18,610 Zejména případ, #! na začátku skriptu, je zvláštní případ. 185 00:12:18,610 --> 00:12:23,410 To určuje shell, ve kterém je skript spuštěn. 186 00:12:23,410 --> 00:12:30,230 Jak jsem říkal, to nemusí být stejné místo / bin. 187 00:12:30,230 --> 00:12:34,880 Kromě toho je tu ještě jedna věc zde. 188 00:12:34,880 --> 00:12:41,250 Pokud stačí použít znak libry bez vykřičníkem a cestu ke složce, 189 00:12:41,250 --> 00:12:44,640 , že by mělo být uvedeno C-shell. 190 00:12:44,640 --> 00:12:48,300 Nicméně, já nedoporučuji dělat to, protože nejsem schopen zaručit 191 00:12:48,300 --> 00:12:49,750 že bude vždy fungovat. 192 00:12:49,750 --> 00:12:52,220 Chcete-li C-shell, že by bylo lepší, aby to tak říct. 193 00:12:52,220 --> 00:12:58,450 Pak je tu něco, co spíše matoucí zde. 194 00:12:58,450 --> 00:13:03,940 Pokud používáte shell specifikátor linii, jako je / bin / bash 195 00:13:03,940 --> 00:13:07,070 a že shell není k dispozici tam, 196 00:13:07,070 --> 00:13:10,680 tam žádná taková věc jako / bin / bash na daném počítači, 197 00:13:10,680 --> 00:13:14,330 a to buď proto, že nemá Bash, nebo proto, že je v jiném místě, 198 00:13:14,330 --> 00:13:17,450 dostanete chybu oznamující, že skript, který běžel neexistuje. 199 00:13:17,450 --> 00:13:21,510 A samozřejmě váš skript existuje, takže chybová zpráva je zavádějící. 200 00:13:21,510 --> 00:13:24,810 Důvodem, že operační systém vám dává tuto chybu 201 00:13:24,810 --> 00:13:28,370 nebo, přesněji, že interaktivní shell, ve kterém je spuštěn dává tuto chybu, 202 00:13:28,370 --> 00:13:33,510 je, že se hlásí příkaz, který jste použili, což je název skriptu. 203 00:13:33,510 --> 00:13:36,920 Tento příkaz efektivně nazývá shell jménem skriptu. 204 00:13:36,920 --> 00:13:39,330 To je místo, kde můžete dostat, že matoucí chybové hlášení. 205 00:13:39,330 --> 00:13:42,980 Dalším způsobem, jak volat skript 206 00:13:42,980 --> 00:13:45,910 je zadáním shell na příkazovém řádku, jak je zde. 207 00:13:45,910 --> 00:13:52,510 To je příkaz. To říká, že běží Bash a pak spustit svůj skript v bash. 208 00:13:52,510 --> 00:13:55,680 To bude mít přednost před specifikátor linie, 209 00:13:55,680 --> 00:14:02,090 a to má funkci umožňuje stanovit různou cestami. 210 00:14:02,090 --> 00:14:04,840 Pokud jste právě dát příkaz, bude operační systém hledat pro tento příkaz 211 00:14:04,840 --> 00:14:06,410 na různých místech. 212 00:14:06,410 --> 00:14:08,820 Pokud je k dispozici, mělo by to najít. 213 00:14:08,820 --> 00:14:12,290 Počítač najde Bash všude tam, kde je umístěn, a spusťte jej, 214 00:14:12,290 --> 00:14:15,470 takže nemusíte pak mít obavy o tom, kde je najde. 215 00:14:15,470 --> 00:14:17,360 Existuje případně další otázky zde, 216 00:14:17,360 --> 00:14:20,830 jako v případě, že je více než 1 Bash, což je možné, i když nepravděpodobné. 217 00:14:20,830 --> 00:14:23,540 Takže to je další způsob, jak se vypořádat s těmito věcmi. 218 00:14:23,540 --> 00:14:30,480 Specifikátor linky můžete volat jakoukoliv shell. 219 00:14:30,480 --> 00:14:34,480 Mohou také volat jiné než skořápky věci. 220 00:14:34,480 --> 00:14:37,940 Příklady mám zde sed, což je proud editor; 221 00:14:37,940 --> 00:14:39,900 awk, což je jazyk pro zpracování vzor; 222 00:14:39,900 --> 00:14:43,680 a perl, velmi vysoce rozvinutý skriptovací jazyk. 223 00:14:43,680 --> 00:14:47,570 Pokud dáte specifikátor linii označující jeden z těchto programů na začátku, 224 00:14:47,570 --> 00:14:51,270 půjde přímo do tohoto programu spíše než spuštění shellu. 225 00:14:51,270 --> 00:14:54,030 Tyto programy mají meze svých schopností. 226 00:14:54,030 --> 00:14:58,790 Perl je velmi schopný. Sed je editor. To může dělat než jen úpravou věci. 227 00:14:58,790 --> 00:15:03,300 Ale to může být obtížné naprogramovat, že. 228 00:15:03,300 --> 00:15:09,670 Kromě toho, předávání argumenty a tak se skript je buď nemožná, nebo matoucí. 229 00:15:09,670 --> 00:15:15,030 Takže v těchto případech, s awk a sed, to je, alespoň podle mých zkušeností, 230 00:15:15,030 --> 00:15:18,910 vhodnější napsat shell skript a volání awk nebo sed z shell skript 231 00:15:18,910 --> 00:15:24,660 spíše než volání awk nebo sed jako skript specifikátor řádku. 232 00:15:24,660 --> 00:15:26,980 Perl je vysoce diverzifikovaná jazyk, jak jsem řekl. 233 00:15:26,980 --> 00:15:30,050 Nelze spustit interaktivní příkazy v perlu, 234 00:15:30,050 --> 00:15:32,660 což znamená, že nemůžete testovat části skriptů, které jste rozvojové 235 00:15:32,660 --> 00:15:33,970 tím, že je interaktivně. 236 00:15:33,970 --> 00:15:36,160 Nicméně, je to velmi schopný jazyk 237 00:15:36,160 --> 00:15:40,960 a se vyvinul do velmi široce používaný nástroj. 238 00:15:40,960 --> 00:15:45,720 To je jen trochu v závorkách poznámku o specifikátor linek. 239 00:15:45,720 --> 00:15:50,610 >> Ve všech nebo většiny forem Linux - opět, nemohu být jistý, že je vše - 240 00:15:50,610 --> 00:15:57,900 a Mac OS, pokud jste typ csh dostanete tcsh, 241 00:15:57,900 --> 00:16:00,570 a pokud zadáte sh dostanete bash. 242 00:16:00,570 --> 00:16:05,020 Snažili se, aby vám ty pokročilejší verze těchto granátů, 243 00:16:05,020 --> 00:16:07,940 ale to může být matoucí. 244 00:16:07,940 --> 00:16:16,720 Máte-li napsat skript pomocí tcsh nebo Bash je k dispozici při volání csh nebo sh 245 00:16:16,720 --> 00:16:22,230 a pokuste se jej spustit v počítači, který nemá tcsh nebo Bash, 246 00:16:22,230 --> 00:16:25,050 můžete získat nějaké chyby, pokud existují příkazy tam 247 00:16:25,050 --> 00:16:27,970 které tyto granáty neuznávají. 248 00:16:27,970 --> 00:16:34,120 Kromě toho, můžete si vyvolat shell na lokálním počítači 249 00:16:34,120 --> 00:16:37,700 volání jako sh nebo csh a pak se dostat na pokročilejší shelly. 250 00:16:37,700 --> 00:16:41,440 Nesmíte ani myslet na to, že jste pomocí více Advanced Shell. 251 00:16:41,440 --> 00:16:45,670 Tak to je potenciální úskalí. 252 00:16:45,670 --> 00:16:50,290 Jak je prokázáno, že pokud zadáte sh vám Bash, 253 00:16:50,290 --> 00:16:55,580 Pokud zadáte csh dostanete TSCH? 254 00:16:55,580 --> 00:16:59,940 Existují věci, které v těchto počítačích volal odkazy 255 00:16:59,940 --> 00:17:06,460 které lze připojit k souboru jména se odkazovat na stejnou věc. 256 00:17:06,460 --> 00:17:12,180 To může být buď 2 názvy pro stejný nebo jiný soubor, jehož cílem je poukázat na jiný soubor. 257 00:17:12,180 --> 00:17:17,550 Jsou to tzv. pevné a symbolické odkazy. Nebudeme jít do toho už dnes. 258 00:17:17,550 --> 00:17:21,619 Tam může být také samostatné soubory - 1 soubor sh, 1 soubor Bash - 259 00:17:21,619 --> 00:17:23,880 ale oba běží Bash. 260 00:17:23,880 --> 00:17:29,350 Pak je tu ještě jeden kvalifikátor zde. 261 00:17:29,350 --> 00:17:42,640 Pokud voláte jeden z těchto mušlí jedno jméno, 262 00:17:42,640 --> 00:17:46,640 byste si mohli myslet byste si stejnou funkcionalitu jako volat to pod jiným názvem. 263 00:17:46,640 --> 00:17:49,700 No, to vlastně není nutně pravda. 264 00:17:49,700 --> 00:17:55,020 Tyto příkazy můžete prohlédnout na jméno o němž se říkalo 265 00:17:55,020 --> 00:18:00,020 a mohou na základě tohoto názvu, se chovají odlišně. 266 00:18:00,020 --> 00:18:02,740 Tam mohou být otázky se snaží odpovídat standardu. 267 00:18:02,740 --> 00:18:06,060 Někteří z vás možná slyšeli o standardu POSIX nebo jiný, 268 00:18:06,060 --> 00:18:08,730 možná další funkce. 269 00:18:08,730 --> 00:18:14,520 To může být vybrán někdy argumenty příkazového řádku 270 00:18:14,520 --> 00:18:17,310 nebo nastavením proměnné shellu. 271 00:18:17,310 --> 00:18:22,170 Volání jako sh nebo bash, může skutečně vést k odlišnému provedení 272 00:18:22,170 --> 00:18:25,300 i když je to stejný soubor, který jste provádění. 273 00:18:25,300 --> 00:18:31,800 Další věc, aby zvážila, že i když jiný počítač má tcsh nebo Bash, 274 00:18:31,800 --> 00:18:35,310 pokud nejsou spojeny, jak jsou na lokálním počítači 275 00:18:35,310 --> 00:18:37,990 Máte-li Linux nebo Mac OS místního počítače, 276 00:18:37,990 --> 00:18:45,630 pak zase budete mít shell, který vám volat sh nebo csh, a ne ten, který byste mohli dát přednost. 277 00:18:50,430 --> 00:19:01,130 Aktuální Bourne shell má vylepšení menší než v Bash 278 00:19:01,130 --> 00:19:06,100 ale za ty, v původním Bourne shell. 279 00:19:06,100 --> 00:19:09,690 V důsledku toho, i aktuální Bourne shell, sh, 280 00:19:09,690 --> 00:19:14,560 i když to není Bash, podobá se jazyk C více, než C-shell dělá. 281 00:19:14,560 --> 00:19:20,460 To nebyla pravda, když byl C-shell nejprve vytvořil, ale vyvinula tímto způsobem. 282 00:19:20,460 --> 00:19:26,560 Můžete si všimnout, tady, že všechna tato jména shell s výjimkou Bourne shellu 283 00:19:26,560 --> 00:19:30,640 něco pro indikaci, které shell jsou - csh, bash - 284 00:19:30,640 --> 00:19:32,550 ale Bourne shell je jen sh. 285 00:19:32,550 --> 00:19:34,910 Proč? To byl původní shell. 286 00:19:34,910 --> 00:19:37,770 Bylo to shell pak, ne shell, 287 00:19:37,770 --> 00:19:41,090 a od té doby to byl shell, tam byl žádný důvod, aby ji odlišil od jiného shellu. 288 00:19:41,090 --> 00:19:45,030 Takže to je důvod, proč má tento název a stále dělá. 289 00:19:50,630 --> 00:19:58,990 >> Tento top je zde řada z databáze hesel pro účet mám tam 290 00:19:58,990 --> 00:20:01,680 na jiném počítači. 291 00:20:01,680 --> 00:20:08,300 Budu se snažit, aby se to jméno, takže můžete vidět, že část na konci, shell. 292 00:20:09,720 --> 00:20:15,450 Databáze heslo drží přihlašovací vlastnosti pro všechny uživatele. 293 00:20:15,450 --> 00:20:20,330 Na začátku je uživatelské jméno, které můžete vidět poslední dvě písmena dolu teď. 294 00:20:20,330 --> 00:20:23,970 Pole jsou zde odděleny dvojtečkami. 295 00:20:23,970 --> 00:20:28,210 Poslední pole, jak můžete vidět, je bin / tcsh, shell. 296 00:20:28,210 --> 00:20:30,230 To je shell specifikátor. 297 00:20:30,230 --> 00:20:33,240 Je tu něco zajímavého zde. 298 00:20:33,240 --> 00:20:36,950 Když Unix byl nejprve vyvinut, byl tam jen jeden shell, 299 00:20:36,950 --> 00:20:38,350 takže tam nebyl žádný výběr. 300 00:20:38,350 --> 00:20:45,570 Tak proč se jim umožňují pole v databázi hesel zadejte shell? 301 00:20:45,570 --> 00:20:47,920 Nevím, ale je to štěstí, že oni dělali. 302 00:20:47,920 --> 00:20:52,030 Je to dost těžké, aby se změny v databázovém formátu heslo 303 00:20:52,030 --> 00:20:54,420 protože mnoho programů naleznete na jeho formát 304 00:20:54,420 --> 00:20:57,720 a bude muset být přepsán. 305 00:20:57,720 --> 00:21:04,130 Je to vhodný nebo náhodné vývoj, že součástí této oblasti. 306 00:21:04,130 --> 00:21:12,780 Tento druh souboru heslo řádku se používá na všech počítačích Unix a Linux, takže pokud vím. 307 00:21:12,780 --> 00:21:14,650 Mac má svůj vlastní systém. 308 00:21:14,650 --> 00:21:17,810 To má ve skutečnosti soubor s hesly s linkami v tomto formátu, 309 00:21:17,810 --> 00:21:21,060 ale to není tam, kde jsou definovány uživatelské vlastnosti. 310 00:21:21,060 --> 00:21:24,200 Další vsunutá poznámka tam. 311 00:21:36,470 --> 00:21:46,020 >> Pokud voláte shell, můžete volat jako sub-shell vašich stávajících mušlí. 312 00:21:46,020 --> 00:21:50,480 Takže když jsem se jít sem, pojďme se zbavit těchto věcí. 313 00:21:50,480 --> 00:21:53,350 Tady jsem v C-shellu. 314 00:21:56,830 --> 00:22:01,200 To je veličina, která přesně identifikuje svou skořápku, 315 00:22:01,200 --> 00:22:04,300 ve skutečnosti není vždy spolehlivý způsob, jak určit, co shell vedete, 316 00:22:04,300 --> 00:22:06,220 ale v tomto případě to je. 317 00:22:06,220 --> 00:22:08,040 Co když jsem typ - 318 00:22:09,970 --> 00:22:12,470 Teď jsem v Bash. 319 00:22:12,470 --> 00:22:19,540 Některé věci se bude stejný. Je mi říká mé příkazy. 320 00:22:19,540 --> 00:22:24,500 Pokud bych se pozastavit zpět do mého C-shell, LS, stejně. Je to tak? 321 00:22:24,500 --> 00:22:28,890 fg, popředí, zpět do mého Bash shellu. 322 00:22:28,890 --> 00:22:38,290 pwd, aktuální adresář, zpět na C-shell. 323 00:22:38,290 --> 00:22:43,180 pwd, jiný adresář - vlastně ne jiný adresář, v tomto případě. 324 00:22:43,180 --> 00:22:45,110 Je to stejný adresář. 325 00:22:45,110 --> 00:22:50,000 Řekněme, že chci, aby tu zavolat příkaz: kde ls. 326 00:22:50,000 --> 00:22:52,140 Co to bylo? 327 00:22:52,140 --> 00:22:53,670 To mi říká, kde příkaz ls, 328 00:22:53,670 --> 00:22:56,670 ten, který mi dává výpis adresáře, se nachází v ls. 329 00:22:56,670 --> 00:23:01,460 Vraťme se k Bash shellu. Zkusme to samé. 330 00:23:01,460 --> 00:23:05,830 Hmm, tam zajímavé, kde: command not found. 331 00:23:05,830 --> 00:23:07,400 Proč je to tak? 332 00:23:07,400 --> 00:23:11,570 Kde příkaz je postaven do C-shell. 333 00:23:11,570 --> 00:23:15,630 To není příkaz, který má být čten v paměti někde jinde a popraven. 334 00:23:15,630 --> 00:23:20,310 C-shell spustí jej přenosem výkonu na části vlastního kódu 335 00:23:20,310 --> 00:23:22,790 a to není v Bash shellu. 336 00:23:22,790 --> 00:23:25,710 Takže Bash, které nemají takový vestavěný příkaz, hledá to, nenajde ji, 337 00:23:25,710 --> 00:23:27,720 a dostaneme chybu. 338 00:23:27,720 --> 00:23:32,290 Takže tam máme Bash shell běží pod C-shell, a říkáme, že sub-shell. 339 00:23:32,290 --> 00:23:38,480 A právě v případě, že jste zvědaví, Bash shell má svůj vlastní způsob, jak lokalizovat příkazy. 340 00:23:38,480 --> 00:23:42,590 hodnotu hash odkazuje na skutečnost, že může být provedena rychleji, 341 00:23:42,590 --> 00:23:44,960 bylo nalezeno více rychle. 342 00:23:44,960 --> 00:23:48,610 To je jeden z vylepšení postavených v některé z těchto mušlí. 343 00:23:50,220 --> 00:23:54,200 >> Bourne typu skořápky jsou přednostní pro programování. 344 00:23:54,200 --> 00:23:57,300 Mají kontrolní struktury, jako jsou smyčky, podmíněné příkazy, 345 00:23:57,300 --> 00:24:00,240 druh příkazů, které můžete použít v programovacích jazycích jako C 346 00:24:00,240 --> 00:24:04,190 nebo cokoliv jiného jazyka. Možná, že jste programování v jazyce Java nebo cokoliv jiného. 347 00:24:04,190 --> 00:24:06,460 Mušle jsou ty taky. 348 00:24:06,460 --> 00:24:11,790 V Bourne typu skořápky, zejména Bash, více 349 00:24:11,790 --> 00:24:15,730 a jsou navrženy s větší flexibilitou. 350 00:24:15,730 --> 00:24:20,700 Bash shell má pole. Původní Bourne shell není. 351 00:24:20,700 --> 00:24:26,130 Takže to může být značně výhodný pro programování. 352 00:24:26,130 --> 00:24:29,810 C-shell vlastně dělá má pole, ale nemá mnoho z těchto dalších funkcí. 353 00:24:29,810 --> 00:24:33,450 V Bourne typu skořápky budou provádět rychleji 354 00:24:33,450 --> 00:24:36,520 v případě, že nemají vlastnosti určené pro interaktivní použití. 355 00:24:36,520 --> 00:24:39,340 Můžete nahrát věci dolů pro jeden účel, to načte je dolů k jinému účelu. 356 00:24:39,340 --> 00:24:41,520 Tam je, že existuje trade-off. 357 00:24:41,520 --> 00:24:44,510 Tyto vlastnosti, které jsou určeny pro interaktivní použití 358 00:24:44,510 --> 00:24:46,920 opravdu malou nebo žádnou použití pro skriptování. 359 00:24:46,920 --> 00:24:52,160 Je možné použít interaktivní sub-shell, stejně jako ten, že jsem začal 360 00:24:52,160 --> 00:24:57,780 vyzkoušet příkazy, které chcete použít ve skriptu. 361 00:24:57,780 --> 00:25:01,180 To je to, co nemůžete udělat s perl. Můžete to udělat s granáty. 362 00:25:01,180 --> 00:25:04,850 Dokonce i struktury jako pro smyčky a tak dále lze spustit interaktivně. 363 00:25:04,850 --> 00:25:07,000 Jsou užitečné pro občas interaktivně, 364 00:25:07,000 --> 00:25:10,180 ale více pravděpodobné, že používáte jim rozvíjet skript. 365 00:25:15,690 --> 00:25:17,400 >> Aliasy. 366 00:25:17,400 --> 00:25:21,630 To bude asi C-shell. 367 00:25:23,270 --> 00:25:27,570 Historie mechanismus, kde se dostanete zpět do dřívějších příkazů 368 00:25:27,570 --> 00:25:30,340 nebo jejich části, které jste již spustili. 369 00:25:30,340 --> 00:25:33,680 Opět platí, že o C-shell, shell Bourne a Korn shell mají tyto věci, 370 00:25:33,680 --> 00:25:35,620 ale nehodlám se dostat do nich. 371 00:25:35,620 --> 00:25:40,340 Takže tady jsou některé užitečné aliasy, které mám. 372 00:25:43,100 --> 00:25:44,880 Místo psaní ls - je to běžný příkaz - 373 00:25:44,880 --> 00:25:47,620 jen typ L a ušetřit 1 znak. 374 00:25:47,620 --> 00:25:50,600 ls s různými možnostmi, všechny ty práce. 375 00:25:50,600 --> 00:25:54,460 Všimněte si, že tyto definice mají uvozovky kolem nich. 376 00:25:54,460 --> 00:25:57,520 V těchto případech, uvozovky nejsou nutné. 377 00:25:57,520 --> 00:26:00,100 Pokud můžete definovat ty aliasy bez uvozovek, to by ještě fungovat. 378 00:26:00,100 --> 00:26:02,910 Jsou doporučovány. 379 00:26:02,910 --> 00:26:04,900 Existují situace, ve kterých nelze použít na nabídku 380 00:26:04,900 --> 00:26:08,050 protože chcete, aby se něco stalo, který citát by se zabránit. 381 00:26:08,050 --> 00:26:11,210 Někdy můžete citovat část definice, ale ne všechny z nich. 382 00:26:11,210 --> 00:26:17,010 Je také obecně doporučuje používat apostrofy spíše než dvojité uvozovky. 383 00:26:17,010 --> 00:26:19,750 Uvozovky mají vliv na definice proměnných, 384 00:26:19,750 --> 00:26:22,950 zejména způsobuje, že mají být hodnoceny, než zastavit. 385 00:26:22,950 --> 00:26:25,910 Proč bychom se zastavit hodnocení? 386 00:26:25,910 --> 00:26:28,710 A jak se citace udělat pro nás? 387 00:26:28,710 --> 00:26:32,600 >> Tady je příkaz, který jste mohli najít zajímavé. 388 00:26:32,600 --> 00:26:35,470 "Ls g *" 389 00:26:35,470 --> 00:26:37,640 g *, jak asi víte, je zástupný výraz 390 00:26:37,640 --> 00:26:40,290 pro všechny názvy souborů začínající g. 391 00:26:40,290 --> 00:26:46,410 Kdybych jen napsat na příkaz ls g *, budu si seznam všech těch jmen v mém aktuálním adresáři. 392 00:26:46,410 --> 00:26:50,870 Mám-li definovat, že alias, jak je to tady s citacemi, 393 00:26:50,870 --> 00:26:56,990 to bude fungovat, že příkaz v aktuálním adresáři, kam to běží. 394 00:26:56,990 --> 00:27:01,250 Ale pokud spustíte definici aliasu bez uvozovek, 395 00:27:01,250 --> 00:27:09,620 bude vyhodnocovat zástupný g * při spuštění tohoto definující příkaz. 396 00:27:09,620 --> 00:27:14,400 Takže definice aliasu bude ls následuje seznam souborů v adresáři 397 00:27:14,400 --> 00:27:16,310 ve kterém příkaz alias se spustí, 398 00:27:16,310 --> 00:27:19,180 bez ohledu na to, kde jste skutečně v úmyslu spustit příkaz. 399 00:27:19,180 --> 00:27:26,360 To není k ničemu, a jednoduché uvozovky předcházet vyhodnocení hvězdičkou. 400 00:27:26,360 --> 00:27:30,780 Takže stačí dostat definice bytost ls g *. 401 00:27:30,780 --> 00:27:35,510 Potom při spuštění aliasu, LGS, pak dá to ven. 402 00:27:35,510 --> 00:27:40,490 Nyní nejsou žádné citace, a to bude vyhodnocovat hvězdičku při spuštění příkazu alias. 403 00:27:40,490 --> 00:27:43,900 Takže to je jedna věc. 404 00:27:43,900 --> 00:27:46,590 Uvozovky bude mít ten stejný efekt zde, 405 00:27:46,590 --> 00:27:50,580 ale existují i ​​jiné případy, kdy dvojité uvozovky nebude fungovat tak dobře. 406 00:27:50,580 --> 00:27:52,450 >> Tady je ještě jeden. 407 00:27:52,450 --> 00:27:54,270 Možná víte, příkaz grep. 408 00:27:54,270 --> 00:28:02,110 Příkaz grep může být použit ke kontrole souboru řádky, které mají některé řetězce. 409 00:28:02,110 --> 00:28:10,350 Takže pojďme sem a budu opustit mé Bourne shellu. 410 00:28:23,570 --> 00:28:25,450 Dobře. Zde je soubor. 411 00:28:25,450 --> 00:28:31,490 Řekněme, že je to grep abc řetězce. Tady to je. 412 00:28:31,490 --> 00:28:37,930 Pokud se mi grep zddd, jsem si nic. Dobře. 413 00:28:37,930 --> 00:28:40,960 Tak to najde řetězec, hlásí, že nenajde, není to nahlásit. 414 00:28:40,960 --> 00:28:44,930 To výstupy libovolný řádek, který má tento řetězec na něj. 415 00:28:44,930 --> 00:28:49,080 Tam jsou všechny druhy možností, které zde můžete nalézt v dokumentaci. 416 00:28:49,080 --> 00:28:52,160 Tady je jeden způsob, jak to udělat. 417 00:28:52,160 --> 00:29:03,290 Co o této jedné, alias grabc "grep abc"? 418 00:29:03,290 --> 00:29:09,000 To bude zahrnovat jeden argument, když je definován alias. 419 00:29:09,000 --> 00:29:26,300 Takže pokud jsem to udělat tady, teď když to udělám grabc, 420 00:29:26,300 --> 00:29:30,620 Nyní alias obsahuje více než jednoduchým příkazem. To je také argument. 421 00:29:30,620 --> 00:29:32,190 Zatím to funguje. 422 00:29:32,190 --> 00:29:38,590 Mám jiný příkaz tady, tuhle, tak ty jsou různé řetězce tam 423 00:29:38,590 --> 00:29:46,790 a ukázat, že to není nic, co by tam, protože to neodpovídá. 424 00:29:46,790 --> 00:29:56,180 >> Co když budu chtít zahrnout do definice aliasu soubor, který Jdu hledat 425 00:29:56,180 --> 00:30:02,970 a chci dát jako argument alias řetězec, který jsem hledal? 426 00:30:02,970 --> 00:30:08,040 Bych chtěl říci, abc jako argument k mému alias, 427 00:30:08,040 --> 00:30:10,870 ale alias již stanoven soubor. 428 00:30:10,870 --> 00:30:15,710 A to je místo, kde tento výraz vypovídací 429 00:30:20,430 --> 00:30:25,270 Všimněte si, zde máme grep, stejně jako předtím. 430 00:30:25,270 --> 00:30:28,130 Máme soubor zde, řetězce. 431 00:30:28,130 --> 00:30:35,610 \! ^, Trochu zvláštní výraz, myslím, pokud jste ho ještě neviděli předtím. 432 00:30:35,610 --> 00:30:39,920 Vykřičník je součástí historie mechanismu C-shell. 433 00:30:39,920 --> 00:30:45,220 To může vyvolat předchozích příkazů, může vyvolat argumenty těchto příkazů, a tak dále. 434 00:30:46,760 --> 00:31:01,570 Mechanismus historie se používá jako součást aliasingu. 435 00:31:01,570 --> 00:31:07,390 Pokud zadáte řádek po vykřičník, bude odkazovat na tento řádek v seznamu historie, 436 00:31:07,390 --> 00:31:11,910 které nebudeme se dostat do teď, protože je to úplně jiný téma. 437 00:31:11,910 --> 00:31:16,280 Je možné zadat část linky. 438 00:31:16,280 --> 00:31:22,950 Takže! 03:02 bude druhý argument z příkazové číslo 3. 439 00:31:22,950 --> 00:31:30,430 Stříška zde v tomto výrazu je zkratka pro první argument. 440 00:31:30,430 --> 00:31:34,410 Pokud nechcete, aby to označení, které příkazu máte na mysli, 441 00:31:34,410 --> 00:31:37,300 se vztahuje k bezprostředně předchozí příkaz, 442 00:31:37,300 --> 00:31:41,990 a stříška je symbol pro první argument. 443 00:31:41,990 --> 00:31:46,820 Vzhledem k tomu, že je stříška a ne číslo, nemusíte používat tlustého střeva, 444 00:31:46,820 --> 00:31:52,660 tak! ^ znamená, že první argument na předchozí příkaz. 445 00:31:52,660 --> 00:31:55,020 Trochu popletl zde. 446 00:31:55,020 --> 00:31:58,450 V tomto případě, když se použijí jako definici aliasu, 447 00:31:58,450 --> 00:32:04,650 reference historie odkazuje na příkazy, v nichž se používá alias. 448 00:32:04,650 --> 00:32:08,470 Tak to se vrací 1 příkaz jako operace historie, 449 00:32:08,470 --> 00:32:11,810 ale jako operace alias odkazuje na příkaz, ve kterém byste zadali, 450 00:32:11,810 --> 00:32:14,780 říci, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Máme uvozovky zde v něm. Co je zpětné lomítko pro? 452 00:32:20,240 --> 00:32:30,810 V tomto případě, stejně jako kdekoliv jinde, nechceme spouštět mechanismus historie 453 00:32:30,810 --> 00:32:33,680 při definování alias. 454 00:32:33,680 --> 00:32:37,900 Pokud bychom neměli zpětné lomítko tam, shell by vytáhnout v prvním argumentu 455 00:32:37,900 --> 00:32:41,870 příkazu těsně předtím, než ho spustili tento alias příkazu, což nechceme. 456 00:32:41,870 --> 00:32:47,520 Chceme, aby to bylo postaveno v příkazu alias volat na argumentu později. 457 00:32:47,520 --> 00:32:53,550 Jednotlivé citace neunikli vykřičník, odkaz historii. 458 00:32:53,550 --> 00:32:57,450 Možná víte, že výraz útěk znamená změnit význam něčeho. 459 00:32:57,450 --> 00:33:00,260 V tomto případě, to znamená, že se něco zastavit od mít zvláštní význam. 460 00:33:00,260 --> 00:33:03,030 Zvláštní význam vykřičník je historie. 461 00:33:03,030 --> 00:33:05,790 Útěk a nemá to smysl. 462 00:33:05,790 --> 00:33:08,080 Citáty nedělejte to, zpětné lomítko dělá. 463 00:33:08,080 --> 00:33:11,900 Takže jsme vlastně pomocí 2 úrovní uniknout zde. 464 00:33:23,500 --> 00:33:29,620 Chystám se přesunout tento příkaz do jiného okna, aniž by napsáním 465 00:33:29,620 --> 00:33:35,210 pomocí těchto editačních operací, které můžete najít užitečné. 466 00:33:40,620 --> 00:33:42,460 Něco, co tu ještě ukážu vám. 467 00:33:42,460 --> 00:33:46,730 Pokud stačí zadat alias bez argumentů, to vám řekne všechny své argumenty. 468 00:33:46,730 --> 00:33:48,640 To je banda aliasů už jsem tady měl 469 00:33:48,640 --> 00:33:53,400 kromě těch, které jsem používal dnes. 470 00:33:53,400 --> 00:34:00,220 Ale když jsem typ s názvem aliasu, to mi říká, co to znamená. 471 00:34:00,220 --> 00:34:03,390 Všimněte si, že uvozovky jsou pryč a zpětné lomítko je pryč. 472 00:34:03,390 --> 00:34:08,620 Tento řetězec je zde výsledkem této definice aliasu, 473 00:34:08,620 --> 00:34:12,199 a teď to má jen! ^ v něm. 474 00:34:12,199 --> 00:34:19,150 To bude vypadat v řetězcích souborů pro cokoliv. 475 00:34:19,150 --> 00:34:34,900 Takže pokud jsem to grstrings_file řetězce, nechtěl jsem, aby to nic hledat tam, 476 00:34:34,900 --> 00:34:37,429 ale to vypadá v řetězcích. 477 00:34:37,429 --> 00:34:42,330 To nenašel slovo řetězce v řetězci souborů, ale to se najít abc. 478 00:34:42,330 --> 00:34:46,770 A to nenajde to. 479 00:34:46,770 --> 00:34:52,330 Tak tady dáváme argument, který zasáhne do definice aliasu, 480 00:34:52,330 --> 00:34:55,530 , která je vložena do něj. 481 00:34:55,530 --> 00:34:58,540 To je místo, kde tento výraz pochází. 482 00:34:58,540 --> 00:35:00,240 Můžete použít více než jeden. 483 00:35:00,240 --> 00:35:03,170 Stříška je symbol pro první argument. 484 00:35:03,170 --> 00:35:07,510 Pokud byste chtěli použít druhý argument, byste pak řekl: 2. 485 00:35:07,510 --> 00:35:11,250 Neexistuje žádný speciální symbol pro druhý argument. 486 00:35:11,250 --> 00:35:14,790 A protože jste pomocí číslice, měli byste použít dvojtečku. 487 00:35:14,790 --> 00:35:17,220 Tam je, nicméně, další možnost zde. 488 00:35:17,220 --> 00:35:21,220 Znak dolaru stojí za poslední argument. 489 00:35:21,220 --> 00:35:23,320 A protože je to symbol, můžete vynechat dvojtečku. 490 00:35:23,320 --> 00:35:25,870 Tak to by bylo poslední argument v seznamu. 491 00:35:25,870 --> 00:35:27,900 A je tu také, že jeden. 492 00:35:27,900 --> 00:35:31,380 Hvězdička znamená, že všechny, takže to je kompletní seznam argumentů, 493 00:35:31,380 --> 00:35:35,150 a znovu, můžete vynechat dvojtečku, protože to není číslice. 494 00:35:36,970 --> 00:35:39,950 Doufám, že jste všichni pozorovat všechno. 495 00:35:39,950 --> 00:35:54,100 >> Mechanismus historie může vrátit do dřívější řádky v seznamu historie. 496 00:35:54,100 --> 00:36:01,370 Dalo by se to udělat v definici aliasu. 497 00:36:01,370 --> 00:36:02,950 Nikdy jsem neviděl to udělat. 498 00:36:02,950 --> 00:36:05,840 To by mělo za následek vytahování dřívější příkazy ze seznamu historie 499 00:36:05,840 --> 00:36:08,130 Při spuštění alias, které by mohly být různé příkazy 500 00:36:08,130 --> 00:36:11,240 v závislosti na tom, kdy a kde jste jej spustit. 501 00:36:11,240 --> 00:36:14,020 Tím pádem budete chtít vytáhnout takový odkaz 502 00:36:14,020 --> 00:36:15,900 Jen vědět, co dříve byl příkaz. 503 00:36:15,900 --> 00:36:17,280 Nikdy jsem neviděl to stalo. 504 00:36:17,280 --> 00:36:19,970 Myslím, že by někdo mohl chtít, ale je to velmi nepravděpodobné. 505 00:36:19,970 --> 00:36:26,480 Tam je další věc, kterou zde. 506 00:36:26,480 --> 00:36:33,060 Pokud použijete tuto historii, typové označení, 507 00:36:33,060 --> 00:36:38,190 pak jsou použity pouze argumenty, které tam je takový odkaz. 508 00:36:38,190 --> 00:36:42,180 Máte-li definici aliasu, který nepoužívá odkaz historii typu, 509 00:36:42,180 --> 00:36:44,060 v případě, že se stane jen začátek příkazu 510 00:36:44,060 --> 00:36:46,520 a máte další argumenty, pak něco napíšete, že po 511 00:36:46,520 --> 00:36:48,450 bude přidána do příkazu. 512 00:36:48,450 --> 00:36:52,040 V tomto případě, příklad jsem tam dal, jsme použili první argument; 513 00:36:52,040 --> 00:36:54,610 jsme nepoužili žádné jiné. 514 00:36:54,610 --> 00:36:57,960 Kdyby byla dána další argumenty na příkazovém řádku, které by neměly být používány. 515 00:36:57,960 --> 00:37:04,630 Takže pokud použijete odkaz historii vůbec, pak musíte použít, aby se žádný argument. 516 00:37:04,630 --> 00:37:11,310 >> Je tu další věc, kterou zde chci jen zmínit, částečně v závorkách, 517 00:37:11,310 --> 00:37:15,250 a to, že tato historie mechanismus s vykřičníkem 518 00:37:15,250 --> 00:37:18,010 vrátí do původního C-shell. 519 00:37:18,010 --> 00:37:27,060 Tcsh představil historii operací 520 00:37:27,060 --> 00:37:30,910 které používají nejrůznější příkazy a řetězce z redaktorů, 521 00:37:30,910 --> 00:37:33,650 buď Emacs nebo vi. 522 00:37:33,650 --> 00:37:36,430 Můj osobní názor je Emacs je mnohem jednodušší použít pro tento účel 523 00:37:36,430 --> 00:37:39,390 i když vi použít pro své pravidelné úpravy. 524 00:37:39,390 --> 00:37:43,900 Existují různé Emacs příkazy, které jsou nyní upraveny v historii. 525 00:37:43,900 --> 00:37:46,410 Ovládací P dostane předchozí řádek v seznamu historie. 526 00:37:46,410 --> 00:37:48,840 Další Control P se dostanete ten před tím. 527 00:37:48,840 --> 00:37:50,540 Šipka nahoru dělá totéž. 528 00:37:50,540 --> 00:37:54,190 Ovládací N dostane další příkaz, pokud jste již posouvat zpět některé způsoby. 529 00:37:54,190 --> 00:37:55,880 Šipka dolů dělá to taky. 530 00:37:55,880 --> 00:38:00,480 Můžete se pohybovat zleva doprava s šipkami a různé jiné věci. 531 00:38:00,480 --> 00:38:02,390 To mohou využít mechanismu historie 532 00:38:02,390 --> 00:38:05,070 mnohem jednodušší, než pomocí bodu syntaxe vykřičník, 533 00:38:05,070 --> 00:38:07,930 ale nebude používat, že v definici aliasu. 534 00:38:17,780 --> 00:38:20,020 Půjdeme přes to někdy jindy. 535 00:38:24,300 --> 00:38:25,810 >> Proměnné. 536 00:38:26,880 --> 00:38:29,510 Víš, co proměnné jsou v programovacích jazycích. 537 00:38:29,510 --> 00:38:31,680 Nábojnice je mít také. 538 00:38:31,680 --> 00:38:37,350 C-shell používá příkaz set přiřadit proměnné, 539 00:38:37,350 --> 00:38:41,360 tak, že nastaví proměnné A na hodnotu b - 540 00:38:41,360 --> 00:38:46,390 jak už jsem řekl, k ničemu definici, ale ilustraci toho, jak je tento používán. 541 00:38:48,790 --> 00:38:52,410 Příkaz set vytvoří proměnnou, pokud již neexistuje. 542 00:38:55,270 --> 00:39:02,490 Poziční parametry pro shell skriptů lze považovat za proměnné, 543 00:39:02,490 --> 00:39:10,750 ale využití z nich, a pravidla pro ně jsou poněkud odlišné. 544 00:39:10,750 --> 00:39:14,320 Nemůžete přiřadit hodnotu $ 1 v průběhu skriptu. 545 00:39:14,320 --> 00:39:18,340 Budete muset definovat novou proměnnou pro tento účel, pokud někteří z vás chtěl. 546 00:39:23,000 --> 00:39:28,470 Zadejte sada bez argumentů a dostanete seznam všech aktuálně definovaných proměnných. 547 00:39:28,470 --> 00:39:34,220 A pojďme na mé další shell tady a uvidíme, co dostaneme, pokud budeme dělat, že. 548 00:39:34,220 --> 00:39:37,110 Poměrně dlouhý seznam tam, že jo? 549 00:39:37,110 --> 00:39:40,990 Vyberte si trochu. Podívejte se na vše, co. 550 00:39:40,990 --> 00:39:44,330 Některé z těchto věcí jsou automaticky definovány shellu. 551 00:39:44,330 --> 00:39:49,320 Skořepina vytvoří proměnnou a dává mu hodnotu. 552 00:39:49,320 --> 00:39:52,730 Některé z nich jsou definovány pláště, ale pak se znovu definovat uživatel 553 00:39:52,730 --> 00:39:54,820 podle svých preferencí. 554 00:39:54,820 --> 00:39:59,110 A některé z nich jsou vytvořeny uživatelem v závislosti na tom, co dělá, že den. 555 00:39:59,110 --> 00:40:01,880 To je jen nastavit bez argumentů. 556 00:40:06,920 --> 00:40:10,050 Je tu zvláštní vlastnost tady na téhle věci. 557 00:40:10,050 --> 00:40:17,980 Tam musí být mezi rovnítka a název proměnné buď bez mezer 558 00:40:17,980 --> 00:40:23,700 a hodnotu nebo prostory na obou stranách rovnítka, 559 00:40:23,700 --> 00:40:28,940 jako v tomto jednom. 560 00:40:35,620 --> 00:40:41,340 To nebude fungovat, a to je vlastně platný příkaz 561 00:40:41,340 --> 00:40:43,390 ale to nebude dělat to, co máte v úmyslu. 562 00:40:43,390 --> 00:40:50,070 Tento příkaz bude fungovat, protože pokud jste právě říkají, nastavit a názvu proměnné 563 00:40:50,070 --> 00:40:54,890 s žádné rovnítko, nebo nastavit, a název proměnné s rovnítkem a žádná hodnota, 564 00:40:54,890 --> 00:40:57,770 bude to nastavit proměnnou na hodnotu null. 565 00:40:57,770 --> 00:41:00,120 Takže nastavení = je platný příkaz. 566 00:41:00,120 --> 00:41:04,370 Příkaz set lze definovat více než 1 proměnnou na stejném řádku. 567 00:41:04,370 --> 00:41:11,240 Takže tento příkaz zde má vliv na definování A i B na hodnoty null. 568 00:41:11,240 --> 00:41:13,470 Pravděpodobně není to, co chcete. 569 00:41:13,470 --> 00:41:17,940 Tenhle tady bylo zmíněno dříve, povede k chybě 570 00:41:17,940 --> 00:41:21,270 protože = b není platný výraz. 571 00:41:21,270 --> 00:41:23,680 Název proměnné nesmí začínat znakem rovnítka. 572 00:41:26,760 --> 00:41:29,080 A tam jsou ty další věci tady. 573 00:41:29,080 --> 00:41:36,820 V dvojtečky byly použity pro výběr argumentů z historie linek, 574 00:41:36,820 --> 00:41:41,210 a mohou být použity - a já jsem nešel do před - měnit ty věci. 575 00:41:41,210 --> 00:41:44,480 Mohou být také použity k úpravě shell proměnné. 576 00:41:44,480 --> 00:41:49,050 Tenhle, $, má hodnotu. 577 00:41:49,050 --> 00:41:55,040 : R bude startovat rozšíření. 578 00:41:55,040 --> 00:41:57,200 Rozšíření bude něco po bodu, 579 00:41:57,200 --> 00:41:59,200 dot a něco po ji na konec souboru, 580 00:41:59,200 --> 00:42:03,230 pouze na konci seznamu po posledním lomítkem. 581 00:42:03,230 --> 00:42:05,480 Tak jsem si to tady. 582 00:42:05,480 --> 00:42:10,730 je to, že. To bude klesat. O. 583 00:42:10,730 --> 00:42:16,510 Pokud není rozšíření, pouze cestami po posledním lomítkem, bude to mít žádný vliv. 584 00:42:16,510 --> 00:42:27,480 : h, že proměnná výraz, bude startovat poslední prvek seznamu adresářů, 585 00:42:27,480 --> 00:42:29,660 opět až po posledním lomítkem. 586 00:42:29,660 --> 00:42:33,160 So / a / b / c se / a / b, 587 00:42:33,160 --> 00:42:38,870 ale tohle se změní, protože prvek po seznamu je null. 588 00:42:38,870 --> 00:42:43,070 Zde je něco, co chci také zdůraznit. 589 00:42:43,070 --> 00:42:46,770 Tyto kvalifikátory nemají hledat existenci těchto souborů. 590 00:42:46,770 --> 00:42:48,910 Oni se jen podívat na řetězce. 591 00:42:48,910 --> 00:42:54,520 Ty jsou určeny k manipulaci s názvy souborů, cestami, 592 00:42:54,520 --> 00:42:57,520 ale mohou být použity na jakýkoli řetězec, i když to není název souboru. 593 00:42:57,520 --> 00:42:58,920 A oni nevypadají na existenci, 594 00:42:58,920 --> 00:43:03,550 takže v případě, že to není takový soubor, / / ​​b / c, to bude ještě pracovat. 595 00:43:03,550 --> 00:43:06,930 Ať už je to k ničemu, je jiná otázka, ale to bude ještě pracovat. 596 00:43:06,930 --> 00:43:12,850 Proměnné jsou odlišné ve skořápkách Bourne. K tomu se dostaneme později. 597 00:43:12,850 --> 00:43:18,240 Znak dolaru lze zrušit stejně jako vykřičníkem a hvězdičkou. 598 00:43:18,240 --> 00:43:21,760 Znak dolaru může být unikl s lomítkem nebo apostrofy. 599 00:43:21,760 --> 00:43:24,790 Uvozovky mají podivný účinek ve všech mušlí 600 00:43:24,790 --> 00:43:28,690 nutit hodnocení dolaru podepsat variabilní exprese. 601 00:43:28,690 --> 00:43:31,960 Takže pokud to je unikl jeden způsob, jak je možné, že dvojité uvozovky mít za následek 602 00:43:31,960 --> 00:43:34,380 způsobit, že mají být hodnoceny stejně. 603 00:43:34,380 --> 00:43:37,090 To je trochu matoucí. 604 00:43:37,090 --> 00:43:43,740 Pokud existuje více úrovní uniknout, jako je například apostrofy uvnitř uvozovek 605 00:43:43,740 --> 00:43:46,770 nebo dvojité uvozovky uvnitř apostrofů, měli byste vyzkoušet, aby viděli, co se bude dít 606 00:43:46,770 --> 00:43:49,520 proměnné, pokud používáte jeden. 607 00:43:49,520 --> 00:43:53,410 Tyto dvě situace - dvojitý uvnitř z jednoho, jediného vnitřní dvojitý - 608 00:43:53,410 --> 00:43:55,980 nemusí nutně dát stejný výsledek. 609 00:44:02,520 --> 00:44:05,600 Proměnné prostředí, vázané C-shell proměnné. 610 00:44:05,600 --> 00:44:08,340 Proměnné prostředí jsou také proměnné v C-shellu, 611 00:44:08,340 --> 00:44:11,250 a jsou také proměnné v jiných mušlí taky. 612 00:44:11,250 --> 00:44:15,230 V C-shell, jsou odlišné sady. 613 00:44:15,230 --> 00:44:18,130 To, co jsem říkal předtím, než se o proměnných shellu. 614 00:44:18,130 --> 00:44:21,300 Proměnné prostředí jsou zřetelné soubor proměnných 615 00:44:21,300 --> 00:44:28,650 s výjimkou několika proměnných, které nazýváme vázané proměnné, 616 00:44:28,650 --> 00:44:30,640 které jsou velmi důležité a budeme se dostat do těch později. 617 00:44:30,640 --> 00:44:34,950 Proměnné prostředí jsou automaticky předávány 618 00:44:34,950 --> 00:44:41,800 do skořápky nebo příkazy, které jsou spouštěny z vašeho shellu. 619 00:44:41,800 --> 00:44:46,220 Ostatní věci nejsou. Proměnné shellu, aliasy nejsou. Proměnné prostředí jsou. 620 00:44:46,220 --> 00:44:48,630 To je důvod, proč jim říkáme proměnné prostředí, 621 00:44:48,630 --> 00:44:55,030 Myšlenka je, že životní prostředí rozšiřuje minulosti jen vaše aktuální shellu. 622 00:44:55,030 --> 00:45:00,510 Mohou být použity pro definování věci příkazy. 623 00:45:00,510 --> 00:45:05,470 Zde je příklad. PRINTER, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Obě tyto proměnné lze definovat tiskárnu, která příkaz bude používat k tisku věci. 625 00:45:12,270 --> 00:45:16,500 Pokud máte více tiskáren kolem sebe, možná budete chtít, aby se vám líbí. 626 00:45:16,500 --> 00:45:21,320 Důvod, proč máme 2 proměnných je to, že byly napsány různé sady příkazů 627 00:45:21,320 --> 00:45:23,870 Pomocí těchto různých proměnných. 628 00:45:23,870 --> 00:45:25,910 Dalo by se jim různé hodnoty. 629 00:45:25,910 --> 00:45:28,860 S největší pravděpodobností budete jim oba stejnou hodnotu. 630 00:45:28,860 --> 00:45:35,840 Tyto věci fungují, protože příkazy, které dělají tisku 631 00:45:35,840 --> 00:45:40,740 byly naprogramovány tak, aby zkoumat hodnoty těchto proměnných. 632 00:45:42,200 --> 00:45:46,150 Pokud program nepsal takhle, kdyby bylo napsáno něco jiného, 633 00:45:46,150 --> 00:45:48,280 proměnná bude irelevantní. 634 00:45:48,280 --> 00:45:52,530 Takže operační systém se nedívá na těchto proměnných 635 00:45:52,530 --> 00:45:55,210 pokaždé, když se odkazují na tiskárně. 636 00:45:55,210 --> 00:45:59,090 Příkaz, který dělá tisk hledá těchto proměnných, pokud je naprogramován tak. 637 00:46:11,030 --> 00:46:15,240 Tyto proměnné jsou často definovány ve svých konfiguračních souborech 638 00:46:15,240 --> 00:46:19,440 , ale ne nezbytně. 639 00:46:19,440 --> 00:46:21,050 Můžete definovat je na příkazovém řádku. 640 00:46:21,050 --> 00:46:24,090 Mohou být definovány v příkazu. 641 00:46:24,090 --> 00:46:28,740 Příkaz, který spouští něco, co může mít svůj vlastní výběr proměnných - 642 00:46:28,740 --> 00:46:32,390 proměnných, které jsou specifické pro konkrétní softwarový balík, například. 643 00:46:32,390 --> 00:46:36,740 Budou definovány při spuštění balík. 644 00:46:39,690 --> 00:46:42,680 Jak jsou tyto proměnné předávány sub-shell? 645 00:46:42,680 --> 00:46:48,210 Když je napsán sub-shell, to nezapisuje do této oblasti. 646 00:46:48,210 --> 00:46:53,260 Oblast sub-shell, který je věnován proměnných prostředí 647 00:46:53,260 --> 00:46:56,450 není napsaný sub-shell, to napsal kopírování. 648 00:46:56,450 --> 00:47:00,530 Při spuštění obyčejný příkaz, jako například tyto příkazy vytisknout nebo cokoliv, 649 00:47:00,530 --> 00:47:03,840 se začít tím, že vytvoří nový shell. 650 00:47:03,840 --> 00:47:06,190 Skořepina vytvoří shell a pak přepíše jeho část 651 00:47:06,190 --> 00:47:08,800 s příkazem, že jste se systémem, který je trochu matoucí, 652 00:47:08,800 --> 00:47:10,740 ale to, jak se tyto příkazy získat proměnné prostředí 653 00:47:10,740 --> 00:47:14,890 které pak odkazují na později. 654 00:47:21,920 --> 00:47:28,010 Příkaz zde pro definování proměnné setenv. 655 00:47:28,010 --> 00:47:36,470 To je, jak to definovat. Je to 3 prvky: setenv, variabilní, hodnota. 656 00:47:36,470 --> 00:47:44,710 Pokud jste prostě setenv bez argumentů, co dostanete? 657 00:47:47,220 --> 00:47:48,810 Seznam všech těchto proměnných. 658 00:47:48,810 --> 00:47:53,190 Opět, je to pěkný dlouhý seznam, a v tomto případě, stejně jako v ostatních, 659 00:47:53,190 --> 00:47:57,320 Tyto proměnné jsou definovány převážně mého přihlášení provozu samotné nádrže 660 00:47:57,320 --> 00:47:59,740 spíše než cokoliv, co jsem udělal. 661 00:47:59,740 --> 00:48:03,580 Je tu další příkaz tady, printenv. 662 00:48:07,520 --> 00:48:10,340 To také vytiskne na životní prostředí. 663 00:48:10,340 --> 00:48:15,240 Všimněte si, to poslední, co zde, EDITOR = vi. 664 00:48:15,240 --> 00:48:21,120 To říká, že pokud budu používat něco, co volá editor 665 00:48:21,120 --> 00:48:25,530 a já neurčíte editor a umožňuje mi na výběr, může mi dát vi. 666 00:48:25,530 --> 00:48:37,280 Co když udělám printenv EDITOR? To mi říká, že to, co to je. 667 00:48:37,280 --> 00:48:41,340 Těsně předtím, než to, že tam byl variabilní, LESS. 668 00:48:41,340 --> 00:48:46,040 To jsou vaše možnosti výchozí hodnoty, když jsem spuštění MÉNĚ příkaz, 669 00:48:46,040 --> 00:48:49,360 který zobrazuje soubory. 670 00:48:49,360 --> 00:48:55,910 Takže když jsem to udělal, printenv může trvat jeden argument nebo 0 argumenty, 671 00:48:55,910 --> 00:48:58,070 ne více než 1. 672 00:49:01,800 --> 00:49:05,690 Existují i ​​další příkazy také, ale nebudeme se dostat do vší té dnešní. 673 00:49:05,690 --> 00:49:11,010 Pamatujte si, že byly modifikátory pro proměnné shellu jako: h, 674 00:49:11,010 --> 00:49:14,350 které klesne na poslední prvek cestu ke složce, 675 00:49:14,350 --> 00:49:17,950 nebo: r, což sníží rozšíření. 676 00:49:17,950 --> 00:49:23,110 Ti, kteří nyní platí pro proměnné prostředí příliš. Oni nejsou zvyklí. 677 00:49:23,110 --> 00:49:24,960 To bylo, že nemůže být modifikován. Nyní mohou být. 678 00:49:24,960 --> 00:49:29,190 Je to jeden ze záloh s vývojem skořápek v průběhu let. 679 00:49:29,190 --> 00:49:35,620 Říkal jsem, že skořápky jako součást prostředí, 680 00:49:35,620 --> 00:49:43,040 a shell proměnné v C-shellu jsou, až na některé výjimky, různých sad. 681 00:49:43,040 --> 00:49:46,790 Můžete vytvořit proměnnou prostředí a shell proměnnou se stejným názvem. 682 00:49:46,790 --> 00:49:49,220 Budou různé proměnné, které mohou mít různé hodnoty. 683 00:49:49,220 --> 00:49:53,090 Změna hodnoty jednoho nezmění hodnotu druhé. 684 00:49:53,090 --> 00:49:58,070 Tyto proměnné jsou hodnoceny s znak dolaru - $, $ cokoliv. 685 00:49:58,070 --> 00:50:02,340 Takže to, co máte tohle? Víte, který z nich dostanete? 686 00:50:02,340 --> 00:50:04,520 V mých testech jsem proměnnou shellu, 687 00:50:04,520 --> 00:50:07,240 ale to není zdokumentováno a můžete se spolehnout na to. 688 00:50:07,240 --> 00:50:10,270 Tak jsem se vás zeptat, je vytváření shellu a proměnné prostředí 689 00:50:10,270 --> 00:50:13,490 se stejnými názvy dobrý nápad? No jo. 690 00:50:13,490 --> 00:50:17,460 Jaké jsou ty hlavní výjimky, které životní prostředí a proměnné shellu 691 00:50:17,460 --> 00:50:19,860 jsou navzájem propojeny? 692 00:50:19,860 --> 00:50:27,470 K dispozici jsou tyto 4. 693 00:50:32,030 --> 00:50:35,510 Velké písmeno TERM proměnná prostředí, 694 00:50:35,510 --> 00:50:41,540 shell variabilní termín malými písmeny, typ emulace terminálu. 695 00:50:41,540 --> 00:50:47,430 Jen jsem jít sem, a budu dělat ozvěnu, užitečný příkaz tady, 696 00:50:47,430 --> 00:50:52,560 $ TERM $ termín. A tam. 697 00:50:52,560 --> 00:51:00,570 xterm je typ terminálu pro okna zobrazená v X Window System. 698 00:51:00,570 --> 00:51:04,330 xterm-color je varianta, že umožňuje různé barvy. 699 00:51:04,330 --> 00:51:06,580 Proč bychom definovat ty? Co je to dobré? 700 00:51:06,580 --> 00:51:09,740 Příkazy, které změnit uspořádání obrazovky, podobně jako v editoru 701 00:51:09,740 --> 00:51:13,680 Poslat konkrétní sekvence, tzv. escape sekvence, 702 00:51:13,680 --> 00:51:18,160 na terminálu nebo v okně, aby se uspořádání, a tak dále. 703 00:51:18,160 --> 00:51:20,990 Tyto sekvence jsou různé pro různé typy terminálů. 704 00:51:20,990 --> 00:51:23,100 To je, které z nich použít řekne. 705 00:51:23,100 --> 00:51:25,900 Někdy tam jsou problémy tam. 706 00:51:25,900 --> 00:51:28,600 Možná budete chtít změnit. 707 00:51:28,600 --> 00:51:30,780 Pokud věci nefungují, někdy i typ terminálu je nastaven špatně, 708 00:51:30,780 --> 00:51:36,440 můžete být schopni opravit předefinování pojmu proměnné. 709 00:51:36,440 --> 00:51:43,420 V těchto případech, změna jedné proměnné, proměnné prostředí nebo proměnné shellu, 710 00:51:43,420 --> 00:51:45,970 by se mělo změnit na druhou. 711 00:51:45,970 --> 00:51:50,970 Zjistil jsem, na základě zkušeností, které mění výraz v velkými písmeny 712 00:51:50,970 --> 00:51:54,060 nemusí vždy změnit shell proměnnou termín malými písmeny. 713 00:51:54,060 --> 00:51:55,550 To je chyba. 714 00:51:55,550 --> 00:51:59,400 Nevím, jestli je to vždy pravda. Většinu času to není pravda, ale to může být. 715 00:51:59,400 --> 00:52:02,490 Takže pokud uděláte změnu, stačí zkontrolovat, že ven. 716 00:52:02,490 --> 00:52:05,830 Nestává se často, že budete muset změnit tuto hodnotu, ale jednou za čas, co děláte. 717 00:52:05,830 --> 00:52:08,260 Proměnná prostředí USER. 718 00:52:08,260 --> 00:52:12,070 Opět platí, že proměnná prostředí hůlkovým písmem, shell proměnné malými písmeny. 719 00:52:12,070 --> 00:52:13,710 Toto je vaše uživatelské jméno. 720 00:52:13,710 --> 00:52:16,730 Je to pouze za velmi výjimečných okolností 721 00:52:16,730 --> 00:52:18,420 že byste chtěli změnit. 722 00:52:18,420 --> 00:52:22,350 Pokud je vaše uživatelské jméno je někdo jiný, je možné házet všechny druhy věcí pryč. 723 00:52:22,350 --> 00:52:26,040 Domovský adresář, domovský adresář uživatele. 724 00:52:26,040 --> 00:52:28,060 Opět platí, že byste nechtěli změnit. 725 00:52:28,060 --> 00:52:32,260 Všimněte si, ve všech těchto případech a ten, který se chystáme na pokrytí proměnné PATH, 726 00:52:32,260 --> 00:52:37,070 Proměnná prostředí je velkými písmeny a vázaná proměnná shellu je malými písmeny. 727 00:52:37,070 --> 00:52:39,240 Změníte-li jeden, měli byste změnit jiné. 728 00:52:39,240 --> 00:52:45,960 Tento druh vazby nelze stanovit, protože není možné svázat dvě proměnné, 729 00:52:45,960 --> 00:52:50,570 jiné než ty 4 a závazné v těchto proměnných nelze vrátit zpět, 730 00:52:50,570 --> 00:52:52,090 nelze oddělit. 731 00:52:52,090 --> 00:52:55,820 Takže tyto čtyři párů proměnných jsou vázány. 732 00:52:55,820 --> 00:52:59,020 Vždycky bude. Žádné další bude. 733 00:52:59,020 --> 00:53:05,720 Kromě toho by mělo být možné vytvořit proměnné se stejnými názvy 734 00:53:05,720 --> 00:53:07,780 z opačných typů. 735 00:53:07,780 --> 00:53:11,600 Dalo by se udělat shell variabilní termín malými písmeny 736 00:53:11,600 --> 00:53:14,990 nebo proměnná prostředí TERM velkými písmeny. 737 00:53:14,990 --> 00:53:19,040 Tyto proměnné by být nezávislý na těchto párových proměnných 738 00:53:19,040 --> 00:53:20,780 a že by se na sobě nezávislé. 739 00:53:20,780 --> 00:53:23,780 Nedovedu si představit, proč byste si, že pokud chcete mást lidi. 740 00:53:24,600 --> 00:53:29,730 Tenhle, variabilní cesta, je to opravdu důležité. 741 00:53:29,730 --> 00:53:35,550 Další věc je, že tam mohou být případy, 742 00:53:35,550 --> 00:53:40,430 proměnných s podobnými spárován názvy, které nejsou vázány na sebe. 743 00:53:40,430 --> 00:53:45,000 Tam mohou být proměnné, SHELL a shell, velkými a malými písmeny. 744 00:53:45,000 --> 00:53:48,300 Na tomto základě jména, nevíte-li, že proměnná je proměnná shellu 745 00:53:48,300 --> 00:53:51,580 nebo proměnné prostředí, a že to není vázán k sobě. 746 00:53:51,580 --> 00:53:55,300 Takže tento druh párových jmen neznamená vázaných proměnných. 747 00:53:55,300 --> 00:53:58,830 Proměnná cesta, kterou jsem se před zobrazením, 748 00:53:58,830 --> 00:54:01,880 je seznam cestami, ve kterých shell hledá příkazy. 749 00:54:01,880 --> 00:54:12,320 Pojďme se k tomuto oknu tady a budeme dělat echo $ PATH, velká písmena - 750 00:54:12,320 --> 00:54:20,230 Proměnná prostředí - echo $ PATH, malá písmena - shell proměnné. 751 00:54:20,230 --> 00:54:24,980 Všimněte si, že seznam adresářů je stejný. Ty jsou vázány. 752 00:54:24,980 --> 00:54:26,590 Změna jednoho, můžete změnit další. 753 00:54:26,590 --> 00:54:32,970 V proměnné prostředí jsou prvky odděleny dvojtečkami. Všimněte si, že. 754 00:54:32,970 --> 00:54:35,130 Proměnné shell jsou odděleny mezerami. 755 00:54:35,130 --> 00:54:38,760 Tato proměnná prostředí je jeden řetězec. 756 00:54:38,760 --> 00:54:41,480 Proměnná prostředí je pole. 757 00:54:41,480 --> 00:54:43,490 Bourne shell neměla pole. 758 00:54:43,490 --> 00:54:46,600 Bash dělá, ale to je již pevnou součástí pláště. 759 00:54:46,600 --> 00:54:48,660 To je jediný řetězec, a ne pole. 760 00:54:48,660 --> 00:54:50,420 C-shell vždycky pole. 761 00:54:50,420 --> 00:54:52,630 Tato pole jsou mnohem jednodušší pracovat. 762 00:54:52,630 --> 00:54:54,400 Můžete odkazovat na její části. 763 00:54:54,400 --> 00:55:02,350 Takže echo $ path [1], a dostanu / usr / bin, první prvek. 764 00:55:02,350 --> 00:55:09,950 Opět, nezapomeňte dolar znamení je zkratka pro poslední prvek v seznamu historie. 765 00:55:09,950 --> 00:55:16,850 Co se tam děje? Snažil se najít znak dolaru jako variabilní symbol. 766 00:55:16,850 --> 00:55:20,850 I uniknout. Chybička se vloudila. To by se, že buď. 767 00:55:20,850 --> 00:55:23,690 Některé z těchto věcí nefungují tak dobře. 768 00:55:23,690 --> 00:55:28,140 Možná, že budeme jen tak nechat, že ven. 769 00:55:28,140 --> 00:55:36,980 Asterisk se vztahuje na celou věc, ale to je to, co dostanete, pokud neurčíte prvek. 770 00:55:36,980 --> 00:55:46,170 Dalším způsobem, že proměnné pole lze manipulovat, 771 00:55:46,170 --> 00:55:49,500 Počet prvků tam, 7 prvků. 772 00:55:49,500 --> 00:55:53,410 Zde jsme dát křížek před názvem proměnné. 773 00:55:53,410 --> 00:55:58,280 Tady je ještě jeden. Dejte otazník tam. 774 00:55:58,280 --> 00:56:03,170 To je logická hodnota. To znamená, že proměnná existuje. 775 00:56:03,170 --> 00:56:05,160 Je to další způsob, jak pracovat s proměnnými. 776 00:56:05,160 --> 00:56:06,660 To, mimochodem, nemusí být proměnná pole. 777 00:56:06,660 --> 00:56:08,210 To by mohlo být libovolná proměnná. 778 00:56:08,210 --> 00:56:11,840 A když to udělám, že žádná taková proměnná, a já si 0.. 779 00:56:11,840 --> 00:56:14,990 Další maličkost, že o variabilní hodnocení. 780 00:56:23,670 --> 00:56:32,950 Zpět na tenhle tady, pokud z nějakého důvodu chtěl pracovat s tímto 781 00:56:32,950 --> 00:56:37,990 spíše než pracovat s poli, variabilní shell, 782 00:56:37,990 --> 00:56:41,470 tam jsou příkazy, které lze oddělit tyto věci na základě tlustého střeva. 783 00:56:41,470 --> 00:56:44,080 Ve skutečnosti, pokud budete dělat to v Bash shellu možná, 784 00:56:44,080 --> 00:56:47,110 nějaký skript, který by pravděpodobně, jak byste to udělat. 785 00:56:47,110 --> 00:56:50,350 Ale v C-shellu, že je mnohem snazší použít pole. 786 00:56:50,350 --> 00:56:58,250 V Bourne shellu, proměnné jsou přiřazeny jediným výrazem, jako je tento, 787 00:56:58,250 --> 00:57:01,760 jako způsob, jak byste mohli přiřadit proměnnou v programovacím jazyce, 788 00:57:01,760 --> 00:57:05,110 a sem tam nesmí být žádné mezery. 789 00:57:05,110 --> 00:57:09,110 Je to nutné, aby to bylo jen 1 řetězec. 790 00:57:09,110 --> 00:57:14,980 V Bourne typu granátů, všechny proměnné jsou proměnné shellu. 791 00:57:14,980 --> 00:57:19,250 Proměnné prostředí jsou podmnožinou proměnných shellu. 792 00:57:19,250 --> 00:57:24,060 Oni jsou rozlišováni od proměnných non-prostředí exportem. 793 00:57:24,060 --> 00:57:28,860 Příkaz k tomu, že je export, stejně jako export tiskárny. 794 00:57:28,860 --> 00:57:34,930 Pokud bychom měli definovat takové proměnné, 795 00:57:34,930 --> 00:57:38,480 pokud bychom chtěli tiskový příkaz, aby ji najít, mělo by to být proměnná prostředí, 796 00:57:38,480 --> 00:57:40,730 a to jak z něj dělá jeden. 797 00:57:40,730 --> 00:57:42,090 Tady je něco trochu matoucí. 798 00:57:42,090 --> 00:57:50,430 Tento výraz, export do životního prostředí, pochází z této Bourne shell koncepce, 799 00:57:50,430 --> 00:57:54,520 a přesto, že výraz se používá v popisu C-shell, 800 00:57:54,520 --> 00:57:57,920 tam, kde žádný takový příkaz jako export. 801 00:57:57,920 --> 00:58:06,200 Pokud jste právě řekl vývoz sám o sobě, dostanete seznam exportovat - 802 00:58:06,200 --> 00:58:10,620 Takže pokud jsem to export tady, nic takového. 803 00:58:13,620 --> 00:58:15,200 Dobře, jdeme na to. 804 00:58:15,200 --> 00:58:17,010 Tyto věci, mimochodem, jsou také definovány shellu. 805 00:58:17,010 --> 00:58:19,400 Nechtěl jsem definovat některý z nich sám. 806 00:58:19,400 --> 00:58:23,550 Shell dělá spoustu věcí sám. 807 00:58:23,550 --> 00:58:26,650 Je třeba dělat věci automaticky. 808 00:58:30,240 --> 00:58:36,880 V Bash nebo Korn shell, můžete spustit příkaz jako je tento, 809 00:58:36,880 --> 00:58:42,000 které se oba dát proměnnou hodnotu a exportovat je v 1. příkaz. 810 00:58:42,000 --> 00:58:46,150 V Bourne shellu mají být samostatné příkazy, jako je exportovat. 811 00:58:46,150 --> 00:58:48,410 Zde je další aspekt, který je matoucí. 812 00:58:48,410 --> 00:58:52,220 Příkaz set v C-shellu definuje proměnné 813 00:58:52,220 --> 00:58:55,550 a bez argumentů vám řekne, co se hodnoty proměnných "jsou. 814 00:58:55,550 --> 00:59:01,140 V Bash shellu, soubor příkaz bez argumentů dělá totéž, 815 00:59:01,140 --> 00:59:03,580 ale s argumenty, že dělá něco docela jiného. 816 00:59:03,580 --> 00:59:06,200 Tak to jsou různé argumenty zde. 817 00:59:06,200 --> 00:59:10,460 Některé z nich jsou proměnné prostředí, některé z nich jsou proměnné shellu. 818 00:59:10,460 --> 00:59:13,200 Všechny z nich jsou opravdu proměnné shellu. Některé z nich jsou proměnné prostředí. 819 00:59:15,690 --> 00:59:23,920 Příkaz set s argumenty lze použít k ovládání 820 00:59:23,920 --> 00:59:28,220 na poziční parametry skriptu, 821 00:59:28,220 --> 00:59:33,910 což je způsob, jak je všechny najednou. 822 00:59:33,910 --> 00:59:36,150 Nemůžeme opravdu jít do toho dnes. 823 00:59:36,150 --> 00:59:39,580 To může být také použit ke změně chování shell. 824 00:59:39,580 --> 00:59:46,700 Zejména v Bash jsou proměnné, které budou určovat, jak shell chová. 825 00:59:46,700 --> 00:59:51,310 Pak také jen tento jeden příkaz, který jste mohli vidět, tento příkaz. 826 00:59:51,310 --> 00:59:59,050 Vysázet následuje proměnné a typy proměnných se používá v Korn a bash. 827 00:59:59,050 --> 01:00:04,970 Není to povinné, ale může být použit pro omezení hodnoty proměnných, 828 01:00:04,970 --> 01:00:08,400 které mohou být užitečné, aby se zabránilo chybám, a je to docela běžné. 829 01:00:08,400 --> 01:00:11,640 Takže jsem jen zmínit, že v případě, že jste ji vidět někde. 830 01:00:17,290 --> 01:00:19,160 Příkaz kde. 831 01:00:19,160 --> 01:00:22,490 Vzpomínám si, jak již bylo zmíněno, kde příkaz v C-shellu, 832 01:00:22,490 --> 01:00:28,750 které vám říci, umístění příkazového název cesty. 833 01:00:28,750 --> 01:00:32,580 Zde je substituce příkazu. 834 01:00:32,580 --> 01:00:41,900 Měli byste najít na vaší klávesnici někde znak, který vypadá takto. 835 01:00:41,900 --> 01:00:44,910 Umístění na klávesnici se bude lišit. 836 01:00:44,910 --> 01:00:47,050 Nazvali jsme ji backquote. Je to o velikosti cenovou nabídku. 837 01:00:47,050 --> 01:00:48,720 To jde z levé horní části na pravé dolní. 838 01:00:48,720 --> 01:00:52,690 Tady na mém Mac klávesnice je v levém horním rohu. 839 01:00:52,690 --> 01:00:58,150 Tento znak může být použit k provedení příkazu v rámci příkazu. 840 01:00:58,150 --> 01:01:03,400 Máte-li výraz uvnitř jednoduchých zpětných uvozovek, 841 01:01:03,400 --> 01:01:07,080 že výraz je příkaz, je to běh. 842 01:01:07,080 --> 01:01:09,010 Výstup tohoto příkazu 843 01:01:09,010 --> 01:01:11,980 se pak nahradí celou backquote výraz 844 01:01:11,980 --> 01:01:16,110 v delším příkazem, který pak běží s tímto výstupem 845 01:01:16,110 --> 01:01:22,010 jako součást svého řetězce argumentů, a tak dále. 846 01:01:22,010 --> 01:01:28,640 Zde je příkaz, který používá to. 847 01:01:28,640 --> 01:01:32,340 Pojďme si ukázat provoz zde. 848 01:01:44,980 --> 01:01:49,090 Pojďme sem, vyjměte jednoduchých zpětných uvozovek. 849 01:01:49,090 --> 01:01:54,410 Řízení mě dostane na začátku řádku se syntaxí úpravy Emacs. 850 01:01:54,410 --> 01:02:00,380 Zatím cestami je to, co kde dělá, 851 01:02:00,380 --> 01:02:05,040 ale když jsem to takhle, pak se zapojuje v tomto seznamu cestami 852 01:02:05,040 --> 01:02:08,750 místo celé této backquote projevu a běží ls-l na nich. 853 01:02:08,750 --> 01:02:11,120 Druh pohodlné, co? 854 01:02:11,120 --> 01:02:14,860 Takže to je jedna užitečná věc. To je, jak jednoduchých zpětných uvozovek pracovat. 855 01:02:14,860 --> 01:02:17,560 Nyní pojďme se trochu dál. 856 01:02:17,560 --> 01:02:22,050 Jedná se o aliasy. Já vlastně používat. 857 01:02:22,050 --> 01:02:26,410 Budu se snažit, aby si na tuto 1x úpravy provozu. 858 01:02:34,900 --> 01:02:36,900 Dobře. 859 01:02:36,900 --> 01:02:39,630 Nyní se pojďme podívat, jak tyto definice vyšel. 860 01:02:39,630 --> 01:02:44,930 alias DxŠxV mi říct, jak je to definováno. 861 01:02:44,930 --> 01:02:51,210 Všimněte si, že je to právě to, ale vnější citace byly vzlétlo 862 01:02:51,210 --> 01:02:53,750 a vykřičník se vzlétlo. 863 01:02:53,750 --> 01:02:58,940 ! *, Úplný seznam všech argumentů. 864 01:02:58,940 --> 01:03:03,580 V definici aliasu, bude platit tam, kde jsem se použít. 865 01:03:03,580 --> 01:03:10,620 lwh ksh bash. Dobře. 866 01:03:10,620 --> 01:03:13,960 Podívejte, jak to funguje? To mi ušetří trochu psaní. 867 01:03:13,960 --> 01:03:16,440 Pojďme se trochu jen zmínit něco jiného zde. 868 01:03:19,150 --> 01:03:23,120 Všimněte si, tyto různé mušle. Měl jsem se zmínil dříve. 869 01:03:23,120 --> 01:03:36,060 Csh má 2 nad tu, a tak se / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Mohli bychom vytvořit jinými prostředky, že jsou to vlastně stejný soubor. 871 01:03:39,870 --> 01:03:43,150 Vzpomínám si, jak říkal, napíšete-li sh máte bash. 872 01:03:43,150 --> 01:03:47,390 Opište tento kód, a dostanete to. 873 01:03:47,390 --> 01:03:51,730 Ale ty nejsou propojeny. Ti, kteří mají jediné ty tam. 874 01:03:51,730 --> 01:03:54,910 A to není typ souboru, který může volat jiný. 875 01:03:54,910 --> 01:03:59,460 Takže to jsou samostatné soubory, na C-shell z nich jsou stejný soubor. 876 01:03:59,460 --> 01:04:03,640 Tady zpátky, druhý zde, tento alias, 877 01:04:03,640 --> 01:04:09,090 Upozorňujeme, že se spuštěním tohoto příkazu, soubor. 878 01:04:09,090 --> 01:04:13,810 To alias běží to. Soubor vám řekne, typ souboru. 879 01:04:13,810 --> 01:04:20,330 Takže FWH ksh bash. Dobře. 880 01:04:20,330 --> 01:04:23,230 To je výstup příkazu souboru. 881 01:04:23,230 --> 01:04:24,630 Nevím, jestli víte, co to znamená tady, 882 01:04:24,630 --> 01:04:26,750 Mach-O univerzální binární 2 architektur. 883 01:04:26,750 --> 01:04:30,470 K dispozici jsou 2 možné typy procesorů v systému Mac, 884 01:04:30,470 --> 01:04:34,780 a některé programy byly napsány, aby byly schopny provozovat s oběma, 885 01:04:34,780 --> 01:04:37,950 a příkazový soubor může určit, že tak to je, co to znamená. 886 01:04:37,950 --> 01:04:40,660 Oba tyto soubory byly psány tímto způsobem. 887 01:04:40,660 --> 01:04:43,760 Tak vidíme, jak alias funguje, vidíme, jak backquote funguje, 888 01:04:43,760 --> 01:04:48,640 vidíme, jak skutečné ls souborů nebo souborů funguje. 889 01:04:52,050 --> 01:04:57,000 Toto nemusí fungovat. Zkuste ", kde kde" a "lwh kde". Dobře, pojďme to zkusit. 890 01:04:57,000 --> 01:05:01,040 kde kde. 891 01:05:01,040 --> 01:05:03,500 kde je shell vestavěný. 892 01:05:03,500 --> 01:05:06,970 Nezapomeňte, dříve jsme ukázali, že Bash neměl kam. 893 01:05:06,970 --> 01:05:10,080 Pokud zadáte-li v Bash shellu, zobrazí se chybová zpráva. 894 01:05:10,080 --> 01:05:12,540 Je to jen část pláště spíše než samostatný příkaz. 895 01:05:12,540 --> 01:05:20,000 Co se stane, když jsem typ lwh hledal, kde? Podívejte se, co se děje tam. 896 01:05:20,000 --> 01:05:22,850 Ran, kdy, kde, dostal tento výstup, a pak se pokusil spustit ls 897 01:05:22,850 --> 01:05:25,600 jako l o tom, kde je shell vestavěný. 898 01:05:25,600 --> 01:05:28,790 kde je tam, ale ty ostatní neexistují. 899 01:05:28,790 --> 01:05:32,090 Žádný z nich existují, ve skutečnosti. 900 01:05:32,090 --> 01:05:35,560 Takže to nemusí vždy fungovat, a to také ukazuje, jak některé věci 901 01:05:35,560 --> 01:05:39,580 nedělají přesně to, co byste si mysleli. 902 01:05:40,930 --> 01:05:43,010 Pojďme se trochu dále zde. 903 01:05:44,890 --> 01:05:54,760 Tohle je Bash. To je také náhrada příkaz jako Backquote. 904 01:05:54,760 --> 01:06:05,280 Ale na rozdíl od backquote, používá tuto proměnnou styl. 905 01:06:05,280 --> 01:06:09,860 Existuje celá řada výrazů, které začínají znakem dolaru, 906 01:06:09,860 --> 01:06:16,070 a když to nejsou proměnné, oni si půjčovali použití znak dolaru 907 01:06:16,070 --> 01:06:19,570 uvést výraz nějakého druhu. 908 01:06:19,570 --> 01:06:23,550 To může být obklopen závorkách nebo hranatých závorkách nebo dvojitých závorek, 909 01:06:23,550 --> 01:06:26,320 , které má jiný účel. 910 01:06:26,320 --> 01:06:29,500 Jednotlivé závorky jsou zde substituce příkazu stejně jako jednoduchých zpětných uvozovek. 911 01:06:29,500 --> 01:06:32,720 Dvojité závorky je vlastně aritmetické operace. 912 01:06:32,720 --> 01:06:35,380 Existují i ​​jiné syntaxe, další operace. 913 01:06:35,380 --> 01:06:41,520 Backquote syntaxe je k dispozici v Bash. 914 01:06:41,520 --> 01:06:46,780 Nicméně, toto je výhodné. Je to mnohem čitelnější a umožňuje hnízdění. 915 01:06:46,780 --> 01:06:51,300 Můžete mít uvnitř $ (command) další příkaz, 916 01:06:51,300 --> 01:06:54,590 něco jako - 917 01:07:14,560 --> 01:07:18,210 Mám seznam zde. 918 01:07:18,210 --> 01:07:21,670 To by fungovat, pokud jsem měl Backquote také. 919 01:07:32,050 --> 01:07:38,470 Co když chci udělat něco jako - 920 01:08:03,390 --> 01:08:06,430 Ty by se pravděpodobně skutečně používat tento příkaz, 921 01:08:06,430 --> 01:08:14,160 ale to vnitřní nahrazení příkaz odráží názvy všech souborů začínajících, 922 01:08:14,160 --> 01:08:18,229 pak je to jeden běží ls-l na tyto soubory, 923 01:08:18,229 --> 01:08:20,500 a pak je to jedno jen odráží výstup. 924 01:08:21,729 --> 01:08:24,479 Asi bys to neudělal, bys prostě echo nebo ls, 925 01:08:24,479 --> 01:08:29,450 ale ukazuje, jak vnoření příkazů funguje. 926 01:08:29,450 --> 01:08:34,380 Takže jen další funkce zde. 927 01:08:34,380 --> 01:08:37,450  Zmínil jsem to již dříve, že pokud máte kde v C-shellu, 928 01:08:37,450 --> 01:08:42,770 Typ práce v Bourne typu mušle pro vyhledání příkazů. 929 01:08:48,939 --> 01:08:52,270 Vestavěné příkazy, jen to, co jsem tam ostatní. 930 01:08:52,270 --> 01:08:54,640 Příkazy jsou součástí pláště, jako kde. 931 01:08:54,640 --> 01:08:59,880 Když shell spustí příkaz jako ls, že najde to přes cestu, 932 01:08:59,880 --> 01:09:03,029 najde ho v nějakém adresáři někde, 933 01:09:03,029 --> 01:09:05,800 zní, že do paměti, vytvoří nový shell, 934 01:09:05,800 --> 01:09:08,960 čte příkaz ls nebo co do shellu 935 01:09:08,960 --> 01:09:11,450 kde jsou proměnné prostředí již nachází, 936 01:09:11,450 --> 01:09:14,000 a pak je přenáší výkon na to. 937 01:09:14,000 --> 01:09:18,319 Vestavěný příkaz, kód tohoto příkazu je uvnitř pláště, 938 01:09:18,319 --> 01:09:21,460 takže shell právě začíná spuštěním část svého vlastního kódu. 939 01:09:21,460 --> 01:09:24,569 kde je takový příkaz. Je to vlastně dostane rychleji. 940 01:09:24,569 --> 01:09:28,380 Nemusí číst něco v paměti, je to už v paměti. 941 01:09:28,380 --> 01:09:32,460 Vestavěné příkazy mají vždy přednost před příkazy se stejným názvem. 942 01:09:32,460 --> 01:09:36,050 Příkazy, které jsou v adresářích v cestě mohou mít stejný název, 943 01:09:36,050 --> 01:09:39,090 Příkazy v různých adresářích, soubory v různých adresářích. 944 01:09:39,090 --> 01:09:41,740 Ten, který nastane dříve, v cestě je jednou dostanete. 945 01:09:41,740 --> 01:09:43,770 Pokud je vestavěný příkaz, vždy dostanete to. 946 01:09:43,770 --> 01:09:47,890 Neexistuje žádný způsob, jak dát nižší prioritu než příkaz v cestě. 947 01:09:47,890 --> 01:09:54,140 Chcete-li získat tento příkaz path, můžete zadat úplnou cestu. 948 01:09:54,140 --> 01:09:55,850 Pokud by se příkaz, kde v cestě někam, 949 01:09:55,850 --> 01:09:58,440 můžete zadat / bin /, kde a vy byste si to. 950 01:09:58,440 --> 01:10:01,800 Pokud nechcete zadat celou cestu, můžete definovat alias. 951 01:10:01,800 --> 01:10:06,310 Ve skutečnosti, pokud jste dali alias stejný název jako vestavěný příkaz, že to bude fungovat 952 01:10:06,310 --> 01:10:08,790 protože definice alias je hodnocena 953 01:10:08,790 --> 01:10:13,220 před tím, než shell zjistí, že se jedná o vestavěný příkaz, který by měl být proveden. 954 01:10:18,810 --> 01:10:23,440 Tak to je trochu složitější s některými příkazy zde. 955 01:10:23,440 --> 01:10:29,880 U některých příkazů jsou ve skutečnosti vestavěné příkazy a v cestě. 956 01:10:29,880 --> 01:10:34,140 Jedním z nich je echo, příkaz jsem použít před chvílí v těchto příkladech. 957 01:10:34,140 --> 01:10:37,410 Echo je příkaz v cestě, a to v každém shellu. 958 01:10:37,410 --> 01:10:40,580 Nemusejí nutně všichni chovat stejným způsobem. 959 01:10:40,580 --> 01:10:42,970 To bylo původně příkaz pouze v cestě. 960 01:10:42,970 --> 01:10:45,280 Byl postaven v roce lastury později. 961 01:10:45,280 --> 01:10:48,080 Vzhledem k tomu, tam jsou možnosti, které jsou závislé na prostředí 962 01:10:48,080 --> 01:10:52,970 a možnosti příkazového řádku, vestavěné příkazy 963 01:10:52,970 --> 01:10:57,030 byly zapsány do stejné funkce jako příkaz, který byl v cestě, 964 01:10:57,030 --> 01:10:59,670 to je nepravděpodobné, že by bylo napsáno, že způsob, jakým 965 01:10:59,670 --> 01:11:01,720 v případě, že příkaz nebyl již bylo napsáno na cestu. 966 01:11:01,720 --> 01:11:06,180 Tak to má vedlejší účinky. Její historie má účinky zde. 967 01:11:06,180 --> 01:11:08,380 Existují možnosti tam. 968 01:11:14,280 --> 01:11:23,060 K dispozici je také možnost definovat proměnnou v tcsh názvem echo_style. 969 01:11:23,060 --> 01:11:27,700 To je jedna z těchto proměnných, které mohou změnit způsob, jakým ECHO spolupracuje. 970 01:11:27,700 --> 01:11:30,910 Existují i ​​další případy, ve kterých můžete přiřadit proměnnou 971 01:11:30,910 --> 01:11:36,290 , která mění způsob, jakým operace shell, včetně vestavěného příkazu, funguje. 972 01:11:36,290 --> 01:11:38,130 Nebylo by to mít vliv na nic jiného 973 01:11:38,130 --> 01:11:40,640 protože ostatní příkazy nemají přístup k proměnným shellu, 974 01:11:40,640 --> 01:11:42,090 pouze proměnné prostředí. 975 01:11:42,090 --> 01:11:45,360 Ale shell operace může číst proměnné shellu. 976 01:11:45,360 --> 01:11:50,710 To nebude fungovat pro csh. To je jen tcsh. To je jedním z dalších rozšíření. 977 01:11:58,540 --> 01:12:04,620 Syntaktická analýza má sekvence při hodnocení metaznaků, 978 01:12:04,620 --> 01:12:08,140 když se vyhodnocuje proměnné, aliasy, historie odkazy. 979 01:12:08,140 --> 01:12:11,830 Tam to zejména sekvence pro tyto věci. 980 01:12:11,830 --> 01:12:13,730 Pokud tomu tak je, co v určitém pořadí 981 01:12:13,730 --> 01:12:16,080 a dostane se na něco, co je výrazem druhu 982 01:12:16,080 --> 01:12:20,650 které již byly hodnoceny, nebude to vyhodnotit znovu. 983 01:12:20,650 --> 01:12:24,520 Dostane-li se to, pak to bude jen předávat znaky. 984 01:12:24,520 --> 01:12:29,920 Takže pokud vyhodnocení některých výrazů, jako je substituce příkazu 985 01:12:29,920 --> 01:12:36,850 pohyblivou nebo co vede k výrazu 986 01:12:36,850 --> 01:12:39,240 které byste chtěli být hodnoceny, 987 01:12:39,240 --> 01:12:42,510 že bude fungovat pouze v případě, že dojde, že vyhodnocení později v pořadí. 988 01:12:42,510 --> 01:12:45,010 Doufám, že jsem je jasné, že. 989 01:12:45,010 --> 01:12:50,460 To analýze sekvence, operace v C-shellu, 990 01:12:50,460 --> 01:12:56,490 není stejný pro vestavěných příkazů, jak je to pro non-vestavěných příkazů. 991 01:12:56,490 --> 01:12:58,890 Nejsem si jistý, o Bash zde. 992 01:12:58,890 --> 01:13:02,450 Například, v případě, že proměnná shell produkoval odkaz historie, 993 01:13:02,450 --> 01:13:04,230 pravděpodobně by se vrátit do historie. 994 01:13:04,230 --> 01:13:06,010 Bylo by jen dostat vykřičník. 995 01:13:06,010 --> 01:13:08,840 Ve skutečnosti, můžeme jen zkusit hned teď. 996 01:13:09,720 --> 01:13:18,240 sada = a budeme muset dát to tam. 997 01:13:30,690 --> 01:13:34,580 Oh, počkej. Promiňte. Udělal jsem to v Bash. Chtěl jsem to udělat zde. 998 01:13:53,470 --> 01:13:56,080 Vidíš, tak to nebylo hodnotit tento odkaz historii 999 01:13:56,080 --> 01:14:00,520 protože to bylo už za bod vyhodnocení historie výrazů 1000 01:14:00,520 --> 01:14:02,720 kdy se hodnotí proměnné. 1001 01:14:02,720 --> 01:14:05,550 Takže to je jeden efekt analýzu. 1002 01:14:05,550 --> 01:14:08,760 A opět, vestavěné příkazy nejsou provedena stejným způsobem. 1003 01:14:08,760 --> 01:14:11,230 Dobrá. Pojďme k dalšímu zde. 1004 01:14:11,230 --> 01:14:16,060 To má být 1 řádek, ale je to usnadňuje čtení. 1005 01:14:19,130 --> 01:14:21,530 Co to bylo? 1006 01:14:21,530 --> 01:14:28,640 Možná si vzpomínáte, že můžeme hodnotit hvězdičkami jako zástupné znaky názvu souboru, 1007 01:14:28,640 --> 01:14:33,890 a tam jsou jiné jméno souboru zástupné znaky, jako je otazník a držáku výrazů. 1008 01:14:33,890 --> 01:14:39,000 Tento druh hodnocení se nazývá globbing. 1009 01:14:39,000 --> 01:14:46,290 nastavit noglob na začátku tohoto příkazu říká, nedělejte to. 1010 01:14:46,290 --> 01:14:53,370 unset noglob říká, že vrátit se na tom, že. 1011 01:14:53,370 --> 01:14:56,440 Všimněte si, že soubor glob nebude mít tento účinek. 1012 01:14:56,440 --> 01:15:00,800 V běžném jazyce, nastavte glob nebo unset noglob se zdá být rovnocenné, 1013 01:15:00,800 --> 01:15:03,290 ale tady to není. Je to unset noglob. 1014 01:15:05,120 --> 01:15:07,910 Nyní Tset. tset stál terminálu sadu. 1015 01:15:07,910 --> 01:15:11,840 Je to nepoužívá tak často nyní, ale před okenní systémy byly k dispozici 1016 01:15:11,840 --> 01:15:15,760 a měl jediný terminál, budete muset určit typ. 1017 01:15:15,760 --> 01:15:18,700 A pokud něco přijde přes Ethernet nebo ze sítě, 1018 01:15:18,700 --> 01:15:21,120 budete chtít říct, že je to vt100. 1019 01:15:21,120 --> 01:15:26,630 VT100 je docela standard v oboru terminálu. Pochází z terminálu prosince. 1020 01:15:26,630 --> 01:15:35,270 Pokud jste právě dělat dial-up - všimněte si, že? To sahá způsoby, co? 1021 01:15:35,270 --> 01:15:39,520 Takže pokud bychom prostě Tset sem, 1022 01:15:39,520 --> 01:15:45,250 jestli jsem to Tset, to resetování můj terminál, ale nic neviděl. 1023 01:15:45,250 --> 01:15:47,340 To se opravdu nic měnit. 1024 01:15:47,340 --> 01:15:48,620 -S 1025 01:15:49,900 --> 01:15:51,480 Dobře. 1026 01:15:51,480 --> 01:15:53,350 setenv TERM xterm-color. 1027 01:15:53,350 --> 01:15:57,080 Již víme, že termín byl nastaven tímto způsobem, tak, aby se nezměnil. 1028 01:15:57,080 --> 01:15:58,860 To je způsob, jakým bychom chtěli udělat. 1029 01:15:58,860 --> 01:16:07,080 Ale všimněte si, že tento příkaz, tset-s, jen výstupní tyto příkazy. Nebylo spustit. 1030 01:16:07,080 --> 01:16:09,770 Nebylo spustit tyto příkazy, ale výstup je. 1031 01:16:09,770 --> 01:16:13,650 Takže toto je určeno k výrobě příkazy, které pak budou spuštěny. 1032 01:16:13,650 --> 01:16:16,360 Pamatuješ si příkaz v tomto souboru jsem ukázal, že máš Q v něm. 1033 01:16:16,360 --> 01:16:18,910 Tak pojďme na to. 1034 01:16:18,910 --> 01:16:23,750 Q potlačuje nějaký výstup, ale to nevadí zde, jak vidíte. 1035 01:16:23,750 --> 01:16:27,980 Dělám jen, že vám ukázat, že na tom nezáleží. 1036 01:16:27,980 --> 01:16:31,870 To je v syntaxi backquote. 1037 01:16:31,870 --> 01:16:35,340 Poznámka Backquote tady, backquote zde. 1038 01:16:35,340 --> 01:16:37,680 Já vynechání tyto věci zde. 1039 01:16:37,680 --> 01:16:39,570 Jedná se o případy říkat to, co má dělat 1040 01:16:39,570 --> 01:16:42,050 v případě jednotlivých typů terminálů - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, sítě, dial-up, co mají vás. 1042 01:16:45,400 --> 01:16:48,050 Nezáleží na tom, zde, protože jsme vlastně dělat žádné z těchto věcí. 1043 01:16:48,050 --> 01:16:49,720 Já jsem jen ilustrující příkaz. 1044 01:16:49,720 --> 01:16:55,170 Pokud jsem to s Backquote, co budu mít? 1045 01:16:55,170 --> 01:17:00,210 Také si všimněte, že tady to včetně nastavenou noglob a unset noglob, 1046 01:17:00,210 --> 01:17:02,630 tak ty se staly nadbytečnými v definici. 1047 01:17:02,630 --> 01:17:05,380 To není vždy pravda, ale teď jsou zahrnuty v tomto příkazu. 1048 01:17:05,380 --> 01:17:08,890 Ale pojďme se podívat, co se stane, když to udělám, že 1049 01:17:08,890 --> 01:17:12,570 a přejděte na začátku řádku s ovládacím A a dělám to. 1050 01:17:14,380 --> 01:17:18,040 Dobře, sada: Command not found. To je trochu divné, ne? 1051 01:17:18,040 --> 01:17:20,570 Sada je dobře známý povel. Je to část pláště. 1052 01:17:20,570 --> 01:17:24,040 sada: Příkaz nebyl nalezen? Proč je to tak? 1053 01:17:24,040 --> 01:17:26,790 Hmm. Dobře, pojďme si o tom myslíte. 1054 01:17:26,790 --> 01:17:31,100 Je to běh příkazu substituci backquote, 1055 01:17:31,100 --> 01:17:37,430 a, který se vyskytuje v určité části sekvence analýzy příkaz. 1056 01:17:37,430 --> 01:17:40,360 Sada je vestavěný příkaz. 1057 01:17:40,360 --> 01:17:43,900 Takže v době, kdy to dělá, že příkaz substituce, 1058 01:17:43,900 --> 01:17:48,280 je to již dostali za bod identifikace vestavěné příkazy. 1059 01:17:48,280 --> 01:17:51,900 Tak se chová nastavit jako kdyby se jednalo o příkaz v cestě. 1060 01:17:51,900 --> 01:17:55,440 Netřeba dodávat, že se nenajde ji a dostanete chybu. 1061 01:17:55,440 --> 01:17:59,300 No. K dispozici je příkladem syntaktické analýzy sekvence. 1062 01:17:59,300 --> 01:18:01,460 A co budeme dělat, že? 1063 01:18:01,460 --> 01:18:04,800 Všimněte si tento velmi zajímavý příkaz tady, eval. 1064 01:18:04,800 --> 01:18:06,530 Zajímalo by mě, co to dělá. 1065 01:18:06,530 --> 01:18:08,760 Podíváte-li se na manuál - a řekněme to, že 1066 01:18:08,760 --> 01:18:12,000 ukázat, jak matoucí Tyto příručky jsou - 1067 01:18:12,000 --> 01:18:19,400 man tcsh, zmatený manuální, hledání věcí tady není snadné ani. 1068 01:18:19,400 --> 01:18:31,850 Jdeme na to, eval arg, takže můžeme mít jeden nebo více argumentů 1069 01:18:31,850 --> 01:18:34,090 a tam je seznam věcí, které tam. 1070 01:18:34,090 --> 01:18:37,730 Zachází s argumenty jako vstupy do shellu 1071 01:18:37,730 --> 01:18:43,600 a provádí výsledné příkazy v kontextu současného pláště. 1072 01:18:43,600 --> 01:18:46,900 To se obvykle používá k provádění příkazů generovaných jako výsledek příkazu 1073 01:18:46,900 --> 01:18:51,310 nebo proměnnou substituce, protože parsování dojde před těchto substitucí. 1074 01:18:51,310 --> 01:18:52,580 Velmi dobrá. 1075 01:18:52,580 --> 01:18:54,740 A tady dokonce odkazují na příkaz tNastavte pro použití vzorku 1076 01:18:54,740 --> 01:18:57,700 jako ten, který jsem právě ukázal vám. 1077 01:18:57,700 --> 01:19:00,440 Teď mám dostat okno zpět na užitečné místo. 1078 01:19:03,150 --> 01:19:07,800 Pojďme sem a uvidíme, že eval se používá jen před tím. 1079 01:19:07,800 --> 01:19:14,010 Takže pojďme se podívat, co se stane, když dáme - jdeme s šipkami v tomto příkazu 1080 01:19:14,010 --> 01:19:20,940 a řízení na začátku, eval. 1081 01:19:20,940 --> 01:19:22,850 Dobře, tak to funguje. 1082 01:19:22,850 --> 01:19:26,440 Pokud tak učiníte eval, to znamená to, co přijde po ní, a je to příkaz. 1083 01:19:26,440 --> 01:19:29,460 To umožňuje, aby v podstatě analyzovat ji dvakrát. 1084 01:19:29,460 --> 01:19:33,710 Tento úsek vede tento příkaz uvnitř jednoduchých zpětných uvozovek, 1085 01:19:33,710 --> 01:19:36,210 dostane výstup. 1086 01:19:36,210 --> 01:19:42,850 Výstup by měl být spuštěn jako ty příkazy tady jako ty 1087 01:19:42,850 --> 01:19:45,890 na tenhle a tenhle. 1088 01:19:45,890 --> 01:19:50,100 Takže tyto příkazy jsou teď tady v tomto pořadí, 1089 01:19:50,100 --> 01:19:58,950 ale tito jsou vestavěné příkazy, a to nemůže dostat hned. 1090 01:19:58,950 --> 01:20:06,440 Tak jdeme na eval, eval zvedne, že se začíná celou věc znovu, a to funguje. 1091 01:20:06,440 --> 01:20:18,460 Příkladem oba backquoting, eval, rozebrat, důsledky rozebrat, 1092 01:20:18,460 --> 01:20:21,910 a příkaz, který je pravděpodobně velmi malé použití pro vás v dnešní době. 1093 01:20:21,910 --> 01:20:25,540 Dobře. Dobře, umask. 1094 01:20:25,540 --> 01:20:32,160 Podívejme se na tento povel tady, umask 022. Zajímalo by mě, co to dělá. 1095 01:20:32,160 --> 01:20:38,420 Řekněme, napište umask nic po něm. 22. Dobře. 1096 01:20:38,420 --> 01:20:44,350 022 a udělat to znovu. 1097 01:20:44,350 --> 01:20:48,580 Jak jste si mohli myslet, umask bez argumentů vám řekne aktuální masku; 1098 01:20:48,580 --> 01:20:51,760 umask s argumenty, je to, že, ale to bylo jednou už jsem měl. 1099 01:20:51,760 --> 01:20:53,800 Co to 022 znamená? 1100 01:21:01,650 --> 01:21:07,080 Jedná se zde o ochran na soubor. 1101 01:21:07,080 --> 01:21:11,440 Mají zjistit, kdo je oprávněn číst nebo psát, nebo spustit soubor. 1102 01:21:11,440 --> 01:21:16,560 Ochrany jsou také nazývány oprávnění. 1103 01:21:16,560 --> 01:21:21,390 R je zkratka pro čtení, w pro zápis, 1104 01:21:21,390 --> 01:21:25,500 a x, který není přítomen, znamená vykonat. 1105 01:21:25,500 --> 01:21:27,260 K dispozici jsou 3 kategorie tam. 1106 01:21:27,260 --> 01:21:33,540 Poslední 3 prvky jsou v kategorii uživatele. Ti, kteří se vztahují na mne uživatele. 1107 01:21:33,540 --> 01:21:36,870 Tyto 3 zde platí pro skupiny. 1108 01:21:36,870 --> 01:21:41,590 Soubor patří do 1. skupiny, může uživatel patřit do několika skupin, 1109 01:21:41,590 --> 01:21:47,150 ale pokud je uživatel ve skupině, ke které tento soubor patří, 1110 01:21:47,150 --> 01:21:51,090 pak se tato ochrana se bude vztahovat k němu, pokud to není uživatel. 1111 01:21:51,090 --> 01:21:54,230 A tohle je každý jiný. 1112 01:21:55,540 --> 01:21:57,690 Tyto kategorie se vzájemně vylučují. 1113 01:21:57,690 --> 01:21:59,750 Uživatel ochrany se vztahují k němu, 1114 01:21:59,750 --> 01:22:03,780 ochran skupiny se vztahují na členy skupiny jiných, než je uživatel, 1115 01:22:03,780 --> 01:22:08,110 a další ochrana platí pouze pro jiné než pro uživatele a členy skupiny lidí. 1116 01:22:08,110 --> 01:22:12,320 Pokud existuje r nebo aw nebo x, to znamená, že ochrana je poskytována. 1117 01:22:12,320 --> 01:22:13,950 Pokud je pomlčka, znamená to, že tomu tak není. 1118 01:22:13,950 --> 01:22:16,690 Tam vlastně jsou jiné věci, které mohou být zařazeny do zde vedle nich, 1119 01:22:16,690 --> 01:22:18,350 které jsem se dostat do teď. 1120 01:22:18,350 --> 01:22:24,450 Umask definuje výchozí nastavení pro soubory, které jste vytvořili. 1121 01:22:24,450 --> 01:22:28,580 A jako masku, v podstatě říká, že kousky, které nechcete nastavit. 1122 01:22:28,580 --> 01:22:30,450 Jak se to stane bitů? 1123 01:22:30,450 --> 01:22:33,240 Pokud si myslíte, že každý z nich jako osmičkové číslo, 1124 01:22:33,240 --> 01:22:42,120 to je 1s bit, to je 2 s, to je 4S. 1125 01:22:42,120 --> 01:22:45,840 Takže 0 až 7 1126 01:22:45,840 --> 01:22:51,770 popíše, jaká kombinace r je, w je, a x je máte pro tyto tři 1127 01:22:51,770 --> 01:22:53,710 a podobný počet pro tyto a pak se pro tyto případy. 1128 01:22:53,710 --> 01:23:12,030 Takže 022 znamená 0 ​​pro ostatní, 2 pro skupinu, 2 pro uživatele. 1129 01:23:12,030 --> 01:23:15,870 Ale to je maska. Maska je to, co nemáte. 1130 01:23:19,380 --> 01:23:20,610 Je mi to líto. Jen jsem ti dal věci ve špatném pořadí. 1131 01:23:20,610 --> 01:23:25,620 Je to první 3. Tyto 3 jsou uživatel, tyto 3 jsou skupina, tyto 3 jsou ostatní. 1132 01:23:25,620 --> 01:23:27,970 Promiň, že jsem ti to dal v nesprávném pořadí. 1133 01:23:27,970 --> 01:23:31,910 0, což je první z těch, nezobrazuje hodnotu, 1134 01:23:31,910 --> 01:23:35,430 ale pokud číslo není, to je 0. 1135 01:23:35,430 --> 01:23:38,370 To znamená, že všechny 3 z nich by bylo povoleno. 1136 01:23:38,370 --> 01:23:41,550 Všimněte si, že v tomto konkrétním jednom x není povoleno. 1137 01:23:41,550 --> 01:23:44,090 Důvodem je to, že plášť je schopen určit 1138 01:23:44,090 --> 01:23:46,260 zda soubor by měl být spuštěn, nebo ne. 1139 01:23:46,260 --> 01:23:49,800 Vzhledem k tomu, že to není spustitelný soubor, to nenastavil x. 1140 01:23:49,800 --> 01:23:54,000 Na 2 znamená, že oprávnění k zápisu, na druhou kategorii tady, 1141 01:23:54,000 --> 01:23:56,500 jeden ve středu, se zamítá. 1142 01:23:56,500 --> 01:23:58,500 Takže znovu, to jsou věci, které to popíral. 1143 01:23:58,500 --> 01:24:02,080 No, x je povolen, ale není to tady, protože to není spustitelný 1144 01:24:02,080 --> 01:24:04,260 a podobně pro ostatní. 1145 01:24:04,260 --> 01:24:08,880 Tak to je společná umask. 1146 01:24:08,880 --> 01:24:14,630 Dalším společným jeden je 700 - dát si všechno a nikdo jiný nic. 1147 01:24:14,630 --> 01:24:17,040 A existují i ​​jiné možnosti. 1148 01:24:21,340 --> 01:24:27,110 Vrátím se k tomu. Použití historie mohu hledat zpět, že lwh tam. 1149 01:24:27,110 --> 01:24:30,210 Dobře. Tak tady, to jsou skořápky. 1150 01:24:30,210 --> 01:24:36,020 Bash, majitel, který je systémový účet, můžete dělat všechno. 1151 01:24:36,020 --> 01:24:41,210 Group a všichni ostatní mohou udělat, číst nebo spouštět, ale ne psát. 1152 01:24:41,210 --> 01:24:44,570 Tento člověk nedovolí ani majitel zapisovat do něj. 1153 01:24:44,570 --> 01:24:46,460 Pokud majitel chtěl napsat to, systémový účet, 1154 01:24:46,460 --> 01:24:48,020 by musel nejprve změnit ochranu. 1155 01:24:48,020 --> 01:24:53,940 Ale opět, umask nastaví výchozí zakrývat to, 1156 01:24:53,940 --> 01:24:57,160 uvedením bity, které nebudou nastaveny. 1157 01:24:57,160 --> 01:25:04,380 To je obvykle v jednom ze svých konfiguračních souborů, což je. Cshrc pro C-shell 1158 01:25:04,380 --> 01:25:07,500 nebo. profilu pro Bourne-typu mušlí. 1159 01:25:07,500 --> 01:25:12,520 To může být na jiném místě i v případě, že jsou i jiné inicializační soubory v systému. 1160 01:25:12,520 --> 01:25:14,610 Mimochodem, to je umask. 1161 01:25:14,610 --> 01:25:18,180 Je tu něco, co trochu divný tady, 1162 01:25:18,180 --> 01:25:22,800 a to je, proč je tam jeden příkaz na to? 1163 01:25:22,800 --> 01:25:28,690 Kdybych psal to bych aby to proměnná, umask = nějaká hodnota. 1164 01:25:28,690 --> 01:25:31,100 Proč je tam celý příkaz jen pro tento účel? 1165 01:25:31,100 --> 01:25:34,560 Důvodem je to jen jde zpátky ke kořenům Unix. 1166 01:25:34,560 --> 01:25:41,050 Unix byl jen nějaký programovací projekt v Bellových laboratořích v roce 1970. 1167 01:25:41,050 --> 01:25:42,610 Lidé prostě dali dohromady, aby program. 1168 01:25:42,610 --> 01:25:45,290 Oni nikdy neměl v úmyslu, aby se stala po celém světě operačního systému. 1169 01:25:45,290 --> 01:25:47,250 Různí lidé psali různé části bez přemýšlení moc 1170 01:25:47,250 --> 01:25:49,790 o tom, jak se chystají využít - spíše útržkovité. 1171 01:25:49,790 --> 01:25:53,290 A to sešlo takhle, a je to pořád jako, že v některých ohledech. 1172 01:25:53,290 --> 01:25:57,930 Tak, že odráží historii, a tam jsou ještě tyto nesrovnalosti a liché prvky něj. 1173 01:25:57,930 --> 01:26:00,750 Dobře. Další, kdo zde. 1174 01:26:08,170 --> 01:26:11,000 Jak jsem psal dříve, C-shell není opravdu používá moc pro programování, 1175 01:26:11,000 --> 01:26:12,420 i když to může být. 1176 01:26:12,420 --> 01:26:15,080 To provádí pomaleji, znovu trade-off mezi interaktivním použití, 1177 01:26:15,080 --> 01:26:17,820 která má více zapojit, než rychlost zpracování, 1178 01:26:17,820 --> 01:26:20,710 které můžete udělat bez zpracování. 1179 01:26:20,710 --> 01:26:28,320 Mezi další funkce přidané do Bourne shellu od Korn a Bourne-znovu mušlí 1180 01:26:28,320 --> 01:26:32,120 Nezdá se zpomalit, a já nevím, proč tomu tak je. 1181 01:26:32,120 --> 01:26:36,310 Mohlo by to být jen lepší programování, ale já nejsem v pozici, vědět. 1182 01:26:36,310 --> 01:26:40,420 Rychlost zde ve skutečnosti není tak velký problém, i když je uvedeno. 1183 01:26:40,420 --> 01:26:43,690 Důvodem je, že skripty skutečně získat poměrně rychle. 1184 01:26:43,690 --> 01:26:46,450 Pokud tam je spousta příkazů jako v calculational programu, 1185 01:26:46,450 --> 01:26:49,110 pravděpodobně by se to udělat v shell skript. 1186 01:26:49,110 --> 01:26:51,450 Operace je poměrně jednoduché a přímočaré. 1187 01:26:51,450 --> 01:26:53,960 Ty, které jsem zažil, že jsou příliš pomalé 1188 01:26:53,960 --> 01:26:57,110 zahrnovat opakované aplikace pomalých příkazů. 1189 01:26:57,110 --> 01:27:00,480 Dříve jsem se zmínil o proudový editor sed. Tento příkaz je pomalý. 1190 01:27:00,480 --> 01:27:03,760 Pokud provedete sed mnohokrát, budete mít pomalý scénář, ale není to shell, který je pomalý. 1191 01:27:03,760 --> 01:27:07,920 Běh je v Bourne shellu nebude mnohem rychleji, než běží to v C-shellu, 1192 01:27:07,920 --> 01:27:10,070 i když to možná některé výhody tam. 1193 01:27:10,070 --> 01:27:12,760 Mezi další programovací funkce, na druhé straně, 1194 01:27:12,760 --> 01:27:17,920 jsou významné důvody, proč byste používají Bourne typu skořápky. 1195 01:27:17,920 --> 01:27:21,390 C-shell má liché funkce na to - 1196 01:27:21,390 --> 01:27:25,250 Skutečnost, že nevím, jestli je proměnná shellu proměnnou nebo proměnnou prostředí. 1197 01:27:25,250 --> 01:27:27,440 To může být velmi matoucí. 1198 01:27:27,440 --> 01:27:32,170 Není to tak snadné psát 1199 01:27:32,170 --> 01:27:35,930 jen na základě svých zkušeností z programování v jiných jazycích. 1200 01:27:35,930 --> 01:27:41,350 Myslím, že můžete najít Bourne typu skořápky více v souladu s vaší zkušeností. 1201 01:27:43,730 --> 01:27:49,270 Některé skripty, i když mohou být tisíce linek v délce. 1202 01:27:49,270 --> 01:27:52,450 Ty, které jsem viděl se používají pro záplatování operačních systémů. 1203 01:27:52,450 --> 01:27:55,450 Ti mohou provádět velmi pomalu, ale nechcete spustit ty velmi často. 1204 01:27:55,450 --> 01:27:57,180 Je to pouze tehdy, když děláte záplatování, 1205 01:27:57,180 --> 01:27:59,450 a je to jen systém manažer, který dělá tyhle věci, 1206 01:27:59,450 --> 01:28:01,840 takže to opravdu není moc problém. 1207 01:28:01,840 --> 01:28:06,980 Ti, kteří jsou stovky řádků dlouho vlastně provést poměrně rychle. 1208 01:28:06,980 --> 01:28:10,540 , Kde je tento zde, jaké jsou ty vylepšení? 1209 01:28:10,540 --> 01:28:13,170 Už jsem se zmínil některé z nich - pole, výpočty, 1210 01:28:13,170 --> 01:28:20,540 na $ () výraz pro výpočty v Bash shellu, 1211 01:28:20,540 --> 01:28:23,050 jiný druh substituce příkazu. 1212 01:28:23,050 --> 01:28:25,360 Existují různé druhy příkazů testování 1213 01:28:25,360 --> 01:28:29,350 kterou můžete udělat, podmíněné testy na existenci souboru nebo jiné věci. 1214 01:28:29,350 --> 01:28:34,790 Naposledy zde, tento příkaz zde. 1215 01:28:34,790 --> 01:28:38,480 Co to udělat, a proč by jej použít někdo? 1216 01:28:51,170 --> 01:28:52,990 printenv VariableName. 1217 01:28:52,990 --> 01:28:56,130 Víme, co printenv dělá. To nám říká, že hodnotu proměnné. 1218 01:28:56,130 --> 01:29:00,850 A printenv VariableName se nám to říct moc, protože tam žádná taková proměnná. 1219 01:29:03,550 --> 01:29:05,120 Blank. 1220 01:29:05,120 --> 01:29:08,440 Ale dejme tomu něco smysluplného. 1221 01:29:13,420 --> 01:29:16,800 To není ani tam. Dobře. Myslím, že jsem nikdy definována tak, že. 1222 01:29:16,800 --> 01:29:18,020 Řekněme, podívej se na můj prostředí. 1223 01:29:18,020 --> 01:29:20,900 To je další příkaz, kterou si můžete prohlédnout své prostředí. 1224 01:29:20,900 --> 01:29:24,470 Tam je starý dobrý EDITOR, který jsme viděli předtím. 1225 01:29:42,360 --> 01:29:44,120 Co to bylo? 1226 01:29:44,120 --> 01:29:48,050 Zde máme backquote výraz. 1227 01:29:48,050 --> 01:29:50,370 Nezapomeňte, je to C-shell. 1228 01:29:50,370 --> 01:29:54,850 Takže printenv EDITOR nám dá hodnotu editoru. Je to vi. 1229 01:29:54,850 --> 01:29:59,790 A pak se nastaví tuto hodnotu do proměnné a, příkazem set. 1230 01:29:59,790 --> 01:30:02,860 Takže teď, když to udělám echo $ a, mám vi. 1231 01:30:02,860 --> 01:30:05,850 To se nezdá být strašně užitečné. 1232 01:30:05,850 --> 01:30:08,080 Nicméně, to vlastně dělá má smysl. 1233 01:30:08,080 --> 01:30:12,260 Vzhledem k tomu, že nevíme, zda proměnná je proměnná shellu nebo proměnnou prostředí 1234 01:30:12,260 --> 01:30:16,280 pomocí syntaxe zkušební znak dolaru, můžeme použít printenv 1235 01:30:16,280 --> 01:30:19,460 aby se ujistil, že je to proměnná prostředí. 1236 01:30:19,460 --> 01:30:22,550 Takže pokud tam bylo shell variabilní editor, to by se nedostal ji. 1237 01:30:22,550 --> 01:30:25,640 To pracuje pouze s proměnnou prostředí. 1238 01:30:25,640 --> 01:30:28,370 Pokud by se proměnná shellu a chtěl jsem jeho hodnotu, 1239 01:30:28,370 --> 01:30:29,980 Budu muset najít nějaký jiný způsob, jak to udělat. 1240 01:30:29,980 --> 01:30:33,530 Jeden způsob, jak to udělat, by bylo tím, že dělá sadu a potrubí. 1241 01:30:33,530 --> 01:30:36,130 To je jeden z metaznaků, speciální znaky. 1242 01:30:36,130 --> 01:30:38,370 To odešle výstup souboru na něco jiného. 1243 01:30:38,370 --> 01:30:40,650 Pojďme se podívat, co jsme tam mohli najít. 1244 01:30:40,650 --> 01:30:49,340 Nic. Dobře. Pojďme se jen podívat, co je tam všechno dohromady. 1245 01:30:49,340 --> 01:30:53,580 Bylo echo_style, kterou jsem již zmínil. Dobře, pojďme to udělat. 1246 01:31:02,460 --> 01:31:06,230 Vzpomínám si, jak již bylo zmíněno dříve, echo_style 1247 01:31:06,230 --> 01:31:08,410 určuje způsob echo příkaz spustit. 1248 01:31:08,410 --> 01:31:10,940 bsd je zkratka pro Berkeley standardní distribuce. 1249 01:31:10,940 --> 01:31:13,200 To je Berkeley Unix z roku 1970. 1250 01:31:13,200 --> 01:31:16,630 To je jeden ze způsobů, které odrážejí může běžet. 1251 01:31:16,630 --> 01:31:22,310 Nastavení echo_style na tuto hodnotu v TC-shell způsobí, že echo chovat tímto způsobem. 1252 01:31:22,310 --> 01:31:27,670 Takže nastavit dělá, ale nastavte dostane pouze proměnné shellu. 1253 01:31:27,670 --> 01:31:35,430 To by se nenašel Editor, který není proměnná shellu. 1254 01:31:36,870 --> 01:31:38,050 Nic. 1255 01:31:38,050 --> 01:31:39,660 Takže to je jeden způsob, jak je rozlišit. 1256 01:31:39,660 --> 01:31:42,000 Ale skutečnost, že budete muset jít přes nějakého podivného příkazem, že 1257 01:31:42,000 --> 01:31:45,500 rozlišovat mezi proměnných shellu a proměnné prostředí 1258 01:31:45,500 --> 01:31:49,970 ukazuje druh nepraktické povaze C-shell pro některé účely. 1259 01:31:52,290 --> 01:31:57,960 A teď, poslední a možná nejméně, to je manuálové stránky. 1260 01:31:57,960 --> 01:32:03,190 Ti, kdo možná víte, člověk je příkaz zkratka pro návodu. 1261 01:32:03,190 --> 01:32:08,610 Manuálové stránky pro skořápky jsou těžko čitelné. Jsou velmi dlouho. 1262 01:32:08,610 --> 01:32:14,060 Jsou organizována způsobem, který může dělat to těžké najít, co hledáte. 1263 01:32:14,060 --> 01:32:15,980 Takže pokud hledáte něco s účelem, 1264 01:32:15,980 --> 01:32:20,050 nemusí vědět, jestli tento účel je proměnná shellu nebo něco jiného, 1265 01:32:20,050 --> 01:32:21,630 takže nemusí vědět, kde ji hledat. 1266 01:32:21,630 --> 01:32:25,030 Můžete se podívat na různé řetězce, ale řetězce se často opakují. 1267 01:32:25,030 --> 01:32:27,640 Takže je to většinou špatně čitelný. 1268 01:32:27,640 --> 01:32:33,810 Právě jsme se podíval na manuálové stránce TC-shell trochu před nalézt příkaz eval. 1269 01:32:33,810 --> 01:32:36,610 Některé věci jdou rychleji. 1270 01:32:36,610 --> 01:32:38,860 Jedním ze způsobů je hledat řetězec. 1271 01:32:38,860 --> 01:32:40,360 Můžete použít pager. 1272 01:32:40,360 --> 01:32:49,080 Pager má lomítko se podívat na příkazu nebo řetězce uvnitř provoz pageru. 1273 01:32:49,080 --> 01:32:52,830 Muž ve výchozím nastavení bude používat pagery, ať už více či méně. 1274 01:32:52,830 --> 01:32:56,560 Já nevím, jestli jste obeznámeni s těmi, ale ti může ukázat soubory kousek po kousku. 1275 01:32:56,560 --> 01:33:00,550 Byl jsem pomocí LESS zobrazení těchto jednotlivých souborů jsme se sem dostali. 1276 01:33:00,550 --> 01:33:03,300 Můžete hledat tam uvnitř. 1277 01:33:03,300 --> 01:33:04,880 Vyzkoušejte stránkování pomocí různých vyhledávacích řetězců. 1278 01:33:04,880 --> 01:33:08,420 Také manuálové stránky v různých operačních systémech nemusí být stejné. 1279 01:33:08,420 --> 01:33:11,130 Mohou být samostatné stránky pro csh a tcsh. 1280 01:33:11,130 --> 01:33:14,500 Jsou to nejsou na Mac, ale mohou být, jsou-li samostatné příkazy. 1281 01:33:14,500 --> 01:33:19,000 Pokud sh není opravdu volat Bash, tam asi bude samostatný muž stránku. 1282 01:33:19,000 --> 01:33:25,820 Některé systémy mají oddělené manuálové stránky pouze pro C-shell vestavěných příkazů. 1283 01:33:25,820 --> 01:33:30,250 Někdy, pokud si chcete přečíst popis vestavěným příkazem 1284 01:33:30,250 --> 01:33:35,350 to je také v cestě, jako ozvěna, musíte si přečíst manuálovou stránku na tento příkaz na echo 1285 01:33:35,350 --> 01:33:37,610 zjistit, jak to bude fungovat jako vestavěný příkaz 1286 01:33:37,610 --> 01:33:39,760 i když nejste volání vestavěný příkaz. 1287 01:33:41,630 --> 01:33:46,090 To je nevýhoda operačního systému obecně, nejen pro skořápky, 1288 01:33:46,090 --> 01:33:50,710 i když pro skořápek zejména manuálové stránky jsou poměrně dlouhé, 1289 01:33:50,710 --> 01:33:56,180 částečně proto, že jsem přidal užitečných funkcí k nim, což může být pozitivní. 1290 01:33:56,180 --> 01:34:00,290 Dobře. Jsou nějaké dotazy? Všechny témata, které chcete vychovat? 1291 01:34:00,290 --> 01:34:03,390 Něco tady relevantní? 1292 01:34:04,540 --> 01:34:07,100 No, bylo to velmi příjemné mluvit s vámi se všemi. 1293 01:34:07,100 --> 01:34:09,690 Doufám, že se vám něco z tohoto semináře 1294 01:34:09,690 --> 01:34:13,080 které budou užitečné pro vás ve vaší další činnosti. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]