1 00:00:01,010 --> 00:00:07,169 Buenos días, vamos a empezar ahora con la parte de redireccionamiento y tuberías. 2 00:00:07,849 --> 00:00:17,109 Esta parte ya la visteis en Windows, entonces os tiene que sonar prácticamente todo lo que vimos en Windows. 3 00:00:17,429 --> 00:00:25,489 Voy a poner las primeras transparencias porque quiero que veáis un par de dibujos que creo que se entiende bastante bien de qué va la cosa. 4 00:00:25,489 --> 00:00:31,109 y ahora vamos a empezar viendo diferentes ejemplos y funcionamientos 5 00:00:31,109 --> 00:00:36,479 vale, quiero que veáis aquí 6 00:00:36,479 --> 00:00:43,359 que dentro de, me da igual que sea Linux o Windows 7 00:00:43,359 --> 00:00:45,200 pero bueno, estoy hablando ahora de Linux 8 00:00:45,200 --> 00:00:49,700 cuando se hablan de cualquier proceso o los comandos 9 00:00:49,700 --> 00:00:51,179 estoy hablando 10 00:00:51,179 --> 00:00:53,960 voy a utilizar el lápiz 11 00:00:53,960 --> 00:00:58,229 me están hablando aquí arriba 12 00:00:58,229 --> 00:01:01,289 de que yo tengo tres descriptores 13 00:01:01,289 --> 00:01:28,269 ¿Qué es esto de descriptores? Dentro de cuando se habla lo que digo de procesos, se habla de lo que es la entrada estándar, que este es el dibujito que creo que se entiende muy bien, es decir, todo proceso va a tener una manera en la que yo voy a introducir la información y esa entrada es la que se llama el stdin y tiene asignado el numerito 0, ¿vale? 14 00:01:28,269 --> 00:01:41,950 Pero también tenemos lo que se llama la salida estándar. Cuando un proceso tiene que enviar sus datos, su información hacia la salida, yo voy a tener dos tipos de entre comillas salidas. 15 00:01:41,950 --> 00:01:57,629 La salida de la información correcta que tiene asignado el numerito 1 y que se llama stdout, que por defecto, ¿cuál es la salida donde todos los procesos van a mostrar sus resultados? 16 00:01:57,629 --> 00:02:01,290 pues obviamente por defecto va a ser el monitor 17 00:02:01,290 --> 00:02:08,990 entonces normalmente nosotros como introducimos la información dentro de un proceso 18 00:02:08,990 --> 00:02:12,069 o se lo decimos a un comando mediante el teclado 19 00:02:12,069 --> 00:02:16,629 y cuando ese proceso tiene que indicarnos su solución 20 00:02:16,629 --> 00:02:20,830 su resultado por donde lo hace por el monitor 21 00:02:20,830 --> 00:02:25,710 pues tenemos la entrada el stdin asignado el numerito 0 22 00:02:25,710 --> 00:02:29,849 y el stdout asignado, el numerito 1, ¿sí? 23 00:02:30,289 --> 00:02:35,389 Pero que sepáis que hay un tercero, que es en este caso el numerito número 2, 24 00:02:36,229 --> 00:02:38,569 que es el que se llama stdr. 25 00:02:40,090 --> 00:02:47,389 Y resulta que cuando un proceso va a mostrarte información, te pueden mostrar dos cosas. 26 00:02:47,949 --> 00:02:51,550 El resultado correcto de haberse ejecutado, ¿vale? 27 00:02:51,550 --> 00:03:01,509 Y por defecto va a ser el stdout, pero también puede ocurrir que el proceso esté haciendo algo y haya producido un error. 28 00:03:01,710 --> 00:03:07,030 ¿Cómo te indica ese error? Pues te lo envía por la salida número 2, que se llama stderr. 29 00:03:07,729 --> 00:03:15,729 Por defecto, la salida de errores también se muestra, si no le decimos nada, en el monitor. 30 00:03:15,729 --> 00:03:26,469 De forma que tanto STDout como STDair, tanto la salida estándar como el error estándar, se me muestran en la pantalla del monitor. 31 00:03:27,990 --> 00:03:39,409 Pues que sepáis que todos los numeritos superiores a esto, 3, 4, 5, 6, 7, 8, en este caso son conexiones que se utilizan para ficheritos. 32 00:03:39,409 --> 00:03:47,650 Por ejemplo, si hay un proceso que tú le introduces los valores por el stdin 33 00:03:47,650 --> 00:03:51,250 Abre un ficherito como puede ser apuntes 34 00:03:51,250 --> 00:03:55,969 Pues el apuntes, internamente el sistema operativo le puede asignar el número 5 35 00:03:55,969 --> 00:04:00,509 De forma que cuando él vaya a mostrar sus resultados 36 00:04:00,509 --> 00:04:04,909 ¿Dónde lo va a guardar? En el numerito 5 que corresponde al ficherito apuntes 37 00:04:04,909 --> 00:04:08,629 ¿Esto lo entendemos? 38 00:04:08,629 --> 00:04:21,079 vale vamos a seguir uno más para adelante porque aquí tenemos un resumen de los diferentes canales 39 00:04:21,079 --> 00:04:30,079 que nosotros tenemos y hacemos un repaso hemos dicho que el numerito 0 es la salida de perdón 40 00:04:30,079 --> 00:04:35,879 la salida perdonarme la entrada estándar que la entrada estándar por defecto va a ser un teclado 41 00:04:35,879 --> 00:04:46,000 tenemos el numerito 1 que se refiere a la salida estándar y la salida estándar por defecto se nos va a mostrar en el monitor 42 00:04:46,000 --> 00:04:57,720 y luego tenemos la salida de errores, los errores que nos envía el comando, el proceso va a ser en este caso el nombre stder 43 00:04:57,720 --> 00:05:04,300 y por defecto también se me muestra en el mismo sitio que la salida estándar, es decir en el terminal 44 00:05:04,300 --> 00:05:10,339 Y todo lo que sea superiores a ese numerito, normalmente son descriptores refiriéndose a los ficheros. 45 00:05:11,000 --> 00:05:12,899 ¿De acuerdo? Vale. 46 00:05:14,060 --> 00:05:19,620 Vamos a hacer en este caso un ejemplo para que vosotros entendamos. 47 00:05:19,720 --> 00:05:21,519 Y ahora vuelvo sobre este de aquí. 48 00:05:21,980 --> 00:05:32,319 Entonces, vamos a irnos a nuestra máquina, que esta es la que llevamos trabajando en vídeos anteriores. 49 00:05:33,680 --> 00:05:35,620 Siempre voy a utilizar la misma máquina. 50 00:05:35,620 --> 00:05:44,420 abrimos un terminal y lo primero que voy a hacer porque quiero que os acostumbréis a saber dónde 51 00:05:44,420 --> 00:05:59,199 estáis voy a cambiar el prom y voy a poner por ejemplo simplemente un dólar vale porque así nos 52 00:05:59,199 --> 00:06:06,980 acostumbramos a que si sé dónde estoy pues ya sabéis pw estoy ahí de acuerdo como ya sabemos 53 00:06:06,980 --> 00:06:15,899 en este caso los comandos básicos estoy aquí en el s sí vale pues me voy a ir al scan a ver al 54 00:06:15,899 --> 00:06:21,040 y vamos a ver qué es lo que tengo aquí aquí tengo un montonazo de ficheritos que ya creamos en la 55 00:06:21,040 --> 00:06:32,459 versión anterior y por ejemplo vamos a hacer lo siguiente vamos a crear una carpeta que se va a 56 00:06:32,459 --> 00:06:42,839 llamar en este caso sábado 28 y me voy a 57 00:06:42,839 --> 00:06:47,500 meter en sábado 28 y voy a crear aquí 58 00:06:47,500 --> 00:06:52,860 por ejemplo tres ficheros touch y le 59 00:06:52,860 --> 00:06:58,519 digo aquí fichero 1 punto txt fichero 60 00:06:58,519 --> 00:07:00,339 2.txt 61 00:07:00,339 --> 00:07:04,180 y fichero 3.txt 62 00:07:04,180 --> 00:07:04,939 ¿de acuerdo? 63 00:07:05,600 --> 00:07:08,500 entonces cuando yo ejecuto el comando 64 00:07:08,500 --> 00:07:09,259 ls 65 00:07:09,259 --> 00:07:12,319 esto que estáis viendo aquí 66 00:07:12,319 --> 00:07:17,720 esto que estamos 67 00:07:17,720 --> 00:07:18,439 viendo aquí 68 00:07:18,439 --> 00:07:24,300 es el 69 00:07:24,300 --> 00:07:27,000 st de auto 70 00:07:27,000 --> 00:07:28,860 porque aquí no me 71 00:07:28,860 --> 00:07:30,740 está diciendo ningún error, yo le he dicho 72 00:07:30,740 --> 00:07:32,199 que me ejecute el comando ls 73 00:07:32,199 --> 00:07:37,399 y él me ha dicho los ficheros que dentro de la carpeta decir todo está correcto de forma que 74 00:07:37,399 --> 00:07:44,180 esto de aquí me está mostrando la salida correcta la salida estándar y esto ya vimos que teníamos 75 00:07:44,180 --> 00:07:55,790 asignado el numerito refiriendo refiriéndonos al std out el numerito número uno de acuerdo 76 00:07:55,790 --> 00:08:19,170 ¿Sí? Vale, pero ¿y qué pasa si yo le digo, oye, perdona, quiero que me muestres, que estaba pinchando afuera, quiero que me muestres fichero 1 y le pongo aquí 1 que no existe, punto txt. 77 00:08:19,170 --> 00:08:25,470 le estoy diciendo al comando ls que quiero que me muestre la información de esos dos ficheros 78 00:08:25,470 --> 00:08:30,189 le voy a poner guión gele porque quiero que veáis 79 00:08:30,189 --> 00:08:35,049 quiero que veáis que yo a este comando le estoy indicando 80 00:08:35,049 --> 00:08:42,389 oye, quiero que me muestres información de este ficherito y quiero que me muestres información de este ficherito 81 00:08:42,389 --> 00:08:45,350 ¿sí? ¿qué es lo que pasa? 82 00:08:45,350 --> 00:08:53,029 pues que este ficherito de aquí sí que existe y me va a mostrar información pero cuando intente 83 00:08:53,029 --> 00:08:59,850 buscar este ficherito no existe entonces él te va a decir oye hay un error ese ficherito que se 84 00:08:59,850 --> 00:09:07,549 llama uno que no existe no existe y me lo dice y eso como me lo dice mediante un error sí entonces 85 00:09:07,549 --> 00:09:12,190 Entonces, si yo ejecuto esto, quiero que veáis qué es lo que me aparece. 86 00:09:15,539 --> 00:09:31,179 Esto de aquí, esto de aquí, me está indicando que es un error y esto de aquí me está diciendo que es correcto. 87 00:09:31,179 --> 00:09:41,580 De forma que, perdonad, este de aquí y este de aquí son dos cosas diferentes. 88 00:09:41,580 --> 00:09:54,139 El que está en rojo, ¿qué es? Pues en este caso, el std error, que tiene asignado el numerito 2. 89 00:09:54,500 --> 00:10:04,039 Y este de aquí, ¿cuál es? Pues este de aquí es el std out, que tiene asignado el numerito 1. 90 00:10:04,039 --> 00:10:10,980 Esto de aquí es correcto, es lo que me devuelve el comando de forma correcta 91 00:10:10,980 --> 00:10:18,960 Y esto de aquí es un error que me devuelve el comando 92 00:10:18,960 --> 00:10:21,440 Porque este ficherito no existe, me lo está diciendo 93 00:10:21,440 --> 00:10:25,559 Oye, ls no puede acceder a a porque no existe el fichero 94 00:10:25,559 --> 00:10:29,500 ¿Entendéis lo que es el stder y el stdout? 95 00:10:30,360 --> 00:10:31,899 ¿De acuerdo? ¿Sí? 96 00:10:31,899 --> 00:10:37,299 ¿Y cómo sirve y para qué sirve el stdin para la entrada? 97 00:10:37,720 --> 00:10:43,299 Pues la entrada sirve para informar, en este caso, de lo que yo le quiero dar al comando. 98 00:10:43,419 --> 00:11:01,899 Por ejemplo, si yo hago esto de aquí, le digo cat y le doy al intro, 99 00:11:02,799 --> 00:11:04,679 él me está pidiendo que yo escriba cosas. 100 00:11:04,679 --> 00:11:07,679 y lo pongo aquí, hola 101 00:11:07,679 --> 00:11:10,580 y me pongo adiós 102 00:11:10,580 --> 00:11:14,840 entonces, ¿de dónde está esperando el que yo lo introduzca datos? 103 00:11:15,100 --> 00:11:17,340 pues en este caso estoy escribiendo del teclado 104 00:11:17,340 --> 00:11:20,919 entonces este, perdonadme 105 00:11:20,919 --> 00:11:22,779 control c 106 00:11:22,779 --> 00:11:30,139 y lo quitamos, eso ya lo veremos 107 00:11:30,139 --> 00:11:35,279 entonces, yo tengo la entrada, ahora veremos muy claro para qué es la entrada estándar 108 00:11:35,279 --> 00:11:38,120 con un comando que da mucho juego 109 00:11:38,120 --> 00:11:44,480 vale pero eso lo veremos más adelante vale vamos a seguir con las transparencias y vamos a ver qué 110 00:11:44,480 --> 00:11:50,559 opciones nosotros tenemos entonces nosotros vimos estas opciones que nosotros tenemos aquí 111 00:11:52,559 --> 00:11:59,840 esto os tiene que sonar porque lo vimos ya dentro de windows yo tengo diferentes tipos 112 00:11:59,840 --> 00:12:06,820 de redireccionamiento que es eso de redireccionamiento yo puedo decirle que me 113 00:12:06,820 --> 00:12:36,000 vuelvo a aquí ahora si yo le hago un ls si yo no digo nada donde os he dicho que por defecto 114 00:12:36,000 --> 00:12:42,759 se me muestra la salida en pantalla en este terminal sí pero qué pasa si en lugar de que 115 00:12:42,759 --> 00:12:50,259 se me muestre aquí que es en pantalla yo quiero que esta información de salida se me vaya a otro 116 00:12:50,259 --> 00:12:58,659 pues yo puedo utilizar lo que se llaman el redireccionamiento vale es redirigir imaginaros 117 00:12:58,659 --> 00:13:05,480 que yo tengo una canalización de agua que por defecto esa canalización va a un tanque pues yo 118 00:13:05,480 --> 00:13:13,179 puedo redirigir vale poniendo digamos que una canalización y en lugar de ir al tanque pues 119 00:13:13,179 --> 00:13:20,139 que vaya a otro tipo de depósito entonces yo puedo redirigir tanto la salida como la de 120 00:13:20,139 --> 00:13:26,679 errores de acuerdo entonces vamos a ver cómo puedo hacerlo y vamos a ver aquí 121 00:13:28,279 --> 00:13:36,500 primeramente si yo utilizo un mayor y un nombre de fichero repito un mayor y un nombre de fichero 122 00:13:36,500 --> 00:13:51,159 le estoy diciendo que me va a coger la salida estándar, y lo que va a hacer es enviarla a este ficherito que yo he puesto después del mayor. 123 00:13:51,860 --> 00:13:55,980 Si ese fichero no existe, lo crea. 124 00:13:57,039 --> 00:14:04,279 Pero si ese fichero ya existe, machaca lo que hay dentro con lo nuevo que yo le he dicho. 125 00:14:04,279 --> 00:14:06,539 ¿Sí? Pues vamos a verlo 126 00:14:06,539 --> 00:14:09,000 Vamos yendo uno por uno para que veáis 127 00:14:09,000 --> 00:14:13,200 Si nos vamos a la máquina 128 00:14:13,200 --> 00:14:16,019 ¿Qué pasa si yo le digo un ls? 129 00:14:17,179 --> 00:14:19,659 Ya hemos dicho que esto se me muestra en pantalla, ¿verdad? 130 00:14:20,200 --> 00:14:23,080 Pero ¿qué pasa si yo no quiero que se me muestre en pantalla? 131 00:14:24,419 --> 00:14:25,539 Voy a hacer una cosa 132 00:14:25,539 --> 00:14:30,519 Voy a utilizar esta opción para que se me muestre en una columna solo 133 00:14:30,519 --> 00:14:31,039 ¿De acuerdo? 134 00:14:31,799 --> 00:14:34,259 Entonces, ¿qué pasa si yo esto le digo un mayor? 135 00:14:34,279 --> 00:14:43,950 si os acordáis que numerito tiene asignado la salida estándar tiene asignado el numerito 1 136 00:14:43,950 --> 00:14:53,309 así que esto y esto es lo mismo entonces quiero que entendáis que si yo no digo nada 137 00:14:53,309 --> 00:15:23,009 El poner un mayor, ¿vale? Y pongo aquí mi fichero 1.txt y poner un 1 y un mayor, mi fichero 1.txt, es lo mismo, porque si yo no pongo nada aquí, él entiende que lo que va a haber aquí es un 1, ¿de acuerdo? 138 00:15:23,309 --> 00:15:24,970 vale, pues 139 00:15:24,970 --> 00:15:26,629 ¿qué le digo con esto? 140 00:15:26,769 --> 00:15:28,629 si yo le digo, oye, quiero que me muestre 141 00:15:28,629 --> 00:15:29,509 el ls 142 00:15:29,509 --> 00:15:31,809 vamos a hacerlo bien 143 00:15:31,809 --> 00:15:34,509 de fichero asterisco 144 00:15:34,509 --> 00:15:37,210 y en lugar de mostrármelo 145 00:15:37,210 --> 00:15:39,129 por pantalla, quiero que lo guarde 146 00:15:39,129 --> 00:15:41,169 en un fichero, quiero redirigir 147 00:15:41,169 --> 00:15:43,490 la salida a un fichero 148 00:15:43,490 --> 00:15:45,070 si yo le pongo aquí 149 00:15:45,070 --> 00:15:47,149 fichero 150 00:15:47,149 --> 00:15:49,149 le pongo salida 151 00:15:49,149 --> 00:15:51,309 1.txt 152 00:15:51,309 --> 00:15:55,049 ¿Ves que él no me ha mostrado nada en pantalla? 153 00:15:56,009 --> 00:15:58,389 ¿Por qué no me ha mostrado nada en pantalla? 154 00:15:58,870 --> 00:16:02,830 Porque en lugar de mostrar el resultado en la pantalla 155 00:16:02,830 --> 00:16:06,149 Yo le he dicho que me la redirija 156 00:16:06,149 --> 00:16:07,970 Es decir, no me la envíes a la pantalla 157 00:16:07,970 --> 00:16:10,409 Envíamelo al fichero que yo te diga 158 00:16:10,409 --> 00:16:11,669 Y lo ha enviado este fichero 159 00:16:11,669 --> 00:16:13,610 Como este fichero no existe 160 00:16:13,610 --> 00:16:15,429 Fijaros que me lo ha creado aquí 161 00:16:15,429 --> 00:16:16,830 Yo lo tengo aquí 162 00:16:18,830 --> 00:16:19,269 ¿Sí? 163 00:16:19,269 --> 00:16:34,649 Me ha creado el ficherito. Si yo le digo que me diga que contiene el ficherito, que este comando ya lo conocemos, fijaros que me dice que contiene el resultado de ejecutar un ls-1 fichero. ¿Lo veis? ¿Sí? 164 00:16:34,649 --> 00:16:52,509 Pero ¿y qué pasa si yo ahora hago esto? Yo le digo echo, quiero que veáis lo que contiene el salida. ¿Qué pasa si yo le digo echo hola y le digo mayor y le digo salida? ¿Qué es lo que va a pasar aquí? 165 00:16:52,509 --> 00:17:15,730 Aquí lo que me va a pasar es que como salida txt ya existe porque contiene esto de aquí, me va a machacar, me va a sobrescribir todo lo que hay dentro de salida para meterme, en este caso, esto de aquí. 166 00:17:15,730 --> 00:17:30,450 De forma que si yo esto lo ejecuto, no me muestra nada en pantalla, porque le estoy diciendo que en lugar de mostrarme hola en pantalla, se redirija, se envíe a el ficherito salida.txt. 167 00:17:30,869 --> 00:17:42,950 Si yo le digo que me diga qué es lo que hay en salida, qué es lo que ha hecho, pues obviamente habéis visto que antes tenía esto, y ahora, ¿qué es lo que contiene? 168 00:17:42,950 --> 00:17:52,049 hola me ha machacado entendéis cómo funciona el redireccionamiento sí pero quiero que veáis 169 00:17:52,049 --> 00:18:06,910 también que si yo lo ejecuto este fichero de aquí sí y le digo oye ls fichero 1 punto txt y no existe 170 00:18:06,910 --> 00:18:14,470 punto txt si quiero que veáis qué va a pasar veis que antes no me había mostrado nada lo hago lo 171 00:18:14,470 --> 00:18:21,490 hago como éste no me muestra nada porque porque en salida 1 que me ha metido por la información 172 00:18:21,490 --> 00:18:27,670 de ese fichero vale si queréis verlo más si le pongo un l para que me lo muestre en formato 173 00:18:27,670 --> 00:18:37,150 detallado veis que me muestra el resultado del ls pero qué pasa si yo hago esto f1 y le digo 174 00:18:37,150 --> 00:18:46,539 no existe punto txt qué es lo que ha hecho lo voy a hacer con el 2 con el fichero 2 porque 175 00:18:46,539 --> 00:18:56,019 quiero que veáis que me queda machacado si yo le digo cat de salida efectivamente me ha metido 176 00:18:56,019 --> 00:19:05,559 dentro del salida 1 el resultado correcto es decir me ha redirigido la salida correcta el 177 00:19:05,559 --> 00:19:13,720 std out el que tiene el numerito 1 pero qué ha pasado con el error qué ha pasado con este 178 00:19:13,720 --> 00:19:20,819 fichero que es un error pues este fichero no me lo ha guardado en el fichero porque cuando yo le 179 00:19:20,819 --> 00:19:29,220 digo un mayor y le digo o le digo un 1 y un mayor, sólo me redirige la salida correcta, sólo me 180 00:19:29,220 --> 00:19:36,640 redirige la salida correcta. Los errores los sigue mostrando en pantalla. Quiero que lo veáis, ¿de 181 00:19:36,640 --> 00:19:47,460 acuerdo? Esto de aquí es un error y por lo tanto este error tiene asignado el numerito 2 y no se 182 00:19:47,460 --> 00:19:56,140 me redirige porque como yo aquí vale no he puesto nada esto es lo mismo que poner un 1 y un mayor 183 00:19:57,339 --> 00:20:01,759 de acuerdo si vale vamos a seguir un poquito con la transparencia 184 00:20:03,799 --> 00:20:10,759 y vamos a ver la segunda opción y en la segunda opción nosotros tenemos exactamente igual pero 185 00:20:10,759 --> 00:20:16,500 con dos mayores los dos mayores funciona exactamente igual que el de arriba el de un 186 00:20:16,500 --> 00:20:24,799 mayor lo que pasa que en lugar del si el fichero existe en lugar de sobre escribirlo lo que hace 187 00:20:24,799 --> 00:20:33,279 es añadir agregar la información a ese fichero pues vamos a ver cómo funciona si nosotros nos 188 00:20:33,279 --> 00:20:42,519 vamos y le decimos tenemos a este fichero verdad os acordáis qué pasa si yo le digo eco 189 00:20:44,319 --> 00:20:50,299 o la caracola y en lugar de decirle un mayor le digo dos mayores a la salida 190 00:20:51,799 --> 00:20:59,480 si yo le digo que me muestre quiero que veáis qué es lo que ha pasado antes salida contenía 191 00:20:59,480 --> 00:21:15,029 esta única línea, ¿sí? Pero como yo le he dicho hola caracola y le he dicho los dos mayores, ¿qué es lo que ha hecho? 192 00:21:15,029 --> 00:21:22,789 Pues lo que ha hecho el mayor es añadir al ficherito dejando todo lo que había, ¿sí? 193 00:21:22,789 --> 00:21:46,349 Entonces, quiero que veáis que ha dejado lo que había y ha añadido lo que yo le he dicho que añada. Funciona exactamente igual. Si este fichero no existe, lo crea, pero si existe, en lugar de sobreescribir, lo añade porque tenemos los dos mayores. ¿Entendemos esto? Vale. 194 00:21:46,349 --> 00:21:50,210 Vamos a continuar para ver las otras opciones 195 00:21:50,210 --> 00:21:51,990 Nos vamos al siguiente 196 00:21:51,990 --> 00:21:58,710 Y aquí me están hablando de que exactamente igual que antes yo tengo el mayor 197 00:21:58,710 --> 00:22:03,450 Pero ahora explícitamente le pongo en delante un 2 198 00:22:03,450 --> 00:22:05,109 ¿Os acordáis que quiere decir el 2? 199 00:22:06,210 --> 00:22:08,390 Representa la salida de errores 200 00:22:08,390 --> 00:22:10,769 Entonces, ¿qué es lo que hace esto? 201 00:22:10,769 --> 00:22:16,410 Pues lo que hace es redirigir los errores al ficherito que yo le indiqué. 202 00:22:17,849 --> 00:22:21,190 Entonces, fijaros que yo lo puedo juntar esto como a mí me da la gana. 203 00:22:21,390 --> 00:22:27,009 Le digo, oye, la salida correcta va a ir a un fichero y los errores van a ir a otro fichero. 204 00:22:27,730 --> 00:22:35,289 Entonces, para los errores tengo que poner delante del mayor un 2, que representa la salida de errores. 205 00:22:36,410 --> 00:22:38,910 Y ya que estoy, vamos a ver esta de aquí abajo. 206 00:22:38,910 --> 00:22:48,549 ¿Qué quiere decir esto de aquí? Hemos dicho que quiere decir que vamos a redirigir los errores hacia un fichero, que hemos dicho que ese es el ejemplo que hemos visto aquí. 207 00:22:49,069 --> 00:23:06,549 Pero que sepáis que si yo pongo este dispositivo, ¿vale? Raya def null, lo que le estoy diciendo es que cojas todos los errores y que los envíes a un agujero negro, como si fuese a la papelera. 208 00:23:06,549 --> 00:23:09,349 entonces, ¿qué estoy diciendo con eso? 209 00:23:09,569 --> 00:23:12,289 que los errores no me los muestre por pantalla 210 00:23:12,289 --> 00:23:13,410 ¿sí? 211 00:23:13,930 --> 00:23:15,529 entonces, hay un dispositivo especial 212 00:23:15,529 --> 00:23:17,430 que está dentro de la carpetita 213 00:23:17,430 --> 00:23:19,490 dev, que se llama 214 00:23:19,490 --> 00:23:21,950 null, que todo lo que yo envíe 215 00:23:21,950 --> 00:23:23,650 ahí, es como si fuese un agujero 216 00:23:23,650 --> 00:23:24,890 negro, desaparece 217 00:23:24,890 --> 00:23:27,490 ¿sí? entonces, cuando vosotros 218 00:23:27,490 --> 00:23:29,650 queréis decirle que no queréis hacer nada 219 00:23:29,650 --> 00:23:31,269 con los errores, que no lo queréis ver 220 00:23:31,269 --> 00:23:33,190 que no os interesa, pues 221 00:23:33,190 --> 00:23:35,789 esto se utiliza un montonazo 222 00:23:35,789 --> 00:23:56,910 Y decir, oye, cógeme los errores y envíamelos al infinito y más allá. No quiero ni verlos. ¿De acuerdo? Entonces, descartar. Siempre que queráis tener esa posibilidad de enviar algún agujerito negro para que se pierda, dispositivo raya dev, raya null. ¿De acuerdo? Vamos a ver ejemplos de cómo funciona esto. 223 00:23:56,910 --> 00:24:02,619 no vamos aquí 224 00:24:02,619 --> 00:24:05,599 hemos dicho 225 00:24:05,599 --> 00:24:07,940 voy a partir en este caso de 226 00:24:07,940 --> 00:24:09,539 este ficherito de aquí 227 00:24:09,539 --> 00:24:11,980 este ficherito de aquí 228 00:24:11,980 --> 00:24:13,880 este comando de aquí 229 00:24:13,880 --> 00:24:15,680 hemos dicho que me va a devolver 230 00:24:15,680 --> 00:24:17,099 dos cosas 231 00:24:17,099 --> 00:24:19,460 en rojo voy a poner 232 00:24:19,460 --> 00:24:21,319 lo que me ha devuelto como error 233 00:24:21,319 --> 00:24:24,039 y en 234 00:24:24,039 --> 00:24:25,920 verde voy a poner 235 00:24:25,920 --> 00:24:28,039 la salida, el stdout 236 00:24:28,039 --> 00:24:29,299 repito, en rojo 237 00:24:29,299 --> 00:24:39,920 la salida de errores y en verde la salida correcta el std out sí qué pasa si yo hago esto le oye 238 00:24:39,920 --> 00:24:48,920 quiero que la salida de errores quiero que se envíe por ejemplo a salida error 1 punto txt 239 00:24:50,660 --> 00:25:04,470 qué es lo que ha pasado para que lo veamos pues fijaros que como yo le he dicho aquí 240 00:25:04,470 --> 00:25:16,819 digo oye quiero que este comando quiero que el error me lo envíes en este caso así ficherito 241 00:25:16,819 --> 00:25:24,900 y qué es lo que ha hecho pues resulta que el salida air que es lo que contiene pues contiene 242 00:25:24,900 --> 00:25:34,700 justamente solo el error del fichero yo no sé si veis aquí arriba que lo teníamos en rojo 243 00:25:35,779 --> 00:25:45,000 Este de aquí arriba era el error que me daba y resulta que este error es el que le hemos dicho que ahora se almacena en un ficherito, ¿sí? 244 00:25:46,000 --> 00:26:05,319 ¿De acuerdo? Pero como yo no le he dicho nada respecto a la salida normal, pues la salida normal, ¿dónde se sigue enviando? Pues la salida normal se sigue enviando, lo mostramos aquí, se sigue enviando a la salida estándar. 245 00:26:05,779 --> 00:26:27,440 ¿Y yo puedo enviar la salida a un sitio y los errores a otro? Pues sí. ¿Cómo lo podríamos hacer? Yo le puedo decir lo siguiente. Digo, mira, me vas a mandar la salida normal, que va a ser salida correcta. 246 00:26:27,440 --> 00:26:34,759 entonces que le estoy diciendo con esto le estoy diciendo oye quiero que la salida correcta la 247 00:26:34,759 --> 00:26:40,400 almacenes dentro del fichero salida correcta punto txt que repito he puesto aquí uno para 248 00:26:40,400 --> 00:26:47,539 que lo veáis pero poner uno y no poner nada es exactamente lo mismo repito esto de aquí el 1 249 00:26:49,200 --> 00:26:56,740 si yo no pongo nada él entiende que por defecto es un 1 sí entonces le estoy indicando que por 250 00:26:56,740 --> 00:27:04,059 un lado me coja la salida correcta y me la guarda en este fichero y además estoy diciendo que los 251 00:27:04,059 --> 00:27:13,559 errores se me guarden en esta salida sí entonces si yo esto lo ejecutó no me muestra nada en 252 00:27:13,559 --> 00:27:20,559 pantalla pero si yo ahora le digo oye quiero que me muestres la salida correcta y qué es lo que 253 00:27:20,559 --> 00:27:27,759 me muestra pues obviamente la parte correcta del fichero oye del comando si yo le digo ahora que 254 00:27:27,759 --> 00:27:36,460 me muestre la salida de errores 1 que me está mostrando pues en este caso los errores sí 255 00:27:36,460 --> 00:27:46,519 entonces repito la salida correcta que la teníamos aquí como yo le he dicho que la salida correcta 256 00:27:46,519 --> 00:27:54,140 ahora se guarde en un fichero donde se me son donde se me ha guardado la salida correcta pues 257 00:27:54,140 --> 00:28:01,259 fijaros que en el fichero correspondiente como yo ahora le he dicho arriba dijimos que el error que 258 00:28:01,259 --> 00:28:08,599 también por defecto se me mostraba en la salida que es lo que ha hecho esta parte de aquí pues 259 00:28:08,599 --> 00:28:14,059 le hemos dicho oye ahora quiero que la salida en lugar de que me lo muestre en pantalla quiero que 260 00:28:14,059 --> 00:28:20,359 el almacén es pues en la salida y es efectivamente lo que ha hecho aquí me entendéis para que es el 261 00:28:20,359 --> 00:28:34,799 1 y el 2 de acuerdo vale y qué pasa si yo ahora hago esto qué pasa si yo le digo oye quiero que 262 00:28:34,799 --> 00:28:42,859 la salida la muestres vale solo la salida correcta que repito el poner un 1 y no ponerlo es exactamente 263 00:28:42,859 --> 00:28:48,420 igual. Veis que el error se me muestra, ¿verdad? Pero imaginaros que el error yo no lo quiero ver, 264 00:28:48,559 --> 00:28:53,900 lo quiero descartar, no quiero verlo, ¿vale? Lo quiero enviar a la basura, no quiero que me lo 265 00:28:53,900 --> 00:29:00,279 muestre. ¿Qué es lo que puedo decirle? Digo, oye, quiero que la salida de errores y la voy a enviar 266 00:29:00,279 --> 00:29:05,039 a un dispositivo que está dentro de la carpeta dev, que es un dispositivo especial que se llama 267 00:29:05,039 --> 00:29:12,019 null. Y quiero que veáis qué es lo que ha pasado. ¿Veis que no se me muestra nada en pantalla? ¿Por 268 00:29:12,019 --> 00:29:22,539 ¿Por qué? Porque me ha cogido el error que yo tenía y por decirlo de alguna manera me lo ha enviado a la papelera. 269 00:29:22,539 --> 00:29:33,740 Esto es lo que hace este de aquí. Lo descarta. Lo envía, en este caso, lo que os digo, pongo siempre el ejemplo de un agujero negro. 270 00:29:33,980 --> 00:29:38,420 Es decir, todo lo que yo envíe ahí desaparece. No se muestra ni aparece en ningún sitio. 271 00:29:38,420 --> 00:30:15,220 ¿Sí? ¿De acuerdo? Vale. ¿Qué pasa si yo hago esto? ¿Qué me muestra esto en pantalla? No me muestra nada. Le estoy diciendo, oye, ejecútame un comando, ejecútame este comando, y tanto la salida correcta como la de errores no me la muestres. 272 00:30:15,220 --> 00:30:19,839 Entonces, ¿qué estoy haciendo aquí? Pues con perdón en gilipollas, ¿vale? Esto no sirve para nada 273 00:30:19,839 --> 00:30:25,119 Si yo ejecuto un comando y tanto la salida como la de errores no la muestro 274 00:30:25,119 --> 00:30:32,599 ¿Vale? A no ser, obviamente, que sea un comando que ejecuta una acción y no muestre nada en pantalla 275 00:30:32,599 --> 00:30:37,259 Pues entonces os puede interesar, pero aquí en este ejemplo esto no sirve de mucho, la verdad 276 00:30:37,259 --> 00:30:44,000 ¿Sí? Vale, vamos a seguir con la transparencia y vamos a ver qué otras opciones tenemos 277 00:30:44,000 --> 00:30:54,440 vale, hemos visto los cuatro 278 00:30:54,440 --> 00:30:56,160 pues ahora que sepáis que tenéis 279 00:30:56,160 --> 00:30:58,319 unas alternativas que se utilizan mucho 280 00:30:58,319 --> 00:30:59,339 y son estas de aquí 281 00:30:59,339 --> 00:31:01,619 y aquí hago una pausa del vídeo 282 00:31:01,619 --> 00:31:04,119 y sigo en el siguiente para que no se me alargue mucho 283 00:31:04,119 --> 00:31:06,619 vamos a tener por un lado 284 00:31:06,619 --> 00:31:08,759 que yo le puedo decir 285 00:31:08,759 --> 00:31:09,660 este comando 286 00:31:09,660 --> 00:31:12,740 ¿vale? esta alternativa 287 00:31:12,740 --> 00:31:14,859 ¿qué le digo con esta alternativa? 288 00:31:15,700 --> 00:31:16,559 le estoy diciendo 289 00:31:16,559 --> 00:31:18,259 que la salida 290 00:31:18,259 --> 00:31:20,740 me la guardes en un ficherito 291 00:31:20,740 --> 00:31:40,259 Hasta aquí bien, ¿no? Exactamente igual que teníamos arriba. Pero este de aquí, que es el que me interesa, me dice, oye, las opciones que tenemos es que la salida de errores, el 2, me la vas a enviar y ¿ves que me pone el ambersangium 1? 292 00:31:40,259 --> 00:31:50,160 quiere decir al mismo sitio que la entrada estándar sí entonces qué es lo que hace esta 293 00:31:50,160 --> 00:31:58,079 instrucción me coge tanto de la salida correcta tanto la salida correcta como la de errores y 294 00:31:58,079 --> 00:32:07,880 me la envía al mismo fichero eso es lo que hace redirigir la salida correcta y la de errores al 295 00:32:07,880 --> 00:32:15,319 el mismo fichero sí pero con la peculiaridad de que solamente he puesto un mayor quiere decir 296 00:32:15,319 --> 00:32:21,299 que si no existe el fichero lo crea y si existe lo machaca y vuelve a escribir con lo nuevo es 297 00:32:21,299 --> 00:32:29,359 decir sobre escribe sí pero esto que estoy poniendo aquí arriba es decir esto que os he puesto aquí 298 00:32:29,359 --> 00:32:36,700 arriba es exactamente lo mismo que se suele utilizar porque es mucho más cómodo es exactamente 299 00:32:36,700 --> 00:32:42,700 lo mismo que esto de aquí si yo pongo el anver sand y le pongo mayor y un fichero le estoy 300 00:32:42,700 --> 00:32:49,279 diciendo lo mismo que tanto la salida correcta como la de la de errores se me redirijan en este 301 00:32:49,279 --> 00:32:56,319 caso al mismo fichero si son las dos maneras de hacer exactamente lo mismo porque se utiliza 302 00:32:56,319 --> 00:33:03,460 la de abajo porque es mucho más cómodo vale entendéis esto es redirigir nosotros el ejemplo 303 00:33:03,460 --> 00:33:08,619 que hemos puesto ahora ha sido la entrada correcta a un fichero y el error a otro fichero 304 00:33:10,420 --> 00:33:19,359 pues este de aquí abajo y ya nos quitamos de encima esto hace exactamente lo mismo pero en 305 00:33:19,359 --> 00:33:26,799 lugar vale redirige tanto la salida como los errores al mismo fichero pero en este caso si 306 00:33:26,799 --> 00:33:33,920 el fichero existe qué es lo que va a hacer pues en lugar de sobre escribir agrega si funciona 307 00:33:33,920 --> 00:33:41,740 exactamente igual pues vamos a ver cómo funciona esto de aquí y con esto terminamos este vídeo y 308 00:33:41,740 --> 00:33:53,680 luego seguimos qué pasa si yo tengo voy a borrar uy va perdón voy a borrar los ficheros de salida 309 00:33:53,680 --> 00:33:54,940 todos los que sean salida 310 00:33:54,940 --> 00:33:57,539 vale 311 00:33:57,539 --> 00:33:59,319 ¿qué pasa si yo tengo esto? 312 00:33:59,720 --> 00:34:00,980 yo le digo, oye, ls 313 00:34:00,980 --> 00:34:03,940 y le digo 314 00:34:03,940 --> 00:34:04,559 menos l 315 00:34:04,559 --> 00:34:07,200 y le digo fichero 316 00:34:07,200 --> 00:34:10,960 1.txt 317 00:34:10,960 --> 00:34:14,079 fichero 3.txt 318 00:34:14,079 --> 00:34:15,059 ¿sí? 319 00:34:16,159 --> 00:34:17,539 pongo aquí 320 00:34:17,539 --> 00:34:19,820 yo que sé 321 00:34:19,820 --> 00:34:24,900 cagada 1 322 00:34:24,900 --> 00:34:34,099 y otra más 323 00:34:34,099 --> 00:34:40,150 pero voy a poner 324 00:34:40,150 --> 00:34:41,809 otra más 325 00:34:41,809 --> 00:34:42,869 que pongo 326 00:34:42,869 --> 00:34:50,719 adiós 327 00:34:50,719 --> 00:34:51,000 ¿sí? 328 00:34:51,940 --> 00:34:53,519 ¿qué es lo que quiero que veáis con esto? 329 00:34:55,219 --> 00:34:55,780 primeramente 330 00:34:55,780 --> 00:35:00,400 esto de aquí me va a mostrar la información 331 00:35:00,400 --> 00:35:01,559 correcta porque existe 332 00:35:01,559 --> 00:35:04,239 este de aquí me va a mostrar la información 333 00:35:04,239 --> 00:35:05,719 de este fichero porque existe 334 00:35:05,719 --> 00:35:08,400 pero este de aquí no existe 335 00:35:08,400 --> 00:35:13,500 este de aquí no existe y este de aquí no existe 336 00:35:13,500 --> 00:35:18,099 ¿sí? de forma que estos tres de aquí 337 00:35:18,099 --> 00:35:22,380 va a ser error y estos tres 338 00:35:22,380 --> 00:35:27,099 estos dos de aquí va a ser la salida correcta 339 00:35:27,099 --> 00:35:32,340 ¿sí? ¿de acuerdo? entonces este de aquí 340 00:35:32,340 --> 00:35:37,420 va a ser la salida 1 STD OUT 341 00:35:37,420 --> 00:35:58,880 Y este va a ser la salida 2, que va a ser STDR. ¿De acuerdo? Pues vamos a ver cómo me lo muestra. Fijaros que me dice, me muestra los errores y luego me muestra la salida correcta. 342 00:35:58,880 --> 00:36:05,199 Fijaros que siempre aglutina los errores por un lado y la salida correcta por otro. 343 00:36:05,960 --> 00:36:13,400 ¿Qué pasa si yo quiero decirle que tanto la salida de errores como la salida correcta, los dos, se me envían a un único fichero? 344 00:36:14,019 --> 00:36:17,039 Pues le podemos decir, en este caso, como hemos visto antes, 345 00:36:17,800 --> 00:36:24,119 le digo, oye, quiero que la salida normal la envíes a fichero 1.txt. 346 00:36:24,119 --> 00:36:28,519 Voy a poner esto más grande a ver si nos cabe en una línea. 347 00:36:28,880 --> 00:36:29,739 Que yo creo que sí. 348 00:36:31,059 --> 00:36:31,260 Vale. 349 00:36:32,900 --> 00:36:34,119 Fichero 1.txt. 350 00:36:34,860 --> 00:36:37,260 Le voy a llamar f1 solo para que nos quepa bien. 351 00:36:38,519 --> 00:36:40,579 Y ahora la salida de errores. 352 00:36:40,579 --> 00:36:51,059 Y para decirle que los errores también se me vayan a donde está la salida estándar, le pongo un anversan. 353 00:36:52,039 --> 00:36:52,320 Vale. 354 00:36:52,820 --> 00:36:53,420 Y un 1. 355 00:36:53,420 --> 00:37:18,639 Con eso le estoy diciendo que, oye, quiero que la salida de errores se me redirija y esto es al mismo sitio que la salida estándar. 356 00:37:18,639 --> 00:37:21,719 Y la salida estándar, por defecto, ¿dónde se ha enviado? 357 00:37:22,199 --> 00:37:23,400 Pues se ha enviado a F1. 358 00:37:24,000 --> 00:37:29,880 Así que le estoy diciendo que la salida de errores se me envíe al mismo sitio que el F1. 359 00:37:31,099 --> 00:37:36,440 Si lo probamos, efectivamente no me ha mostrado nada en pantalla. 360 00:37:36,980 --> 00:37:45,440 Si yo le hago un catahora de F1, pues fijaros que me aglutina los errores y luego la salida correcta. 361 00:37:46,460 --> 00:37:46,579 ¿Sí? 362 00:37:46,579 --> 00:38:02,599 Pero que sepáis que esto y esto, si le pongo el Ambersan y le pongo aquí F1, esto y lo anterior es lo mismo. 363 00:38:02,719 --> 00:38:08,780 Porque el Ambersan le está diciendo, oye, quiero que me cojan los dos, la salida estándar y las errores, y las dos me las lleves a ese ficherito. 364 00:38:09,260 --> 00:38:12,760 De forma que si yo le digo que me muestre, me muestra exactamente lo mismo. 365 00:38:12,760 --> 00:38:21,820 sí pues que sepáis que si yo quiero poner aquí un mayor es lo mismo es lo último que habíamos visto 366 00:38:21,820 --> 00:38:28,059 en la transparencia en lugar como ya existe el fichero f1 punto txt en lugar de sobre escribir 367 00:38:28,059 --> 00:38:35,139 me añade entonces si yo le doy cuando yo le diga ahora el cap en lugar de mostrarme estas líneas 368 00:38:35,139 --> 00:38:45,769 de aquí en lugar de mostrarme estás aquí me va a mostrar esto dos veces esto lo que ya había y esto 369 00:38:45,769 --> 00:38:55,739 lo que hay ahora es decir esto es lo que había antes de ejecutar el comando y esto es lo que 370 00:38:55,739 --> 00:39:05,280 ha añadido el último comando porque ha añadido es decir que he cogido este comando y en el este 371 00:39:05,280 --> 00:39:11,519 comando como le he dicho que quiero añadir lo que ha hecho es añadirme al fichero correspondiente 372 00:39:11,519 --> 00:39:15,360 ¿De acuerdo? ¿Entendemos esto? 373 00:39:16,300 --> 00:39:19,039 Son las diferentes opciones que nosotros tenemos 374 00:39:19,039 --> 00:39:23,860 Vale, pues voy a dejarlo aquí y vamos a terminar en el siguiente vídeo 375 00:39:23,860 --> 00:39:25,000 Venga, un saludo