1 00:00:00,000 --> 00:00:02,320 >> [Seminario - Cunchas Unix, Ambientes] 2 00:00:02,320 --> 00:00:04,180 [Douglas Kline - Harvard University] 3 00:00:04,180 --> 00:00:07,160 [Isto é CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> Tema de hoxe é o shell de Unix. 5 00:00:12,770 --> 00:00:20,600 Estou Douglas Kline, experto, ou polo menos bastante usuario competente, da shell. 6 00:00:20,600 --> 00:00:25,280 A shell é a interface para o usuario do sistema operativo do ordenador. 7 00:00:25,280 --> 00:00:29,580 O nome é erro, como, ao contrario de shell dun animal, 8 00:00:29,580 --> 00:00:34,890 que é dura e protectora, o invólucro do ordenador permite a comunicación. 9 00:00:34,890 --> 00:00:39,120 Entón membrana porosa probablemente sería unha metáfora mellor. 10 00:00:39,120 --> 00:00:44,500 >> O escudo orixinal para Unix é o shell Bourne. 11 00:00:44,500 --> 00:00:46,450 Bourne está escrito B-O-K-R-N-E. 12 00:00:46,450 --> 00:00:49,770 Bourne foi un dos autores orixinais do Unix, 13 00:00:49,770 --> 00:00:51,700 e así que o shell é nomeado tras el. 14 00:00:51,700 --> 00:00:54,850 O nome do que shell como unha orde é simplemente sh. 15 00:00:54,850 --> 00:00:57,400 Ese é o comando que pode realizar. 16 00:00:57,400 --> 00:01:00,810 A casca comeza no inicio da sesión. 17 00:01:00,810 --> 00:01:04,459 Cando fai sesión no ordenador, o shell só comeza a funcionar para ti, 18 00:01:04,459 --> 00:01:06,820 e iso é o que leva os seus comandos. 19 00:01:06,820 --> 00:01:09,790 Pode comezar noutras ocasións tamén. 20 00:01:09,790 --> 00:01:16,780 Se abre unha ventá con ningunha outra indicación, ha comezar unha shell para ti. 21 00:01:16,780 --> 00:01:20,450 É así que é que pode ir a unha xanela e comezar a escribir comandos 22 00:01:20,450 --> 00:01:23,960 e así por diante alí aínda que non se rexistrar para esta xanela. 23 00:01:23,960 --> 00:01:26,670 Ademais, se fai un login remoto, 24 00:01:26,670 --> 00:01:30,250 a continuación, el ha comezar un shell no ordenador remoto. 25 00:01:30,250 --> 00:01:44,310 E é posible executar comandos sen un shell interactivo. 26 00:01:44,310 --> 00:01:48,990 Isto pode significar dentro da súa operación actual, 27 00:01:48,990 --> 00:01:50,700 e tamén pode significar unha operación remota. 28 00:01:50,700 --> 00:01:52,900 Podería enviar un comando a outro ordenador, 29 00:01:52,900 --> 00:01:55,460 que inclúe iniciar un shell alí. 30 00:01:55,460 --> 00:01:57,760 En realidade, ten que incluír o inicio dunha cuncha alí 31 00:01:57,760 --> 00:02:01,740 aínda que iso non é o seu propósito final. 32 00:02:05,310 --> 00:02:12,350 Cando algo comeza a ser así, iso non significa necesariamente comezar un novo shell. 33 00:02:12,350 --> 00:02:17,430 Se abre unha nova ventá, é posible dicir que para abrir un editor 34 00:02:17,430 --> 00:02:18,940 ou algún outro comando. 35 00:02:18,940 --> 00:02:20,560 Neste caso, o editor vai comezar de cero. 36 00:02:20,560 --> 00:02:22,930 Cando a edición remata, a xanela remata. 37 00:02:22,930 --> 00:02:24,620 Isto é un pouco raro, pero iso se pode facer. 38 00:02:24,620 --> 00:02:27,140 Nestes casos, non será unha cuncha. 39 00:02:27,140 --> 00:02:31,890 Polo tanto, non é necesariamente o caso de que unha xanela ou algunha aplicación será unha shell. 40 00:02:31,890 --> 00:02:34,030 >> Shell analiza comandos. 41 00:02:34,030 --> 00:02:40,900 Análise significa identificar os distintos elementos e clasificalos los. 42 00:02:40,900 --> 00:02:43,470 Dentro dun comando, a cadea completa que escribe, 43 00:02:43,470 --> 00:02:47,310 haberá un ou máis comandos simples a seren executados. 44 00:02:47,310 --> 00:02:50,050 Outros elementos poden ser argumentos. 45 00:02:50,050 --> 00:02:55,020 Tamén pode haber caracteres especiais que afectan a execución dun comando. 46 00:02:55,020 --> 00:02:59,710 Poden enviar a saída noutro lugar que a pantalla 47 00:02:59,710 --> 00:03:01,750 se a orde normalmente sería envialo á pantalla. 48 00:03:01,750 --> 00:03:04,390 Pode redireccionar a entrada, que pode facer outras cousas tamén. 49 00:03:04,390 --> 00:03:08,120 Existen outros símbolos, carácteres, e así por diante. 50 00:03:08,120 --> 00:03:13,600 Análise implica detectar e interpretar as cousas. 51 00:03:13,600 --> 00:03:19,560 >> Agora, se non hai máis preguntas, o que é moi probable, xa que non hai máis xente, 52 00:03:19,560 --> 00:03:24,620 imos pasar a miña seguinte páxina aquí. 53 00:03:24,620 --> 00:03:29,170 >> Eu dixen anteriormente que o shell Bourne é o shell de inicio. 54 00:03:29,170 --> 00:03:31,550 Hai outros. 55 00:03:31,550 --> 00:03:34,520 Un deles é o C-shell. A orde é csh. 56 00:03:34,520 --> 00:03:36,830 O nome C-shell é só un xogo de palabras. 57 00:03:36,830 --> 00:03:41,260 Este escudo foi introducido con Berkeley Unix, a mediados da década de 1970. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix foi un acontecemento decisivo no desenvolvemento de Unix. 59 00:03:44,830 --> 00:03:48,770 Foi unha gran revolución e incluíu a introdución deste shell. 60 00:03:48,770 --> 00:03:50,790 A razón para que o xogo de palabras, C-shell, 61 00:03:50,790 --> 00:03:56,490 é que o C-shell ten algunhas características nel que semellan linguaxe C, 62 00:03:56,490 --> 00:03:59,740 cal o shell Bourne non ten - 63 00:03:59,740 --> 00:04:02,140 ou non tiña na época. 64 00:04:02,140 --> 00:04:05,190 Hai tamén o TC-shell. 65 00:04:05,190 --> 00:04:07,360 Este é un superconjunto do C-shell. 66 00:04:07,360 --> 00:04:11,470 Ten características adicionais, moitos dos cales son útiles para o uso interactivo, 67 00:04:11,470 --> 00:04:16,050 tal como recordando comandos no mecanismo de histórico, 68 00:04:16,050 --> 00:04:18,459 que eu vou describir un pouco máis tarde - 69 00:04:18,459 --> 00:04:23,120 dunha forma sinxela, modelado tras un editor. 70 00:04:23,120 --> 00:04:29,170 Tamén ten enlaces que lle permiten conectar unha cadea clave curta para unha orde máis longo. 71 00:04:29,170 --> 00:04:31,440 Non imos estar recibindo en que hoxe. 72 00:04:31,440 --> 00:04:33,650 Ten algunhas características que son útiles para a programación. 73 00:04:33,650 --> 00:04:37,020 Con todo, o C-shell non é frecuentemente utilizado para programación shell. 74 00:04:37,020 --> 00:04:39,080 Programas Shell, se xa non soubese, 75 00:04:39,080 --> 00:04:41,690 son programas que consisten en características de fachada. 76 00:04:41,690 --> 00:04:43,220 Pode realizar estes como programas. 77 00:04:43,220 --> 00:04:46,760 Vostede escribe unha morea de comandos shell nun arquivo e executar o arquivo. 78 00:04:46,760 --> 00:04:49,760 Non necesita compilalo. Esta é unha linguaxe interpretativa. 79 00:04:49,760 --> 00:04:57,320 A frase C-shell é agora ambiguo, xa que pode referirse só ao orixinal C-shell, csh, 80 00:04:57,320 --> 00:05:01,200 ou para as C-shells, incluíndo tcsh. É un pouco ambigua. 81 00:05:01,200 --> 00:05:08,250 >> A shell máis tarde é o shell Korn, ksh, en homenaxe ao programador, Korn. 82 00:05:08,250 --> 00:05:14,160 Esta cuncha intentou incorporar nun shell 83 00:05:14,160 --> 00:05:16,960 as vantaxes do C-shell para uso interactivo 84 00:05:16,960 --> 00:05:19,230 eo Bourne shell para a programación. 85 00:05:19,230 --> 00:05:25,440 El foi usado como un escudo interactivo por algunhas persoas - unha minoría. 86 00:05:25,440 --> 00:05:32,050 Máis tarde, porén, houbo outra entrada, o shell bash, Bash, 87 00:05:32,050 --> 00:05:35,290 de novo un xogo de palabras, Bourne-again shell. 88 00:05:35,290 --> 00:05:43,830 É unha extensión do shell Bourne. Korn shell tamén é. Ambos son. 89 00:05:43,830 --> 00:05:48,100 Ten os mesmos obxectivos do shell Korn de amalgamando do C-shell 90 00:05:48,100 --> 00:05:50,980 e as vantaxes de Bourne shell nun shell. 91 00:05:50,980 --> 00:05:56,810 Moitas das melloras do shell Korn tamén están incluídos en Bash. 92 00:05:56,810 --> 00:06:00,710 Bash, con todo, ten máis e é por iso preferible. 93 00:06:00,710 --> 00:06:05,180 The Bourne-again shell eo shell Korn chámanse Bourne tipo cunchas 94 00:06:05,180 --> 00:06:07,730 porque inclúen características do Bourne shell, 95 00:06:07,730 --> 00:06:11,180 que son incompatibles nalgúns aspectos con C-cunchas. 96 00:06:11,180 --> 00:06:15,520 Hai outras cunchas, ademais daqueles, outros destinados ao uso restrinxido, 97 00:06:15,520 --> 00:06:20,670 quizais limitado a algúns comandos, quizais propósitos especializados, moitas veces non se usa. 98 00:06:20,670 --> 00:06:24,240 >> Okay. Next elemento aquí. 99 00:06:31,300 --> 00:06:38,970 O Bash shell converteuse en asociada a varias formas de Linux. 100 00:06:38,970 --> 00:06:41,550 Eu non estou seguro se iso é verdade de todas as formas. 101 00:06:41,550 --> 00:06:43,280 Existen moitas formas aí e eu non usei todos eles, 102 00:06:43,280 --> 00:06:46,870 pero os que eu usei, converteuse en asociado a el. 103 00:06:46,870 --> 00:06:49,670 Ata onde eu sei, non hai nada sobre Bash 104 00:06:49,670 --> 00:06:52,210 o que o fai máis compatible con Linux 105 00:06:52,210 --> 00:06:55,020 do que calquera outra combinación de cuncha e sistema operativo. 106 00:06:55,020 --> 00:06:59,690 Eu creo que iso probablemente reflicte as inclinacións dos programadores. 107 00:06:59,690 --> 00:07:07,500 Isto converteuse en asociado con Linux é máis unha razón para preferir Bash a ksh 108 00:07:07,500 --> 00:07:11,820 sempre que as cousas tenden a ser escrito sobre el e é probable a se espallar. 109 00:07:11,820 --> 00:07:15,410 Vou che dar outras razóns para iso máis tarde. 110 00:07:15,410 --> 00:07:21,330 Scripts shell Bourne debe ser executado baixo o shell Korn ou Bash. 111 00:07:21,330 --> 00:07:22,650 Se escribir algo para o shell Bourne, 112 00:07:22,650 --> 00:07:26,180 probablemente pode executa-lo baixo ksh ou bash. 113 00:07:26,180 --> 00:07:30,610 Scripts shell Korn probablemente será executado baixo Bash, pero non podo garantir isto. 114 00:07:30,610 --> 00:07:36,040 Posteriormente, aquí, os scripts de C-shell debe ser executado baixo o TC-shell. 115 00:07:38,850 --> 00:07:41,690 O C-shell foi realmente nunca usado extensivamente para script 116 00:07:41,690 --> 00:07:48,110 desde o shell Bourne e despois as cunchas Bourne tipo eran preferibles para esa finalidade. 117 00:07:48,110 --> 00:07:50,620 Entón, o que realmente non é tan importante así. 118 00:07:50,620 --> 00:07:53,480 Hai unha morea de scripts shell Bourne que foron escritas hai moito tempo, 119 00:07:53,480 --> 00:07:56,860 antes do shell Korn ou o Bourne-again shell foron introducidas. 120 00:07:56,860 --> 00:07:59,300 Os que aínda están en uso, parte dos sistemas operativos, 121 00:07:59,300 --> 00:08:01,590 e así vai atopalos se ollar para o sistema operativo 122 00:08:01,590 --> 00:08:03,760 ou algúns paquetes de programación antigas. 123 00:08:03,760 --> 00:08:12,840 >> Bash é de certa forma a tornar-se unha especie de lingua franca para sistemas operativos. 124 00:08:12,840 --> 00:08:17,580 É xa foi estendido para Windows e VMS. 125 00:08:17,580 --> 00:08:20,440 VMS, no caso de que non sabe, é un sistema operativo propietario 126 00:08:20,440 --> 00:08:25,480 de Digital Equipment Corporation, que aínda está en uso, en gran parte, nos bastidores. 127 00:08:25,480 --> 00:08:29,250 E se el vai estar en execución en varios sistemas operativos diferentes, 128 00:08:29,250 --> 00:08:31,110 probabelmente as persoas tenden a ir a el. 129 00:08:31,110 --> 00:08:33,840 Pero este desenvolvemento é relativamente recente. 130 00:08:33,840 --> 00:08:39,490 É só o comezo, entón eu non podo prever se isto vai pasar a ser realmente este tipo de lingua franca. 131 00:08:39,490 --> 00:08:43,539 Ademais, porque camiños de arquivo e bibliotecas difiren 132 00:08:43,539 --> 00:08:46,210 entre estes sistemas operativos distintos, 133 00:08:46,210 --> 00:08:50,250 pode non ser capaz de escribir un guión Bash nun sistema operativo 134 00:08:50,250 --> 00:08:51,840 e logo, executa-lo noutro. 135 00:08:51,840 --> 00:08:54,440 Vostede debe ser capaz de movelo entre diferentes Unix, Linux 136 00:08:54,440 --> 00:08:59,020 Sistemas operativos Mac OS, pero non necesariamente para Windows ou VMS. 137 00:08:59,020 --> 00:09:01,390 Pode ter que cambiar as descricións do ficheiro Pathname, 138 00:09:01,390 --> 00:09:03,180 e algunhas bibliotecas pode ser doutro xeito, 139 00:09:03,180 --> 00:09:05,230 o que pode afectar a forma que algúns comandos funcionan 140 00:09:05,230 --> 00:09:09,730 ou como eles procesan argumentos e afíns. 141 00:09:09,730 --> 00:09:19,230 Ademais, outra precaución aquí é que non hai ningunha garantía 142 00:09:19,230 --> 00:09:23,570 que todas as distintas cunchas que eu mencionen - Bourne shell, C-shell, 143 00:09:23,570 --> 00:09:29,880 TC-shell, Korn, Bourne-again shell - estarán dispoñibles en calquera Unix 144 00:09:29,880 --> 00:09:33,750 ou Linux ou Mac OS. 145 00:09:33,750 --> 00:09:35,620 Eles simplemente non poden estar alí. 146 00:09:35,620 --> 00:09:38,300 Esa é unha das precaucións aquí. 147 00:09:38,300 --> 00:09:41,490 É unha limitación infeliz aquí sempre que quere que as cousas funcionen en todas as partes, 148 00:09:41,490 --> 00:09:44,380 pero, desgraciadamente, non se pode contar con iso. 149 00:09:44,380 --> 00:09:47,230 >> Okay. Next one aquí. 150 00:09:50,280 --> 00:09:54,370 Imos dicir que quere escribir un shell script, 151 00:09:54,370 --> 00:09:57,170 un programa que consta de comandos shell. 152 00:09:57,170 --> 00:10:01,200 Vostede escribe os seus mandos, poñelos nun arquivo e executar o arquivo. 153 00:10:01,200 --> 00:10:04,230 E se queres incluír argumentos? 154 00:10:04,230 --> 00:10:09,650 No caso de operacións de fachada, os argumentos son chamados parámetros ou parámetros posicionais 155 00:10:09,650 --> 00:10:15,940 e eles van ser chamados por un sinal de dólar e numeral, $ 1, $ 2. 156 00:10:15,940 --> 00:10:27,000 Polo tanto, se a escritura ten ese nome, o meu primeiro argumento pode ser argumento 1 157 00:10:27,000 --> 00:10:30,540 e meu segundo se pode argumento 2, 158 00:10:30,540 --> 00:10:34,110 e dentro do meu guión, se eu queira referirse a esas cousas - 159 00:10:34,110 --> 00:10:36,810 imos borrar iso dende que eu realmente non estou indo a executa-lo - 160 00:10:36,810 --> 00:10:42,160 dentro do meu script que eu poida ter un dólar para referirse a arg1, 161 00:10:42,160 --> 00:10:45,890 $ 2, que vai saír desa forma, arg2. 162 00:10:45,890 --> 00:10:50,080 Entón, eses símbolos están dispoñibles para referirse aos argumentos, 163 00:10:50,080 --> 00:10:52,390 e os que se aplica a todas as cunchas. 164 00:10:52,390 --> 00:10:56,520 Ademais, existen outros caracteres. 165 00:10:56,520 --> 00:11:01,700 $ * Refírese a toda a lista de argumentos, todos eles. 166 00:11:01,700 --> 00:11:05,390 $ # Refírese ao número de argumentos. 167 00:11:05,390 --> 00:11:07,910 Unha vez máis, isto é aplicable a todas as cunchas. 168 00:11:07,910 --> 00:11:15,540 Estes símbolos, * e #, pode ser usado con estes significados noutros lugares tamén. 169 00:11:15,540 --> 00:11:17,940 Non vai ter para iso. 170 00:11:17,940 --> 00:11:20,460 >> Liña especificador Shell. ¿Que é iso? 171 00:11:20,460 --> 00:11:27,760 Digamos que teña escrito un guión e é por unha cuncha especial e quere executalo. 172 00:11:27,760 --> 00:11:33,500 Como vostede sabe o que desembolsar o seu sistema operativo vai empregar para executar o script? 173 00:11:33,500 --> 00:11:37,230 Nun punto, podería supoñer que vai executa-lo no shell Bourne 174 00:11:37,230 --> 00:11:39,440 se non dicir o contrario, 175 00:11:39,440 --> 00:11:41,730 pero a xente non están a escribir scripts en Bourne Shell que moito máis 176 00:11:41,730 --> 00:11:43,750 e non pode mesmo contar con iso. 177 00:11:43,750 --> 00:11:48,740 Polo tanto, temos aquí unha liña de especificador shell aquí. 178 00:11:48,740 --> 00:11:52,450 Isto especifica Bash. 179 00:11:52,450 --> 00:11:56,750 Nótese que especifica-la no camiño, / bin / bash. 180 00:11:56,750 --> 00:12:02,870 Se un ordenador ten o shell bash, pero non no directorio bin, / sbin, iso non vai funcionar. 181 00:12:02,870 --> 00:12:06,870 Ese é outro cualificado, outro coidado aquí. 182 00:12:06,870 --> 00:12:09,500 O sinal de libra é o carácter de comentario de liña. 183 00:12:09,500 --> 00:12:12,300 Isto é aplicable a todas as cunchas. 184 00:12:12,300 --> 00:12:18,610 O caso particular aquí, #! no inicio dun guión, é un caso especial. 185 00:12:18,610 --> 00:12:23,410 Isto especifica o shell en que para realizar o guión. 186 00:12:23,410 --> 00:12:30,230 Como eu estaba dicindo, pode non ser o mesmo lugar / bin. 187 00:12:30,230 --> 00:12:34,880 Ademais, hai outra cousa aquí. 188 00:12:34,880 --> 00:12:41,250 Se usar só o signo de libra, sen punto de admiración e camiño, 189 00:12:41,250 --> 00:12:44,640 que debe indicar un C-shell. 190 00:12:44,640 --> 00:12:48,300 Sen embargo, eu non recomendo facelo porque eu non son capaz de garantir 191 00:12:48,300 --> 00:12:49,750 que iso vai funcionar sempre. 192 00:12:49,750 --> 00:12:52,220 Se quere un C-shell, sería mellor dicir así. 193 00:12:52,220 --> 00:12:58,450 Entón, hai algo un pouco confuso aquí. 194 00:12:58,450 --> 00:13:03,940 Se usar unha liña de shell especificador, como / bin / bash 195 00:13:03,940 --> 00:13:07,070 e que a casca non está dispoñible alí, 196 00:13:07,070 --> 00:13:10,680 non hai tal cousa como / bin / bash nese ordenador particular, 197 00:13:10,680 --> 00:13:14,330 ou porque non ten Bash ou porque está nun lugar diferente, 198 00:13:14,330 --> 00:13:17,450 recibirá un erro informando que a escritura que correu non existe. 199 00:13:17,450 --> 00:13:21,510 E, por suposto, existe a escritura, de xeito que a mensaxe de erro é confuso. 200 00:13:21,510 --> 00:13:24,810 A razón pola que o sistema operativo dálle ese erro 201 00:13:24,810 --> 00:13:28,370 ou, máis precisamente, que o shell interactivo no que está a executar o que dá ese erro, 202 00:13:28,370 --> 00:13:33,510 é que relata a orde utilizado, que é o nome do script. 203 00:13:33,510 --> 00:13:36,920 Este comando efectivamente chamado shell co nome do script. 204 00:13:36,920 --> 00:13:39,330 É alí onde comeza a mensaxe de erro confuso. 205 00:13:39,330 --> 00:13:42,980 Outro xeito de chamar script shell 206 00:13:42,980 --> 00:13:45,910 é especificando o shell na liña de comandos, como aquí. 207 00:13:45,910 --> 00:13:52,510 Este é un comando. Isto di Bash realizar e, a continuación, executar o meu script en Bash. 208 00:13:52,510 --> 00:13:55,680 Isto vai ter precedencia sobre unha liña de especificador, 209 00:13:55,680 --> 00:14:02,090 e este ten a característica de permitir que fornecer para camiños distintos. 210 00:14:02,090 --> 00:14:04,840 Se acaba de dar unha orde, o sistema operativo pode ollar para a orde 211 00:14:04,840 --> 00:14:06,410 en varios lugares. 212 00:14:06,410 --> 00:14:08,820 Se está dispoñible, debe atopalo. 213 00:14:08,820 --> 00:14:12,290 O ordenador vai atopar Bash onde está situado e executalo, 214 00:14:12,290 --> 00:14:15,470 para que non precisa, entón, a preocuparse onde atopa-lo. 215 00:14:15,470 --> 00:14:17,360 Hai potencialmente outras preocupacións aquí, 216 00:14:17,360 --> 00:14:20,830 como se fai máis que unha versión do Bash, que é posible, aínda que improbable. 217 00:14:20,830 --> 00:14:23,540 Entón, iso é outra forma de xestionar estas cousas. 218 00:14:23,540 --> 00:14:30,480 Liñas de especificador pode chamar calquera shell. 219 00:14:30,480 --> 00:14:34,480 Eles poden chamar outros de cunchas cousas. 220 00:14:34,480 --> 00:14:37,940 Exemplos que teño aquí son sed, que é o editor de fluxo; 221 00:14:37,940 --> 00:14:39,900 awk, que é unha linguaxe de procesamento estándar; 222 00:14:39,900 --> 00:14:43,680 e Perl, unha linguaxe de script moi altamente desenvolvida. 223 00:14:43,680 --> 00:14:47,570 Se pór unha liña especificador indicando un destes programas, en principio, 224 00:14:47,570 --> 00:14:51,270 ha directamente ao programa, en vez de iniciar unha shell. 225 00:14:51,270 --> 00:14:54,030 Estes programas teñen límites para as súas habilidades. 226 00:14:54,030 --> 00:14:58,790 Perl é moi capaz. Sed é un editor. Pode facer cousas ademais de simplemente editando. 227 00:14:58,790 --> 00:15:03,300 Pero pode ser difícil de programa que. 228 00:15:03,300 --> 00:15:09,670 Ademais, o paso de argumentos e outras cousas para a escritura é imposible ou confuso. 229 00:15:09,670 --> 00:15:15,030 Entón, neses casos, con awk ou sed, é, polo menos na miña experiencia, 230 00:15:15,030 --> 00:15:18,910 preferible escribir un shell script e chamada awk ou sed do script shell 231 00:15:18,910 --> 00:15:24,660 ao contrario de chamar awk ou sed como a liña de especificador de script. 232 00:15:24,660 --> 00:15:26,980 Perl é unha linguaxe altamente diversificada, como dixen. 233 00:15:26,980 --> 00:15:30,050 Non pode executar comandos interactivos en perl, 234 00:15:30,050 --> 00:15:32,660 o que significa que non pode probar pezas de scripts que está en desenvolvemento 235 00:15:32,660 --> 00:15:33,970 , Executando-os de forma interactiva. 236 00:15:33,970 --> 00:15:36,160 Con todo, é unha linguaxe moi capaz 237 00:15:36,160 --> 00:15:40,960 e chegou a ser unha ferramenta moi utilizada. 238 00:15:40,960 --> 00:15:45,720 Isto é só un pouco máis de unha observación entre parénteses sobre as liñas de especificador. 239 00:15:45,720 --> 00:15:50,610 >> En todas ou a maioría das formas de Linux - unha vez máis, eu non podo estar seguro de que é todo - 240 00:15:50,610 --> 00:15:57,900 e en Mac OS, se escribir csh comeza tcsh, 241 00:15:57,900 --> 00:16:00,570 e se insire sh comeza bash. 242 00:16:00,570 --> 00:16:05,020 Estaban tratando alí para darlle as versións máis avanzadas deses cunchas, 243 00:16:05,020 --> 00:16:07,940 pero isto pode ser confuso. 244 00:16:07,940 --> 00:16:16,720 Se escribir un guión utilizando tcsh ou Bash presenta ao chamar csh ou sh 245 00:16:16,720 --> 00:16:22,230 e probe executalo en un ordenador que non ten tcsh ou Bash, 246 00:16:22,230 --> 00:16:25,050 pode obter algúns erros se hai comandos alí 247 00:16:25,050 --> 00:16:27,970 que esas cunchas non recoñece. 248 00:16:27,970 --> 00:16:34,120 Ademais, pode chamar a súa cuncha no seu computador local 249 00:16:34,120 --> 00:16:37,700 chamando-o como sh ou csh e logo, obter as cunchas máis avanzados. 250 00:16:37,700 --> 00:16:41,440 Pode até non pensar no feito de que está a usar o shell máis avanzado. 251 00:16:41,440 --> 00:16:45,670 Polo tanto, esta é unha trampa potencial. 252 00:16:45,670 --> 00:16:50,290 Como é establecido que se insire sh comeza Bash, 253 00:16:50,290 --> 00:16:55,580 Se insire csh comeza tsch? 254 00:16:55,580 --> 00:16:59,940 Hai cousas nestes ordenadores chamados enlaces 255 00:16:59,940 --> 00:17:06,460 que pode conectarse a nomes de ficheiro para referirse á mesma cousa. 256 00:17:06,460 --> 00:17:12,180 El quere pode ser de 2 nomes para o mesmo ficheiro ou un ficheiro cuxa finalidade é para referirse a outro ficheiro. 257 00:17:12,180 --> 00:17:17,550 Son chamados de ligazóns físicos e simbólicos. Non imos estar indo a máis que hoxe. 258 00:17:17,550 --> 00:17:21,619 Tamén pode haber arquivos separados - un ficheiro sh, 1 arquivo Bash - 259 00:17:21,619 --> 00:17:23,880 pero ambos executar Bash. 260 00:17:23,880 --> 00:17:29,350 Despois, hai outro calificador aquí. 261 00:17:29,350 --> 00:17:42,640 Se está conectando a un destes shells por un nome, 262 00:17:42,640 --> 00:17:46,640 pode pensar que quere obter a mesma funcionalidade que chamala por outro nome. 263 00:17:46,640 --> 00:17:49,700 Ben, iso realmente non é necesariamente verdade. 264 00:17:49,700 --> 00:17:55,020 Estes comandos poden examinar o nome polo cal eles foron chamados 265 00:17:55,020 --> 00:18:00,020 e poden, en base a que o nome, se comportan de forma distinta. 266 00:18:00,020 --> 00:18:02,740 Pode haber problemas de tentar obedecer a un estándar. 267 00:18:02,740 --> 00:18:06,060 Algúns de vostedes poden ter oído falar do estándar POSIX ou doutra, 268 00:18:06,060 --> 00:18:08,730 quizais outros recursos. 269 00:18:08,730 --> 00:18:14,520 Isto pode ser seleccionado, por veces, a través de argumentos de liña de comandos 270 00:18:14,520 --> 00:18:17,310 ou definindo variables shell. 271 00:18:17,310 --> 00:18:22,170 Chamando-o como sh ou bash realmente pode levar a unha execución distinta 272 00:18:22,170 --> 00:18:25,300 aínda que sexa o mesmo ficheiro que está executando. 273 00:18:25,300 --> 00:18:31,800 Outra cousa a considerar é que, mesmo se outro ordenador ten tcsh ou Bash, 274 00:18:31,800 --> 00:18:35,310 se eles non están ligados como están no seu computador local 275 00:18:35,310 --> 00:18:37,990 se ten un ordenador local Linux ou Mac OS, 276 00:18:37,990 --> 00:18:45,630 logo de novo vai ter o shell que chama sh ou csh, non o que pode preferir. 277 00:18:50,430 --> 00:19:01,130 A cadea de Bourne shell ten melloras menor que aqueles en Bash 278 00:19:01,130 --> 00:19:06,100 pero pasado os do shell Bourne orixinal. 279 00:19:06,100 --> 00:19:09,690 Como resultado diso, ata o shell actual Bourne, sh, 280 00:19:09,690 --> 00:19:14,560 aínda que non é Bash, aseméllase á linguaxe C máis que o C-shell fai. 281 00:19:14,560 --> 00:19:20,460 Isto non era certo cando o C-shell foi creada por primeira vez, pero desenvolveu-se desta forma. 282 00:19:20,460 --> 00:19:26,560 Pode notar aquí que todos estes nomes de fachada, excepto para o shell Bourne 283 00:19:26,560 --> 00:19:30,640 ten algo para indicar cal shell que son - csh, o bash - 284 00:19:30,640 --> 00:19:32,550 pero o shell Bourne é só sh. 285 00:19:32,550 --> 00:19:34,910 Por que? Ese foi o shell de orixe. 286 00:19:34,910 --> 00:19:37,770 Foi o Shell de entón, non unha cuncha, 287 00:19:37,770 --> 00:19:41,090 e unha vez que era a casca, non había ningunha razón para distinguilo lo doutro shell. 288 00:19:41,090 --> 00:19:45,030 Entón é por iso que ten ese nome e aínda o fai. 289 00:19:50,630 --> 00:19:58,990 >> Este top aquí é unha liña de unha base de datos de contrasinal dunha conta que eu teño alí 290 00:19:58,990 --> 00:20:01,680 noutro ordenador. 291 00:20:01,680 --> 00:20:08,300 Vou tentar obter ese nome para que poida ver que parte ao final, o shell. 292 00:20:09,720 --> 00:20:15,450 A base de datos de contrasinal detén as características de login para todos os usuarios. 293 00:20:15,450 --> 00:20:20,330 En principio é o nome de usuario, que se pode ver os últimos 2 cartas de meu momento. 294 00:20:20,330 --> 00:20:23,970 Os campos aquí están separados por dous puntos. 295 00:20:23,970 --> 00:20:28,210 O último campo, como podes ver, é bin / tcsh, o shell. 296 00:20:28,210 --> 00:20:30,230 Ese é o especificador de shell. 297 00:20:30,230 --> 00:20:33,240 Hai algo interesante aquí. 298 00:20:33,240 --> 00:20:36,950 Cando Unix foi desenvolvido en primeiro lugar, había só un shell, 299 00:20:36,950 --> 00:20:38,350 entón non había opción alí. 300 00:20:38,350 --> 00:20:45,570 Entón, por que eles permiten que un campo na base de datos de contrasinal para especificar un shell? 301 00:20:45,570 --> 00:20:47,920 Eu non sei, pero é bo que eles fixeron. 302 00:20:47,920 --> 00:20:52,030 É un pouco difícil de facer cambios no formato de base de datos de contrasinal 303 00:20:52,030 --> 00:20:54,420 porque moitos programas refírense a seu formato 304 00:20:54,420 --> 00:20:57,720 e tería que ser reescrito. 305 00:20:57,720 --> 00:21:04,130 É un desenvolvemento feliz ou fortuíto que incluíron nese campo. 306 00:21:04,130 --> 00:21:12,780 Este tipo de unha liña do ficheiro de contrasinal é usado en todos os ordenadores Unix e Linux, tanto como sei. 307 00:21:12,780 --> 00:21:14,650 O Mac ten o seu propio sistema. 308 00:21:14,650 --> 00:21:17,810 El realmente ten un ficheiro de contrasinais coas liñas en que formato, 309 00:21:17,810 --> 00:21:21,060 pero iso non é o lugar onde as características do usuario son definidos. 310 00:21:21,060 --> 00:21:24,200 Outra observación entre parénteses alí. 311 00:21:36,470 --> 00:21:46,020 >> Se está chamando dunha cuncha, pode chamalo como un sub-shell de súas cunchas existentes. 312 00:21:46,020 --> 00:21:50,480 Entón, se eu ir aquí, imos nos librar destas cousas. 313 00:21:50,480 --> 00:21:53,350 Aquí estou eu no C-shell. 314 00:21:56,830 --> 00:22:01,200 Esta variable, que identifica con precisión o meu escudo, 315 00:22:01,200 --> 00:22:04,300 en realidade, non sempre é unha forma fiable de determinar o que desembolsar está executando, 316 00:22:04,300 --> 00:22:06,220 pero neste caso é. 317 00:22:06,220 --> 00:22:08,040 E se eu simplemente escribir - 318 00:22:09,970 --> 00:22:12,470 Agora estou en Bash. 319 00:22:12,470 --> 00:22:19,540 Algunhas cousas van ser os mesmos. ls dime os meus mandamentos. 320 00:22:19,540 --> 00:22:24,500 Se eu a suspender volver para o meu C-shell, sl, mesmo. Non? 321 00:22:24,500 --> 00:22:28,890 fg, primeiro plano, volver para o meu shell Bash. 322 00:22:28,890 --> 00:22:38,290 pwd, directorio actual, ao seu C-shell. 323 00:22:38,290 --> 00:22:43,180 pwd, directorio diferente - en realidade non é un directorio diferente neste caso. 324 00:22:43,180 --> 00:22:45,110 É o mesmo directorio. 325 00:22:45,110 --> 00:22:50,000 Imos dicir que quero chamar un comando aquí: onde ls. 326 00:22:50,000 --> 00:22:52,140 O que isto fai? 327 00:22:52,140 --> 00:22:53,670 Dime onde a orde ls, 328 00:22:53,670 --> 00:22:56,670 o que me dá unha listaxe de directorio, está situado na ls. 329 00:22:56,670 --> 00:23:01,460 Imos voltar Bash shell. Imos tentar o mesmo. 330 00:23:01,460 --> 00:23:05,830 Hmm, interesante alí, onde: comando non atopado. 331 00:23:05,830 --> 00:23:07,400 Por que isto? 332 00:23:07,400 --> 00:23:11,570 A orde onde está construído para o C-shell. 333 00:23:11,570 --> 00:23:15,630 Este non é un comando que ten que ser lido á memoria doutro lugar e executado. 334 00:23:15,630 --> 00:23:20,310 O C-shell executa-lo, trasladando a execución de parte do seu propio código 335 00:23:20,310 --> 00:23:22,790 e non é o shell Bash. 336 00:23:22,790 --> 00:23:25,710 Entón, Bash, non tendo tal comando integrado, busca por el, non atopalo, 337 00:23:25,710 --> 00:23:27,720 e teremos un erro. 338 00:23:27,720 --> 00:23:32,290 Polo tanto, temos un shell bash executándose nunha C-shell, e chamamos iso de un sub-shell. 339 00:23:32,290 --> 00:23:38,480 E no caso de que vostede está curioso, Bash shell ten a súa propia forma de localizar os comandos. 340 00:23:38,480 --> 00:23:42,590 hash refírese ao feito de que se pode executar máis rápido, 341 00:23:42,590 --> 00:23:44,960 sendo atopados máis rapidamente. 342 00:23:44,960 --> 00:23:48,610 Esa é unha das melloras construídas en algunhas destas cunchas. 343 00:23:50,220 --> 00:23:54,200 >> Bourne tipo cunchas son os preferidos para a programación. 344 00:23:54,200 --> 00:23:57,300 Teñen estruturas de control como loops, instrucións condicionais, 345 00:23:57,300 --> 00:24:00,240 o tipo de comandos que pode usar en linguaxes de programación como C 346 00:24:00,240 --> 00:24:04,190 ou calquera outra lingua. Pode que a programación en Java ou calquera outra cousa. 347 00:24:04,190 --> 00:24:06,460 Shells ter os demais. 348 00:24:06,460 --> 00:24:11,790 As cunchas do tipo Bourne, particularmente Bash, teñen máis 349 00:24:11,790 --> 00:24:15,730 e eles están deseñados con maior flexibilidade. 350 00:24:15,730 --> 00:24:20,700 O Bash shell ten arrays. The Bourne shell orixinal non fai. 351 00:24:20,700 --> 00:24:26,130 Así que pode ser considerablemente vantaxoso para a programación. 352 00:24:26,130 --> 00:24:29,810 O C-shell realmente ten matrices, pero non ten unha morea deses outros recursos. 353 00:24:29,810 --> 00:24:33,450 As cunchas do tipo Bourne ha executar máis rápido 354 00:24:33,450 --> 00:24:36,520 se eles non teñen os elementos que se destinan a utilización interactiva. 355 00:24:36,520 --> 00:24:39,340 Leva as cousas con un propósito, o que leva-los a outra finalidade. 356 00:24:39,340 --> 00:24:41,520 Hai que trade-off alí. 357 00:24:41,520 --> 00:24:44,510 Estes recursos que están destinados para uso interactivo 358 00:24:44,510 --> 00:24:46,920 Realmente son de pouco ou ningún uso de scripts. 359 00:24:46,920 --> 00:24:52,160 É posíbel usar un sub-shell interactivo así como o que eu comece alí 360 00:24:52,160 --> 00:24:57,780 para probar as ordes que pretende empregar nun guión. 361 00:24:57,780 --> 00:25:01,180 Iso é o que non pode facer con Perl. Podes facelo coas cunchas. 362 00:25:01,180 --> 00:25:04,850 Mesmo as estruturas como loops e así por diante pode ser executado de forma interactiva. 363 00:25:04,850 --> 00:25:07,000 Son ocasionalmente útil para realizar de forma interactiva, 364 00:25:07,000 --> 00:25:10,180 pero é máis probable que está a usar para desenvolver un guión. 365 00:25:15,690 --> 00:25:17,400 >> Aliases. 366 00:25:17,400 --> 00:25:21,630 Este vai ser sobre o C-shell. 367 00:25:23,270 --> 00:25:27,570 Mecanismo de Historia, onde volver aos comandos anteriores 368 00:25:27,570 --> 00:25:30,340 ou partes deles que xa teña executado. 369 00:25:30,340 --> 00:25:33,680 Unha vez máis, sobre a C-shell, o shell Bourne e shell Korn ten esas cousas, 370 00:25:33,680 --> 00:25:35,620 pero eu non vou entrar na deles. 371 00:25:35,620 --> 00:25:40,340 Entón, aquí están algúns alias útiles que eu teño. 372 00:25:43,100 --> 00:25:44,880 No canto de escribir ls - é unha orde común - 373 00:25:44,880 --> 00:25:47,620 escriba l e salva-se un personaxe. 374 00:25:47,620 --> 00:25:50,600 ls con varias opcións, as obras. 375 00:25:50,600 --> 00:25:54,460 Nótese que estas definicións teñen comiñas en torno a eles. 376 00:25:54,460 --> 00:25:57,520 Nestes casos, as citas non son necesarias. 377 00:25:57,520 --> 00:26:00,100 Se pode establecer os alias sen as comiñas, el continuaría traballando. 378 00:26:00,100 --> 00:26:02,910 Son recomendados. 379 00:26:02,910 --> 00:26:04,900 Hai situacións nas que non se pode usar a citación 380 00:26:04,900 --> 00:26:08,050 porque quere que algo aconteza, que a cita impediría. 381 00:26:08,050 --> 00:26:11,210 Ás veces, pode citar parte da definición, pero non todo isto. 382 00:26:11,210 --> 00:26:17,010 Tamén é xeralmente recomendado o uso de aspas en vez de comiñas dobres. 383 00:26:17,010 --> 00:26:19,750 Comiñas ter efectos sobre a configuración das variables, 384 00:26:19,750 --> 00:26:22,950 particularmente levándoos a ser avaliada en vez de impedir isto. 385 00:26:22,950 --> 00:26:25,910 Por que iríamos querer parar a avaliación? 386 00:26:25,910 --> 00:26:28,710 E como citas facelo por nós? 387 00:26:28,710 --> 00:26:32,600 >> Aquí está unha orde que pode considerar interesante. 388 00:26:32,600 --> 00:26:35,470 'Ls g *' 389 00:26:35,470 --> 00:26:37,640 g *, como probablemente sabe, é unha expresión comodín 390 00:26:37,640 --> 00:26:40,290 para todos os nomes de ficheiros que comezan con g. 391 00:26:40,290 --> 00:26:46,410 Se eu escribir nun comando ls g *, eu vou incorporarse unha lista de todos os nomes no meu directorio actual. 392 00:26:46,410 --> 00:26:50,870 Se eu definir ese feito como é aquí coas citas, 393 00:26:50,870 --> 00:26:56,990 ha executar este comando no directorio actual onde está executando-o. 394 00:26:56,990 --> 00:27:01,250 Pero se realizar a definición de alias sen as comiñas, 395 00:27:01,250 --> 00:27:09,620 ha avaliar o comodín g * cando se executa este comando de definición. 396 00:27:09,620 --> 00:27:14,400 Así, a definición do alias será ls seguido pola lista de ficheiros no directorio 397 00:27:14,400 --> 00:27:16,310 en que a orde alias corre, 398 00:27:16,310 --> 00:27:19,180 independentemente de onde o que realmente quere executar o comando. 399 00:27:19,180 --> 00:27:26,360 Este non é de gran utilidade, e as comiñas previr a avaliación do asterisco. 400 00:27:26,360 --> 00:27:30,780 Entón acaba de obter a definición de ser ls g *. 401 00:27:30,780 --> 00:27:35,510 Entón, cando executar o alias, LGS, el pon iso. 402 00:27:35,510 --> 00:27:40,490 Agora non hai citas, e ha avaliar o asterisco cando executar o comando alias. 403 00:27:40,490 --> 00:27:43,900 Entón, iso é unha cousa. 404 00:27:43,900 --> 00:27:46,590 Comiñas tería ese mesmo efecto aquí, 405 00:27:46,590 --> 00:27:50,580 pero hai outros casos en que as comiñas dobres non funcionan tan ben. 406 00:27:50,580 --> 00:27:52,450 >> Aquí é outra. 407 00:27:52,450 --> 00:27:54,270 Podes saber o comando grep. 408 00:27:54,270 --> 00:28:02,110 A orde grep se pode usar para dixitalizar un arquivo para as liñas que teñen determinadas secuencias. 409 00:28:02,110 --> 00:28:10,350 Entón, imos pasar por riba aquí e eu vou saír da miña cuncha Bourne. 410 00:28:23,570 --> 00:28:25,450 Okay. Aquí está un arquivo. 411 00:28:25,450 --> 00:28:31,490 Imos dicir que é cordas abc grep. Aquí está. 412 00:28:31,490 --> 00:28:37,930 Se eu fai zddd grep, recibín nada. Okay. 413 00:28:37,930 --> 00:28:40,960 Entón, el atopa unha corda, el relata, que non encontra, non relato-lo. 414 00:28:40,960 --> 00:28:44,930 El produce calquera liña que ten esa corda nel. 415 00:28:44,930 --> 00:28:49,080 Hai todo tipo de opcións aquí que pode atopar na documentación. 416 00:28:49,080 --> 00:28:52,160 Aquí está un xeito de facelo. 417 00:28:52,160 --> 00:29:03,290 E este aquí, de feito grabc 'grep abc'? 418 00:29:03,290 --> 00:29:09,000 Isto incluirá un argumento cando o alias está definido. 419 00:29:09,000 --> 00:29:26,300 Entón, se eu facer iso aquí, agora se eu fai grabc, 420 00:29:26,300 --> 00:29:30,620 agora o alias inclúe máis que o simple comando. Tamén ten o argumento. 421 00:29:30,620 --> 00:29:32,190 Ata o momento que funciona. 422 00:29:32,190 --> 00:29:38,590 Eu teño un outro comando aquí, un regalo, entón eses son diferentes cordas en alí 423 00:29:38,590 --> 00:29:46,790 e amosar que iso non atopar nada alí, xa que non corresponde. 424 00:29:46,790 --> 00:29:56,180 >> E se eu queira incluír na definición de alias do ficheiro que eu vou buscar 425 00:29:56,180 --> 00:30:02,970 e quero dar como un argumento para o alias a corda que estou buscando? 426 00:30:02,970 --> 00:30:08,040 Podería querer dicir abc como argumento para o meu apelido, 427 00:30:08,040 --> 00:30:10,870 pero o alias xa determinado arquivo. 428 00:30:10,870 --> 00:30:15,710 E é aí onde esta expresión vén dentro 429 00:30:20,430 --> 00:30:25,270 Teña en conta aquí temos grep como antes. 430 00:30:25,270 --> 00:30:28,130 Temos o ficheiro aquí, strings. 431 00:30:28,130 --> 00:30:35,610 \ ^!, Tipo dunha expresión estraña, creo que, se aínda non viu iso antes. 432 00:30:35,610 --> 00:30:39,920 Punto de exclamación forma parte do mecanismo de historia C-shell. 433 00:30:39,920 --> 00:30:45,220 Pode chamar comandos anteriores, pode lembrar argumentos para as ordes e así por diante. 434 00:30:46,760 --> 00:31:01,570 O mecanismo de historial se utiliza como parte serrilhado. 435 00:31:01,570 --> 00:31:07,390 Se especifica unha liña despois do signo de admiración, ha referirse a esa liña na lista do historial, 436 00:31:07,390 --> 00:31:11,910 que non será metendo agora, xa que é un tema completamente diferente. 437 00:31:11,910 --> 00:31:16,280 É posíbel especificar parte dunha liña. 438 00:31:16,280 --> 00:31:22,950 Entón! 03:02 sería o segundo argumento do número de orde 3. 439 00:31:22,950 --> 00:31:30,430 O acento circunflexo aquí nesta expresión representa o primeiro argumento. 440 00:31:30,430 --> 00:31:34,410 Se non darlle unha indicación de cal comando está referíndose, 441 00:31:34,410 --> 00:31:37,300 refírese ao mando inmediato anterior, 442 00:31:37,300 --> 00:31:41,990 eo acento circunflexo é un símbolo para o primeiro argumento. 443 00:31:41,990 --> 00:31:46,820 Porque é o acento circunflexo e non o número, non usar o colon, 444 00:31:46,820 --> 00:31:52,660 así! ^ significa que o primeiro argumento para a orde anterior. 445 00:31:52,660 --> 00:31:55,020 Un pouco confuso aquí. 446 00:31:55,020 --> 00:31:58,450 Neste caso, cando usa isto como unha definición de alias, 447 00:31:58,450 --> 00:32:04,650 a referencia historia remite para as ordes de que o alias se usa. 448 00:32:04,650 --> 00:32:08,470 Entón, iso vai volver un comando como unha operación de historia, 449 00:32:08,470 --> 00:32:11,810 senón como unha operación apelido refírese ao mando en que escribe, 450 00:32:11,810 --> 00:32:14,780 dicir, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Temos as comiñas aquí dentro. Cal é a barra invertida para? 452 00:32:20,240 --> 00:32:30,810 Neste caso, como noutros lugares, nós non queremos para realizar o mecanismo de historial 453 00:32:30,810 --> 00:32:33,680 mentres que a definición do alias. 454 00:32:33,680 --> 00:32:37,900 Se non tivésemos a barra invertida alí, o shell puxaria o primeiro argumento 455 00:32:37,900 --> 00:32:41,870 da orde dereita antes que foi esta orde apelido, o que nós non queremos. 456 00:32:41,870 --> 00:32:47,520 Queremos que este sexa construído para o comando alias para chamar un argumento máis tarde. 457 00:32:47,520 --> 00:32:53,550 As aspas non escapar un punto de admiración, a referencia historia. 458 00:32:53,550 --> 00:32:57,450 Quizais coñeza a expresión fuga significa cambiar o sentido da cousa. 459 00:32:57,450 --> 00:33:00,260 Neste caso, iso significa algo para deixar de ter un significado especial. 460 00:33:00,260 --> 00:33:03,030 Significado especial desde o punto de exclamación é historia. 461 00:33:03,030 --> 00:33:05,790 Fuxa e non ten ese significado. 462 00:33:05,790 --> 00:33:08,080 Citas non fagas iso; barra invertida fai. 463 00:33:08,080 --> 00:33:11,900 Entón, nós estamos realmente a usar dous niveis de escapar aquí. 464 00:33:23,500 --> 00:33:29,620 Vou pasar este comando para a outra fiestra sen escriba-lo 465 00:33:29,620 --> 00:33:35,210 usar estas operacións de edición, que pode considerar útil. 466 00:33:40,620 --> 00:33:42,460 Outra cousa aquí que eu vou te amosar. 467 00:33:42,460 --> 00:33:46,730 Se acaba de escribir apelido sen argumentos, dille a todos os seus argumentos. 468 00:33:46,730 --> 00:33:48,640 Iso é unha chea de apelidos eu xa tiña aquí 469 00:33:48,640 --> 00:33:53,400 ademais dos que eu teño usado aquí hoxe. 470 00:33:53,400 --> 00:34:00,220 Pero se eu simplemente escribir o nome dun alias, el me di o que significa. 471 00:34:00,220 --> 00:34:03,390 Nótese que as citas sumiron ea barra invertida foise. 472 00:34:03,390 --> 00:34:08,620 Esta cadea aquí é o resultado desa definición alias, 473 00:34:08,620 --> 00:34:12,199 e agora ten só! ^ nel. 474 00:34:12,199 --> 00:34:19,150 Isto vai mirar nas cordas de ficheiro para calquera cousa. 475 00:34:19,150 --> 00:34:34,900 Entón, se eu fai cordas grstrings_file, eu non darlle algo para mirar para alí, 476 00:34:34,900 --> 00:34:37,429 pero está mirando en cordas. 477 00:34:37,429 --> 00:34:42,330 Non atopou a palabra cordas nas cordas de arquivo, pero non atopa ABC. 478 00:34:42,330 --> 00:34:46,770 E non creo que. 479 00:34:46,770 --> 00:34:52,330 Entón, aquí estamos dando un argumento que bate na definición do alias, 480 00:34:52,330 --> 00:34:55,530 que está inserida nela. 481 00:34:55,530 --> 00:34:58,540 É onde esta expresión vén. 482 00:34:58,540 --> 00:35:00,240 Podes empregar máis que 1. 483 00:35:00,240 --> 00:35:03,170 O acento circunflexo é un símbolo para o primeiro argumento. 484 00:35:03,170 --> 00:35:07,510 Se quere usar un segundo argumento, vostede, entón, dicir: 2. 485 00:35:07,510 --> 00:35:11,250 Non hai ningún símbolo especial para o segundo argumento. 486 00:35:11,250 --> 00:35:14,790 E por que está a usar un numeral, que tería que usar o colon. 487 00:35:14,790 --> 00:35:17,220 Non é, no entanto, unha outra opción aquí. 488 00:35:17,220 --> 00:35:21,220 O sinal de dólar representa o último argumento. 489 00:35:21,220 --> 00:35:23,320 E por que se trata dun símbolo, pode omitir o colon. 490 00:35:23,320 --> 00:35:25,870 Polo tanto, sería o último argumento na lista. 491 00:35:25,870 --> 00:35:27,900 E hai tamén aquel. 492 00:35:27,900 --> 00:35:31,380 Asterisk significa que todos, polo que esta é a lista de argumentos completa, 493 00:35:31,380 --> 00:35:35,150 e, de novo, pode omitir o colonos, porque non é un numeral. 494 00:35:36,970 --> 00:35:39,950 Espero que estea todo observando todo isto. 495 00:35:39,950 --> 00:35:54,100 >> O mecanismo historia pode volver para as liñas anteriores na lista de histórico. 496 00:35:54,100 --> 00:36:01,370 Podes facelo nunha definición de alias. 497 00:36:01,370 --> 00:36:02,950 Nunca vin este feito. 498 00:36:02,950 --> 00:36:05,840 Tería o efecto de tirar as ordes anteriores da lista do historial 499 00:36:05,840 --> 00:36:08,130 cando executa o alias, o que podería ser diferentes comandos 500 00:36:08,130 --> 00:36:11,240 dependendo de cando e onde executalo. 501 00:36:11,240 --> 00:36:14,020 É concebible que pode querer saír desta referencia 502 00:36:14,020 --> 00:36:15,900 só para ver o que un comando anterior era. 503 00:36:15,900 --> 00:36:17,280 Eu nunca vin isto acontecer. 504 00:36:17,280 --> 00:36:19,970 Supoño que alguén pode querer, pero iso é moi improbable. 505 00:36:19,970 --> 00:36:26,480 Hai outra cousa aquí. 506 00:36:26,480 --> 00:36:33,060 Se usar esta referencia do tipo da historia, 507 00:36:33,060 --> 00:36:38,190 logo se usan só os argumentos para os que existe unha tal referencia. 508 00:36:38,190 --> 00:36:42,180 Se vostede ten unha definición de alias que non usar unha referencia do tipo da historia, 509 00:36:42,180 --> 00:36:44,060 se só se fai o inicio da orde 510 00:36:44,060 --> 00:36:46,520 e ten outros argumentos, entón calquera cousa que escriba despois que 511 00:36:46,520 --> 00:36:48,450 será engadido ao comando. 512 00:36:48,450 --> 00:36:52,040 Neste caso, o exemplo que eu só dei alí, foi utilizado o primeiro argumento; 513 00:36:52,040 --> 00:36:54,610 Non usamos calquera outro. 514 00:36:54,610 --> 00:36:57,960 Se outros argumentos fora dado na liña de comandos, eles non serían utilizados. 515 00:36:57,960 --> 00:37:04,630 Entón, se usa a referencia historia en todo, entón ten que usalo para obter calquera argumento. 516 00:37:04,630 --> 00:37:11,310 >> Hai outra cousa aquí eu só quero mencionar, en parte, entre parénteses, 517 00:37:11,310 --> 00:37:15,250 ou sexa, que este mecanismo de historia, co punto de exclamación 518 00:37:15,250 --> 00:37:18,010 vai volver para o C-shell de orixe. 519 00:37:18,010 --> 00:37:27,060 O tcsh introduciu operacións de historia 520 00:37:27,060 --> 00:37:30,910 que utilizan os tipos de ordes e cordas dos editores, 521 00:37:30,910 --> 00:37:33,650 ou Emacs ou vin. 522 00:37:33,650 --> 00:37:36,430 A miña opinión persoal é Emacs é moito máis doado de usar para esa finalidade 523 00:37:36,430 --> 00:37:39,390 mesmo se usa o vin para a edición regular. 524 00:37:39,390 --> 00:37:43,900 Existen varios comandos do Emacs, que agora están adaptados para a historia. 525 00:37:43,900 --> 00:37:46,410 Control P recibe a liña anterior na lista do historial. 526 00:37:46,410 --> 00:37:48,840 Outra Control P chegará o antes diso. 527 00:37:48,840 --> 00:37:50,540 A frecha para arriba fai o mesmo. 528 00:37:50,540 --> 00:37:54,190 Control N obtén o seguinte comando que xa teña rodado atrás nalgúns aspectos. 529 00:37:54,190 --> 00:37:55,880 Frecha para abaixo fai iso tamén. 530 00:37:55,880 --> 00:38:00,480 Pode mover á esquerda a dereita coas frechas e varias outras cousas. 531 00:38:00,480 --> 00:38:02,390 Isto pode facer uso do mecanismo de historia 532 00:38:02,390 --> 00:38:05,070 moito máis fácil do que usar a sintaxe punto de exclamación, 533 00:38:05,070 --> 00:38:07,930 pero non vai usar isto nunha definición de alias. 534 00:38:17,780 --> 00:38:20,020 Nós imos pasar por riba de que outra hora. 535 00:38:24,300 --> 00:38:25,810 >> Variables. 536 00:38:26,880 --> 00:38:29,510 Vostede sabe o que son variables en linguaxes de programación. 537 00:38:29,510 --> 00:38:31,680 As cunchas de te-los tamén. 538 00:38:31,680 --> 00:38:37,350 O C-shell usa o comando set para asignar variables, 539 00:38:37,350 --> 00:38:41,360 de xeito que define a variable dun valor de b - 540 00:38:41,360 --> 00:38:46,390 como dixen, unha definición inútil, pero unha ilustración de como este é utilizado. 541 00:38:48,790 --> 00:38:52,410 A orde set creará unha variable se aínda non existe. 542 00:38:55,270 --> 00:39:02,490 Os parámetros posicionais para shell scripts poden considerarse variables, 543 00:39:02,490 --> 00:39:10,750 pero o uso deles e as normas para eles son un pouco diferentes. 544 00:39:10,750 --> 00:39:14,320 Non pode asignar un valor a US $ 1 no curso dun guión. 545 00:39:14,320 --> 00:39:18,340 Vostede tería que definir unha nova variable para o efecto, algúns de vostedes querían. 546 00:39:23,000 --> 00:39:28,470 Escriba set sen argumentos e terá unha lista de todas as variables actualmente definidas. 547 00:39:28,470 --> 00:39:34,220 E imos para o meu outro shell aquí para ver o que teremos que facer. 548 00:39:34,220 --> 00:39:37,110 Unha lista moi longa alí, non? 549 00:39:37,110 --> 00:39:40,990 Ir a arriba un pouco. Olle para todo isto. 550 00:39:40,990 --> 00:39:44,330 Algunhas destas cousas son definidas automaticamente pola shell. 551 00:39:44,330 --> 00:39:49,320 O shell crea a variable e dálle un valor. 552 00:39:49,320 --> 00:39:52,730 Algúns deles son definidos pola casca, pero, a continuación, redefinida polo usuario 553 00:39:52,730 --> 00:39:54,820 segundo as súas preferencias. 554 00:39:54,820 --> 00:39:59,110 E algúns deles son creados polo usuario de acordo co que está a facer aquel día. 555 00:39:59,110 --> 00:40:01,880 Isto é só un conxunto sen argumentos. 556 00:40:06,920 --> 00:40:10,050 Hai unha característica raro aquí desa cousa. 557 00:40:10,050 --> 00:40:17,980 Non ten que ser tanto sen espazos entre signo igual eo nome da variable 558 00:40:17,980 --> 00:40:23,700 eo valor ou espazos en ambos os dous lados do signo igual, 559 00:40:23,700 --> 00:40:28,940 como neste. 560 00:40:35,620 --> 00:40:41,340 Iso non vai funcionar, e que realmente é un comando válido 561 00:40:41,340 --> 00:40:43,390 pero non vai facer o que quere. 562 00:40:43,390 --> 00:40:50,070 Este comando funcionará, porque se acaba de dicir e establecer un nome de variable 563 00:40:50,070 --> 00:40:54,890 sen signo igual ou conxunto e un nome de variable cun signo igual e ningún valor, 564 00:40:54,890 --> 00:40:57,770 que vai definir a variable a un valor nulo. 565 00:40:57,770 --> 00:41:00,120 Polo tanto, definir a = é un comando válido. 566 00:41:00,120 --> 00:41:04,370 A orde set pode definir máis dunha variable na mesma liña. 567 00:41:04,370 --> 00:41:11,240 Polo tanto, esta orde aquí ten o efecto de establecer tanto a eb para valores nulos. 568 00:41:11,240 --> 00:41:13,470 Probablemente non é o que quere. 569 00:41:13,470 --> 00:41:17,940 Este aquí, mencionado anteriormente, levará a un erro 570 00:41:17,940 --> 00:41:21,270 porque = b non é unha expresión válida. 571 00:41:21,270 --> 00:41:23,680 Un nome de variable non pode comezar co sinal de igual a igual. 572 00:41:26,760 --> 00:41:29,080 E hai estas cousas aquí. 573 00:41:29,080 --> 00:41:36,820 Os dous puntos foron usados ​​para seleccionar os argumentos de liña de historia, 574 00:41:36,820 --> 00:41:41,210 e poden ser usados ​​- e eu non quería entrar en diante - para modificar as cousas. 575 00:41:41,210 --> 00:41:44,480 Eles poden ser usados ​​para modificar as variables do escudo. 576 00:41:44,480 --> 00:41:49,050 Este aquí, $ a, ten un valor. 577 00:41:49,050 --> 00:41:55,040 : R vai despegar unha extensión. 578 00:41:55,040 --> 00:41:57,200 Unha extensión será nada tras un punto, 579 00:41:57,200 --> 00:41:59,200 un punto e calquera cousa que se lle segue, ao final dun ficheiro, 580 00:41:59,200 --> 00:42:03,230 só ao final da lista despois da última barra. 581 00:42:03,230 --> 00:42:05,480 Entón, eu teño aquí. 582 00:42:05,480 --> 00:42:10,730 unha é que. Que vai caer o. O. 583 00:42:10,730 --> 00:42:16,510 Se non hai ningunha extensión, só os camiños despois da última barra, non terá ningún efecto. 584 00:42:16,510 --> 00:42:27,480 a: h, esa expresión variable, vai despegar o último elemento dunha lista de directorios, 585 00:42:27,480 --> 00:42:29,660 de novo, só despois da última barra. 586 00:42:29,660 --> 00:42:33,160 Entón, / a / b / c convértese en / a / b, 587 00:42:33,160 --> 00:42:38,870 pero este é alterado porque o elemento despois a lista é nulo. 588 00:42:38,870 --> 00:42:43,070 Aquí hai algo que tamén quero salientar. 589 00:42:43,070 --> 00:42:46,770 Estes cualificados non buscar a existencia destes ficheiros. 590 00:42:46,770 --> 00:42:48,910 Miran só para cadeas. 591 00:42:48,910 --> 00:42:54,520 Estes destina-se a manexar nomes de ficheiros, nomes de camiño, 592 00:42:54,520 --> 00:42:57,520 pero poden ser usados ​​en calquera secuencia, mesmo se non é un nome de arquivo. 593 00:42:57,520 --> 00:42:58,920 E eles non miran para a existencia, 594 00:42:58,920 --> 00:43:03,550 polo que, se non hai tal ficheiro, / a / b / c, que aínda funciona. 595 00:43:03,550 --> 00:43:06,930 Se é de algunha utilidade é outra cuestión, pero aínda funciona. 596 00:43:06,930 --> 00:43:12,850 As variables son diferentes no Bourne. Nós imos chegar a iso máis tarde. 597 00:43:12,850 --> 00:43:18,240 Sinal de dólar se pode escapar así como o punto de exclamación e un asterisco. 598 00:43:18,240 --> 00:43:21,760 Sinal de dólar pode ser precedidos por unha barra invertida ou as aspas. 599 00:43:21,760 --> 00:43:24,790 Comiñas dobres teñen o efecto estraño en todas as cunchas 600 00:43:24,790 --> 00:43:28,690 de forzar a avaliación dun sinal de dólar expresión variable. 601 00:43:28,690 --> 00:43:31,960 Entón, se está a ser escapou dun xeito, as comiñas dobres pode ter o efecto 602 00:43:31,960 --> 00:43:34,380 de facer que ser avaliada de calquera maneira. 603 00:43:34,380 --> 00:43:37,090 Isto é un pouco confuso. 604 00:43:37,090 --> 00:43:43,740 Se hai varios niveis de fuga, como aspas dentro de comiñas dobres 605 00:43:43,740 --> 00:43:46,770 ou comiñas dobres dentro aspas, ten que probar a ver que ocorrerá 606 00:43:46,770 --> 00:43:49,520 a unha variable, se está a usar un. 607 00:43:49,520 --> 00:43:53,410 Estas dúas situacións - o dobre dentro de interior único, single do dúo - 608 00:43:53,410 --> 00:43:55,980 non necesariamente darlle o mesmo resultado. 609 00:44:02,520 --> 00:44:05,600 As variables de ambiente, variables C-shell conectados. 610 00:44:05,600 --> 00:44:08,340 As variables de ambiente tamén son variables en C-shell, 611 00:44:08,340 --> 00:44:11,250 e eles tamén son variables noutros shells tamén. 612 00:44:11,250 --> 00:44:15,230 O C-shell, son conxuntos distintos. 613 00:44:15,230 --> 00:44:18,130 As cousas que eu estaba dicindo antes son sobre variables shell. 614 00:44:18,130 --> 00:44:21,300 As variables de ambiente son un conxunto distinto de variables 615 00:44:21,300 --> 00:44:28,650 coa excepción dunha serie de variables que chamamos variables ligadas, 616 00:44:28,650 --> 00:44:30,640 que son moi importantes e nós imos entrar en quen máis tarde. 617 00:44:30,640 --> 00:44:34,950 As variables de ambiente son pasadas automaticamente 618 00:44:34,950 --> 00:44:41,800 de cunchas ou comandos que son executados a partir da súa cuncha. 619 00:44:41,800 --> 00:44:46,220 As outras cousas que non son. As variables shell, os apelidos non son. As variables de ambiente son. 620 00:44:46,220 --> 00:44:48,630 É por iso que nós os chamamos variables de ambiente, 621 00:44:48,630 --> 00:44:55,030 a idea é que o ambiente supera só o seu shell actual. 622 00:44:55,030 --> 00:45:00,510 Poden ser utilizados para definir as cousas para comandos. 623 00:45:00,510 --> 00:45:05,470 Aquí é un exemplo. Impresora, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Ambas variables poden definir unha impresora que un comando vai empregar para imprimir as cousas. 625 00:45:12,270 --> 00:45:16,500 Se ten varias impresoras arredor, pode querer poñer o que lle gusta. 626 00:45:16,500 --> 00:45:21,320 A razón pola que temos 2 variables é que diferentes conxuntos de comandos foron escritos 627 00:45:21,320 --> 00:45:23,870 usar estas distintas variables. 628 00:45:23,870 --> 00:45:25,910 Pode darlles valores diferentes. 629 00:45:25,910 --> 00:45:28,860 O máis probable é que vai dar a ambos o mesmo valor. 630 00:45:28,860 --> 00:45:35,840 Estas cousas funcionan porque os comandos que fan a impresión 631 00:45:35,840 --> 00:45:40,740 foron programados para examinar os valores destas variables. 632 00:45:42,200 --> 00:45:46,150 Se un programa non foron escritas desta forma, se fose escrito para facer outra cousa, 633 00:45:46,150 --> 00:45:48,280 a variable sería irrelevante. 634 00:45:48,280 --> 00:45:52,530 Así, o sistema operativo non está mirando para estas variables 635 00:45:52,530 --> 00:45:55,210 cada vez que se referir a unha impresora. 636 00:45:55,210 --> 00:45:59,090 Unha orde que fai impresión é ollar para estas variables se é programado desta forma. 637 00:46:11,030 --> 00:46:15,240 Estas variables son frecuentemente definidos nos seus arquivos de inicio 638 00:46:15,240 --> 00:46:19,440 pero non necesariamente. 639 00:46:19,440 --> 00:46:21,050 Pode define-los na liña de comandos. 640 00:46:21,050 --> 00:46:24,090 Poden ser definidos nun comando. 641 00:46:24,090 --> 00:46:28,740 Unha orde que executa algo pode ter a súa propia selección de variables - 642 00:46:28,740 --> 00:46:32,390 variables que son exclusivas dun paquete de software específico, por exemplo. 643 00:46:32,390 --> 00:46:36,740 Eles van ser definidas cando realizar este paquete. 644 00:46:39,690 --> 00:46:42,680 Como esas variables pasados ​​para un sub-shell? 645 00:46:42,680 --> 00:46:48,210 Cando un sub-shell está escrito, non escribe para esta área. 646 00:46:48,210 --> 00:46:53,260 A área da sub-shell que se dedica a variables de ambiente 647 00:46:53,260 --> 00:46:56,450 non é escrito polo sub-shell, que está escrito por copia. 648 00:46:56,450 --> 00:47:00,530 Cando fai unha orde común, como os comandos para imprimir ou o que sexa, 649 00:47:00,530 --> 00:47:03,840 comezan coa creación dun novo shell. 650 00:47:03,840 --> 00:47:06,190 O shell crea un shell e, a continuación, substitúe parte dela 651 00:47:06,190 --> 00:47:08,800 coa orde que está executando, o que é un pouco confuso, 652 00:47:08,800 --> 00:47:10,740 pero é así que estes comandos obter as variables de ambiente 653 00:47:10,740 --> 00:47:14,890 que, logo referirse a máis tarde. 654 00:47:21,920 --> 00:47:28,010 A orde aquí para definir o setenv variable. 655 00:47:28,010 --> 00:47:36,470 É así que definir. É 3 elementos: setenv, variable, valor. 656 00:47:36,470 --> 00:47:44,710 Se simplemente setenv sen argumentos, o que gañou? 657 00:47:47,220 --> 00:47:48,810 Unha lista de todas as variables. 658 00:47:48,810 --> 00:47:53,190 De novo, é unha lista longa e agradable e, neste caso, como nos outros, 659 00:47:53,190 --> 00:47:57,320 estas variables defínense en gran parte pola miña operación de rexistro polo propio shell 660 00:47:57,320 --> 00:47:59,740 e non por calquera cousa que eu fixen. 661 00:47:59,740 --> 00:48:03,580 Hai outro comando aquí, printenv. 662 00:48:07,520 --> 00:48:10,340 Isto tamén amosa o medio ambiente. 663 00:48:10,340 --> 00:48:15,240 Teña en conta esta última cousa aquí, editor = vin. 664 00:48:15,240 --> 00:48:21,120 Isto di que, se está a usar algo que chama un editor 665 00:48:21,120 --> 00:48:25,530 e eu non especificar un editor e el me permite a elección, me pode dar vin. 666 00:48:25,530 --> 00:48:37,280 E se eu fai EDITOR printenv? Dime o que é. 667 00:48:37,280 --> 00:48:41,340 Ben antes diso, houbo unha variable, MENOS. 668 00:48:41,340 --> 00:48:46,040 Estas son as súas opcións defaults cando executo a orde less, 669 00:48:46,040 --> 00:48:49,360 que exhibe os arquivos. 670 00:48:49,360 --> 00:48:55,910 Entón, se eu fai iso, printenv pode levar de 1 ou 0 argumento argumentos, 671 00:48:55,910 --> 00:48:58,070 non máis que 1. 672 00:49:01,800 --> 00:49:05,690 Hai outros comandos tamén, pero non imos entrar en todo o que hoxe. 673 00:49:05,690 --> 00:49:11,010 Lembre que foron os modificadores para as variables de shell como: h, 674 00:49:11,010 --> 00:49:14,350 que vai caer o último elemento dun camiño, 675 00:49:14,350 --> 00:49:17,950 ou: r, que vai caer unha extensión. 676 00:49:17,950 --> 00:49:23,110 Os que agora se aplican ás variables de ambiente tamén. Eles non usaron. 677 00:49:23,110 --> 00:49:24,960 Ela adoitaba ser que non podería ser modificado. Agora poden ser. 678 00:49:24,960 --> 00:49:29,190 É un dos avances coa evolución das cunchas ao longo dos anos. 679 00:49:29,190 --> 00:49:35,620 Estaba dicindo que as cunchas, como parte dos ambientes 680 00:49:35,620 --> 00:49:43,040 e variables shell no C-shell son, con algunhas excepcións, conxuntos distintos. 681 00:49:43,040 --> 00:49:46,790 Pode establecer unha variable de ambiente e unha variable de shell co mesmo nome. 682 00:49:46,790 --> 00:49:49,220 Eles serán variables diferentes, poden ter valores diferentes. 683 00:49:49,220 --> 00:49:53,090 Cambiar o valor dun non vai cambiar o valor do outro. 684 00:49:53,090 --> 00:49:58,070 Estas variables son todos avaliados co cifrão - $ a, $ o que quere. 685 00:49:58,070 --> 00:50:02,340 Así que se tes iso? Vostede sabe cal deles pode? 686 00:50:02,340 --> 00:50:04,520 Nos meus probas eu teño a variable shell, 687 00:50:04,520 --> 00:50:07,240 pero isto non é documentado e non pode contar con iso. 688 00:50:07,240 --> 00:50:10,270 Entón eu lle pregunto, é a creación de variables shell e medio ambiente 689 00:50:10,270 --> 00:50:13,490 cos mesmos nomes unha boa idea? Non Todo ben. 690 00:50:13,490 --> 00:50:17,460 Que son esas as principais excepcións en que as variables do ambiente e shell 691 00:50:17,460 --> 00:50:19,860 están ligados un ao outro? 692 00:50:19,860 --> 00:50:27,470 Existen estes 4. 693 00:50:32,030 --> 00:50:35,510 Carta Capital variable de ambiente TERM, 694 00:50:35,510 --> 00:50:41,540 desembolsar variable termo en letras pequenas, o tipo de emulación de terminal. 695 00:50:41,540 --> 00:50:47,430 Eu só vou pasar por riba aquí e eu vou facer eco, un comando utilidade aquí, 696 00:50:47,430 --> 00:50:52,560 $ $ TERM prazo. E alí. 697 00:50:52,560 --> 00:51:00,570 xterm é un tipo de terminal para fiestras exhibidas no Sistema X Window. 698 00:51:00,570 --> 00:51:04,330 xterm-cor é unha variación do que a que permite que as cores distintas. 699 00:51:04,330 --> 00:51:06,580 Por que é que imos configurar isto? ¿Que é iso bo? 700 00:51:06,580 --> 00:51:09,740 Comandos que reorganizar a pantalla como o editor 701 00:51:09,740 --> 00:51:13,680 enviar secuencias particulares, chamados de secuencias de escape, 702 00:51:13,680 --> 00:51:18,160 a un terminal ou unha xanela para reorganizar-lo e así por diante. 703 00:51:18,160 --> 00:51:20,990 Estas secuencias son diferentes para os diferentes tipos de terminais. 704 00:51:20,990 --> 00:51:23,100 Isto di-lle que usar. 705 00:51:23,100 --> 00:51:25,900 Ás veces, hai problemas alí. 706 00:51:25,900 --> 00:51:28,600 Pode querer cambiar isto. 707 00:51:28,600 --> 00:51:30,780 Se as cousas non están funcionando, por veces, o tipo de terminal está configurado mal, 708 00:51:30,780 --> 00:51:36,440 pode ser capaz de resolve-lo, redefinindo a variable prazo. 709 00:51:36,440 --> 00:51:43,420 Nestes casos, o cambio dunha variable, a variable de ambiente ou a variable de shell, 710 00:51:43,420 --> 00:51:45,970 debe cambiar o outro. 711 00:51:45,970 --> 00:51:50,970 Eu descubrín a través da experiencia que o cambio de prazo en maiúsculas 712 00:51:50,970 --> 00:51:54,060 non sempre cambiar shell variable termo en letras pequenas. 713 00:51:54,060 --> 00:51:55,550 Este é un erro. 714 00:51:55,550 --> 00:51:59,400 Eu non sei se isto é sempre certo. Na maioría das veces iso non é verdade, pero pode ser. 715 00:51:59,400 --> 00:52:02,490 Entón, se fai un cambio, pode comprobar iso. 716 00:52:02,490 --> 00:52:05,830 Non é sempre que teña que cambiar ese valor, pero de cando en vez fai. 717 00:52:05,830 --> 00:52:08,260 USUARIO variable de ambiente. 718 00:52:08,260 --> 00:52:12,070 Unha vez máis, variable de ambiente en letras maiúsculas, a Shell variable en letras pequenas. 719 00:52:12,070 --> 00:52:13,710 Este é o seu nome de usuario. 720 00:52:13,710 --> 00:52:16,730 É só en circunstancias moi excepcionais 721 00:52:16,730 --> 00:52:18,420 que quere cambiar isto. 722 00:52:18,420 --> 00:52:22,350 O seu nome de usuario é outra persoa, pode lanzar todo tipo de cousas. 723 00:52:22,350 --> 00:52:26,040 Directorio persoal, o directorio persoal do usuario. 724 00:52:26,040 --> 00:52:28,060 De novo, non quere cambiar isto. 725 00:52:28,060 --> 00:52:32,260 Repare en todos estes casos e ese que estamos a piques de cubrir, a variable de camiño, 726 00:52:32,260 --> 00:52:37,070 variable de ambiente é en maiúsculas ea variable shell conectado é en letras pequenas. 727 00:52:37,070 --> 00:52:39,240 Se cambia un, ten que cambiar a outro. 728 00:52:39,240 --> 00:52:45,960 Este tipo de conexión non pode ser establecida como non pode conectar dúas variables, 729 00:52:45,960 --> 00:52:50,570 Ademais destas catro, ea conexión destas variables non se pode desfacer, 730 00:52:50,570 --> 00:52:52,090 non pode separa-los. 731 00:52:52,090 --> 00:52:55,820 Entón, eses catro pares de variables son vinculadas. 732 00:52:55,820 --> 00:52:59,020 Eles sempre serán. Ningún outro será. 733 00:52:59,020 --> 00:53:05,720 Ademais, sería posible a creación de variables cos mesmos nomes 734 00:53:05,720 --> 00:53:07,780 dos tipos opostos. 735 00:53:07,780 --> 00:53:11,600 Podería facer un termo variable shell en letras pequenas 736 00:53:11,600 --> 00:53:14,990 ou unha variábel de entorno TERM en letras maiúsculas. 737 00:53:14,990 --> 00:53:19,040 Estas variables sería independente destas variables binarias 738 00:53:19,040 --> 00:53:20,780 e serían independentes unha da outra. 739 00:53:20,780 --> 00:53:23,780 Eu non podo imaxinar por que faría iso a menos que queira confundir a xente. 740 00:53:24,600 --> 00:53:29,730 Este aquí, variable de camiño, este é un moi importante. 741 00:53:29,730 --> 00:53:35,550 Outra cousa é que non pode haber casos 742 00:53:35,550 --> 00:53:40,430 de variables con nomes vinculados similares que non están ligados uns ós outros. 743 00:53:40,430 --> 00:53:45,000 Non pode haber variables, Shell e Shell, en letras maiúsculas e minúsculas. 744 00:53:45,000 --> 00:53:48,300 Con base nese nome, non sabe se esta variable é unha variable shell 745 00:53:48,300 --> 00:53:51,580 ou unha variable de ambiente, e eles non están ligados un ao outro. 746 00:53:51,580 --> 00:53:55,300 Entón, este tipo de parellas de nomes non implica variables ligadas. 747 00:53:55,300 --> 00:53:58,830 A variable de camiño, que eu estaba mostrando antes, 748 00:53:58,830 --> 00:54:01,880 é unha lista de nomes de camiño no que o shell busca por comandos. 749 00:54:01,880 --> 00:54:12,320 Imos acabar coa esta xanela aquí e imos facer echo $ PATH, maiúsculas - 750 00:54:12,320 --> 00:54:20,230 variable de ambiente - echo $ camiño, letras pequenas - Shell variable. 751 00:54:20,230 --> 00:54:24,980 Teña en conta que a lista de directorios é o mesmo. Estes están vinculados. 752 00:54:24,980 --> 00:54:26,590 Cambia un, cambiar o outro. 753 00:54:26,590 --> 00:54:32,970 Na variable de ambiente os elementos están separados por dous puntos. Teña en conta que. 754 00:54:32,970 --> 00:54:35,130 As variables shell son separados por espazos. 755 00:54:35,130 --> 00:54:38,760 Esta variable de ambiente é unha única secuencia. 756 00:54:38,760 --> 00:54:41,480 A variable de shell é unha matriz. 757 00:54:41,480 --> 00:54:43,490 The Bourne shell non ten arrays. 758 00:54:43,490 --> 00:54:46,600 Bash fai, pero iso xa é unha parte fixa da shell. 759 00:54:46,600 --> 00:54:48,660 Esta é unha secuencia única e non un array. 760 00:54:48,660 --> 00:54:50,420 O C-shell sempre tivo matrices. 761 00:54:50,420 --> 00:54:52,630 As matrices son moito máis fáciles de traballar. 762 00:54:52,630 --> 00:54:54,400 Pode referirse a partes del. 763 00:54:54,400 --> 00:55:02,350 $ Camiño Entón echo [1] e eu recibín / usr / bin, o primeiro elemento. 764 00:55:02,350 --> 00:55:09,950 Unha vez máis, lembre-se sinal de dólar representa o último elemento da lista de histórico. 765 00:55:09,950 --> 00:55:16,850 Qué acontece alí? Tentou atopar cifrão como un símbolo variable. 766 00:55:16,850 --> 00:55:20,850 Eu escapar. Oops. Non levaría o que quere. 767 00:55:20,850 --> 00:55:23,690 Algunhas destas cousas non funcionan tan ben. 768 00:55:23,690 --> 00:55:28,140 Quizais nós imos deixar isto para fóra. 769 00:55:28,140 --> 00:55:36,980 Asterisk refírese a cousa toda, pero é o que gañou se non especifica un elemento. 770 00:55:36,980 --> 00:55:46,170 Outra forma que as variables de matriz poden ser manipuladas, 771 00:55:46,170 --> 00:55:49,500 número de elementos de alí, 7 elementos. 772 00:55:49,500 --> 00:55:53,410 Aquí poñemos o sinal de libra antes do nome da variable. 773 00:55:53,410 --> 00:55:58,280 Aquí está un máis. Engade un punto de interrogación alí. 774 00:55:58,280 --> 00:56:03,170 Isto é un valor lóxico. Isto indica que a variable existe. 775 00:56:03,170 --> 00:56:05,160 É outra forma de traballar con variables. 776 00:56:05,160 --> 00:56:06,660 Isto, por certo, non ten que ser unha variable de matriz. 777 00:56:06,660 --> 00:56:08,210 Isto podería ser calquera variable. 778 00:56:08,210 --> 00:56:11,840 E se eu fai iso, non hai tal variable e eu recibín un 0. 779 00:56:11,840 --> 00:56:14,990 Outra pequena cousa alí sobre as avaliacións de variables. 780 00:56:23,670 --> 00:56:32,950 Volver a este aquí, se por algún motivo quería traballar con esta 781 00:56:32,950 --> 00:56:37,990 ao contrario de traballar coa matriz, a variable de shell, 782 00:56:37,990 --> 00:56:41,470 hai comandos que poden separar estas cousas baseado no colonos. 783 00:56:41,470 --> 00:56:44,080 En realidade, se está indo a estar a facer iso no shell Bash, posiblemente, 784 00:56:44,080 --> 00:56:47,110 algún tipo de script, que sería, probablemente, como faría. 785 00:56:47,110 --> 00:56:50,350 Pero no C-shell é moito máis doado de usar a matriz. 786 00:56:50,350 --> 00:56:58,250 O shell Bourne, as variables son asignados por unha única expresión como esta, 787 00:56:58,250 --> 00:57:01,760 como a forma que pode asignar unha variable nunha linguaxe de programación, 788 00:57:01,760 --> 00:57:05,110 e aquí non debe haber espazos. 789 00:57:05,110 --> 00:57:09,110 É necesario que sexa só unha cadea. 790 00:57:09,110 --> 00:57:14,980 Nos shells Bourne do tipo, as variables son variables shell. 791 00:57:14,980 --> 00:57:19,250 As variables de ambiente son un subconxunto das variables shell. 792 00:57:19,250 --> 00:57:24,060 Distínguense das variables non ambiente a través da exportación. 793 00:57:24,060 --> 00:57:28,860 A orde para facelo é a exportación, como impresora exportación. 794 00:57:28,860 --> 00:57:34,930 Se tivésemos que definir tal variable, 795 00:57:34,930 --> 00:57:38,480 se quería un comando de impresión para atopalo, tería que ser unha variable de ambiente, 796 00:57:38,480 --> 00:57:40,730 e é así que nós facelo un. 797 00:57:40,730 --> 00:57:42,090 Aquí hai algo medio confuso. 798 00:57:42,090 --> 00:57:50,430 Esta expresión, a exportación para o medio ambiente, deriva deste concepto shell Bourne, 799 00:57:50,430 --> 00:57:54,520 e aínda que a expresión é usada en descricións do C-shell, 800 00:57:54,520 --> 00:57:57,920 onde non existe tal orde como de exportación. 801 00:57:57,920 --> 00:58:06,200 Se acaba de dicir exportación por si só, ten unha lista de exportación - 802 00:58:06,200 --> 00:58:10,620 Entón, se eu simplemente exportar aquí, non hai tal cousa. 803 00:58:13,620 --> 00:58:15,200 Ok, alí imos nós. 804 00:58:15,200 --> 00:58:17,010 Esas cousas, de feito, tamén son definidos pola shell. 805 00:58:17,010 --> 00:58:19,400 Non definir calquera destes por min mesmo. 806 00:58:19,400 --> 00:58:23,550 A cuncha fai todo tipo de cousas por si só. 807 00:58:23,550 --> 00:58:26,650 Debe facer as cousas automaticamente. 808 00:58:30,240 --> 00:58:36,880 No Bash ou Korn, pode executar un comando coma este, 809 00:58:36,880 --> 00:58:42,000 que ambos dan unha variable dun valor e export-lo en un comando. 810 00:58:42,000 --> 00:58:46,150 O shell Bourne eles teñen que ser comandos separados como unha exportación. 811 00:58:46,150 --> 00:58:48,410 Aquí é outro aspecto que é confuso. 812 00:58:48,410 --> 00:58:52,220 A orde set no C-shell define as variables 813 00:58:52,220 --> 00:58:55,550 e sen argumentos lle di que os valores das variables son. 814 00:58:55,550 --> 00:59:01,140 No shell bash, o comando set sen argumentos fai o mesmo, 815 00:59:01,140 --> 00:59:03,580 pero con argumentos que fai algo completamente diferente. 816 00:59:03,580 --> 00:59:06,200 Entón, eses son os varios argumentos aquí. 817 00:59:06,200 --> 00:59:10,460 Algúns destes son variables de ambiente, algúns deles son variables shell. 818 00:59:10,460 --> 00:59:13,200 Todos eles son variables shell verdade. Algúns deses son variables de ambiente. 819 00:59:15,690 --> 00:59:23,920 A orde set con argumentos poden ser usados ​​para operar 820 00:59:23,920 --> 00:59:28,220 sobre os parámetros posicionais para un guión, 821 00:59:28,220 --> 00:59:33,910 que é un xeito de facelos todos dunha vez. 822 00:59:33,910 --> 00:59:36,150 Nós realmente non podemos entrar nese hoxe. 823 00:59:36,150 --> 00:59:39,580 Tamén se pode usar para cambiar o comportamento do depósito. 824 00:59:39,580 --> 00:59:46,700 Particularmente en Bash existen variables que han determinar o xeito no que o shell se comporta. 825 00:59:46,700 --> 00:59:51,310 Logo tamén só esta orde que se pode ver, esta orde. 826 00:59:51,310 --> 00:59:59,050 Maquetada seguido variables e tipos de variables se usa nos shells Korn e Bash. 827 00:59:59,050 --> 01:00:04,970 Non é obrigatorio, pero se pode usar para restrinxir os valores de variables, 828 01:00:04,970 --> 01:00:08,400 que pode ser útil para evitar erros, e é bastante común. 829 01:00:08,400 --> 01:00:11,640 Entón, eu só estou mencionando que en caso de velo en algún lugar. 830 01:00:17,290 --> 01:00:19,160 A orde onde. 831 01:00:19,160 --> 01:00:22,490 Lembra que eu mencionen anteriormente a orde onde o C-shell, 832 01:00:22,490 --> 01:00:28,750 que pode dicir a localización dun camiño de comandos. 833 01:00:28,750 --> 01:00:32,580 Aquí está a substitución de comandos. 834 01:00:32,580 --> 01:00:41,900 Ten que atopar o teclado en algún lugar un personaxe que se parece con isto. 835 01:00:41,900 --> 01:00:44,910 A localización do teclado vai variar. 836 01:00:44,910 --> 01:00:47,050 Chamamos iso crase. É aproximadamente o tamaño dunha cita. 837 01:00:47,050 --> 01:00:48,720 El vai de esquerda superior á dereita inferior. 838 01:00:48,720 --> 01:00:52,690 Aquí no meu teclado Mac é na esquina superior esquerda. 839 01:00:52,690 --> 01:00:58,150 Este carácter pode ser usado para executar un comando dentro dun comando. 840 01:00:58,150 --> 01:01:03,400 Se ten unha expresión dentro crase, 841 01:01:03,400 --> 01:01:07,080 esta expresión é un comando, é executado. 842 01:01:07,080 --> 01:01:09,010 A saída do comando 843 01:01:09,010 --> 01:01:11,980 é, entón, substituído por toda expresión backquote 844 01:01:11,980 --> 01:01:16,110 dentro dun comando máis longo que executa con que a produción 845 01:01:16,110 --> 01:01:22,010 como parte da súa serie de argumentos e así por diante. 846 01:01:22,010 --> 01:01:28,640 Aquí está o comando que usa isto. 847 01:01:28,640 --> 01:01:32,340 Imos demostrar o funcionamento aquí. 848 01:01:44,980 --> 01:01:49,090 Imos aquí, aproveitar os crase. 849 01:01:49,090 --> 01:01:54,410 Control A me chega ao inicio da liña coa sintaxe de edición Emacs. 850 01:01:54,410 --> 01:02:00,380 Ata agora, o camiños é o que fai, 851 01:02:00,380 --> 01:02:05,040 pero cando fago iso como este, a continuación, liga na lista de nomes de camiños 852 01:02:05,040 --> 01:02:08,750 no lugar da expresión backquote todo e corre ls-l sobre eles. 853 01:02:08,750 --> 01:02:11,120 Kind of cómodo, non é? 854 01:02:11,120 --> 01:02:14,860 Entón, iso é unha cousa legal. É así que funciona crase. 855 01:02:14,860 --> 01:02:17,560 Agora imos descender un pouco máis. 856 01:02:17,560 --> 01:02:22,050 Estes son alias. En realidade, eu usalos. 857 01:02:22,050 --> 01:02:26,410 Vou tentar conseguir isto en con unha operación de edición. 858 01:02:34,900 --> 01:02:36,900 Okay. 859 01:02:36,900 --> 01:02:39,630 Agora imos ver como estas definicións saíu. 860 01:02:39,630 --> 01:02:44,930 alcume LWH me dicindo como é definido. 861 01:02:44,930 --> 01:02:51,210 Lembra que non é máis que iso, pero os presupostos externas foron retiradas 862 01:02:51,210 --> 01:02:53,750 eo punto de exclamación é eliminado. 863 01:02:53,750 --> 01:02:58,940 *, A lista completa de todos os argumentos. 864 01:02:58,940 --> 01:03:03,580 Nunha definición de alias será aplicado de volta para onde eu uso iso. 865 01:03:03,580 --> 01:03:10,620 LWH ksh bash. Okay. 866 01:03:10,620 --> 01:03:13,960 Vexa como funciona isto? Tanto me aforra algún dixitación. 867 01:03:13,960 --> 01:03:16,440 Imos subir un pouco só para mencionar outra cousa aquí. 868 01:03:19,150 --> 01:03:23,120 Teña en conta aquí esas distintas cunchas. Eu debería ter mencionado iso antes. 869 01:03:23,120 --> 01:03:36,060 A csh ten un 2 aquí e así que fai / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Poderiamos establecer por outros medios que aqueles son realmente o mesmo ficheiro. 871 01:03:39,870 --> 01:03:43,150 Lembre que eu estaba a dicir, se escribir sh comeza bash. 872 01:03:43,150 --> 01:03:47,390 Escriba iso e conseguir isto. 873 01:03:47,390 --> 01:03:51,730 Pero os que non están conectados. Os que os solteiros alí. 874 01:03:51,730 --> 01:03:54,910 E iso non é o tipo de ficheiro que pode chamar outra. 875 01:03:54,910 --> 01:03:59,460 Polo tanto, estas son arquivos separados, sendo que os C-shell son o mesmo ficheiro. 876 01:03:59,460 --> 01:04:03,640 Volver aquí abaixo, o outro aquí, este alias, 877 01:04:03,640 --> 01:04:09,090 teña en conta que está a ser executado esta orde, arquivo. 878 01:04:09,090 --> 01:04:13,810 Ese apelido que corre. Arquivo informa o tipo dun ficheiro. 879 01:04:13,810 --> 01:04:20,330 Festa ksh Entón FWH. Okay. 880 01:04:20,330 --> 01:04:23,230 Esta é a saída do comando subido. 881 01:04:23,230 --> 01:04:24,630 Eu non sei se vostede sabe o que iso significa aquí, 882 01:04:24,630 --> 01:04:26,750 Macho-O binario universal con 2 arquitecturas. 883 01:04:26,750 --> 01:04:30,470 Hai dous posibles tipos de procesadores en Mac, 884 01:04:30,470 --> 01:04:34,780 e algúns programas foron escritos para poder realizar con ambos, 885 01:04:34,780 --> 01:04:37,950 eo mando arquivo pode determinar que, de xeito que é o que esta significa. 886 01:04:37,950 --> 01:04:40,660 Ambos ficheiros foron escritos desa forma. 887 01:04:40,660 --> 01:04:43,760 Así, vemos como o alias funciona, ver como a crase funciona, 888 01:04:43,760 --> 01:04:48,640 vemos como os ls ficheiro reais ou ficheiro funciona. 889 01:04:52,050 --> 01:04:57,000 Isto pode non funcionar. Probe ", onde onde" e "LWH onde". Ok, imos tentar iso. 890 01:04:57,000 --> 01:05:01,040 onde para onde. 891 01:05:01,040 --> 01:05:03,500 onde é un shell built-in. 892 01:05:03,500 --> 01:05:06,970 Teña en conta que antes amosamos que Bash non tiña onde. 893 01:05:06,970 --> 01:05:10,080 Se insire onde no shell bash, recibe unha mensaxe de erro. 894 01:05:10,080 --> 01:05:12,540 É só unha parte da cortiza en vez de ser un comando separado. 895 01:05:12,540 --> 01:05:20,000 Qué acontece se eu escribir LWH buscar onde? Mira o que acontece alí. 896 01:05:20,000 --> 01:05:22,850 Ran onde onde, teño esa saída e, a continuación, intentou correr ls 897 01:05:22,850 --> 01:05:25,600 como l de onde é un shell built-in. 898 01:05:25,600 --> 01:05:28,790 onde está aí, pero os outros non existen. 899 01:05:28,790 --> 01:05:32,090 Ningún deles existe, en realidade. 900 01:05:32,090 --> 01:05:35,560 De xeito que non sempre funciona, e tamén ilustra como algunhas cousas 901 01:05:35,560 --> 01:05:39,580 non fai exactamente o que podería pensar. 902 01:05:40,930 --> 01:05:43,010 Imos descender un pouco máis aquí. 903 01:05:44,890 --> 01:05:54,760 Iso aquí é en Bash. Esta é tamén a substitución de comandos como a crase. 904 01:05:54,760 --> 01:06:05,280 Pero a diferenza de crase, usa este estilo variable. 905 01:06:05,280 --> 01:06:09,860 Hai unha serie de frases que comezan cun cifrão, 906 01:06:09,860 --> 01:06:16,070 e cando estes non son variables, eles prestado o uso do signo de dólar 907 01:06:16,070 --> 01:06:19,570 para indicar a expresión de calquera tipo. 908 01:06:19,570 --> 01:06:23,550 Isto pode estar entre parénteses ou corchetes ou parénteses dobres, 909 01:06:23,550 --> 01:06:26,320 que ten unha finalidade diferente. 910 01:06:26,320 --> 01:06:29,500 Solteiro parénteses aquí son unha substitución de comandos, así como os crase. 911 01:06:29,500 --> 01:06:32,720 Parénteses Casal é realmente unha operación aritmética. 912 01:06:32,720 --> 01:06:35,380 Hai outras sintaxe, outras operacións. 913 01:06:35,380 --> 01:06:41,520 Sintaxe crase está dispoñible en Bash. 914 01:06:41,520 --> 01:06:46,780 Con todo, esta é preferible. É moito máis fácil de ler e permite o asentamento. 915 01:06:46,780 --> 01:06:51,300 Pode que dentro $ (comandos) outro mando, 916 01:06:51,300 --> 01:06:54,590 algo así como - 917 01:07:14,560 --> 01:07:18,210 Recibe unha lista alí. 918 01:07:18,210 --> 01:07:21,670 Iso funcionaría se eu tivese a crase tamén. 919 01:07:32,050 --> 01:07:38,470 E se eu queira facer algo parecido - 920 01:08:03,390 --> 01:08:06,430 Probablemente non vai realmente usar esta orde, 921 01:08:06,430 --> 01:08:14,160 pero esta substitución mando interior ecoa os nomes de todos os ficheiros comezando cun, 922 01:08:14,160 --> 01:08:18,229 entón que é executado ls-l neses arquivos, 923 01:08:18,229 --> 01:08:20,500 e logo, este só ecoa a saída. 924 01:08:21,729 --> 01:08:24,479 Probablemente non vai facelo, tiña acaba de facer o eco ou ls, 925 01:08:24,479 --> 01:08:29,450 pero iso mostra como a nidificación de comandos funciona. 926 01:08:29,450 --> 01:08:34,380 Entón, só outra característica aquí. 927 01:08:34,380 --> 01:08:37,450  Eu mencionar que antes, que cando ten onde o C-shell, 928 01:08:37,450 --> 01:08:42,770 escriba obras nas cunchas Bourne do tipo para atopar comandos. 929 01:08:48,939 --> 01:08:52,270 Ordes internos, o que eu estaba dicindo alí. 930 01:08:52,270 --> 01:08:54,640 As ordes son parte do shell, como onde. 931 01:08:54,640 --> 01:08:59,880 Cando o shell executa unha orde como ls, el localiza-lo a través do camiño, 932 01:08:59,880 --> 01:09:03,029 atopa-lo nalgún directorio nalgún lugar, 933 01:09:03,029 --> 01:09:05,800 le-se que a memoria, crea un novo shell, 934 01:09:05,800 --> 01:09:08,960 le o comando ls ou o que quere para o shell 935 01:09:08,960 --> 01:09:11,450 onde as variables de entorno xa están localizados, 936 01:09:11,450 --> 01:09:14,000 e logo, trasládase a execución a el. 937 01:09:14,000 --> 01:09:18,319 Built-in de comandos, o código para que a orde está dentro da casca, 938 01:09:18,319 --> 01:09:21,460 para que o shell só comeza a realizar parte do seu propio código. 939 01:09:21,460 --> 01:09:24,569 onde está o tal comando. El realmente está máis rápido. 940 01:09:24,569 --> 01:09:28,380 Non ten que ler algo na memoria, que xa está na memoria. 941 01:09:28,380 --> 01:09:32,460 Ordes internos sempre teñen preferencia sobre as ordes do mesmo nome. 942 01:09:32,460 --> 01:09:36,050 As ordes que están en directorios no camiño pode ter o mesmo nome, 943 01:09:36,050 --> 01:09:39,090 ordes en distintos directorios, arquivos en directorios diferentes. 944 01:09:39,090 --> 01:09:41,740 O que ocorre no inicio do camiño é o que vai conseguir. 945 01:09:41,740 --> 01:09:43,770 Se non o houbera un comando embutido, sempre busca-la. 946 01:09:43,770 --> 01:09:47,890 Non hai xeito de darlle unha prioridade menor que unha orde no camiño. 947 01:09:47,890 --> 01:09:54,140 Se desexa obter este comando camiño, podes escribir a ruta completa. 948 01:09:54,140 --> 01:09:55,850 Se houbese unha orde, onde a ruta algures, 949 01:09:55,850 --> 01:09:58,440 podes escribir / bin / onde e que obtelo. 950 01:09:58,440 --> 01:10:01,800 Se non queres escribir todo o camiño, pode definir un alias. 951 01:10:01,800 --> 01:10:06,310 En realidade, se deu o alias do mesmo nome que a orde incorporado, iria traballar 952 01:10:06,310 --> 01:10:08,790 porque a definición do alias é valorada 953 01:10:08,790 --> 01:10:13,220 antes do shell determina que é un comando embutido, que debe ser executado. 954 01:10:18,810 --> 01:10:23,440 Entón iso está un pouco máis complicado, con algúns comandos aquí. 955 01:10:23,440 --> 01:10:29,880 O caso de algúns comandos son realmente comandos embutidos no e no camiño. 956 01:10:29,880 --> 01:10:34,140 Un deles é o eco, a orde usei só un pouco detrás destes exemplos. 957 01:10:34,140 --> 01:10:37,410 Eco é un comando no camiño e é en cada cuncha. 958 01:10:37,410 --> 01:10:40,580 Non necesariamente todos se comportan do mesmo xeito. 959 01:10:40,580 --> 01:10:42,970 Foi orixinalmente un comando único no camiño. 960 01:10:42,970 --> 01:10:45,280 Foi construído para as cunchas máis tarde. 961 01:10:45,280 --> 01:10:48,080 Porque hai opcións que dependen do medio 962 01:10:48,080 --> 01:10:52,970 e as opcións de liña de comandos, as ordes internos 963 01:10:52,970 --> 01:10:57,030 foron escritos para funcionar o mesmo que a orde que estaba no camiño, 964 01:10:57,030 --> 01:10:59,670 é improbable que sería escrito desa forma 965 01:10:59,670 --> 01:11:01,720 se a orde xa non fora escrito para o camiño. 966 01:11:01,720 --> 01:11:06,180 Entón, iso ten efectos secundarios. A súa historia ten efectos aquí. 967 01:11:06,180 --> 01:11:08,380 Hai opcións alí. 968 01:11:14,280 --> 01:11:23,060 Hai tamén unha opción definida por unha variable no tcsh chamado echo_style. 969 01:11:23,060 --> 01:11:27,700 Esta é unha desas variables que poden cambiar a forma que ecoam obras. 970 01:11:27,700 --> 01:11:30,910 Hai outros casos en que pode asignar unha variable 971 01:11:30,910 --> 01:11:36,290 que cambia o xeito no que a operación de shell, incluíndo unha orde integrado, funciona. 972 01:11:36,290 --> 01:11:38,130 Non afectará calquera outra cousa 973 01:11:38,130 --> 01:11:40,640 xa que outros comandos non teñen acceso ás variables shell, 974 01:11:40,640 --> 01:11:42,090 só as variables de ambiente. 975 01:11:42,090 --> 01:11:45,360 Pero as operacións de shell pode ler as variables de shell. 976 01:11:45,360 --> 01:11:50,710 Iso non vai funcionar para csh. Isto é só tcsh. Esa é unha das melloras. 977 01:11:58,540 --> 01:12:04,620 Análise de secuencias ten cando se avalía metacaracteres 978 01:12:04,620 --> 01:12:08,140 cando se avalía as variables, alias, referencias de historia. 979 01:12:08,140 --> 01:12:11,830 Hai unha secuencia específica para estas cousas. 980 01:12:11,830 --> 01:12:13,730 Se fai as cousas dunha determinada secuencia 981 01:12:13,730 --> 01:12:16,080 e chega a algo que é unha expresión dunha especie 982 01:12:16,080 --> 01:12:20,650 que xa ten valorado, non pode avaliar-lo novo. 983 01:12:20,650 --> 01:12:24,520 Se recibe-lo, el só vai pasar os personaxes. 984 01:12:24,520 --> 01:12:29,920 Entón, se a avaliación dalgunhas expresións, como substitución de comandos 985 01:12:29,920 --> 01:12:36,850 ou variable ou o que dá orixe a unha expresión 986 01:12:36,850 --> 01:12:39,240 que quere ser avaliado, 987 01:12:39,240 --> 01:12:42,510 que só funcionará se que a avaliación ten lugar máis tarde na secuencia. 988 01:12:42,510 --> 01:12:45,010 Espero que eu estou sendo claro alí. 989 01:12:45,010 --> 01:12:50,460 Esta secuencia de análise, unha operación no C-shell, 990 01:12:50,460 --> 01:12:56,490 non é o mesmo para os comandos internos como para os non incorporados comandos. 991 01:12:56,490 --> 01:12:58,890 Eu non estou seguro sobre Bash alí. 992 01:12:58,890 --> 01:13:02,450 Por exemplo, se unha variable shell produciu unha referencia historia, 993 01:13:02,450 --> 01:13:04,230 probablemente non estaba a volver na historia. 994 01:13:04,230 --> 01:13:06,010 Sería só obter o signo de admiración. 995 01:13:06,010 --> 01:13:08,840 De feito, podemos só tentar iso agora. 996 01:13:09,720 --> 01:13:18,240 definir a = e nós imos ter que poñer iso aí. 997 01:13:30,690 --> 01:13:34,580 Oh, espera. Sentímolo. Eu fixen iso no Bash. Quería facelo aquí. 998 01:13:53,470 --> 01:13:56,080 Véxase, por iso, non valorou que a referencia historia 999 01:13:56,080 --> 01:14:00,520 porque xa pasara o punto de avaliar expresións de historia 1000 01:14:00,520 --> 01:14:02,720 cando se valorou a variable. 1001 01:14:02,720 --> 01:14:05,550 Entón, iso é un efecto de análise. 1002 01:14:05,550 --> 01:14:08,760 E, de novo, comandos internos non están feitas da mesma forma. 1003 01:14:08,760 --> 01:14:11,230 Todo ben. Imos ao seguinte aquí. 1004 01:14:11,230 --> 01:14:16,060 Este destino se a ser unha liña, pero está facendo-se máis fácil de ler. 1005 01:14:19,130 --> 01:14:21,530 O que isto fai? 1006 01:14:21,530 --> 01:14:28,640 Debe lembrar de que podemos avaliar asteriscos como curinga filename, 1007 01:14:28,640 --> 01:14:33,890 e hai outros comodíns de nomes de ficheiros como o punto de interrogación e expresións de corchetes. 1008 01:14:33,890 --> 01:14:39,000 Este tipo de avaliación se chama englobamento. 1009 01:14:39,000 --> 01:14:46,290 definir noglob a comezos deste comando di para non facelo. 1010 01:14:46,290 --> 01:14:53,370 noglob unset di volver facelo. 1011 01:14:53,370 --> 01:14:56,440 Nótese que conxunto globo non tería ese efecto. 1012 01:14:56,440 --> 01:15:00,800 En linguaxe común, establecer globo ou noglob unset semella equivalente, 1013 01:15:00,800 --> 01:15:03,290 pero aquí non é. É noglob desactivado. 1014 01:15:05,120 --> 01:15:07,910 Agora TSET. tset representaba conxunto terminal. 1015 01:15:07,910 --> 01:15:11,840 Non se usa, que moitas veces agora, pero antes de que os sistemas de fiestras tornouse dispoñible 1016 01:15:11,840 --> 01:15:15,760 e tiña un único terminal, pode ter que determinar o tipo. 1017 01:15:15,760 --> 01:15:18,700 E se algo estaba vindo dunha rede Ethernet ou da rede, 1018 01:15:18,700 --> 01:15:21,120 pode querer dicir que é un VT100. 1019 01:15:21,120 --> 01:15:26,630 VT100 é unha especie de patrón na empresa terminal. Vén da terminal DEC. 1020 01:15:26,630 --> 01:15:35,270 Se acaba de facer disco - entender iso? Isto remóntase un longo camiño, non é? 1021 01:15:35,270 --> 01:15:39,520 Entón, se nós simplemente TSET aquí, 1022 01:15:39,520 --> 01:15:45,250 se eu só fago tset, está redefinindo o meu terminal, pero non viu nada. 1023 01:15:45,250 --> 01:15:47,340 El realmente non cambia nada. 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 PRAZO setenv xterm-color. 1027 01:15:53,350 --> 01:15:57,080 Xa sabemos que o termo foi creado desta maneira, de xeito que non se alterou. 1028 01:15:57,080 --> 01:15:58,860 Esa é a forma que quere facelo. 1029 01:15:58,860 --> 01:16:07,080 Pero teña en conta que esta orde, tset-s, só saída destes comandos. Non executa-los. 1030 01:16:07,080 --> 01:16:09,770 Non executa estes comandos, pero a saída deles. 1031 01:16:09,770 --> 01:16:13,650 Polo tanto, este se destina a producir comandos que se levará a cabo. 1032 01:16:13,650 --> 01:16:16,360 Vostede recorda da orde nese arquivo que acaba de demostrar que tiña un Q nel. 1033 01:16:16,360 --> 01:16:18,910 Entón, imos facelo. 1034 01:16:18,910 --> 01:16:23,750 O Q suprime algunha saída, pero iso non importa aquí, como se pode ver. 1035 01:16:23,750 --> 01:16:27,980 Eu só estou facendo isto para demostrar que iso non importaba. 1036 01:16:27,980 --> 01:16:31,870 Isto está en sintaxe crase. 1037 01:16:31,870 --> 01:16:35,340 Nótese a crase aquí, crase aquí. 1038 01:16:35,340 --> 01:16:37,680 Estou omitindo isto aquí. 1039 01:16:37,680 --> 01:16:39,570 Estes son casos de dicir o que facer 1040 01:16:39,570 --> 01:16:42,050 no caso de certos tipos de terminais - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, rede dial-up, o que ten. 1042 01:16:45,400 --> 01:16:48,050 Non importa aquí, porque non estamos realmente facendo calquera destas cousas. 1043 01:16:48,050 --> 01:16:49,720 Eu só estou ilustrando o comando. 1044 01:16:49,720 --> 01:16:55,170 Se eu fai iso coa crase, que é o que eu vou conseguir? 1045 01:16:55,170 --> 01:17:00,210 Ademais, teña en conta aquí que este incluíu a noglob conxunto ea noglob desactivado, 1046 01:17:00,210 --> 01:17:02,630 Polo tanto, estas son agora redundantes na definición. 1047 01:17:02,630 --> 01:17:05,380 Isto non sempre é certo, pero agora están incluídas neste comando. 1048 01:17:05,380 --> 01:17:08,890 Pero imos ver o que acontece se eu fai iso 1049 01:17:08,890 --> 01:17:12,570 e vai para o inicio da liña co control A e fago iso. 1050 01:17:14,380 --> 01:17:18,040 Ok, establecer: Comando non atopado. Iso é medio raro, non é? 1051 01:17:18,040 --> 01:17:20,570 conxunto é un comando coñecido. É parte da casca. 1052 01:17:20,570 --> 01:17:24,040 definir: Command not found? Por que isto? 1053 01:17:24,040 --> 01:17:26,790 Hmm Ben, imos pensar sobre iso. 1054 01:17:26,790 --> 01:17:31,100 Funciona unha substitución de comandos crase, 1055 01:17:31,100 --> 01:17:37,430 e que ocorre con certa parte da secuencia de analizar o comando. 1056 01:17:37,430 --> 01:17:40,360 conxunto é un comando embutido. 1057 01:17:40,360 --> 01:17:43,900 Entón, no momento en que el fai iso substitución de mando, 1058 01:17:43,900 --> 01:17:48,280 el xa conseguiu pasar o punto de identificación de comandos internos. 1059 01:17:48,280 --> 01:17:51,900 Por iso, trátase definido como se fose un mando no camiño. 1060 01:17:51,900 --> 01:17:55,440 Nin que dicir ten que non atopalo, e obter un erro. 1061 01:17:55,440 --> 01:17:59,300 Well. Hai un exemplo de secuencia de análise. 1062 01:17:59,300 --> 01:18:01,460 E o que imos facer sobre iso? 1063 01:18:01,460 --> 01:18:04,800 Teña en conta esta orde moi interesante aquí, eval. 1064 01:18:04,800 --> 01:18:06,530 Eu me pregunta o que fai. 1065 01:18:06,530 --> 01:18:08,760 Se ollar para a guía - e imos facelo 1066 01:18:08,760 --> 01:18:12,000 para mostrar o quão confuso estes manuais son - 1067 01:18:12,000 --> 01:18:19,400 home tcsh, manual confuso, atopar as cousas por aquí non é fácil. 1068 01:18:19,400 --> 01:18:31,850 Aquí imos nós, eval arg, para que poidamos ter un ou máis argumentos 1069 01:18:31,850 --> 01:18:34,090 e hai unha lista de cousas alí. 1070 01:18:34,090 --> 01:18:37,730 Trátase os argumentos como entradas para o shell 1071 01:18:37,730 --> 01:18:43,600 e executa as ordes resultantes no contexto do depósito actual. 1072 01:18:43,600 --> 01:18:46,900 Isto xeralmente se usa para executar comandos xerados como resultado do comando 1073 01:18:46,900 --> 01:18:51,310 ou substitución de variables de análise, xa que se produce antes estas substitucións. 1074 01:18:51,310 --> 01:18:52,580 Moi bo. 1075 01:18:52,580 --> 01:18:54,740 E aquí aínda se refiren ao mando tset para un uso mostra 1076 01:18:54,740 --> 01:18:57,700 como a que eu acabo de amosar. 1077 01:18:57,700 --> 01:19:00,440 Agora eu teño que conseguir o diálogo de volta a un lugar útil. 1078 01:19:03,150 --> 01:19:07,800 Imos comezar por aquí e imos ver o que eval se usa algo antes diso. 1079 01:19:07,800 --> 01:19:14,010 Entón, imos ver o que pasa se colocarmos - aquí imos nós coas frechas para que a orde 1080 01:19:14,010 --> 01:19:20,940 e controlar un ao principio, eval. 1081 01:19:20,940 --> 01:19:22,850 Ok, entón funciona. 1082 01:19:22,850 --> 01:19:26,440 Cando fai eval, leva o que vén despois e fai unha orde. 1083 01:19:26,440 --> 01:19:29,460 Isto permite que analiza-lo esencialmente dúas veces. 1084 01:19:29,460 --> 01:19:33,710 A sección aquí executa este comando dentro do crase, 1085 01:19:33,710 --> 01:19:36,210 recibe a saída. 1086 01:19:36,210 --> 01:19:42,850 A saída se quere para ser executado como os comandos aquí como estes 1087 01:19:42,850 --> 01:19:45,890 a este e este. 1088 01:19:45,890 --> 01:19:50,100 Así, os comandos son agora aquí nesta secuencia, 1089 01:19:50,100 --> 01:19:58,950 pero estes son comandos embutidos no e non se atope los de inmediato. 1090 01:19:58,950 --> 01:20:06,440 Entón imos para eval, eval colle aquilo, a cousa toda comeza todo de novo, e funciona. 1091 01:20:06,440 --> 01:20:18,460 Un exemplo tanto de backquoting, eval, análise, consecuencias de análise, 1092 01:20:18,460 --> 01:20:21,910 e unha orde que pode ser de moi pouca utilidade para vostede hoxe en día. 1093 01:20:21,910 --> 01:20:25,540 Okay. Todo ben, umask. 1094 01:20:25,540 --> 01:20:32,160 Vexamos esta orde aquí, umask 022. Eu me pregunta o que fai. 1095 01:20:32,160 --> 01:20:38,420 Nós só escriba umask con nada despois. 22. Okay. 1096 01:20:38,420 --> 01:20:44,350 022 e facelo de novo. 1097 01:20:44,350 --> 01:20:48,580 Como ten que ter difícil de adiviñar, umask sen argumentos dille a máscara actual; 1098 01:20:48,580 --> 01:20:51,760 umask con argumentos que o fai, pero iso era o que eu xa tiña. 1099 01:20:51,760 --> 01:20:53,800 Que 022 significa? 1100 01:21:01,650 --> 01:21:07,080 Estes son aquí as proteccións para un arquivo. 1101 01:21:07,080 --> 01:21:11,440 Eles determinan quen ten permiso para ler, escribir ou realizar o arquivo. 1102 01:21:11,440 --> 01:21:16,560 Proteccións son tamén chamados de permisos. 1103 01:21:16,560 --> 01:21:21,390 O r significa lectura, o w para gravar, 1104 01:21:21,390 --> 01:21:25,500 e x, que non está presente alí, está a ser executado. 1105 01:21:25,500 --> 01:21:27,260 Existen 3 categorías de alí. 1106 01:21:27,260 --> 01:21:33,540 Os últimos tres elementos están na categoría de usuario. Aqueles aplica a min, o usuario. 1107 01:21:33,540 --> 01:21:36,870 Estes tres aquí se aplican ao grupo. 1108 01:21:36,870 --> 01:21:41,590 O arquivo pertence a un grupo, o usuario pode pertencer a varios grupos, 1109 01:21:41,590 --> 01:21:47,150 pero se o usuario está no grupo ao que esta imaxe pertence, 1110 01:21:47,150 --> 01:21:51,090 logo esas proteccións aplicaranse a el, se non é o usuario. 1111 01:21:51,090 --> 01:21:54,230 E esta é toda a xente. 1112 01:21:55,540 --> 01:21:57,690 Estas categorías son mutuamente exclusivas. 1113 01:21:57,690 --> 01:21:59,750 As proteccións usuario se aplica a el, 1114 01:21:59,750 --> 01:22:03,780 as proteccións de grupo é aplicable aos membros do grupo que non o usuario, 1115 01:22:03,780 --> 01:22:08,110 e as outras proteccións só é aplicable a outros que non o usuario e os membros do grupo de persoas. 1116 01:22:08,110 --> 01:22:12,320 Se hai un r ou aw ou un x, isto significa que a protección se concede. 1117 01:22:12,320 --> 01:22:13,950 Se hai un guión, isto significa que non é. 1118 01:22:13,950 --> 01:22:16,690 Hai, de feito, son outras cousas que poden ser feitas aquí para alén destes, 1119 01:22:16,690 --> 01:22:18,350 que eu non vou entrar agora. 1120 01:22:18,350 --> 01:22:24,450 A umask define un estándar para os arquivos que crear. 1121 01:22:24,450 --> 01:22:28,580 E, como unha máscara, basicamente di que os bits que non definir. 1122 01:22:28,580 --> 01:22:30,450 Como é que isto se fai anacos? 1123 01:22:30,450 --> 01:22:33,240 Se pensar en cada un deles como un número octal, 1124 01:22:33,240 --> 01:22:42,120 este é o bit de 1s, este é o 2s, este é o 4s. 1125 01:22:42,120 --> 01:22:45,840 Entón, de 0 a 7 1126 01:22:45,840 --> 01:22:51,770 pode describir o que combinación de r de, w do e X do que ten para estes 3 1127 01:22:51,770 --> 01:22:53,710 e logo, un número similar a estas e, a continuación, para estes. 1128 01:22:53,710 --> 01:23:12,030 Entón, 022 significa 0 para a outra, para o grupo 2, 2 para o usuario. 1129 01:23:12,030 --> 01:23:15,870 Pero esta é unha máscara. A máscara é o que non ten. 1130 01:23:19,380 --> 01:23:20,610 Sinto moito. Eu só dei-lle cousas na orde errada. 1131 01:23:20,610 --> 01:23:25,620 É a primeira 3. Estes son tres o usuario, estes tres son o grupo, estas tres son o outro. 1132 01:23:25,620 --> 01:23:27,970 Sentímolo eu che dei estes na orde errada. 1133 01:23:27,970 --> 01:23:31,910 O 0, que é o primeiro destes, non amosa o valor, 1134 01:23:31,910 --> 01:23:35,430 pero se un número non é alí, é un 0. 1135 01:23:35,430 --> 01:23:38,370 Isto significa que todos os 3 destes sería permitido. 1136 01:23:38,370 --> 01:23:41,550 Teña en conta que nese particular o x non se admite. 1137 01:23:41,550 --> 01:23:44,090 A razón é que o depósito é capaz de determinar 1138 01:23:44,090 --> 01:23:46,260 se un ficheiro debe ser executado ou non. 1139 01:23:46,260 --> 01:23:49,800 Xa que este non é un arquivo executábel, non definiu o x. 1140 01:23:49,800 --> 01:23:54,000 Os dous medios que escribir permiso, a segunda categoría aquí, 1141 01:23:54,000 --> 01:23:56,500 a do medio, é negado. 1142 01:23:56,500 --> 01:23:58,500 Entón, de novo, estas son as cousas que el negouse. 1143 01:23:58,500 --> 01:24:02,080 Ben, x se permite, pero non é aquí, porque non é executable 1144 01:24:02,080 --> 01:24:04,260 e do mesmo xeito para os outros. 1145 01:24:04,260 --> 01:24:08,880 Entón iso é un umask común. 1146 01:24:08,880 --> 01:24:14,630 Outro común é de 700 - dar-se todo e ninguén máis. 1147 01:24:14,630 --> 01:24:17,040 E hai outras posibilidades. 1148 01:24:21,340 --> 01:24:27,110 Eu vou volver a iso. Usando a historia podo procurar cara atrás, para iso, LWH de alí. 1149 01:24:27,110 --> 01:24:30,210 Okay. Entón, aquí, estas son as cunchas. 1150 01:24:30,210 --> 01:24:36,020 Bash, o propietario que se conta do sistema, pode facer todo. 1151 01:24:36,020 --> 01:24:41,210 Grupo e os outros poden facer ler ou executar, pero non escribir. 1152 01:24:41,210 --> 01:24:44,570 Este nin sequera permiten que o propietario de escribir para el. 1153 01:24:44,570 --> 01:24:46,460 O propietario quería escribir para el, a conta do sistema, 1154 01:24:46,460 --> 01:24:48,020 tería que cambiar a protección primeiro. 1155 01:24:48,020 --> 01:24:53,940 Pero, de novo, o umask define o patrón, enmascarado-o, 1156 01:24:53,940 --> 01:24:57,160 indicando os bits que non serán creados. 1157 01:24:57,160 --> 01:25:04,380 Isto é tipicamente nun dos seus arquivos de inicio, que é o. Cshrc ao C-shell 1158 01:25:04,380 --> 01:25:07,500 ou o perfil. por as cunchas Bourne tipo. 1159 01:25:07,500 --> 01:25:12,520 Pode ser tamén noutros lugares, se existen outros arquivos de inicio do sistema. 1160 01:25:12,520 --> 01:25:14,610 En calquera caso, iso é umask. 1161 01:25:14,610 --> 01:25:18,180 Hai algo medio raro aquí, 1162 01:25:18,180 --> 01:25:22,800 e que é, por que hai un único mando para iso? 1163 01:25:22,800 --> 01:25:28,690 Se eu estivese escribindo isto, eu faría unha variable, umask = algún valor. 1164 01:25:28,690 --> 01:25:31,100 ¿Por que hai unha orde enteiro só para esta finalidade? 1165 01:25:31,100 --> 01:25:34,560 A razón é esta só vai volver ás orixes do Unix. 1166 01:25:34,560 --> 01:25:41,050 Unix era só un proxecto de programación na Bell Labs a principios de 1970. 1167 01:25:41,050 --> 01:25:42,610 A xente simplemente se reuniron para programa. 1168 01:25:42,610 --> 01:25:45,290 Nunca pretenderon que se fai un sistema operativo de todo o mundo. 1169 01:25:45,290 --> 01:25:47,250 Diferentes persoas escribiron distintas partes sen pensar moito 1170 01:25:47,250 --> 01:25:49,790 de como eles estaban indo para ser usado - no canto esbozado. 1171 01:25:49,790 --> 01:25:53,290 E veu xunto así, e aínda é así nalgúns aspectos. 1172 01:25:53,290 --> 01:25:57,930 Entón, que reflicte a historia, e aínda existen estas inconsistencias e elementos impares do mesmo. 1173 01:25:57,930 --> 01:26:00,750 Okay. Next one aquí. 1174 01:26:08,170 --> 01:26:11,000 Como escribín anteriormente, o C-shell non é realmente moi usado para programación, 1175 01:26:11,000 --> 01:26:12,420 aínda que pode ser. 1176 01:26:12,420 --> 01:26:15,080 El executa máis lentamente, unha vez máis o trade-off entre o uso interactivo, 1177 01:26:15,080 --> 01:26:17,820 que ten máis que a velocidade de procesamento implicado, 1178 01:26:17,820 --> 01:26:20,710 que pode facer sen o procesamento. 1179 01:26:20,710 --> 01:26:28,320 Os recursos extra engadidos ao shell Bourne polo Korn e Bourne-again cunchas 1180 01:26:28,320 --> 01:26:32,120 parecen non demora-los, e eu non sei por que isto ocorre. 1181 01:26:32,120 --> 01:26:36,310 Podería ser só unha mellor programación, pero eu non estou en posición de saber. 1182 01:26:36,310 --> 01:26:40,420 Acelerar aquí, en realidade, non é un negocio tan grande, aínda que sexa mencionada. 1183 01:26:40,420 --> 01:26:43,690 A razón é que os scripts shell realmente estar moi rápido. 1184 01:26:43,690 --> 01:26:46,450 Se hai unha morea de comandos como nun programa de calculacional, 1185 01:26:46,450 --> 01:26:49,110 probablemente non estaba a facelo en un script shell. 1186 01:26:49,110 --> 01:26:51,450 As operacións que son moi sinxelo e directo. 1187 01:26:51,450 --> 01:26:53,960 Os que eu probei que son demasiado lentos 1188 01:26:53,960 --> 01:26:57,110 envolven aplicacións repetidas de comandos lentos. 1189 01:26:57,110 --> 01:27:00,480 Mencionen o editor de fluxo sed. Este comando é lento. 1190 01:27:00,480 --> 01:27:03,760 Se executar varias veces sed, vai ter un guión lento, pero non é o shell que é lento. 1191 01:27:03,760 --> 01:27:07,920 Executa-lo no shell Bourne non será moito máis rápido do que executa-lo no C-shell, 1192 01:27:07,920 --> 01:27:10,070 aínda que quizais algunhas vantaxes alí. 1193 01:27:10,070 --> 01:27:12,760 As capacidades de programación adicional, por outra banda, 1194 01:27:12,760 --> 01:27:17,920 son razóns significativas por que ía usar as cunchas do tipo Bourne. 1195 01:27:17,920 --> 01:27:21,390 C-shell ten características impares para iso - 1196 01:27:21,390 --> 01:27:25,250 o feito de que non sabe se unha variable é unha variable shell ou unha variable de ambiente. 1197 01:27:25,250 --> 01:27:27,440 Pode ser moi confuso. 1198 01:27:27,440 --> 01:27:32,170 Non é tan fácil de escribir 1199 01:27:32,170 --> 01:27:35,930 só con base na súa experiencia de programación en outras linguas. 1200 01:27:35,930 --> 01:27:41,350 Coido que pode atopar as cunchas Bourne tipo máis consistente coa súa experiencia. 1201 01:27:43,730 --> 01:27:49,270 Algúns scripts, con todo, pode haber miles de liñas de longo. 1202 01:27:49,270 --> 01:27:52,450 Os que vin son usados ​​para remendar sistemas operativos. 1203 01:27:52,450 --> 01:27:55,450 Aqueles poden executar moi lentamente, pero non executar aqueles con moita frecuencia. 1204 01:27:55,450 --> 01:27:57,180 É só cando está facendo correccións, 1205 01:27:57,180 --> 01:27:59,450 e é só o xestor do sistema que fai estas cousas, 1206 01:27:59,450 --> 01:28:01,840 por iso non é realmente un gran problema. 1207 01:28:01,840 --> 01:28:06,980 Aqueles que son centos de liñas de longo realmente executar rapidamente. 1208 01:28:06,980 --> 01:28:10,540 Mencionando iso aquí, cales son estas melloras? 1209 01:28:10,540 --> 01:28:13,170 Eu xa mencionei algúns deles - arrays, cálculos, 1210 01:28:13,170 --> 01:28:20,540 os $ () de expresión para cálculos no shell bash, 1211 01:28:20,540 --> 01:28:23,050 o outro tipo de substitución de comandos. 1212 01:28:23,050 --> 01:28:25,360 Existen diferentes tipos de ordes de proba 1213 01:28:25,360 --> 01:28:29,350 polo que se pode facer probas condicionais sobre a existencia dun ficheiro ou outras cousas. 1214 01:28:29,350 --> 01:28:34,790 Última visita, esta orde aquí. 1215 01:28:34,790 --> 01:28:38,480 O que isto fai, e por que alguén vai usalo? 1216 01:28:51,170 --> 01:28:52,990 variablename printenv. 1217 01:28:52,990 --> 01:28:56,130 Sabemos o que printenv fai. Dinos o valor dunha variable. 1218 01:28:56,130 --> 01:29:00,850 E variablename printenv non nos din moito, porque non hai tal variable. 1219 01:29:03,550 --> 01:29:05,120 En branco. 1220 01:29:05,120 --> 01:29:08,440 Pero imos darlle algo significativo. 1221 01:29:13,420 --> 01:29:16,800 Isto non é alí tamén. Okay. Creo que nunca marcou que. 1222 01:29:16,800 --> 01:29:18,020 Imos comprobar o meu ambiente. 1223 01:29:18,020 --> 01:29:20,900 Este é outro mando polo que pode inspeccionar seu contorno. 1224 01:29:20,900 --> 01:29:24,470 Hai boas editor de idade, o que vimos antes. 1225 01:29:42,360 --> 01:29:44,120 O que isto fai? 1226 01:29:44,120 --> 01:29:48,050 Aquí temos unha expresión de crase. 1227 01:29:48,050 --> 01:29:50,370 Teña en conta que esta é a C-shell. 1228 01:29:50,370 --> 01:29:54,850 Entón EDITOR printenv daranos un valor de editor. É vin. 1229 01:29:54,850 --> 01:29:59,790 E, a continuación, ha establecer o valor para a variable a, a orde set. 1230 01:29:59,790 --> 01:30:02,860 Polo tanto, agora que fago echo $ a, eu recibín vin. 1231 01:30:02,860 --> 01:30:05,850 Isto non parece moi útil. 1232 01:30:05,850 --> 01:30:08,080 Con todo, realmente ten un propósito. 1233 01:30:08,080 --> 01:30:12,260 Dende que nós non sabemos se a variable é unha variable shell ou unha variábel de entorno 1234 01:30:12,260 --> 01:30:16,280 empregando a sintaxe avaliación cifrão, podemos utilizar printenv 1235 01:30:16,280 --> 01:30:19,460 para asegurarse de que é unha variable de ambiente. 1236 01:30:19,460 --> 01:30:22,550 Entón, se houbese un editor variable shell, iso non tería conseguido. 1237 01:30:22,550 --> 01:30:25,640 Isto funciona só coa variable de ambiente. 1238 01:30:25,640 --> 01:30:28,370 Se houbese unha variable shell e eu quería que o seu valor, 1239 01:30:28,370 --> 01:30:29,980 Eu tería que atopar outra forma de facelo. 1240 01:30:29,980 --> 01:30:33,530 Unha forma de facelo sería facer conxunto e tubaxes. 1241 01:30:33,530 --> 01:30:36,130 Este é un dos metacaracteres, caracteres especiais. 1242 01:30:36,130 --> 01:30:38,370 El envía a saída do conxunto para outra cousa. 1243 01:30:38,370 --> 01:30:40,650 Imos ver o que podemos atopar alí. 1244 01:30:40,650 --> 01:30:49,340 Nada. Okay. Imos ver o que está aí todos xuntos. 1245 01:30:49,340 --> 01:30:53,580 Foi echo_style, aquel que eu mencionen antes. Ok, imos facelo. 1246 01:31:02,460 --> 01:31:06,230 Lembre que eu mencionen antes, echo_style 1247 01:31:06,230 --> 01:31:08,410 determina a forma como o comando `echo 'será executado. 1248 01:31:08,410 --> 01:31:10,940 BSD significa Distribución Berkeley estándar. 1249 01:31:10,940 --> 01:31:13,200 Este é o Berkeley Unix a partir dos anos 1970. 1250 01:31:13,200 --> 01:31:16,630 Esa é unha das formas que ecoam pode ser executado. 1251 01:31:16,630 --> 01:31:22,310 Establecer echo_style a ese valor no TC-shell fará eco a comportarse dese xeito. 1252 01:31:22,310 --> 01:31:27,670 Polo tanto, establecer fai iso, pero só recibe definir variables shell. 1253 01:31:27,670 --> 01:31:35,430 Non ía atopar editor, que non é unha variable shell. 1254 01:31:36,870 --> 01:31:38,050 Nada. 1255 01:31:38,050 --> 01:31:39,660 Así que esta é unha forma de distinguilo los. 1256 01:31:39,660 --> 01:31:42,000 Pero o feito de que ten que pasar por algún comando raro así 1257 01:31:42,000 --> 01:31:45,500 distinguir entre variables shell ou variables ambientais 1258 01:31:45,500 --> 01:31:49,970 amosa o tipo de natureza implacable do C-shell para algunhas finalidades. 1259 01:31:52,290 --> 01:31:57,960 E agora, para rematar e quizais menos, iso é as páxinas do manual. 1260 01:31:57,960 --> 01:32:03,190 Aqueles de quen ten que saber, o home é o curto comandos para manual. 1261 01:32:03,190 --> 01:32:08,610 As páxinas de manual para as cunchas son difíciles de ler. Son moi longos. 1262 01:32:08,610 --> 01:32:14,060 Están organizados dunha forma que pode facer difícil para atopar o que está a procurar. 1263 01:32:14,060 --> 01:32:15,980 Entón, se está a buscar algo con un propósito, 1264 01:32:15,980 --> 01:32:20,050 non pode saber se o efecto é unha variable shell ou outra cousa, 1265 01:32:20,050 --> 01:32:21,630 así que pode non saber onde mirar para el. 1266 01:32:21,630 --> 01:32:25,030 Podes ollar para varias cordas, pero as cordas son moitas veces repetida. 1267 01:32:25,030 --> 01:32:27,640 Por iso, é xeralmente difícil de ler. 1268 01:32:27,640 --> 01:32:33,810 Nós só ollou para a páxina man TC-shell un pouco antes de atopar a orde eval. 1269 01:32:33,810 --> 01:32:36,610 Algunhas cousas andan máis rápido. 1270 01:32:36,610 --> 01:32:38,860 Unha visión é a busca dunha cadea. 1271 01:32:38,860 --> 01:32:40,360 Pode utilizar o pager. 1272 01:32:40,360 --> 01:32:49,080 Pager ten a barra para buscar unha orde ou unha secuencia dentro dunha operación de pager. 1273 01:32:49,080 --> 01:32:52,830 Home por defecto usará pagers, ou ser máis ou menos. 1274 01:32:52,830 --> 01:32:56,560 Non sei se está familiarizado con estes, pero estes poden amosar arquivos aos poucos. 1275 01:32:56,560 --> 01:33:00,550 Eu teño usado a menos para amosar eses arquivos particulares que temos aquí. 1276 01:33:00,550 --> 01:33:03,300 Pode procurar alí dentro. 1277 01:33:03,300 --> 01:33:04,880 Podes probar a usar distintas secuencias de busca. 1278 01:33:04,880 --> 01:33:08,420 Tamén páxinas de manual en diferentes sistemas operativos poden non ser os mesmos. 1279 01:33:08,420 --> 01:33:11,130 Poden ser páxinas separadas para csh e tcsh. 1280 01:33:11,130 --> 01:33:14,500 Eles non están en Mac, pero eles poderían ser se eses son os comandos separados. 1281 01:33:14,500 --> 01:33:19,000 Se sh realmente non chamar Bash, probablemente habería unha páxina home separado. 1282 01:33:19,000 --> 01:33:25,820 Algúns sistemas posúen páxinas de manual por separado só para o C-shell comandos internos. 1283 01:33:25,820 --> 01:33:30,250 Ás veces, se quere ler a descrición dun comando embutido 1284 01:33:30,250 --> 01:33:35,350 que tamén é o camiño, como eco, ten que ler a páxina de manual na que mando o eco 1285 01:33:35,350 --> 01:33:37,610 para determinar como vai funcionar como un comando embutido 1286 01:33:37,610 --> 01:33:39,760 mesmo se non está chamado a orde embutido. 1287 01:33:41,630 --> 01:33:46,090 Isto é unha desvantaxe do sistema operativo, en xeral, non só para os encoros, 1288 01:33:46,090 --> 01:33:50,710 aínda que para as cunchas, en particular as páxinas do manual son bastante longo, 1289 01:33:50,710 --> 01:33:56,180 en parte porque engadiron características útiles para eles, o que pode ser un positivo. 1290 01:33:56,180 --> 01:34:00,290 Okay. Algunha pregunta? Calquera temas que pretende traer? 1291 01:34:00,290 --> 01:34:03,390 Calquera cousa relevante aquí? 1292 01:34:04,540 --> 01:34:07,100 Ben, foi moi bo falar contigo todos. 1293 01:34:07,100 --> 01:34:09,690 Espero que teña algo fóra deste seminario 1294 01:34:09,690 --> 01:34:13,080 que serán útiles para ti nos seus futuros proxectos. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]