1 00:00:00,000 --> 00:00:02,320 >> [Seminari - closques d'Unix, Entorns] 2 00:00:02,320 --> 00:00:04,180 [Douglas Kline - Harvard University] 3 00:00:04,180 --> 00:00:07,160 [Aquest és CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> El tema d'avui és la shell d'Unix. 5 00:00:12,770 --> 00:00:20,600 Estic Douglas Kline, expert, o almenys raonablement usuari competent, de la closca. 6 00:00:20,600 --> 00:00:25,280 Un shell és la interfície per a l'usuari per al sistema operatiu de l'ordinador. 7 00:00:25,280 --> 00:00:29,580 El nom és enganyós ja que, a diferència de la petxina d'un animal, 8 00:00:29,580 --> 00:00:34,890 que és dur i de protecció, la closca ordinador permet la comunicació. 9 00:00:34,890 --> 00:00:39,120 Així membrana porosa, probablement seria una millor metàfora. 10 00:00:39,120 --> 00:00:44,500 >> La closca original per a Unix és el shell Bourne. 11 00:00:44,500 --> 00:00:46,450 Bourne s'escriu B-O-O-R-N-E. 12 00:00:46,450 --> 00:00:49,770 Bourne va ser un dels autors originals d'Unix, 13 00:00:49,770 --> 00:00:51,700 de manera que la closca es nomena després d'ell. 14 00:00:51,700 --> 00:00:54,850 El nom d'aquesta petxina com una ordre és simplement sh. 15 00:00:54,850 --> 00:00:57,400 Aquest és el comandament que es pot executar. 16 00:00:57,400 --> 00:01:00,810 La closca s'inicia en iniciar la sessió. 17 00:01:00,810 --> 00:01:04,459 En iniciar sessió en l'ordinador, el shell només comença a funcionar per a vostè, 18 00:01:04,459 --> 00:01:06,820 i això és el que porta a les seves ordres. 19 00:01:06,820 --> 00:01:09,790 Es pot començar en altres ocasions també. 20 00:01:09,790 --> 00:01:16,780 Si obre una finestra sense cap altra indicació, s'iniciarà una petxina per a vostè. 21 00:01:16,780 --> 00:01:20,450 Això és com és que vostè pot anar a una finestra i començar a escriure les ordres 22 00:01:20,450 --> 00:01:23,960 i així successivament allà tot i que no es va registrar a aquesta finestra. 23 00:01:23,960 --> 00:01:26,670 A més, si vostè fa un inici de sessió remot, 24 00:01:26,670 --> 00:01:30,250 a continuació, s'iniciarà un shell en l'equip remot. 25 00:01:30,250 --> 00:01:44,310 I és possible executar ordres sense un shell interactiu. 26 00:01:44,310 --> 00:01:48,990 Això pot significar dins de la seva operació actual, 27 00:01:48,990 --> 00:01:50,700 i també pot significar una operació remota. 28 00:01:50,700 --> 00:01:52,900 Vostè pot enviar una comanda a un altre equip, 29 00:01:52,900 --> 00:01:55,460 que inclou la posada en marxa d'una petxina d'allà. 30 00:01:55,460 --> 00:01:57,760 De fet, ha d'incloure la posada en marxa una closca hi 31 00:01:57,760 --> 00:02:01,740 encara que aquest no és el seu objectiu final. 32 00:02:05,310 --> 00:02:12,350 Quan alguna cosa es posa en marxa com aquesta, no s'inicia necessàriament un nou shell. 33 00:02:12,350 --> 00:02:17,430 Si obre una nova finestra, és possible dir que perquè aparegui un editor 34 00:02:17,430 --> 00:02:18,940 o algun altre comandament. 35 00:02:18,940 --> 00:02:20,560 En aquest cas, l'editor s'iniciarà a partir de zero. 36 00:02:20,560 --> 00:02:22,930 Quan acaba l'editor, la finestra acaba. 37 00:02:22,930 --> 00:02:24,620 Això és una mica inusual, però es pot fer. 38 00:02:24,620 --> 00:02:27,140 En aquests casos, no serà una closca. 39 00:02:27,140 --> 00:02:31,890 Així que no és necessàriament el cas que una finestra o alguna aplicació s'obrirà un shell. 40 00:02:31,890 --> 00:02:34,030 >> Shell analitza els comandaments. 41 00:02:34,030 --> 00:02:40,900 Parsing significa identificar els diferents elements i la seva classificació. 42 00:02:40,900 --> 00:02:43,470 Dins d'un comandament, la cadena completa que escriu, 43 00:02:43,470 --> 00:02:47,310 haurà 1 o més ordres individuals per a ser executats. 44 00:02:47,310 --> 00:02:50,050 Altres elements poden ser arguments. 45 00:02:50,050 --> 00:02:55,020 També pot haver caràcters especials que afecten l'execució d'un comandament. 46 00:02:55,020 --> 00:02:59,710 Podeu enviar la sortida en algun lloc que no sigui la pantalla 47 00:02:59,710 --> 00:03:01,750 si la comanda ordinàriament enviar-lo a la pantalla. 48 00:03:01,750 --> 00:03:04,390 Pot redirigir l'entrada, sinó que pot fer altres coses també. 49 00:03:04,390 --> 00:03:08,120 Hi ha diversos altres símbols, caràcters, etc. 50 00:03:08,120 --> 00:03:13,600 Parsing implica detectar i interpretar les coses. 51 00:03:13,600 --> 00:03:19,560 >> Ara bé, si no hi ha més preguntes, la qual cosa és bastant probable, ja que no hi ha més gent, 52 00:03:19,560 --> 00:03:24,620 anem a passar a la meva propera pàgina aquí. 53 00:03:24,620 --> 00:03:29,170 >> Vaig dir abans que el shell Bourne és l'intèrpret d'ordres inicial. 54 00:03:29,170 --> 00:03:31,550 Hi ha altres. 55 00:03:31,550 --> 00:03:34,520 Un és el C-shell. La comanda és csh. 56 00:03:34,520 --> 00:03:36,830 El nom de C-shell és només un joc de paraules. 57 00:03:36,830 --> 00:03:41,260 Aquesta closca es va introduir amb Berkeley Unix a mitjans de la dècada de 1970. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix era un esdeveniment fonamental en el desenvolupament d'Unix. 59 00:03:44,830 --> 00:03:48,770 Va ser una gran revolució i va incloure la introducció d'aquesta petxina. 60 00:03:48,770 --> 00:03:50,790 La raó que el joc de paraules, C-shell, 61 00:03:50,790 --> 00:03:56,490 és que el C-intèrpret té algunes característiques en el que s'assemblen el llenguatge C, 62 00:03:56,490 --> 00:03:59,740 que el shell Bourne no té - 63 00:03:59,740 --> 00:04:02,140 o no tenia en aquest moment. 64 00:04:02,140 --> 00:04:05,190 També hi ha el TC-shell. 65 00:04:05,190 --> 00:04:07,360 Aquest és un superconjunt de la C-shell. 66 00:04:07,360 --> 00:04:11,470 Té característiques addicionals, molts dels quals són útils per a l'ús interactiu, 67 00:04:11,470 --> 00:04:16,050 com recordant les ordres en el mecanisme de la història, 68 00:04:16,050 --> 00:04:18,459 que vaig a descriure una mica més tard - 69 00:04:18,459 --> 00:04:23,120 d'una manera senzilla, el model d'un editor. 70 00:04:23,120 --> 00:04:29,170 També té enllaços que li permeten enllaçar una cadena de clau de curt a una ordre més. 71 00:04:29,170 --> 00:04:31,440 No entrarem en això avui. 72 00:04:31,440 --> 00:04:33,650 Té algunes característiques que són útils per a la programació. 73 00:04:33,650 --> 00:04:37,020 No obstant això, el C-shell no s'usa sovint per a la programació del shell. 74 00:04:37,020 --> 00:04:39,080 Programes de Shell, si vostè no sabés ja, 75 00:04:39,080 --> 00:04:41,690 són programes que consisteixen en les característiques de shell. 76 00:04:41,690 --> 00:04:43,220 Podeu executar aquests programes. 77 00:04:43,220 --> 00:04:46,760 Vostè escriu un munt de comandaments de la shell en un arxiu i executar l'arxiu. 78 00:04:46,760 --> 00:04:49,760 No és necessari per compilar. Aquest és un llenguatge interpretat. 79 00:04:49,760 --> 00:04:57,320 La frase C-shell esdevé ambigu ja que pot referir-se només a l'original C-shell, csh, 80 00:04:57,320 --> 00:05:01,200 o tots els C-petxines, incloent tcsh. És una mica ambigu. 81 00:05:01,200 --> 00:05:08,250 >> Una petxina més tard és el shell Korn, ksh, anomenat així pel programador, Korn. 82 00:05:08,250 --> 00:05:14,160 Aquesta closca intentar incorporar en 1 pela 83 00:05:14,160 --> 00:05:16,960 els avantatges de la C-shell per a ús interactiu 84 00:05:16,960 --> 00:05:19,230 i el shell Bourne per a la programació. 85 00:05:19,230 --> 00:05:25,440 S'ha utilitzat com un shell interactiu per algunes persones - una minoria. 86 00:05:25,440 --> 00:05:32,050 Més tard, però, hi va haver una altra presentació, el shell Bash, BASH, 87 00:05:32,050 --> 00:05:35,290 de nou un joc de paraules, Bourne-again shell. 88 00:05:35,290 --> 00:05:43,830 És una extensió del shell Bourne. Korn també. Tots dos són. 89 00:05:43,830 --> 00:05:48,100 Té els mateixos objectius del shell Korn de la fusió de la C-shell 90 00:05:48,100 --> 00:05:50,980 i avantatges de Bourne shell en shell 1. 91 00:05:50,980 --> 00:05:56,810 Moltes de les millores del shell Korn també s'inclouen en Bash. 92 00:05:56,810 --> 00:06:00,710 Bash, però, té més i per tant és preferible. 93 00:06:00,710 --> 00:06:05,180 The Bourne-again shell i el shell Korn es diuen petxines de tipus Bourne 94 00:06:05,180 --> 00:06:07,730 ja que inclouen les característiques del shell Bourne, 95 00:06:07,730 --> 00:06:11,180 que són incompatibles en alguns aspectes amb els C-petxines. 96 00:06:11,180 --> 00:06:15,520 Hi ha altres petxines, a més d'ells, uns destinats a l'ús restringit, 97 00:06:15,520 --> 00:06:20,670 potser limitat a alguns comandaments, potser amb fins especialitzats, no s'utilitzen sovint. 98 00:06:20,670 --> 00:06:24,240 >> Okay. Següent article aquí. 99 00:06:31,300 --> 00:06:38,970 L'intèrpret d'ordres s'ha associat amb diverses formes de Linux. 100 00:06:38,970 --> 00:06:41,550 No estic segur de si això és cert de totes les formes. 101 00:06:41,550 --> 00:06:43,280 Hi ha moltes formes per aquí i no tots ells han utilitzat, 102 00:06:43,280 --> 00:06:46,870 però en els que he fet servir s'ha convertit en associats. 103 00:06:46,870 --> 00:06:49,670 Fins on jo sé, no hi ha res sobre Bash 104 00:06:49,670 --> 00:06:52,210 que fa que sigui més compatible amb Linux 105 00:06:52,210 --> 00:06:55,020 que qualsevol altra combinació de closca i el sistema operatiu. 106 00:06:55,020 --> 00:06:59,690 Crec que això probablement només reflecteix les inclinacions dels programadors. 107 00:06:59,690 --> 00:07:07,500 Que ha arribat a ser associat amb Linux és una altra raó per preferir Bash per ksh 108 00:07:07,500 --> 00:07:11,820 ja que les coses són susceptibles de ser escrit en ell i és probable que es propagui. 109 00:07:11,820 --> 00:07:15,410 Et vaig a donar altres raons d'això més endavant. 110 00:07:15,410 --> 00:07:21,330 Scripts de shell Bourne s'han d'executar sota la shell Korn o bash. 111 00:07:21,330 --> 00:07:22,650 Si escriviu alguna cosa per al shell Bourne, 112 00:07:22,650 --> 00:07:26,180 Probablement es pot executar sota ksh o bash. 113 00:07:26,180 --> 00:07:30,610 Scripts de shell Korn probablement s'executaran sota Bash, però no puc garantir-ho. 114 00:07:30,610 --> 00:07:36,040 Més tard aquí, els scripts de C-shell s'han d'executar en el marc del TC-shell. 115 00:07:38,850 --> 00:07:41,690 El C-shell va ser en realitat mai s'utilitza àmpliament per al scripting 116 00:07:41,690 --> 00:07:48,110 des del shell Bourne i més tard les petxines de tipus Bourne eren preferibles per a aquest propòsit. 117 00:07:48,110 --> 00:07:50,620 Així que realment no és tan important. 118 00:07:50,620 --> 00:07:53,480 Hi ha un bon munt de Bourne shell scripts que van ser escrits fa molt de temps, 119 00:07:53,480 --> 00:07:56,860 abans que el shell Korn o el Bourne-Again Shell van ser introduïdes. 120 00:07:56,860 --> 00:07:59,300 Els que encara estan en ús, que forma part dels sistemes operatius, 121 00:07:59,300 --> 00:08:01,590 i així que vostè els trobarà si ens fixem en el sistema operatiu 122 00:08:01,590 --> 00:08:03,760 o alguns paquets de programació d'edat. 123 00:08:03,760 --> 00:08:12,840 >> Bash és fins a cert punt convertint-se en una mena de llengua franca per als sistemes operatius. 124 00:08:12,840 --> 00:08:17,580 Ja s'ha estès a Windows i VMS. 125 00:08:17,580 --> 00:08:20,440 VMS, per si no ho sap, és un sistema operatiu propietari 126 00:08:20,440 --> 00:08:25,480 de Digital Equipment Corporation, que encara està en ús, en gran part darrere de les escenes. 127 00:08:25,480 --> 00:08:29,250 I si estarà en execució en diversos sistemes operatius diferents, 128 00:08:29,250 --> 00:08:31,110 probablement les persones tendeixen a passar per això. 129 00:08:31,110 --> 00:08:33,840 Però aquest desenvolupament és relativament recent. 130 00:08:33,840 --> 00:08:39,490 Això és només el començament, així que no puc predir si això arribarà a ser realment aquest tipus de lingua franca. 131 00:08:39,490 --> 00:08:43,539 Així mateix, atès que les rutes d'accés d'arxius i biblioteques difereixen 132 00:08:43,539 --> 00:08:46,210 entre aquests diferents sistemes operatius, 133 00:08:46,210 --> 00:08:50,250 vostè probablement no sigui capaç d'escriure un script bash en un sistema operatiu 134 00:08:50,250 --> 00:08:51,840 i després executar-lo en un altre. 135 00:08:51,840 --> 00:08:54,440 Vostè ha de ser capaç de moure entre diferents Unix, Linux 136 00:08:54,440 --> 00:08:59,020 Sistemes operatius Mac OS, però no necessàriament per a Windows o VMS. 137 00:08:59,020 --> 00:09:01,390 Podria ser necessari canviar les descripcions d'arxius nom de ruta, 138 00:09:01,390 --> 00:09:03,180 i algunes biblioteques poden ser diferents, 139 00:09:03,180 --> 00:09:05,230 el que pot afectar la manera en què alguns comandaments funcionen 140 00:09:05,230 --> 00:09:09,730 o com es processen els arguments i similars. 141 00:09:09,730 --> 00:09:19,230 A més d'això, una altra precaució aquí és que no hi ha cap garantia 142 00:09:19,230 --> 00:09:23,570 que totes les diferents petxines que he esmentat - Bourne shell, C-shell, 143 00:09:23,570 --> 00:09:29,880 TC-shell, Korn, Bourne-Again Shell - estarà disponible en virtut de qualsevol Unix 144 00:09:29,880 --> 00:09:33,750 o Linux o Mac OS. 145 00:09:33,750 --> 00:09:35,620 Ells simplement no poden ser-hi. 146 00:09:35,620 --> 00:09:38,300 Aquesta és una de les precaucions aquí. 147 00:09:38,300 --> 00:09:41,490 És una trista limitació en aquest cas ja que desitja que les coses funcionin a tot arreu, 148 00:09:41,490 --> 00:09:44,380 però, per desgràcia, no es pot confiar en això. 149 00:09:44,380 --> 00:09:47,230 >> Okay. Següent 1 aquí. 150 00:09:50,280 --> 00:09:54,370 Diguem que vostè vol escriure un script de shell, 151 00:09:54,370 --> 00:09:57,170 un programa que consta d'ordres de shell. 152 00:09:57,170 --> 00:10:01,200 Vostè escriu les seves ordres, posar-los en un arxiu i executar l'arxiu. 153 00:10:01,200 --> 00:10:04,230 Què passa si vostè vol incloure arguments? 154 00:10:04,230 --> 00:10:09,650 En el cas d'operacions de shell, els arguments s'anomenen paràmetres o paràmetres posicionals 155 00:10:09,650 --> 00:10:15,940 i que seran convocades per un signe de dòlar i el nombre, $ 1, $ 2. 156 00:10:15,940 --> 00:10:27,000 Així que si el guió té aquest nom, el meu primer argument podria ser l'argument 1 157 00:10:27,000 --> 00:10:30,540 i el meu segon podria ser l'argument 2, 158 00:10:30,540 --> 00:10:34,110 i dins del meu script si vull referir-me a aquestes coses - 159 00:10:34,110 --> 00:10:36,810 Anem a esborrar aquesta ja que no estic realment va a executar - 160 00:10:36,810 --> 00:10:42,160 dins del meu guió que podria tenir $ 1 per a referir-se a arg1, 161 00:10:42,160 --> 00:10:45,890 $ 2, que sortirà d'aquesta manera, arg2. 162 00:10:45,890 --> 00:10:50,080 Així que aquests símbols estan disponibles per fer referència als arguments, 163 00:10:50,080 --> 00:10:52,390 i els que s'apliquen a totes les petxines. 164 00:10:52,390 --> 00:10:56,520 A més, hi ha altres caràcters. 165 00:10:56,520 --> 00:11:01,700 $ * Es refereix a tota la llista d'arguments, tots ells. 166 00:11:01,700 --> 00:11:05,390 $ # Es refereix al nombre d'arguments. 167 00:11:05,390 --> 00:11:07,910 Un cop més, això s'aplica a totes les petxines. 168 00:11:07,910 --> 00:11:15,540 Aquests símbols, * i #, es poden utilitzar amb els significats en altres llocs també. 169 00:11:15,540 --> 00:11:17,940 No entrarem en aquesta. 170 00:11:17,940 --> 00:11:20,460 >> Línia especificador Shell. Què és això? 171 00:11:20,460 --> 00:11:27,760 Diguem que vostè ha escrit un guió i és un shell determinat i desitja executar. 172 00:11:27,760 --> 00:11:33,500 Com saps quin shell del sistema operatiu utilitzarà per executar la seqüència de comandaments? 173 00:11:33,500 --> 00:11:37,230 En un moment es podia suposar que anava a executar en el shell Bourne 174 00:11:37,230 --> 00:11:39,440 si vostè no va dir una altra cosa, 175 00:11:39,440 --> 00:11:41,730 però les persones no estan escrivint scripts en el shell Bourne que molt més 176 00:11:41,730 --> 00:11:43,750 i ni tan sols es pot confiar en això. 177 00:11:43,750 --> 00:11:48,740 Així que aquí tenim una línia especificador shell aquí. 178 00:11:48,740 --> 00:11:52,450 Que especifica Bash. 179 00:11:52,450 --> 00:11:56,750 Tingueu en compte que s'especifiquen en el nom de ruta, / bin / bash. 180 00:11:56,750 --> 00:12:02,870 Si un equip té l'intèrpret d'ordres, però no en el directori bin, / bin, això no funcionarà. 181 00:12:02,870 --> 00:12:06,870 Aquest és un altre qualificador, una altra precaució aquí. 182 00:12:06,870 --> 00:12:09,500 El signe és el signe de comentari de línia. 183 00:12:09,500 --> 00:12:12,300 Això s'aplica a totes les petxines. 184 00:12:12,300 --> 00:12:18,610 El cas particular aquí, #! al principi d'una seqüència d'ordres, és un cas especial. 185 00:12:18,610 --> 00:12:23,410 Que especifica el shell en què s'executi l'script. 186 00:12:23,410 --> 00:12:30,230 Al que anava, que podria no ser el mateix lloc / bin. 187 00:12:30,230 --> 00:12:34,880 A més, hi ha una altra cosa aquí. 188 00:12:34,880 --> 00:12:41,250 Si vostè només ha d'utilitzar el signe de nombre sense signe d'exclamació i el nom de ruta, 189 00:12:41,250 --> 00:12:44,640 que ha d'indicar un C-shell. 190 00:12:44,640 --> 00:12:48,300 No obstant això, no recomano fer això perquè no sóc capaç de garantir 191 00:12:48,300 --> 00:12:49,750 que sempre que funcionarà. 192 00:12:49,750 --> 00:12:52,220 Si vols un C-shell, seria millor dir que sí. 193 00:12:52,220 --> 00:12:58,450 Llavors hi ha alguna cosa bastant confús aquí. 194 00:12:58,450 --> 00:13:03,940 Si utilitzeu una línia especificador shell com / bin / bash 195 00:13:03,940 --> 00:13:07,070 i que la closca no està disponible allà, 196 00:13:07,070 --> 00:13:10,680 no hi ha tal cosa com / bin / bash en aquest equip en particular, 197 00:13:10,680 --> 00:13:14,330 ja sigui perquè no té Bash o perquè està en una ubicació diferent, 198 00:13:14,330 --> 00:13:17,450 obtindrà un error que indica que la seqüència de comandaments es va executar no existeix. 199 00:13:17,450 --> 00:13:21,510 I, per descomptat, hi ha la seqüència de comandaments, de manera que el missatge d'error és confús. 200 00:13:21,510 --> 00:13:24,810 La raó que el sistema operatiu li dóna aquest error 201 00:13:24,810 --> 00:13:28,370 o, més exactament, que el shell interactiu en el que s'està executant aquesta dóna aquest error, 202 00:13:28,370 --> 00:13:33,510 és que mostra la comanda que va utilitzar, que és el nom de l'script. 203 00:13:33,510 --> 00:13:36,920 Aquest comandament diu efectivament la closca amb el nom de la seqüència de comandaments. 204 00:13:36,920 --> 00:13:39,330 Aquí és on vostè aconsegueix aquest missatge d'error confús. 205 00:13:39,330 --> 00:13:42,980 Una altra forma de cridar l'script de shell 206 00:13:42,980 --> 00:13:45,910 és mitjançant l'especificació de la petxina en la línia d'ordres, com en aquest cas. 207 00:13:45,910 --> 00:13:52,510 Aquest és un manament. Això diu executar Bash i després executar el meu script en Bash. 208 00:13:52,510 --> 00:13:55,680 Això prendrà precedència sobre una línia especificador, 209 00:13:55,680 --> 00:14:02,090 i això té la característica que li permet oferir als diferents rutes d'accés. 210 00:14:02,090 --> 00:14:04,840 Si vostè acaba de donar una ordre, el sistema operatiu buscarà aquest comando 211 00:14:04,840 --> 00:14:06,410 en diversos llocs. 212 00:14:06,410 --> 00:14:08,820 Si està disponible, ha trobar-lo. 213 00:14:08,820 --> 00:14:12,290 L'equip es troba Bash allà on es troba i executar-lo, 214 00:14:12,290 --> 00:14:15,470 pel que no cal llavors que preocupar-se per on el troba. 215 00:14:15,470 --> 00:14:17,360 Hi potencialment altres preocupacions aquí, 216 00:14:17,360 --> 00:14:20,830 com si hi ha més d'1 versió de Bash, que és possible, encara que poc probable. 217 00:14:20,830 --> 00:14:23,540 Aquesta és una altra manera de tractar aquestes coses. 218 00:14:23,540 --> 00:14:30,480 Línies Prescripció poden trucar a qualsevol shell. 219 00:14:30,480 --> 00:14:34,480 També poden dir les coses diferents de petxines. 220 00:14:34,480 --> 00:14:37,940 Exemples que tinc aquí són set, que és l'editor de flux; 221 00:14:37,940 --> 00:14:39,900 awk, que és un llenguatge de processament de patrons; 222 00:14:39,900 --> 00:14:43,680 i Perl, un llenguatge de script molt desenvolupat. 223 00:14:43,680 --> 00:14:47,570 Si vostè posa una línia especificador indica un d'aquests programes, al principi, 224 00:14:47,570 --> 00:14:51,270 anirà directament a aquest programa en lloc d'iniciar un intèrpret d'ordres. 225 00:14:51,270 --> 00:14:54,030 Aquests programes tenen límits de les seves capacitats. 226 00:14:54,030 --> 00:14:58,790 Perl és molt capaç. Sigueu és un editor. Es poden fer coses més enllà de la simple edició. 227 00:14:58,790 --> 00:15:03,300 Però pot ser difícil de programar que. 228 00:15:03,300 --> 00:15:09,670 A més, el pas d'arguments i aquestes coses a l'escriptura és impossible o confús. 229 00:15:09,670 --> 00:15:15,030 Així que en aquests casos, amb awk o set, que és, almenys en la meva experiència, 230 00:15:15,030 --> 00:15:18,910 preferible escriure un guió i l'anomenat awk o set shell des del script de shell 231 00:15:18,910 --> 00:15:24,660 en lloc de cridar awk o set com la línia especificador guió. 232 00:15:24,660 --> 00:15:26,980 Perl és un llenguatge molt diversificada, com ja he dit. 233 00:15:26,980 --> 00:15:30,050 No es pot executar comandaments interactius en perl, 234 00:15:30,050 --> 00:15:32,660 el que significa que no es pot provar parts de seqüència que vostè està en desenvolupament 235 00:15:32,660 --> 00:15:33,970 executant de forma interactiva. 236 00:15:33,970 --> 00:15:36,160 No obstant això, és un llenguatge molt capaç 237 00:15:36,160 --> 00:15:40,960 i s'ha convertit en una eina molt àmpliament utilitzat. 238 00:15:40,960 --> 00:15:45,720 Això és només una mica més d'un comentari entre parèntesi al voltant de les línies de especificador. 239 00:15:45,720 --> 00:15:50,610 >> En la totalitat o la majoria de les formes de Linux - de nou, no puc estar segur que és tot - 240 00:15:50,610 --> 00:15:57,900 i en Mac OS, si escriu csh vostè aconsegueix tcsh, 241 00:15:57,900 --> 00:16:00,570 i si escriu SH s'obté bash. 242 00:16:00,570 --> 00:16:05,020 Ells estaven tractant de no donar-li les versions més avançades d'aquestes petxines, 243 00:16:05,020 --> 00:16:07,940 però això pot ser confús. 244 00:16:07,940 --> 00:16:16,720 Si s'escriu un guió utilitzant tcsh o Bash característiques, mentre que trucar a csh o sh 245 00:16:16,720 --> 00:16:22,230 i després tractar d'executar en un ordinador que no té tcsh o Bash, 246 00:16:22,230 --> 00:16:25,050 el que podria tenir alguns errors si hi ha ordres allà 247 00:16:25,050 --> 00:16:27,970 que aquests projectils no reconeixen. 248 00:16:27,970 --> 00:16:34,120 A més, és possible que hi hagi anomenat el seu shell en l'equip local 249 00:16:34,120 --> 00:16:37,700 qualificant-la com sh o csh i després aconseguir les petxines més avançats. 250 00:16:37,700 --> 00:16:41,440 O potser no pensar en el fet que vostè està utilitzant el shell més avançada. 251 00:16:41,440 --> 00:16:45,670 Així que aquest és un problema potencial. 252 00:16:45,670 --> 00:16:50,290 Com es determina que si escriu sh vostè aconsegueix Bash, 253 00:16:50,290 --> 00:16:55,580 si escriu csh vostè aconsegueix TSCH? 254 00:16:55,580 --> 00:16:59,940 Hi ha coses en aquests ordinadors anomenats enllaços 255 00:16:59,940 --> 00:17:06,460 que poden connectar-se als noms de fitxer per referir-se a la mateixa cosa. 256 00:17:06,460 --> 00:17:12,180 O bé pot ser de 2 noms per al mateix arxiu o un arxiu que té per objecte fer referència a un altre arxiu. 257 00:17:12,180 --> 00:17:17,550 Se'ls coneix com enllaços durs i simbòlics. Nosaltres no anem a això més avui. 258 00:17:17,550 --> 00:17:21,619 També pot haver arxius separats - 1 arxiu sh, 1 arxiu Bash - 259 00:17:21,619 --> 00:17:23,880 però tots dos funcionen Bash. 260 00:17:23,880 --> 00:17:29,350 Després hi ha un altre qualificatiu aquí. 261 00:17:29,350 --> 00:17:42,640 Si vostè està trucant a un d'aquests dipòsits per un nom, 262 00:17:42,640 --> 00:17:46,640 es podria pensar que tindries la mateixa funcionalitat que dir-per un altre nom. 263 00:17:46,640 --> 00:17:49,700 Bé, això en realitat no és necessàriament cert. 264 00:17:49,700 --> 00:17:55,020 Aquestes ordres poden examinar el nom pel qual van ser anomenats 265 00:17:55,020 --> 00:18:00,020 i poden, sobre la base d'aquest nom, es comporten de manera diferent. 266 00:18:00,020 --> 00:18:02,740 Pot haver problemes de tractar d'ajustar a una norma. 267 00:18:02,740 --> 00:18:06,060 Alguns de vostès poden haver sentit parlar de l'estàndard POSIX o d'una altra, 268 00:18:06,060 --> 00:18:08,730 potser altres característiques. 269 00:18:08,730 --> 00:18:14,520 Això pot ser seleccionat de vegades pels arguments de línia de comandes 270 00:18:14,520 --> 00:18:17,310 o establint les variables de shell. 271 00:18:17,310 --> 00:18:22,170 Anomenar com sh o bash en realitat pot conduir a una execució diferent 272 00:18:22,170 --> 00:18:25,300 fins i tot si és el mateix arxiu que s'està executant. 273 00:18:25,300 --> 00:18:31,800 Una altra cosa a considerar és que, fins i tot si un altre equip té tcsh o Bash, 274 00:18:31,800 --> 00:18:35,310 si no estan vinculats com estan a l'ordinador local 275 00:18:35,310 --> 00:18:37,990 si vostè té un equip local de Linux o Mac OS, 276 00:18:37,990 --> 00:18:45,630 després una altra vegada obtindrà la closca que es diu sh o csh, no el que és possible que prefereixi. 277 00:18:50,430 --> 00:19:01,130 The Bourne shell actual té millores menors que els de Bash 278 00:19:01,130 --> 00:19:06,100 però més enllà dels de l'intèrpret d'ordres Bourne original. 279 00:19:06,100 --> 00:19:09,690 Com a resultat que, fins i tot en el shell actual Bourne, SH, 280 00:19:09,690 --> 00:19:14,560 tot i que no és Bash, s'assembla al llenguatge C més que el C-shell fa. 281 00:19:14,560 --> 00:19:20,460 Això no era cert quan es va crear el C-shell primer, però s'ha desenvolupat d'aquesta manera. 282 00:19:20,460 --> 00:19:26,560 Vostè pot notar aquí que tots aquests noms de shell, excepte per al shell Bourne 283 00:19:26,560 --> 00:19:30,640 tenir alguna cosa que indiqui que la closca que són - csh, bash - 284 00:19:30,640 --> 00:19:32,550 però el shell Bourne és només sh. 285 00:19:32,550 --> 00:19:34,910 Per què? Aquest va ser el shell inicial. 286 00:19:34,910 --> 00:19:37,770 Va ser el Shell llavors, no una petxina, 287 00:19:37,770 --> 00:19:41,090 i ja que era la petxina, no hi havia cap raó per distingir d'un altre projectil. 288 00:19:41,090 --> 00:19:45,030 Així que per això té aquest nom i encara ho fa. 289 00:19:50,630 --> 00:19:58,990 >> Aquesta samarreta aquí és una línia d'una base de dades de la contrasenya d'un compte que tinc allà 290 00:19:58,990 --> 00:20:01,680 en un altre equip. 291 00:20:01,680 --> 00:20:08,300 Vaig a tractar d'aconseguir que el nom perquè pugui veure aquesta part al final, la closca. 292 00:20:09,720 --> 00:20:15,450 La base de dades de la contrasenya té les característiques d'accés per a tots els usuaris. 293 00:20:15,450 --> 00:20:20,330 Al principi, és el nom d'usuari, que es pot veure els últims 2 cartes meves ara. 294 00:20:20,330 --> 00:20:23,970 Els camps aquí són separats per dos punts. 295 00:20:23,970 --> 00:20:28,210 L'últim camp, com es pot veure, és bin / tcsh, la closca. 296 00:20:28,210 --> 00:20:30,230 Aquest és l'especificador de shell. 297 00:20:30,230 --> 00:20:33,240 Hi ha alguna cosa interessant aquí. 298 00:20:33,240 --> 00:20:36,950 Quan Unix va ser desenvolupat per primera vegada, només hi havia 1 pela, 299 00:20:36,950 --> 00:20:38,350 així que no hi havia una altra opció que hi ha. 300 00:20:38,350 --> 00:20:45,570 Llavors, per què van permetre un camp a la base de dades de contrasenyes per especificar un shell? 301 00:20:45,570 --> 00:20:47,920 No sé, però és una sort que ho van fer. 302 00:20:47,920 --> 00:20:52,030 És bastant difícil fer canvis en el format de dades de contrasenyes 303 00:20:52,030 --> 00:20:54,420 perquè molts programes fan referència al seu format 304 00:20:54,420 --> 00:20:57,720 i hauria de ser reescrit. 305 00:20:57,720 --> 00:21:04,130 És un feliç desenvolupament o fortuït que inclouen aquest camp. 306 00:21:04,130 --> 00:21:12,780 Aquest tipus d'una línia d'arxiu de contrasenyes s'utilitza en tots els equips Unix i Linux pel que jo sé. 307 00:21:12,780 --> 00:21:14,650 El Mac té el seu propi sistema. 308 00:21:14,650 --> 00:21:17,810 En realitat, té un arxiu de contrasenyes amb les línies en aquest format, 309 00:21:17,810 --> 00:21:21,060 però no és aquí on es defineixen les característiques dels usuaris. 310 00:21:21,060 --> 00:21:24,200 Un altre comentari entre parèntesi allà. 311 00:21:36,470 --> 00:21:46,020 >> Si diu un shell, se li pot anomenar com un sub-shell de les seves petxines existents. 312 00:21:46,020 --> 00:21:50,480 Així que si vaig allà, anem a desfer d'aquestes coses. 313 00:21:50,480 --> 00:21:53,350 Sóc aquí al C-shell. 314 00:21:56,830 --> 00:22:01,200 Aquesta variable, que identifica amb precisió de la meva closca, 315 00:22:01,200 --> 00:22:04,300 en realitat no és sempre una manera fiable de determinar quin shell s'està executant, 316 00:22:04,300 --> 00:22:06,220 però en aquest cas és. 317 00:22:06,220 --> 00:22:08,040 Què passa si jo només escric - 318 00:22:09,970 --> 00:22:12,470 Ara estic en Bash. 319 00:22:12,470 --> 00:22:19,540 Algunes coses van a ser els mateixos. ls em diuen els meus manaments. 320 00:22:19,540 --> 00:22:24,500 Si suspenc una tornada al meu C-shell, ls, igual. Cert? 321 00:22:24,500 --> 00:22:28,890 fg, primer pla, de tornada al meu shell Bash. 322 00:22:28,890 --> 00:22:38,290 pwd, directori actual, de nou a la C-shell. 323 00:22:38,290 --> 00:22:43,180 pwd, directori diferent - en realitat no és un directori diferent en aquest cas. 324 00:22:43,180 --> 00:22:45,110 És el mateix directori. 325 00:22:45,110 --> 00:22:50,000 Diguem que vull trucar a una ordre aquí: on ls. 326 00:22:50,000 --> 00:22:52,140 Què vol fer? 327 00:22:52,140 --> 00:22:53,670 Em diu quan la comanda ls, 328 00:22:53,670 --> 00:22:56,670 el que em dóna un llistat de directori, es troba en ls. 329 00:22:56,670 --> 00:23:01,460 Tornem a Bash shell. Intentarem el mateix. 330 00:23:01,460 --> 00:23:05,830 Hmm, interessant allà, on: command not found. 331 00:23:05,830 --> 00:23:07,400 Per què? 332 00:23:07,400 --> 00:23:11,570 La comanda on s'integra al C-shell. 333 00:23:11,570 --> 00:23:15,630 Això no és una ordre que ha de ser llegit en la memòria d'alguna altra part i executat. 334 00:23:15,630 --> 00:23:20,310 El C-shell s'executa mitjançant la transferència de l'execució de part del seu propi codi 335 00:23:20,310 --> 00:23:22,790 i no és en el shell Bash. 336 00:23:22,790 --> 00:23:25,710 Així Bash, que no tingui una ordre integrat, el busca, no el troba, 337 00:23:25,710 --> 00:23:27,720 i obtenim un error. 338 00:23:27,720 --> 00:23:32,290 Així que aquí tenim un intèrpret d'ordres s'executa amb un C-shell, i cridem a això un sub-shell. 339 00:23:32,290 --> 00:23:38,480 I en cas que és curiós, Bash shell té la seva pròpia manera de localitzar les ordres. 340 00:23:38,480 --> 00:23:42,590 hash es refereix al fet que es pot executar més ràpidament, 341 00:23:42,590 --> 00:23:44,960 trobant-se amb més rapidesa. 342 00:23:44,960 --> 00:23:48,610 Aquesta és una de les millores incorporades en algunes d'aquestes petxines. 343 00:23:50,220 --> 00:23:54,200 >> Petxines de tipus Bourne es prefereixen per a la programació. 344 00:23:54,200 --> 00:23:57,300 Tenen estructures de control, com bucles, sentències condicionals, 345 00:23:57,300 --> 00:24:00,240 el tipus de comandes que pot utilitzar en llenguatges de programació com C 346 00:24:00,240 --> 00:24:04,190 o qualsevol idioma. Potser vostè està programant en Java o el que sigui. 347 00:24:04,190 --> 00:24:06,460 Els dipòsits tenen aquells massa. 348 00:24:06,460 --> 00:24:11,790 Les petxines de tipus Bourne, en particular Bash, tenen més 349 00:24:11,790 --> 00:24:15,730 i que estan dissenyats amb una major flexibilitat. 350 00:24:15,730 --> 00:24:20,700 L'intèrpret d'ordres té arrays. El shell Bourne original no ho fa. 351 00:24:20,700 --> 00:24:26,130 Així que pot ser considerablement més avantatjosa per a la programació. 352 00:24:26,130 --> 00:24:29,810 El C-shell realitat existeixen matrius, però no té una gran quantitat d'aquestes altres característiques. 353 00:24:29,810 --> 00:24:33,450 Les petxines de tipus Bourne s'executaran més ràpid 354 00:24:33,450 --> 00:24:36,520 si no tenen les característiques previstes per a l'ús interactiu. 355 00:24:36,520 --> 00:24:39,340 Es carregui les coses amb un propòsit, el que els carrega cap avall per a un altre propòsit. 356 00:24:39,340 --> 00:24:41,520 Aquí està aquesta disjuntiva allà. 357 00:24:41,520 --> 00:24:44,510 Aquestes característiques que estan destinades per a ús interactiu 358 00:24:44,510 --> 00:24:46,920 realment són de poc o cap ús de seqüència. 359 00:24:46,920 --> 00:24:52,160 És possible utilitzar un sub-shell interactiu com el que jo vaig començar allà 360 00:24:52,160 --> 00:24:57,780 per posar a prova les ordres que es va a utilitzar en un script. 361 00:24:57,780 --> 00:25:01,180 Això és el que no pots veure amb perl. Vostè pot fer-ho amb les petxines. 362 00:25:01,180 --> 00:25:04,850 Fins i tot les estructures com els bucles i així successivament es poden executar de forma interactiva. 363 00:25:04,850 --> 00:25:07,000 Ells són en ocasions útils per executar de forma interactiva, 364 00:25:07,000 --> 00:25:10,180 però el més probable és que vostè està utilitzant per desenvolupar un guió. 365 00:25:15,690 --> 00:25:17,400 >> Alias. 366 00:25:17,400 --> 00:25:21,630 Això serà sobre el C-shell. 367 00:25:23,270 --> 00:25:27,570 Mecanisme d'Història on s'arriba de nou a les ordres anteriors 368 00:25:27,570 --> 00:25:30,340 o parts d'ells que ha ja ha executat. 369 00:25:30,340 --> 00:25:33,680 Una vegada més, sobre el C-shell, la shell Bourne i Korn shell tenen aquestes coses, 370 00:25:33,680 --> 00:25:35,620 però jo no vaig a entrar-hi. 371 00:25:35,620 --> 00:25:40,340 Així que aquí hi ha alguns àlies útils que tinc. 372 00:25:43,100 --> 00:25:44,880 En lloc d'escriure ls - és una ordre comú - 373 00:25:44,880 --> 00:25:47,620 només has d'escriure l i s'estalviarà 1 caràcter. 374 00:25:47,620 --> 00:25:50,600 ls amb diverses opcions, totes les feines. 375 00:25:50,600 --> 00:25:54,460 Tingueu en compte que aquestes definicions tenen cometes al voltant d'ells. 376 00:25:54,460 --> 00:25:57,520 En aquests casos, les cometes no són necessàries. 377 00:25:57,520 --> 00:26:00,100 Si vostè pot definir els àlies sense cometes, encara funcionaria. 378 00:26:00,100 --> 00:26:02,910 Són recomanats. 379 00:26:02,910 --> 00:26:04,900 Hi ha situacions en què no es pot utilitzar la cita 380 00:26:04,900 --> 00:26:08,050 perquè vostè vol que succeeixi alguna cosa que la cita impediria. 381 00:26:08,050 --> 00:26:11,210 De vegades es pot citar part de la definició, però no tots de la mateixa. 382 00:26:11,210 --> 00:26:17,010 També es recomana en general utilitzar cometes simples en lloc de cometes dobles. 383 00:26:17,010 --> 00:26:19,750 Les cometes dobles tenen efectes sobre la definició de les variables, 384 00:26:19,750 --> 00:26:22,950 sobretot fent que aquests siguin avaluats en lloc de detenir. 385 00:26:22,950 --> 00:26:25,910 Per què anàvem a voler aturar l'avaluació? 386 00:26:25,910 --> 00:26:28,710 I com fer que les cotitzacions per a nosaltres? 387 00:26:28,710 --> 00:26:32,600 >> Aquest és una ordre que vostè pot ser que trobi interessant. 388 00:26:32,600 --> 00:26:35,470 'Ls g *' 389 00:26:35,470 --> 00:26:37,640 g *, com vostè probablement sap, és una expressió comodí 390 00:26:37,640 --> 00:26:40,290 per a tots els noms d'arxiu que comencen amb g. 391 00:26:40,290 --> 00:26:46,410 Si acabo d'escriure en un ordre ls g *, vaig a aconseguir una llista de tots els noms en el meu directori actual. 392 00:26:46,410 --> 00:26:50,870 Si jo defineixo aquest àlies, ja que és aquí amb les cometes, 393 00:26:50,870 --> 00:26:56,990 s'executarà aquest comando en el directori actual on s'està executant això. 394 00:26:56,990 --> 00:27:01,250 Però si executa la definició d'àlies sense cometes, 395 00:27:01,250 --> 00:27:09,620 avaluarà el comodí g * quan s'executa aquesta comanda de definició. 396 00:27:09,620 --> 00:27:14,400 Així que la definició de l'àlies es ls seguit per la llista d'arxius en el directori 397 00:27:14,400 --> 00:27:16,310 en què s'executa la comanda àlies, 398 00:27:16,310 --> 00:27:19,180 independentment d'on realment es va a executar la comanda. 399 00:27:19,180 --> 00:27:26,360 Això no és de molta utilitat, i les cometes simples a evitar l'avaluació de l'asterisc. 400 00:27:26,360 --> 00:27:30,780 Així que vostè acaba d'obtenir la definició ser ls g *. 401 00:27:30,780 --> 00:27:35,510 Després, quan s'executa l'àlies, LGS, llavors es posa això. 402 00:27:35,510 --> 00:27:40,490 Ara ja no hi ha cites, i avaluaran l'asterisc quan s'executa la comanda àlies. 403 00:27:40,490 --> 00:27:43,900 Així que això és una cosa. 404 00:27:43,900 --> 00:27:46,590 Les cometes dobles tindrien el mateix efecte aquí, 405 00:27:46,590 --> 00:27:50,580 però hi ha altres casos en què les cometes dobles no anava a funcionar tan bé. 406 00:27:50,580 --> 00:27:52,450 >> Aquí és un altre. 407 00:27:52,450 --> 00:27:54,270 Potser coneguis la comanda grep. 408 00:27:54,270 --> 00:28:02,110 La comanda grep es pot utilitzar per examinar un arxiu per a les línies que tenen certes cadenes. 409 00:28:02,110 --> 00:28:10,350 Així que anirem d'aquí i sortiré de la meva shell Bourne. 410 00:28:23,570 --> 00:28:25,450 Okay. Aquí hi ha un arxiu. 411 00:28:25,450 --> 00:28:31,490 Diguem que és cadenes ABC grep. Aquí està. 412 00:28:31,490 --> 00:28:37,930 Si ho faig zddd grep, no aconsegueixo res. Okay. 413 00:28:37,930 --> 00:28:40,960 Així que troba una cadena, s'informa, no el troba, no n'informa. 414 00:28:40,960 --> 00:28:44,930 Genera qualsevol línia que té aquesta cadena en ell. 415 00:28:44,930 --> 00:28:49,080 Hi ha tot tipus d'opcions aquí que es poden trobar a la documentació. 416 00:28:49,080 --> 00:28:52,160 Heus aquí una manera de fer-ho. 417 00:28:52,160 --> 00:29:03,290 I aquesta, àlies grabc 'grep abc'? 418 00:29:03,290 --> 00:29:09,000 Això va a incloure 1 argument quan es defineix l'àlies. 419 00:29:09,000 --> 00:29:26,300 Així que si ho faig aquí, ara si ho faig grabc, 420 00:29:26,300 --> 00:29:30,620 ara l'àlies inclou més que el simple ordre. També té l'argument. 421 00:29:30,620 --> 00:29:32,190 Fins ara funciona. 422 00:29:32,190 --> 00:29:38,590 Tinc un altre comandament aquí, aquest, de manera que aquestes són les diferents cadenes d'aquí 423 00:29:38,590 --> 00:29:46,790 i demostrar que aquest no troba res allà ja que no coincideix. 424 00:29:46,790 --> 00:29:56,180 >> Què passa si vull incloure en la definició d'àlies al fitxer que vaig a buscar 425 00:29:56,180 --> 00:30:02,970 i vull donar com a argument per l'àlies de la cadena que estic buscant? 426 00:30:02,970 --> 00:30:08,040 Podria voler dir abc com a argument al meu àlies, 427 00:30:08,040 --> 00:30:10,870 però l'àlies ja va determinar l'arxiu. 428 00:30:10,870 --> 00:30:15,710 I aquí és on entra en joc aquesta expressió 429 00:30:20,430 --> 00:30:25,270 Noteu aquí que hem grep igual que abans. 430 00:30:25,270 --> 00:30:28,130 Tenim l'arxiu aquí, cordes. 431 00:30:28,130 --> 00:30:35,610 \! ^, Tipus d'una expressió estranya, suposo, si vostè no ha vist això abans. 432 00:30:35,610 --> 00:30:39,920 Signe d'exclamació és part del mecanisme de la història de C-shell. 433 00:30:39,920 --> 00:30:45,220 Es pot recordar les ordres anteriors, es pot recordar arguments dels comandaments i així successivament. 434 00:30:46,760 --> 00:31:01,570 El mecanisme d'historial s'utilitza com a part d'aliasing. 435 00:31:01,570 --> 00:31:07,390 Si especifiqueu una línia després del signe d'exclamació, es referirà a aquesta línia en la llista de la història, 436 00:31:07,390 --> 00:31:11,910 que no estarem ficant ara, ja que és un tema totalment diferent. 437 00:31:11,910 --> 00:31:16,280 És possible especificar part d'una línia. 438 00:31:16,280 --> 00:31:22,950 So! 03:02 seria el segon argument de comandament número 3. 439 00:31:22,950 --> 00:31:30,430 El símbol d'intercalació en aquesta expressió representa el primer argument. 440 00:31:30,430 --> 00:31:34,410 Si no li donen una indicació de quina funció és referint, 441 00:31:34,410 --> 00:31:37,300 es refereix a la comanda immediatament anterior, 442 00:31:37,300 --> 00:31:41,990 i el símbol d'intercalació és un símbol per al primer argument. 443 00:31:41,990 --> 00:31:46,820 Com que és el símbol d'intercalació i no el nombre, no cal utilitzar els dos punts, 444 00:31:46,820 --> 00:31:52,660 so! ^ vol dir que el primer argument de l'ordre anterior. 445 00:31:52,660 --> 00:31:55,020 Una mica barrejat aquí. 446 00:31:55,020 --> 00:31:58,450 En aquest cas, quan s'utilitza això com una definició d'àlies, 447 00:31:58,450 --> 00:32:04,650 la referència de la història fa referència de nou a les ordres en què s'utilitza l'àlies. 448 00:32:04,650 --> 00:32:08,470 Així que això va a tornar 1 de comandaments com una operació de la història, 449 00:32:08,470 --> 00:32:11,810 sinó com una operació àlies fa referència a l'ordre en què hauria d'escriure, 450 00:32:11,810 --> 00:32:14,780 dir, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Tenim aquí les cometes en el mateix. Quina és la barra invertida per? 452 00:32:20,240 --> 00:32:30,810 En aquest cas, com en altres, no volem executar el mecanisme de la història 453 00:32:30,810 --> 00:32:33,680 mentre es defineix l'àlies. 454 00:32:33,680 --> 00:32:37,900 Si no tinguéssim la barra invertida allà, la closca es retiraria en el primer argument 455 00:32:37,900 --> 00:32:41,870 del comandament de la dreta abans que córrer aquesta comanda àlies, el que no volem. 456 00:32:41,870 --> 00:32:47,520 Volem que això s'integra en la comanda àlies per cridar en una discussió posterior. 457 00:32:47,520 --> 00:32:53,550 Les cometes simples no escapen a un signe d'exclamació, la referència de la història. 458 00:32:53,550 --> 00:32:57,450 Potser vostè sap la fuita expressió significa canviar el significat d'alguna cosa. 459 00:32:57,450 --> 00:33:00,260 En aquest cas, significa deixar una mica de tenir un significat especial. 460 00:33:00,260 --> 00:33:03,030 Significat especial del signe d'exclamació és història. 461 00:33:03,030 --> 00:33:05,790 Escapa i no té aquest significat. 462 00:33:05,790 --> 00:33:08,080 Cotitzacions no fan això; barra invertida fa. 463 00:33:08,080 --> 00:33:11,900 Així que en realitat estem fent servir 2 nivells d'escapar d'aquí. 464 00:33:23,500 --> 00:33:29,620 Vaig a moure aquesta comanda a l'altra finestra sense escriure- 465 00:33:29,620 --> 00:33:35,210 mitjançant l'ús d'aquestes operacions d'edició, que poden ser d'utilitat. 466 00:33:40,620 --> 00:33:42,460 Una altra cosa que aquí us vaig a mostrar. 467 00:33:42,460 --> 00:33:46,730 Si vostè acaba d'escriure àlies sense arguments, que li diu a tots els seus arguments. 468 00:33:46,730 --> 00:33:48,640 Es tracta d'un munt d'àlies que ja tenia aquí 469 00:33:48,640 --> 00:33:53,400 a més dels que he estat usant aquí avui. 470 00:33:53,400 --> 00:34:00,220 Però si acabo d'escriure amb el nom d'un àlies, em diu el que vol dir. 471 00:34:00,220 --> 00:34:03,390 Observi que les cotitzacions s'han anat i la barra invertida s'ha anat. 472 00:34:03,390 --> 00:34:08,620 Aquesta cadena d'aquí és el resultat d'aquesta definició d'àlies, 473 00:34:08,620 --> 00:34:12,199 i ara s'acaba! ^ en ella. 474 00:34:12,199 --> 00:34:19,150 Això es va a veure en les cordes d'arxiu per a res. 475 00:34:19,150 --> 00:34:34,900 Així que si ho faig cadenes grstrings_file, jo no li vaig donar res a buscar allà, 476 00:34:34,900 --> 00:34:37,429 però està buscant en les cordes. 477 00:34:37,429 --> 00:34:42,330 No trobava les paraules cadenes en les cordes d'arxiu, però sí trobar abc. 478 00:34:42,330 --> 00:34:46,770 I no troba això. 479 00:34:46,770 --> 00:34:52,330 Així que aquí estem donant un argument que impacta en la definició de l'àlies, 480 00:34:52,330 --> 00:34:55,530 que s'insereix en ell. 481 00:34:55,530 --> 00:34:58,540 És el lloc on aquesta expressió ve. 482 00:34:58,540 --> 00:35:00,240 Vostè pot utilitzar més d'1. 483 00:35:00,240 --> 00:35:03,170 El símbol d'intercalació és un símbol per al primer argument. 484 00:35:03,170 --> 00:35:07,510 Si voleu utilitzar un segon argument, vostè llavors dir: 2. 485 00:35:07,510 --> 00:35:11,250 No hi ha símbol especial per al segon argument. 486 00:35:11,250 --> 00:35:14,790 I perquè vostè està utilitzant un nombre, vostè hauria de fer servir els dos punts. 487 00:35:14,790 --> 00:35:17,220 Hi ha, però, una altra opció aquí. 488 00:35:17,220 --> 00:35:21,220 La mostra de dòlar representa l'últim argument. 489 00:35:21,220 --> 00:35:23,320 I perquè es tracta d'un símbol, pot ometre el còlon. 490 00:35:23,320 --> 00:35:25,870 Pel que seria l'últim argument en la llista. 491 00:35:25,870 --> 00:35:27,900 I també està aquesta. 492 00:35:27,900 --> 00:35:31,380 L'asterisc significa que tots, de manera que aquesta és la llista d'arguments completa, 493 00:35:31,380 --> 00:35:35,150 i de nou, es pot ometre el còlon a causa que no és un nombre. 494 00:35:36,970 --> 00:35:39,950 Espero que estiguis tot observant tot això. 495 00:35:39,950 --> 00:35:54,100 >> El mecanisme de la història pot tornar a les línies anteriors a la llista de l'historial. 496 00:35:54,100 --> 00:36:01,370 Vostè pot fer això en una definició d'àlies. 497 00:36:01,370 --> 00:36:02,950 Mai he vist aquest fet. 498 00:36:02,950 --> 00:36:05,840 Això tindria l'efecte de treure les ordres anteriors a la llista històrica 499 00:36:05,840 --> 00:36:08,130 quan s'executa l'àlies, el que podria haver diferents ordres 500 00:36:08,130 --> 00:36:11,240 depenent de quan i on l'executa. 501 00:36:11,240 --> 00:36:14,020 És concebible que és possible que vulgueu retirar d'aquesta referència 502 00:36:14,020 --> 00:36:15,900 només per saber el que era una ordre anterior. 503 00:36:15,900 --> 00:36:17,280 Mai he vist que això passi. 504 00:36:17,280 --> 00:36:19,970 Suposo que algú podria desitjar, però això és molt poc probable. 505 00:36:19,970 --> 00:36:26,480 Hi ha una altra cosa aquí. 506 00:36:26,480 --> 00:36:33,060 Si utilitzeu aquesta referència de tipus de la història, 507 00:36:33,060 --> 00:36:38,190 a continuació, només s'utilitzen els arguments pels quals existeix aquesta referència. 508 00:36:38,190 --> 00:36:42,180 Si vostè té una definició d'àlies que no utilitza una referència de tipus de la història, 509 00:36:42,180 --> 00:36:44,060 Si només es converteix en el principi de la comanda 510 00:36:44,060 --> 00:36:46,520 i té més arguments, llavors qualsevol cosa que escrigui després que 511 00:36:46,520 --> 00:36:48,450 s'afegeixen a la comanda. 512 00:36:48,450 --> 00:36:52,040 En aquest cas, l'exemple que acabo de donar-hi, utilitzem el primer argument; 513 00:36:52,040 --> 00:36:54,610 no fem servir cap altre. 514 00:36:54,610 --> 00:36:57,960 Si s'haguessin donat altres arguments en la línia d'ordres, no s'utilitzarien. 515 00:36:57,960 --> 00:37:04,630 Així que si vostè utilitza la referència de la història en absolut, llavors vostè ha d'utilitzar per obtenir qualsevol argument. 516 00:37:04,630 --> 00:37:11,310 >> Hi ha una altra cosa aquí només vull esmentar, en part, entre parèntesis, 517 00:37:11,310 --> 00:37:15,250 és a dir, que aquest mecanisme de la història amb el signe d'exclamació 518 00:37:15,250 --> 00:37:18,010 es remunta a la C-shell originals. 519 00:37:18,010 --> 00:37:27,060 El tcsh introduir operacions història 520 00:37:27,060 --> 00:37:30,910 que utilitzen el tipus de comandaments i cadenes dels editors, 521 00:37:30,910 --> 00:37:33,650 ja sigui Emacs o vaig veure. 522 00:37:33,650 --> 00:37:36,430 La meva opinió personal és que Emacs és molt més fàcil d'utilitzar per a aquest propòsit 523 00:37:36,430 --> 00:37:39,390 encara que utilitzi vaig per a l'edició regular. 524 00:37:39,390 --> 00:37:43,900 Hi ha diversos comandaments de Emacs que ara s'han adaptat a la història. 525 00:37:43,900 --> 00:37:46,410 Control P posa la línia anterior en la llista d'historial. 526 00:37:46,410 --> 00:37:48,840 Una altra Control P li aconseguirà l'anterior a aquesta. 527 00:37:48,840 --> 00:37:50,540 La fletxa cap amunt fa el mateix. 528 00:37:50,540 --> 00:37:54,190 Control No obté la següent comanda si ja s'ha desplaçat cap enrere alguns aspectes. 529 00:37:54,190 --> 00:37:55,880 Fletxa cap avall fa això també. 530 00:37:55,880 --> 00:38:00,480 Podeu moure d'esquerra a dreta amb les fletxes i diverses altres coses. 531 00:38:00,480 --> 00:38:02,390 Això pot fer ús del mecanisme de la història 532 00:38:02,390 --> 00:38:05,070 molt més fàcil d'utilitzar la sintaxi d'exclamació, 533 00:38:05,070 --> 00:38:07,930 però que no es farà servir que en una definició d'àlies. 534 00:38:17,780 --> 00:38:20,020 Anem a anar més que en un altre moment. 535 00:38:24,300 --> 00:38:25,810 >> Variables. 536 00:38:26,880 --> 00:38:29,510 Saps el que les variables estan en llenguatges de programació. 537 00:38:29,510 --> 00:38:31,680 Les closques d'ells tenen també. 538 00:38:31,680 --> 00:38:37,350 El C-shell utilitza la comanda set per assignar les variables, 539 00:38:37,350 --> 00:38:41,360 pel que estableix la variable a un valor de b - 540 00:38:41,360 --> 00:38:46,390 com he dit, una definició inútil sinó una il · lustració de com s'utilitza. 541 00:38:48,790 --> 00:38:52,410 La comanda setembre crearà una variable si no existeix ja. 542 00:38:55,270 --> 00:39:02,490 Les posicions per als scripts de shell es poden considerar les variables, 543 00:39:02,490 --> 00:39:10,750 però l'ús dels mateixos i les regles per a ells són una mica diferents. 544 00:39:10,750 --> 00:39:14,320 No es pot assignar un valor a $ 1 en el transcurs d'un guió. 545 00:39:14,320 --> 00:39:18,340 Vostè hauria de definir una nova variable per a aquest propòsit si alguns de vostès volien. 546 00:39:23,000 --> 00:39:28,470 Escriu SET sense arguments i s'obté una llista de totes les variables definides actualment. 547 00:39:28,470 --> 00:39:34,220 I anem a arribar al meu altre shell aquí i vegem el que obtenim si fem això. 548 00:39:34,220 --> 00:39:37,110 Tota una llarga llista, oi? 549 00:39:37,110 --> 00:39:40,990 Desplaceu-vos amunt una mica. Mira tot això. 550 00:39:40,990 --> 00:39:44,330 Algunes d'aquestes coses es defineixen automàticament pel shell. 551 00:39:44,330 --> 00:39:49,320 El shell crea la variable i li dóna un valor. 552 00:39:49,320 --> 00:39:52,730 Alguns d'ells són definits pel shell, però després redefinides per l'usuari 553 00:39:52,730 --> 00:39:54,820 d'acord amb les seves preferències. 554 00:39:54,820 --> 00:39:59,110 I alguns d'ells són creats per l'usuari en funció del que està fent aquest dia. 555 00:39:59,110 --> 00:40:01,880 Això és només set sense arguments. 556 00:40:06,920 --> 00:40:10,050 Hi ha una estranya característica aquí d'aquesta cosa. 557 00:40:10,050 --> 00:40:17,980 Ha de ser o cap espai entre signe igual i el nom de la variable 558 00:40:17,980 --> 00:40:23,700 i el valor o els espais a banda i banda del signe igual, 559 00:40:23,700 --> 00:40:28,940 com en aquest un. 560 00:40:35,620 --> 00:40:41,340 Això no funcionarà, i això realment és una ordre vàlid 561 00:40:41,340 --> 00:40:43,390 però no va a fer el que tenia planejat. 562 00:40:43,390 --> 00:40:50,070 Aquest comandament funcionarà perquè si acabes de dir i establir un nom de variable 563 00:40:50,070 --> 00:40:54,890 sense signe igual o conjunt i un nom de variable amb un signe igual i sense valor, 564 00:40:54,890 --> 00:40:57,770 s'estableix la variable en un valor nul. 565 00:40:57,770 --> 00:41:00,120 Per tal d'establir a = és una ordre vàlid. 566 00:41:00,120 --> 00:41:04,370 La comanda setembre pot definir més d'1 variable sobre la mateixa línia. 567 00:41:04,370 --> 00:41:11,240 Així que aquesta comanda d'aquí té l'efecte de definir a i b a valors nuls. 568 00:41:11,240 --> 00:41:13,470 Probablement no és el que vols. 569 00:41:13,470 --> 00:41:17,940 Aquest d'aquí, es va esmentar anteriorment, donarà lloc a un error 570 00:41:17,940 --> 00:41:21,270 ja = b no és una expressió vàlida. 571 00:41:21,270 --> 00:41:23,680 Un nom de variable no pot començar amb el signe igual. 572 00:41:26,760 --> 00:41:29,080 I hi ha aquestes coses noves aquí. 573 00:41:29,080 --> 00:41:36,820 Els dos punts s'utilitzen per seleccionar els arguments de les línies de la història, 574 00:41:36,820 --> 00:41:41,210 i que poden ser utilitzats - i jo no van entrar en abans - per modificar aquestes coses. 575 00:41:41,210 --> 00:41:44,480 Ells també es poden utilitzar per modificar les variables de shell. 576 00:41:44,480 --> 00:41:49,050 Aquest d'aquí, $ a, té un valor. 577 00:41:49,050 --> 00:41:55,040 : R s'enlairarà una extensió. 578 00:41:55,040 --> 00:41:57,200 Una extensió serà qualsevol cosa després d'un punt, 579 00:41:57,200 --> 00:41:59,200 un punt i res després que al final d'un arxiu, 580 00:41:59,200 --> 00:42:03,230 només al final de la llista després de l'última barra. 581 00:42:03,230 --> 00:42:05,480 Així que tinc aquí. 582 00:42:05,480 --> 00:42:10,730 una és que. Es deixarà caure l'. O. 583 00:42:10,730 --> 00:42:16,510 Si no hi ha extensió, només els noms de ruta després de l'última barra, no tindrà cap efecte. 584 00:42:16,510 --> 00:42:27,480 a: h, que una expressió variable, s'enlairarà l'últim element d'una llista de directoris, 585 00:42:27,480 --> 00:42:29,660 de nou, només després de l'última barra. 586 00:42:29,660 --> 00:42:33,160 Així que / a / b / c es converteix en / a / b, 587 00:42:33,160 --> 00:42:38,870 però aquest es canvia perquè l'element després de la llista és nul. 588 00:42:38,870 --> 00:42:43,070 Aquí hi ha alguna cosa que també vull remarcar. 589 00:42:43,070 --> 00:42:46,770 Aquests qualificadors no busquen l'existència d'aquests fitxers. 590 00:42:46,770 --> 00:42:48,910 Ells només busquen cadenes. 591 00:42:48,910 --> 00:42:54,520 Aquests pretenen manipular els noms d'arxius, rutes d'accés, 592 00:42:54,520 --> 00:42:57,520 però es poden utilitzar en qualsevol cadena, encara que no és un nom de fitxer. 593 00:42:57,520 --> 00:42:58,920 I ells no busquen l'existència, 594 00:42:58,920 --> 00:43:03,550 pel que si no existeix tal arxiu, / a / b / c, això seguirà funcionant. 595 00:43:03,550 --> 00:43:06,930 Ja sigui d'alguna utilitat, és una altra qüestió, però encara funciona. 596 00:43:06,930 --> 00:43:12,850 Les variables són diferents en els shells Bourne. Ja arribarem a això més endavant. 597 00:43:12,850 --> 00:43:18,240 Signe de dòlar es pot escapar de la mateixa manera que el signe d'exclamació i l'asterisc. 598 00:43:18,240 --> 00:43:21,760 Signe de dòlar es pot escapar amb una barra invertida o les cometes simples. 599 00:43:21,760 --> 00:43:24,790 Les cometes dobles tenen l'estrany efecte en totes les petxines 600 00:43:24,790 --> 00:43:28,690 d'obligar a l'avaluació d'una mostra de dòlar expressió variable. 601 00:43:28,690 --> 00:43:31,960 Així que si està sent escapar d'una manera, les cometes dobles poden tenir l'efecte 602 00:43:31,960 --> 00:43:34,380 de causant que es pot avaluar de totes maneres. 603 00:43:34,380 --> 00:43:37,090 Això és una mica confús. 604 00:43:37,090 --> 00:43:43,740 Si hi ha diversos nivells d'escapar, com les cometes simples dins de cometes dobles 605 00:43:43,740 --> 00:43:46,770 o cometes dobles dins de cometes simples, s'ha de provar per veure què passarà 606 00:43:46,770 --> 00:43:49,520 a una variable si està utilitzant un. 607 00:43:49,520 --> 00:43:53,410 Aquestes situacions 2 - doble a l'interior d'un sol interior, únic de doble - 608 00:43:53,410 --> 00:43:55,980 no necessàriament li donarà el mateix resultat. 609 00:44:02,520 --> 00:44:05,600 Les variables d'entorn, variables de C-shell consolidats. 610 00:44:05,600 --> 00:44:08,340 Les variables d'entorn són també variables en el C-shell, 611 00:44:08,340 --> 00:44:11,250 i també són variables en altres closques massa. 612 00:44:11,250 --> 00:44:15,230 En el C-shell, són conjunts diferents. 613 00:44:15,230 --> 00:44:18,130 Les coses que jo deia abans són sobre les variables de shell. 614 00:44:18,130 --> 00:44:21,300 Les variables d'entorn són un conjunt diferent de variables 615 00:44:21,300 --> 00:44:28,650 amb l'excepció d'algunes variables que anomenem variables lligades, 616 00:44:28,650 --> 00:44:30,640 que són molt importants i entrarem en això més tard. 617 00:44:30,640 --> 00:44:34,950 Les variables d'entorn es transmeten automàticament 618 00:44:34,950 --> 00:44:41,800 a les petxines o els comandaments que s'executen des de la shell. 619 00:44:41,800 --> 00:44:46,220 Les altres coses no ho són. Les variables de shell, els àlies no ho són. Les variables d'entorn són. 620 00:44:46,220 --> 00:44:48,630 És per això que els anomenem variables d'entorn, 621 00:44:48,630 --> 00:44:55,030 La idea és que el medi ambient s'estén més enllà només la seva shell actual. 622 00:44:55,030 --> 00:45:00,510 Ells es poden utilitzar per definir les coses per les ordres. 623 00:45:00,510 --> 00:45:05,470 Heus aquí un exemple. IMPRESSORA, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Ambdues variables es poden definir una impressora que una ordre s'utilitzarà per imprimir les coses. 625 00:45:12,270 --> 00:45:16,500 Si té diverses impressores en tot, és possible que vulgueu posar el que més t'agradi. 626 00:45:16,500 --> 00:45:21,320 La raó per la qual tenim 2 variables és que els diferents conjunts d'ordres es van escriure 627 00:45:21,320 --> 00:45:23,870 l'ús d'aquests diferents variables. 628 00:45:23,870 --> 00:45:25,910 Vostè pot donar-los valors diferents. 629 00:45:25,910 --> 00:45:28,860 El més probable és que els donis tant el mateix valor. 630 00:45:28,860 --> 00:45:35,840 Aquestes coses funcionen perquè les ordres que fan la impressió 631 00:45:35,840 --> 00:45:40,740 van ser programats per examinar els valors d'aquestes variables. 632 00:45:42,200 --> 00:45:46,150 Si un programa no es van escriure d'aquesta manera, si fos escrit per fer una altra cosa, 633 00:45:46,150 --> 00:45:48,280 la variable seria irrellevant. 634 00:45:48,280 --> 00:45:52,530 De manera que el sistema operatiu no està a la recerca d'aquestes variables 635 00:45:52,530 --> 00:45:55,210 cada vegada que es refereixen a una impressora. 636 00:45:55,210 --> 00:45:59,090 Un comando que fa la impressió està a la recerca d'aquestes variables si està programat d'aquesta manera. 637 00:46:11,030 --> 00:46:15,240 Aquestes variables es defineixen sovint en els arxius d'inicialització 638 00:46:15,240 --> 00:46:19,440 però no necessàriament. 639 00:46:19,440 --> 00:46:21,050 Vostè pot definir en la línia d'ordres. 640 00:46:21,050 --> 00:46:24,090 Poden definir-se en una ordre. 641 00:46:24,090 --> 00:46:28,740 Un comando que s'executa alguna cosa podria tenir la seva pròpia selecció de variables - 642 00:46:28,740 --> 00:46:32,390 variables que són exclusius d'un paquet de programari en particular, per exemple. 643 00:46:32,390 --> 00:46:36,740 Aquests seran definits quan s'executa el paquet. 644 00:46:39,690 --> 00:46:42,680 Com són aquestes variables passen a un sub-shell? 645 00:46:42,680 --> 00:46:48,210 Quan s'escriu un sub-shell, no escriu en aquesta àrea. 646 00:46:48,210 --> 00:46:53,260 L'àrea de la sub-shell que es dedica a les variables d'entorn 647 00:46:53,260 --> 00:46:56,450 que no està escrit pel sub-shell, sinó que està escrit per còpia. 648 00:46:56,450 --> 00:47:00,530 Quan s'executa una ordre comú, com ara aquestes comandes per imprimir o el que sigui, 649 00:47:00,530 --> 00:47:03,840 que comencen per la creació d'un nou shell. 650 00:47:03,840 --> 00:47:06,190 El shell crea una petxina i després sobreescriu part 651 00:47:06,190 --> 00:47:08,800 amb la comanda que s'està executant, que és una mica confús, 652 00:47:08,800 --> 00:47:10,740 però així és com aquestes comandes obtenen les variables d'entorn 653 00:47:10,740 --> 00:47:14,890 que a continuació es refereixen al futur. 654 00:47:21,920 --> 00:47:28,010 La comanda aquí per definir el setenv variable. 655 00:47:28,010 --> 00:47:36,470 Així és com es defineixen. És 3 elements: setenv, variables, valor. 656 00:47:36,470 --> 00:47:44,710 Si només setenv sense arguments, què s'obté? 657 00:47:47,220 --> 00:47:48,810 Una llista de totes aquestes variables. 658 00:47:48,810 --> 00:47:53,190 De nou, és una bona llista llarga i en aquest cas, com en els altres, 659 00:47:53,190 --> 00:47:57,320 aquestes variables es defineixen en gran part per la meva intervenció d'inici de sessió pel mateix dipòsit 660 00:47:57,320 --> 00:47:59,740 no per res del que vaig fer. 661 00:47:59,740 --> 00:48:03,580 Hi ha un altre comandament aquí, printenv. 662 00:48:07,520 --> 00:48:10,340 Això també imprimeix el medi ambient. 663 00:48:10,340 --> 00:48:15,240 Observeu aquest últim que aquí, = Editor vaig veure. 664 00:48:15,240 --> 00:48:21,120 Això diu que si estic fent servir una cosa que crida a un editor 665 00:48:21,120 --> 00:48:25,530 i no específic un editor i em permet l'elecció, pot donar-me vaig veure. 666 00:48:25,530 --> 00:48:37,280 Què passa si faig EDITOR printenv? Em diu el que és. 667 00:48:37,280 --> 00:48:41,340 Just abans d'això, hi havia una variable, MENYS. 668 00:48:41,340 --> 00:48:46,040 Aquestes són les opcions per defecte quan executo la comanda MENYS, 669 00:48:46,040 --> 00:48:49,360 que mostra fitxers. 670 00:48:49,360 --> 00:48:55,910 Així que si faig això, printenv pot prendre 1 o 0 argument arguments, 671 00:48:55,910 --> 00:48:58,070 no més d'1. 672 00:49:01,800 --> 00:49:05,690 Hi ha altres ordres també, però no entrarem en tot el que avui en dia. 673 00:49:05,690 --> 00:49:11,010 Recordeu que no eren els modificadors de les variables de shell, com: h, 674 00:49:11,010 --> 00:49:14,350 que el portarà fins a l'últim element d'una ruta d'accés, 675 00:49:14,350 --> 00:49:17,950 o: r, que es reduirà una extensió. 676 00:49:17,950 --> 00:49:23,110 Aquells ara s'apliquen a les variables d'entorn també. Ells no solien fer-ho. 677 00:49:23,110 --> 00:49:24,960 Solia ser que no podien ser modificats. Ara que pot ser. 678 00:49:24,960 --> 00:49:29,190 És un dels avenços amb els desenvolupaments de les petxines en els últims anys. 679 00:49:29,190 --> 00:49:35,620 Deia que les petxines com a part dels entorns 680 00:49:35,620 --> 00:49:43,040 i les variables de shell al C-shell són, amb algunes excepcions, conjunts diferents. 681 00:49:43,040 --> 00:49:46,790 Podeu establir una variable d'entorn i una variable de shell amb el mateix nom. 682 00:49:46,790 --> 00:49:49,220 Seran diferents variables, ja que poden tenir diferents valors. 683 00:49:49,220 --> 00:49:53,090 Canviar el valor d'un no canviarà el valor de l'altra. 684 00:49:53,090 --> 00:49:58,070 Aquestes variables es van avaluar amb el signe de dòlar - $ a, $ el que sigui. 685 00:49:58,070 --> 00:50:02,340 I què si vostè té això? Sap vostè quin s'obté? 686 00:50:02,340 --> 00:50:04,520 En els meus proves em van donar la variable de shell, 687 00:50:04,520 --> 00:50:07,240 però això no està documentat i no es pot confiar en això. 688 00:50:07,240 --> 00:50:10,270 Així que em pregunto, és la creació de les variables de shell i el medi ambient 689 00:50:10,270 --> 00:50:13,490 amb els mateixos noms una bona idea? No D'acord. 690 00:50:13,490 --> 00:50:17,460 Quins són els principals excepcions en què les variables de l'entorn i shell 691 00:50:17,460 --> 00:50:19,860 estan vinculats l'un a l'altre? 692 00:50:19,860 --> 00:50:27,470 Hi ha aquests 4. 693 00:50:32,030 --> 00:50:35,510 Variable d'entorn TERM Majúscula, 694 00:50:35,510 --> 00:50:41,540 shell terme variable en lletres petites, tipus d'emulació de terminal. 695 00:50:41,540 --> 00:50:47,430 Jo només vaig a anar d'aquí i jo faré ressò, una ordre útil en aquest cas, 696 00:50:47,430 --> 00:50:52,560 $ $ TERM termini. I aquí. 697 00:50:52,560 --> 00:51:00,570 xterm és un tipus de terminal per a les finestres que apareixen en el sistema X Window. 698 00:51:00,570 --> 00:51:04,330 xterm-color és una variació del que permet que diferents colors. 699 00:51:04,330 --> 00:51:06,580 Per què ens definim aquests? Què és això bo? 700 00:51:06,580 --> 00:51:09,740 Les comandes que reorganitzen la pantalla com l'editor 701 00:51:09,740 --> 00:51:13,680 enviar seqüències particulars, trucades seqüències d'escapament, 702 00:51:13,680 --> 00:51:18,160 a un terminal o una finestra per reorganitzar i així successivament. 703 00:51:18,160 --> 00:51:20,990 Aquestes seqüències són diferents per a diferents tipus de terminals. 704 00:51:20,990 --> 00:51:23,100 Això li diu a ella que els utilitzin. 705 00:51:23,100 --> 00:51:25,900 De vegades hi ha problemes allà. 706 00:51:25,900 --> 00:51:28,600 És possible que vulgueu canviar això. 707 00:51:28,600 --> 00:51:30,780 Si les coses no funcionen, de vegades el tipus de terminal es configura malament, 708 00:51:30,780 --> 00:51:36,440 vostè pot ser capaç d'arreglar per redefinir el terme variable. 709 00:51:36,440 --> 00:51:43,420 En aquests casos, el canvi d'una variable, la variable d'entorn o la variable de shell, 710 00:51:43,420 --> 00:51:45,970 ha de canviar l'altre. 711 00:51:45,970 --> 00:51:50,970 He descobert a través de l'experiència que el canvi TERM en majúscules 712 00:51:50,970 --> 00:51:54,060 no sempre canviar variable de shell terme en minúscules. 713 00:51:54,060 --> 00:51:55,550 Això és un error. 714 00:51:55,550 --> 00:51:59,400 No sé si això és sempre veritat. La majoria de les vegades no és veritat, però que pot ser. 715 00:51:59,400 --> 00:52:02,490 Així que si vostè fa un canvi, simplement comprovar que fos. 716 00:52:02,490 --> 00:52:05,830 No és freqüent que es necessita canviar aquest valor, però de tant en tant ho fa. 717 00:52:05,830 --> 00:52:08,260 Variable d'entorn USER. 718 00:52:08,260 --> 00:52:12,070 Un cop més, la variable d'entorn en majúscules, shell variable en minúscules. 719 00:52:12,070 --> 00:52:13,710 Aquest és el seu nom d'usuari. 720 00:52:13,710 --> 00:52:16,730 És només en circumstàncies molt excepcionals 721 00:52:16,730 --> 00:52:18,420 que t'agradaria canviar això. 722 00:52:18,420 --> 00:52:22,350 Si el seu nom d'usuari és una altra persona, que pot llençar tot tipus de coses. 723 00:52:22,350 --> 00:52:26,040 Directori d'inici, el directori home de l'usuari. 724 00:52:26,040 --> 00:52:28,060 Una vegada més, no vol canviar això. 725 00:52:28,060 --> 00:52:32,260 Fixeu-vos en tots aquests casos i la que estem a punt de cobrir, la variable de ruta, 726 00:52:32,260 --> 00:52:37,070 variable d'entorn és en majúscules i la variable de shell unit és en minúscules. 727 00:52:37,070 --> 00:52:39,240 Si canvia un, vostè ha de canviar a l'altra. 728 00:52:39,240 --> 00:52:45,960 Aquest tipus d'unió no es pot establir com no es pot obligar a 2 variables, 729 00:52:45,960 --> 00:52:50,570 a part d'aquests 4, i la unió d'aquestes variables no es pot desfer, 730 00:52:50,570 --> 00:52:52,090 no es pot separar. 731 00:52:52,090 --> 00:52:55,820 Així que aquests 4 parells de variables estan obligats. 732 00:52:55,820 --> 00:52:59,020 Ells sempre seran. Cap altres seran. 733 00:52:59,020 --> 00:53:05,720 A més, seria possible crear variables amb els mateixos noms 734 00:53:05,720 --> 00:53:07,780 dels tipus oposats. 735 00:53:07,780 --> 00:53:11,600 Vostè podria fer un terme variable de shell en minúscules 736 00:53:11,600 --> 00:53:14,990 o una variable d'entorn TERM en majúscules. 737 00:53:14,990 --> 00:53:19,040 Aquelles variables serien independents d'aquestes variables aparellades 738 00:53:19,040 --> 00:53:20,780 i que serien independents l'un de l'altre. 739 00:53:20,780 --> 00:53:23,780 No puc imaginar per què faria això a menys que vulgui confondre la gent. 740 00:53:24,600 --> 00:53:29,730 Aquest d'aquí, variable de la ruta, aquesta és una molt important. 741 00:53:29,730 --> 00:53:35,550 Una altra cosa és que no pot haver-hi casos 742 00:53:35,550 --> 00:53:40,430 de variables amb noms aparellades similars que no estan vinculats entre si. 743 00:53:40,430 --> 00:53:45,000 No hi pot haver variables, Shell i Shell, en majúscules i minúscules. 744 00:53:45,000 --> 00:53:48,300 Sobre la base d'aquest nom, que no saps si aquesta variable és una variable de shell 745 00:53:48,300 --> 00:53:51,580 o una variable d'entorn, i estan no lligats entre si. 746 00:53:51,580 --> 00:53:55,300 Així que aquest tipus de parells de noms no implica variables lligades. 747 00:53:55,300 --> 00:53:58,830 La variable de la ruta, que estava mostrant abans, 748 00:53:58,830 --> 00:54:01,880 és una llista dels noms de les rutes en què el shell busca els comandaments. 749 00:54:01,880 --> 00:54:12,320 Anem a aquesta finestra aquí i farem tot el echo $ PATH, majúscules - 750 00:54:12,320 --> 00:54:20,230 variable d'entorn - echo $ PATH, minúscules - shell variable. 751 00:54:20,230 --> 00:54:24,980 Observeu que la llista de directoris és el mateix. Aquests estan obligats. 752 00:54:24,980 --> 00:54:26,590 Canvia un, canvia l'altre. 753 00:54:26,590 --> 00:54:32,970 A la variable d'entorn els elements estan separats per dos punts. Tingueu en compte que. 754 00:54:32,970 --> 00:54:35,130 Les variables de shell estan separats per espais. 755 00:54:35,130 --> 00:54:38,760 Aquesta variable d'entorn és una sola cadena. 756 00:54:38,760 --> 00:54:41,480 La variable de shell és una matriu. 757 00:54:41,480 --> 00:54:43,490 El shell Bourne no tenia arrays. 758 00:54:43,490 --> 00:54:46,600 Bash fa, però això ja és una part fixa de la closca. 759 00:54:46,600 --> 00:54:48,660 Es tracta d'una sola cadena i no una matriu. 760 00:54:48,660 --> 00:54:50,420 El C-shell sempre va tenir arrays. 761 00:54:50,420 --> 00:54:52,630 Les matrius són molt més fàcils de treballar. 762 00:54:52,630 --> 00:54:54,400 Pot fer referència a parts d'ella. 763 00:54:54,400 --> 00:55:02,350 $ Ruta Llavors trobo [1] i em surt / usr / bin, el primer element. 764 00:55:02,350 --> 00:55:09,950 Un cop més, recordi signe de dòlar representa l'últim element de la llista de l'historial. 765 00:55:09,950 --> 00:55:16,850 Què passa aquí? Es va tractar de trobar el signe de dòlar com un símbol de la variable. 766 00:55:16,850 --> 00:55:20,850 M'escapo ella. Ho sentim. No caldria que sigui. 767 00:55:20,850 --> 00:55:23,690 Algunes d'aquestes coses no funcionen tan bé. 768 00:55:23,690 --> 00:55:28,140 Potser només haurem de deixar això a terme. 769 00:55:28,140 --> 00:55:36,980 L'asterisc es refereix a tota la cosa, però això és el que s'obté si no s'especifica un element. 770 00:55:36,980 --> 00:55:46,170 Una altra forma en què les variables de matriu es poden manipular, 771 00:55:46,170 --> 00:55:49,500 nombre d'elements allà, 7 elements. 772 00:55:49,500 --> 00:55:53,410 Aquí posem el signe de nombre abans del nom de variable. 773 00:55:53,410 --> 00:55:58,280 Hi ha un altre. Poseu un signe d'interrogació allà. 774 00:55:58,280 --> 00:56:03,170 Aquest és un valor lògic. Això indica que la variable existeix. 775 00:56:03,170 --> 00:56:05,160 És una altra forma de treballar amb variables. 776 00:56:05,160 --> 00:56:06,660 Que, per cert, no ha de ser una variable de matriu. 777 00:56:06,660 --> 00:56:08,210 Això podria ser qualsevol variable. 778 00:56:08,210 --> 00:56:11,840 I si ho faig, no hi ha tal variable i em sento un 0. 779 00:56:11,840 --> 00:56:14,990 Una altra petita cosa que hi ha sobre les avaluacions de variables. 780 00:56:23,670 --> 00:56:32,950 Tornar a aquest d'aquí, si per alguna raó vostè volia treballar amb aquest 781 00:56:32,950 --> 00:56:37,990 en lloc de treballar amb la matriu, la variable de shell, 782 00:56:37,990 --> 00:56:41,470 hi ha comandes que poden separar aquestes coses sobre la base dels dos punts. 783 00:56:41,470 --> 00:56:44,080 De fet, si vostè va a estar fent això en l'intèrpret d'ordres, possiblement, 784 00:56:44,080 --> 00:56:47,110 una mena de guió, que seria probablement la manera com ho faria. 785 00:56:47,110 --> 00:56:50,350 Però en el C-shell és molt més fàcil d'usar de la reparació. 786 00:56:50,350 --> 00:56:58,250 En el shell Bourne, variables que són assignades per una sola expressió d'aquest tipus, 787 00:56:58,250 --> 00:57:01,760 com la forma en què vostè pot assignar una variable en un llenguatge de programació, 788 00:57:01,760 --> 00:57:05,110 i aquí no hi ha espais. 789 00:57:05,110 --> 00:57:09,110 Cal que sigui sols 1 cadena. 790 00:57:09,110 --> 00:57:14,980 En les petxines de tipus Bourne, totes les variables són variables de shell. 791 00:57:14,980 --> 00:57:19,250 Les variables d'entorn són un subconjunt de les variables de shell. 792 00:57:19,250 --> 00:57:24,060 Es distingeixen de les variables no ambientals mitjançant l'exportació. 793 00:57:24,060 --> 00:57:28,860 La comanda per fer-ho és l'exportació, com IMPRESSORA exportació. 794 00:57:28,860 --> 00:57:34,930 Si haguéssim de definir una variable d'aquest tipus, 795 00:57:34,930 --> 00:57:38,480 si volíem una ordre d'impressió per trobar-lo, hauria de ser una variable d'entorn, 796 00:57:38,480 --> 00:57:40,730 i així és com ho fem un. 797 00:57:40,730 --> 00:57:42,090 Aquí hi ha alguna cosa una mica confús. 798 00:57:42,090 --> 00:57:50,430 Aquesta expressió, la seva exportació al medi ambient, es deriva d'aquest concepte shell Bourne, 799 00:57:50,430 --> 00:57:54,520 i no obstant això, aquesta expressió s'utilitza en la descripció de la C-shell, 800 00:57:54,520 --> 00:57:57,920 on no hi ha tal ordre com d'exportació. 801 00:57:57,920 --> 00:58:06,200 Si vostè acaba de dir exportació per si mateix, s'obté una llista dels exportats - 802 00:58:06,200 --> 00:58:10,620 Així que si jo simplement exporto aquí, no hi ha tal cosa. 803 00:58:13,620 --> 00:58:15,200 Bé, aquí anem. 804 00:58:15,200 --> 00:58:17,010 Aquestes coses, per cert, també es defineixen pel shell. 805 00:58:17,010 --> 00:58:19,400 No em defineixo qualsevol d'aquests per mi mateix. 806 00:58:19,400 --> 00:58:23,550 La conquilla fa tot tipus de coses per si mateix. 807 00:58:23,550 --> 00:58:26,650 S'ha de fer les coses de forma automàtica. 808 00:58:30,240 --> 00:58:36,880 En Bash o Korn, es pot executar una ordre com el següent, 809 00:58:36,880 --> 00:58:42,000 que tots dos donen una variable un valor i exportar en 1 comandament. 810 00:58:42,000 --> 00:58:46,150 Al shell de Bourne han de ser ordres separats com exportació a. 811 00:58:46,150 --> 00:58:48,410 Hi ha un altre aspecte que és confús. 812 00:58:48,410 --> 00:58:52,220 La comanda set en el C-shell defineix variables 813 00:58:52,220 --> 00:58:55,550 i sense arguments et diu quins són els valors de les variables són. 814 00:58:55,550 --> 00:59:01,140 En l'intèrpret d'ordres, la comanda set sense arguments fa el mateix, 815 00:59:01,140 --> 00:59:03,580 però amb arguments que fa una cosa molt diferent. 816 00:59:03,580 --> 00:59:06,200 Així que aquests són els diversos arguments aquí. 817 00:59:06,200 --> 00:59:10,460 Alguns d'aquests són les variables d'entorn, algunes d'elles són les variables de shell. 818 00:59:10,460 --> 00:59:13,200 Totes elles són variables de shell realment. Algunes d'aquestes són les variables d'entorn. 819 00:59:15,690 --> 00:59:23,920 La comanda set amb arguments pot ser usat per operar 820 00:59:23,920 --> 00:59:28,220 sobre els paràmetres de posició a un guió, 821 00:59:28,220 --> 00:59:33,910 que és una forma d'accedir-hi d'una sola vegada. 822 00:59:33,910 --> 00:59:36,150 En realitat no podem entrar en això avui. 823 00:59:36,150 --> 00:59:39,580 També es pot utilitzar per canviar el comportament de la closca. 824 00:59:39,580 --> 00:59:46,700 Particularment en Bash hi ha variables que determinaran el comportament del shell. 825 00:59:46,700 --> 00:59:51,310 Llavors també només aquesta comanda que vostè pot veure, aquesta comanda. 826 00:59:51,310 --> 00:59:59,050 Typeset seguit de variables i tipus de variables s'usa en els shells Korn i Bash. 827 00:59:59,050 --> 01:00:04,970 No és obligatori, però pot ser utilitzat per restringir els valors de les variables, 828 01:00:04,970 --> 01:00:08,400 que pot ser útil per evitar errors, i és bastant comú. 829 01:00:08,400 --> 01:00:11,640 Així que només estic esmentant que en cas que vegi en algun lloc. 830 01:00:17,290 --> 01:00:19,160 La comanda on. 831 01:00:19,160 --> 01:00:22,490 Recordes que he esmentat abans, el lloc on el manament al C-shell, 832 01:00:22,490 --> 01:00:28,750 que li pot indicar la ubicació d'una ruta d'accés d'ordres. 833 01:00:28,750 --> 01:00:32,580 Aquí està la substitució de comandes. 834 01:00:32,580 --> 01:00:41,900 Vostè ha de trobar en el seu teclat en algun lloc d'un personatge que s'assembla a això. 835 01:00:41,900 --> 01:00:44,910 La ubicació en el teclat variarà. 836 01:00:44,910 --> 01:00:47,050 L'hem anomenat backquote. És aproximadament de la mida d'una cotització. 837 01:00:47,050 --> 01:00:48,720 Va des de la part superior esquerra a la inferior dreta. 838 01:00:48,720 --> 01:00:52,690 Aquí a la meva teclat Mac està a la cantonada superior esquerra. 839 01:00:52,690 --> 01:00:58,150 Aquest caràcter es pot utilitzar per executar una ordre en una ordre. 840 01:00:58,150 --> 01:01:03,400 Si vostè té una expressió dins cometes inverses, 841 01:01:03,400 --> 01:01:07,080 aquesta expressió és una ordre, s'executa. 842 01:01:07,080 --> 01:01:09,010 La sortida d'aquest ordre 843 01:01:09,010 --> 01:01:11,980 és substituït després per tota l'expressió backquote 844 01:01:11,980 --> 01:01:16,110 dins d'un comando ja que llavors s'executa amb que la producció 845 01:01:16,110 --> 01:01:22,010 com a part de la seva sèrie d'arguments i així successivament. 846 01:01:22,010 --> 01:01:28,640 Aquest és una ordre que utilitza això. 847 01:01:28,640 --> 01:01:32,340 Demostrem l'operació aquí. 848 01:01:44,980 --> 01:01:49,090 Pugem aquí, treure les cometes inverses. 849 01:01:49,090 --> 01:01:54,410 Control d'A m'arriba al principi de la línia amb la sintaxi d'edició d'Emacs. 850 01:01:54,410 --> 01:02:00,380 Fins ara, la rutes d'accés és el que d'on ve, 851 01:02:00,380 --> 01:02:05,040 però quan ho faig d'aquesta manera, llavors es connecta a aquesta llista de noms de ruta 852 01:02:05,040 --> 01:02:08,750 en lloc de tota aquesta expressió backquote i s'executa ls-l en ells. 853 01:02:08,750 --> 01:02:11,120 Una cosa còmode, no? 854 01:02:11,120 --> 01:02:14,860 Així que això és una cosa ordenada. Així és com funcionen cometes inverses. 855 01:02:14,860 --> 01:02:17,560 Ara anirem una mica més lluny. 856 01:02:17,560 --> 01:02:22,050 Aquests són els àlies. En realitat jo ús aquests. 857 01:02:22,050 --> 01:02:26,410 Vaig a tractar d'aconseguir-ho amb 1 operació d'edició. 858 01:02:34,900 --> 01:02:36,900 Okay. 859 01:02:36,900 --> 01:02:39,630 Ara anem a veure com aquestes definicions van sortir. 860 01:02:39,630 --> 01:02:44,930 àlies LWH dir-me com es defineix. 861 01:02:44,930 --> 01:02:51,210 Observi que és només això, però les cotitzacions externes s'han tret 862 01:02:51,210 --> 01:02:53,750 i el signe d'exclamació se l'emporten fora. 863 01:02:53,750 --> 01:02:58,940 ! *, La llista completa de tots els arguments. 864 01:02:58,940 --> 01:03:03,580 En una definició d'àlies que s'aplicarà de nou a on jo faig servir això. 865 01:03:03,580 --> 01:03:10,620 LWH festa ksh. Okay. 866 01:03:10,620 --> 01:03:13,960 Veus com funciona? Em estalvia una mica de tecleig. 867 01:03:13,960 --> 01:03:16,440 Pugem una mica sol per esmentar alguna cosa més aquí. 868 01:03:19,150 --> 01:03:23,120 Noteu aquí aquests projectils diferents. Hauria haver-ho dit abans. 869 01:03:23,120 --> 01:03:36,060 El csh té un 2 per aquí i també ho fa / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Podríem establir per mitjans que no són en realitat el mateix arxiu. 871 01:03:39,870 --> 01:03:43,150 Recorda que jo estava dient si escriu SH s'obté bash. 872 01:03:43,150 --> 01:03:47,390 Introduïu això i vostè té això. 873 01:03:47,390 --> 01:03:51,730 Però els que no estan vinculats. Aquells tenen els sols allà. 874 01:03:51,730 --> 01:03:54,910 I aquest no és el tipus d'arxiu que es digui a un altre. 875 01:03:54,910 --> 01:03:59,460 Així que aquests són arxius separats, les C-shell són el mateix arxiu. 876 01:03:59,460 --> 01:04:03,640 Tornar aquí baix, l'altre aquí, aquest àlies, 877 01:04:03,640 --> 01:04:09,090 tingui en compte que s'està executant aquesta comanda, arxiu. 878 01:04:09,090 --> 01:04:13,810 Això àlies funciona això. Arxiu indica el tipus d'un fitxer. 879 01:04:13,810 --> 01:04:20,330 Festa ksh Així FWH. Okay. 880 01:04:20,330 --> 01:04:23,230 Aquest és el resultat de la comanda file. 881 01:04:23,230 --> 01:04:24,630 No sé si vostè sap el que això significa aquí, 882 01:04:24,630 --> 01:04:26,750 Mach-O binari universal, amb 2 arquitectures. 883 01:04:26,750 --> 01:04:30,470 Hi ha 2 possibles tipus de processadors a Mac, 884 01:04:30,470 --> 01:04:34,780 i alguns programes van ser escrits per ser capaç d'executar amb tots dos, 885 01:04:34,780 --> 01:04:37,950 i la comanda file pot determinar que, pel que això és el que això significa. 886 01:04:37,950 --> 01:04:40,660 Tots dos arxius van ser escrits d'aquesta manera. 887 01:04:40,660 --> 01:04:43,760 Així veiem com funciona l'àlies, veiem com funciona el backquote, 888 01:04:43,760 --> 01:04:48,640 veiem com funciona el ls real dels arxius o d'arxius. 889 01:04:52,050 --> 01:04:57,000 Això podria no funcionar. Try "on on" i "LWH on". Bé, intentarem això. 890 01:04:57,000 --> 01:05:01,040 on on. 891 01:05:01,040 --> 01:05:03,500 on és una closca integrada. 892 01:05:03,500 --> 01:05:06,970 Recordeu que ja va demostrar que Bash no tenia on. 893 01:05:06,970 --> 01:05:10,080 Si escriu en quina part de l'intèrpret d'ordres, apareix un missatge d'error. 894 01:05:10,080 --> 01:05:12,540 És només una part de la coberta en lloc de ser una ordre independent. 895 01:05:12,540 --> 01:05:20,000 Què passa si escric LWH buscant on? Mireu el que passa allà. 896 01:05:20,000 --> 01:05:22,850 Ran on on, aconseguit aquest resultat, i després va tractar d'executar ls 897 01:05:22,850 --> 01:05:25,600 com l en on és una closca integrada. 898 01:05:25,600 --> 01:05:28,790 on hi és, però no existeixen els altres. 899 01:05:28,790 --> 01:05:32,090 Cap d'ells existeix, en realitat. 900 01:05:32,090 --> 01:05:35,560 Així que no sempre funciona, i també il · lustra com algunes coses 901 01:05:35,560 --> 01:05:39,580 no fas exactament el que vostè podria haver pensat. 902 01:05:40,930 --> 01:05:43,010 Baixem una mica més aquí. 903 01:05:44,890 --> 01:05:54,760 Això aquí és en Bash. Aquesta és també la substitució d'ordres com la cometa inversa. 904 01:05:54,760 --> 01:06:05,280 Però a diferència d'backquote, utilitza aquest estil variable. 905 01:06:05,280 --> 01:06:09,860 Hi ha una sèrie d'expressions que comencen amb un signe de dòlar, 906 01:06:09,860 --> 01:06:16,070 i si bé aquests no són variables, van prendre prestat l'ús del signe de dòlar 907 01:06:16,070 --> 01:06:19,570 per indicar una expressió d'algun tipus. 908 01:06:19,570 --> 01:06:23,550 Això pot estar envoltat de parèntesi o claudàtors o parèntesis dobles, 909 01:06:23,550 --> 01:06:26,320 que té un propòsit diferent. 910 01:06:26,320 --> 01:06:29,500 Parèntesi Solter aquí són una substitució d'ordres igual que els accents greus. 911 01:06:29,500 --> 01:06:32,720 Parèntesi dobles és en realitat una operació aritmètica. 912 01:06:32,720 --> 01:06:35,380 Hi ha altres sintaxi, altres operacions. 913 01:06:35,380 --> 01:06:41,520 Sintaxi backquote està disponible en Bash. 914 01:06:41,520 --> 01:06:46,780 No obstant això, aquest és preferible. És molt més fàcil de llegir i que permet la implantació. 915 01:06:46,780 --> 01:06:51,300 Vostè pot tenir dins de $ (comanda) un altre ordre, 916 01:06:51,300 --> 01:06:54,590 una mena - 917 01:07:14,560 --> 01:07:18,210 Puc obtenir una llista allà. 918 01:07:18,210 --> 01:07:21,670 Això funcionaria si tingués la cometa inversa també. 919 01:07:32,050 --> 01:07:38,470 I si vull fer alguna cosa així - 920 01:08:03,390 --> 01:08:06,430 Vostè probablement no realment utilitzar aquesta comanda, 921 01:08:06,430 --> 01:08:14,160 però aquesta substitució d'ordre intern es fa ressò dels noms de tots els arxius que comencen amb a, 922 01:08:14,160 --> 01:08:18,229 llavors aquest s'executa ls-l en aquests arxius, 923 01:08:18,229 --> 01:08:20,500 i llavors aquest només es fa ressò de la sortida. 924 01:08:21,729 --> 01:08:24,479 Vostè probablement no faria això, només faries el ressò o ls, 925 01:08:24,479 --> 01:08:29,450 però això il · lustra el funcionament de la implantació d'ordres. 926 01:08:29,450 --> 01:08:34,380 Així que una altra de les característiques aquí. 927 01:08:34,380 --> 01:08:37,450  He esmentat això abans, que quan es té en quin lloc del C-shell, 928 01:08:37,450 --> 01:08:42,770 escriure obres en les petxines de tipus Bourne per a la localització de les ordres. 929 01:08:48,939 --> 01:08:52,270 Ordres incorporats, just el que estava dient que no. 930 01:08:52,270 --> 01:08:54,640 Les comandes són part de la closca, com on. 931 01:08:54,640 --> 01:08:59,880 Quan el shell executa una ordre com ls, es localitza a través de la ruta, 932 01:08:59,880 --> 01:09:03,029 el troba en algun directori en algun lloc, 933 01:09:03,029 --> 01:09:05,800 diu que en la memòria, es crea un nou shell, 934 01:09:05,800 --> 01:09:08,960 llegeix la comanda ls o el que sigui a la closca 935 01:09:08,960 --> 01:09:11,450 on ja se situen les variables d'entorn, 936 01:09:11,450 --> 01:09:14,000 i després es transfereix l'execució a la mateixa. 937 01:09:14,000 --> 01:09:18,319 Incorporat en el comandament, el codi per aquest comando és l'interior de la closca, 938 01:09:18,319 --> 01:09:21,460 de manera que el shell només comença a executar part del seu propi codi. 939 01:09:21,460 --> 01:09:24,569 on és una ordre. En realitat es fa més ràpid. 940 01:09:24,569 --> 01:09:28,380 No ha de llegir res en la memòria, sinó que ja és a la memòria. 941 01:09:28,380 --> 01:09:32,460 Ordres integrats sempre tenen prioritat sobre les ordres amb el mateix nom. 942 01:09:32,460 --> 01:09:36,050 Les comandes que es troben en els directoris en la ruta d'accés poden tenir el mateix nom, 943 01:09:36,050 --> 01:09:39,090 comandaments en diferents directoris, arxius en directoris diferents. 944 01:09:39,090 --> 01:09:41,740 La que es produeix abans en el camí és el que s'obté. 945 01:09:41,740 --> 01:09:43,770 Si hi ha una ordre integrat, que sempre ho aconsegueix. 946 01:09:43,770 --> 01:09:47,890 No hi ha manera de donar-li una prioritat més baixa que un comando en el camí. 947 01:09:47,890 --> 01:09:54,140 Si vol aconseguir que la comanda path, pot escriure el nom de ruta complet. 948 01:09:54,140 --> 01:09:55,850 Si hi havia una ordre on a la ruta d'accés en algun lloc, 949 01:09:55,850 --> 01:09:58,440 podria escriure / bin / on i que ho entendries. 950 01:09:58,440 --> 01:10:01,800 Si no voleu escriure tota la ruta, es podria definir un àlies. 951 01:10:01,800 --> 01:10:06,310 De fet, si vostè li va donar l'àlies el mateix nom que la comanda integrat, que funcionaria 952 01:10:06,310 --> 01:10:08,790 perquè s'avalua la definició d'àlies 953 01:10:08,790 --> 01:10:13,220 abans que el shell determina que es tracta d'un comando integrat en el qual s'ha d'executar. 954 01:10:18,810 --> 01:10:23,440 Llavors això es torna una mica més complicat amb alguns comandaments aquí. 955 01:10:23,440 --> 01:10:29,880 El cas d'alguns comandaments són en realitat construïda en els comandaments i en el camí. 956 01:10:29,880 --> 01:10:34,140 Un d'ells és l'eco, la comanda que acaba d'utilitzar fa una estona en aquests exemples. 957 01:10:34,140 --> 01:10:37,410 Echo és una ordre a la ruta i que es troba en tots els dipòsits. 958 01:10:37,410 --> 01:10:40,580 No necessàriament tots es comporten de la mateixa manera. 959 01:10:40,580 --> 01:10:42,970 En el seu origen va ser una ordre només en el camí. 960 01:10:42,970 --> 01:10:45,280 Va ser construït en les petxines més tard. 961 01:10:45,280 --> 01:10:48,080 Com que hi ha opcions que depenen del medi ambient 962 01:10:48,080 --> 01:10:52,970 i les opcions de línia d'ordres, les ordres integrats 963 01:10:52,970 --> 01:10:57,030 van ser escrits per a funcionar el mateix que el comandament que havia estat en el camí, 964 01:10:57,030 --> 01:10:59,670 és poc probable que haguessin estat escrites d'aquesta manera 965 01:10:59,670 --> 01:11:01,720 si la comanda ja no havia estat escrit pel camí. 966 01:11:01,720 --> 01:11:06,180 Així que això té efectes secundaris. La seva història té efectes aquí. 967 01:11:06,180 --> 01:11:08,380 Hi ha opcions que hi ha. 968 01:11:14,280 --> 01:11:23,060 També hi ha una opció definida per una variable en el tcsh anomenat echo_style. 969 01:11:23,060 --> 01:11:27,700 Aquesta és una de les variables que poden canviar la forma en què es fan ressò les obres. 970 01:11:27,700 --> 01:11:30,910 Hi ha altres casos en què pot assignar una variable 971 01:11:30,910 --> 01:11:36,290 que canvia la forma en què l'operació de la closca, com una ordre integrat, funciona. 972 01:11:36,290 --> 01:11:38,130 No afectaria qualsevol altra cosa 973 01:11:38,130 --> 01:11:40,640 ja que altres ordres no tenen accés a les variables de shell, 974 01:11:40,640 --> 01:11:42,090 només les variables d'entorn. 975 01:11:42,090 --> 01:11:45,360 Però les operacions de shell poden llegir les variables de shell. 976 01:11:45,360 --> 01:11:50,710 Això no funcionarà per csh. Això és només tcsh. Aquesta és una de les millores. 977 01:11:58,540 --> 01:12:04,620 Parsing té seqüències quan s'avalua metacaracteres, 978 01:12:04,620 --> 01:12:08,140 quan s'avalua les variables, àlies, referències d'història. 979 01:12:08,140 --> 01:12:11,830 Hi ha una seqüència particular per a aquestes coses. 980 01:12:11,830 --> 01:12:13,730 Si fa les coses d'una seqüència particular 981 01:12:13,730 --> 01:12:16,080 i arriba a alguna cosa que és una expressió d'una espècie 982 01:12:16,080 --> 01:12:20,650 que ja ha estat avaluat, no va a avaluar de nou. 983 01:12:20,650 --> 01:12:24,520 Si ho aconsegueix, llavors, només es passarà en els personatges. 984 01:12:24,520 --> 01:12:29,920 Així que si l'avaluació d'algunes expressions com la substitució de comandes 985 01:12:29,920 --> 01:12:36,850 o variable o el que sigui dóna lloc a una expressió 986 01:12:36,850 --> 01:12:39,240 que li agradaria que per ser avaluats, 987 01:12:39,240 --> 01:12:42,510 que funcionarà només si aquesta avaluació es produeix al final de la seqüència. 988 01:12:42,510 --> 01:12:45,010 Espero que estic sent clar que no. 989 01:12:45,010 --> 01:12:50,460 Aquesta seqüència d'anàlisi, una operació al C-shell, 990 01:12:50,460 --> 01:12:56,490 no és el mateix per les ordres integrats com ho és per als comandaments dels no integrats. 991 01:12:56,490 --> 01:12:58,890 No estic segur sobre Bash allà. 992 01:12:58,890 --> 01:13:02,450 Per exemple, si una variable Shell va produir una referència història, 993 01:13:02,450 --> 01:13:04,230 probablement no tornaria a la història. 994 01:13:04,230 --> 01:13:06,010 Seria acaba d'obtenir el signe d'exclamació. 995 01:13:06,010 --> 01:13:08,840 De fet, només podem provar això ara mateix. 996 01:13:09,720 --> 01:13:18,240 establir a = i haurem de posar això aquí. 997 01:13:30,690 --> 01:13:34,580 Oh, espera. Ho sento. Ho vaig fer en el Bash. Jo volia fer-ho aquí. 998 01:13:53,470 --> 01:13:56,080 Veure, pel que no va avaluar que la referència la història 999 01:13:56,080 --> 01:14:00,520 perquè ja era passat el punt d'avaluació d'expressions d'història 1000 01:14:00,520 --> 01:14:02,720 quan es va avaluar la variable. 1001 01:14:02,720 --> 01:14:05,550 Així que això és 1 efecte d'anàlisi. 1002 01:14:05,550 --> 01:14:08,760 I de nou, comandaments integrats no es fan de la mateixa manera. 1003 01:14:08,760 --> 01:14:11,230 Està bé. Anem a anar a la següent aquí. 1004 01:14:11,230 --> 01:14:16,060 Aquest pretén ser 1 línia, però està fent més fàcil la lectura. 1005 01:14:19,130 --> 01:14:21,530 Què vol fer? 1006 01:14:21,530 --> 01:14:28,640 Vostè pot recordar que puguem avaluar asteriscs com comodins de nom d'arxiu, 1007 01:14:28,640 --> 01:14:33,890 i hi ha altres determinats comodins, com el signe d'interrogació i expressions amb claudàtors. 1008 01:14:33,890 --> 01:14:39,000 Aquest tipus d'avaluació es denomina globbing. 1009 01:14:39,000 --> 01:14:46,290 establir noglob a principis d'aquesta comanda diu no facis això. 1010 01:14:46,290 --> 01:14:53,370 noglob unset diu tornar a fer això. 1011 01:14:53,370 --> 01:14:56,440 Tingueu en compte que conjunt globus no tindria aquest efecte. 1012 01:14:56,440 --> 01:15:00,800 En el llenguatge ordinari, globus establir o noglob unset semblen ser equivalents, 1013 01:15:00,800 --> 01:15:03,290 però aquí no ho és. És noglob desarmat. 1014 01:15:05,120 --> 01:15:07,910 Ara tset. tset va parar per al grup terminal. 1015 01:15:07,910 --> 01:15:11,840 No s'usa sovint que ara, però abans de disposar de sistemes de finestres 1016 01:15:11,840 --> 01:15:15,760 i que tenia una sola terminal, potser hagi de determinar el tipus. 1017 01:15:15,760 --> 01:15:18,700 I si alguna cosa havia de venir a través d'Ethernet o de la xarxa, 1018 01:15:18,700 --> 01:15:21,120 vostè podria voler dir que és un vt100. 1019 01:15:21,120 --> 01:15:26,630 VT100 és una espècie d'estàndard en el negoci de terminals. Prové de la terminal DEC. 1020 01:15:26,630 --> 01:15:35,270 Si vostè acaba de fer dial-up - adonar que? Això es remunta un llarg camí, eh? 1021 01:15:35,270 --> 01:15:39,520 Així que si simplement no tset aquí, 1022 01:15:39,520 --> 01:15:45,250 si jo només faig tset, ha de restablir la meva terminal, però no va veure res. 1023 01:15:45,250 --> 01:15:47,340 En realitat no canvia res. 1024 01:15:47,340 --> 01:15:48,620 -S 1025 01:15:49,900 --> 01:15:51,480 Okay. 1026 01:15:51,480 --> 01:15:53,350 setenv TERM xterm-color. 1027 01:15:53,350 --> 01:15:57,080 Ja sabem que el terme es va establir d'aquesta manera, així que això no canviava. 1028 01:15:57,080 --> 01:15:58,860 Aquesta és la manera que ens agradaria fer-ho. 1029 01:15:58,860 --> 01:16:07,080 Però noti que aquesta comanda, tset-s, la sortida només aquestes comandes. No executar-los. 1030 01:16:07,080 --> 01:16:09,770 No executar aquestes comandes, sinó que la sortida d'ells. 1031 01:16:09,770 --> 01:16:13,650 Així que aquesta és la intenció de produir comandaments que després s'executen. 1032 01:16:13,650 --> 01:16:16,360 Te'n recordes de l'ordre en aquest arxiu que acabo mostrar que tenia una Q al mateix. 1033 01:16:16,360 --> 01:16:18,910 Així que anem a fer això. 1034 01:16:18,910 --> 01:16:23,750 El Q suprimeix alguna sortida, però això no passa allí, com es pot veure. 1035 01:16:23,750 --> 01:16:27,980 Jo només vaig a fer això per mostrar que no tenia importància. 1036 01:16:27,980 --> 01:16:31,870 Això està en la sintaxi backquote. 1037 01:16:31,870 --> 01:16:35,340 Tingueu en compte el backquote aquí, backquote aquí. 1038 01:16:35,340 --> 01:16:37,680 Estic ometent aquestes coses aquí. 1039 01:16:37,680 --> 01:16:39,570 Aquests són els casos de dir-li què fer 1040 01:16:39,570 --> 01:16:42,050 en el cas de determinats tipus de terminals - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, xarxa telefònica, el que vostè té. 1042 01:16:45,400 --> 01:16:48,050 No importa aquí perquè no estem fent en realitat cap d'aquestes coses. 1043 01:16:48,050 --> 01:16:49,720 Només estic il · lustrant la comanda. 1044 01:16:49,720 --> 01:16:55,170 Si faig això amb la cometa inversa, què vaig a rebre? 1045 01:16:55,170 --> 01:17:00,210 Tingueu també aquí que aquesta inclòs el noglob set i el noglob unset, 1046 01:17:00,210 --> 01:17:02,630 Així que aquests són ara redundants en la definició. 1047 01:17:02,630 --> 01:17:05,380 Això no va ser sempre així, però ara estan incloses en aquesta ordre. 1048 01:17:05,380 --> 01:17:08,890 Però anem a veure què passa si faig el que 1049 01:17:08,890 --> 01:17:12,570 i vaig al principi de la línia amb Control A i ho faig. 1050 01:17:14,380 --> 01:17:18,040 Bé, estableixi: Command not found. Això és una mica estrany, no? 1051 01:17:18,040 --> 01:17:20,570 conjunt és una ordre molt conegut. És part de la closca. 1052 01:17:20,570 --> 01:17:24,040 estableix: Command not found? Per què? 1053 01:17:24,040 --> 01:17:26,790 Hmm. Bé, anem a pensar en això. 1054 01:17:26,790 --> 01:17:31,100 S'està executant una substitució d'ordres backquote, 1055 01:17:31,100 --> 01:17:37,430 i que es produeix a una certa part de la seqüència d'analitzar la comanda. 1056 01:17:37,430 --> 01:17:40,360 conjunt és una ordre incorporat. 1057 01:17:40,360 --> 01:17:43,900 Així que per al moment en que fa que la substitució d'ordres, 1058 01:17:43,900 --> 01:17:48,280 que ja ha aconseguit més enllà del punt d'identificació d'ordres integrats. 1059 01:17:48,280 --> 01:17:51,900 Per tant, tracta a establir com si es tractés d'un comando en el camí. 1060 01:17:51,900 --> 01:17:55,440 No cal dir, que no el troba i s'obté un error. 1061 01:17:55,440 --> 01:17:59,300 Bé. Hi ha un exemple de seqüència d'anàlisi. 1062 01:17:59,300 --> 01:18:01,460 I què fem al respecte? 1063 01:18:01,460 --> 01:18:04,800 Observeu aquesta comanda molt interessant aquí, eval. 1064 01:18:04,800 --> 01:18:06,530 Em pregunto el que fa. 1065 01:18:06,530 --> 01:18:08,760 Si ens fixem en el manual - i farem això 1066 01:18:08,760 --> 01:18:12,000 per mostrar el confús aquests manuals són - 1067 01:18:12,000 --> 01:18:19,400 man tcsh, manual confusa, la recerca de les coses que aquí no és fàcil tampoc. 1068 01:18:19,400 --> 01:18:31,850 Aquí anem, eval arg, perquè puguem tenir 1 o més arguments 1069 01:18:31,850 --> 01:18:34,090 i hi ha una llista de coses que hi ha. 1070 01:18:34,090 --> 01:18:37,730 S'usa per tractar els arguments com entrades a l'intèrpret d'ordres 1071 01:18:37,730 --> 01:18:43,600 i executa les ordres resultants en el context de la shell actual. 1072 01:18:43,600 --> 01:18:46,900 Això s'utilitza generalment per executar ordres generats com a resultat de comandament 1073 01:18:46,900 --> 01:18:51,310 o la substitució de variables, perquè l'anàlisi es produeix abans que aquestes substitucions. 1074 01:18:51,310 --> 01:18:52,580 Molt bo. 1075 01:18:52,580 --> 01:18:54,740 I aquí fins i tot es refereixen a l'ordre tset per a un ús de la mostra 1076 01:18:54,740 --> 01:18:57,700 com la que acabo de mostrar. 1077 01:18:57,700 --> 01:19:00,440 Ara he de aconseguir la finestra de nou a un lloc útil. 1078 01:19:03,150 --> 01:19:07,800 Anem per aquí i anem a veure que eval s'utilitza just abans d'això. 1079 01:19:07,800 --> 01:19:14,010 Així que anem a veure què passa si posem - aquí anem amb les fletxes a aquest ordre 1080 01:19:14,010 --> 01:19:20,940 i controlar una al principi, EVAL. 1081 01:19:20,940 --> 01:19:22,850 Bé, pel que funciona. 1082 01:19:22,850 --> 01:19:26,440 En fer eval, que triga el que ve després i ho fa una ordre. 1083 01:19:26,440 --> 01:19:29,460 Això li permet essencialment Parse dues vegades. 1084 01:19:29,460 --> 01:19:33,710 La secció aquí s'executa aquesta comanda dins de les cometes inverses, 1085 01:19:33,710 --> 01:19:36,210 obté la sortida. 1086 01:19:36,210 --> 01:19:42,850 Se suposa que la sortida que s'executin com aquests comandaments aquí com aquests 1087 01:19:42,850 --> 01:19:45,890 en aquest i aquest. 1088 01:19:45,890 --> 01:19:50,100 Així que aquests comandaments estan ara aquí en aquesta seqüència, 1089 01:19:50,100 --> 01:19:58,950 però aquests estan incorporats en els comandaments i no poden obtenir immediatament. 1090 01:19:58,950 --> 01:20:06,440 Així que anem a eval, eval recull que fins, comença tot de nou, i funciona. 1091 01:20:06,440 --> 01:20:18,460 Un exemple tant de backquoting, eval, l'anàlisi, les conseqüències de l'anàlisi sintàctica, 1092 01:20:18,460 --> 01:20:21,910 i una ordre que és probablement de molt poca utilitat per a vostè avui en dia. 1093 01:20:21,910 --> 01:20:25,540 Okay. Molt bé, umask. 1094 01:20:25,540 --> 01:20:32,160 Fem una ullada a aquesta comanda aquí, umask 022. Em pregunto el que fa. 1095 01:20:32,160 --> 01:20:38,420 Anem a escriure umask sense res després d'ella. 22. Okay. 1096 01:20:38,420 --> 01:20:44,350 022 i fer-ho de nou. 1097 01:20:44,350 --> 01:20:48,580 Com ja hauran endevinat, umask sense arguments et diu la màscara actual; 1098 01:20:48,580 --> 01:20:51,760 umask amb arguments fa que sigui això, però aquesta era la que ja tenia. 1099 01:20:51,760 --> 01:20:53,800 Què significa 022? 1100 01:21:01,650 --> 01:21:07,080 Aquests són aquí les proteccions per a un arxiu. 1101 01:21:07,080 --> 01:21:11,440 Ells determinen qui pot llegir o escriure o executar l'arxiu. 1102 01:21:11,440 --> 01:21:16,560 Proteccions també s'anomenen els permisos. 1103 01:21:16,560 --> 01:21:21,390 La r representa de lectura, el w per escriptura, 1104 01:21:21,390 --> 01:21:25,500 i la X, que no està present allà, significa executar. 1105 01:21:25,500 --> 01:21:27,260 Hi ha 3 categories d'allà. 1106 01:21:27,260 --> 01:21:33,540 Els 3 últims elements es troben en la categoria d'usuari. Aquells s'apliquen a mi, l'usuari. 1107 01:21:33,540 --> 01:21:36,870 Aquests 3 aquí s'apliquen al grup. 1108 01:21:36,870 --> 01:21:41,590 L'arxiu pertany al grup 1, l'usuari pot pertànyer a diversos grups, 1109 01:21:41,590 --> 01:21:47,150 però si l'usuari està en el grup al qual pertany l'arxiu, 1110 01:21:47,150 --> 01:21:51,090 a continuació, aquestes proteccions s'apliquen a ell si ell no és l'usuari. 1111 01:21:51,090 --> 01:21:54,230 I aquest és tot el món. 1112 01:21:55,540 --> 01:21:57,690 Aquestes categories són mútuament excloents. 1113 01:21:57,690 --> 01:21:59,750 Les proteccions d'usuari s'apliquen a ell, 1114 01:21:59,750 --> 01:22:03,780 les proteccions de grup s'apliquen als membres del grup que no sigui l'usuari, 1115 01:22:03,780 --> 01:22:08,110 i les altres proteccions només s'apliquen a persones diferents de l'usuari, i els membres del grup. 1116 01:22:08,110 --> 01:22:12,320 Si hi ha una ro aw o x, significa que s'ha concedit la protecció. 1117 01:22:12,320 --> 01:22:13,950 Si hi ha un guió, vol dir que no és. 1118 01:22:13,950 --> 01:22:16,690 De fet, hi ha altres coses que es poden posar aquí a més d'aquests, 1119 01:22:16,690 --> 01:22:18,350 que no vaig a entrar en ara. 1120 01:22:18,350 --> 01:22:24,450 El umask defineix un valor predeterminat per als arxius que vostè cregui. 1121 01:22:24,450 --> 01:22:28,580 I com una màscara, bàsicament, diu que els bits que no s'hagin establert. 1122 01:22:28,580 --> 01:22:30,450 Com s'ha convertit en trossos? 1123 01:22:30,450 --> 01:22:33,240 Si vostè pensa en cada un d'ells com un nombre octal, 1124 01:22:33,240 --> 01:22:42,120 aquest és el bit de 1s, això és els 2s, això és els 4s. 1125 01:22:42,120 --> 01:22:45,840 Així que de 0 a 7 1126 01:22:45,840 --> 01:22:51,770 descrigui quina combinació de r, w de, i les x que té per aquests 3 1127 01:22:51,770 --> 01:22:53,710 i després un nombre similar d'aquests i després per aquests. 1128 01:22:53,710 --> 01:23:12,030 Així que 022 significa 0 per a l'altra, per al grup 2, 2 per a l'usuari. 1129 01:23:12,030 --> 01:23:15,870 Però això és una màscara. La màscara és el que no hi ha. 1130 01:23:19,380 --> 01:23:20,610 Ho sento. M'acabo de donar les coses en l'ordre equivocat. 1131 01:23:20,610 --> 01:23:25,620 És la primera març. Aquests 3 són l'usuari, aquests 3 són el grup, aquests 3 són els altres. 1132 01:23:25,620 --> 01:23:27,970 Ho sento, et vaig donar aquests en l'ordre equivocat. 1133 01:23:27,970 --> 01:23:31,910 El 0, que és el primer d'ells, no es mostra el valor, 1134 01:23:31,910 --> 01:23:35,430 però si un nombre no és aquí, és un 0. 1135 01:23:35,430 --> 01:23:38,370 Això vol dir que tots els 3 d'ells es permetria. 1136 01:23:38,370 --> 01:23:41,550 Observeu que en aquest en particular no es permet que la x. 1137 01:23:41,550 --> 01:23:44,090 La raó és que la pela és capaç de determinar 1138 01:23:44,090 --> 01:23:46,260 si un arxiu ha de ser executat o no. 1139 01:23:46,260 --> 01:23:49,800 Atès que això no és un arxiu executable, que no va posar la x. 1140 01:23:49,800 --> 01:23:54,000 Els 2 significa que el permís d'escriptura, la segona categoria aquí, 1141 01:23:54,000 --> 01:23:56,500 el que està al mig, se li nega. 1142 01:23:56,500 --> 01:23:58,500 Així que de nou, aquestes són les coses que es va negar. 1143 01:23:58,500 --> 01:24:02,080 Bé, està permès x però no és aquí perquè no és executable 1144 01:24:02,080 --> 01:24:04,260 i el mateix per als altres. 1145 01:24:04,260 --> 01:24:08,880 Així que això és un umask comú. 1146 01:24:08,880 --> 01:24:14,630 Una altra comuna és 700 - donar-te tot i ningú més res. 1147 01:24:14,630 --> 01:24:17,040 I hi ha altres possibilitats. 1148 01:24:21,340 --> 01:24:27,110 Vaig a tornar a això. L'ús de la història que puc buscar de nou per això, LWH cap allà. 1149 01:24:27,110 --> 01:24:30,210 Okay. Així que aquí, aquestes són les petxines. 1150 01:24:30,210 --> 01:24:36,020 Bash, l'amo, que és el compte del sistema, pot fer-ho tot. 1151 01:24:36,020 --> 01:24:41,210 Grup i tots els altres poden fer lectura o d'execució, però no escriure. 1152 01:24:41,210 --> 01:24:44,570 Aquest ni tan sols permet al propietari per escriure-hi. 1153 01:24:44,570 --> 01:24:46,460 Si el propietari volia escriure en ell, el compte del sistema, 1154 01:24:46,460 --> 01:24:48,020 hauria de canviar la protecció primer. 1155 01:24:48,020 --> 01:24:53,940 Però, de nou, la umask estableix el valor predeterminat per emmascarar, 1156 01:24:53,940 --> 01:24:57,160 indicant les parts que no es poden establir. 1157 01:24:57,160 --> 01:25:04,380 Això és en general en un dels arxius d'inicialització, que és l'arxiu. Cshrc pel C-shell 1158 01:25:04,380 --> 01:25:07,500 o el perfil. per a les petxines de tipus Bourne. 1159 01:25:07,500 --> 01:25:12,520 Pot ser en un altre lloc també si hi ha altres arxius d'inicialització en el sistema. 1160 01:25:12,520 --> 01:25:14,610 De tota manera, això és umask. 1161 01:25:14,610 --> 01:25:18,180 Hi ha alguna cosa una mica estrany aquí, 1162 01:25:18,180 --> 01:25:22,800 i és que, per què hi ha un sol comandament per això? 1163 01:25:22,800 --> 01:25:28,690 Si estigués escrivint això, m'agradaria que sigui una variable, umask = algun valor. 1164 01:25:28,690 --> 01:25:31,100 Per què hi ha tot una ordre per a aquest propòsit? 1165 01:25:31,100 --> 01:25:34,560 La raó és aquesta només es remunta als orígens de Unix. 1166 01:25:34,560 --> 01:25:41,050 Unix era només un projecte de programació en els Laboratoris Bell en la dècada de 1970. 1167 01:25:41,050 --> 01:25:42,610 La gent només es van reunir per al programa. 1168 01:25:42,610 --> 01:25:45,290 Ells mai van tenir la intenció que es converteixi en un sistema operatiu a tot el món. 1169 01:25:45,290 --> 01:25:47,250 Diferents persones van escriure diferents parts sense pensar molt 1170 01:25:47,250 --> 01:25:49,790 de com es van a utilitzar - més aviat succinta. 1171 01:25:49,790 --> 01:25:53,290 I es van unir així, i segueix sent així en alguns aspectes. 1172 01:25:53,290 --> 01:25:57,930 Així que reflecteix la història, i encara hi ha aquestes incoherències i els elements estranys de la mateixa. 1173 01:25:57,930 --> 01:26:00,750 Okay. Següent 1 aquí. 1174 01:26:08,170 --> 01:26:11,000 Com he escrit abans, el C-shell no s'usa realment molt per a la programació, 1175 01:26:11,000 --> 01:26:12,420 encara que pot ser. 1176 01:26:12,420 --> 01:26:15,080 S'executa més lentament, de nou l'equilibri entre l'ús interactiu, 1177 01:26:15,080 --> 01:26:17,820 que tenen més informació que la velocitat de processament implicat, 1178 01:26:17,820 --> 01:26:20,710 que es pot fer sense el processament. 1179 01:26:20,710 --> 01:26:28,320 Les característiques addicionals afegides a la shell Bourne pel Korn i Bourne-Again petxines 1180 01:26:28,320 --> 01:26:32,120 no sembla que disminueixi la seva velocitat, i jo no sé per què és així. 1181 01:26:32,120 --> 01:26:36,310 Potser només sigui una millor programació, però no estic en condicions de saber. 1182 01:26:36,310 --> 01:26:40,420 Accelerar aquí en realitat no és una cosa molt important, tot i que s'esmenta. 1183 01:26:40,420 --> 01:26:43,690 La raó és que els scripts de shell realment aconsegueixen bastant ràpid. 1184 01:26:43,690 --> 01:26:46,450 Si hi ha una gran quantitat d'ordres com en un programa de càlcul, 1185 01:26:46,450 --> 01:26:49,110 és probable que no ho faries en un script de shell. 1186 01:26:49,110 --> 01:26:51,450 Les operacions no són bastant simple i directe. 1187 01:26:51,450 --> 01:26:53,960 Els que jo he experimentat que són massa lents 1188 01:26:53,960 --> 01:26:57,110 involucrar les aplicacions repetides d'ordres lents. 1189 01:26:57,110 --> 01:27:00,480 Abans he esmentat l'editor de flux set. Aquesta comanda és lent. 1190 01:27:00,480 --> 01:27:03,760 Si executeu set moltes vegades, obtindràs un script lent, però no és la closca que és lent. 1191 01:27:03,760 --> 01:27:07,920 Si l'executa en el shell Bourne no serà molt més ràpid que corrent al C-shell, 1192 01:27:07,920 --> 01:27:10,070 encara que no hi ha tal vegada alguns avantatges allà. 1193 01:27:10,070 --> 01:27:12,760 Les capacitats de programació addicionals, d'altra banda, 1194 01:27:12,760 --> 01:27:17,920 són raons importants per les quals s'utilitzen les closques de tipus Bourne. 1195 01:27:17,920 --> 01:27:21,390 C-shell té característiques estranyes a ella - 1196 01:27:21,390 --> 01:27:25,250 el fet que vostè no sap si una variable és una variable de shell o una variable d'entorn. 1197 01:27:25,250 --> 01:27:27,440 Pot ser molt confús. 1198 01:27:27,440 --> 01:27:32,170 No és tan fàcil d'escriure 1199 01:27:32,170 --> 01:27:35,930 només es basa en la seva experiència en programació en altres idiomes. 1200 01:27:35,930 --> 01:27:41,350 Crec que és possible que les petxines de tipus Bourne més consistent amb la seva experiència. 1201 01:27:43,730 --> 01:27:49,270 Algunes seqüències d'ordres, però, poden ser milers de línies de longitud. 1202 01:27:49,270 --> 01:27:52,450 Els que he vist s'utilitzen per parchar els sistemes operatius. 1203 01:27:52,450 --> 01:27:55,450 Aquests poden executar molt lentament, però que no es quedi els molt sovint. 1204 01:27:55,450 --> 01:27:57,180 És només quan vostè està fent pegats, 1205 01:27:57,180 --> 01:27:59,450 i és només l'administrador del sistema que faci aquestes coses, 1206 01:27:59,450 --> 01:28:01,840 així que no és realment un gran problema. 1207 01:28:01,840 --> 01:28:06,980 Els que són centenars de línies de llarg realment s'executen amb força rapidesa. 1208 01:28:06,980 --> 01:28:10,540 En esmentar això aquí, quins són aquestes millores? 1209 01:28:10,540 --> 01:28:13,170 Ja he esmentat alguns d'ells - Arrays, càlculs, 1210 01:28:13,170 --> 01:28:20,540 els $ () d'expressió per als càlculs en l'intèrpret d'ordres, 1211 01:28:20,540 --> 01:28:23,050 l'altre tipus de substitució d'ordres. 1212 01:28:23,050 --> 01:28:25,360 Hi ha diferents tipus d'ordres de prova 1213 01:28:25,360 --> 01:28:29,350 mitjançant el qual és possible realitzar proves a l'existència d'un fitxer o altres coses. 1214 01:28:29,350 --> 01:28:34,790 L'última vegada aquí, aquesta comanda aquí. 1215 01:28:34,790 --> 01:28:38,480 Què fa això, i per què ningú fa servir? 1216 01:28:51,170 --> 01:28:52,990 nomVariable printenv. 1217 01:28:52,990 --> 01:28:56,130 Sabem el printenv fa. Se'ns diu que el valor d'una variable. 1218 01:28:56,130 --> 01:29:00,850 I nomVariable printenv no ens dirà molt perquè no hi ha tal variable. 1219 01:29:03,550 --> 01:29:05,120 En blanc. 1220 01:29:05,120 --> 01:29:08,440 Però anem a donar-li alguna cosa significativa. 1221 01:29:13,420 --> 01:29:16,800 Això no és allà. Okay. Suposo que mai vaig definir això. 1222 01:29:16,800 --> 01:29:18,020 Anem a comprovar el meu entorn. 1223 01:29:18,020 --> 01:29:20,900 Aquest és un altre ordre mitjançant el qual vostè pot inspeccionar el seu entorn. 1224 01:29:20,900 --> 01:29:24,470 Hi ha bona EDITOR d'edat, la que vam veure abans. 1225 01:29:42,360 --> 01:29:44,120 Què vol fer? 1226 01:29:44,120 --> 01:29:48,050 Aquí tenim una expressió backquote. 1227 01:29:48,050 --> 01:29:50,370 Recordeu que aquest és el C-shell. 1228 01:29:50,370 --> 01:29:54,850 Així EDITOR printenv ens donarà un valor de EDITOR. És vaig veure. 1229 01:29:54,850 --> 01:29:59,790 I llavors serà establir aquest valor a la variable a, la comanda set. 1230 01:29:59,790 --> 01:30:02,860 Així que ara si faig echo $ a, em surt vaig veure. 1231 01:30:02,860 --> 01:30:05,850 Això no sembla massa útil. 1232 01:30:05,850 --> 01:30:08,080 No obstant això, el que realment té un propòsit. 1233 01:30:08,080 --> 01:30:12,260 Atès que no sabem si una variable és una variable de shell o una variable d'entorn 1234 01:30:12,260 --> 01:30:16,280 mitjançant l'ús de la sintaxi d'avaluació signe del dòlar, podem utilitzar printenv 1235 01:30:16,280 --> 01:30:19,460 per assegurar-se que es tracta d'una variable d'entorn. 1236 01:30:19,460 --> 01:30:22,550 Així que si hi havia un editor de variables de shell, això no hauria aconseguit. 1237 01:30:22,550 --> 01:30:25,640 Això només funciona amb la variable d'entorn. 1238 01:30:25,640 --> 01:30:28,370 Si hi hagués una variable de shell i volia el seu valor, 1239 01:30:28,370 --> 01:30:29,980 Hauria de trobar una altra manera de fer-ho. 1240 01:30:29,980 --> 01:30:33,530 Una manera de fer això seria fent joc i la canonada. 1241 01:30:33,530 --> 01:30:36,130 Aquest és un dels metacaracteres, caràcters especials. 1242 01:30:36,130 --> 01:30:38,370 Envia la sortida del conjunt a una altra cosa. 1243 01:30:38,370 --> 01:30:40,650 Anem a veure el que ens anàvem a trobar allà. 1244 01:30:40,650 --> 01:30:49,340 Res. Okay. Anem a veure el que hi ha allà tots junts. 1245 01:30:49,340 --> 01:30:53,580 Va ser echo_style, la que he esmentat abans. Està bé, farem això. 1246 01:31:02,460 --> 01:31:06,230 Recordes que he esmentat abans, echo_style 1247 01:31:06,230 --> 01:31:08,410 determina la forma en què la comanda fet s'executarà. 1248 01:31:08,410 --> 01:31:10,940 bsd significa Distribució Berkeley estàndard. 1249 01:31:10,940 --> 01:31:13,200 Aquest és el Berkeley Unix des de la dècada de 1970. 1250 01:31:13,200 --> 01:31:16,630 Aquesta és una de les formes en què es fan ressò es pot executar. 1251 01:31:16,630 --> 01:31:22,310 Ajust echo_style a aquest valor al TC-shell farà ressò a comportar d'aquesta manera. 1252 01:31:22,310 --> 01:31:27,670 Per tal d'establir fa això, però només aconsegueix establir les variables de shell. 1253 01:31:27,670 --> 01:31:35,430 No seria trobar Editor, que no és una variable de shell. 1254 01:31:36,870 --> 01:31:38,050 Res. 1255 01:31:38,050 --> 01:31:39,660 Així que aquesta és una forma de distingir-los. 1256 01:31:39,660 --> 01:31:42,000 Però el fet que has d'anar a través d'algun comandament estrany com això 1257 01:31:42,000 --> 01:31:45,500 distingir entre les variables de shell o variables d'entorn 1258 01:31:45,500 --> 01:31:49,970 mostra el tipus de caràcter pràctic de la C-shell en determinats casos. 1259 01:31:52,290 --> 01:31:57,960 I ara, el passat i potser menys, es tracta de les pàgines del manual. 1260 01:31:57,960 --> 01:32:03,190 Aquells dels que vostès saben, l'home és el curt mandat de manual. 1261 01:32:03,190 --> 01:32:08,610 Les pàgines del manual de les petxines són difícils de llegir. Són molt llarg. 1262 01:32:08,610 --> 01:32:14,060 Estan organitzats d'una manera que pot fer que sigui difícil de trobar el que estàs buscant. 1263 01:32:14,060 --> 01:32:15,980 Així que si estàs buscant alguna cosa amb un propòsit, 1264 01:32:15,980 --> 01:32:20,050 vostè no pot saber si aquest propòsit és una variable de shell o alguna cosa més, 1265 01:32:20,050 --> 01:32:21,630 pel que no pot saber on buscar. 1266 01:32:21,630 --> 01:32:25,030 Vostè pot buscar diverses cadenes, però les cadenes es repeteixen sovint. 1267 01:32:25,030 --> 01:32:27,640 Així que és generalment difícil de llegir. 1268 01:32:27,640 --> 01:32:33,810 Ens mirem a la pàgina de manual TC-shell una mica abans de trobar la comanda eval. 1269 01:32:33,810 --> 01:32:36,610 Algunes coses van més ràpid. 1270 01:32:36,610 --> 01:32:38,860 Un enfocament consisteix a buscar una cadena. 1271 01:32:38,860 --> 01:32:40,360 Podeu utilitzar el localitzador. 1272 01:32:40,360 --> 01:32:49,080 Pager té la barra a la recerca d'una ordre o una cadena dins d'una operació de paginació. 1273 01:32:49,080 --> 01:32:52,830 Home per defecte farà servir localitzadors, ja sigui més o menys. 1274 01:32:52,830 --> 01:32:56,560 No sé si esteu familiaritzats amb ells, però els puc mostrar arxius a poc a poc. 1275 01:32:56,560 --> 01:33:00,550 He estat utilitzant MENYS per visualitzar aquests arxius en particular que tenim aquí. 1276 01:33:00,550 --> 01:33:03,300 Vostè pot buscar en l'interior hi ha. 1277 01:33:03,300 --> 01:33:04,880 Pots provar a utilitzar cadenes de cerca diferents. 1278 01:33:04,880 --> 01:33:08,420 També les pàgines de manual en diferents sistemes operatius poden no ser els mateixos. 1279 01:33:08,420 --> 01:33:11,130 Poden ser pàgines separades per csh i tcsh. 1280 01:33:11,130 --> 01:33:14,500 Són no estan en la Mac, però que podrien ser si aquestes són ordres separats. 1281 01:33:14,500 --> 01:33:19,000 Si sh realment no diuen Bash, probablement seria una pàgina de manual separat. 1282 01:33:19,000 --> 01:33:25,820 Alguns sistemes tenen pàgines man separades només pel C-shell ordres integrats. 1283 01:33:25,820 --> 01:33:30,250 De vegades, si voleu llegir una descripció d'un comando integrat 1284 01:33:30,250 --> 01:33:35,350 això és també en el camí, com eco, vostè necessita llegir la pàgina del manual sobre aquest comando en eco 1285 01:33:35,350 --> 01:33:37,610 per determinar com funcionarà com una ordre integrat 1286 01:33:37,610 --> 01:33:39,760 encara que no està trucant la comanda incorporat. 1287 01:33:41,630 --> 01:33:46,090 Això és un inconvenient del sistema operatiu en general, no només per a les petxines, 1288 01:33:46,090 --> 01:33:50,710 encara que per les petxines, en particular, les pàgines del manual són bastant llargs, 1289 01:33:50,710 --> 01:33:56,180 en part perquè s'han agregat característiques útils per a ells, el que pot ser una cosa positiva. 1290 01:33:56,180 --> 01:34:00,290 Okay. Hi ha alguna pregunta? Qualsevol tema que voleu que aparegui? 1291 01:34:00,290 --> 01:34:03,390 Tot el rellevant aquí? 1292 01:34:04,540 --> 01:34:07,100 Bé, ha estat molt agradable parlar amb tots vostès. 1293 01:34:07,100 --> 01:34:09,690 Espero que tinguis alguna cosa fora d'aquest seminari 1294 01:34:09,690 --> 01:34:13,080 que seran d'utilitat per a vostè en les seves activitats futures. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]