1 00:00:00,000 --> 00:00:02,320 >> [Seminario - cáscaras de Unix, Entornos] 2 00:00:02,320 --> 00:00:04,180 [Douglas Kline - Harvard University] 3 00:00:04,180 --> 00:00:07,160 [Este es CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> El tema de hoy es la shell de Unix. 5 00:00:12,770 --> 00:00:20,600 Estoy Douglas Kline, experto, o al menos razonablemente usuario competente, de la cáscara. 6 00:00:20,600 --> 00:00:25,280 Un shell es la interfaz para el usuario para el sistema operativo del ordenador. 7 00:00:25,280 --> 00:00:29,580 El nombre es engañoso ya que, a diferencia de la concha de un animal, 8 00:00:29,580 --> 00:00:34,890 que es duro y de protección, la cáscara ordenador permite la comunicación. 9 00:00:34,890 --> 00:00:39,120 Así membrana porosa, probablemente sería una mejor metáfora. 10 00:00:39,120 --> 00:00:44,500 >> La cáscara original para Unix es el shell Bourne. 11 00:00:44,500 --> 00:00:46,450 Bourne se escribe B-O-U-R-N-E. 12 00:00:46,450 --> 00:00:49,770 Bourne fue uno de los autores originales de Unix, 13 00:00:49,770 --> 00:00:51,700 por lo que la cáscara se nombra después de él. 14 00:00:51,700 --> 00:00:54,850 El nombre de esa concha como un comando es simplemente sh. 15 00:00:54,850 --> 00:00:57,400 Ese es el comando que se puede ejecutar. 16 00:00:57,400 --> 00:01:00,810 La cáscara se inicia al iniciar la sesión. 17 00:01:00,810 --> 00:01:04,459 Al iniciar sesión en el ordenador, el shell sólo comienza a funcionar para usted, 18 00:01:04,459 --> 00:01:06,820 y eso es lo que lleva a sus órdenes. 19 00:01:06,820 --> 00:01:09,790 Se puede comenzar en otras ocasiones también. 20 00:01:09,790 --> 00:01:16,780 Si abre una ventana sin ninguna otra indicación, se iniciará una concha para usted. 21 00:01:16,780 --> 00:01:20,450 Eso es cómo es que usted puede ir a una ventana y empezar a escribir los comandos 22 00:01:20,450 --> 00:01:23,960 y así sucesivamente allí a pesar de que no se registró a esa ventana. 23 00:01:23,960 --> 00:01:26,670 Además, si usted hace un inicio de sesión remoto, 24 00:01:26,670 --> 00:01:30,250 a continuación, se iniciará un shell en el equipo remoto. 25 00:01:30,250 --> 00:01:44,310 Y es posible ejecutar comandos sin un shell interactivo. 26 00:01:44,310 --> 00:01:48,990 Eso puede significar dentro de su operación actual, 27 00:01:48,990 --> 00:01:50,700 y también puede significar una operación remota. 28 00:01:50,700 --> 00:01:52,900 Usted puede enviar un comando a otro equipo, 29 00:01:52,900 --> 00:01:55,460 que incluye la puesta en marcha de una concha de allí. 30 00:01:55,460 --> 00:01:57,760 De hecho, tiene que incluir la puesta en marcha una cáscara hay 31 00:01:57,760 --> 00:02:01,740 incluso si ese no es su objetivo final. 32 00:02:05,310 --> 00:02:12,350 Cuando algo se pone en marcha como esta, no se inicia necesariamente un nuevo shell. 33 00:02:12,350 --> 00:02:17,430 Si abre una nueva ventana, es posible decir que para que aparezca un editor 34 00:02:17,430 --> 00:02:18,940 o algún otro comando. 35 00:02:18,940 --> 00:02:20,560 En ese caso, el editor se iniciará a partir de cero. 36 00:02:20,560 --> 00:02:22,930 Cuando termina el editor, la ventana termina. 37 00:02:22,930 --> 00:02:24,620 Esto es un poco inusual, pero se puede hacer. 38 00:02:24,620 --> 00:02:27,140 En esos casos, no será una cáscara. 39 00:02:27,140 --> 00:02:31,890 Así que no es necesariamente el caso de que una ventana o alguna aplicación se abrirá un shell. 40 00:02:31,890 --> 00:02:34,030 >> Shell analiza los comandos. 41 00:02:34,030 --> 00:02:40,900 Parsing significa identificar los distintos elementos y su clasificación. 42 00:02:40,900 --> 00:02:43,470 Dentro de un comando, la cadena completa que escribe, 43 00:02:43,470 --> 00:02:47,310 habrá 1 o más comandos individuales para ser ejecutados. 44 00:02:47,310 --> 00:02:50,050 Otros elementos pueden ser argumentos. 45 00:02:50,050 --> 00:02:55,020 También puede haber caracteres especiales que afectan a la ejecución de un comando. 46 00:02:55,020 --> 00:02:59,710 Pueden enviar la salida en alguna parte que no sea la pantalla 47 00:02:59,710 --> 00:03:01,750 si el comando ordinariamente enviarlo a la pantalla. 48 00:03:01,750 --> 00:03:04,390 Puede redirigir la entrada, sino que puede hacer otras cosas también. 49 00:03:04,390 --> 00:03:08,120 Hay varios otros símbolos, caracteres, etc. 50 00:03:08,120 --> 00:03:13,600 Parsing implica detectar e interpretar las cosas. 51 00:03:13,600 --> 00:03:19,560 >> Ahora bien, si no hay más preguntas, lo cual es bastante probable, ya que no hay más gente, 52 00:03:19,560 --> 00:03:24,620 vamos a pasar a mi próxima página aquí. 53 00:03:24,620 --> 00:03:29,170 >> Dije antes que el shell Bourne es el intérprete de comandos inicial. 54 00:03:29,170 --> 00:03:31,550 Hay otros. 55 00:03:31,550 --> 00:03:34,520 Uno es el C-shell. El comando es csh. 56 00:03:34,520 --> 00:03:36,830 El nombre de C-shell es sólo un juego de palabras. 57 00:03:36,830 --> 00:03:41,260 Esta cáscara se introdujo con Berkeley Unix a mediados de la década de 1970. 58 00:03:41,260 --> 00:03:44,830 Berkeley Unix era un acontecimiento fundamental en el desarrollo de Unix. 59 00:03:44,830 --> 00:03:48,770 Fue una gran revolución e incluyó la introducción de esta concha. 60 00:03:48,770 --> 00:03:50,790 La razón de que el juego de palabras, C-shell, 61 00:03:50,790 --> 00:03:56,490 es que el C-intérprete tiene algunas características en lo que se asemejan el lenguaje C, 62 00:03:56,490 --> 00:03:59,740 que el shell Bourne no tiene - 63 00:03:59,740 --> 00:04:02,140 o no tenía en ese momento. 64 00:04:02,140 --> 00:04:05,190 También está el TC-shell. 65 00:04:05,190 --> 00:04:07,360 Este es un superconjunto de la C-shell. 66 00:04:07,360 --> 00:04:11,470 Tiene características adicionales, muchos de los cuales son útiles para el uso interactivo, 67 00:04:11,470 --> 00:04:16,050 como recordando los comandos en el mecanismo de la historia, 68 00:04:16,050 --> 00:04:18,459 que voy a describir un poco más tarde - 69 00:04:18,459 --> 00:04:23,120 de una manera sencilla, el modelo de un editor. 70 00:04:23,120 --> 00:04:29,170 También tiene enlaces que le permiten enlazar una cadena de clave de corto a un comando más. 71 00:04:29,170 --> 00:04:31,440 No vamos a entrar en eso hoy. 72 00:04:31,440 --> 00:04:33,650 Tiene algunas características que son útiles para la programación. 73 00:04:33,650 --> 00:04:37,020 Sin embargo, el C-shell no se usa a menudo para la programación del shell. 74 00:04:37,020 --> 00:04:39,080 Programas de Shell, si usted no supiera ya, 75 00:04:39,080 --> 00:04:41,690 son programas que consisten en las características de shell. 76 00:04:41,690 --> 00:04:43,220 Puede ejecutar estos programas. 77 00:04:43,220 --> 00:04:46,760 Usted escribe un montón de comandos de la shell en un archivo y ejecutar el archivo. 78 00:04:46,760 --> 00:04:49,760 No es necesario para compilarlo. Este es un lenguaje interpretado. 79 00:04:49,760 --> 00:04:57,320 La frase C-shell se convierte en ambiguo ya que puede referirse sólo a la original C-shell, csh, 80 00:04:57,320 --> 00:05:01,200 oa todos los C-conchas, incluyendo tcsh. Es un poco ambiguo. 81 00:05:01,200 --> 00:05:08,250 >> Una concha más tarde es el shell Korn, ksh, llamado así por el programador, Korn. 82 00:05:08,250 --> 00:05:14,160 Esta cáscara intentó incorporar en 1 cáscara 83 00:05:14,160 --> 00:05:16,960 las ventajas de la C-shell para uso interactivo 84 00:05:16,960 --> 00:05:19,230 y el shell Bourne para la programación. 85 00:05:19,230 --> 00:05:25,440 Se ha utilizado como un shell interactivo por algunas personas - una minoría. 86 00:05:25,440 --> 00:05:32,050 Más tarde, sin embargo, hubo otra presentación, el shell Bash, BASH, 87 00:05:32,050 --> 00:05:35,290 de nuevo un juego de palabras, Bourne-again shell. 88 00:05:35,290 --> 00:05:43,830 Es una extensión del shell Bourne. Korn también. Ambos son. 89 00:05:43,830 --> 00:05:48,100 Tiene los mismos objetivos del shell Korn de la fusión de la C-shell 90 00:05:48,100 --> 00:05:50,980 y ventajas de Bourne shell en shell 1. 91 00:05:50,980 --> 00:05:56,810 Muchas de las mejoras del shell Korn también se incluyen en Bash. 92 00:05:56,810 --> 00:06:00,710 Bash, sin embargo, tiene más y por lo tanto es preferible. 93 00:06:00,710 --> 00:06:05,180 The Bourne-again shell y el shell Korn se llaman conchas de tipo Bourne 94 00:06:05,180 --> 00:06:07,730 ya que incluyen las características del shell Bourne, 95 00:06:07,730 --> 00:06:11,180 que son incompatibles en algunos aspectos con los C-conchas. 96 00:06:11,180 --> 00:06:15,520 Hay otras conchas, además de ellos, unos destinados al uso restringido, 97 00:06:15,520 --> 00:06:20,670 tal vez limitado a algunos comandos, tal vez con fines especializados, no se utilizan a menudo. 98 00:06:20,670 --> 00:06:24,240 >> Okay. Siguiente artículo aquí. 99 00:06:31,300 --> 00:06:38,970 El intérprete de comandos se ha asociado con varias formas de Linux. 100 00:06:38,970 --> 00:06:41,550 No estoy seguro de si eso es cierto de todas las formas. 101 00:06:41,550 --> 00:06:43,280 Hay muchas formas por ahí y no todos ellos han utilizado, 102 00:06:43,280 --> 00:06:46,870 pero en los que he usado se ha convertido en asociados. 103 00:06:46,870 --> 00:06:49,670 Hasta donde yo sé, no hay nada acerca de Bash 104 00:06:49,670 --> 00:06:52,210 que hace que sea más compatible con Linux 105 00:06:52,210 --> 00:06:55,020 que cualquier otra combinación de cáscara y el sistema operativo. 106 00:06:55,020 --> 00:06:59,690 Creo que esto probablemente sólo refleja las inclinaciones de los programadores. 107 00:06:59,690 --> 00:07:07,500 Que ha llegado a ser asociado con Linux es otra razón para preferir Bash para ksh 108 00:07:07,500 --> 00:07:11,820 ya que las cosas son susceptibles de ser escrito en él y es probable que se propague. 109 00:07:11,820 --> 00:07:15,410 Te voy a dar otras razones de eso más adelante. 110 00:07:15,410 --> 00:07:21,330 Scripts de shell Bourne deben ejecutarse bajo la shell Korn o bash. 111 00:07:21,330 --> 00:07:22,650 Si usted escribe algo para el shell Bourne, 112 00:07:22,650 --> 00:07:26,180 Probablemente se puede ejecutar bajo ksh o bash. 113 00:07:26,180 --> 00:07:30,610 Scripts de shell Korn probablemente se ejecutarán bajo Bash, pero no puedo garantizarlo. 114 00:07:30,610 --> 00:07:36,040 Más tarde aquí, los scripts de C-shell se deben ejecutar en el marco del TC-shell. 115 00:07:38,850 --> 00:07:41,690 El C-shell fue en realidad nunca se utiliza ampliamente para el scripting 116 00:07:41,690 --> 00:07:48,110 desde el shell Bourne y más tarde las conchas de tipo Bourne eran preferibles para ese propósito. 117 00:07:48,110 --> 00:07:50,620 Así que realmente no es tan importante. 118 00:07:50,620 --> 00:07:53,480 Hay un buen montón de Bourne shell scripts que fueron escritos hace mucho tiempo, 119 00:07:53,480 --> 00:07:56,860 antes de que el shell Korn o el shell Bourne-Again fueron introducidas. 120 00:07:56,860 --> 00:07:59,300 Los que aún están en uso, que forma parte de los sistemas operativos, 121 00:07:59,300 --> 00:08:01,590 y así que usted los encontrará si nos fijamos en el sistema operativo 122 00:08:01,590 --> 00:08:03,760 o algunos paquetes de programación de edad. 123 00:08:03,760 --> 00:08:12,840 >> Bash es hasta cierto punto convirtiéndose en una especie de lengua franca para los sistemas operativos. 124 00:08:12,840 --> 00:08:17,580 Ya se ha extendido a Windows y VMS. 125 00:08:17,580 --> 00:08:20,440 VMS, por si no lo sabe, es un sistema operativo propietario 126 00:08:20,440 --> 00:08:25,480 de Digital Equipment Corporation, que todavía está en uso, en gran parte detrás de las escenas. 127 00:08:25,480 --> 00:08:29,250 Y si va a estar en ejecución en varios sistemas operativos diferentes, 128 00:08:29,250 --> 00:08:31,110 probablemente las personas tienden a pasar por ello. 129 00:08:31,110 --> 00:08:33,840 Pero este desarrollo es relativamente reciente. 130 00:08:33,840 --> 00:08:39,490 Esto es sólo el comienzo, así que no puedo predecir si esto va a llegar a ser realmente ese tipo de lingua franca. 131 00:08:39,490 --> 00:08:43,539 Asimismo, dado que las rutas de acceso de archivos y bibliotecas difieren 132 00:08:43,539 --> 00:08:46,210 entre estos diferentes sistemas operativos, 133 00:08:46,210 --> 00:08:50,250 usted podría no ser capaz de escribir un script bash en un sistema operativo 134 00:08:50,250 --> 00:08:51,840 y luego ejecutarlo en otro. 135 00:08:51,840 --> 00:08:54,440 Usted debe ser capaz de moverlo entre distintos Unix, Linux 136 00:08:54,440 --> 00:08:59,020 Sistemas operativos Mac OS, pero no necesariamente para Windows o VMS. 137 00:08:59,020 --> 00:09:01,390 Puede que tenga que cambiar las descripciones de archivos nombre de ruta, 138 00:09:01,390 --> 00:09:03,180 y algunas bibliotecas pueden ser diferentes, 139 00:09:03,180 --> 00:09:05,230 lo que puede afectar la manera en que algunos comandos funcionan 140 00:09:05,230 --> 00:09:09,730 o cómo se procesan los argumentos y similares. 141 00:09:09,730 --> 00:09:19,230 Además de eso, otra precaución aquí es que no hay ninguna garantía 142 00:09:19,230 --> 00:09:23,570 que todas las diferentes conchas que he mencionado - Bourne shell, C-shell, 143 00:09:23,570 --> 00:09:29,880 TC-shell, Korn, Bourne-Again Shell - estará disponible en virtud de cualquier Unix 144 00:09:29,880 --> 00:09:33,750 o Linux o Mac OS. 145 00:09:33,750 --> 00:09:35,620 Ellos simplemente no pueden estar allí. 146 00:09:35,620 --> 00:09:38,300 Esa es una de las precauciones aquí. 147 00:09:38,300 --> 00:09:41,490 Es una triste limitación en este caso ya que desea que las cosas funcionen en todas partes, 148 00:09:41,490 --> 00:09:44,380 pero, por desgracia, no se puede confiar en eso. 149 00:09:44,380 --> 00:09:47,230 >> Okay. Siguiente una aquí. 150 00:09:50,280 --> 00:09:54,370 Digamos que usted desea escribir un script de shell, 151 00:09:54,370 --> 00:09:57,170 un programa que consta de comandos de shell. 152 00:09:57,170 --> 00:10:01,200 Usted escribe sus comandos, ponerlos en un archivo y ejecutar el archivo. 153 00:10:01,200 --> 00:10:04,230 ¿Qué pasa si usted quiere incluir argumentos? 154 00:10:04,230 --> 00:10:09,650 En el caso de operaciones de shell, los argumentos se denominan parámetros o parámetros posicionales 155 00:10:09,650 --> 00:10:15,940 y que van a ser convocadas por un signo de dólar y el número, $ 1, $ 2. 156 00:10:15,940 --> 00:10:27,000 Así que si el guión tiene este nombre, mi primer argumento podría ser el argumento 1 157 00:10:27,000 --> 00:10:30,540 y mi segundo podría ser el argumento 2, 158 00:10:30,540 --> 00:10:34,110 y dentro de mi script si quiero referirme a estas cosas - 159 00:10:34,110 --> 00:10:36,810 Vamos a borrar esta ya que no estoy realmente va a ejecutarlo - 160 00:10:36,810 --> 00:10:42,160 dentro de mi guión que podría tener $ 1 para referirse a arg1, 161 00:10:42,160 --> 00:10:45,890 $ 2, que saldrá de esa manera, arg2. 162 00:10:45,890 --> 00:10:50,080 Así que esos símbolos están disponibles para hacer referencia a los argumentos, 163 00:10:50,080 --> 00:10:52,390 y los que se aplican a todas las conchas. 164 00:10:52,390 --> 00:10:56,520 Además, hay otros caracteres. 165 00:10:56,520 --> 00:11:01,700 $ * Se refiere a toda la lista de argumentos, todos ellos. 166 00:11:01,700 --> 00:11:05,390 $ # Se refiere al número de argumentos. 167 00:11:05,390 --> 00:11:07,910 Una vez más, esto se aplica a todas las conchas. 168 00:11:07,910 --> 00:11:15,540 Esos símbolos, * y #, se pueden utilizar con los significados en otros lugares también. 169 00:11:15,540 --> 00:11:17,940 No vamos a entrar en esa. 170 00:11:17,940 --> 00:11:20,460 >> Línea especificador Shell. ¿Qué es eso? 171 00:11:20,460 --> 00:11:27,760 Digamos que usted ha escrito un guión y es un shell determinado y desea ejecutarlo. 172 00:11:27,760 --> 00:11:33,500 ¿Cómo sabes qué shell del sistema operativo utilizará para ejecutar la secuencia de comandos? 173 00:11:33,500 --> 00:11:37,230 En un momento se podía suponer que iba a ejecutar en el shell Bourne 174 00:11:37,230 --> 00:11:39,440 si usted no dijo otra cosa, 175 00:11:39,440 --> 00:11:41,730 pero las personas no están escribiendo scripts en el shell Bourne que mucho más 176 00:11:41,730 --> 00:11:43,750 y ni siquiera se puede confiar en eso. 177 00:11:43,750 --> 00:11:48,740 Así que aquí tenemos una línea especificador shell aquí. 178 00:11:48,740 --> 00:11:52,450 Que especifica Bash. 179 00:11:52,450 --> 00:11:56,750 Tenga en cuenta que se especifican en el nombre de ruta, / bin / bash. 180 00:11:56,750 --> 00:12:02,870 Si un equipo tiene el intérprete de comandos, pero no en el directorio bin, / bin, esto no funcionará. 181 00:12:02,870 --> 00:12:06,870 Ese es otro calificador, otra precaución aquí. 182 00:12:06,870 --> 00:12:09,500 El signo es el signo de comentario de línea. 183 00:12:09,500 --> 00:12:12,300 Eso se aplica a todas las conchas. 184 00:12:12,300 --> 00:12:18,610 El caso particular aquí, #! al principio de una secuencia de comandos, es un caso especial. 185 00:12:18,610 --> 00:12:23,410 Que especifica el shell en el que se ejecute el script. 186 00:12:23,410 --> 00:12:30,230 A lo que iba, que podría no ser el mismo lugar / bin. 187 00:12:30,230 --> 00:12:34,880 Además, hay otra cosa aquí. 188 00:12:34,880 --> 00:12:41,250 Si usted sólo tiene que utilizar el signo de número sin signo de exclamación y el nombre de ruta, 189 00:12:41,250 --> 00:12:44,640 que debe indicar un C-shell. 190 00:12:44,640 --> 00:12:48,300 Sin embargo, no recomiendo hacer eso porque no soy capaz de garantizar 191 00:12:48,300 --> 00:12:49,750 que siempre que va a funcionar. 192 00:12:49,750 --> 00:12:52,220 Si quieres un C-shell, sería mejor decir que sí. 193 00:12:52,220 --> 00:12:58,450 Entonces hay algo bastante confuso aquí. 194 00:12:58,450 --> 00:13:03,940 Si utiliza una línea especificador shell como / bin / bash 195 00:13:03,940 --> 00:13:07,070 y que la cáscara no está disponible allí, 196 00:13:07,070 --> 00:13:10,680 no hay tal cosa como / bin / bash en ese equipo en particular, 197 00:13:10,680 --> 00:13:14,330 ya sea porque no tiene Bash o porque está en una ubicación diferente, 198 00:13:14,330 --> 00:13:17,450 obtendrá un error que indica que la secuencia de comandos se ejecutó no existe. 199 00:13:17,450 --> 00:13:21,510 Y, por supuesto, existe la secuencia de comandos, por lo que el mensaje de error es confuso. 200 00:13:21,510 --> 00:13:24,810 La razón de que el sistema operativo le da ese error 201 00:13:24,810 --> 00:13:28,370 o, más exactamente, que el shell interactivo en el que se está ejecutando esta da ese error, 202 00:13:28,370 --> 00:13:33,510 es que muestra el comando que utilizó, que es el nombre del script. 203 00:13:33,510 --> 00:13:36,920 Ese comando llama efectivamente la cáscara con el nombre de la secuencia de comandos. 204 00:13:36,920 --> 00:13:39,330 Ahí es donde usted consigue ese mensaje de error confuso. 205 00:13:39,330 --> 00:13:42,980 Otra forma de llamar al script de shell 206 00:13:42,980 --> 00:13:45,910 es mediante la especificación de la concha en la línea de comandos, como en este caso. 207 00:13:45,910 --> 00:13:52,510 Este es un mandamiento. Esto dice ejecutar Bash y luego ejecutar mi script en Bash. 208 00:13:52,510 --> 00:13:55,680 Eso tomará precedencia sobre una línea especificador, 209 00:13:55,680 --> 00:14:02,090 y esto tiene la característica de que le permite ofrecer a diferentes rutas de acceso. 210 00:14:02,090 --> 00:14:04,840 Si usted acaba de dar una orden, el sistema operativo buscará ese comando 211 00:14:04,840 --> 00:14:06,410 en varios lugares. 212 00:14:06,410 --> 00:14:08,820 Si está disponible, debe encontrarlo. 213 00:14:08,820 --> 00:14:12,290 El equipo se encuentra Bash allí donde se encuentra y ejecutarlo, 214 00:14:12,290 --> 00:14:15,470 por lo que no es necesario entonces que preocuparse por donde lo encuentra. 215 00:14:15,470 --> 00:14:17,360 Hay potencialmente otras preocupaciones aquí, 216 00:14:17,360 --> 00:14:20,830 como si hay más de 1 versión de Bash, que es posible, aunque poco probable. 217 00:14:20,830 --> 00:14:23,540 Esa es otra manera de lidiar con estas cosas. 218 00:14:23,540 --> 00:14:30,480 Líneas Prescripción pueden llamar a cualquier shell. 219 00:14:30,480 --> 00:14:34,480 También pueden llamar a las cosas distintas de conchas. 220 00:14:34,480 --> 00:14:37,940 Ejemplos que tengo aquí son sed, que es el editor de flujo; 221 00:14:37,940 --> 00:14:39,900 awk, que es un lenguaje de procesamiento de patrones; 222 00:14:39,900 --> 00:14:43,680 y Perl, un lenguaje de script muy desarrollado. 223 00:14:43,680 --> 00:14:47,570 Si usted pone una línea especificador indica uno de esos programas, al principio, 224 00:14:47,570 --> 00:14:51,270 irá directamente a ese programa en lugar de iniciar un shell. 225 00:14:51,270 --> 00:14:54,030 Esos programas tienen límites de sus capacidades. 226 00:14:54,030 --> 00:14:58,790 Perl es muy capaz. Sed es un editor. Se pueden hacer cosas más allá de la simple edición. 227 00:14:58,790 --> 00:15:03,300 Pero puede ser difícil de programar que. 228 00:15:03,300 --> 00:15:09,670 Además, el paso de argumentos y esas cosas a la escritura es imposible o confuso. 229 00:15:09,670 --> 00:15:15,030 Así que en esos casos, con awk o sed, que es, al menos en mi experiencia, 230 00:15:15,030 --> 00:15:18,910 preferible escribir un guión y el llamado awk o sed shell desde el script de shell 231 00:15:18,910 --> 00:15:24,660 en lugar de llamar awk o sed como la línea especificador guión. 232 00:15:24,660 --> 00:15:26,980 Perl es un lenguaje muy diversificada, como ya he dicho. 233 00:15:26,980 --> 00:15:30,050 No se puede ejecutar comandos interactivos en perl, 234 00:15:30,050 --> 00:15:32,660 lo que significa que no se puede probar partes de secuencias de comandos que usted está en desarrollo 235 00:15:32,660 --> 00:15:33,970 ejecutándolos de forma interactiva. 236 00:15:33,970 --> 00:15:36,160 Sin embargo, es un lenguaje muy capaz 237 00:15:36,160 --> 00:15:40,960 y se ha convertido en una herramienta muy ampliamente utilizado. 238 00:15:40,960 --> 00:15:45,720 Eso es sólo un poco más de un comentario entre paréntesis alrededor de las líneas de especificador. 239 00:15:45,720 --> 00:15:50,610 >> En la totalidad o la mayoría de las formas de Linux - de nuevo, no puedo estar seguro de que es todo - 240 00:15:50,610 --> 00:15:57,900 y en Mac OS, si escribe csh usted consigue tcsh, 241 00:15:57,900 --> 00:16:00,570 y si escribe SH se obtiene bash. 242 00:16:00,570 --> 00:16:05,020 Ellos estaban tratando de no darle las versiones más avanzadas de estas conchas, 243 00:16:05,020 --> 00:16:07,940 pero esto puede ser confuso. 244 00:16:07,940 --> 00:16:16,720 Si se escribe un guión usando tcsh o Bash características, mientras que llamar a csh o sh 245 00:16:16,720 --> 00:16:22,230 y luego tratar de ejecutarlo en un ordenador que no tiene tcsh o Bash, 246 00:16:22,230 --> 00:16:25,050 lo que podría tener algunos errores si hay comandos allí 247 00:16:25,050 --> 00:16:27,970 que esos proyectiles no reconocen. 248 00:16:27,970 --> 00:16:34,120 Además, es posible que haya llamado su shell en el equipo local 249 00:16:34,120 --> 00:16:37,700 calificándola como sh o csh y luego conseguir las conchas más avanzados. 250 00:16:37,700 --> 00:16:41,440 Puede que ni siquiera pensar en el hecho de que usted está utilizando el shell más avanzada. 251 00:16:41,440 --> 00:16:45,670 Así que este es un problema potencial. 252 00:16:45,670 --> 00:16:50,290 ¿Cómo se determina que si escribe sh usted consigue Bash, 253 00:16:50,290 --> 00:16:55,580 si escribe csh usted consigue tsch? 254 00:16:55,580 --> 00:16:59,940 Hay cosas en estos ordenadores llamados enlaces 255 00:16:59,940 --> 00:17:06,460 que pueden conectarse a los nombres de archivo para referirse a la misma cosa. 256 00:17:06,460 --> 00:17:12,180 O bien puede ser de 2 nombres para el mismo archivo o un archivo que tiene por objeto hacer referencia a otro archivo. 257 00:17:12,180 --> 00:17:17,550 Se les conoce como enlaces duros y simbólicos. Nosotros no vamos a eso más hoy. 258 00:17:17,550 --> 00:17:21,619 También puede haber archivos separados - 1 archivo sh, 1 archivo Bash - 259 00:17:21,619 --> 00:17:23,880 pero ambos funcionan Bash. 260 00:17:23,880 --> 00:17:29,350 Luego hay otro calificativo aquí. 261 00:17:29,350 --> 00:17:42,640 Si usted está llamando a uno de estos depósitos por un nombre, 262 00:17:42,640 --> 00:17:46,640 se podría pensar que tendrías la misma funcionalidad que llamarlo por otro nombre. 263 00:17:46,640 --> 00:17:49,700 Bueno, eso en realidad no es necesariamente cierto. 264 00:17:49,700 --> 00:17:55,020 Estos comandos pueden examinar el nombre por el cual fueron llamados 265 00:17:55,020 --> 00:18:00,020 y pueden, sobre la base de ese nombre, se comportan de manera diferente. 266 00:18:00,020 --> 00:18:02,740 Puede haber problemas de tratar de ajustarse a una norma. 267 00:18:02,740 --> 00:18:06,060 Algunos de ustedes pueden haber oído hablar del estándar POSIX o de otra, 268 00:18:06,060 --> 00:18:08,730 tal vez otras características. 269 00:18:08,730 --> 00:18:14,520 Esto puede ser seleccionado a veces por los argumentos de línea de comandos 270 00:18:14,520 --> 00:18:17,310 o estableciendo las variables de shell. 271 00:18:17,310 --> 00:18:22,170 Llamarlo como sh o bash en realidad puede conducir a una ejecución diferente 272 00:18:22,170 --> 00:18:25,300 incluso si es el mismo archivo que se está ejecutando. 273 00:18:25,300 --> 00:18:31,800 Otra cosa a considerar es que, incluso si otro equipo tiene tcsh o Bash, 274 00:18:31,800 --> 00:18:35,310 si no están vinculados como están en su computadora local 275 00:18:35,310 --> 00:18:37,990 si usted tiene un equipo local de Linux o Mac OS, 276 00:18:37,990 --> 00:18:45,630 luego otra vez obtendrá la cáscara que se llama sh o csh, no el que es posible que prefiera. 277 00:18:50,430 --> 00:19:01,130 The Bourne shell actual tiene mejoras menores que los de Bash 278 00:19:01,130 --> 00:19:06,100 pero más allá de los de la shell Bourne original. 279 00:19:06,100 --> 00:19:09,690 Como resultado de que, incluso en el shell actual Bourne, SH, 280 00:19:09,690 --> 00:19:14,560 aun cuando no es Bash, se asemeja al lenguaje C más que el C-shell hace. 281 00:19:14,560 --> 00:19:20,460 Eso no era cierto cuando se creó el C-shell primero, pero se ha desarrollado de esa manera. 282 00:19:20,460 --> 00:19:26,560 Usted puede notar aquí que todos estos nombres de shell, excepto para el shell Bourne 283 00:19:26,560 --> 00:19:30,640 tener algo que indique que la cáscara que son - csh, bash - 284 00:19:30,640 --> 00:19:32,550 pero el shell Bourne es sólo sh. 285 00:19:32,550 --> 00:19:34,910 ¿Por qué? Ese fue el shell inicial. 286 00:19:34,910 --> 00:19:37,770 Fue el Shell entonces, no una concha, 287 00:19:37,770 --> 00:19:41,090 y ya que era la concha, no había ninguna razón para distinguirlo de otro proyectil. 288 00:19:41,090 --> 00:19:45,030 Así que por eso tiene ese nombre y todavía lo hace. 289 00:19:50,630 --> 00:19:58,990 >> Esta camiseta aquí es una línea de una base de datos de la contraseña de una cuenta que tengo allí 290 00:19:58,990 --> 00:20:01,680 en otro equipo. 291 00:20:01,680 --> 00:20:08,300 Voy a tratar de conseguir que el nombre para que pueda ver esa parte al final, la cáscara. 292 00:20:09,720 --> 00:20:15,450 La base de datos de la contraseña tiene las características de acceso para todos los usuarios. 293 00:20:15,450 --> 00:20:20,330 Al principio, es el nombre de usuario, que se puede ver los últimos 2 cartas mías ahora. 294 00:20:20,330 --> 00:20:23,970 Los campos aquí son separados por dos puntos. 295 00:20:23,970 --> 00:20:28,210 El último campo, como se puede ver, es bin / tcsh, la cáscara. 296 00:20:28,210 --> 00:20:30,230 Ese es el especificador de shell. 297 00:20:30,230 --> 00:20:33,240 Hay algo interesante aquí. 298 00:20:33,240 --> 00:20:36,950 Cuando Unix fue desarrollado por primera vez, sólo había 1 cáscara, 299 00:20:36,950 --> 00:20:38,350 así que no había otra opción que hay. 300 00:20:38,350 --> 00:20:45,570 Entonces, ¿por qué permitieron un campo en la base de datos de contraseñas para especificar un shell? 301 00:20:45,570 --> 00:20:47,920 No sé, pero es una suerte que lo hicieron. 302 00:20:47,920 --> 00:20:52,030 Es bastante difícil hacer cambios en el formato de datos de contraseñas 303 00:20:52,030 --> 00:20:54,420 porque muchos programas hacen referencia a su formato 304 00:20:54,420 --> 00:20:57,720 y tendría que ser reescrito. 305 00:20:57,720 --> 00:21:04,130 Es un feliz desarrollo o fortuito que incluyen ese campo. 306 00:21:04,130 --> 00:21:12,780 Ese tipo de una línea de archivo de contraseñas se utiliza en todos los equipos Unix y Linux por lo que yo sé. 307 00:21:12,780 --> 00:21:14,650 El Mac tiene su propio sistema. 308 00:21:14,650 --> 00:21:17,810 En realidad, tiene un archivo de contraseñas con las líneas en ese formato, 309 00:21:17,810 --> 00:21:21,060 pero no es ahí donde se definen las características de los usuarios. 310 00:21:21,060 --> 00:21:24,200 Otro comentario entre paréntesis allí. 311 00:21:36,470 --> 00:21:46,020 >> Si llama un shell, se le puede llamar como un sub-shell de sus conchas existentes. 312 00:21:46,020 --> 00:21:50,480 Así que si voy allí, vamos a deshacernos de estas cosas. 313 00:21:50,480 --> 00:21:53,350 Aquí estoy en el C-shell. 314 00:21:56,830 --> 00:22:01,200 Esa variable, que identifica con precisión de mi caparazón, 315 00:22:01,200 --> 00:22:04,300 en realidad no es siempre una manera fiable de determinar qué shell se está ejecutando, 316 00:22:04,300 --> 00:22:06,220 pero en este caso es. 317 00:22:06,220 --> 00:22:08,040 ¿Qué pasa si yo sólo escribo - 318 00:22:09,970 --> 00:22:12,470 Ahora estoy en Bash. 319 00:22:12,470 --> 00:22:19,540 Algunas cosas van a ser los mismos. ls me dicen mis mandamientos. 320 00:22:19,540 --> 00:22:24,500 ¿Si suspendo un regreso a mi C-shell, ls, igual. ¿Cierto? 321 00:22:24,500 --> 00:22:28,890 fg, primer plano, de vuelta a mi shell Bash. 322 00:22:28,890 --> 00:22:38,290 pwd, directorio actual, de nuevo a la C-shell. 323 00:22:38,290 --> 00:22:43,180 pwd, directorio diferente - en realidad no es un directorio diferente en este caso. 324 00:22:43,180 --> 00:22:45,110 Es el mismo directorio. 325 00:22:45,110 --> 00:22:50,000 Digamos que quiero llamar a un comando aquí: donde ls. 326 00:22:50,000 --> 00:22:52,140 ¿Qué quiere hacer? 327 00:22:52,140 --> 00:22:53,670 Me dice cuando el comando ls, 328 00:22:53,670 --> 00:22:56,670 el que me da un listado de directorio, se encuentra en ls. 329 00:22:56,670 --> 00:23:01,460 Volvamos a Bash shell. Vamos a intentar lo mismo. 330 00:23:01,460 --> 00:23:05,830 Hmm, interesante allí, donde: command not found. 331 00:23:05,830 --> 00:23:07,400 ¿Por qué? 332 00:23:07,400 --> 00:23:11,570 El comando donde se integra en el C-shell. 333 00:23:11,570 --> 00:23:15,630 Esto no es un comando que tiene que ser leído en la memoria de alguna otra parte y ejecutado. 334 00:23:15,630 --> 00:23:20,310 El C-shell ejecuta mediante la transferencia de la ejecución de parte de su propio código 335 00:23:20,310 --> 00:23:22,790 y no es en el shell Bash. 336 00:23:22,790 --> 00:23:25,710 Así Bash, que no tenga un comando integrado, lo busca, no lo encuentra, 337 00:23:25,710 --> 00:23:27,720 y obtenemos un error. 338 00:23:27,720 --> 00:23:32,290 Así que ahí tenemos un intérprete de comandos se ejecuta con un C-shell, y llamamos a eso un sub-shell. 339 00:23:32,290 --> 00:23:38,480 Y por si acaso usted es curioso, Bash shell tiene su propia manera de localizar los comandos. 340 00:23:38,480 --> 00:23:42,590 hash se refiere al hecho de que se puede ejecutar más rápidamente, 341 00:23:42,590 --> 00:23:44,960 encontrándose con mayor rapidez. 342 00:23:44,960 --> 00:23:48,610 Esa es una de las mejoras incorporadas en algunas de estas conchas. 343 00:23:50,220 --> 00:23:54,200 >> Conchas de tipo Bourne se prefieren para la programación. 344 00:23:54,200 --> 00:23:57,300 Tienen estructuras de control, como bucles, sentencias condicionales, 345 00:23:57,300 --> 00:24:00,240 el tipo de comandos que puede utilizar en lenguajes de programación como C 346 00:24:00,240 --> 00:24:04,190 o cualquier idioma. Tal vez usted está programando en Java o lo que sea. 347 00:24:04,190 --> 00:24:06,460 Los depósitos tienen aquellos demasiado. 348 00:24:06,460 --> 00:24:11,790 Las conchas de tipo Bourne, en particular Bash, tienen más 349 00:24:11,790 --> 00:24:15,730 y que están diseñados con una mayor flexibilidad. 350 00:24:15,730 --> 00:24:20,700 El intérprete de comandos tiene arrays. El shell Bourne original no lo hace. 351 00:24:20,700 --> 00:24:26,130 Así que puede ser considerablemente más ventajosa para la programación. 352 00:24:26,130 --> 00:24:29,810 El C-shell realidad existen matrices, pero no tiene una gran cantidad de estas otras características. 353 00:24:29,810 --> 00:24:33,450 Las conchas de tipo Bourne se ejecutarán más rápido 354 00:24:33,450 --> 00:24:36,520 si no tienen las características previstas para el uso interactivo. 355 00:24:36,520 --> 00:24:39,340 Se cargue las cosas con un propósito, lo que los carga hacia abajo para otro propósito. 356 00:24:39,340 --> 00:24:41,520 Ahí está esa disyuntiva allí. 357 00:24:41,520 --> 00:24:44,510 Esas características que están destinadas para uso interactivo 358 00:24:44,510 --> 00:24:46,920 realmente son de poco o ningún uso de secuencias de comandos. 359 00:24:46,920 --> 00:24:52,160 Es posible utilizar un sub-shell interactivo como el que yo empecé allí 360 00:24:52,160 --> 00:24:57,780 para poner a prueba los comandos que se va a utilizar en un script. 361 00:24:57,780 --> 00:25:01,180 Eso es lo que no puedes ver con perl. Usted puede hacerlo con las conchas. 362 00:25:01,180 --> 00:25:04,850 Incluso las estructuras como los bucles y así sucesivamente se pueden ejecutar de forma interactiva. 363 00:25:04,850 --> 00:25:07,000 Ellos son en ocasiones útiles para ejecutar de forma interactiva, 364 00:25:07,000 --> 00:25:10,180 pero lo más probable es que usted está utilizando para desarrollar un guión. 365 00:25:15,690 --> 00:25:17,400 >> Alias. 366 00:25:17,400 --> 00:25:21,630 Esto va a ser sobre el C-shell. 367 00:25:23,270 --> 00:25:27,570 Mecanismo de Historia donde se llega de nuevo a los comandos anteriores 368 00:25:27,570 --> 00:25:30,340 o partes de ellos que ha ya ha ejecutado. 369 00:25:30,340 --> 00:25:33,680 Una vez más, sobre el C-shell, la shell Bourne y Korn shell tienen estas cosas, 370 00:25:33,680 --> 00:25:35,620 pero yo no voy a entrar en ellos. 371 00:25:35,620 --> 00:25:40,340 Así que aquí están algunos alias útiles que tengo. 372 00:25:43,100 --> 00:25:44,880 En lugar de escribir ls - es un comando común - 373 00:25:44,880 --> 00:25:47,620 sólo tienes que escribir l y se ahorrará 1 carácter. 374 00:25:47,620 --> 00:25:50,600 ls con varias opciones, todos los trabajos. 375 00:25:50,600 --> 00:25:54,460 Tenga en cuenta que estas definiciones tienen comillas alrededor de ellos. 376 00:25:54,460 --> 00:25:57,520 En estos casos, las comillas no son necesarias. 377 00:25:57,520 --> 00:26:00,100 Si usted puede definir los alias sin comillas, todavía funcionaría. 378 00:26:00,100 --> 00:26:02,910 Son recomendados. 379 00:26:02,910 --> 00:26:04,900 Hay situaciones en las que no se puede utilizar la cita 380 00:26:04,900 --> 00:26:08,050 porque usted quiere que suceda algo que la cita impediría. 381 00:26:08,050 --> 00:26:11,210 A veces se puede citar parte de la definición, pero no todos de la misma. 382 00:26:11,210 --> 00:26:17,010 También se recomienda en general utilizar comillas simples en lugar de comillas dobles. 383 00:26:17,010 --> 00:26:19,750 Las comillas dobles tienen efectos sobre la definición de las variables, 384 00:26:19,750 --> 00:26:22,950 sobre todo haciendo que estos sean evaluados en lugar de detenerlo. 385 00:26:22,950 --> 00:26:25,910 ¿Por qué íbamos a querer detener la evaluación? 386 00:26:25,910 --> 00:26:28,710 ¿Y cómo hacer que las cotizaciones para nosotros? 387 00:26:28,710 --> 00:26:32,600 >> Este es un comando que usted puede ser que encuentre interesante. 388 00:26:32,600 --> 00:26:35,470 'Ls g *' 389 00:26:35,470 --> 00:26:37,640 g *, como usted probablemente sabe, es una expresión comodín 390 00:26:37,640 --> 00:26:40,290 para todos los nombres de archivo que comienzan con g. 391 00:26:40,290 --> 00:26:46,410 Si acabo de escribir en un comando ls g *, voy a conseguir una lista de todos los nombres en mi directorio actual. 392 00:26:46,410 --> 00:26:50,870 Si yo defino ese alias, ya que está aquí con las comillas, 393 00:26:50,870 --> 00:26:56,990 se ejecutará ese comando en el directorio actual donde se está ejecutando ello. 394 00:26:56,990 --> 00:27:01,250 Pero si ejecuta la definición de alias sin comillas, 395 00:27:01,250 --> 00:27:09,620 evaluará el comodín g * cuando se ejecuta este comando de definición. 396 00:27:09,620 --> 00:27:14,400 Así que la definición del alias se ls seguido por la lista de archivos en el directorio 397 00:27:14,400 --> 00:27:16,310 en el que se ejecuta el comando alias, 398 00:27:16,310 --> 00:27:19,180 independientemente de donde realmente se va a ejecutar el comando. 399 00:27:19,180 --> 00:27:26,360 Esto no es de mucha utilidad, y las comillas simples a evitar la evaluación del asterisco. 400 00:27:26,360 --> 00:27:30,780 Así que usted acaba de obtener la definición ser ls g *. 401 00:27:30,780 --> 00:27:35,510 Luego, cuando se ejecuta el alias, lgs, entonces se pone eso. 402 00:27:35,510 --> 00:27:40,490 Ahora ya no hay citas, y evaluarán el asterisco cuando se ejecuta el comando alias. 403 00:27:40,490 --> 00:27:43,900 Así que eso es una cosa. 404 00:27:43,900 --> 00:27:46,590 Las comillas dobles tendrían el mismo efecto aquí, 405 00:27:46,590 --> 00:27:50,580 pero hay otros casos en los que las comillas dobles no iba a funcionar tan bien. 406 00:27:50,580 --> 00:27:52,450 >> Aquí es otro. 407 00:27:52,450 --> 00:27:54,270 Puede que conozcas el comando grep. 408 00:27:54,270 --> 00:28:02,110 El comando grep se puede utilizar para examinar un archivo para las líneas que tienen ciertas cadenas. 409 00:28:02,110 --> 00:28:10,350 Así que vamos a ir de aquí y voy a salir de mi shell Bourne. 410 00:28:23,570 --> 00:28:25,450 Okay. Aquí hay un archivo. 411 00:28:25,450 --> 00:28:31,490 Digamos que es cadenas ABC grep. Ahí está. 412 00:28:31,490 --> 00:28:37,930 Si lo hago zddd grep, no consigo nada. Okay. 413 00:28:37,930 --> 00:28:40,960 Así que encuentra una cadena, se informa; no lo encuentra, no informa de ello. 414 00:28:40,960 --> 00:28:44,930 Genera cualquier línea que tiene esa cadena en él. 415 00:28:44,930 --> 00:28:49,080 Hay todo tipo de opciones aquí que se pueden encontrar en la documentación. 416 00:28:49,080 --> 00:28:52,160 He aquí una manera de hacerlo. 417 00:28:52,160 --> 00:29:03,290 ¿Y ésta, alias grabc 'grep abc'? 418 00:29:03,290 --> 00:29:09,000 Eso va a incluir 1 argumento cuando se define el alias. 419 00:29:09,000 --> 00:29:26,300 Así que si lo hago aquí, ahora si lo hago grabc, 420 00:29:26,300 --> 00:29:30,620 ahora el alias incluye más que el simple comando. También tiene el argumento. 421 00:29:30,620 --> 00:29:32,190 Hasta ahora funciona. 422 00:29:32,190 --> 00:29:38,590 Tengo otro mando aquí, éste, por lo que esas son las diferentes cadenas de ahí 423 00:29:38,590 --> 00:29:46,790 y demostrar que este no encuentra nada allí ya que no coincide. 424 00:29:46,790 --> 00:29:56,180 >> ¿Qué pasa si quiero incluir en la definición de alias en el archivo que voy a buscar 425 00:29:56,180 --> 00:30:02,970 y quiero dar como argumento para el alias de la cadena que estoy buscando? 426 00:30:02,970 --> 00:30:08,040 Podría querer decir abc como argumento a mi alias, 427 00:30:08,040 --> 00:30:10,870 pero el alias ya determinó el archivo. 428 00:30:10,870 --> 00:30:15,710 Y ahí es donde entra en juego esta expresión 429 00:30:20,430 --> 00:30:25,270 Nótese aquí que tenemos grep igual que antes. 430 00:30:25,270 --> 00:30:28,130 Tenemos el archivo aquí, cuerdas. 431 00:30:28,130 --> 00:30:35,610 \! ^, Tipo de una expresión extraña, supongo, si usted no ha visto esto antes. 432 00:30:35,610 --> 00:30:39,920 Signo de exclamación es parte del mecanismo de la historia de C-shell. 433 00:30:39,920 --> 00:30:45,220 Se puede recordar los comandos anteriores, se puede recordar argumentos de los comandos y así sucesivamente. 434 00:30:46,760 --> 00:31:01,570 El mecanismo de historial se utiliza como parte de aliasing. 435 00:31:01,570 --> 00:31:07,390 Si especifica una línea después del signo de exclamación, se referirá a esa línea en la lista de la historia, 436 00:31:07,390 --> 00:31:11,910 que no vamos a estar metiendo ahora, ya que es un tema totalmente distinto. 437 00:31:11,910 --> 00:31:16,280 Es posible especificar parte de una línea. 438 00:31:16,280 --> 00:31:22,950 So! 03:02 sería el segundo argumento de mando número 3. 439 00:31:22,950 --> 00:31:30,430 El símbolo de intercalación en esta expresión representa el primer argumento. 440 00:31:30,430 --> 00:31:34,410 Si no le dan una indicación de qué comando está refiriendo, 441 00:31:34,410 --> 00:31:37,300 se refiere al comando inmediatamente anterior, 442 00:31:37,300 --> 00:31:41,990 y el símbolo de intercalación es un símbolo para el primer argumento. 443 00:31:41,990 --> 00:31:46,820 Debido a que es el símbolo de intercalación y no el número, no es necesario utilizar los dos puntos, 444 00:31:46,820 --> 00:31:52,660 so! ^ significa que el primer argumento de la orden anterior. 445 00:31:52,660 --> 00:31:55,020 Un poco mezclado aquí. 446 00:31:55,020 --> 00:31:58,450 En este caso, cuando se utiliza esto como una definición de alias, 447 00:31:58,450 --> 00:32:04,650 la referencia de la historia se refiere de nuevo a las órdenes en las que se utiliza el alias. 448 00:32:04,650 --> 00:32:08,470 Así que esto va a volver 1 de comandos como una operación de la historia, 449 00:32:08,470 --> 00:32:11,810 sino como una operación alias hace referencia a la orden en la que tendría que escribir, 450 00:32:11,810 --> 00:32:14,780 decir, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 Tenemos aquí las comillas en el mismo. ¿Cuál es la barra invertida para? 452 00:32:20,240 --> 00:32:30,810 En este caso, como en otros, no queremos ejecutar el mecanismo de la historia 453 00:32:30,810 --> 00:32:33,680 mientras se define el alias. 454 00:32:33,680 --> 00:32:37,900 Si no tuviéramos la barra invertida allí, la cáscara se retiraría en el primer argumento 455 00:32:37,900 --> 00:32:41,870 del comando de la derecha antes de que corrió este comando alias, lo que no queremos. 456 00:32:41,870 --> 00:32:47,520 Queremos que esto se integra en el comando alias para llamar en una discusión posterior. 457 00:32:47,520 --> 00:32:53,550 Las comillas simples no escapan a un signo de exclamación, la referencia de la historia. 458 00:32:53,550 --> 00:32:57,450 Tal vez usted sabe el escape expresión significa cambiar el significado de algo. 459 00:32:57,450 --> 00:33:00,260 En este caso, significa dejar algo de tener un significado especial. 460 00:33:00,260 --> 00:33:03,030 Significado especial del signo de exclamación es historia. 461 00:33:03,030 --> 00:33:05,790 Escapa y no tiene ese significado. 462 00:33:05,790 --> 00:33:08,080 Cotizaciones no hacen eso; barra invertida hace. 463 00:33:08,080 --> 00:33:11,900 Así que en realidad estamos usando 2 niveles de escapar de aquí. 464 00:33:23,500 --> 00:33:29,620 Voy a mover este comando en la otra ventana sin escribirla 465 00:33:29,620 --> 00:33:35,210 mediante el uso de estas operaciones de edición, que pueden serle de utilidad. 466 00:33:40,620 --> 00:33:42,460 Otra cosa que aquí os voy a mostrar. 467 00:33:42,460 --> 00:33:46,730 Si usted acaba de escribir alias sin argumentos, que le dice a todos sus argumentos. 468 00:33:46,730 --> 00:33:48,640 Se trata de un montón de alias que ya tenía aquí 469 00:33:48,640 --> 00:33:53,400 además de los que he estado usando aquí hoy. 470 00:33:53,400 --> 00:34:00,220 Pero si acabo de escribir con el nombre de un alias, me dice lo que significa. 471 00:34:00,220 --> 00:34:03,390 Observe que las cotizaciones se han ido y la barra invertida se ha ido. 472 00:34:03,390 --> 00:34:08,620 Esta cadena de aquí es el resultado de esa definición de alias, 473 00:34:08,620 --> 00:34:12,199 y ahora se acaba! ^ en ella. 474 00:34:12,199 --> 00:34:19,150 Esto se va a ver en las cuerdas de archivo para nada. 475 00:34:19,150 --> 00:34:34,900 Así que si lo hago cadenas grstrings_file, yo no le di nada que buscar allí, 476 00:34:34,900 --> 00:34:37,429 pero está buscando en las cuerdas. 477 00:34:37,429 --> 00:34:42,330 No encontraba las palabras cadenas en las cuerdas de archivo, pero sí encontrar abc. 478 00:34:42,330 --> 00:34:46,770 Y no encuentra eso. 479 00:34:46,770 --> 00:34:52,330 Así que aquí estamos dando un argumento que impacta en la definición del alias, 480 00:34:52,330 --> 00:34:55,530 que se inserta en él. 481 00:34:55,530 --> 00:34:58,540 Es el lugar donde esta expresión viene. 482 00:34:58,540 --> 00:35:00,240 Usted puede utilizar más de 1. 483 00:35:00,240 --> 00:35:03,170 El símbolo de intercalación es un símbolo para el primer argumento. 484 00:35:03,170 --> 00:35:07,510 Si desea utilizar un segundo argumento, usted entonces decir: 2. 485 00:35:07,510 --> 00:35:11,250 No hay símbolo especial para el segundo argumento. 486 00:35:11,250 --> 00:35:14,790 Y porque usted está utilizando un número, usted tendría que usar los dos puntos. 487 00:35:14,790 --> 00:35:17,220 Hay, sin embargo, otra opción aquí. 488 00:35:17,220 --> 00:35:21,220 La muestra de dólar representa el último argumento. 489 00:35:21,220 --> 00:35:23,320 Y porque se trata de un símbolo, puede omitir el colon. 490 00:35:23,320 --> 00:35:25,870 Por lo que sería el último argumento en la lista. 491 00:35:25,870 --> 00:35:27,900 Y también está esa. 492 00:35:27,900 --> 00:35:31,380 El asterisco significa que todos, por lo que esta es la lista de argumentos completa, 493 00:35:31,380 --> 00:35:35,150 y de nuevo, se puede omitir el colon debido a que no es un número. 494 00:35:36,970 --> 00:35:39,950 Espero que estés todo observando todo esto. 495 00:35:39,950 --> 00:35:54,100 >> El mecanismo de la historia puede volver a las líneas anteriores en la lista del historial. 496 00:35:54,100 --> 00:36:01,370 Usted puede hacer esto en una definición de alias. 497 00:36:01,370 --> 00:36:02,950 Nunca he visto este hecho. 498 00:36:02,950 --> 00:36:05,840 Esto tendría el efecto de sacar los comandos anteriores en la lista histórica 499 00:36:05,840 --> 00:36:08,130 cuando se ejecuta el alias, lo que podría haber diferentes comandos 500 00:36:08,130 --> 00:36:11,240 dependiendo de cuando y donde lo ejecuta. 501 00:36:11,240 --> 00:36:14,020 Es concebible que es posible que desee retirarse de dicha referencia 502 00:36:14,020 --> 00:36:15,900 sólo para saber lo que era un comando anterior. 503 00:36:15,900 --> 00:36:17,280 Nunca he visto que esto suceda. 504 00:36:17,280 --> 00:36:19,970 Supongo que alguien podría desear, pero esto es muy poco probable. 505 00:36:19,970 --> 00:36:26,480 Hay otra cosa aquí. 506 00:36:26,480 --> 00:36:33,060 Si utiliza esa referencia de tipo de la historia, 507 00:36:33,060 --> 00:36:38,190 a continuación, sólo se utilizan los argumentos para los que existe dicha referencia. 508 00:36:38,190 --> 00:36:42,180 Si usted tiene una definición de alias que no utiliza una referencia de tipo de la historia, 509 00:36:42,180 --> 00:36:44,060 Si sólo se convierte en el principio del comando 510 00:36:44,060 --> 00:36:46,520 y tiene más argumentos, entonces cualquier cosa que escriba después de que 511 00:36:46,520 --> 00:36:48,450 se añaden al comando. 512 00:36:48,450 --> 00:36:52,040 En este caso, el ejemplo que acabo de dar allí, utilizamos el primer argumento; 513 00:36:52,040 --> 00:36:54,610 no usamos ningún otro. 514 00:36:54,610 --> 00:36:57,960 Si se hubieran dado otros argumentos en la línea de comandos, no se utilizarían. 515 00:36:57,960 --> 00:37:04,630 Así que si usted utiliza la referencia de la historia en absoluto, entonces usted debe utilizar para obtener cualquier argumento. 516 00:37:04,630 --> 00:37:11,310 >> Hay otra cosa aquí sólo quiero mencionar, en parte, entre paréntesis, 517 00:37:11,310 --> 00:37:15,250 a saber, que este mecanismo de la historia con el signo de exclamación 518 00:37:15,250 --> 00:37:18,010 se remonta a la C-shell originales. 519 00:37:18,010 --> 00:37:27,060 El tcsh introdujo operaciones historia 520 00:37:27,060 --> 00:37:30,910 que utilizan el tipo de comandos y cadenas de los editores, 521 00:37:30,910 --> 00:37:33,650 ya sea Emacs o vi. 522 00:37:33,650 --> 00:37:36,430 Mi opinión personal es que Emacs es mucho más fácil de utilizar para este propósito 523 00:37:36,430 --> 00:37:39,390 aunque utilice vi para la edición regular. 524 00:37:39,390 --> 00:37:43,900 Hay varios comandos de Emacs que ahora se han adaptado a la historia. 525 00:37:43,900 --> 00:37:46,410 Control P pone la línea anterior en la lista de historial. 526 00:37:46,410 --> 00:37:48,840 Otra Control P le conseguirá la anterior a esa. 527 00:37:48,840 --> 00:37:50,540 La flecha hacia arriba hace lo mismo. 528 00:37:50,540 --> 00:37:54,190 Control No. obtiene el siguiente comando si ya ha desplazado hacia atrás algunos aspectos. 529 00:37:54,190 --> 00:37:55,880 Flecha hacia abajo hace eso también. 530 00:37:55,880 --> 00:38:00,480 Puede mover de izquierda a derecha con las flechas y varias otras cosas. 531 00:38:00,480 --> 00:38:02,390 Esto puede hacer uso del mecanismo de la historia 532 00:38:02,390 --> 00:38:05,070 mucho más fácil que utilizar la sintaxis de exclamación, 533 00:38:05,070 --> 00:38:07,930 pero que no se usará de que en una definición de alias. 534 00:38:17,780 --> 00:38:20,020 Vamos a ir más que en otro momento. 535 00:38:24,300 --> 00:38:25,810 >> Variables. 536 00:38:26,880 --> 00:38:29,510 ¿Sabes lo que las variables están en lenguajes de programación. 537 00:38:29,510 --> 00:38:31,680 Las cáscaras de ellos tienen también. 538 00:38:31,680 --> 00:38:37,350 El C-shell utiliza el comando set para asignar las variables, 539 00:38:37,350 --> 00:38:41,360 por lo que establece la variable a un valor de b - 540 00:38:41,360 --> 00:38:46,390 como he dicho, una definición inútil sino una ilustración de cómo se utiliza. 541 00:38:48,790 --> 00:38:52,410 El comando set creará una variable si no existe ya. 542 00:38:55,270 --> 00:39:02,490 Las posiciones para los scripts de shell se pueden considerar las variables, 543 00:39:02,490 --> 00:39:10,750 pero el uso de los mismos y las reglas para ellos son algo diferentes. 544 00:39:10,750 --> 00:39:14,320 No se puede asignar un valor a $ 1 en el transcurso de un guión. 545 00:39:14,320 --> 00:39:18,340 Usted tendría que definir una nueva variable para ese propósito si algunos de ustedes querían. 546 00:39:23,000 --> 00:39:28,470 Escriba SET sin argumentos y se obtiene una lista de todas las variables definidas actualmente. 547 00:39:28,470 --> 00:39:34,220 Y vamos a llegar a mi otro shell aquí y veamos lo que obtenemos si hacemos eso. 548 00:39:34,220 --> 00:39:37,110 Toda una larga lista, ¿verdad? 549 00:39:37,110 --> 00:39:40,990 Desplácese hacia arriba un poco. Mira todo eso. 550 00:39:40,990 --> 00:39:44,330 Algunas de estas cosas se definen automáticamente por el shell. 551 00:39:44,330 --> 00:39:49,320 El shell crea la variable y le da un valor. 552 00:39:49,320 --> 00:39:52,730 Algunos de ellos son definidos por el shell, pero luego redefinidas por el usuario 553 00:39:52,730 --> 00:39:54,820 de acuerdo con sus preferencias. 554 00:39:54,820 --> 00:39:59,110 Y algunos de ellos son creados por el usuario en función de lo que está haciendo ese día. 555 00:39:59,110 --> 00:40:01,880 Eso es sólo set sin argumentos. 556 00:40:06,920 --> 00:40:10,050 Hay una extraña característica aquí de esta cosa. 557 00:40:10,050 --> 00:40:17,980 Tiene que ser o ningún espacio entre signo igual y el nombre de la variable 558 00:40:17,980 --> 00:40:23,700 y el valor o los espacios a ambos lados del signo igual, 559 00:40:23,700 --> 00:40:28,940 como en este uno. 560 00:40:35,620 --> 00:40:41,340 Esto no va a funcionar, y esto realmente es un comando válido 561 00:40:41,340 --> 00:40:43,390 pero no va a hacer lo que tenía planeado. 562 00:40:43,390 --> 00:40:50,070 Ese comando funcionará porque si acabas de decir y establecer un nombre de variable 563 00:40:50,070 --> 00:40:54,890 sin signo igual o conjunto y un nombre de variable con un signo igual y sin valor, 564 00:40:54,890 --> 00:40:57,770 se establece la variable en un valor nulo. 565 00:40:57,770 --> 00:41:00,120 A fin de establecer a = es un comando válido. 566 00:41:00,120 --> 00:41:04,370 El comando set puede definir más de 1 variable sobre la misma línea. 567 00:41:04,370 --> 00:41:11,240 Así que este comando de aquí tiene el efecto de definir a y b a valores nulos. 568 00:41:11,240 --> 00:41:13,470 Probablemente no es lo que quieres. 569 00:41:13,470 --> 00:41:17,940 Este de aquí, se mencionó anteriormente, dará lugar a un error 570 00:41:17,940 --> 00:41:21,270 ya = b no es una expresión válida. 571 00:41:21,270 --> 00:41:23,680 Un nombre de variable no puede empezar con el signo igual. 572 00:41:26,760 --> 00:41:29,080 Y hay estas cosas nuevas aquí. 573 00:41:29,080 --> 00:41:36,820 Los dos puntos se utilizan para seleccionar los argumentos de las líneas de la historia, 574 00:41:36,820 --> 00:41:41,210 y que pueden ser utilizados - y yo no entraron en antes - para modificar esas cosas. 575 00:41:41,210 --> 00:41:44,480 Ellos también se pueden utilizar para modificar las variables de shell. 576 00:41:44,480 --> 00:41:49,050 Este de aquí, $ a, tiene un valor. 577 00:41:49,050 --> 00:41:55,040 : R despegará una extensión. 578 00:41:55,040 --> 00:41:57,200 Una extensión será cualquier cosa después de un punto, 579 00:41:57,200 --> 00:41:59,200 un punto y nada después de que al final de un archivo, 580 00:41:59,200 --> 00:42:03,230 sólo al final de la lista después de la última barra. 581 00:42:03,230 --> 00:42:05,480 Así que tengo aquí. 582 00:42:05,480 --> 00:42:10,730 una es que. Se dejará caer el. O. 583 00:42:10,730 --> 00:42:16,510 Si no hay extensión, sólo los nombres de ruta después de la última barra, no tendrá ningún efecto. 584 00:42:16,510 --> 00:42:27,480 a: h, que una expresión variable, despegará el último elemento de una lista de directorios, 585 00:42:27,480 --> 00:42:29,660 de nuevo, sólo después de la última barra. 586 00:42:29,660 --> 00:42:33,160 Así que / a / b / c se convierte en / a / b, 587 00:42:33,160 --> 00:42:38,870 pero éste se cambia porque el elemento después de la lista es nulo. 588 00:42:38,870 --> 00:42:43,070 Aquí hay algo que también quiero hacer hincapié. 589 00:42:43,070 --> 00:42:46,770 Estos calificadores no buscan la existencia de estos archivos. 590 00:42:46,770 --> 00:42:48,910 Ellos sólo buscan cadenas. 591 00:42:48,910 --> 00:42:54,520 Estos pretenden manipular a los nombres de archivos, rutas de acceso, 592 00:42:54,520 --> 00:42:57,520 pero se pueden utilizar en cualquier cadena, incluso si no es un nombre de archivo. 593 00:42:57,520 --> 00:42:58,920 Y ellos no buscan la existencia, 594 00:42:58,920 --> 00:43:03,550 por lo que si no existe tal archivo, / a / b / c, esto seguirá funcionando. 595 00:43:03,550 --> 00:43:06,930 Ya sea de alguna utilidad, es otra cuestión, pero todavía funciona. 596 00:43:06,930 --> 00:43:12,850 Las variables son diferentes en los shells Bourne. Ya llegaremos a eso más adelante. 597 00:43:12,850 --> 00:43:18,240 Signo de dólar se puede escapar al igual que el signo de exclamación y el asterisco. 598 00:43:18,240 --> 00:43:21,760 Signo de dólar se puede escapar con una barra invertida o las comillas simples. 599 00:43:21,760 --> 00:43:24,790 Las comillas dobles tienen el extraño efecto en todas las conchas 600 00:43:24,790 --> 00:43:28,690 de obligar a la evaluación de una muestra de dólar expresión variable. 601 00:43:28,690 --> 00:43:31,960 Así que si está siendo escapó de una manera, las comillas dobles pueden tener el efecto 602 00:43:31,960 --> 00:43:34,380 de causando que se puede evaluar de todos modos. 603 00:43:34,380 --> 00:43:37,090 Esto es un poco confuso. 604 00:43:37,090 --> 00:43:43,740 Si hay varios niveles de escapar, como las comillas simples dentro de comillas dobles 605 00:43:43,740 --> 00:43:46,770 o comillas dobles dentro de comillas simples, se debe probar para ver qué va a pasar 606 00:43:46,770 --> 00:43:49,520 a una variable si está usando uno. 607 00:43:49,520 --> 00:43:53,410 Esas situaciones 2 - doble en el interior de un solo interior, único de doble - 608 00:43:53,410 --> 00:43:55,980 no necesariamente le dará el mismo resultado. 609 00:44:02,520 --> 00:44:05,600 Las variables de entorno, variables de C-shell consolidados. 610 00:44:05,600 --> 00:44:08,340 Las variables de entorno son también variables en el C-shell, 611 00:44:08,340 --> 00:44:11,250 y también son variables en otras cáscaras demasiado. 612 00:44:11,250 --> 00:44:15,230 En el C-shell, son conjuntos distintos. 613 00:44:15,230 --> 00:44:18,130 Las cosas que yo decía antes son acerca de las variables de shell. 614 00:44:18,130 --> 00:44:21,300 Las variables de entorno son un conjunto distinto de variables 615 00:44:21,300 --> 00:44:28,650 con la excepción de algunas variables que llamamos variables ligadas, 616 00:44:28,650 --> 00:44:30,640 que son muy importantes y vamos a entrar en eso más tarde. 617 00:44:30,640 --> 00:44:34,950 Las variables de entorno se transmiten automáticamente 618 00:44:34,950 --> 00:44:41,800 a las conchas o los comandos que se ejecutan desde la shell. 619 00:44:41,800 --> 00:44:46,220 Las otras cosas no lo son. Las variables de shell, los alias no lo son. Las variables de entorno son. 620 00:44:46,220 --> 00:44:48,630 Es por eso que los llamamos variables de entorno, 621 00:44:48,630 --> 00:44:55,030 La idea es que el medio ambiente se extiende más allá sólo su shell actual. 622 00:44:55,030 --> 00:45:00,510 Ellos se pueden utilizar para definir las cosas para los comandos. 623 00:45:00,510 --> 00:45:05,470 He aquí un ejemplo. IMPRESORA, LPDEST. 624 00:45:05,470 --> 00:45:12,270 Ambas variables se pueden definir una impresora que un comando utilizará para imprimir las cosas. 625 00:45:12,270 --> 00:45:16,500 Si tiene varias impresoras en todo, es posible que desee poner el que más te guste. 626 00:45:16,500 --> 00:45:21,320 La razón por la que tenemos 2 variables es que los diferentes conjuntos de comandos se escribieron 627 00:45:21,320 --> 00:45:23,870 el uso de estos diferentes variables. 628 00:45:23,870 --> 00:45:25,910 Usted puede darles valores diferentes. 629 00:45:25,910 --> 00:45:28,860 Lo más probable es que les des tanto el mismo valor. 630 00:45:28,860 --> 00:45:35,840 Esas cosas funcionan porque los comandos que hacen la impresión 631 00:45:35,840 --> 00:45:40,740 fueron programados para examinar los valores de estas variables. 632 00:45:42,200 --> 00:45:46,150 Si un programa no se escribieron de esa manera, si fuera escrito para hacer otra cosa, 633 00:45:46,150 --> 00:45:48,280 la variable sería irrelevante. 634 00:45:48,280 --> 00:45:52,530 De modo que el sistema operativo no está en busca de estas variables 635 00:45:52,530 --> 00:45:55,210 cada vez que se refieren a una impresora. 636 00:45:55,210 --> 00:45:59,090 Un comando que hace la impresión está en busca de estas variables si está programado de esa manera. 637 00:46:11,030 --> 00:46:15,240 Estas variables se definen a menudo en los archivos de inicialización 638 00:46:15,240 --> 00:46:19,440 pero no necesariamente. 639 00:46:19,440 --> 00:46:21,050 Usted puede definir en la línea de comandos. 640 00:46:21,050 --> 00:46:24,090 Pueden definirse en un comando. 641 00:46:24,090 --> 00:46:28,740 Un comando que se ejecuta algo podría tener su propia selección de variables - 642 00:46:28,740 --> 00:46:32,390 variables que son exclusivos de un paquete de software en particular, por ejemplo. 643 00:46:32,390 --> 00:46:36,740 Estos serán definidos cuando se ejecuta el paquete. 644 00:46:39,690 --> 00:46:42,680 ¿Cómo son estas variables pasan a un sub-shell? 645 00:46:42,680 --> 00:46:48,210 Cuando se escribe un sub-shell, no escribe en esa área. 646 00:46:48,210 --> 00:46:53,260 El área de la sub-shell que se dedica a las variables de entorno 647 00:46:53,260 --> 00:46:56,450 que no está escrito por el sub-shell, sino que está escrito por copia. 648 00:46:56,450 --> 00:47:00,530 Cuando se ejecuta un comando común, tales como estos comandos para imprimir o lo que sea, 649 00:47:00,530 --> 00:47:03,840 que empiezan por la creación de un nuevo shell. 650 00:47:03,840 --> 00:47:06,190 El shell crea una concha y luego sobrescribe parte de ella 651 00:47:06,190 --> 00:47:08,800 con el comando que se está ejecutando, que es un poco confuso, 652 00:47:08,800 --> 00:47:10,740 pero así es como estos comandos obtienen las variables de entorno 653 00:47:10,740 --> 00:47:14,890 que a continuación se refieren al futuro. 654 00:47:21,920 --> 00:47:28,010 El comando aquí para definir el setenv variable. 655 00:47:28,010 --> 00:47:36,470 Así es como se definen. Es 3 elementos: setenv, variables, valor. 656 00:47:36,470 --> 00:47:44,710 Si usted apenas setenv sin argumentos, ¿qué se obtiene? 657 00:47:47,220 --> 00:47:48,810 Una lista de todas esas variables. 658 00:47:48,810 --> 00:47:53,190 De nuevo, es una buena lista larga y en este caso, como en los otros, 659 00:47:53,190 --> 00:47:57,320 estas variables se definen en gran parte por mi operación de inicio de sesión por el propio depósito 660 00:47:57,320 --> 00:47:59,740 no por nada de lo que hice. 661 00:47:59,740 --> 00:48:03,580 Hay otro mando aquí, printenv. 662 00:48:07,520 --> 00:48:10,340 Eso también imprime el medio ambiente. 663 00:48:10,340 --> 00:48:15,240 Observe este último que aquí, = Editor vi. 664 00:48:15,240 --> 00:48:21,120 Eso dice que si estoy usando algo que llama a un editor 665 00:48:21,120 --> 00:48:25,530 y no especifico un editor y me permite la elección, puede darme vi. 666 00:48:25,530 --> 00:48:37,280 ¿Qué pasa si hago EDITOR printenv? Me dice lo que es. 667 00:48:37,280 --> 00:48:41,340 Justo antes de eso, había una variable, MENOS. 668 00:48:41,340 --> 00:48:46,040 Estas son las opciones por defecto cuando ejecuto el comando MENOS, 669 00:48:46,040 --> 00:48:49,360 que muestra archivos. 670 00:48:49,360 --> 00:48:55,910 Así que si hago eso, printenv puede tomar 1 o 0 argumento argumentos, 671 00:48:55,910 --> 00:48:58,070 no más de 1. 672 00:49:01,800 --> 00:49:05,690 Hay otros comandos también, pero no vamos a entrar en todo lo que hoy en día. 673 00:49:05,690 --> 00:49:11,010 Recuerde que no eran los modificadores de las variables de shell, como: h, 674 00:49:11,010 --> 00:49:14,350 que lo llevará hasta el último elemento de una ruta de acceso, 675 00:49:14,350 --> 00:49:17,950 o: r, que se reducirá una extensión. 676 00:49:17,950 --> 00:49:23,110 Aquellos ahora se aplican a las variables de entorno también. Ellos no solían hacerlo. 677 00:49:23,110 --> 00:49:24,960 Solía ​​ser que no podían ser modificados. Ahora que puede ser. 678 00:49:24,960 --> 00:49:29,190 Es uno de los avances con los desarrollos de las conchas en los últimos años. 679 00:49:29,190 --> 00:49:35,620 Decía que las conchas como parte de los entornos 680 00:49:35,620 --> 00:49:43,040 y las variables de shell en el C-shell son, con algunas excepciones, conjuntos distintos. 681 00:49:43,040 --> 00:49:46,790 Puede establecer una variable de entorno y una variable de shell con el mismo nombre. 682 00:49:46,790 --> 00:49:49,220 Serán diferentes variables, ya que pueden tener diferentes valores. 683 00:49:49,220 --> 00:49:53,090 Cambiar el valor de uno no va a cambiar el valor de la otra. 684 00:49:53,090 --> 00:49:58,070 Estas variables se evaluaron con el signo de dólar - $ a, $ lo que sea. 685 00:49:58,070 --> 00:50:02,340 ¿Y qué si usted tiene esto? ¿Sabe usted cuál se obtiene? 686 00:50:02,340 --> 00:50:04,520 En mis pruebas me dieron la variable de shell, 687 00:50:04,520 --> 00:50:07,240 pero esto no está documentado y no se puede confiar en eso. 688 00:50:07,240 --> 00:50:10,270 Así que me pregunto, es la creación de las variables de shell y el medio ambiente 689 00:50:10,270 --> 00:50:13,490 con los mismos nombres una buena idea? No. De acuerdo. 690 00:50:13,490 --> 00:50:17,460 ¿Cuáles son los principales excepciones en que las variables del entorno y shell 691 00:50:17,460 --> 00:50:19,860 están vinculados el uno al otro? 692 00:50:19,860 --> 00:50:27,470 Hay estos 4. 693 00:50:32,030 --> 00:50:35,510 Variable de entorno TERM Mayúscula, 694 00:50:35,510 --> 00:50:41,540 shell término variable en letras pequeñas, tipo de emulación de terminal. 695 00:50:41,540 --> 00:50:47,430 Yo sólo voy a ir de aquí y yo voy a hacer eco, un comando útil en este caso, 696 00:50:47,430 --> 00:50:52,560 $ $ TERM plazo. Y ahí. 697 00:50:52,560 --> 00:51:00,570 xterm es un tipo de terminal para las ventanas que aparecen en el sistema X Window. 698 00:51:00,570 --> 00:51:04,330 xterm-color es una variación del que permite que diferentes colores. 699 00:51:04,330 --> 00:51:06,580 ¿Por qué nos definimos estos? ¿Qué es esto bueno? 700 00:51:06,580 --> 00:51:09,740 Los comandos que reorganizan la pantalla como el editor 701 00:51:09,740 --> 00:51:13,680 enviar secuencias particulares, llamadas secuencias de escape, 702 00:51:13,680 --> 00:51:18,160 a un terminal o una ventana para reorganizar y así sucesivamente. 703 00:51:18,160 --> 00:51:20,990 Estas secuencias son diferentes para diferentes tipos de terminales. 704 00:51:20,990 --> 00:51:23,100 Esto le dice a ella que los utilicen. 705 00:51:23,100 --> 00:51:25,900 A veces hay problemas allí. 706 00:51:25,900 --> 00:51:28,600 Es posible que desee cambiar eso. 707 00:51:28,600 --> 00:51:30,780 Si las cosas no funcionan, a veces el tipo de terminal se configura mal, 708 00:51:30,780 --> 00:51:36,440 usted puede ser capaz de arreglarlo por redefinir el término variable. 709 00:51:36,440 --> 00:51:43,420 En estos casos, el cambio de una variable, la variable de entorno o la variable de shell, 710 00:51:43,420 --> 00:51:45,970 debe cambiar la otra. 711 00:51:45,970 --> 00:51:50,970 He descubierto a través de la experiencia que el cambio TERM en mayúsculas 712 00:51:50,970 --> 00:51:54,060 no siempre cambiar variable de shell término en minúsculas. 713 00:51:54,060 --> 00:51:55,550 Esto es un error. 714 00:51:55,550 --> 00:51:59,400 No sé si eso es siempre verdad. La mayoría de las veces no es verdad, pero que puede ser. 715 00:51:59,400 --> 00:52:02,490 Así que si usted hace un cambio, simplemente comprobar que fuera. 716 00:52:02,490 --> 00:52:05,830 No es frecuente que se necesita cambiar ese valor, pero de vez en cuando lo hace. 717 00:52:05,830 --> 00:52:08,260 Variable de entorno USER. 718 00:52:08,260 --> 00:52:12,070 Una vez más, la variable de entorno en mayúsculas, shell variable en minúsculas. 719 00:52:12,070 --> 00:52:13,710 Este es su nombre de usuario. 720 00:52:13,710 --> 00:52:16,730 Es sólo en circunstancias muy excepcionales 721 00:52:16,730 --> 00:52:18,420 que te gustaría cambiar eso. 722 00:52:18,420 --> 00:52:22,350 Si su nombre de usuario es otra persona, que puede tirar todo tipo de cosas. 723 00:52:22,350 --> 00:52:26,040 Directorio de inicio, el directorio home del usuario. 724 00:52:26,040 --> 00:52:28,060 Una vez más, usted no quiere cambiar eso. 725 00:52:28,060 --> 00:52:32,260 Fíjese en todos estos casos y la que estamos a punto de cubrir, la variable de ruta, 726 00:52:32,260 --> 00:52:37,070 variable de entorno es en mayúsculas y la variable de shell unido es en minúsculas. 727 00:52:37,070 --> 00:52:39,240 Si cambia uno, usted debe cambiar a la otra. 728 00:52:39,240 --> 00:52:45,960 Este tipo de unión no se puede establecer como no se puede obligar a 2 variables, 729 00:52:45,960 --> 00:52:50,570 aparte de estos 4, y la unión de estas variables no se puede deshacer, 730 00:52:50,570 --> 00:52:52,090 no se puede separar. 731 00:52:52,090 --> 00:52:55,820 Así que estos 4 pares de variables están obligados. 732 00:52:55,820 --> 00:52:59,020 Ellos siempre van a ser. Ninguno otros serán. 733 00:52:59,020 --> 00:53:05,720 Además, sería posible crear variables con los mismos nombres 734 00:53:05,720 --> 00:53:07,780 de los tipos opuestos. 735 00:53:07,780 --> 00:53:11,600 Usted podría hacer un término variable de shell en minúsculas 736 00:53:11,600 --> 00:53:14,990 o una variable de entorno TERM en mayúsculas. 737 00:53:14,990 --> 00:53:19,040 Aquellas variables serían independientes de estas variables apareadas 738 00:53:19,040 --> 00:53:20,780 y que serían independientes el uno del otro. 739 00:53:20,780 --> 00:53:23,780 No puedo imaginar por qué haría eso a menos que quiera confundir a la gente. 740 00:53:24,600 --> 00:53:29,730 Este de aquí, variable de la ruta, esta es una muy importante. 741 00:53:29,730 --> 00:53:35,550 Otra cosa es que no puede haber casos 742 00:53:35,550 --> 00:53:40,430 de variables con nombres pareadas similares que no están vinculados entre sí. 743 00:53:40,430 --> 00:53:45,000 No puede haber variables, Shell y Shell, en mayúsculas y minúsculas. 744 00:53:45,000 --> 00:53:48,300 Sobre la base de ese nombre, que no sabes si esa variable es una variable de shell 745 00:53:48,300 --> 00:53:51,580 o una variable de entorno, y están no ligados entre sí. 746 00:53:51,580 --> 00:53:55,300 Así que ese tipo de pares de nombres no implica variables ligadas. 747 00:53:55,300 --> 00:53:58,830 La variable de la ruta, que estaba mostrando antes, 748 00:53:58,830 --> 00:54:01,880 es una lista de los nombres de las rutas en las que el shell busca los comandos. 749 00:54:01,880 --> 00:54:12,320 Vamos a esta ventana aquí y haremos todo lo echo $ PATH, mayúsculas - 750 00:54:12,320 --> 00:54:20,230 variable de entorno - echo $ PATH, minúsculas - shell variable. 751 00:54:20,230 --> 00:54:24,980 Observe que la lista de directorios es el mismo. Estos están obligados. 752 00:54:24,980 --> 00:54:26,590 Cambia uno, cambia el otro. 753 00:54:26,590 --> 00:54:32,970 En la variable de entorno los elementos están separados por dos puntos. Tenga en cuenta que. 754 00:54:32,970 --> 00:54:35,130 Las variables de shell están separados por espacios. 755 00:54:35,130 --> 00:54:38,760 Esta variable de entorno es una sola cadena. 756 00:54:38,760 --> 00:54:41,480 La variable de shell es una matriz. 757 00:54:41,480 --> 00:54:43,490 El shell Bourne no tenía arrays. 758 00:54:43,490 --> 00:54:46,600 Bash hace, pero esto ya es una parte fija de la cáscara. 759 00:54:46,600 --> 00:54:48,660 Se trata de una sola cadena y no una matriz. 760 00:54:48,660 --> 00:54:50,420 El C-shell siempre tuvo arrays. 761 00:54:50,420 --> 00:54:52,630 Las matrices son mucho más fáciles de trabajar. 762 00:54:52,630 --> 00:54:54,400 Puede hacer referencia a partes de ella. 763 00:54:54,400 --> 00:55:02,350 $ Ruta Entonces echo [1] y me sale / usr / bin, el primer elemento. 764 00:55:02,350 --> 00:55:09,950 Una vez más, recuerde signo de dólar representa el último elemento de la lista del historial. 765 00:55:09,950 --> 00:55:16,850 ¿Qué pasa ahí? Se trató de encontrar el signo de dólar como un símbolo de la variable. 766 00:55:16,850 --> 00:55:20,850 Me escapo ella. Lo sentimos. No haría falta que sea. 767 00:55:20,850 --> 00:55:23,690 Algunas de estas cosas no funcionan tan bien. 768 00:55:23,690 --> 00:55:28,140 Tal vez sólo tendremos que dejar eso a cabo. 769 00:55:28,140 --> 00:55:36,980 El asterisco se refiere a toda la cosa, pero eso es lo que se obtiene si no se especifica un elemento. 770 00:55:36,980 --> 00:55:46,170 Otra forma en que las variables de matriz se pueden manipular, 771 00:55:46,170 --> 00:55:49,500 número de elementos allí, 7 elementos. 772 00:55:49,500 --> 00:55:53,410 Aquí ponemos el signo de número antes del nombre de variable. 773 00:55:53,410 --> 00:55:58,280 Aquí hay otro. Ponga un signo de interrogación allí. 774 00:55:58,280 --> 00:56:03,170 Ese es un valor lógico. Eso indica que la variable existe. 775 00:56:03,170 --> 00:56:05,160 Es otra forma de trabajar con variables. 776 00:56:05,160 --> 00:56:06,660 Que, por cierto, no tiene que ser una variable de matriz. 777 00:56:06,660 --> 00:56:08,210 Eso podría ser cualquier variable. 778 00:56:08,210 --> 00:56:11,840 Y si lo hago, no hay tal variable y me siento un 0. 779 00:56:11,840 --> 00:56:14,990 Otra pequeña cosa que hay sobre las evaluaciones de variables. 780 00:56:23,670 --> 00:56:32,950 Volver a este de aquí, si por alguna razón usted quería trabajar con este 781 00:56:32,950 --> 00:56:37,990 en lugar de trabajar con la matriz, la variable de shell, 782 00:56:37,990 --> 00:56:41,470 hay comandos que pueden separar estas cosas sobre la base de los dos puntos. 783 00:56:41,470 --> 00:56:44,080 De hecho, si usted va a estar haciendo esto en el intérprete de comandos, posiblemente, 784 00:56:44,080 --> 00:56:47,110 una especie de guión, que sería probablemente la forma en que lo haría. 785 00:56:47,110 --> 00:56:50,350 Pero en el C-shell es mucho más fácil de usar del arreglo. 786 00:56:50,350 --> 00:56:58,250 En el shell Bourne, variables que son asignadas por una sola expresión de este tipo, 787 00:56:58,250 --> 00:57:01,760 como la forma en que usted puede asignar una variable en un lenguaje de programación, 788 00:57:01,760 --> 00:57:05,110 y aquí no debe haber espacios. 789 00:57:05,110 --> 00:57:09,110 Es necesario que sea sólo 1 cadena. 790 00:57:09,110 --> 00:57:14,980 En las conchas de tipo Bourne, todas las variables son variables de shell. 791 00:57:14,980 --> 00:57:19,250 Las variables de entorno son un subconjunto de las variables de shell. 792 00:57:19,250 --> 00:57:24,060 Se distinguen de las variables no ambientales mediante la exportación. 793 00:57:24,060 --> 00:57:28,860 El comando para hacerlo es la exportación, como IMPRESORA exportación. 794 00:57:28,860 --> 00:57:34,930 Si tuviéramos que definir una variable de este tipo, 795 00:57:34,930 --> 00:57:38,480 si queríamos un comando de impresión para encontrarlo, tendría que ser una variable de entorno, 796 00:57:38,480 --> 00:57:40,730 y así es como lo hacemos uno. 797 00:57:40,730 --> 00:57:42,090 Aquí hay algo un poco confuso. 798 00:57:42,090 --> 00:57:50,430 Esta expresión, su exportación al medio ambiente, se deriva de este concepto shell Bourne, 799 00:57:50,430 --> 00:57:54,520 y sin embargo, esa expresión se utiliza en la descripción de la C-shell, 800 00:57:54,520 --> 00:57:57,920 donde no existe tal orden como de exportación. 801 00:57:57,920 --> 00:58:06,200 Si usted acaba de decir exportación por sí mismo, se obtiene una lista de los exportados - 802 00:58:06,200 --> 00:58:10,620 Así que si yo simplemente exporto aquí, no hay tal cosa. 803 00:58:13,620 --> 00:58:15,200 Bien, ahí vamos. 804 00:58:15,200 --> 00:58:17,010 Estas cosas, por cierto, también se definen por el shell. 805 00:58:17,010 --> 00:58:19,400 No me defino cualquiera de estos por mi mismo. 806 00:58:19,400 --> 00:58:23,550 La concha hace todo tipo de cosas por sí mismo. 807 00:58:23,550 --> 00:58:26,650 Se debe hacer las cosas de forma automática. 808 00:58:30,240 --> 00:58:36,880 En Bash o Korn, se puede ejecutar un comando como el siguiente, 809 00:58:36,880 --> 00:58:42,000 que ambos dan una variable un valor y exportarlo en 1 mando. 810 00:58:42,000 --> 00:58:46,150 En el shell de Bourne tienen que ser comandos separados como exportación a. 811 00:58:46,150 --> 00:58:48,410 Aquí hay otro aspecto que es confuso. 812 00:58:48,410 --> 00:58:52,220 El comando set en el C-shell define variables 813 00:58:52,220 --> 00:58:55,550 y sin argumentos te dice cuáles son los valores de las variables son. 814 00:58:55,550 --> 00:59:01,140 En el intérprete de comandos, el comando set sin argumentos hace lo mismo, 815 00:59:01,140 --> 00:59:03,580 pero con argumentos que hace algo muy diferente. 816 00:59:03,580 --> 00:59:06,200 Así que estos son los diversos argumentos aquí. 817 00:59:06,200 --> 00:59:10,460 Algunos de estos son las variables de entorno, algunas de ellas son las variables de shell. 818 00:59:10,460 --> 00:59:13,200 Todas ellas son variables de shell realmente. Algunas de esas son las variables de entorno. 819 00:59:15,690 --> 00:59:23,920 El comando set con argumentos puede ser usado para operar 820 00:59:23,920 --> 00:59:28,220 sobre los parámetros de posición a un guión, 821 00:59:28,220 --> 00:59:33,910 que es una forma de acceder a ellos de una sola vez. 822 00:59:33,910 --> 00:59:36,150 En realidad no podemos entrar en eso hoy. 823 00:59:36,150 --> 00:59:39,580 También se puede utilizar para cambiar el comportamiento de la cáscara. 824 00:59:39,580 --> 00:59:46,700 Particularmente en Bash hay variables que determinarán el comportamiento del shell. 825 00:59:46,700 --> 00:59:51,310 Entonces también sólo este comando que usted puede ver, este comando. 826 00:59:51,310 --> 00:59:59,050 Typeset seguido de variables y tipos de variables se usa en los shells Korn y Bash. 827 00:59:59,050 --> 01:00:04,970 No es obligatorio, pero puede ser utilizado para restringir los valores de las variables, 828 01:00:04,970 --> 01:00:08,400 que puede ser útil para evitar errores, y es bastante común. 829 01:00:08,400 --> 01:00:11,640 Así que sólo estoy mencionando que en caso de que vea en alguna parte. 830 01:00:17,290 --> 01:00:19,160 El comando dónde. 831 01:00:19,160 --> 01:00:22,490 ¿Recuerdas que mencioné antes, el lugar donde el mandamiento en el C-shell, 832 01:00:22,490 --> 01:00:28,750 que le puede indicarle la ubicación de una ruta de acceso de comandos. 833 01:00:28,750 --> 01:00:32,580 Aquí está la sustitución de comandos. 834 01:00:32,580 --> 01:00:41,900 Usted debe encontrar en su teclado en algún lugar de un personaje que se parece a esto. 835 01:00:41,900 --> 01:00:44,910 La ubicación en el teclado va a variar. 836 01:00:44,910 --> 01:00:47,050 Lo hemos llamado backquote. Es aproximadamente del tamaño de una cotización. 837 01:00:47,050 --> 01:00:48,720 Va desde la parte superior izquierda a la inferior derecha. 838 01:00:48,720 --> 01:00:52,690 Aquí en mi teclado Mac está en la esquina superior izquierda. 839 01:00:52,690 --> 01:00:58,150 Ese carácter se puede utilizar para ejecutar un comando en un comando. 840 01:00:58,150 --> 01:01:03,400 Si usted tiene una expresión dentro de comillas inversas, 841 01:01:03,400 --> 01:01:07,080 esa expresión es un comando, se ejecuta. 842 01:01:07,080 --> 01:01:09,010 La salida de ese comando 843 01:01:09,010 --> 01:01:11,980 es sustituido luego por toda la expresión backquote 844 01:01:11,980 --> 01:01:16,110 dentro de un comando ya que entonces se ejecuta con que la producción 845 01:01:16,110 --> 01:01:22,010 como parte de su serie de argumentos y así sucesivamente. 846 01:01:22,010 --> 01:01:28,640 Este es un comando que utiliza eso. 847 01:01:28,640 --> 01:01:32,340 Demostremos la operación aquí. 848 01:01:44,980 --> 01:01:49,090 Subamos aquí, sacar las comillas inversas. 849 01:01:49,090 --> 01:01:54,410 Control de A me llega al principio de la línea con la sintaxis de edición de Emacs. 850 01:01:54,410 --> 01:02:00,380 Hasta ahora, la rutas de acceso es lo que ¿de dónde viene, 851 01:02:00,380 --> 01:02:05,040 pero cuando lo hago de esta manera, entonces se enchufa en esa lista de nombres de ruta 852 01:02:05,040 --> 01:02:08,750 en lugar de toda esta expresión backquote y se ejecuta ls-l en ellos. 853 01:02:08,750 --> 01:02:11,120 Algo cómodo, ¿no? 854 01:02:11,120 --> 01:02:14,860 Así que eso es una cosa ordenada. Así es como funcionan comillas inversas. 855 01:02:14,860 --> 01:02:17,560 Ahora vamos a ir un poco más lejos. 856 01:02:17,560 --> 01:02:22,050 Estos son los alias. En realidad yo uso estos. 857 01:02:22,050 --> 01:02:26,410 Voy a tratar de conseguir esto con 1 operación de edición. 858 01:02:34,900 --> 01:02:36,900 Okay. 859 01:02:36,900 --> 01:02:39,630 Ahora vamos a ver cómo esas definiciones salieron. 860 01:02:39,630 --> 01:02:44,930 alias LWH decirme cómo se define. 861 01:02:44,930 --> 01:02:51,210 Observe que es sólo esto, pero las cotizaciones externas se han quitado 862 01:02:51,210 --> 01:02:53,750 y el signo de exclamación se lo llevan fuera. 863 01:02:53,750 --> 01:02:58,940 ! *, La lista completa de todos los argumentos. 864 01:02:58,940 --> 01:03:03,580 En una definición de alias que se aplicará de nuevo a donde yo uso esto. 865 01:03:03,580 --> 01:03:10,620 lwh fiesta ksh. Okay. 866 01:03:10,620 --> 01:03:13,960 ¿Ves cómo funciona? Me ahorra algo de tecleo. 867 01:03:13,960 --> 01:03:16,440 Subamos un poco solo por mencionar algo más aquí. 868 01:03:19,150 --> 01:03:23,120 Nótese aquí estos proyectiles diferentes. Debería haberlo dicho antes. 869 01:03:23,120 --> 01:03:36,060 El csh tiene un 2 por aquí y también lo hace / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 Podríamos establecer por otros medios que aquellos son en realidad el mismo archivo. 871 01:03:39,870 --> 01:03:43,150 Recuerda que yo estaba diciendo si escribe SH se obtiene bash. 872 01:03:43,150 --> 01:03:47,390 Escriba esto y usted tiene esto. 873 01:03:47,390 --> 01:03:51,730 Pero los que no están vinculados. Aquellos tienen los solos allí. 874 01:03:51,730 --> 01:03:54,910 Y este no es el tipo de archivo que se llame a otro. 875 01:03:54,910 --> 01:03:59,460 Así que estos son archivos separados; las C-shell son el mismo archivo. 876 01:03:59,460 --> 01:04:03,640 Volver aquí abajo, el otro aquí, este alias, 877 01:04:03,640 --> 01:04:09,090 tenga en cuenta que se está ejecutando este comando, archivo. 878 01:04:09,090 --> 01:04:13,810 Eso alias funciona eso. Archivo le indica el tipo de un archivo. 879 01:04:13,810 --> 01:04:20,330 Fiesta ksh Así FWH. Okay. 880 01:04:20,330 --> 01:04:23,230 Ese es el resultado del comando file. 881 01:04:23,230 --> 01:04:24,630 No sé si usted sabe lo que esto significa aquí, 882 01:04:24,630 --> 01:04:26,750 Mach-O binario universal, con 2 arquitecturas. 883 01:04:26,750 --> 01:04:30,470 Hay 2 posibles tipos de procesadores en Mac, 884 01:04:30,470 --> 01:04:34,780 y algunos programas fueron escritos para ser capaz de ejecutar con ambos, 885 01:04:34,780 --> 01:04:37,950 y el comando file puede determinar que, por lo que eso es lo que esto significa. 886 01:04:37,950 --> 01:04:40,660 Ambos archivos fueron escritos de esa manera. 887 01:04:40,660 --> 01:04:43,760 Así vemos cómo funciona el alias, vemos cómo funciona el backquote, 888 01:04:43,760 --> 01:04:48,640 vemos cómo funciona el ls real de los archivos o de archivos. 889 01:04:52,050 --> 01:04:57,000 Esto podría no funcionar. Try "donde dónde" y "lwh donde". Bueno, vamos a intentar eso. 890 01:04:57,000 --> 01:05:01,040 donde dónde. 891 01:05:01,040 --> 01:05:03,500 donde es una cáscara integrada. 892 01:05:03,500 --> 01:05:06,970 Recuerde que ya demostró que Bash no tenía dónde. 893 01:05:06,970 --> 01:05:10,080 Si escribe en qué parte del intérprete de comandos, aparece un mensaje de error. 894 01:05:10,080 --> 01:05:12,540 Es sólo una parte de la cubierta en lugar de ser un comando independiente. 895 01:05:12,540 --> 01:05:20,000 ¿Qué sucede si escribo lwh buscando dónde? Vea lo que sucede allí. 896 01:05:20,000 --> 01:05:22,850 Ran donde donde, conseguido este resultado, y luego trató de ejecutar ls 897 01:05:22,850 --> 01:05:25,600 como l en donde es una cáscara integrada. 898 01:05:25,600 --> 01:05:28,790 donde está ahí, pero no existen los otros. 899 01:05:28,790 --> 01:05:32,090 Ninguno de ellos existe, en realidad. 900 01:05:32,090 --> 01:05:35,560 Así que no siempre funciona, y también ilustra cómo algunas cosas 901 01:05:35,560 --> 01:05:39,580 no haces exactamente lo que usted podría haber pensado. 902 01:05:40,930 --> 01:05:43,010 Bajemos un poco más aquí. 903 01:05:44,890 --> 01:05:54,760 Esto aquí es en Bash. Esa es también la sustitución de comandos como la comilla inversa. 904 01:05:54,760 --> 01:06:05,280 Pero a diferencia de backquote, utiliza este estilo variable. 905 01:06:05,280 --> 01:06:09,860 Hay una serie de expresiones que comienzan con un signo de dólar, 906 01:06:09,860 --> 01:06:16,070 y si bien estos no son variables, tomaron prestado el uso del signo de dólar 907 01:06:16,070 --> 01:06:19,570 para indicar una expresión de algún tipo. 908 01:06:19,570 --> 01:06:23,550 Eso puede estar rodeado de paréntesis o corchetes o paréntesis dobles, 909 01:06:23,550 --> 01:06:26,320 que tiene un propósito diferente. 910 01:06:26,320 --> 01:06:29,500 Paréntesis Soltero aquí son una sustitución de comandos al igual que los acentos graves. 911 01:06:29,500 --> 01:06:32,720 Paréntesis dobles es en realidad una operación aritmética. 912 01:06:32,720 --> 01:06:35,380 Hay otras sintaxis, otras operaciones. 913 01:06:35,380 --> 01:06:41,520 Sintaxis backquote está disponible en Bash. 914 01:06:41,520 --> 01:06:46,780 Sin embargo, éste es preferible. Es mucho más fácil de leer y que permite la anidación. 915 01:06:46,780 --> 01:06:51,300 Usted puede tener dentro de $ (comando) otro comando, 916 01:06:51,300 --> 01:06:54,590 algo así como - 917 01:07:14,560 --> 01:07:18,210 Puedo obtener una lista allí. 918 01:07:18,210 --> 01:07:21,670 Eso funcionaría si tuviera la comilla inversa también. 919 01:07:32,050 --> 01:07:38,470 ¿Y si quiero hacer algo así - 920 01:08:03,390 --> 01:08:06,430 Usted probablemente no realmente usar este comando, 921 01:08:06,430 --> 01:08:14,160 pero esta sustitución de orden interno se hace eco de los nombres de todos los archivos que comienzan con a, 922 01:08:14,160 --> 01:08:18,229 entonces éste se ejecuta ls-l en esos archivos, 923 01:08:18,229 --> 01:08:20,500 y entonces éste sólo se hace eco de la salida. 924 01:08:21,729 --> 01:08:24,479 Usted probablemente no haría esto, sólo harías lo eco o ls, 925 01:08:24,479 --> 01:08:29,450 pero esto ilustra el funcionamiento de la anidación de comandos. 926 01:08:29,450 --> 01:08:34,380 Así que otra de las características aquí. 927 01:08:34,380 --> 01:08:37,450  He mencionado esto antes, que cuando se tiene en qué lugar del C-shell, 928 01:08:37,450 --> 01:08:42,770 escribir obras en las conchas de tipo Bourne para la localización de los comandos. 929 01:08:48,939 --> 01:08:52,270 Comandos incorporados, justo lo que estaba diciendo que no. 930 01:08:52,270 --> 01:08:54,640 Los comandos son parte de la concha, como dónde. 931 01:08:54,640 --> 01:08:59,880 Cuando el shell ejecuta un comando como ls, se localiza a través de la ruta, 932 01:08:59,880 --> 01:09:03,029 lo encuentra en algún directorio en alguna parte, 933 01:09:03,029 --> 01:09:05,800 dice que en la memoria, se crea un nuevo shell, 934 01:09:05,800 --> 01:09:08,960 lee el comando ls o lo que sea en la cáscara 935 01:09:08,960 --> 01:09:11,450 donde ya se ubican las variables de entorno, 936 01:09:11,450 --> 01:09:14,000 y luego se transfiere la ejecución a la misma. 937 01:09:14,000 --> 01:09:18,319 Incorporado en el mando, el código para ese comando es el interior de la concha, 938 01:09:18,319 --> 01:09:21,460 por lo que el shell sólo comienza a ejecutar parte de su propio código. 939 01:09:21,460 --> 01:09:24,569 donde es un comando. En realidad se hace más rápido. 940 01:09:24,569 --> 01:09:28,380 No tiene que leer nada en la memoria, sino que ya está en la memoria. 941 01:09:28,380 --> 01:09:32,460 Comandos integrados siempre tienen prioridad sobre las órdenes con el mismo nombre. 942 01:09:32,460 --> 01:09:36,050 Los comandos que se encuentran en los directorios en la ruta de acceso pueden tener el mismo nombre, 943 01:09:36,050 --> 01:09:39,090 comandos en diferentes directorios, archivos en directorios diferentes. 944 01:09:39,090 --> 01:09:41,740 La que se produce antes en el camino es el que se obtiene. 945 01:09:41,740 --> 01:09:43,770 Si hay un comando integrado, que siempre lo consigue. 946 01:09:43,770 --> 01:09:47,890 No hay manera de darle una prioridad más baja que un comando en el camino. 947 01:09:47,890 --> 01:09:54,140 Si usted quiere conseguir que el comando path, puede escribir el nombre de ruta completo. 948 01:09:54,140 --> 01:09:55,850 Si había un comando donde en la ruta de acceso en alguna parte, 949 01:09:55,850 --> 01:09:58,440 podría escribir / bin / dónde y que lo entenderías. 950 01:09:58,440 --> 01:10:01,800 Si no desea escribir toda la ruta, se podría definir un alias. 951 01:10:01,800 --> 01:10:06,310 De hecho, si usted le dio el alias el mismo nombre que el comando integrado, que funcionaría 952 01:10:06,310 --> 01:10:08,790 porque se evalúa la definición de alias 953 01:10:08,790 --> 01:10:13,220 antes de que el shell determina que se trata de un comando integrado en el que se debe ejecutar. 954 01:10:18,810 --> 01:10:23,440 Entonces esto se vuelve un poco más complicado con algunos comandos aquí. 955 01:10:23,440 --> 01:10:29,880 El caso de algunos comandos son en realidad construida-en los comandos y en el camino. 956 01:10:29,880 --> 01:10:34,140 Uno de ellos es el eco, el comando que acaba de utilizar hace un rato en esos ejemplos. 957 01:10:34,140 --> 01:10:37,410 Echo es un comando en la ruta y que se encuentra en todos los depósitos. 958 01:10:37,410 --> 01:10:40,580 No necesariamente todos se comportan de la misma manera. 959 01:10:40,580 --> 01:10:42,970 En su origen fue un comando sólo en el camino. 960 01:10:42,970 --> 01:10:45,280 Fue construido en las conchas más tarde. 961 01:10:45,280 --> 01:10:48,080 Debido a que hay opciones que dependen del medio ambiente 962 01:10:48,080 --> 01:10:52,970 y las opciones de línea de comandos, los comandos integrados 963 01:10:52,970 --> 01:10:57,030 fueron escritos para funcionar lo mismo que el comando que había estado en el camino, 964 01:10:57,030 --> 01:10:59,670 es poco probable que hubieran sido escritas de esa manera 965 01:10:59,670 --> 01:11:01,720 si el comando ya no había sido escrito por el camino. 966 01:11:01,720 --> 01:11:06,180 Así que esto tiene efectos secundarios. Su historia tiene efectos aquí. 967 01:11:06,180 --> 01:11:08,380 Hay opciones que hay. 968 01:11:14,280 --> 01:11:23,060 También hay una opción definida por una variable en el tcsh llamado echo_style. 969 01:11:23,060 --> 01:11:27,700 Esa es una de las variables que pueden cambiar la forma en que se hacen eco las obras. 970 01:11:27,700 --> 01:11:30,910 Hay otros casos en los que puede asignar una variable 971 01:11:30,910 --> 01:11:36,290 que cambia la forma en que la operación de la cáscara, como un comando integrado, funciona. 972 01:11:36,290 --> 01:11:38,130 No afectaría a cualquier otra cosa 973 01:11:38,130 --> 01:11:40,640 ya que otros comandos no tienen acceso a las variables de shell, 974 01:11:40,640 --> 01:11:42,090 sólo las variables de entorno. 975 01:11:42,090 --> 01:11:45,360 Pero las operaciones de shell pueden leer las variables de shell. 976 01:11:45,360 --> 01:11:50,710 Eso no va a funcionar para csh. Eso es sólo tcsh. Esa es una de las mejoras. 977 01:11:58,540 --> 01:12:04,620 Parsing tiene secuencias cuando se evalúa metacaracteres, 978 01:12:04,620 --> 01:12:08,140 cuando se evalúa las variables, alias, referencias de historia. 979 01:12:08,140 --> 01:12:11,830 Hay una secuencia particular para estas cosas. 980 01:12:11,830 --> 01:12:13,730 Si hace las cosas de una secuencia particular 981 01:12:13,730 --> 01:12:16,080 y llega a algo que es una expresión de una especie 982 01:12:16,080 --> 01:12:20,650 que ya ha sido evaluado, no va a evaluar de nuevo. 983 01:12:20,650 --> 01:12:24,520 Si lo consigue, entonces, sólo se pasará en los personajes. 984 01:12:24,520 --> 01:12:29,920 Así que si la evaluación de algunas expresiones como la sustitución de comandos 985 01:12:29,920 --> 01:12:36,850 o variable o lo que sea da lugar a una expresión 986 01:12:36,850 --> 01:12:39,240 que le gustaría que para ser evaluados, 987 01:12:39,240 --> 01:12:42,510 que funcionará sólo si esa evaluación se produce al final de la secuencia. 988 01:12:42,510 --> 01:12:45,010 Espero que estoy siendo claro que no. 989 01:12:45,010 --> 01:12:50,460 Esa secuencia de análisis, una operación en el C-shell, 990 01:12:50,460 --> 01:12:56,490 no es lo mismo para los comandos integrados como lo es para los comandos de los no integrados. 991 01:12:56,490 --> 01:12:58,890 No estoy seguro acerca de Bash allí. 992 01:12:58,890 --> 01:13:02,450 Por ejemplo, si una variable Shell produjo una referencia historia, 993 01:13:02,450 --> 01:13:04,230 probablemente no volvería en la historia. 994 01:13:04,230 --> 01:13:06,010 Sería acaba de obtener el signo de exclamación. 995 01:13:06,010 --> 01:13:08,840 De hecho, sólo podemos probar eso ahora mismo. 996 01:13:09,720 --> 01:13:18,240 establecer a = y vamos a tener que poner esto ahí. 997 01:13:30,690 --> 01:13:34,580 Oh, espera. Lo siento. Hice esto en el Bash. Yo quería hacerlo aquí. 998 01:13:53,470 --> 01:13:56,080 Ver, por lo que no evaluó que la referencia la historia 999 01:13:56,080 --> 01:14:00,520 porque ya era pasado el punto de evaluación de expresiones de historia 1000 01:14:00,520 --> 01:14:02,720 cuando se evaluó la variable. 1001 01:14:02,720 --> 01:14:05,550 Así que eso es 1 efecto de análisis. 1002 01:14:05,550 --> 01:14:08,760 Y de nuevo, comandos integrados no se hacen de la misma manera. 1003 01:14:08,760 --> 01:14:11,230 Está bien. Vamos a ir a la siguiente aquí. 1004 01:14:11,230 --> 01:14:16,060 Este pretende ser 1 línea, pero está haciendo más fácil la lectura. 1005 01:14:19,130 --> 01:14:21,530 ¿Qué quiere hacer? 1006 01:14:21,530 --> 01:14:28,640 Usted puede recordar que podamos evaluar asteriscos como comodines de nombre de archivo, 1007 01:14:28,640 --> 01:14:33,890 y hay otros determinados comodines, como el signo de interrogación y expresiones con corchetes. 1008 01:14:33,890 --> 01:14:39,000 Este tipo de evaluación se denomina globbing. 1009 01:14:39,000 --> 01:14:46,290 establecer noglob a principios de este comando dice no hagas eso. 1010 01:14:46,290 --> 01:14:53,370 noglob unset dice volver a hacer eso. 1011 01:14:53,370 --> 01:14:56,440 Tenga en cuenta que conjunto glob no tendría ese efecto. 1012 01:14:56,440 --> 01:15:00,800 En el lenguaje ordinario, glob establecer o noglob unset parecen ser equivalentes, 1013 01:15:00,800 --> 01:15:03,290 pero aquí no lo es. Es noglob desarmado. 1014 01:15:05,120 --> 01:15:07,910 Ahora tset. tset paró para el grupo terminal. 1015 01:15:07,910 --> 01:15:11,840 No se usa a menudo que ahora, pero antes de disponer de sistemas de ventanas 1016 01:15:11,840 --> 01:15:15,760 y que tenía una sola terminal, puede que tenga que determinar el tipo. 1017 01:15:15,760 --> 01:15:18,700 Y si algo iba a venir a través de Ethernet o de la red, 1018 01:15:18,700 --> 01:15:21,120 usted podría querer decir que es un vt100. 1019 01:15:21,120 --> 01:15:26,630 VT100 es una especie de estándar en el negocio de terminales. Proviene de la terminal DEC. 1020 01:15:26,630 --> 01:15:35,270 Si usted acaba de hacer dialup - cuenta de que? Esto se remonta un largo camino, ¿eh? 1021 01:15:35,270 --> 01:15:39,520 Así que si simplemente no TSET aquí, 1022 01:15:39,520 --> 01:15:45,250 si yo sólo hago tset, ha de restablecer mi terminal, pero no vio nada. 1023 01:15:45,250 --> 01:15:47,340 En realidad no 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 setenv TERM xterm-color. 1027 01:15:53,350 --> 01:15:57,080 Ya sabemos que el término se estableció de esa manera, así que eso no cambiaba. 1028 01:15:57,080 --> 01:15:58,860 Esa es la manera que nos gustaría hacerlo. 1029 01:15:58,860 --> 01:16:07,080 Pero note que este comando, tset-s, la salida sólo estos comandos. No ejecutarlos. 1030 01:16:07,080 --> 01:16:09,770 No ejecutar estos comandos, sino que la salida de ellos. 1031 01:16:09,770 --> 01:16:13,650 Así que esta es la intención de producir comandos que luego se ejecutan. 1032 01:16:13,650 --> 01:16:16,360 ¿Te acuerdas de la orden en ese archivo que acabo mostró que tenía una Q en el mismo. 1033 01:16:16,360 --> 01:16:18,910 Así que vamos a hacer eso. 1034 01:16:18,910 --> 01:16:23,750 El Q suprime alguna salida, pero eso no importa aquí, como se puede ver. 1035 01:16:23,750 --> 01:16:27,980 Yo sólo voy a hacer eso para mostrar que no tenía importancia. 1036 01:16:27,980 --> 01:16:31,870 Esto está en la sintaxis backquote. 1037 01:16:31,870 --> 01:16:35,340 Tenga en cuenta el backquote aquí, backquote aquí. 1038 01:16:35,340 --> 01:16:37,680 Estoy omitiendo estas cosas aquí. 1039 01:16:37,680 --> 01:16:39,570 Estos son los casos de decirle qué hacer 1040 01:16:39,570 --> 01:16:42,050 en el caso de determinados tipos de terminales - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, red telefónica, lo que usted tiene. 1042 01:16:45,400 --> 01:16:48,050 No importa aquí porque no estamos haciendo en realidad ninguna de estas cosas. 1043 01:16:48,050 --> 01:16:49,720 Sólo estoy ilustrando el comando. 1044 01:16:49,720 --> 01:16:55,170 Si hago esto con la comilla inversa, ¿qué voy a recibir? 1045 01:16:55,170 --> 01:17:00,210 Observe también aquí que esta incluido el noglob set y el noglob unset, 1046 01:17:00,210 --> 01:17:02,630 Así que estos son ahora redundantes en la definición. 1047 01:17:02,630 --> 01:17:05,380 Eso no fue siempre así, pero ahora están incluidas en esta orden. 1048 01:17:05,380 --> 01:17:08,890 Pero vamos a ver qué pasa si hago lo que 1049 01:17:08,890 --> 01:17:12,570 y voy al principio de la línea con Control A y lo hago. 1050 01:17:14,380 --> 01:17:18,040 Bueno, establezca: Command not found. Eso es un poco raro, ¿no? 1051 01:17:18,040 --> 01:17:20,570 conjunto es un comando muy conocido. Es parte de la cáscara. 1052 01:17:20,570 --> 01:17:24,040 establece: Command not found? ¿Por qué? 1053 01:17:24,040 --> 01:17:26,790 Hmm. Bueno, vamos a pensar en esto. 1054 01:17:26,790 --> 01:17:31,100 Se está ejecutando una sustitución de comandos backquote, 1055 01:17:31,100 --> 01:17:37,430 y que se produce a una cierta parte de la secuencia de analizar el comando. 1056 01:17:37,430 --> 01:17:40,360 conjunto es un comando incorporado. 1057 01:17:40,360 --> 01:17:43,900 Así que para el momento en que hace que la sustitución de comandos, 1058 01:17:43,900 --> 01:17:48,280 que ya ha conseguido más allá del punto de identificación de comandos integrados. 1059 01:17:48,280 --> 01:17:51,900 Por lo tanto, trata a establecer como si se tratara de un comando en el camino. 1060 01:17:51,900 --> 01:17:55,440 Ni que decir tiene, que no lo encuentra y se obtiene un error. 1061 01:17:55,440 --> 01:17:59,300 Bueno. Hay un ejemplo de secuencia de análisis. 1062 01:17:59,300 --> 01:18:01,460 Y ¿qué hacemos al respecto? 1063 01:18:01,460 --> 01:18:04,800 Observe este comando muy interesante aquí, eval. 1064 01:18:04,800 --> 01:18:06,530 Me pregunto lo que hace. 1065 01:18:06,530 --> 01:18:08,760 Si nos fijamos en el manual - y vamos a hacer eso 1066 01:18:08,760 --> 01:18:12,000 para mostrar lo confuso estos manuales son - 1067 01:18:12,000 --> 01:18:19,400 man tcsh, manual confusa, la búsqueda de las cosas que aquí no es fácil tampoco. 1068 01:18:19,400 --> 01:18:31,850 Aquí vamos, eval arg, para que podamos tener 1 o más argumentos 1069 01:18:31,850 --> 01:18:34,090 y hay una lista de cosas que hay. 1070 01:18:34,090 --> 01:18:37,730 Se usa para tratar los argumentos como entradas a la shell 1071 01:18:37,730 --> 01:18:43,600 y ejecuta los comandos resultantes en el contexto de la shell actual. 1072 01:18:43,600 --> 01:18:46,900 Esto se utiliza generalmente para ejecutar comandos generados como resultado de comando 1073 01:18:46,900 --> 01:18:51,310 o la sustitución de variables, porque el análisis se produce antes de que estas sustituciones. 1074 01:18:51,310 --> 01:18:52,580 Muy bueno. 1075 01:18:52,580 --> 01:18:54,740 Y aquí incluso se refieren a la orden tset para un uso de la muestra 1076 01:18:54,740 --> 01:18:57,700 como la que acabo de mostrar. 1077 01:18:57,700 --> 01:19:00,440 Ahora tengo que conseguir la ventana de nuevo a un lugar útil. 1078 01:19:03,150 --> 01:19:07,800 Vayamos por aquí y vamos a ver que eval se utiliza justo antes de eso. 1079 01:19:07,800 --> 01:19:14,010 Así que vamos a ver qué pasa si ponemos - aquí vamos con las flechas a ese comando 1080 01:19:14,010 --> 01:19:20,940 y controlar una al principio, EVAL. 1081 01:19:20,940 --> 01:19:22,850 Bueno, por lo que funciona. 1082 01:19:22,850 --> 01:19:26,440 Al hacer eval, que tarda lo que viene después y lo hace un comando. 1083 01:19:26,440 --> 01:19:29,460 Esto le permite esencialmente Parse dos veces. 1084 01:19:29,460 --> 01:19:33,710 La sección aquí se ejecuta este comando dentro de las comillas inversas, 1085 01:19:33,710 --> 01:19:36,210 obtiene la salida. 1086 01:19:36,210 --> 01:19:42,850 Se supone que la salida que se ejecuten como esos comandos aquí como estos 1087 01:19:42,850 --> 01:19:45,890 en éste y éste. 1088 01:19:45,890 --> 01:19:50,100 Así que esos comandos están ahora aquí en esta secuencia, 1089 01:19:50,100 --> 01:19:58,950 pero estos están incorporados en los comandos y no pueden obtener de inmediato. 1090 01:19:58,950 --> 01:20:06,440 Así que vamos a eval, eval recoge que hasta, empieza todo de nuevo, y funciona. 1091 01:20:06,440 --> 01:20:18,460 Un ejemplo tanto de backquoting, eval, el análisis, las consecuencias del análisis sintáctico, 1092 01:20:18,460 --> 01:20:21,910 y un comando que es probablemente de muy poca utilidad para usted hoy en día. 1093 01:20:21,910 --> 01:20:25,540 Okay. Muy bien, umask. 1094 01:20:25,540 --> 01:20:32,160 Echemos un vistazo a este comando aquí, umask 022. Me pregunto lo que hace. 1095 01:20:32,160 --> 01:20:38,420 Vamos a escriba umask sin nada después de ella. 22. Okay. 1096 01:20:38,420 --> 01:20:44,350 022 y hacerlo de nuevo. 1097 01:20:44,350 --> 01:20:48,580 Como ya habrán adivinado, umask sin argumentos te dice la máscara actual; 1098 01:20:48,580 --> 01:20:51,760 umask con argumentos hace que sea eso, pero esa era la que ya tenía. 1099 01:20:51,760 --> 01:20:53,800 ¿Qué significa 022? 1100 01:21:01,650 --> 01:21:07,080 Estos son aquí las protecciones para un archivo. 1101 01:21:07,080 --> 01:21:11,440 Ellos determinan quién puede leer o escribir o ejecutar el archivo. 1102 01:21:11,440 --> 01:21:16,560 Protecciones también se llaman los permisos. 1103 01:21:16,560 --> 01:21:21,390 La r representa de lectura, el w para escritura, 1104 01:21:21,390 --> 01:21:25,500 y la X, que no está presente allí, significa ejecutar. 1105 01:21:25,500 --> 01:21:27,260 Hay 3 categorías de allí. 1106 01:21:27,260 --> 01:21:33,540 Los 3 últimos elementos se encuentran en la categoría de usuario. Aquellos se aplican a mí, el usuario. 1107 01:21:33,540 --> 01:21:36,870 Estos 3 aquí se aplican al grupo. 1108 01:21:36,870 --> 01:21:41,590 El archivo pertenece al grupo 1, el usuario puede pertenecer a varios grupos, 1109 01:21:41,590 --> 01:21:47,150 pero si el usuario está en el grupo al que pertenece el archivo, 1110 01:21:47,150 --> 01:21:51,090 a continuación, estas protecciones se aplican a él si él no es el usuario. 1111 01:21:51,090 --> 01:21:54,230 Y éste es todo el mundo. 1112 01:21:55,540 --> 01:21:57,690 Estas categorías son mutuamente excluyentes. 1113 01:21:57,690 --> 01:21:59,750 Las protecciones de usuario se aplican a él, 1114 01:21:59,750 --> 01:22:03,780 las protecciones de grupo se aplican a los miembros del grupo que no sea el usuario, 1115 01:22:03,780 --> 01:22:08,110 y las otras protecciones sólo se aplican a personas distintas del usuario, y los miembros del grupo. 1116 01:22:08,110 --> 01:22:12,320 Si hay una ro aw o un x, significa que se ha concedido la protección. 1117 01:22:12,320 --> 01:22:13,950 Si hay un guión, significa que no es. 1118 01:22:13,950 --> 01:22:16,690 De hecho, existen otras cosas que se pueden poner aquí además de estos, 1119 01:22:16,690 --> 01:22:18,350 que no voy a entrar en ahora. 1120 01:22:18,350 --> 01:22:24,450 El umask define un valor predeterminado para los archivos que usted crea. 1121 01:22:24,450 --> 01:22:28,580 Y como una máscara, básicamente, dice que los bits que no se hayan establecido. 1122 01:22:28,580 --> 01:22:30,450 ¿Cómo se ha convertido en pedazos? 1123 01:22:30,450 --> 01:22:33,240 Si usted piensa en cada uno de ellos como un número octal, 1124 01:22:33,240 --> 01:22:42,120 este es el bit de 1s, esto es los 2s, esto es los 4s. 1125 01:22:42,120 --> 01:22:45,840 Así que de 0 a 7 1126 01:22:45,840 --> 01:22:51,770 describa qué combinación de r, w de, y las x que tiene para estos 3 1127 01:22:51,770 --> 01:22:53,710 y luego un número similar de estos y luego para estos. 1128 01:22:53,710 --> 01:23:12,030 Así que 022 significa 0 para la otra, para el grupo 2, 2 para el usuario. 1129 01:23:12,030 --> 01:23:15,870 Pero esto es una máscara. La máscara es lo que usted no tiene. 1130 01:23:19,380 --> 01:23:20,610 Lo siento. Me acabo de dar las cosas en el orden equivocado. 1131 01:23:20,610 --> 01:23:25,620 Es la primera 3. Estos 3 son el usuario, estos 3 son el grupo, estos 3 son los otros. 1132 01:23:25,620 --> 01:23:27,970 Lo siento, te di éstos en el orden equivocado. 1133 01:23:27,970 --> 01:23:31,910 El 0, que es el primero de ellos, no se muestra el valor, 1134 01:23:31,910 --> 01:23:35,430 pero si un número no es ahí, es un 0. 1135 01:23:35,430 --> 01:23:38,370 Eso significa que todos los 3 de ellos se permitiría. 1136 01:23:38,370 --> 01:23:41,550 Observe que en este en particular no se permite que la x. 1137 01:23:41,550 --> 01:23:44,090 La razón es que la cáscara es capaz de determinar 1138 01:23:44,090 --> 01:23:46,260 si un archivo debe ser ejecutado o no. 1139 01:23:46,260 --> 01:23:49,800 Dado que esto no es un archivo ejecutable, que no puso la x. 1140 01:23:49,800 --> 01:23:54,000 Los 2 significa que el permiso de escritura, la segunda categoría aquí, 1141 01:23:54,000 --> 01:23:56,500 el que está en el medio, se le niega. 1142 01:23:56,500 --> 01:23:58,500 Así que de nuevo, estas son las cosas que se negó. 1143 01:23:58,500 --> 01:24:02,080 Bueno, está permitido x pero no está aquí porque no es ejecutable 1144 01:24:02,080 --> 01:24:04,260 y lo mismo para los otros. 1145 01:24:04,260 --> 01:24:08,880 Así que eso es un umask común. 1146 01:24:08,880 --> 01:24:14,630 Otra común es 700 - darte todo y nadie más nada. 1147 01:24:14,630 --> 01:24:17,040 Y hay otras posibilidades. 1148 01:24:21,340 --> 01:24:27,110 Voy a volver a eso. El uso de la historia que puedo buscar de nuevo para eso, lwh para allá. 1149 01:24:27,110 --> 01:24:30,210 Okay. Así que aquí, éstas son las conchas. 1150 01:24:30,210 --> 01:24:36,020 Bash, el dueño, que es la cuenta del sistema, puede hacerlo todo. 1151 01:24:36,020 --> 01:24:41,210 Grupo y todos los demás pueden hacer lectura o de ejecución, pero no escribir. 1152 01:24:41,210 --> 01:24:44,570 Éste ni siquiera permite al propietario para escribir en él. 1153 01:24:44,570 --> 01:24:46,460 Si el propietario quería escribir en él, la cuenta del sistema, 1154 01:24:46,460 --> 01:24:48,020 tendría que cambiar la protección primero. 1155 01:24:48,020 --> 01:24:53,940 Pero, de nuevo, la umask establece el valor predeterminado por enmascararlo, 1156 01:24:53,940 --> 01:24:57,160 indicando las partes que no se pueden establecer. 1157 01:24:57,160 --> 01:25:04,380 Esto es por lo general en uno de los archivos de inicialización, que es el archivo. Cshrc para el C-shell 1158 01:25:04,380 --> 01:25:07,500 o el perfil. para las conchas de tipo Bourne. 1159 01:25:07,500 --> 01:25:12,520 Puede ser en otro lugar también si hay otros archivos de inicialización en el sistema. 1160 01:25:12,520 --> 01:25:14,610 De todos modos, eso es umask. 1161 01:25:14,610 --> 01:25:18,180 Hay algo un poco raro aquí, 1162 01:25:18,180 --> 01:25:22,800 y es que, ¿por qué hay un solo comando para esto? 1163 01:25:22,800 --> 01:25:28,690 Si estuviera escribiendo esto, me gustaría que sea una variable, umask = algún valor. 1164 01:25:28,690 --> 01:25:31,100 ¿Por qué hay todo un comando para este propósito? 1165 01:25:31,100 --> 01:25:34,560 La razón es ésta sólo se remonta a los orígenes de Unix. 1166 01:25:34,560 --> 01:25:41,050 Unix era sólo un proyecto de programación en los Laboratorios Bell en la década de 1970. 1167 01:25:41,050 --> 01:25:42,610 La gente sólo se reunieron para el programa. 1168 01:25:42,610 --> 01:25:45,290 Ellos nunca tuvieron la intención que se convierta en un sistema operativo en todo el mundo. 1169 01:25:45,290 --> 01:25:47,250 Diferentes personas escribieron diferentes partes sin pensar mucho 1170 01:25:47,250 --> 01:25:49,790 de cómo se van a utilizar - más bien sucinta. 1171 01:25:49,790 --> 01:25:53,290 Y se unieron así, y sigue siendo así en algunos aspectos. 1172 01:25:53,290 --> 01:25:57,930 Así que refleja la historia, y todavía hay esas incoherencias y los elementos extraños de la misma. 1173 01:25:57,930 --> 01:26:00,750 Okay. Siguiente una aquí. 1174 01:26:08,170 --> 01:26:11,000 Como he escrito antes, el C-shell no se usa realmente mucho para la programación, 1175 01:26:11,000 --> 01:26:12,420 aunque puede ser. 1176 01:26:12,420 --> 01:26:15,080 Se ejecuta más lentamente, de nuevo el equilibrio entre el uso interactivo, 1177 01:26:15,080 --> 01:26:17,820 que tienen más información que la velocidad de procesamiento implicado, 1178 01:26:17,820 --> 01:26:20,710 que se puede hacer sin el procesamiento. 1179 01:26:20,710 --> 01:26:28,320 Las características adicionales añadidas a la shell Bourne por el Korn y Bourne-Again conchas 1180 01:26:28,320 --> 01:26:32,120 no parece que aminore su velocidad, y yo no sé por qué es así. 1181 01:26:32,120 --> 01:26:36,310 Tal vez sólo sea una mejor programación, pero no estoy en condiciones de saber. 1182 01:26:36,310 --> 01:26:40,420 Acelerar aquí en realidad no es una cosa muy importante, a pesar de que se menciona. 1183 01:26:40,420 --> 01:26:43,690 La razón es que los scripts de shell realmente consiguen bastante rápido. 1184 01:26:43,690 --> 01:26:46,450 Si hay una gran cantidad de comandos como en un programa de calculo, 1185 01:26:46,450 --> 01:26:49,110 es probable que no lo harías en un script de shell. 1186 01:26:49,110 --> 01:26:51,450 Las operaciones no son bastante simple y directo. 1187 01:26:51,450 --> 01:26:53,960 Los que yo he experimentado que son demasiado lentos 1188 01:26:53,960 --> 01:26:57,110 involucrar a las aplicaciones repetidas de comandos lentos. 1189 01:26:57,110 --> 01:27:00,480 Antes he mencionado el editor de flujo sed. Este comando es lento. 1190 01:27:00,480 --> 01:27:03,760 Si ejecuta sed muchas veces, obtendrás un script lento, pero no es la cáscara que es lento. 1191 01:27:03,760 --> 01:27:07,920 Si lo ejecuta en el shell Bourne no será mucho más rápido que corriendo en el C-shell, 1192 01:27:07,920 --> 01:27:10,070 aunque no hay tal vez algunas ventajas allí. 1193 01:27:10,070 --> 01:27:12,760 Las capacidades de programación adicionales, por otro lado, 1194 01:27:12,760 --> 01:27:17,920 son razones importantes por las que se utilizan las cáscaras de tipo Bourne. 1195 01:27:17,920 --> 01:27:21,390 C-shell tiene características extrañas a ella - 1196 01:27:21,390 --> 01:27:25,250 el hecho de que usted no sabe si una variable es una variable de shell o una variable de entorno. 1197 01:27:25,250 --> 01:27:27,440 Puede ser muy confuso. 1198 01:27:27,440 --> 01:27:32,170 No es tan fácil de escribir 1199 01:27:32,170 --> 01:27:35,930 sólo se basa en su experiencia en programación en otros idiomas. 1200 01:27:35,930 --> 01:27:41,350 Creo que es posible que las conchas de tipo Bourne más consistente con su experiencia. 1201 01:27:43,730 --> 01:27:49,270 Algunas secuencias de comandos, sin embargo, pueden ser miles de líneas de longitud. 1202 01:27:49,270 --> 01:27:52,450 Los que he visto se utilizan para parchar los sistemas operativos. 1203 01:27:52,450 --> 01:27:55,450 Estos pueden ejecutar muy lentamente, pero que no se quede los muy a menudo. 1204 01:27:55,450 --> 01:27:57,180 Es sólo cuando usted está haciendo parches, 1205 01:27:57,180 --> 01:27:59,450 y es sólo el administrador del sistema que haga estas cosas, 1206 01:27:59,450 --> 01:28:01,840 así que no es realmente un gran problema. 1207 01:28:01,840 --> 01:28:06,980 Los que son cientos de líneas de largo realmente ejecutan con bastante rapidez. 1208 01:28:06,980 --> 01:28:10,540 Al mencionar esto aquí, ¿cuáles son esas mejoras? 1209 01:28:10,540 --> 01:28:13,170 Ya he mencionado algunos de ellos - Arrays, cálculos, 1210 01:28:13,170 --> 01:28:20,540 los $ () de expresión para los cálculos en el intérprete de comandos, 1211 01:28:20,540 --> 01:28:23,050 el otro tipo de sustitución de comandos. 1212 01:28:23,050 --> 01:28:25,360 Hay diferentes tipos de comandos de prueba 1213 01:28:25,360 --> 01:28:29,350 mediante el cual es posible realizar pruebas a la existencia de un fichero o otras cosas. 1214 01:28:29,350 --> 01:28:34,790 La última vez aquí, este comando aquí. 1215 01:28:34,790 --> 01:28:38,480 ¿Qué hace esto, y ¿por qué nadie usa? 1216 01:28:51,170 --> 01:28:52,990 nombrevariable printenv. 1217 01:28:52,990 --> 01:28:56,130 Sabemos lo printenv hace. Se nos dice que el valor de una variable. 1218 01:28:56,130 --> 01:29:00,850 Y nombrevariable printenv no nos va a decir mucho porque no hay tal variable. 1219 01:29:03,550 --> 01:29:05,120 En blanco. 1220 01:29:05,120 --> 01:29:08,440 Pero vamos a darle algo significativo. 1221 01:29:13,420 --> 01:29:16,800 Eso no es allí. Okay. Supongo que nunca definí eso. 1222 01:29:16,800 --> 01:29:18,020 Vamos a comprobar mi entorno. 1223 01:29:18,020 --> 01:29:20,900 Este es otro comando mediante el cual usted puede inspeccionar su entorno. 1224 01:29:20,900 --> 01:29:24,470 Hay buena EDITOR de edad, la que vimos antes. 1225 01:29:42,360 --> 01:29:44,120 ¿Qué quiere hacer? 1226 01:29:44,120 --> 01:29:48,050 Aquí tenemos una expresión backquote. 1227 01:29:48,050 --> 01:29:50,370 Recuerde que este es el C-shell. 1228 01:29:50,370 --> 01:29:54,850 Así EDITOR printenv nos dará un valor de EDITOR. Es vi. 1229 01:29:54,850 --> 01:29:59,790 Y entonces será establecer ese valor a la variable a, el comando set. 1230 01:29:59,790 --> 01:30:02,860 Así que ahora si hago echo $ a, me sale vi. 1231 01:30:02,860 --> 01:30:05,850 Eso no parece demasiado útil. 1232 01:30:05,850 --> 01:30:08,080 Sin embargo, lo que realmente tiene un propósito. 1233 01:30:08,080 --> 01:30:12,260 Dado que no sabemos si una variable es una variable de shell o una variable de entorno 1234 01:30:12,260 --> 01:30:16,280 mediante el uso de la sintaxis de evaluación signo del dólar, podemos utilizar printenv 1235 01:30:16,280 --> 01:30:19,460 para asegurarse de que se trata de una variable de entorno. 1236 01:30:19,460 --> 01:30:22,550 Así que si había un editor de variables de shell, esto no habría conseguido. 1237 01:30:22,550 --> 01:30:25,640 Esto sólo funciona con la variable de entorno. 1238 01:30:25,640 --> 01:30:28,370 Si hubiera una variable de shell y quería su valor, 1239 01:30:28,370 --> 01:30:29,980 Tendría que encontrar otra manera de hacerlo. 1240 01:30:29,980 --> 01:30:33,530 Una manera de hacer eso sería haciendo juego y la tubería. 1241 01:30:33,530 --> 01:30:36,130 Este es uno de los metacaracteres, caracteres especiales. 1242 01:30:36,130 --> 01:30:38,370 Envía la salida del conjunto a otra cosa. 1243 01:30:38,370 --> 01:30:40,650 Vamos a ver lo que nos íbamos a encontrar allí. 1244 01:30:40,650 --> 01:30:49,340 Nada. Okay. Vamos a ver lo que hay allí todos juntos. 1245 01:30:49,340 --> 01:30:53,580 Fue echo_style, la que mencioné antes. Está bien, vamos a hacer eso. 1246 01:31:02,460 --> 01:31:06,230 ¿Recuerdas que mencioné antes, echo_style 1247 01:31:06,230 --> 01:31:08,410 determina la forma en que el comando echo se ejecutará. 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 es el Berkeley Unix desde la década de 1970. 1250 01:31:13,200 --> 01:31:16,630 Esa es una de las formas en que se hacen eco se puede ejecutar. 1251 01:31:16,630 --> 01:31:22,310 Ajuste echo_style a ese valor en el TC-shell hará eco a comportarse de esa manera. 1252 01:31:22,310 --> 01:31:27,670 A fin de establecer hace eso, pero sólo consigue establecer las variables de shell. 1253 01:31:27,670 --> 01:31:35,430 No sería encontrar Editor, que no es una variable de shell. 1254 01:31:36,870 --> 01:31:38,050 Nada. 1255 01:31:38,050 --> 01:31:39,660 Así que esa es una forma de distinguirlos. 1256 01:31:39,660 --> 01:31:42,000 Pero el hecho de que tienes que ir a través de algún comando extraño como eso 1257 01:31:42,000 --> 01:31:45,500 distinguir entre las variables de shell o variables de entorno 1258 01:31:45,500 --> 01:31:49,970 muestra el tipo de carácter práctico de la C-shell para algunos propósitos. 1259 01:31:52,290 --> 01:31:57,960 Y ahora, el pasado y tal vez menos, se trata de las páginas del manual. 1260 01:31:57,960 --> 01:32:03,190 Aquellos de quienes ustedes saben, el hombre es el corto mandato de manual. 1261 01:32:03,190 --> 01:32:08,610 Las páginas del manual de las conchas son difíciles de leer. Son muy largo. 1262 01:32:08,610 --> 01:32:14,060 Están organizados de una manera que puede hacer que sea difícil de encontrar lo que estás buscando. 1263 01:32:14,060 --> 01:32:15,980 Así que si estás buscando algo con un propósito, 1264 01:32:15,980 --> 01:32:20,050 usted no puede saber si ese propósito es una variable de shell o algo más, 1265 01:32:20,050 --> 01:32:21,630 por lo que no puede saber dónde buscarlo. 1266 01:32:21,630 --> 01:32:25,030 Usted puede buscar varias cadenas, pero las cadenas se repiten a menudo. 1267 01:32:25,030 --> 01:32:27,640 Así que es generalmente difícil de leer. 1268 01:32:27,640 --> 01:32:33,810 Nos miramos en la página de manual TC-shell un poco antes de encontrar el comando eval. 1269 01:32:33,810 --> 01:32:36,610 Algunas cosas van más rápido. 1270 01:32:36,610 --> 01:32:38,860 Un enfoque consiste en buscar una cadena. 1271 01:32:38,860 --> 01:32:40,360 Usted puede utilizar el localizador. 1272 01:32:40,360 --> 01:32:49,080 Pager tiene la barra en busca de un comando o una cadena dentro de una operación de paginación. 1273 01:32:49,080 --> 01:32:52,830 Hombre por defecto usará localizadores, ya sea más o menos. 1274 01:32:52,830 --> 01:32:56,560 No sé si está familiarizado con ellos, pero los puedo mostrar archivos poco a poco. 1275 01:32:56,560 --> 01:33:00,550 He estado usando MENOS para visualizar estos archivos en particular que tenemos aquí. 1276 01:33:00,550 --> 01:33:03,300 Usted puede buscar en el interior hay. 1277 01:33:03,300 --> 01:33:04,880 Puedes probar a utilizar cadenas de búsqueda diferentes. 1278 01:33:04,880 --> 01:33:08,420 También las páginas de manual en diferentes sistemas operativos pueden no ser los mismos. 1279 01:33:08,420 --> 01:33:11,130 Pueden ser páginas separadas para csh y tcsh. 1280 01:33:11,130 --> 01:33:14,500 Son no están en la Mac, pero que podrían ser si esas son comandos separados. 1281 01:33:14,500 --> 01:33:19,000 Si sh realmente no llaman Bash, probablemente sería una página de manual separado. 1282 01:33:19,000 --> 01:33:25,820 Algunos sistemas tienen páginas man separadas sólo por el C-shell comandos integrados. 1283 01:33:25,820 --> 01:33:30,250 A veces, si desea leer una descripción de un comando integrado 1284 01:33:30,250 --> 01:33:35,350 eso es también en el camino, como eco, usted necesita leer la página del manual sobre ese comando en eco 1285 01:33:35,350 --> 01:33:37,610 para determinar cómo va a funcionar como un comando integrado 1286 01:33:37,610 --> 01:33:39,760 incluso si usted no está llamando el comando incorporado. 1287 01:33:41,630 --> 01:33:46,090 Eso es un inconveniente del sistema operativo en general, no sólo para las conchas, 1288 01:33:46,090 --> 01:33:50,710 aunque para las conchas, en particular, las páginas del manual son bastante largos, 1289 01:33:50,710 --> 01:33:56,180 en parte porque se han agregado características útiles para ellos, lo que puede ser algo positivo. 1290 01:33:56,180 --> 01:34:00,290 Okay. ¿Hay alguna pregunta? Cualquier tema que desea que aparezca? 1291 01:34:00,290 --> 01:34:03,390 Todo lo relevante aquí? 1292 01:34:04,540 --> 01:34:07,100 Bueno, ha sido muy agradable hablar con todos ustedes. 1293 01:34:07,100 --> 01:34:09,690 Espero que tengas algo fuera de este seminario 1294 01:34:09,690 --> 01:34:13,080 que serán de utilidad para usted en sus actividades futuras. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]