1 00:00:00,000 --> 00:00:02,320 >> [Seminar - scoici Unix, medii] 2 00:00:02,320 --> 00:00:04,180 [Douglas Kline - Universitatea Harvard] 3 00:00:04,180 --> 00:00:07,160 [Acest lucru este CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> Subiect de astăzi este shell Unix. 5 00:00:12,770 --> 00:00:20,600 Sunt Douglas Kline, expert, sau cel puțin în mod rezonabil de utilizator competent, a carcasei. 6 00:00:20,600 --> 00:00:25,280 Un shell este interfața pentru utilizator a sistemului de operare al calculatorului. 7 00:00:25,280 --> 00:00:29,580 Numele este înșelătoare ca, spre deosebire de coajă unui animal, 8 00:00:29,580 --> 00:00:34,890 care este greu și de protecție, shell-ul de calculator permite pentru comunicare. 9 00:00:34,890 --> 00:00:39,120 Astfel membrană poroasă ar fi, probabil, o metaforă mai bună. 10 00:00:39,120 --> 00:00:44,500 >> Carcasa originala pentru Unix este shell-ul Bourne. 11 00:00:44,500 --> 00:00:46,450 Bourne este scris B-O-U-R-N-E. 12 00:00:46,450 --> 00:00:49,770 Bourne a fost unul dintre autorii originali ai Unix, 13 00:00:49,770 --> 00:00:51,700 și așa shell-ul este numit dupa el. 14 00:00:51,700 --> 00:00:54,850 Numele care coajă ca o comandă este pur și simplu sh. 15 00:00:54,850 --> 00:00:57,400 Asta e comanda, puteți executa. 16 00:00:57,400 --> 00:01:00,810 Shell-ul începe la autentificare. 17 00:01:00,810 --> 00:01:04,459 Când vă conectați la computer, shell-ul începe să ruleze doar pentru tine, 18 00:01:04,459 --> 00:01:06,820 și asta e ceea ce ia comenzile. 19 00:01:06,820 --> 00:01:09,790 Se poate începe de la alte momente, de asemenea. 20 00:01:09,790 --> 00:01:16,780 Dacă vă aduce o fereastră cu nici o altă indicație, se va porni un shell pentru tine. 21 00:01:16,780 --> 00:01:20,450 Asta e modul în care aceasta este ca poti sa te duci la o fereastră și începeți să tastați comenzile 22 00:01:20,450 --> 00:01:23,960 și așa mai departe acolo, chiar dacă nu ai conecta la acea fereastră. 23 00:01:23,960 --> 00:01:26,670 În plus, dacă faci o autentificare de la distanță, 24 00:01:26,670 --> 00:01:30,250 atunci va începe un shell pe computerul la distanță. 25 00:01:30,250 --> 00:01:44,310 Și este posibil pentru a rula comenzi fără un shell interactiv. 26 00:01:44,310 --> 00:01:48,990 Asta poate însemna în operație curentă, 27 00:01:48,990 --> 00:01:50,700 și aceasta poate însemna, de asemenea, o comandă de la distanță. 28 00:01:50,700 --> 00:01:52,900 Ai putea trimite o comandă de la un alt calculator, 29 00:01:52,900 --> 00:01:55,460 care include înființarea unei coajă acolo. 30 00:01:55,460 --> 00:01:57,760 De fapt, trebuie să includă și deschidă o coajă acolo 31 00:01:57,760 --> 00:02:01,740 chiar dacă acest lucru nu este scopul final. 32 00:02:05,310 --> 00:02:12,350 Atunci când ceva începe în sus ca aceasta, nu începe în mod necesar un nou shell. 33 00:02:12,350 --> 00:02:17,430 Dacă vă aduce o nouă fereastră, este posibil să-l spun pentru a aduce un editor 34 00:02:17,430 --> 00:02:18,940 sau o altă comandă. 35 00:02:18,940 --> 00:02:20,560 În acest caz, editorul va începe de la zero. 36 00:02:20,560 --> 00:02:22,930 În cazul în care editorul se termină, fereastra se termină. 37 00:02:22,930 --> 00:02:24,620 Acesta este un pic neobisnuit, dar se poate face. 38 00:02:24,620 --> 00:02:27,140 În aceste cazuri, acesta nu va fi un shell. 39 00:02:27,140 --> 00:02:31,890 Deci, nu este neapărat necesar ca o fereastra sau o astfel de cerere va aduce o coajă. 40 00:02:31,890 --> 00:02:34,030 >> Shell analizează comenzi. 41 00:02:34,030 --> 00:02:40,900 Parsarea înseamnă identificarea diferitelor elemente și clasificarea lor. 42 00:02:40,900 --> 00:02:43,470 În termen de o comandă, șirul complet pe care îl tastați, 43 00:02:43,470 --> 00:02:47,310 va exista un singur sau mai multe comenzi de executat. 44 00:02:47,310 --> 00:02:50,050 Alte elemente pot fi argumente. 45 00:02:50,050 --> 00:02:55,020 Nu poate fi, de asemenea, caractere speciale care afectează executarea unei comenzi. 46 00:02:55,020 --> 00:02:59,710 Ei pot trimite de ieșire în altă parte decât pe ecran 47 00:02:59,710 --> 00:03:01,750 în cazul în care comanda va trimite de obicei pe ecran. 48 00:03:01,750 --> 00:03:04,390 Se poate redirecționa de intrare, se pot face alte lucruri, de asemenea. 49 00:03:04,390 --> 00:03:08,120 Există diverse alte simboluri, caractere, și așa mai departe. 50 00:03:08,120 --> 00:03:13,600 Parsarea presupune detectarea și interpretarea acestor lucruri. 51 00:03:13,600 --> 00:03:19,560 >> Acum, în cazul în care nu există mai multe întrebări, care este destul de probabil, deoarece nu există mai multe persoane, 52 00:03:19,560 --> 00:03:24,620 vom merge la pagina următoare mea aici. 53 00:03:24,620 --> 00:03:29,170 >> Am spus mai devreme că shell Bourne este shell-ul inițial. 54 00:03:29,170 --> 00:03:31,550 Mai sunt și alții. 55 00:03:31,550 --> 00:03:34,520 Una este C-shell. Comanda este csh. 56 00:03:34,520 --> 00:03:36,830 Nume C-shell este doar un joc de cuvinte. 57 00:03:36,830 --> 00:03:41,260 Acest shell a fost introdus cu Berkeley Unix în mijlocul anilor 1970. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix a fost un eveniment seminale în dezvoltarea de Unix. 59 00:03:44,830 --> 00:03:48,770 A fost o revoluție mare și a inclus introducerea acestui coajă. 60 00:03:48,770 --> 00:03:50,790 Motivul pentru care joc de cuvinte, C-coajă, 61 00:03:50,790 --> 00:03:56,490 este faptul că C-shell are unele caracteristici în ea care se aseamănă cu limbajul C, 62 00:03:56,490 --> 00:03:59,740 care shell Bourne nu are - 63 00:03:59,740 --> 00:04:02,140 sau nu au avut la acel moment. 64 00:04:02,140 --> 00:04:05,190 Există, de asemenea, TC-shell. 65 00:04:05,190 --> 00:04:07,360 Acesta este un superset al C-shell. 66 00:04:07,360 --> 00:04:11,470 Ea are caracteristici suplimentare, dintre care multe sunt utile pentru utilizare interactivă, 67 00:04:11,470 --> 00:04:16,050 cum ar fi amintind comenzi în mecanismul de istorie, 68 00:04:16,050 --> 00:04:18,459 pe care le voi descrie ceva mai târziu - 69 00:04:18,459 --> 00:04:23,120 într-un mod simplu, modelat după un editor. 70 00:04:23,120 --> 00:04:29,170 Ea are, de asemenea, legături care vă permit de a lega un șir cheie scurt, la o comandă mai mare. 71 00:04:29,170 --> 00:04:31,440 Noi nu vom fi obtinerea în care ziua de azi. 72 00:04:31,440 --> 00:04:33,650 Ea are unele caracteristici care sunt utile pentru programare. 73 00:04:33,650 --> 00:04:37,020 Cu toate acestea, C-shell nu este adesea folosit pentru programare shell. 74 00:04:37,020 --> 00:04:39,080 Programe Shell, dacă nu știu deja, 75 00:04:39,080 --> 00:04:41,690 sunt programe care constau de caracteristici shell. 76 00:04:41,690 --> 00:04:43,220 Ai putea rula ca aceste programe. 77 00:04:43,220 --> 00:04:46,760 Ai scrie o grămadă de comenzi shell într-un fișier și executa fișierul. 78 00:04:46,760 --> 00:04:49,760 Nu aveți nevoie să-l compilați. Acesta este un limbaj de interpretare. 79 00:04:49,760 --> 00:04:57,320 Fraza C-shell-ul este acum ambiguu, deoarece s-ar putea referi doar la original C-shell, csh, 80 00:04:57,320 --> 00:05:01,200 sau la toate C-carcase, inclusiv tcsh. E un pic cam ambiguu. 81 00:05:01,200 --> 00:05:08,250 >> Un shell mai târziu este shell Korn, ksh, numit după programator, Korn. 82 00:05:08,250 --> 00:05:14,160 Acest shell a încercat să includă în 1 coajă 83 00:05:14,160 --> 00:05:16,960 avantajele C-shell pentru utilizare interactivă 84 00:05:16,960 --> 00:05:19,230 și Bourne shell pentru programare. 85 00:05:19,230 --> 00:05:25,440 Acesta a fost folosit ca un shell interactiv de unii oameni - o minoritate. 86 00:05:25,440 --> 00:05:32,050 Mai târziu însă, nu a existat o altă introducere, coajă Bash, BASH, 87 00:05:32,050 --> 00:05:35,290 din nou, un joc de cuvinte, Bourne, din nou coajă. 88 00:05:35,290 --> 00:05:43,830 Este o extensie a shell-ul Bourne. Korn shell este, de asemenea. Ambele dintre ele sunt. 89 00:05:43,830 --> 00:05:48,100 Ea are aceleași obiective ale shell Korn fuzionării C-shell-ului 90 00:05:48,100 --> 00:05:50,980 și avantajele Bourne Shell în coajă 1. 91 00:05:50,980 --> 00:05:56,810 Multe dintre îmbunătățirile de coajă Korn sunt, de asemenea, incluse în Bash. 92 00:05:56,810 --> 00:06:00,710 Bash, cu toate acestea, are mai mult și de aceea este de preferat. 93 00:06:00,710 --> 00:06:05,180 The Bourne Again Shell și-shell Korn sunt chemați scoici de tip Bourne 94 00:06:05,180 --> 00:06:07,730 deoarece acestea includ caracteristici Bourne shell-ului, 95 00:06:07,730 --> 00:06:11,180 care sunt incompatibile în unele privințe cu C-scoici. 96 00:06:11,180 --> 00:06:15,520 Există și alte scoici în afară de cele, unele destinate utilizării limitată, 97 00:06:15,520 --> 00:06:20,670 poate limita la unele comenzi, poate în scopuri de specialitate, care nu sunt utilizate de multe ori. 98 00:06:20,670 --> 00:06:24,240 >> Bine. Articol următor aici. 99 00:06:31,300 --> 00:06:38,970 Bash shell a devenit asociat cu diferite forme de Linux. 100 00:06:38,970 --> 00:06:41,550 Nu sunt sigur dacă este adevărat de orice formă. 101 00:06:41,550 --> 00:06:43,280 Există mai multe forme acolo și nu le-au folosit, 102 00:06:43,280 --> 00:06:46,870 dar la cei care le-am folosit-o a devenit asociat cu ea. 103 00:06:46,870 --> 00:06:49,670 În ceea ce știu, nu este nimic despre Bash 104 00:06:49,670 --> 00:06:52,210 ceea ce îl face mai compatibil cu Linux 105 00:06:52,210 --> 00:06:55,020 decât orice altă combinație de coajă și de sistemul de operare. 106 00:06:55,020 --> 00:06:59,690 Cred că, probabil, acest lucru reflectă doar înclinațiile programatori. 107 00:06:59,690 --> 00:07:07,500 Care a devenit asociat cu Linux este un alt motiv pentru a prefera Bash la KSH 108 00:07:07,500 --> 00:07:11,820 deoarece lucrurile sunt susceptibile de a fi scris în ea și este probabil să se răspândească. 109 00:07:11,820 --> 00:07:15,410 Îți voi da alte motive pentru care mai târziu. 110 00:07:15,410 --> 00:07:21,330 Scripturi shell Bourne ar trebui să ruleze în coajă Korn sau Bash. 111 00:07:21,330 --> 00:07:22,650 Dacă scrii ceva pentru shell Bourne, 112 00:07:22,650 --> 00:07:26,180 puteți, probabil, o executa sub ksh sau bash. 113 00:07:26,180 --> 00:07:30,610 Scripturi shell Korn va rula probabil în Bash, dar eu nu pot garanta asta. 114 00:07:30,610 --> 00:07:36,040 Mai târziu aici, script-C-shell ar trebui să ruleze în cadrul TC-shell. 115 00:07:38,850 --> 00:07:41,690 C-shell nu a fost niciodată de fapt, utilizat pe scară largă pentru scripting 116 00:07:41,690 --> 00:07:48,110 de la Bourne coajă și mai târziu cojile de tip Bourne au fost de preferat pentru acest scop. 117 00:07:48,110 --> 00:07:50,620 Așa că într-adevăr nu este tot atat de important. 118 00:07:50,620 --> 00:07:53,480 Există destul de multe Bourne shell script-uri care au fost scrise mult timp în urmă, 119 00:07:53,480 --> 00:07:56,860 înainte de shell Korn sau Bourne din nou carcasa au fost introduse. 120 00:07:56,860 --> 00:07:59,300 Cei care sunt încă în uz, o parte din sistemele de operare, 121 00:07:59,300 --> 00:08:01,590 și astfel le veți găsi, dacă te uiți în sistemul de operare 122 00:08:01,590 --> 00:08:03,760 sau a unor pachete de programare vechi. 123 00:08:03,760 --> 00:08:12,840 >> Bash este într-o oarecare măsură, să devină un fel de lingua franca pentru sisteme de operare. 124 00:08:12,840 --> 00:08:17,580 A fost deja prelungit pentru Windows și a VMS. 125 00:08:17,580 --> 00:08:20,440 VMS, în cazul în care nu știți, este un sistem de operare proprietar 126 00:08:20,440 --> 00:08:25,480 de Digital Equipment Corporation, care este încă în uz, în mare parte în spatele scenei. 127 00:08:25,480 --> 00:08:29,250 Și dacă o să fie difuzate pe mai multe sisteme de operare diferite, 128 00:08:29,250 --> 00:08:31,110 probabil, oamenii au tendința de a schimba pentru ea. 129 00:08:31,110 --> 00:08:33,840 Dar această evoluție este relativ recentă. 130 00:08:33,840 --> 00:08:39,490 E doar începutul, așa că nu pot prezice dacă acest lucru se va dovedi a fi cu adevărat acest tip de lingua franca. 131 00:08:39,490 --> 00:08:43,539 De asemenea, că cai de acces de fișiere și biblioteci diferă 132 00:08:43,539 --> 00:08:46,210 dintre aceste sisteme de operare diferite, 133 00:08:46,210 --> 00:08:50,250 s-ar putea să nu fie în măsură să scrie un script Bash pe un sistem de operare 134 00:08:50,250 --> 00:08:51,840 și apoi rulați-l pe altul. 135 00:08:51,840 --> 00:08:54,440 Ar trebui să fie capabil să-l mutați între diferite Unix, Linux 136 00:08:54,440 --> 00:08:59,020 Sistemele de operare Mac OS, dar nu neapărat la Windows sau VMS. 137 00:08:59,020 --> 00:09:01,390 S-ar putea să se schimbe descrieri fișier căii de acces, 138 00:09:01,390 --> 00:09:03,180 și unele biblioteci pot fi diferite, 139 00:09:03,180 --> 00:09:05,230 care ar putea afecta modul în care unele comenzi de lucru 140 00:09:05,230 --> 00:09:09,730 sau modul în care procesul de argumente și altele asemenea. 141 00:09:09,730 --> 00:09:19,230 În plus, o altă precauție aici este că nu există nici o garanție 142 00:09:19,230 --> 00:09:23,570 că toate diferite cojile le-am menționat - Bourne shell, C-coajă, 143 00:09:23,570 --> 00:09:29,880 TC-shell, Korn shell, Bourne din nou shell - vor fi disponibile în orice Unix 144 00:09:29,880 --> 00:09:33,750 sau Linux sau calculator Mac OS. 145 00:09:33,750 --> 00:09:35,620 Ei pur și simplu nu ar putea fi acolo. 146 00:09:35,620 --> 00:09:38,300 Acesta este unul dintre precauțiile aici. 147 00:09:38,300 --> 00:09:41,490 Este o limitare nefericit aici de când ai vrea ca lucrurile să meargă peste tot, 148 00:09:41,490 --> 00:09:44,380 dar, din păcate, nu te poti baza pe asta. 149 00:09:44,380 --> 00:09:47,230 >> Bine. Un viitor aici. 150 00:09:50,280 --> 00:09:54,370 Să presupunem că doriți să scrieți un script de shell, 151 00:09:54,370 --> 00:09:57,170 un program format din comenzi shell. 152 00:09:57,170 --> 00:10:01,200 Scrii comenzile, le-a pus într-un fișier, și executa fișierul. 153 00:10:01,200 --> 00:10:04,230 Ce se întâmplă dacă doriți să includă argumente? 154 00:10:04,230 --> 00:10:09,650 În cazul operațiunilor de coajă, argumentele sunt numite parametrii sau parametri poziționali 155 00:10:09,650 --> 00:10:15,940 și ei vor fi chemați de către un semn dolar și numeral, 1 $, 2 $. 156 00:10:15,940 --> 00:10:27,000 Deci, dacă script-ul are acest nume, primul meu argument ar putea fi argumentul 1 157 00:10:27,000 --> 00:10:30,540 și a doua mea ar putea fi un argument 2, 158 00:10:30,540 --> 00:10:34,110 și în interiorul script-ul meu în cazul în care vreau să mă refer la aceste lucruri - 159 00:10:34,110 --> 00:10:36,810 hai sterge acest lucru deoarece nu am cu adevărat de gând să-l rulați - 160 00:10:36,810 --> 00:10:42,160 în script-ul meu am putea avea un dolar pentru a se referi la arg1, 161 00:10:42,160 --> 00:10:45,890 2 dolari, care vor veni în acest fel, arg2. 162 00:10:45,890 --> 00:10:50,080 Deci, aceste simboluri sunt disponibile pentru a se referi la argumente, 163 00:10:50,080 --> 00:10:52,390 și cei care se aplică la toate cojile. 164 00:10:52,390 --> 00:10:56,520 În plus, există și alte caractere. 165 00:10:56,520 --> 00:11:01,700 $ * Se refera la intreaga lista de argumente, toate dintre ele. 166 00:11:01,700 --> 00:11:05,390 $ # Se referă la numărul de argumente. 167 00:11:05,390 --> 00:11:07,910 Din nou, acest lucru este valabil pentru toate cojile. 168 00:11:07,910 --> 00:11:15,540 Aceste simboluri, * si #, pot fi utilizate cu aceste semnificații în alte locuri, de asemenea. 169 00:11:15,540 --> 00:11:17,940 Noi nu va intra in asta. 170 00:11:17,940 --> 00:11:20,460 >> Shell linie specificator. Ce e asta? 171 00:11:20,460 --> 00:11:27,760 Să spunem că ați scris un scenariu și este pentru un anumit coajă și pe care doriți să îl rulați. 172 00:11:27,760 --> 00:11:33,500 Cum știi ce plăti sistemul de operare va folosi pentru a rula script-ul dvs.? 173 00:11:33,500 --> 00:11:37,230 La un moment dat ai putea presupune că ar rula în coajă Bourne 174 00:11:37,230 --> 00:11:39,440 dacă nu ai spus altfel, 175 00:11:39,440 --> 00:11:41,730 dar oamenii nu se mai scrie script-uri din Bourne shell care de mult 176 00:11:41,730 --> 00:11:43,750 și nu mai pot chiar să se bazeze pe asta. 177 00:11:43,750 --> 00:11:48,740 Deci, aici avem o linie de specificator coajă chiar aici. 178 00:11:48,740 --> 00:11:52,450 Care specifică Bash. 179 00:11:52,450 --> 00:11:56,750 Rețineți că se specifică in cale, / bin / bash. 180 00:11:56,750 --> 00:12:02,870 În cazul în care un calculator are shell Bash, dar nu în directorul bin, / bin, acest lucru nu va funcționa. 181 00:12:02,870 --> 00:12:06,870 Acesta este un alt calificativ, un alt precauție aici. 182 00:12:06,870 --> 00:12:09,500 Semnul lira este caracterul linie de comentariu. 183 00:12:09,500 --> 00:12:12,300 Care se aplică tuturor scoici. 184 00:12:12,300 --> 00:12:18,610 Cazul special aici, #! la începutul unui script, este un caz special. 185 00:12:18,610 --> 00:12:23,410 Care specifică coajă în care pentru a rula script-ul. 186 00:12:23,410 --> 00:12:30,230 Așa cum spuneam, s-ar putea să nu fie în același loc / bin. 187 00:12:30,230 --> 00:12:34,880 În plus, există un alt lucru aici. 188 00:12:34,880 --> 00:12:41,250 Dacă utilizați doar semnul lire, cu nici un semn de exclamare și nume de cale, 189 00:12:41,250 --> 00:12:44,640 care ar trebui să indice un C-shell. 190 00:12:44,640 --> 00:12:48,300 Cu toate acestea, eu nu recomand sa faceti asta pentru că eu nu sunt în măsură să garanteze 191 00:12:48,300 --> 00:12:49,750 că va funcționa întotdeauna. 192 00:12:49,750 --> 00:12:52,220 Dacă doriți un C-shell, ar fi mai bine să spun așa. 193 00:12:52,220 --> 00:12:58,450 Apoi, nu e ceva destul de confuze aici. 194 00:12:58,450 --> 00:13:03,940 Dacă utilizați o linie shell specificator, cum ar fi / bin / bash 195 00:13:03,940 --> 00:13:07,070 și că shell nu este disponibil acolo, 196 00:13:07,070 --> 00:13:10,680 nu există nici un lucru, cum ar fi / bin / bash pe acel computer, 197 00:13:10,680 --> 00:13:14,330 fie pentru că nu are Bash sau pentru că se află într-o locație diferită, 198 00:13:14,330 --> 00:13:17,450 veți primi o eroare care vă spune că scenariul ai fugit nu există. 199 00:13:17,450 --> 00:13:21,510 Și, desigur, există script-ul dvs., astfel încât mesajul de eroare este confuz. 200 00:13:21,510 --> 00:13:24,810 Motivul pentru care sistemul de operare vă oferă această eroare 201 00:13:24,810 --> 00:13:28,370 sau, mai precis, care shell-ul interactiv în care se execută acest lucru dă această eroare, 202 00:13:28,370 --> 00:13:33,510 este faptul că rapoartele de comanda ai folosit, care este numele de script-ul. 203 00:13:33,510 --> 00:13:36,920 Care comandă denumit în mod eficient shell cu numele de script-ul. 204 00:13:36,920 --> 00:13:39,330 Asta în cazul în care primiți un mesaj de eroare confuze. 205 00:13:39,330 --> 00:13:42,980 Un alt mod de a apela script shell 206 00:13:42,980 --> 00:13:45,910 este de a specifica shell în linia de comandă, ca aici. 207 00:13:45,910 --> 00:13:52,510 Aceasta este o comandă. Acest lucru spune alerga Bash și apoi executați script-ul meu în Bash. 208 00:13:52,510 --> 00:13:55,680 Care va avea prioritate față de o linie de specificator, 209 00:13:55,680 --> 00:14:02,090 iar acest lucru are funcția de permițându-vă pentru a asigura cai de acces diferite. 210 00:14:02,090 --> 00:14:04,840 Dacă vă dau doar o comandă, sistemul de operare va căuta pentru că comanda 211 00:14:04,840 --> 00:14:06,410 în diferite locuri. 212 00:14:06,410 --> 00:14:08,820 În cazul în care este disponibil, acesta ar trebui să-l găsiți. 213 00:14:08,820 --> 00:14:12,290 Computerul va găsi Bash oriunde se află și rulați-l, 214 00:14:12,290 --> 00:14:15,470 astfel încât nu aveți nevoie apoi să fie preocupat de cazul în care se constată. 215 00:14:15,470 --> 00:14:17,360 Există potențial alte preocupări aici, 216 00:14:17,360 --> 00:14:20,830 ca și în cazul în care există mai mult de 1 versiune de Bash, care este posibil, deși puțin probabil. 217 00:14:20,830 --> 00:14:23,540 Deci, asta e un alt mod de a face cu aceste lucruri. 218 00:14:23,540 --> 00:14:30,480 Liniile specificator poate apela orice shell. 219 00:14:30,480 --> 00:14:34,480 Ei pot apela, de asemenea, altele decât coji de lucruri. 220 00:14:34,480 --> 00:14:37,940 Exemplele pe care le am aici sunt sed, care este editorul de flux; 221 00:14:37,940 --> 00:14:39,900 awk, care este un limbaj de procesare model; 222 00:14:39,900 --> 00:14:43,680 și perl, un limbaj de scripting foarte dezvoltat. 223 00:14:43,680 --> 00:14:47,570 Dacă pui o linie specificator indică unul dintre aceste programe, la începutul, 224 00:14:47,570 --> 00:14:51,270 se va merge direct în acest program, mai degrabă decât a începe o coajă. 225 00:14:51,270 --> 00:14:54,030 Aceste programe au limite în abilitățile lor. 226 00:14:54,030 --> 00:14:58,790 Perl este foarte capabil. Sed este un editor. Se poate face lucruri dincolo de simpla editare. 227 00:14:58,790 --> 00:15:03,300 Dar poate fi dificil de a programa asta. 228 00:15:03,300 --> 00:15:09,670 În plus, trecerea argumente și alte chestii pentru a script-ul este fie imposibilă sau confuze. 229 00:15:09,670 --> 00:15:15,030 Deci, în aceste cazuri, cu awk sau sed, este, cel puțin în experiența mea, 230 00:15:15,030 --> 00:15:18,910 de preferat pentru a scrie un shell script și apel awk sau sed de script de shell 231 00:15:18,910 --> 00:15:24,660 mai degraba decat de asteptare awk sau sed ca linia de script specificator. 232 00:15:24,660 --> 00:15:26,980 Perl este un limbaj extrem de diversificat, cum am spus. 233 00:15:26,980 --> 00:15:30,050 Nu puteți rula comenzi interactive în Perl, 234 00:15:30,050 --> 00:15:32,660 ceea ce înseamnă că nu se poate testa părți din script-uri care sunteți în curs de dezvoltare 235 00:15:32,660 --> 00:15:33,970 prin rularea lor interactiv. 236 00:15:33,970 --> 00:15:36,160 Cu toate acestea, este un limbaj extrem de capabil 237 00:15:36,160 --> 00:15:40,960 și sa dezvoltat într-un instrument utilizat pe scară foarte largă. 238 00:15:40,960 --> 00:15:45,720 Asta e doar un pic de o paranteză despre liniile de specificatorul. 239 00:15:45,720 --> 00:15:50,610 >> În toate sau cele mai multe forme de Linux - din nou, eu nu pot fi sigur că e tot - 240 00:15:50,610 --> 00:15:57,900 și în Mac OS, dacă tastați csh te tcsh, 241 00:15:57,900 --> 00:16:00,570 și dacă tastați sh te bash. 242 00:16:00,570 --> 00:16:05,020 Ei au fost încercarea de acolo pentru a vă oferi versiuni mai avansate ale acestor scoici, 243 00:16:05,020 --> 00:16:07,940 dar acest lucru poate fi confuz. 244 00:16:07,940 --> 00:16:16,720 Dacă ați scrie un script folosind tcsh sau Bash are timp de asteptare csh sau sh 245 00:16:16,720 --> 00:16:22,230 și apoi încercați să-l rula pe un calculator care nu are tcsh sau Bash, 246 00:16:22,230 --> 00:16:25,050 s-ar putea obține unele erori în cazul în care există comenzi acolo 247 00:16:25,050 --> 00:16:27,970 care aceste coji nu recunosc. 248 00:16:27,970 --> 00:16:34,120 În plus, este posibil să fi sunat shell-ul de pe computerul local 249 00:16:34,120 --> 00:16:37,700 numindu-l ca sh sau csh și apoi obtinerea mai avansate scoici. 250 00:16:37,700 --> 00:16:41,440 Nici măcar nu putea gândi la faptul că utilizați mai avansate shell. 251 00:16:41,440 --> 00:16:45,670 Deci, aceasta este o potențială capcană. 252 00:16:45,670 --> 00:16:50,290 Cum se stabilește că, dacă tastați sh te Bash, 253 00:16:50,290 --> 00:16:55,580 dacă tastați csh te tsch? 254 00:16:55,580 --> 00:16:59,940 Există lucruri în aceste calculatoare numite link-uri 255 00:16:59,940 --> 00:17:06,460 care se poate conecta la dosar nume pentru a se referi la același lucru. 256 00:17:06,460 --> 00:17:12,180 Acesta poate fi fie de 2 nume pentru același fișier sau un fișier al cărui scop este de a se referi la un alt fișier. 257 00:17:12,180 --> 00:17:17,550 Se numesc link-uri hard și simbolice. Noi nu va fi mai merge în care azi. 258 00:17:17,550 --> 00:17:21,619 S-ar putea fi, de asemenea, fișiere separate - 1 file SH, 1 file Bash - 259 00:17:21,619 --> 00:17:23,880 dar ambele au alerga Bash. 260 00:17:23,880 --> 00:17:29,350 Apoi, există un alt calificativ aici. 261 00:17:29,350 --> 00:17:42,640 Dacă sunteți de asteptare unul dintre aceste cochilii de un nume, 262 00:17:42,640 --> 00:17:46,640 ai putea crede că ai obține aceeași funcționalitate ca și numindu-l pe un alt nume. 263 00:17:46,640 --> 00:17:49,700 Ei bine, că de fapt nu este neapărat adevărat. 264 00:17:49,700 --> 00:17:55,020 Aceste comenzi pot examina numele prin care au fost numite 265 00:17:55,020 --> 00:18:00,020 și ele pot, pe baza de acest nume, se comporta diferit. 266 00:18:00,020 --> 00:18:02,740 Pot exista probleme de încercarea de a se conforma la un standard. 267 00:18:02,740 --> 00:18:06,060 Unii dintre voi poate au auzit de standardul POSIX sau altul, 268 00:18:06,060 --> 00:18:08,730 poate alte caracteristici. 269 00:18:08,730 --> 00:18:14,520 Acest lucru poate fi selectat uneori de argumente în linia de comandă 270 00:18:14,520 --> 00:18:17,310 sau prin setarea variabilelor de shell. 271 00:18:17,310 --> 00:18:22,170 Numindu-l ca sh sau bash poate duce de fapt la o execuție diferit 272 00:18:22,170 --> 00:18:25,300 chiar dacă e același dosar pe care o execută. 273 00:18:25,300 --> 00:18:31,800 Un alt lucru să ia în considerare este că, chiar dacă un alt calculator are tcsh sau Bash, 274 00:18:31,800 --> 00:18:35,310 în cazul în care nu sunt legate ca acestea sunt pe computerul local 275 00:18:35,310 --> 00:18:37,990 dacă aveți un calculator local, Linux sau Mac OS, 276 00:18:37,990 --> 00:18:45,630 apoi din nou, veți obține shell care te sun sh sau csh, nu cel pe care s-ar putea prefera. 277 00:18:50,430 --> 00:19:01,130 Actualul Bourne shell are îmbunătățiri mai mică decât cele din Bash 278 00:19:01,130 --> 00:19:06,100 dar pe lângă cele din coajă inițial Bourne. 279 00:19:06,100 --> 00:19:09,690 Ca rezultat, chiar shell curent Bourne, sh, 280 00:19:09,690 --> 00:19:14,560 chiar și atunci când nu este Bash, seamănă cu limbajul C mai mult decât C-shell nu. 281 00:19:14,560 --> 00:19:20,460 Că nu era adevărat, atunci când C-shell a fost creat pentru prima dată, dar le-a dezvoltat în acest fel. 282 00:19:20,460 --> 00:19:26,560 S-ar putea observa aici că toate aceste nume de coajă, cu excepția pentru shell-ul Bourne 283 00:19:26,560 --> 00:19:30,640 au ceva să indice care shell sunt - csh, bash - 284 00:19:30,640 --> 00:19:32,550 dar shell-ul Bourne este doar sh. 285 00:19:32,550 --> 00:19:34,910 De ce? Asta a fost shell original. 286 00:19:34,910 --> 00:19:37,770 Acesta a fost coajă atunci, nu o coajă, 287 00:19:37,770 --> 00:19:41,090 și din moment ce era coajă, nu exista niciun motiv pentru a se distinge de la un alt shell. 288 00:19:41,090 --> 00:19:45,030 Deci, de aceea are acest nume și nu încă. 289 00:19:50,630 --> 00:19:58,990 >> Acest top de aici este o linie dintr-o bază de date parolă pentru un cont am acolo 290 00:19:58,990 --> 00:20:01,680 pe un alt calculator. 291 00:20:01,680 --> 00:20:08,300 Am de gând să încercați să obțineți numele astfel încât să puteți vedea că o parte de la sfârșitul, coajă. 292 00:20:09,720 --> 00:20:15,450 Baza de date parola deține caracteristicile de conectare pentru toți utilizatorii. 293 00:20:15,450 --> 00:20:20,330 La început este numele de utilizator, pe care le puteți vedea în ultimele două litere ale mele acum. 294 00:20:20,330 --> 00:20:23,970 Câmpurile de aici sunt separate de doua puncte. 295 00:20:23,970 --> 00:20:28,210 Ultimul câmp, după cum puteți vedea, este bin / tcsh, shell. 296 00:20:28,210 --> 00:20:30,230 Acesta este specificatorul de coajă. 297 00:20:30,230 --> 00:20:33,240 E ceva interesant aici. 298 00:20:33,240 --> 00:20:36,950 Când Unix a fost dezvoltat în primul rând, nu a fost doar o coajă, 299 00:20:36,950 --> 00:20:38,350 deci nu a fost ales acolo. 300 00:20:38,350 --> 00:20:45,570 Deci, de ce acestea permit un câmp în baza de date parola pentru a specifica un shell? 301 00:20:45,570 --> 00:20:47,920 Nu știu, dar e norocos că au făcut. 302 00:20:47,920 --> 00:20:52,030 Este destul de dificil de a face schimbări în formatul de date parola 303 00:20:52,030 --> 00:20:54,420 deoarece multe programe se referă la formatul său 304 00:20:54,420 --> 00:20:57,720 și ar trebui să fie rescrise. 305 00:20:57,720 --> 00:21:04,130 Este o evoluție fericită sau fortuit care au inclus acest domeniu. 306 00:21:04,130 --> 00:21:12,780 Ca un fel de linie de fișier parolă este utilizat pe toate computerele Unix și Linux măsura în care știu. 307 00:21:12,780 --> 00:21:14,650 Mac are propriul sistem. 308 00:21:14,650 --> 00:21:17,810 Ea are de fapt un fișier parolă cu liniile din acest format, 309 00:21:17,810 --> 00:21:21,060 dar că nu este cazul în care sunt definite caracteristicile utilizator. 310 00:21:21,060 --> 00:21:24,200 O altă remarcă paranteze acolo. 311 00:21:36,470 --> 00:21:46,020 >> Dacă sunteți de asteptare o coajă, se poate numi ca un sub-coajă de scoici existente. 312 00:21:46,020 --> 00:21:50,480 Deci, dacă mă duc aici, hai să scăpăm de aceste lucruri. 313 00:21:50,480 --> 00:21:53,350 Iată-mă în C-shell. 314 00:21:56,830 --> 00:22:01,200 Că variabila, care identifică cu exactitate coajă mea, 315 00:22:01,200 --> 00:22:04,300 de fapt, nu este întotdeauna un mod sigur de a determina ceea ce shell rulați, 316 00:22:04,300 --> 00:22:06,220 dar în acest caz este. 317 00:22:06,220 --> 00:22:08,040 Ce se întâmplă dacă am tip - 318 00:22:09,970 --> 00:22:12,470 Acum sunt în Bash. 319 00:22:12,470 --> 00:22:19,540 Unele lucruri sunt de gând să fie la fel. E mi-a spus poruncile Mele. 320 00:22:19,540 --> 00:22:24,500 Dacă eu nu o suspende din nou pentru a-mi C-shell, LS, același. Corect? 321 00:22:24,500 --> 00:22:28,890 fg, prim-plan, înapoi la shell-mi Bash. 322 00:22:28,890 --> 00:22:38,290 PWD, directorul curent, înapoi la C-shell. 323 00:22:38,290 --> 00:22:43,180 PWD, director diferit - de fapt, nu un director diferit în acest caz. 324 00:22:43,180 --> 00:22:45,110 Este același director. 325 00:22:45,110 --> 00:22:50,000 Să zicem că vreau să numesc o comandă aici: în cazul în care ls. 326 00:22:50,000 --> 00:22:52,140 Ce face asta? 327 00:22:52,140 --> 00:22:53,670 Ea mi-a spus în cazul în care comanda LS, 328 00:22:53,670 --> 00:22:56,670 cel care îmi dă o listare director, este situat în ls. 329 00:22:56,670 --> 00:23:01,460 Să ne întoarcem la Bash coajă. Să încercăm același lucru. 330 00:23:01,460 --> 00:23:05,830 Hmm, interesant acolo, în cazul în care: comanda nu a fost găsit. 331 00:23:05,830 --> 00:23:07,400 De ce este asta? 332 00:23:07,400 --> 00:23:11,570 În cazul în care comanda este construit în la C-shell. 333 00:23:11,570 --> 00:23:15,630 Aceasta nu este o comandă care trebuie să fie citite în memoria din altă parte și executat. 334 00:23:15,630 --> 00:23:20,310 C-shell ruleaza prin transferul de execuție la o parte din propriul său cod 335 00:23:20,310 --> 00:23:22,790 și nu este în coajă Bash. 336 00:23:22,790 --> 00:23:25,710 Deci Bash, care nu au o astfel de comanda built-in, se pare pentru el, nu-l găsiți, 337 00:23:25,710 --> 00:23:27,720 și am obține o eroare. 338 00:23:27,720 --> 00:23:32,290 Deci nu avem o coajă Bash rulează sub un C-coajă, și numim ca un sub-shell. 339 00:23:32,290 --> 00:23:38,480 Și doar în cazul în care sunteți curios, Bash coajă are propriul mod de a localiza comenzi. 340 00:23:38,480 --> 00:23:42,590 trunchiată se referă la faptul că acesta poate fi executat mai rapid, 341 00:23:42,590 --> 00:23:44,960 fiind găsit mai repede. 342 00:23:44,960 --> 00:23:48,610 Acesta este unul dintre îmbunătățirile construite în unele dintre aceste scoici. 343 00:23:50,220 --> 00:23:54,200 >> Scoici de tip Bourne sunt preferate pentru programare. 344 00:23:54,200 --> 00:23:57,300 Ei au structuri de control, cum ar fi bucle, declarații condiționale, 345 00:23:57,300 --> 00:24:00,240 un fel de comenzi pe care le-ar putea folosi în limbaje de programare cum ar fi C 346 00:24:00,240 --> 00:24:04,190 sau orice limbă. Poate că sunteți de programare în Java sau orice altceva. 347 00:24:04,190 --> 00:24:06,460 Scoici au cei prea. 348 00:24:06,460 --> 00:24:11,790 Cojile de tip Bourne, în special Bash, au mai 349 00:24:11,790 --> 00:24:15,730 și ele sunt proiectate cu o mai mare flexibilitate. 350 00:24:15,730 --> 00:24:20,700 Bash învelișul are tablouri. Original Bourne shell nu. 351 00:24:20,700 --> 00:24:26,130 Astfel că poate fi considerabil avantajoasă pentru programare. 352 00:24:26,130 --> 00:24:29,810 C-shell de fapt, are tablouri, dar nu are o multime de alte caracteristici. 353 00:24:29,810 --> 00:24:33,450 Cojile de tip Bourne va executa mai repede 354 00:24:33,450 --> 00:24:36,520 în cazul în care nu au caracteristicile destinate utilizării interactiv. 355 00:24:36,520 --> 00:24:39,340 Încărcați lucrurile jos pentru un singur scop, aceasta le încarcă în jos pentru un alt scop. 356 00:24:39,340 --> 00:24:41,520 Nu e compromis acolo. 357 00:24:41,520 --> 00:24:44,510 Acele caracteristici care sunt destinate a fi utilizate interactiv 358 00:24:44,510 --> 00:24:46,920 într-adevăr sunt de puțin sau nici un folos pentru scripting. 359 00:24:46,920 --> 00:24:52,160 Este posibil să se utilizeze un sub-shell interactiv la fel ca cea pe care am început acolo 360 00:24:52,160 --> 00:24:57,780 pentru a testa comenzi pe care intenționați să le utilizați într-un script. 361 00:24:57,780 --> 00:25:01,180 Asta e ceea ce nu se poate face cu perl. Poti sa o faci cu scoici. 362 00:25:01,180 --> 00:25:04,850 Chiar și ale altor structuri de bucle și așa mai departe pot fi rulate interactiv. 363 00:25:04,850 --> 00:25:07,000 Ele sunt uneori utile pentru a rula interactiv, 364 00:25:07,000 --> 00:25:10,180 dar mult mai probabil esti le folosesc pentru a dezvolta un script. 365 00:25:15,690 --> 00:25:17,400 >> Alias. 366 00:25:17,400 --> 00:25:21,630 Acest lucru va fi despre C-shell. 367 00:25:23,270 --> 00:25:27,570 Mecanismul de istorie în cazul în care te-ai întors la comenzile anterioare 368 00:25:27,570 --> 00:25:30,340 sau părți din acestea pe care le-ați deja executați. 369 00:25:30,340 --> 00:25:33,680 Din nou, despre C-shell, shell-ul Bourne și shell-ul Korn au aceste lucruri, 370 00:25:33,680 --> 00:25:35,620 dar eu nu am de gând pentru a obține în ele. 371 00:25:35,620 --> 00:25:40,340 Deci, aici sunt câteva pseudonime utile pe care le am. 372 00:25:43,100 --> 00:25:44,880 În loc să tastați ls - este o comandă comună - 373 00:25:44,880 --> 00:25:47,620 doar de tip l și salvați-vă un caracter. 374 00:25:47,620 --> 00:25:50,600 E cu diverse opțiuni, toți cei de lucru. 375 00:25:50,600 --> 00:25:54,460 Rețineți că aceste definiții au ghilimele jurul lor. 376 00:25:54,460 --> 00:25:57,520 În aceste cazuri, ghilimelele nu sunt necesare. 377 00:25:57,520 --> 00:26:00,100 Dacă se poate defini aceste alias-uri fără ghilimele, va funcționa în continuare. 378 00:26:00,100 --> 00:26:02,910 Ele sunt recomandate. 379 00:26:02,910 --> 00:26:04,900 Există situații în care nu puteți utiliza citat 380 00:26:04,900 --> 00:26:08,050 pentru că vrei să se întâmple ceva care oferta ar împiedica. 381 00:26:08,050 --> 00:26:11,210 Uneori, puteți cita parte a definiției, dar nu toate de el. 382 00:26:11,210 --> 00:26:17,010 Este, de asemenea, în general, recomandat să folosiți ghilimele simple, mai degrabă decât ghilimele. 383 00:26:17,010 --> 00:26:19,750 Ghilimele duble avea efecte asupra definițiilor variabile, 384 00:26:19,750 --> 00:26:22,950 în special făcându-le să fie evaluate mai degrabă decât oprindu-l. 385 00:26:22,950 --> 00:26:25,910 De ce ne-ar dori să se oprească evaluarea? 386 00:26:25,910 --> 00:26:28,710 Și cum citate face asta pentru noi? 387 00:26:28,710 --> 00:26:32,600 >> Aici este o comandă pe care s-ar putea găsi interesant. 388 00:26:32,600 --> 00:26:35,470 "Ls g *" 389 00:26:35,470 --> 00:26:37,640 g *, după cum probabil știți, este o expresie wildcard 390 00:26:37,640 --> 00:26:40,290 pentru toate numele de fișiere care încep cu g. 391 00:26:40,290 --> 00:26:46,410 Dacă am scrie intr-o comanda ls g *, voi primi o listă cu toate aceste nume în directorul meu curent. 392 00:26:46,410 --> 00:26:50,870 Dacă am defini ca alias așa cum este aici cu citate, 393 00:26:50,870 --> 00:26:56,990 se va rula ca comanda în directorul curent în cazul în care te-l rulează. 394 00:26:56,990 --> 00:27:01,250 Dar, dacă aveți definiția alias fără ghilimele, 395 00:27:01,250 --> 00:27:09,620 se va evalua wildcard g * atunci când se execută această comandă definire. 396 00:27:09,620 --> 00:27:14,400 Deci, definiția alias va fi ls urmată de lista de fișiere în directorul 397 00:27:14,400 --> 00:27:16,310 în care comanda alias este executat, 398 00:27:16,310 --> 00:27:19,180 indiferent de locul în care de fapt intenționați să rulați comanda. 399 00:27:19,180 --> 00:27:26,360 Acest lucru nu este de mare folos, și citatele unice preveni evaluarea asterisc. 400 00:27:26,360 --> 00:27:30,780 Astfel încât să obțineți doar la definirea fiind ls g *. 401 00:27:30,780 --> 00:27:35,510 Atunci când rulați alias, LGS, se pune apoi asta. 402 00:27:35,510 --> 00:27:40,490 Acum nu există cotații, și se va evalua asterisc când executați comanda alias. 403 00:27:40,490 --> 00:27:43,900 Deci asta e un lucru. 404 00:27:43,900 --> 00:27:46,590 Ghilimele duble ar avea același efect aici, 405 00:27:46,590 --> 00:27:50,580 dar există și alte cazuri în care ghilimele nu ar funcționa atât de bine. 406 00:27:50,580 --> 00:27:52,450 >> Aici este un alt unul. 407 00:27:52,450 --> 00:27:54,270 S-ar putea ști comanda grep. 408 00:27:54,270 --> 00:28:02,110 Comanda grep poate fi folosit pentru a scana un fișier de linii care au anumite șiruri. 409 00:28:02,110 --> 00:28:10,350 Deci, haideți să mergem pe aici și voi ieși din cochilia mea Bourne. 410 00:28:23,570 --> 00:28:25,450 Bine. Iată un fișier. 411 00:28:25,450 --> 00:28:31,490 Să zicem că e grep siruri de caractere abc. Nu este. 412 00:28:31,490 --> 00:28:37,930 Dacă fac zddd grep, primesc nimic. Bine. 413 00:28:37,930 --> 00:28:40,960 Deci, se constată un șir de caractere, se raportează, nu se găsesc, nu se raportează. 414 00:28:40,960 --> 00:28:44,930 Să emită orice linie care are ca șir pe ea. 415 00:28:44,930 --> 00:28:49,080 Există tot felul de opțiuni de aici, pe care le puteți găsi în documentația. 416 00:28:49,080 --> 00:28:52,160 Iată un mod de a face acest lucru. 417 00:28:52,160 --> 00:29:03,290 Ce spui de asta, alias grabc "grep abc"? 418 00:29:03,290 --> 00:29:09,000 Care va include un argument atunci când alias-ul este definit. 419 00:29:09,000 --> 00:29:26,300 Deci, dacă am face asta aici, acum, dacă eu fac grabc, 420 00:29:26,300 --> 00:29:30,620 acum alias-ul include mai mult de comanda simpla. Ea are, de asemenea, argumentul. 421 00:29:30,620 --> 00:29:32,190 Până în prezent, care funcționează. 422 00:29:32,190 --> 00:29:38,590 Eu am o altă comandă de aici, asta, deci acestea sunt diferite siruri de caractere acolo 423 00:29:38,590 --> 00:29:46,790 și arată că acest lucru nu va găsi nimic acolo, deoarece nu se potrivește. 424 00:29:46,790 --> 00:29:56,180 >> Ce se întâmplă dacă vreau să includă în definiția alias fișierul pe care am de gând să caute 425 00:29:56,180 --> 00:30:02,970 și vreau să dau ca un argument pentru alias șirul pe care caut? 426 00:30:02,970 --> 00:30:08,040 S-ar putea să vă spun ABC ca argument pentru alias meu, 427 00:30:08,040 --> 00:30:10,870 dar alias-ul a determinat deja dosarul. 428 00:30:10,870 --> 00:30:15,710 Și asta e în cazul în care această expresie vine inch 429 00:30:20,430 --> 00:30:25,270 Observați aici avem grep la fel ca înainte. 430 00:30:25,270 --> 00:30:28,130 Avem dosarul aici, siruri de caractere. 431 00:30:28,130 --> 00:30:35,610 \! ^, Un fel de expresie ciudat, cred că, dacă nu ați văzut acest lucru înainte. 432 00:30:35,610 --> 00:30:39,920 Semn de exclamare este parte a mecanismului de istorie C-shell. 433 00:30:39,920 --> 00:30:45,220 Se poate aminti comenzi anterioare, se pot aminti argumente pentru aceste comenzi și așa mai departe. 434 00:30:46,760 --> 00:31:01,570 Mecanismul de istorie este utilizat ca parte a aliasing. 435 00:31:01,570 --> 00:31:07,390 Dacă specificați o linie după semn de exclamare, se va referi la acea linie în lista de istorie, 436 00:31:07,390 --> 00:31:11,910 care nu va fi obtinerea în prezent, deoarece este un alt subiect întreg. 437 00:31:11,910 --> 00:31:16,280 Este posibil să se specifice o parte a unei linii. 438 00:31:16,280 --> 00:31:22,950 Astfel! 03:02 ar fi al doilea argument de număr de comandă 3. 439 00:31:22,950 --> 00:31:30,430 Cursorul aici, în această expresie reprezintă primul argument. 440 00:31:30,430 --> 00:31:34,410 Dacă nu dau un indiciu de ce comanda te referi la, 441 00:31:34,410 --> 00:31:37,300 se referă la comanda imediat anterioară, 442 00:31:37,300 --> 00:31:41,990 și cursorul este un simbol pentru primul argument. 443 00:31:41,990 --> 00:31:46,820 Pentru că e cursorului și nu numărul, nu aveți nevoie pentru a utiliza colon, 444 00:31:46,820 --> 00:31:52,660 astfel! ^ înseamnă primul argument al comenzii precedente. 445 00:31:52,660 --> 00:31:55,020 Un pic amestecat aici. 446 00:31:55,020 --> 00:31:58,450 În acest caz, atunci când utilizați acest lucru ca pe o definiție alias, 447 00:31:58,450 --> 00:32:04,650 de referință de istorie se referă înapoi la comenzile în care este folosit alias. 448 00:32:04,650 --> 00:32:08,470 Deci, acest lucru se întâmplă din nou o comandă ca o operațiune de istorie, 449 00:32:08,470 --> 00:32:11,810 ci ca o operațiune alias se referă la comanda în care trebuie să tastați, 450 00:32:11,810 --> 00:32:14,780 spune, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Avem citate aici, în ea. Care este backslash pentru? 452 00:32:20,240 --> 00:32:30,810 În acest caz, ca și în altă parte, nu vrem să execute mecanismul de istorie 453 00:32:30,810 --> 00:32:33,680 în timp ce definirea alias. 454 00:32:33,680 --> 00:32:37,900 Dacă nu am avea backslash acolo, shell-ar trage în primul argument 455 00:32:37,900 --> 00:32:41,870 a comanda chiar înainte de aceasta a fugit de această comandă alias, pe care nu vrem. 456 00:32:41,870 --> 00:32:47,520 Ne dorim ca acest lucru să fie construit în a comanda alias de a apela la un argument mai târziu. 457 00:32:47,520 --> 00:32:53,550 Singur citate nu se pot sustrage un semn de exclamare, referința istorie. 458 00:32:53,550 --> 00:32:57,450 Poate că știți evadarea expresie înseamnă a schimba sensul de ceva. 459 00:32:57,450 --> 00:33:00,260 În acest caz, înseamnă să oprească ceva de la a avea o semnificație specială. 460 00:33:00,260 --> 00:33:03,030 Semnificație specială semn de exclamare este istorie. 461 00:33:03,030 --> 00:33:05,790 Scăpa și nu are ca semnificație. 462 00:33:05,790 --> 00:33:08,080 Citate nu fac asta; backslash face. 463 00:33:08,080 --> 00:33:11,900 Deci, suntem de fapt, folosind 2 nivele de a scăpa de aici. 464 00:33:23,500 --> 00:33:29,620 Am de gând să se mute această comandă într-o altă fereastră fără a introduce o 465 00:33:29,620 --> 00:33:35,210 prin utilizarea acestor operațiuni de editare, care vă pot fi utile. 466 00:33:40,620 --> 00:33:42,460 Altceva aici să-ți arăt. 467 00:33:42,460 --> 00:33:46,730 Dacă tastați doar alias fără argumente, se va spune toate argumentele tale. 468 00:33:46,730 --> 00:33:48,640 Aceasta este o grămadă de alias-uri am avut deja aici 469 00:33:48,640 --> 00:33:53,400 în afară de cele pe care le-am folosit azi aici. 470 00:33:53,400 --> 00:34:00,220 Dar dacă am tip cu numele de un alias, acesta mi-a spus ce înseamnă. 471 00:34:00,220 --> 00:34:03,390 Observați că citatele sunt plecat și backslash este plecat. 472 00:34:03,390 --> 00:34:08,620 Acest șir de aici este rezultatul acestei definiții alias, 473 00:34:08,620 --> 00:34:12,199 și acum are doar! ^ în ea. 474 00:34:12,199 --> 00:34:19,150 Acest lucru este de gând să se uite în siruri de caractere de fișiere pentru nimic. 475 00:34:19,150 --> 00:34:34,900 Deci, dacă am face sfori grstrings_file, nu am da orice pentru a căuta acolo, 476 00:34:34,900 --> 00:34:37,429 dar se uită în siruri de caractere. 477 00:34:37,429 --> 00:34:42,330 Acesta nu a găsit siruri de caractere de text în siruri de caractere de fișiere, dar nu găsi abc. 478 00:34:42,330 --> 00:34:46,770 Și nu găsesc asta. 479 00:34:46,770 --> 00:34:52,330 Deci, aici ne dau un argument care lovește în definiția alias, 480 00:34:52,330 --> 00:34:55,530 care este introdus în ea. 481 00:34:55,530 --> 00:34:58,540 Este cazul în care această expresie provine de la. 482 00:34:58,540 --> 00:35:00,240 Puteți utiliza mai mult de 1. 483 00:35:00,240 --> 00:35:03,170 Cursorul este un simbol pentru primul argument. 484 00:35:03,170 --> 00:35:07,510 Dacă ai vrut să utilizeze un al doilea argument, ai putea spune atunci: 2. 485 00:35:07,510 --> 00:35:11,250 Nu e nici un simbol special pentru al doilea argument. 486 00:35:11,250 --> 00:35:14,790 Și pentru că sunteți folosind un numeral, va trebui să utilizați de colon. 487 00:35:14,790 --> 00:35:17,220 Există, totuși, o altă alegere aici. 488 00:35:17,220 --> 00:35:21,220 Semnul dolar standuri pentru ultimul argument. 489 00:35:21,220 --> 00:35:23,320 Și pentru că acesta este un simbol, se pot omite de colon. 490 00:35:23,320 --> 00:35:25,870 Asa ca ar fi ultimul argument în listă. 491 00:35:25,870 --> 00:35:27,900 Și există, de asemenea, că unul. 492 00:35:27,900 --> 00:35:31,380 Asterisc înseamnă toate, astfel încât aceasta este lista completă argument, 493 00:35:31,380 --> 00:35:35,150 și din nou, puteți omite de colon, deoarece nu este un numeral. 494 00:35:36,970 --> 00:35:39,950 Sper că respectarea tuturor asta. 495 00:35:39,950 --> 00:35:54,100 >> Mecanismul de istorie pot merge înapoi la liniile anterioare în lista de istorie. 496 00:35:54,100 --> 00:36:01,370 Ai putea face acest lucru într-o definiție alias. 497 00:36:01,370 --> 00:36:02,950 N-am mai văzut acest lucru făcut. 498 00:36:02,950 --> 00:36:05,840 Aceasta ar avea ca efect scoaterea comenzi anterioare din lista de istorie 499 00:36:05,840 --> 00:36:08,130 atunci când executa alias, care ar putea fi comenzi diferite 500 00:36:08,130 --> 00:36:11,240 în funcție de când și în cazul în care o executa. 501 00:36:11,240 --> 00:36:14,020 Teoretic este posibil să doriți pentru a scoate o astfel de trimitere 502 00:36:14,020 --> 00:36:15,900 doar să știu ce a fost o comandă mai devreme. 503 00:36:15,900 --> 00:36:17,280 N-am mai văzut acest lucru. 504 00:36:17,280 --> 00:36:19,970 Cred că cineva ar putea dori, dar acest lucru este foarte puțin probabil. 505 00:36:19,970 --> 00:36:26,480 Nu este un alt lucru aici. 506 00:36:26,480 --> 00:36:33,060 Dacă utilizați ca referință de istorie-tip, 507 00:36:33,060 --> 00:36:38,190 apoi sunt utilizate numai argumentele pentru care există o astfel de trimitere. 508 00:36:38,190 --> 00:36:42,180 Dacă aveți o definiție alias care nu utilizează o referință de istorie-tip, 509 00:36:42,180 --> 00:36:44,060 dacă devine doar începutul comenzii 510 00:36:44,060 --> 00:36:46,520 și aveți argumente suplimentare, atunci orice veți scrie după care 511 00:36:46,520 --> 00:36:48,450 vor fi adăugate la comanda. 512 00:36:48,450 --> 00:36:52,040 În acest caz, exemplul doar i-am dat acolo, am folosit primul argument; 513 00:36:52,040 --> 00:36:54,610 nu am folosit nici alții. 514 00:36:54,610 --> 00:36:57,960 Dacă alte argumente au fost date in linia de comanda, acestea nu vor fi utilizate. 515 00:36:57,960 --> 00:37:04,630 Deci, dacă utilizați de referință de istorie, la toate, atunci trebuie să-l folosească pentru a obține orice argument. 516 00:37:04,630 --> 00:37:11,310 >> Mai e ceva aici, vreau doar să menționez, în parte paranteză, 517 00:37:11,310 --> 00:37:15,250 și anume că acest mecanism istorie cu semn de exclamare 518 00:37:15,250 --> 00:37:18,010 merge înapoi la original C-shell. 519 00:37:18,010 --> 00:37:27,060 Tcsh a introdus operațiunile de istorie 520 00:37:27,060 --> 00:37:30,910 care folosesc tipurile de comenzi și siruri de caractere de la editori, 521 00:37:30,910 --> 00:37:33,650 fie Emacs sau vi. 522 00:37:33,650 --> 00:37:36,430 Părerea mea personală este Emacs este mult mai ușor de utilizat pentru acest scop 523 00:37:36,430 --> 00:37:39,390 chiar dacă vi folosiți pentru editare regulat. 524 00:37:39,390 --> 00:37:43,900 Există mai multe comenzi Emacs care sunt acum adaptate pentru istorie. 525 00:37:43,900 --> 00:37:46,410 De control P devine linia anterioară în lista de istorie. 526 00:37:46,410 --> 00:37:48,840 Un alt control P veți obține cea înainte. 527 00:37:48,840 --> 00:37:50,540 Săgeata în sus face același lucru. 528 00:37:50,540 --> 00:37:54,190 De control N devine următoarea comandă dacă ați defilat deja înapoi unele moduri. 529 00:37:54,190 --> 00:37:55,880 Săgeată în jos face asta. 530 00:37:55,880 --> 00:38:00,480 Puteți muta la stânga la dreapta cu săgeți și diverse alte lucruri. 531 00:38:00,480 --> 00:38:02,390 Acest lucru se poate face uz de mecanismul istoriei 532 00:38:02,390 --> 00:38:05,070 mult mai ușor decât folosind sintaxa punct de exclamare, 533 00:38:05,070 --> 00:38:07,930 dar nu s-ar folosi într-o definiție alias. 534 00:38:17,780 --> 00:38:20,020 Vom trece peste asta altă dată. 535 00:38:24,300 --> 00:38:25,810 >> Variabile. 536 00:38:26,880 --> 00:38:29,510 Știi ce variabile sunt în limbaje de programare. 537 00:38:29,510 --> 00:38:31,680 Cojile le au, de asemenea. 538 00:38:31,680 --> 00:38:37,350 C-shell folosește comanda setat pentru a atribui variabile, 539 00:38:37,350 --> 00:38:41,360 astfel încât setează variabila a pentru valoarea b - 540 00:38:41,360 --> 00:38:46,390 așa cum am spus, o definiție inutil, ci o ilustrare a modului în care este folosit acest. 541 00:38:48,790 --> 00:38:52,410 Comanda set va crea o variabilă în cazul în care nu există deja. 542 00:38:55,270 --> 00:39:02,490 Parametrii pozitionali de script-uri shell pot fi considerate variabile, 543 00:39:02,490 --> 00:39:10,750 dar utilizarea lor, precum și normele pentru acestea sunt oarecum diferite. 544 00:39:10,750 --> 00:39:14,320 Nu se poate atribui o valoare de 1 dolar în cursul unui script. 545 00:39:14,320 --> 00:39:18,340 Tu ar trebui să definească o nouă variabilă în acest sens, dacă unii dintre voi a vrut să. 546 00:39:23,000 --> 00:39:28,470 Tip set cu argumente și veți obține o listă cu toate variabilele definite în prezent. 547 00:39:28,470 --> 00:39:34,220 Și să trecem pe la alte cochilia mea aici și să vedem ce putem obține dacă facem asta. 548 00:39:34,220 --> 00:39:37,110 Destul de o listă lungă acolo, corect? 549 00:39:37,110 --> 00:39:40,990 Derulați în sus un pic. Uită-te la toate astea. 550 00:39:40,990 --> 00:39:44,330 Unele dintre aceste lucruri sunt definite în mod automat de shell. 551 00:39:44,330 --> 00:39:49,320 Învelișul creează variabile și îi dă o valoare. 552 00:39:49,320 --> 00:39:52,730 Unele dintre ele sunt definite de coajă, dar apoi redefinit de către utilizator 553 00:39:52,730 --> 00:39:54,820 în funcție de preferințele sale. 554 00:39:54,820 --> 00:39:59,110 Iar unele dintre ele sunt create de către utilizator, în funcție de ceea ce face el în acea zi. 555 00:39:59,110 --> 00:40:01,880 Care este stabilit doar cu nici un argument. 556 00:40:06,920 --> 00:40:10,050 Există o caracteristică ciudat aici de acest lucru. 557 00:40:10,050 --> 00:40:17,980 Nu trebuie să fie fie spații între semnul egal și numele variabilei 558 00:40:17,980 --> 00:40:23,700 și valoarea sau spațiile de pe ambele părți ale semnului egal, 559 00:40:23,700 --> 00:40:28,940 ca în aceasta. 560 00:40:35,620 --> 00:40:41,340 Acest lucru nu va funcționa, iar acest lucru este de fapt o comandă validă 561 00:40:41,340 --> 00:40:43,390 dar aceasta nu va face ceea ce intenționați. 562 00:40:43,390 --> 00:40:50,070 Care comandă va funcționa, deoarece, dacă ai spus stabilit și un nume de variabilă 563 00:40:50,070 --> 00:40:54,890 cu nici un semn egal sau pentru a seta și un nume de variabilă cu semnul egal și nici o valoare, 564 00:40:54,890 --> 00:40:57,770 se va seta variabila la o valoare nulă. 565 00:40:57,770 --> 00:41:00,120 Deci, un set = este o comandă validă. 566 00:41:00,120 --> 00:41:04,370 Comanda set poate defini mai mult de 1 variabil pe aceeași linie. 567 00:41:04,370 --> 00:41:11,240 Deci, această comandă de aici are efectul de a defini atât a și b la valori null. 568 00:41:11,240 --> 00:41:13,470 Probabil că nu ceea ce vrei. 569 00:41:13,470 --> 00:41:17,940 Asta de aici, am menționat mai devreme, va duce la o eroare 570 00:41:17,940 --> 00:41:21,270 deoarece = b nu este o expresie validă. 571 00:41:21,270 --> 00:41:23,680 Un nume de variabilă nu poate începe cu semnul egal. 572 00:41:26,760 --> 00:41:29,080 Și acolo sunt aceste lucruri în continuare aici. 573 00:41:29,080 --> 00:41:36,820 Două puncte au fost folosite pentru a selecta argumente de la liniile de istorie, 574 00:41:36,820 --> 00:41:41,210 și ele pot fi folosite - și nu am mers în înainte - de a modifica aceste lucruri. 575 00:41:41,210 --> 00:41:44,480 Ele pot fi de asemenea utilizate pentru a modifica variabile shell. 576 00:41:44,480 --> 00:41:49,050 Asta de aici, $ a, are o valoare. 577 00:41:49,050 --> 00:41:55,040 : R va decola o extensie. 578 00:41:55,040 --> 00:41:57,200 O extensie va fi nimic în urma unui punct, 579 00:41:57,200 --> 00:41:59,200 un punct și orice urma o la sfârșitul unui fișier, 580 00:41:59,200 --> 00:42:03,230 numai la sfârșitul listei după ultimul slash. 581 00:42:03,230 --> 00:42:05,480 Așa că am avea aici. 582 00:42:05,480 --> 00:42:10,730 o este că. Aceasta va scadea. O. 583 00:42:10,730 --> 00:42:16,510 În cazul în care nu există nici o extensie, doar fiecare cale după ultimul slash, nu va avea nici un efect. 584 00:42:16,510 --> 00:42:27,480 o: h, ca expresie variabilă, va lua de pe ultimul element al unei liste de directoare, 585 00:42:27,480 --> 00:42:29,660 din nou, numai după ultima slash. 586 00:42:29,660 --> 00:42:33,160 Deci, / a / b / c devine / a / b, 587 00:42:33,160 --> 00:42:38,870 dar acesta este schimbat, deoarece elementul după lista este nul. 588 00:42:38,870 --> 00:42:43,070 Aici există ceva care, de asemenea, vreau să subliniez. 589 00:42:43,070 --> 00:42:46,770 Aceste calificări nu caută pentru existența acestor fișiere. 590 00:42:46,770 --> 00:42:48,910 Se uita doar pentru siruri de caractere. 591 00:42:48,910 --> 00:42:54,520 Acestea sunt menite să manipuleze nume de fișiere, cai de acces, 592 00:42:54,520 --> 00:42:57,520 dar ele pot fi folosite pe orice șir, chiar dacă acesta nu este un nume de fișier. 593 00:42:57,520 --> 00:42:58,920 Și nu uita de existenta, 594 00:42:58,920 --> 00:43:03,550 așa că, dacă nu există un astfel de fișier, / a / b / c, acesta va funcționa în continuare. 595 00:43:03,550 --> 00:43:06,930 Fie că este vorba de nici un folos este o altă întrebare, dar se va lucra în continuare. 596 00:43:06,930 --> 00:43:12,850 Variabilele sunt diferite în scoici Bourne. Vom ajunge la asta mai târziu. 597 00:43:12,850 --> 00:43:18,240 Semn dolar poate fi scăpat ca semn de exclamare și asteriscul. 598 00:43:18,240 --> 00:43:21,760 Semn dolar poate fi scăpat cu o bară oblică inversă sau ghilimele unice. 599 00:43:21,760 --> 00:43:24,790 Ghilimele duble au ca efect ciudat în toate scoici 600 00:43:24,790 --> 00:43:28,690 de a impune evaluarea unui dolar semn expresie variabilă. 601 00:43:28,690 --> 00:43:31,960 Deci, dacă e să fie scăpat într-un fel, ghilimelele duble pot avea ca efect 602 00:43:31,960 --> 00:43:34,380 de determinând-o să fie evaluate oricum. 603 00:43:34,380 --> 00:43:37,090 Acesta este un pic confuz. 604 00:43:37,090 --> 00:43:43,740 Dacă există mai multe niveluri de a scăpa, cum ar fi ghilimele simple în interiorul ghilimele duble 605 00:43:43,740 --> 00:43:46,770 sau ghilimele duble în interiorul ghilimele simple, trebuie să testați pentru a vedea ce se va întâmpla 606 00:43:46,770 --> 00:43:49,520 pentru o variabilă dacă utilizați unul. 607 00:43:49,520 --> 00:43:53,410 Aceste două situații - în interiorul dublu de singur în interiorul, unic de dublu - 608 00:43:53,410 --> 00:43:55,980 nu vă dau în mod necesar același rezultat. 609 00:44:02,520 --> 00:44:05,600 Variabilele de mediu, variabile C-shell legate. 610 00:44:05,600 --> 00:44:08,340 Variabile de mediu sunt, de asemenea, variabile în C-shell, 611 00:44:08,340 --> 00:44:11,250 și acestea sunt, de asemenea, variabile în alte coji de asemenea. 612 00:44:11,250 --> 00:44:15,230 In C-shell, acestea sunt seturi distincte. 613 00:44:15,230 --> 00:44:18,130 Lucrurile pe care le spuneam mai devreme sunt de variabile coajă. 614 00:44:18,130 --> 00:44:21,300 Variabile de mediu sunt un set distinct de variabile 615 00:44:21,300 --> 00:44:28,650 cu excepția de mai multe variabile pe care le numim variabile legate, 616 00:44:28,650 --> 00:44:30,640 care sunt foarte importante si vom ajunge în cele mai târziu. 617 00:44:30,640 --> 00:44:34,950 Variabile de mediu sunt transmise în mod automat la 618 00:44:34,950 --> 00:44:41,800 la cochilii sau comenzile care sunt rulate de la shell. 619 00:44:41,800 --> 00:44:46,220 Celelalte lucruri nu sunt. Variabilele coajă, alias-urile nu sunt. Variabile de mediu sunt. 620 00:44:46,220 --> 00:44:48,630 De aceea le numim variabile de mediu, 621 00:44:48,630 --> 00:44:55,030 ideea fiind că mediul se extinde trecut doar shell-ul curent. 622 00:44:55,030 --> 00:45:00,510 Ele pot fi folosite pentru a defini lucrurile pentru comenzi. 623 00:45:00,510 --> 00:45:05,470 Aici este un exemplu. PRINTER, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Ambele aceste variabile pot defini o imprimantă care o comandă va folosi pentru a imprima lucrurile. 625 00:45:12,270 --> 00:45:16,500 Dacă aveți mai multe imprimante în jur, ați putea dori să pună unul care vă place. 626 00:45:16,500 --> 00:45:21,320 Motivul pentru care avem 2 variabile este faptul că diferite seturi de comenzi au fost scrise 627 00:45:21,320 --> 00:45:23,870 folosind aceste variabile diferite. 628 00:45:23,870 --> 00:45:25,910 Tu le-ar putea da valori diferite. 629 00:45:25,910 --> 00:45:28,860 Cel mai probabil le veți oferi atât aceeași valoare. 630 00:45:28,860 --> 00:45:35,840 Aceste lucruri de lucru, deoarece comenzile care fac imprimare 631 00:45:35,840 --> 00:45:40,740 au fost programate pentru a examina valorile acestor variabile. 632 00:45:42,200 --> 00:45:46,150 Dacă un program nu au fost scrise în acest fel, în cazul în care au fost scrise pentru a face altceva, 633 00:45:46,150 --> 00:45:48,280 variabila ar fi irelevant. 634 00:45:48,280 --> 00:45:52,530 Deci, sistemul de operare nu este în căutarea pentru aceste variabile 635 00:45:52,530 --> 00:45:55,210 de fiecare dată când se referă la o imprimantă. 636 00:45:55,210 --> 00:45:59,090 O comandă care face tipărirea este în căutarea pentru aceste variabile, dacă este programat în acest fel. 637 00:46:11,030 --> 00:46:15,240 Aceste variabile sunt adesea definite în fișierele de inițializare 638 00:46:15,240 --> 00:46:19,440 dar nu neapărat. 639 00:46:19,440 --> 00:46:21,050 Aveți posibilitatea să le defini pe linia de comandă. 640 00:46:21,050 --> 00:46:24,090 Acestea pot fi definite într-o comandă. 641 00:46:24,090 --> 00:46:28,740 O comandă care ruleaza ceva s-ar putea avea propria selecție de variabile - 642 00:46:28,740 --> 00:46:32,390 variabile care sunt unice pentru un anumit pachet software, de exemplu. 643 00:46:32,390 --> 00:46:36,740 Acestea vor fi definite atunci când rulați pachetul. 644 00:46:39,690 --> 00:46:42,680 Cum sunt aceste variabile trecut la un sub-shell? 645 00:46:42,680 --> 00:46:48,210 Când un sub-shell este scris, acesta nu scrie în acea zonă. 646 00:46:48,210 --> 00:46:53,260 Zona de sub-shell, care este dedicat pentru variabilele de mediu 647 00:46:53,260 --> 00:46:56,450 nu este scris de către sub-shell, este scris de copiere. 648 00:46:56,450 --> 00:47:00,530 Când executați o comandă obișnuită, cum ar fi aceste comenzi pentru a imprima sau orice altceva, 649 00:47:00,530 --> 00:47:03,840 ei începe prin crearea unui nou shell. 650 00:47:03,840 --> 00:47:06,190 Shell-ul creează o coajă și apoi suprascrie o parte din ea 651 00:47:06,190 --> 00:47:08,800 cu comanda pe care rulați, care este un pic confuz, 652 00:47:08,800 --> 00:47:10,740 dar asta e modul în care aceste comenzi obține variabilele de mediu 653 00:47:10,740 --> 00:47:14,890 că ele se referă apoi la mai târziu. 654 00:47:21,920 --> 00:47:28,010 Comanda aici pentru definirea setenv variabil. 655 00:47:28,010 --> 00:47:36,470 Asta e modul în care o definesc. Este 3 elemente: setenv, variabile, de valoare. 656 00:47:36,470 --> 00:47:44,710 Dacă tu chiar setenv fără argumente, ceea ce face tu a lua? 657 00:47:47,220 --> 00:47:48,810 O listă a tuturor acestor variabile. 658 00:47:48,810 --> 00:47:53,190 Din nou, aceasta este o listă frumos lung și, în acest caz, ca și în celelalte, 659 00:47:53,190 --> 00:47:57,320 aceste variabile sunt definite în mare măsură de operație mea de conectare de shell în sine 660 00:47:57,320 --> 00:47:59,740 mai degrabă decât de orice am făcut. 661 00:47:59,740 --> 00:48:03,580 Nu este o altă comandă de aici, printenv. 662 00:48:07,520 --> 00:48:10,340 Care, de asemenea, imprimă mediului. 663 00:48:10,340 --> 00:48:15,240 Observați acest ultim lucru aici, editor = vi. 664 00:48:15,240 --> 00:48:21,120 Care spune că, dacă eu sunt, folosind ceva care numește un editor 665 00:48:21,120 --> 00:48:25,530 și eu nu specificați un editor și mi-a permite alegerea, se poate da-mi vi. 666 00:48:25,530 --> 00:48:37,280 Ce se întâmplă dacă fac EDITOR printenv? Ea mi-a spus ce este. 667 00:48:37,280 --> 00:48:41,340 Chiar înainte de asta, a fost o variabilă, mai puțin. 668 00:48:41,340 --> 00:48:46,040 Acestea sunt opțiunile implicite atunci când rulați comanda mai puțin, 669 00:48:46,040 --> 00:48:49,360 care afișează fișiere. 670 00:48:49,360 --> 00:48:55,910 Deci, dacă am face asta, printenv poate dura 1 sau 0 argument argumente, 671 00:48:55,910 --> 00:48:58,070 nu mai mult de 1. 672 00:49:01,800 --> 00:49:05,690 Există și alte comenzi, de asemenea, dar noi nu vom intra în tot ceea ce ziua de azi. 673 00:49:05,690 --> 00:49:11,010 Amintiți-vă s-au modificatorii pentru variabilele de shell, cum ar fi: h, 674 00:49:11,010 --> 00:49:14,350 care va scadea ultimul element de o cale, 675 00:49:14,350 --> 00:49:17,950 sau: r, care va scădea o extensie. 676 00:49:17,950 --> 00:49:23,110 Cei care aplica acum la variabilele de mediu prea. Ei nu au folosit pentru. 677 00:49:23,110 --> 00:49:24,960 Este folosit pentru a fi nu au putut fi modificate. Acum, ele pot fi. 678 00:49:24,960 --> 00:49:29,190 Este unul dintre avansuri cu evoluțiile din cojile de-a lungul anilor. 679 00:49:29,190 --> 00:49:35,620 Spuneam că scoici, ca parte a mediilor 680 00:49:35,620 --> 00:49:43,040 și variabile coajă din C-shell sunt, cu unele excepții, seturi distincte. 681 00:49:43,040 --> 00:49:46,790 Puteți stabili o variabilă de mediu și o variabilă de shell cu același nume. 682 00:49:46,790 --> 00:49:49,220 Acestea vor fi diferite variabile, ele pot avea valori diferite. 683 00:49:49,220 --> 00:49:53,090 Schimbarea valorii unul nu se va schimba valoarea celuilalt. 684 00:49:53,090 --> 00:49:58,070 Aceste variabile sunt toate evaluate cu semnul dolar - $ a, $ orice. 685 00:49:58,070 --> 00:50:02,340 Deci, ce dacă ai asta? Știi ce o ai? 686 00:50:02,340 --> 00:50:04,520 În testele mele am ajuns variabila coajă, 687 00:50:04,520 --> 00:50:07,240 dar acest lucru nu este documentată și nu te poti baza pe asta. 688 00:50:07,240 --> 00:50:10,270 Așa că vă întreb, este de a crea variabile de coajă și de mediu 689 00:50:10,270 --> 00:50:13,490 cu același nume o idee bună? Nu. Bine. 690 00:50:13,490 --> 00:50:17,460 Care sunt cele mai importante excepții în care variabilele mediul și Shell 691 00:50:17,460 --> 00:50:19,860 sunt legate între ele? 692 00:50:19,860 --> 00:50:27,470 Există aceste 4. 693 00:50:32,030 --> 00:50:35,510 Scrisoare de capital variabilă de mediu TERM, 694 00:50:35,510 --> 00:50:41,540 coajă termen variabil în litere mici, tip de emulare de terminal. 695 00:50:41,540 --> 00:50:47,430 Mă duc să meargă pe aici și am de gând să fac ecou, ​​o comandă util aici, 696 00:50:47,430 --> 00:50:52,560 $ $ TERMEN termen. Și acolo. 697 00:50:52,560 --> 00:51:00,570 xterm este un tip de terminale pentru ferestre afișate în X Window System. 698 00:51:00,570 --> 00:51:04,330 xterm-culoare este o variație de care care permite diferite culori. 699 00:51:04,330 --> 00:51:06,580 De ce ne definim astea? Ce este acest lucru bun pentru? 700 00:51:06,580 --> 00:51:09,740 Comenzile care rearanja ecran, cum ar fi editorul 701 00:51:09,740 --> 00:51:13,680 trimite anumite secvente, numite secvențe escape, 702 00:51:13,680 --> 00:51:18,160 la un terminal sau o fereastră pentru a rearanja și așa mai departe. 703 00:51:18,160 --> 00:51:20,990 Aceste secvențe sunt diferite pentru diferite tipuri de terminale. 704 00:51:20,990 --> 00:51:23,100 Acest lucru care să le folosim spune. 705 00:51:23,100 --> 00:51:25,900 Uneori, există probleme acolo. 706 00:51:25,900 --> 00:51:28,600 S-ar putea dori să schimbe acest lucru. 707 00:51:28,600 --> 00:51:30,780 Dacă lucrurile nu sunt de lucru, uneori, tipul de terminal este setat greșit, 708 00:51:30,780 --> 00:51:36,440 ați putea fi capabil să-l repara prin redefinirea variabila pe termen lung. 709 00:51:36,440 --> 00:51:43,420 În aceste cazuri, schimbarea o variabilă, variabila de mediu sau variabila de shell, 710 00:51:43,420 --> 00:51:45,970 ar trebui să schimbe celălalt. 711 00:51:45,970 --> 00:51:50,970 Am descoperit prin experiență care schimbă pe termen lung în majuscule 712 00:51:50,970 --> 00:51:54,060 nu se schimbă mereu coajă termen variabil în litere mici. 713 00:51:54,060 --> 00:51:55,550 Acesta este un bug. 714 00:51:55,550 --> 00:51:59,400 Nu știu dacă asta e întotdeauna adevărat. Cele mai multe ori nu este adevărat, dar ea poate fi. 715 00:51:59,400 --> 00:52:02,490 Deci, dacă vă face o schimbare, trebuie doar să verificați că afară. 716 00:52:02,490 --> 00:52:05,830 Nu e de multe ori că aveți nevoie pentru a schimba această valoare, dar din când în când faci. 717 00:52:05,830 --> 00:52:08,260 USER variabilă de mediu. 718 00:52:08,260 --> 00:52:12,070 Din nou, variabilă de mediu cu majuscule, coajă variabil în litere mici. 719 00:52:12,070 --> 00:52:13,710 Acesta este numele dvs. de utilizator. 720 00:52:13,710 --> 00:52:16,730 Este numai în circumstanțe excepționale 721 00:52:16,730 --> 00:52:18,420 care le-ar dori să schimbe acest lucru. 722 00:52:18,420 --> 00:52:22,350 În cazul în care numele de utilizator este altcineva, se poate arunca tot felul de lucruri pe. 723 00:52:22,350 --> 00:52:26,040 Directorul home, directorul home al utilizatorului. 724 00:52:26,040 --> 00:52:28,060 Din nou, nu te-ar vrea să schimbe acest lucru. 725 00:52:28,060 --> 00:52:32,260 Observați în toate aceste cazuri și cea pe care suntem pe cale de a acoperi, variabila cale, 726 00:52:32,260 --> 00:52:37,070 variabilă de mediu este cu majuscule și variabila de shell este legat în litere mici. 727 00:52:37,070 --> 00:52:39,240 Dacă modificați una, ar trebui să schimbe cealaltă. 728 00:52:39,240 --> 00:52:45,960 Acest tip de legare nu poate fi stabilit ca nu se poate lega două variabile, 729 00:52:45,960 --> 00:52:50,570 altele decât aceste 4, și legarea în aceste variabile nu poate fi anulată, 730 00:52:50,570 --> 00:52:52,090 nu le puteți separa. 731 00:52:52,090 --> 00:52:55,820 Deci, aceste 4 perechi de variabile sunt legate. 732 00:52:55,820 --> 00:52:59,020 Ei întotdeauna vor fi. Nimeni altcineva nu va fi. 733 00:52:59,020 --> 00:53:05,720 In plus, ar fi posibil să se creeze variabile cu același nume 734 00:53:05,720 --> 00:53:07,780 dintre tipurile opuse. 735 00:53:07,780 --> 00:53:11,600 Ai putea face un termen variabila de shell în litere mici 736 00:53:11,600 --> 00:53:14,990 sau un mediu TERM variabilă cu majuscule. 737 00:53:14,990 --> 00:53:19,040 Aceste variabile ar fi independent de aceste variabile pereche 738 00:53:19,040 --> 00:53:20,780 și ar fi independente una de cealaltă. 739 00:53:20,780 --> 00:53:23,780 Nu-mi pot imagina de ce ar face asta dacă nu vrei să confunde oameni. 740 00:53:24,600 --> 00:53:29,730 Asta de aici, variabila PATH, acesta este unul foarte important. 741 00:53:29,730 --> 00:53:35,550 Un alt lucru este că nu poate exista cazuri 742 00:53:35,550 --> 00:53:40,430 variabilelor asociate și cu nume similare care nu sunt legate între ele. 743 00:53:40,430 --> 00:53:45,000 Nu pot fi variabile, SHELL și coajă, în capitale și litere mici. 744 00:53:45,000 --> 00:53:48,300 Pe baza acestui nume, nu știu dacă că variabila este o variabila de shell 745 00:53:48,300 --> 00:53:51,580 sau o variabilă de mediu, și ei nu legați unul de altul. 746 00:53:51,580 --> 00:53:55,300 Deci, acest tip de nume asociat nu implică variabile legate. 747 00:53:55,300 --> 00:53:58,830 Variabila cale, pe care am fost arata mai înainte, 748 00:53:58,830 --> 00:54:01,880 este o listă de cai de acces în care coajă caută comenzi. 749 00:54:01,880 --> 00:54:12,320 Să trecem peste această fereastră aici și vom face echo $ PATH, cu majuscule - 750 00:54:12,320 --> 00:54:20,230 variabilă de mediu - echo $ cale, litere mici - coajă variabil. 751 00:54:20,230 --> 00:54:24,980 Observați că lista de directoare este același. Acestea sunt legate. 752 00:54:24,980 --> 00:54:26,590 Schimba unul, schimba celălalt. 753 00:54:26,590 --> 00:54:32,970 În variabila de mediu elementele sunt separate prin doua puncte. Observați că. 754 00:54:32,970 --> 00:54:35,130 Variabilele de shell sunt separate prin spații. 755 00:54:35,130 --> 00:54:38,760 Această variabilă de mediu este un singur șir. 756 00:54:38,760 --> 00:54:41,480 Variabila shell este o matrice. 757 00:54:41,480 --> 00:54:43,490 Bourne shell nu a avut tablouri. 758 00:54:43,490 --> 00:54:46,600 Bash face, dar aceasta este deja o parte fixă ​​a carcasei. 759 00:54:46,600 --> 00:54:48,660 Acesta este un singur șir și nu o matrice. 760 00:54:48,660 --> 00:54:50,420 C-shell avut întotdeauna tablouri. 761 00:54:50,420 --> 00:54:52,630 Matrice sunt mult mai ușor de a lucra cu. 762 00:54:52,630 --> 00:54:54,400 Aveți posibilitatea să se refere la părți din acesta. 763 00:54:54,400 --> 00:55:02,350 $ Cale atât de ecou [1] și I a lua / usr / bin, primul element. 764 00:55:02,350 --> 00:55:09,950 Din nou, amintiți-vă dolar semn standuri pentru ultimul element din lista de istorie. 765 00:55:09,950 --> 00:55:16,850 Ce se întâmplă acolo? A încercat să găsească un semn dolar ca un simbol variabil. 766 00:55:16,850 --> 00:55:20,850 Am scăpa de ea. Oops. Nu ar lua nici asta. 767 00:55:20,850 --> 00:55:23,690 Unele dintre aceste lucruri nu funcționează atât de bine. 768 00:55:23,690 --> 00:55:28,140 Poate vom pleca doar asta. 769 00:55:28,140 --> 00:55:36,980 Asterisk se referă la totul, dar asta e ceea ce veți obține, dacă nu se specifică un element. 770 00:55:36,980 --> 00:55:46,170 Un alt mod care variabilele matrice poate fi manipulat, 771 00:55:46,170 --> 00:55:49,500 Numărul de elemente de acolo, 7 elemente. 772 00:55:49,500 --> 00:55:53,410 Aici am pus semnul de lire înainte de numele variabilei. 773 00:55:53,410 --> 00:55:58,280 Aici este un alt unul. A pus un semn de întrebare acolo. 774 00:55:58,280 --> 00:56:03,170 Aceasta este o valoare logică. Aceasta indică faptul că există variabila. 775 00:56:03,170 --> 00:56:05,160 Este un alt mod de a lucra cu variabile. 776 00:56:05,160 --> 00:56:06,660 Care, apropo, nu trebuie să fie o variabilă array. 777 00:56:06,660 --> 00:56:08,210 Care ar putea fi orice variabilă. 778 00:56:08,210 --> 00:56:11,840 Și dacă o fac, nu exista nici o astfel de variabilă și I a lua un 0. 779 00:56:11,840 --> 00:56:14,990 Un alt lucru mic acolo despre evaluări variabile. 780 00:56:23,670 --> 00:56:32,950 Înapoi la asta de aici, în cazul în care pentru un motiv sau altul a vrut să lucreze cu acest 781 00:56:32,950 --> 00:56:37,990 mai degrabă decât de lucru cu matrice, variabila coajă, 782 00:56:37,990 --> 00:56:41,470 există comenzi care se pot separa aceste lucruri bazat pe colon. 783 00:56:41,470 --> 00:56:44,080 De fapt, dacă ai de gând să faci acest lucru în Bash coajă, eventual, 784 00:56:44,080 --> 00:56:47,110 un fel de script, care ar fi, probabil, modul în care ar face-o. 785 00:56:47,110 --> 00:56:50,350 Dar în C-shell este mult mai ușor de a utiliza matrice. 786 00:56:50,350 --> 00:56:58,250 În coajă Bourne, variabilele sunt atribuite de către o singură expresie ca aceasta, 787 00:56:58,250 --> 00:57:01,760 cum ar fi modul în care s-ar putea atribui o variabilă într-un limbaj de programare, 788 00:57:01,760 --> 00:57:05,110 și aici nu trebuie să existe spații. 789 00:57:05,110 --> 00:57:09,110 Este necesar ca aceasta să fie doar un șir. 790 00:57:09,110 --> 00:57:14,980 În cojile de tip Bourne, toate variabilele sunt variabile coajă. 791 00:57:14,980 --> 00:57:19,250 Variabile de mediu sunt un subset de variabile shell. 792 00:57:19,250 --> 00:57:24,060 Ele se deosebesc de variabilele non-mediu de export. 793 00:57:24,060 --> 00:57:28,860 Porunca de a face acest lucru este de export, cum ar fi PRINTER export. 794 00:57:28,860 --> 00:57:34,930 Dacă ar fi să definim un astfel de variabile, 795 00:57:34,930 --> 00:57:38,480 dacă ne-am dorit o comandă de imprimare să-l găsiți, ar trebui să fie o variabilă de mediu, 796 00:57:38,480 --> 00:57:40,730 și că e modul în care am face-o. 797 00:57:40,730 --> 00:57:42,090 Aici e ceva fel de confuz. 798 00:57:42,090 --> 00:57:50,430 Această expresie, export pentru mediu, deriva din acest concept coajă Bourne, 799 00:57:50,430 --> 00:57:54,520 și totuși această expresie este folosită în descrieri ale C-shell, 800 00:57:54,520 --> 00:57:57,920 în cazul în care nu există o astfel de comandă ca export. 801 00:57:57,920 --> 00:58:06,200 Dacă spui doar de export de la sine, veți obține o listă de export - 802 00:58:06,200 --> 00:58:10,620 Deci, dacă am doar exportă aici, nici un astfel de lucru. 803 00:58:13,620 --> 00:58:15,200 Bine, acolo mergem. 804 00:58:15,200 --> 00:58:17,010 Aceste lucruri, de altfel, sunt, de asemenea, definite de shell. 805 00:58:17,010 --> 00:58:19,400 Nu am defini oricare dintre acestea de unul singur. 806 00:58:19,400 --> 00:58:23,550 Shell-ul face tot felul de lucruri de la sine. 807 00:58:23,550 --> 00:58:26,650 Acesta ar trebui să facă în mod automat lucruri. 808 00:58:30,240 --> 00:58:36,880 În Bash sau Korn shell, aveți posibilitatea să executați o comandă ca aceasta, 809 00:58:36,880 --> 00:58:42,000 care va oferi atât o variabilă o valoare și de export-l la o comandă. 810 00:58:42,000 --> 00:58:46,150 În coajă Bourne ei trebuie să fie comenzi separate, cum ar fi un export. 811 00:58:46,150 --> 00:58:48,410 Aici este un alt aspect care este confuz. 812 00:58:48,410 --> 00:58:52,220 Comanda set în C-shell definește variabile 813 00:58:52,220 --> 00:58:55,550 și cu nici un argument vă spune ce valorile variabilelor sunt. 814 00:58:55,550 --> 00:59:01,140 În Bash coajă, comanda set cu nici un argument face același lucru, 815 00:59:01,140 --> 00:59:03,580 dar cu argumente face ceva cu totul diferit. 816 00:59:03,580 --> 00:59:06,200 Deci, acestea sunt diferite argumente aici. 817 00:59:06,200 --> 00:59:10,460 Unele dintre acestea sunt variabile de mediu, unele dintre ele sunt variabile coajă. 818 00:59:10,460 --> 00:59:13,200 Toate acestea sunt variabile coajă adevărat. Unele dintre acestea sunt variabile de mediu. 819 00:59:15,690 --> 00:59:23,920 Comanda set de argumente pot fi folosite pentru a opera 820 00:59:23,920 --> 00:59:28,220 la parametrii pozitionali la un scenariu, 821 00:59:28,220 --> 00:59:33,910 care este o modalitate de a obține-le pe toate dintr-o dată. 822 00:59:33,910 --> 00:59:36,150 Noi nu putem merge într-adevăr în asta azi. 823 00:59:36,150 --> 00:59:39,580 Acesta poate fi de asemenea utilizat pentru a modifica comportamentul coajă. 824 00:59:39,580 --> 00:59:46,700 În special în Bash există variabile care vor determina modul în care se comportă coajă. 825 00:59:46,700 --> 00:59:51,310 Apoi, de asemenea, doar aceasta o comandă pe care le-ar putea vedea, aceasta comanda. 826 00:59:51,310 --> 00:59:59,050 Formateze urmate de variabile și tipuri de variabile este folosit în cochilii Korn și Bash. 827 00:59:59,050 --> 01:00:04,970 Nu este obligatoriu, dar poate fi utilizată pentru a restricționa valorile variabilelor, 828 01:00:04,970 --> 01:00:08,400 care poate fi util pentru a preveni erorile, și e destul de comun. 829 01:00:08,400 --> 01:00:11,640 Așa că eu sunt doar de menționat faptul că, în cazul în care o vezi pe undeva. 830 01:00:17,290 --> 01:00:19,160 Comanda unde. 831 01:00:19,160 --> 01:00:22,490 Amintiți-am menționat mai devreme în cazul în care comanda la C-Shell, 832 01:00:22,490 --> 01:00:28,750 care pot să vă spun locația de o cale de comandă. 833 01:00:28,750 --> 01:00:32,580 Aici este substituire de comenzi. 834 01:00:32,580 --> 01:00:41,900 Ar trebui să găsiți pe tastatură undeva un personaj care arata ca acest lucru. 835 01:00:41,900 --> 01:00:44,910 Locația de pe tastatura se va varia. 836 01:00:44,910 --> 01:00:47,050 L-am numit backquote. Este vorba despre dimensiunea de un citat. 837 01:00:47,050 --> 01:00:48,720 Se merge de la stânga sus la dreapta jos. 838 01:00:48,720 --> 01:00:52,690 Aici, pe tastatura mea Mac este în colțul din stânga sus. 839 01:00:52,690 --> 01:00:58,150 Acest caracter poate fi utilizat pentru a executa o comandă într-o comandă. 840 01:00:58,150 --> 01:01:03,400 Dacă aveți o expresie în interiorul backquotes, 841 01:01:03,400 --> 01:01:07,080 că expresia este o comandă, a rulat. 842 01:01:07,080 --> 01:01:09,010 Ieșirea de pe care comanda 843 01:01:09,010 --> 01:01:11,980 este apoi înlocuită întreaga expresia backquote 844 01:01:11,980 --> 01:01:16,110 în interiorul unei comenzi mai lung, care apoi se execută cu ieșire 845 01:01:16,110 --> 01:01:22,010 ca parte din șir sale de argumente și așa mai departe. 846 01:01:22,010 --> 01:01:28,640 Aici este o comanda care foloseste asta. 847 01:01:28,640 --> 01:01:32,340 Să demonstreze funcționarea aici. 848 01:01:44,980 --> 01:01:49,090 Să mergem pe aici, scoate backquotes. 849 01:01:49,090 --> 01:01:54,410 De control A-mi ajunge la începutul liniei cu sintaxa de editare în Emacs. 850 01:01:54,410 --> 01:02:00,380 Până în prezent, fiecare cale este ceea ce în cazul în care face, 851 01:02:00,380 --> 01:02:05,040 dar atunci cand o fac asa, atunci se conectează în lista de cai de acces 852 01:02:05,040 --> 01:02:08,750 în loc de această expresie backquote întreg și se execută ls-l pe ele. 853 01:02:08,750 --> 01:02:11,120 Fel de convenabil, nu-i asa? 854 01:02:11,120 --> 01:02:14,860 Deci asta e un lucru curat. Acesta este modul în care funcționează backquotes. 855 01:02:14,860 --> 01:02:17,560 Acum, hai să mergem în jos un pic mai departe. 856 01:02:17,560 --> 01:02:22,050 Acestea sunt pseudonime. Eu folosesc de fapt acestea. 857 01:02:22,050 --> 01:02:26,410 Voi încerca să obțineți acest lucru în cu 1 operație de editare. 858 01:02:34,900 --> 01:02:36,900 Bine. 859 01:02:36,900 --> 01:02:39,630 Acum să vedem cum aceste definiții a ieșit. 860 01:02:39,630 --> 01:02:44,930 alias LL Î-mi spui cum e definit. 861 01:02:44,930 --> 01:02:51,210 Observați că e doar asta, dar citatele exterioare au fost luate de pe 862 01:02:51,210 --> 01:02:53,750 și punctul de exclamare este scos. 863 01:02:53,750 --> 01:02:58,940 ! *, Lista completă a tuturor argumentelor. 864 01:02:58,940 --> 01:03:03,580 Într-o definiție alias se va aplica din nou în cazul în care am folosi acest. 865 01:03:03,580 --> 01:03:10,620 lwh KSH bash. Bine. 866 01:03:10,620 --> 01:03:13,960 A se vedea modul în care funcționează? Mi-salvează niște dactilografiere. 867 01:03:13,960 --> 01:03:16,440 Să mergem un pic doar pentru a menționa altceva aici. 868 01:03:19,150 --> 01:03:23,120 Observați aici aceste scoici diferite. Eu ar trebui să am menționat acest lucru înainte. 869 01:03:23,120 --> 01:03:36,060 Csh are un 2 aici și la fel / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Am putea stabili prin alte mijloace că acestea sunt de fapt același fișier. 871 01:03:39,870 --> 01:03:43,150 Amintiți-vă spuneam, dacă tastați sh te bash. 872 01:03:43,150 --> 01:03:47,390 Acest tip și veți obține acest lucru. 873 01:03:47,390 --> 01:03:51,730 Dar cei care nu sunt legate. Cei care au cele singur acolo. 874 01:03:51,730 --> 01:03:54,910 Și aceasta nu este genul de fișier care poate apela un alt unul. 875 01:03:54,910 --> 01:03:59,460 Deci, acestea sunt fișiere separate, cele de C-shell sunt același fișier. 876 01:03:59,460 --> 01:04:03,640 Înapoi aici, cealaltă aici, acest alias, 877 01:04:03,640 --> 01:04:09,090 rețineți că conduce această comandă, fișier. 878 01:04:09,090 --> 01:04:13,810 Că alias care execută. Fișier vă spune tipul de fișier. 879 01:04:13,810 --> 01:04:20,330 Deci, FWH bash KSH. Bine. 880 01:04:20,330 --> 01:04:23,230 Asta e ieșirea din fișierul de comandă. 881 01:04:23,230 --> 01:04:24,630 Nu știu dacă știți ce înseamnă acest lucru aici, 882 01:04:24,630 --> 01:04:26,750 Mach-O binar universal cu 2 arhitecturi. 883 01:04:26,750 --> 01:04:30,470 Exista 2 tipuri de procesor posibile în Mac, 884 01:04:30,470 --> 01:04:34,780 și unele programe au fost scrise pentru a fi capabil să ruleze cu ambele, 885 01:04:34,780 --> 01:04:37,950 și comanda de fișier poate stabili că, pentru ca e ceea ce înseamnă acest lucru. 886 01:04:37,950 --> 01:04:40,660 Ambele aceste dosare au fost scrise în acest fel. 887 01:04:40,660 --> 01:04:43,760 Deci, vom vedea cum funcționează alias, vom vedea cum funcționează backquote, 888 01:04:43,760 --> 01:04:48,640 vom vedea cum funcționează ls fișiere reale sau fișierul. 889 01:04:52,050 --> 01:04:57,000 Acest lucru s-ar putea să nu funcționeze. Încercați "unde, unde" și "lwh unde". Bine, să încercăm asta. 890 01:04:57,000 --> 01:05:01,040 în cazul în care. 891 01:05:01,040 --> 01:05:03,500 în cazul în care este un shell built-in. 892 01:05:03,500 --> 01:05:06,970 Amintiți-vă mai devreme am aratat ca Bash nu avea unde. 893 01:05:06,970 --> 01:05:10,080 Dacă tastați în cazul în care în Bash coajă, primiți un mesaj de eroare. 894 01:05:10,080 --> 01:05:12,540 Este doar o parte a carcasei, mai degrabă decât să fie o comandă separat. 895 01:05:12,540 --> 01:05:20,000 Ce se întâmplă dacă tipul lwh în căutarea de unde? Vezi ce se întâmplă acolo. 896 01:05:20,000 --> 01:05:22,850 Ran în cazul în care în cazul în care, luat această ieșire, și apoi a încercat să ruleze ls 897 01:05:22,850 --> 01:05:25,600 ca l pe unde este un shell built-in. 898 01:05:25,600 --> 01:05:28,790 în cazul în care este acolo, dar celelalte nu există. 899 01:05:28,790 --> 01:05:32,090 Nici unul dintre acestea există, de fapt. 900 01:05:32,090 --> 01:05:35,560 Astfel că nu funcționează întotdeauna, și se ilustrează, de asemenea, modul în care unele lucruri 901 01:05:35,560 --> 01:05:39,580 nu fac destul de ceea ce s-ar putea fi crezut. 902 01:05:40,930 --> 01:05:43,010 Să mergem în jos un pic mai departe de aici. 903 01:05:44,890 --> 01:05:54,760 Asta de aici este în Bash. Care este, de asemenea, substituire de comenzi, cum ar fi backquote. 904 01:05:54,760 --> 01:06:05,280 Dar, spre deosebire de backquote, se folosește acest stil variabilă. 905 01:06:05,280 --> 01:06:09,860 Există o serie de expresii care încep cu un semn dolar, 906 01:06:09,860 --> 01:06:16,070 și în timp ce acestea nu sunt variabile, ele împrumutat utilizarea semnului dolar 907 01:06:16,070 --> 01:06:19,570 pentru a indica o expresie de un anumit tip. 908 01:06:19,570 --> 01:06:23,550 Care poate fi înconjurat de paranteze sau paranteze sau paranteze duble, 909 01:06:23,550 --> 01:06:26,320 care are un scop diferit. 910 01:06:26,320 --> 01:06:29,500 Singur paranteze aici sunt o substituire de comenzi la fel ca backquotes. 911 01:06:29,500 --> 01:06:32,720 Paranteze duble este de fapt o operație aritmetică. 912 01:06:32,720 --> 01:06:35,380 Există și alte sintaxe, alte operațiuni. 913 01:06:35,380 --> 01:06:41,520 Sintaxa Backquote este disponibil în Bash. 914 01:06:41,520 --> 01:06:46,780 Cu toate acestea, aceasta este de preferat. Este mult mai ușor de citit și permite cuiburi. 915 01:06:46,780 --> 01:06:51,300 Puteți avea în interiorul $ (comanda) o altă comandă, 916 01:06:51,300 --> 01:06:54,590 ceva de genul - 917 01:07:14,560 --> 01:07:18,210 Am obține o listă de acolo. 918 01:07:18,210 --> 01:07:21,670 Asta ar funcționa dacă am avut backquote de asemenea. 919 01:07:32,050 --> 01:07:38,470 Ce se întâmplă dacă vreau să fac ceva de genul - 920 01:08:03,390 --> 01:08:06,430 Tu, probabil, nu s-ar folosi de fapt această comandă, 921 01:08:06,430 --> 01:08:14,160 dar această substituire de comenzi interne ecouri numele toate fișierele care încep cu o, 922 01:08:14,160 --> 01:08:18,229 apoi acesta se execută ls-l pe aceste fișiere, 923 01:08:18,229 --> 01:08:20,500 și apoi aceasta ecouri doar de ieșire. 924 01:08:21,729 --> 01:08:24,479 Probabil că nu ar face acest lucru, vei face doar ecoul sau LS, 925 01:08:24,479 --> 01:08:29,450 dar acest lucru ilustrează modul în care funcționează cuiburi de comenzi. 926 01:08:29,450 --> 01:08:34,380 Deci, doar o altă caracteristică aici. 927 01:08:34,380 --> 01:08:37,450  Am menționat mai devreme, ca atunci cand ai unde în C-shell, 928 01:08:37,450 --> 01:08:42,770 tip de lucrări în cojile de tip Bourne pentru localizarea comenzi. 929 01:08:48,939 --> 01:08:52,270 Comenzi built-in, exact ceea ce spuneam acolo. 930 01:08:52,270 --> 01:08:54,640 Comenzile sunt parte a carcasei, cum ar fi în cazul în care. 931 01:08:54,640 --> 01:08:59,880 În cazul în care shell-ul executa o comandă cum ar fi ls, îl localizează pe calea, 932 01:08:59,880 --> 01:09:03,029 consideră că este într-un director undeva, 933 01:09:03,029 --> 01:09:05,800 citește că în memorie, creează un nou shell, 934 01:09:05,800 --> 01:09:08,960 citește comanda ls sau orice altceva în coajă 935 01:09:08,960 --> 01:09:11,450 în care variabilele de mediu sunt deja localizate, 936 01:09:11,450 --> 01:09:14,000 și apoi se transferă execuție a acestuia. 937 01:09:14,000 --> 01:09:18,319 Built-in comanda, codul de care comanda este în interiorul coajă, 938 01:09:18,319 --> 01:09:21,460 astfel coajă doar începe executarea parte din propriul său cod. 939 01:09:21,460 --> 01:09:24,569 în cazul în care o astfel de comandă. Este de fapt devine mai rapid. 940 01:09:24,569 --> 01:09:28,380 Aceasta nu trebuie să citească nimic în memorie, este deja în memorie. 941 01:09:28,380 --> 01:09:32,460 Comenzi built-in au întotdeauna prioritate față de comenzile cu același nume. 942 01:09:32,460 --> 01:09:36,050 Comenzi care sunt în directoarele în calea poate avea același nume, 943 01:09:36,050 --> 01:09:39,090 comenzi în diferite directoare, fișiere în diferite directoare. 944 01:09:39,090 --> 01:09:41,740 Cea care are loc mai devreme în calea este cea pe care o vei primi. 945 01:09:41,740 --> 01:09:43,770 Dacă există o comandă de built-in, ai luat mereu. 946 01:09:43,770 --> 01:09:47,890 Nu există nici o modalitate de a da o prioritate mai mică decât o comandă în calea. 947 01:09:47,890 --> 01:09:54,140 Dacă doriți să obțineți că comanda cale, aveți posibilitatea să tastați calea completă. 948 01:09:54,140 --> 01:09:55,850 Dacă ar exista o comandă în care în calea undeva, 949 01:09:55,850 --> 01:09:58,440 ai putea tip / bin / unde și te-ai prins. 950 01:09:58,440 --> 01:10:01,800 Dacă nu doriți să tastați tot calea, ai putea defini un alias. 951 01:10:01,800 --> 01:10:06,310 De fapt, dacă ți-a dat aliasul același nume ca și comanda built-in, acesta ar funcționa 952 01:10:06,310 --> 01:10:08,790 deoarece definiția alias este evaluat 953 01:10:08,790 --> 01:10:13,220 înainte de coajă stabilește că este o comandă încorporat în care ar trebui să fie executat. 954 01:10:18,810 --> 01:10:23,440 Apoi, aceasta devine un pic mai complicat, cu unele comenzi aici. 955 01:10:23,440 --> 01:10:29,880 Cazul unor comenzi sunt de fapt built-in comenzi și în calea. 956 01:10:29,880 --> 01:10:34,140 Una dintre ele este ecou, ​​comanda am folosit în urmă cu puțin timp în aceste exemple. 957 01:10:34,140 --> 01:10:37,410 Echo este o comandă în calea și este în fiecare coajă. 958 01:10:37,410 --> 01:10:40,580 Ei nu neapărat toate se comportă în același mod. 959 01:10:40,580 --> 01:10:42,970 Aceasta a fost inițial o comandă doar în calea. 960 01:10:42,970 --> 01:10:45,280 A fost construit în a cochiliilor mai târziu. 961 01:10:45,280 --> 01:10:48,080 Pentru că există opțiuni care depind de mediul înconjurător 962 01:10:48,080 --> 01:10:52,970 și opțiunile de linie de comandă, comenzile built-in 963 01:10:52,970 --> 01:10:57,030 au fost scrise pentru a funcționa la fel ca și comanda care fusese în cale, 964 01:10:57,030 --> 01:10:59,670 este puțin probabil că ar fi fost scrise în acest fel 965 01:10:59,670 --> 01:11:01,720 în cazul în care comanda nu a fost deja scris pentru calea. 966 01:11:01,720 --> 01:11:06,180 Deci, acest lucru are efecte secundare. Istoria sa are efecte aici. 967 01:11:06,180 --> 01:11:08,380 Există opțiuni de acolo. 968 01:11:14,280 --> 01:11:23,060 Există, de asemenea, o opțiune definită de o variabilă în tcsh numit echo_style. 969 01:11:23,060 --> 01:11:27,700 Asta-i una dintre aceste variabile care pot schimba modul în care ecoul lucrări. 970 01:11:27,700 --> 01:11:30,910 Există și alte cazuri în care se poate atribui o variabilă 971 01:11:30,910 --> 01:11:36,290 care schimbă modul în care operațiunea de coajă, inclusiv o comanda built-in, funcționează. 972 01:11:36,290 --> 01:11:38,130 Aceasta nu ar afecta nimic altceva 973 01:11:38,130 --> 01:11:40,640 din moment ce alte comenzi nu au acces la variabilele coajă, 974 01:11:40,640 --> 01:11:42,090 doar variabilele de mediu. 975 01:11:42,090 --> 01:11:45,360 Dar operațiunile de coajă pot citi variabile shell. 976 01:11:45,360 --> 01:11:50,710 Că nu va lucra pentru csh. Asta e doar tcsh. Acesta este unul dintre îmbunătățiri. 977 01:11:58,540 --> 01:12:04,620 Parsarea are secvențe atunci când evaluează metacaracterele, 978 01:12:04,620 --> 01:12:08,140 atunci când se evaluează variabile, alias-uri, referințe de istorie. 979 01:12:08,140 --> 01:12:11,830 Există o anumită secvență pentru aceste lucruri. 980 01:12:11,830 --> 01:12:13,730 În cazul în care face lucrurile într-o anumită ordine 981 01:12:13,730 --> 01:12:16,080 și ajunge la ceva care este o expresie a unui fel 982 01:12:16,080 --> 01:12:20,650 care a fost deja evaluată, aceasta nu se va evalua din nou. 983 01:12:20,650 --> 01:12:24,520 În cazul în care devine, atunci se va trece doar pe personaje. 984 01:12:24,520 --> 01:12:29,920 Deci, dacă evaluarea unor expresii cum ar fi substituirea de comenzi 985 01:12:29,920 --> 01:12:36,850 sau variabilă sau orice dă naștere unei expresii 986 01:12:36,850 --> 01:12:39,240 pe care le-ar dori să fie evaluate, 987 01:12:39,240 --> 01:12:42,510 care va funcționa numai dacă evaluarea are loc mai târziu, în secvența. 988 01:12:42,510 --> 01:12:45,010 Sper ca am fost clar acolo. 989 01:12:45,010 --> 01:12:50,460 Că secvența parsarea, o operațiune în C-shell, 990 01:12:50,460 --> 01:12:56,490 nu este la fel de comenzi built-in, deoarece este pentru non-built-in comenzi. 991 01:12:56,490 --> 01:12:58,890 Eu nu sunt sigur despre Bash acolo. 992 01:12:58,890 --> 01:13:02,450 De exemplu, în cazul în care o variabilă shell produs o istorie de referință, 993 01:13:02,450 --> 01:13:04,230 probabil că nu ar merge înapoi în istorie. 994 01:13:04,230 --> 01:13:06,010 S-ar obține doar semn de exclamare. 995 01:13:06,010 --> 01:13:08,840 De fapt, putem încerca doar asta chiar acum. 996 01:13:09,720 --> 01:13:18,240 stabilit o = și vom avea pentru a pune acest acolo. 997 01:13:30,690 --> 01:13:34,580 Oh, așteptați. Scuze. Am făcut acest lucru în bash. Am vrut să o fac aici. 998 01:13:53,470 --> 01:13:56,080 A se vedea, așa că nu a evaluat că trimitere istorie 999 01:13:56,080 --> 01:14:00,520 pentru că era deja trecut de punctul de evaluare a expresiilor de istorie 1000 01:14:00,520 --> 01:14:02,720 atunci când este evaluat variabila. 1001 01:14:02,720 --> 01:14:05,550 Deci, asta e un efect de parsare. 1002 01:14:05,550 --> 01:14:08,760 Și din nou, comenzi built-in nu se realizează în același mod. 1003 01:14:08,760 --> 01:14:11,230 Bine. Să mergem la următorul aici. 1004 01:14:11,230 --> 01:14:16,060 Acest lucru este destinat să fie o linie, dar este ceea ce face mai ușor de citit. 1005 01:14:19,130 --> 01:14:21,530 Ce face asta? 1006 01:14:21,530 --> 01:14:28,640 Poate vă aduceți aminte că putem evalua asteriscuri ca wildcard-uri nume de fișier, 1007 01:14:28,640 --> 01:14:33,890 și există alte metacaractere de fișiere, cum ar fi semnul de întrebare și expresii consolă. 1008 01:14:33,890 --> 01:14:39,000 Acest tip de evaluare se numeste expandarea. 1009 01:14:39,000 --> 01:14:46,290 stabilit noglob la începutul acestei comenzi spune, nu face asta. 1010 01:14:46,290 --> 01:14:53,370 noglob unset spune du-te înapoi la a face asta. 1011 01:14:53,370 --> 01:14:56,440 Rețineți că set glob nu ar avea acest efect. 1012 01:14:56,440 --> 01:15:00,800 În limbajul obișnuit, stabilit glob sau noglob unset ar părea să fie echivalent, 1013 01:15:00,800 --> 01:15:03,290 dar aici nu este. Este noglob unset. 1014 01:15:05,120 --> 01:15:07,910 Acum Tset. Tset stat pentru set terminale. 1015 01:15:07,910 --> 01:15:11,840 Nu este folosit, care de multe ori acum, dar înainte de sisteme de ferestre au devenit disponibile 1016 01:15:11,840 --> 01:15:15,760 si tu ai avut un singur terminal, s-ar putea avea pentru a determina tipul. 1017 01:15:15,760 --> 01:15:18,700 Și dacă ceva se apropia mai mult de un Ethernet sau de rețea, 1018 01:15:18,700 --> 01:15:21,120 ați putea dori să spun că este un VT100. 1019 01:15:21,120 --> 01:15:26,630 VT100 este un fel de un standard în afaceri terminale. Ea vine de la terminalul decembrie. 1020 01:15:26,630 --> 01:15:35,270 Daca faci doar dial-up - observați că? Aceasta merge înapoi un moduri, nu-i asa? 1021 01:15:35,270 --> 01:15:39,520 Deci, dacă ne-am face Tset aici, 1022 01:15:39,520 --> 01:15:45,250 dacă am face Tset, este resetarea terminalului meu, dar nu am văzut nimic. 1023 01:15:45,250 --> 01:15:47,340 Acesta nu a schimbat nimic. 1024 01:15:47,340 --> 01:15:48,620 -Uri 1025 01:15:49,900 --> 01:15:51,480 Bine. 1026 01:15:51,480 --> 01:15:53,350 TERMEN setenv xterm-color. 1027 01:15:53,350 --> 01:15:57,080 Știm deja că termenul a fost stabilit în acest fel, astfel încât nu s-au schimbat. 1028 01:15:57,080 --> 01:15:58,860 Acesta este modul în care am dori să o facă. 1029 01:15:58,860 --> 01:16:07,080 Dar observați că această comandă, Tset-uri, ieșire doar aceste comenzi. Nu le-a alerga. 1030 01:16:07,080 --> 01:16:09,770 Nu a rula aceste comenzi, le ieșire. 1031 01:16:09,770 --> 01:16:13,650 Deci, acest lucru este destinat să producă comenzi care vor fi rulate atunci. 1032 01:16:13,650 --> 01:16:16,360 Vă amintiți comanda în acest fișier doar am arătat ai avut un Q în ea. 1033 01:16:16,360 --> 01:16:18,910 Deci, haideți să facem asta. 1034 01:16:18,910 --> 01:16:23,750 Q suprima unele de ieșire, dar asta nu contează aici, după cum puteți vedea. 1035 01:16:23,750 --> 01:16:27,980 Eu fac doar ca să-ți arăt că nu a contat. 1036 01:16:27,980 --> 01:16:31,870 Acest lucru este în sintaxă backquote. 1037 01:16:31,870 --> 01:16:35,340 Notă backquote aici, backquote aici. 1038 01:16:35,340 --> 01:16:37,680 Am omițând aceste lucruri aici. 1039 01:16:37,680 --> 01:16:39,570 Acestea sunt cazuri de spunandu-i ce să facă 1040 01:16:39,570 --> 01:16:42,050 în cazul anumitor tipuri de terminale - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, rețea, dial-up, ceea ce ai. 1042 01:16:45,400 --> 01:16:48,050 Nu contează aici, pentru că noi nu suntem de fapt face oricare dintre aceste lucruri. 1043 01:16:48,050 --> 01:16:49,720 Eu doar ilustrarea comanda. 1044 01:16:49,720 --> 01:16:55,170 Dacă am face acest lucru cu backquote, ceea ce am de gând pentru a obține? 1045 01:16:55,170 --> 01:17:00,210 De asemenea, observa aici că această inclus noglob set și noglob unset, 1046 01:17:00,210 --> 01:17:02,630 astfel încât cei care sunt acum disponibilizați în definiția. 1047 01:17:02,630 --> 01:17:05,380 Asta nu a fost întotdeauna adevărat, dar acum acestea sunt incluse în această comandă. 1048 01:17:05,380 --> 01:17:08,890 Dar să vedem ce se întâmplă dacă fac asta 1049 01:17:08,890 --> 01:17:12,570 și du-te la începutul liniei de control A și eu fac asta. 1050 01:17:14,380 --> 01:17:18,040 Bine, set: Command nu a fost găsit. Asta e un fel de ciudat, nu-i așa? 1051 01:17:18,040 --> 01:17:20,570 set este o comandă de bine-cunoscut. Este o parte a carcasei. 1052 01:17:20,570 --> 01:17:24,040 set: Command nu a fost găsit? De ce este asta? 1053 01:17:24,040 --> 01:17:26,790 Hmm. Ei bine, să ne gândim la asta. 1054 01:17:26,790 --> 01:17:31,100 Se execută o substituire de comenzi backquote, 1055 01:17:31,100 --> 01:17:37,430 și care are loc la o anumită parte a secvenței de parsarea comanda. 1056 01:17:37,430 --> 01:17:40,360 set este o comandă built-in. 1057 01:17:40,360 --> 01:17:43,900 Deci, de data aceasta nu ca substituire de comenzi, 1058 01:17:43,900 --> 01:17:48,280 este deja ajuns dincolo de punctul de a identifica comenzi built-in. 1059 01:17:48,280 --> 01:17:51,900 Deci, se tratează stabilit ca în cazul în care ar fi o comandă în calea. 1060 01:17:51,900 --> 01:17:55,440 Inutil să spun, că nu-l găsiți și veți obține o eroare. 1061 01:17:55,440 --> 01:17:59,300 Bine. Există un exemplu de secvență parsing. 1062 01:17:59,300 --> 01:18:01,460 Și ce facem cu asta? 1063 01:18:01,460 --> 01:18:04,800 Observați această comandă foarte interesant aici, eval. 1064 01:18:04,800 --> 01:18:06,530 Mă întreb ce face asta. 1065 01:18:06,530 --> 01:18:08,760 Dacă te uiți la manual - și hai să facem asta 1066 01:18:08,760 --> 01:18:12,000 pentru a arăta cât de confuz aceste manuale sunt - 1067 01:18:12,000 --> 01:18:19,400 om tcsh, manual confuz, găsirea de lucruri aici, nu este ușor, fie. 1068 01:18:19,400 --> 01:18:31,850 Aici vom merge, eval arg, astfel încât să putem avea 1 sau mai multe argumente 1069 01:18:31,850 --> 01:18:34,090 și există o listă de lucruri acolo. 1070 01:18:34,090 --> 01:18:37,730 Tratează argumentele ca date de intrare pentru shell 1071 01:18:37,730 --> 01:18:43,600 și execută comenzile care rezultă în contextul shell-ului curent. 1072 01:18:43,600 --> 01:18:46,900 Aceasta este de obicei folosit pentru a executa comenzi generate ca rezultat al comenzii 1073 01:18:46,900 --> 01:18:51,310 sau substituție variabilă, deoarece parsing are loc înainte de aceste înlocuiri. 1074 01:18:51,310 --> 01:18:52,580 Foarte bine. 1075 01:18:52,580 --> 01:18:54,740 Și aici se referă chiar la comanda Tset pentru o utilizare eșantion 1076 01:18:54,740 --> 01:18:57,700 ca cel tocmai v-am arătat. 1077 01:18:57,700 --> 01:19:00,440 Acum trebuie să mă fereastra din spate la un loc util. 1078 01:19:03,150 --> 01:19:07,800 Hai vino aici și vom vedea că eval este folosită chiar înainte de asta. 1079 01:19:07,800 --> 01:19:14,010 Deci, haideți să vedem ce se întâmplă dacă am pus - aici vom merge cu săgețile la care comanda 1080 01:19:14,010 --> 01:19:20,940 și control A la început, eval. 1081 01:19:20,940 --> 01:19:22,850 Bine, așa că funcționează. 1082 01:19:22,850 --> 01:19:26,440 Când faci eval, este nevoie de ceea ce vine după ea și face o comandă. 1083 01:19:26,440 --> 01:19:29,460 Acest lucru vă permite să-l analiza în esență de două ori. 1084 01:19:29,460 --> 01:19:33,710 Secțiunea aici conduce această comandă în interiorul backquotes, 1085 01:19:33,710 --> 01:19:36,210 devine de ieșire. 1086 01:19:36,210 --> 01:19:42,850 De ieșire ar trebui să fi rulat ca aceste comenzi aici ca acestea 1087 01:19:42,850 --> 01:19:45,890 la acesta și acesta. 1088 01:19:45,890 --> 01:19:50,100 Deci, aceste comenzi sunt acum aici, în această ordine, 1089 01:19:50,100 --> 01:19:58,950 dar acestea sunt built-in comenzi și nu le pot obține imediat. 1090 01:19:58,950 --> 01:20:06,440 Deci, mergem la eval, eval ponturi asta, incepe peste tot din nou totul, și funcționează. 1091 01:20:06,440 --> 01:20:18,460 Un exemplu atât de backquoting, eval, parsing, consecințele parsing, 1092 01:20:18,460 --> 01:20:21,910 și o comandă care este, probabil, de utilizare foarte puțin pentru tine în zilele noastre. 1093 01:20:21,910 --> 01:20:25,540 Bine. În regulă, umask. 1094 01:20:25,540 --> 01:20:32,160 Să ne uităm la această comandă aici, umask 022. Mă întreb ce face asta. 1095 01:20:32,160 --> 01:20:38,420 Să tip umask cu nimic după el. 22. Bine. 1096 01:20:38,420 --> 01:20:44,350 022 și o facem din nou. 1097 01:20:44,350 --> 01:20:48,580 După cum ați ghicit, umask cu nici un argument ce spune masca curent; 1098 01:20:48,580 --> 01:20:51,760 umask cu argumente face asta, dar asta a fost cea pe care am avut deja. 1099 01:20:51,760 --> 01:20:53,800 Ce înseamnă 022 înseamnă? 1100 01:21:01,650 --> 01:21:07,080 Acestea sunt aici protecțiile pentru un fișier. 1101 01:21:07,080 --> 01:21:11,440 Ele determină care este permis să citească sau să scrie sau executa fisierul. 1102 01:21:11,440 --> 01:21:16,560 Protecție sunt, de asemenea, numite permisiuni. 1103 01:21:16,560 --> 01:21:21,390 R standuri pentru citire, W pentru scriere, 1104 01:21:21,390 --> 01:21:25,500 și x, care nu este prezent acolo, reprezintă executa. 1105 01:21:25,500 --> 01:21:27,260 Exista 3 categorii de acolo. 1106 01:21:27,260 --> 01:21:33,540 Ultimele 3 elemente sunt în categoria de utilizatori. Cei care se aplică la mine, utilizatorul. 1107 01:21:33,540 --> 01:21:36,870 Aceste 3 aici se aplică la grup. 1108 01:21:36,870 --> 01:21:41,590 Fișierul aparține un grup, utilizator poate apartine mai multor grupuri, 1109 01:21:41,590 --> 01:21:47,150 dar în cazul în care utilizatorul este în grupul din care face parte acest fișier, 1110 01:21:47,150 --> 01:21:51,090 atunci aceste protecții se va aplica la el dacă nu-i utilizatorului. 1111 01:21:51,090 --> 01:21:54,230 Și aceasta este oricine altcineva. 1112 01:21:55,540 --> 01:21:57,690 Aceste categorii se exclud reciproc. 1113 01:21:57,690 --> 01:21:59,750 Utilizatorul protecție se aplică la el, 1114 01:21:59,750 --> 01:22:03,780 protecțiile de grup se aplică membrilor grupului, altele decât utilizatorul, 1115 01:22:03,780 --> 01:22:08,110 și alte protecțiile se aplică numai la altele decât utilizatorii și membrii grupului de persoane. 1116 01:22:08,110 --> 01:22:12,320 Dacă există un r sau aw sau un x, înseamnă că se acordă protecție. 1117 01:22:12,320 --> 01:22:13,950 Dacă există o cratimă, inseamna ca nu este. 1118 01:22:13,950 --> 01:22:16,690 Există de fapt, sunt alte lucruri care pot fi puse aici în afară de acestea, 1119 01:22:16,690 --> 01:22:18,350 care nu va primi în acum. 1120 01:22:18,350 --> 01:22:24,450 Umask definește o valoare implicită pentru fișierele pe care le creați. 1121 01:22:24,450 --> 01:22:28,580 Și, ca o mască, de fapt se spune de biți pe care nu le stabilit. 1122 01:22:28,580 --> 01:22:30,450 Cum a devenit acest biți? 1123 01:22:30,450 --> 01:22:33,240 Dacă credeți că de fiecare dintre ele ca un număr octal, 1124 01:22:33,240 --> 01:22:42,120 aceasta este bitul de 1s, aceasta este 2s, aceasta este 4s. 1125 01:22:42,120 --> 01:22:45,840 Deci, de la 0 la 7 1126 01:22:45,840 --> 01:22:51,770 va descrie ceea ce combinație de R, w, iar x pe care le au pentru aceste 3 1127 01:22:51,770 --> 01:22:53,710 și apoi un număr similar de acestea și apoi pentru acestea. 1128 01:22:53,710 --> 01:23:12,030 Deci 022 0 înseamnă pentru altul, 2 pentru grup, 2 pentru utilizator. 1129 01:23:12,030 --> 01:23:15,870 Dar aceasta este o mască. Masca este ceea ce nu ai. 1130 01:23:19,380 --> 01:23:20,610 Îmi pare rău. Tocmai ți-am dat lucrurile în ordine greșită. 1131 01:23:20,610 --> 01:23:25,620 Este prima 3. Acestea 3 sunt utilizator, acestea 3 sunt grupul, acestea sunt 3 cealaltă. 1132 01:23:25,620 --> 01:23:27,970 Îmi pare rău că ți-a dat astea în ordine greșită. 1133 01:23:27,970 --> 01:23:31,910 0, care este primul de cei care, nu se afișează valoarea, 1134 01:23:31,910 --> 01:23:35,430 dar în cazul în care un număr nu este acolo, e un 0. 1135 01:23:35,430 --> 01:23:38,370 Asta înseamnă că toate 3 din acestea ar fi permis. 1136 01:23:38,370 --> 01:23:41,550 Observați că, în această special, una x nu este permisă. 1137 01:23:41,550 --> 01:23:44,090 Motivul este că învelișul este capabil de a determina 1138 01:23:44,090 --> 01:23:46,260 dacă un fișier ar trebui să fie executat sau nu. 1139 01:23:46,260 --> 01:23:49,800 Din moment ce acest lucru nu este un fișier executabil, nu a stabilit x. 1140 01:23:49,800 --> 01:23:54,000 Cele două mijloacele pe care scrie permisiune, a doua categorie de aici, 1141 01:23:54,000 --> 01:23:56,500 cel din mijloc, este refuzat. 1142 01:23:56,500 --> 01:23:58,500 Deci, din nou, acestea sunt lucrurile pe care ea a negat. 1143 01:23:58,500 --> 01:24:02,080 Ei bine, x este permis, dar nu e aici, pentru că nu este executabil 1144 01:24:02,080 --> 01:24:04,260 și în mod similar pentru ceilalți. 1145 01:24:04,260 --> 01:24:08,880 Așa că e un umask comun. 1146 01:24:08,880 --> 01:24:14,630 Un alt unul comun este de 700 - da-te tot și nimeni altcineva nimic. 1147 01:24:14,630 --> 01:24:17,040 Și mai există și alte posibilități. 1148 01:24:21,340 --> 01:24:27,110 Mă voi întoarce la asta. Utilizarea istoria pot căuta înapoi pentru că, lwh de acolo. 1149 01:24:27,110 --> 01:24:30,210 Bine. Deci, aici, acestea sunt cojile. 1150 01:24:30,210 --> 01:24:36,020 Bash, proprietarul, care este cont de sistem, poate face totul. 1151 01:24:36,020 --> 01:24:41,210 Grup și toată lumea poate face citi sau de a executa, dar nu scrie. 1152 01:24:41,210 --> 01:24:44,570 Acesta nici măcar nu permite proprietarului de a scrie la ea. 1153 01:24:44,570 --> 01:24:46,460 În cazul în care proprietarul a vrut să scrie pentru el, contul de sistem, 1154 01:24:46,460 --> 01:24:48,020 el ar trebui să se schimbe de protecție prima. 1155 01:24:48,020 --> 01:24:53,940 Dar, din nou, umask setează implicit de mascare aceasta, 1156 01:24:53,940 --> 01:24:57,160 indicând biți care nu vor fi setate. 1157 01:24:57,160 --> 01:25:04,380 Aceasta este de obicei într-unul dintre fișierele de inițializare, care este. Cshrc pentru C-shell 1158 01:25:04,380 --> 01:25:07,500 sau profilul. pentru cojile de tip Bourne. 1159 01:25:07,500 --> 01:25:12,520 Acesta poate fi, de asemenea, în altă parte, în prezența altor fișiere de inițializare din sistem. 1160 01:25:12,520 --> 01:25:14,610 Oricum, asta este umask. 1161 01:25:14,610 --> 01:25:18,180 E ceva cam ciudat aici, 1162 01:25:18,180 --> 01:25:22,800 și că este, de ce există o singură comandă pentru asta? 1163 01:25:22,800 --> 01:25:28,690 Dacă aș fi scris acest lucru, mi-ar face o variabilă, umask = o valoare face. 1164 01:25:28,690 --> 01:25:31,100 De ce există un întreg comanda doar pentru acest scop? 1165 01:25:31,100 --> 01:25:34,560 Motivul este acesta doar se întoarce la originile Unix. 1166 01:25:34,560 --> 01:25:41,050 Unix a fost doar un proiect de programare la Bell Labs la începutul anilor 1970. 1167 01:25:41,050 --> 01:25:42,610 Oamenii pur și simplu s-au reunit pentru a programului. 1168 01:25:42,610 --> 01:25:45,290 Ei nu a intenționat niciodată să devină un sistem de operare la nivel mondial. 1169 01:25:45,290 --> 01:25:47,250 Diferite persoane au scris diferite părți fără să mă gândesc foarte mult 1170 01:25:47,250 --> 01:25:49,790 de modul în care acestea urmau să fie folosite - destul de vag. 1171 01:25:49,790 --> 01:25:53,290 Și a venit împreună ca asta, și e tot așa în anumite privințe. 1172 01:25:53,290 --> 01:25:57,930 Deci, care reflectă istoria, și există încă aceste neconcordanțe și elemente ciudate ale acestuia. 1173 01:25:57,930 --> 01:26:00,750 Bine. Un viitor aici. 1174 01:26:08,170 --> 01:26:11,000 Așa cum am scris mai devreme, C-shell-ul nu este într-adevăr folosit foarte mult pentru programare, 1175 01:26:11,000 --> 01:26:12,420 deși poate fi. 1176 01:26:12,420 --> 01:26:15,080 Se execută mai lent, din nou, compromisul între utilizarea interactiv, 1177 01:26:15,080 --> 01:26:17,820 care are mai mult de prelucrare a implicat decât viteza, 1178 01:26:17,820 --> 01:26:20,710 care se poate face fără prelucrare. 1179 01:26:20,710 --> 01:26:28,320 Caracteristici suplimentare adăugate la shell Bourne de Korn și Bourne, din nou cojile 1180 01:26:28,320 --> 01:26:32,120 nu par să-i încetinească, și nu știu de ce, care este. 1181 01:26:32,120 --> 01:26:36,310 Acesta ar putea fi doar de programare mai bine, dar eu nu sunt în măsură să știe. 1182 01:26:36,310 --> 01:26:40,420 Viteza de aici, de fapt, nu este o astfel de afacere mare, deși este menționat. 1183 01:26:40,420 --> 01:26:43,690 Motivul este că script-uri shell obține de fapt, destul de repede. 1184 01:26:43,690 --> 01:26:46,450 În cazul în care există o mulțime de comenzi, cum ar fi într-un program calculațional, 1185 01:26:46,450 --> 01:26:49,110 probabil nu l-ar face într-un script de shell. 1186 01:26:49,110 --> 01:26:51,450 Operațiunile sunt destul de simplă și directă. 1187 01:26:51,450 --> 01:26:53,960 Cele pe care le-am experimentat, care sunt prea lente 1188 01:26:53,960 --> 01:26:57,110 implica cereri repetate de comenzi lent. 1189 01:26:57,110 --> 01:27:00,480 Mai devreme am menționat editorul flux sed. Care comanda este lent. 1190 01:27:00,480 --> 01:27:03,760 Dacă executați de multe ori SED, veți obține un script lent, dar nu e coajă care este lent. 1191 01:27:03,760 --> 01:27:07,920 Rularea l în coajă Bourne nu va fi mult mai rapid decât se execută în C-shell, 1192 01:27:07,920 --> 01:27:10,070 deși nu există, poate, unele avantaje acolo. 1193 01:27:10,070 --> 01:27:12,760 Capacitățile de programare suplimentare, pe de altă parte, 1194 01:27:12,760 --> 01:27:17,920 sunt motive importante de ce le-ar folosi cojile de tip Bourne. 1195 01:27:17,920 --> 01:27:21,390 C-shell are caracteristici ciudate să-l - 1196 01:27:21,390 --> 01:27:25,250 faptul că nu știu dacă o variabilă este o variabilă de shell sau o variabilă de mediu. 1197 01:27:25,250 --> 01:27:27,440 Ea poate fi foarte confuz. 1198 01:27:27,440 --> 01:27:32,170 Nu e atât de ușor de a scrie 1199 01:27:32,170 --> 01:27:35,930 doar pe baza experienței dumneavoastră de programare în alte limbi. 1200 01:27:35,930 --> 01:27:41,350 Cred că puteți găsi cochilii de tip Bourne mai mult în concordanță cu experiența dumneavoastră. 1201 01:27:43,730 --> 01:27:49,270 Unele script-uri, deși, poate fi de mii de linii în lungime. 1202 01:27:49,270 --> 01:27:52,450 Cei care le-am văzut sunt utilizate pentru patching sisteme de operare. 1203 01:27:52,450 --> 01:27:55,450 Cei care pot executa foarte lent, dar nu a alerga cei foarte des. 1204 01:27:55,450 --> 01:27:57,180 Este doar atunci când faci patch-uri, 1205 01:27:57,180 --> 01:27:59,450 și este doar administratorul de sistem care face aceste lucruri, 1206 01:27:59,450 --> 01:28:01,840 deci nu este într-adevăr mult de o problemă. 1207 01:28:01,840 --> 01:28:06,980 Cei care sunt de sute de linii de mult timp, de fapt executa destul de repede. 1208 01:28:06,980 --> 01:28:10,540 Menționat acest lucru de aici, care sunt aceste îmbunătățiri? 1209 01:28:10,540 --> 01:28:13,170 Am menționat deja câteva dintre ele - tablouri, calcule, 1210 01:28:13,170 --> 01:28:20,540 de $ () expresie pentru calcule în Bash coajă, 1211 01:28:20,540 --> 01:28:23,050 alt tip de substituire de comenzi. 1212 01:28:23,050 --> 01:28:25,360 Există diferite tipuri de comenzi de testare 1213 01:28:25,360 --> 01:28:29,350 prin care se poate face teste condiționată de existența unui fișier sau a altor lucruri. 1214 01:28:29,350 --> 01:28:34,790 Dura aici, această comandă aici. 1215 01:28:34,790 --> 01:28:38,480 Ce face acest lucru face, și de ce ar folosi cineva? 1216 01:28:51,170 --> 01:28:52,990 nume_variabila printenv. 1217 01:28:52,990 --> 01:28:56,130 Noi știm ce printenv face. Ea ne spune valoarea unei variabile. 1218 01:28:56,130 --> 01:29:00,850 Și nume_variabila printenv nu ne va spune foarte mult, deoarece nu există nici un astfel de variabile. 1219 01:29:03,550 --> 01:29:05,120 Blank. 1220 01:29:05,120 --> 01:29:08,440 Dar hai sa dau ceva semnificativ. 1221 01:29:13,420 --> 01:29:16,800 Asta nu e nici acolo. Bine. Cred că nu m-am definit ca. 1222 01:29:16,800 --> 01:29:18,020 Să verificăm doar mediul meu. 1223 01:29:18,020 --> 01:29:20,900 Aceasta este o altă comandă prin care puteți inspecta mediul. 1224 01:29:20,900 --> 01:29:24,470 Nu este bun EDITOR vechi, cea pe care am văzut înainte. 1225 01:29:42,360 --> 01:29:44,120 Ce face asta? 1226 01:29:44,120 --> 01:29:48,050 Aici avem o expresie backquote. 1227 01:29:48,050 --> 01:29:50,370 Amintiți-vă acest lucru este C-shell. 1228 01:29:50,370 --> 01:29:54,850 Astfel EDITOR printenv ne va da o valoare de EDITOR. Este vi. 1229 01:29:54,850 --> 01:29:59,790 Și apoi se va stabili ca valoarea variabilei o, comanda set. 1230 01:29:59,790 --> 01:30:02,860 Deci, acum, dacă am face echo $ o, mă vi. 1231 01:30:02,860 --> 01:30:05,850 Nu mi se pare teribil de util. 1232 01:30:05,850 --> 01:30:08,080 Cu toate acestea, de fapt, are un scop. 1233 01:30:08,080 --> 01:30:12,260 Din moment ce nu știm dacă o variabilă este o variabilă de shell sau o variabilă de mediu 1234 01:30:12,260 --> 01:30:16,280 folosind sintaxa evaluare semnul dolar, putem folosi printenv 1235 01:30:16,280 --> 01:30:19,460 pentru a vă asigura că aceasta este o variabilă de mediu. 1236 01:30:19,460 --> 01:30:22,550 Deci, dacă ar exista un editor de variabila de shell, acest lucru nu ar fi ajuns ea. 1237 01:30:22,550 --> 01:30:25,640 Aceasta funcționează numai cu variabila de mediu. 1238 01:30:25,640 --> 01:30:28,370 Dacă ar exista o variabila de shell și am vrut valoarea sa, 1239 01:30:28,370 --> 01:30:29,980 Mi-ar trebui să găsească o altă cale de a face acest lucru. 1240 01:30:29,980 --> 01:30:33,530 O modalitate de a face acest lucru ar fi de a face set și conducte. 1241 01:30:33,530 --> 01:30:36,130 Aceasta este una dintre metacaracterele, caractere speciale. 1242 01:30:36,130 --> 01:30:38,370 Acesta trimite ieșirea de set la altceva. 1243 01:30:38,370 --> 01:30:40,650 Să vedem ce am putea găsi acolo. 1244 01:30:40,650 --> 01:30:49,340 Nimic. Bine. Să vedem ce e acolo tot împreună. 1245 01:30:49,340 --> 01:30:53,580 Acesta a fost echo_style, cea pe care am menționat mai înainte. Bine, hai să facem asta. 1246 01:31:02,460 --> 01:31:06,230 Amintiți-am menționat mai înainte, echo_style 1247 01:31:06,230 --> 01:31:08,410 determină modul în care comanda echo va rula. 1248 01:31:08,410 --> 01:31:10,940 BSD vine de la Berkeley Standard Distribution. 1249 01:31:10,940 --> 01:31:13,200 Acesta este Berkeley Unix din anii 1970. 1250 01:31:13,200 --> 01:31:16,630 Acesta este unul din modurile în care ecou poate rula. 1251 01:31:16,630 --> 01:31:22,310 Setarea echo_style la această valoare în TC-shell va provoca ecou să se comporte în acest fel. 1252 01:31:22,310 --> 01:31:27,670 Astfel stabilit face asta, dar stabilit devine doar variabilele de shell. 1253 01:31:27,670 --> 01:31:35,430 Nu ar găsi EDITOR, care nu este o variabilă shell. 1254 01:31:36,870 --> 01:31:38,050 Nimic. 1255 01:31:38,050 --> 01:31:39,660 Deci asta e un mod de a le distinge. 1256 01:31:39,660 --> 01:31:42,000 Dar faptul că va trebui să treacă printr-o parte de comandă ciudat de genul asta 1257 01:31:42,000 --> 01:31:45,500 să se facă distincția între variabile coajă sau variabile de mediu 1258 01:31:45,500 --> 01:31:49,970 arată tipul de natura nepractică din C-shell pentru anumite scopuri. 1259 01:31:52,290 --> 01:31:57,960 Iar acum, ultimul și poate cel mai puțin, aceasta este paginile de manual. 1260 01:31:57,960 --> 01:32:03,190 Cei de care s-ar putea cunoaște, omul este pe termen scurt pentru comanda manual. 1261 01:32:03,190 --> 01:32:08,610 Paginile de manual pentru cojile sunt greu de citit. Sunt foarte mult timp. 1262 01:32:08,610 --> 01:32:14,060 Sunt organizate într-un mod care ar putea face dificil de a găsi ceea ce căutați pentru. 1263 01:32:14,060 --> 01:32:15,980 Deci, dacă sunteți în căutarea pentru ceva cu un scop, 1264 01:32:15,980 --> 01:32:20,050 poate nu știți dacă acest scop este o variabila de shell sau altceva, 1265 01:32:20,050 --> 01:32:21,630 astfel încât s-ar putea să nu știți unde să-l caute. 1266 01:32:21,630 --> 01:32:25,030 Poti sa te uiti pentru diferite siruri de caractere, dar siruri de caractere sunt de multe ori repetate. 1267 01:32:25,030 --> 01:32:27,640 Asa ca este, în general, greu de citit. 1268 01:32:27,640 --> 01:32:33,810 Tocmai ne-am uitat la pagina de om TC-shell un pic înainte de a găsi comanda eval. 1269 01:32:33,810 --> 01:32:36,610 Unele lucruri merg mai repede. 1270 01:32:36,610 --> 01:32:38,860 O abordare este de a căuta un șir. 1271 01:32:38,860 --> 01:32:40,360 Puteți folosi pagerul. 1272 01:32:40,360 --> 01:32:49,080 Pager are slash pentru a căuta o comandă sau un șir de caractere în interiorul unei operațiuni de pager. 1273 01:32:49,080 --> 01:32:52,830 Om în mod implicit se vor folosi pagere, fie mult sau mai puțin. 1274 01:32:52,830 --> 01:32:56,560 Nu știu dacă ești familiarizat cu acestea, dar cei care pot demonstra fișiere puțin câte puțin. 1275 01:32:56,560 --> 01:33:00,550 Am fost folosind mai puțin pentru a afișa aceste fișiere speciale care le-am primit aici. 1276 01:33:00,550 --> 01:33:03,300 Puteți căuta în interior. 1277 01:33:03,300 --> 01:33:04,880 Puteți încerca, folosind diferite siruri de caractere de căutare. 1278 01:33:04,880 --> 01:33:08,420 De asemenea, paginile de om în diferite sisteme de operare nu poate fi la fel. 1279 01:33:08,420 --> 01:33:11,130 Acestea pot fi pagini separate pentru csh și tcsh. 1280 01:33:11,130 --> 01:33:14,500 Ei nu sunt pe Mac, dar acestea ar putea fi în cazul în care acestea sunt comenzi separate. 1281 01:33:14,500 --> 01:33:19,000 Dacă sh nu suna într-adevăr Bash, exista, probabil, ar fi o pagină separată om. 1282 01:33:19,000 --> 01:33:25,820 Unele sisteme au pagini separate om doar pentru C-shell comenzi built-in. 1283 01:33:25,820 --> 01:33:30,250 Uneori, dacă doriți să citiți o descriere a unei comenzi built-in 1284 01:33:30,250 --> 01:33:35,350 care este, de asemenea, în calea, ca ecou, ​​va trebui să citiți pagina de manual pe care comanda pe ecou 1285 01:33:35,350 --> 01:33:37,610 pentru a determina modul în care va funcționa ca o comanda built-in 1286 01:33:37,610 --> 01:33:39,760 chiar dacă nu sunteți de asteptare comanda built-in. 1287 01:33:41,630 --> 01:33:46,090 Acesta este un dezavantaj al sistemului de operare, în general, nu numai pentru scoici, 1288 01:33:46,090 --> 01:33:50,710 deși pentru cojile în special paginile man sunt destul de lungi, 1289 01:33:50,710 --> 01:33:56,180 în parte pentru că au adăugat caracteristici utile pentru ei, care poate fi un pozitiv. 1290 01:33:56,180 --> 01:34:00,290 Bine. Sunt întrebări? Orice subiecte pe care doriți să aduc? 1291 01:34:00,290 --> 01:34:03,390 Ceva relevant aici? 1292 01:34:04,540 --> 01:34:07,100 Ei bine, a fost foarte frumos să vorbesc cu tine toate. 1293 01:34:07,100 --> 01:34:09,690 Sper că ai ceva de acest seminar 1294 01:34:09,690 --> 01:34:13,080 , care va fi util pentru tine în eforturile dumneavoastră viitoare. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]