0 00:00:00,000 --> 00:00:10,000 Bueno, os voy a dejar la solución del ejercicio 4 y, como me ha dado problemas la máquina 1 00:00:10,000 --> 00:00:17,000 virtual, lo que voy a hacer es utilizar uno de los terminales online que habíamos visto 2 00:00:17,000 --> 00:00:22,000 en clase, ¿vale? Simplemente para hacer las operaciones que yo creo que será suficiente. 3 00:00:22,000 --> 00:00:31,000 Entonces, estoy ubicado en el home de un usuario llamado usuario y el ejercicio 4, que iba 4 00:00:31,000 --> 00:00:36,000 sobre redireccionamiento, nos pide crear un fichero llamado CAP1 con el contenido. Este 5 00:00:36,000 --> 00:00:41,000 es el capítulo 1. Podemos crearlo de diferentes formas, ¿vale? Yo lo voy a crear el primero 6 00:00:41,000 --> 00:00:52,000 mediante CAT y la redirección y voy a poner el texto. Voy a guardar con CTRL-D. Veremos 7 00:00:52,000 --> 00:01:00,000 que se ha creado el capítulo 1. Bueno, aquí no funciona LL, que es lo que estábamos utilizando 8 00:01:00,000 --> 00:01:05,000 porque esto no es una versión de Ubuntu en el cual he creado este alias, pero bueno, 9 00:01:05,000 --> 00:01:10,000 LS-L nos muestra precisamente ese fichero que hemos creado. Así lo repetiríamos con 10 00:01:10,000 --> 00:01:18,000 CAP2 y CAP3. Voy a ver si tenemos disponible Nano. Que sí. Vale, pues voy a crear el segundo 11 00:01:18,000 --> 00:01:46,000 con Nano. Y el tercero con redirección, por ejemplo. Tenemos los tres ficheros y nos dice 12 00:01:46,000 --> 00:01:53,000 mostrar en pantalla uno tras otro y de una sola vez. Bueno, primero verificar mostrando 13 00:01:53,000 --> 00:01:58,000 cada uno con CAT. Esto no tiene ningún problema. Lo mostramos. CAP1 contiene... Este es el 14 00:01:58,000 --> 00:02:02,000 capítulo 1. No me ha hecho el retorno de carro porque yo no lo he hecho tampoco. Podría 15 00:02:02,000 --> 00:02:20,000 editarlo para ponerle ese retorno de carro al final. Salto de línea. Puedo mostrar CAP2 16 00:02:20,000 --> 00:02:26,000 y CAP3. Ahí está. Y luego mostrar en pantalla en el 2 uno tras otro y de una sola vez los 17 00:02:26,000 --> 00:02:30,000 archivos CAP1, CAP2 y CAP3 creados. Bueno, si los quiero mostrar de una sola vez podría 18 00:02:30,000 --> 00:02:35,000 hacerlo de varias formas. Una sería esta. Especificar todos los ficheros después de 19 00:02:35,000 --> 00:02:44,000 la orden CAT. Y me los va a mostrar uno por uno. También podría hacerlo utilizando los 20 00:02:44,000 --> 00:02:49,000 carácteres comodín la interrogación. Que sustituiría el último carácter, que en este 21 00:02:49,000 --> 00:02:53,000 caso sería el 1, el 2 o el 3. Podría ser una letra también, pero en este caso sólo 22 00:02:53,000 --> 00:02:59,000 hay números. Y me haría lo mismo. También funcionaría, por si os ha ocurrido, poner 23 00:02:59,000 --> 00:03:05,000 el asterisco. Lo que pasa es que la interrogación es más precisa porque indica que hay un único 24 00:03:05,000 --> 00:03:13,000 carácter. Grabar en un único archivo llamado Libro los archivos CAP1, CAP2 y CAP3. Bueno, 25 00:03:13,000 --> 00:03:17,000 tenemos que utilizar aquí la redirección y podemos hacer lo siguiente. Una forma sería 26 00:03:17,000 --> 00:03:24,000 esta. Redirigir el contenido de los tres capítulos a un fichero llamado Libro. Si queremos utilizar 27 00:03:24,000 --> 00:03:30,000 los caracteres comodín para ahorrarnos un poquito en escribir, pues mejor. Nos habrá 28 00:03:30,000 --> 00:03:37,000 creado un fichero llamado Libro que va a contener el contenido de los tres ficheros creados 29 00:03:37,000 --> 00:03:44,000 anteriormente. Cuatro. Guardar en el archivo pwman. Ese es un fichero que tenemos que crear 30 00:03:44,000 --> 00:03:52,000 en el directorio actual la página del manual pwd. Bueno, la página del manual pwd la obtengo 31 00:03:52,000 --> 00:04:00,000 mediante el comando man y pwd, evidentemente. Vaya, no tiene página de manual. Vamos a 32 00:04:00,000 --> 00:04:12,000 ver si con help... Vale. Con help aparece alguna cosa más, pero no tenemos... Vamos 33 00:04:12,000 --> 00:04:21,000 a probar con la interrogación. Tampoco. Bueno, aquí en este caso no tenemos las páginas 34 00:04:21,000 --> 00:04:25,000 de manual, con lo cual no funciona. Pero bueno, lo que tendríamos que hacer sería 35 00:04:25,000 --> 00:04:33,000 redirigir esto que saldría por pantalla directamente a pwd.man, que es el fichero que queremos 36 00:04:33,000 --> 00:04:39,000 crear. En este caso no nos va a mostrar nada, pero nos va a derivar ese mensaje de error 37 00:04:39,000 --> 00:04:46,000 que pone man not found. Bueno, no porque es un mensaje de error. No nos va a crear nada 38 00:04:46,000 --> 00:04:56,000 realmente en el fichero. Va a estar vacío. ¿Vale? Mostrar. Vamos a imaginar que tiene 39 00:04:56,000 --> 00:05:06,000 contenido. De hecho, pues puedo hacer un ls-l barra de... para que tenga cosas. Esto. Voy 40 00:05:06,000 --> 00:05:18,000 a cambiar un poquito el ejercicio. En este caso no va a contener la página de manual 41 00:05:18,000 --> 00:05:24,000 de pwd, sino que va a tener el resultado de hacer un ls-l. Pero bueno, nos podría dar 42 00:05:24,000 --> 00:05:31,000 lo mismo el contenido, es lo de menos. Mostrar el archivo pw.man, estoy en el 5, con el comando 43 00:05:31,000 --> 00:05:38,000 more. En este caso tendríamos que hacer lo siguiente, more pwd.man. Lo que va a hacer 44 00:05:38,000 --> 00:05:42,000 es mostrarnos el contenido del fichero y si no ocupiera en pantalla, que en este caso 45 00:05:42,000 --> 00:05:49,000 sí cabe, nos mostraría la paginación que vimos en clase, típica, donde yo puedo avanzar 46 00:05:49,000 --> 00:05:57,000 línea a línea o página a página. Contar el número de palabras del archivo pwd.man. 47 00:05:57,000 --> 00:06:02,000 Para esto teníamos que utilizar el comando wc y como queremos palabras utilizaremos el 48 00:06:02,000 --> 00:06:09,000 modificador o la opción "-w". Y le ponemos el nombre del fichero. En este caso nos dice 49 00:06:09,000 --> 00:06:18,000 que pwd.man tiene 155 palabras. Crear el archivo host.txt con las dos primeras líneas del 50 00:06:18,000 --> 00:06:24,000 archivo tchost. Vamos a ver primero si existe, porque esto es un simulador, este fichero. 51 00:06:24,000 --> 00:06:29,000 Sí existe este fichero, el tchost. Ya hablamos sobre este fichero cuando vimos redes y dijimos 52 00:06:29,000 --> 00:06:38,000 que formaba parte de una de las posibles opciones para la resolución de nombres. Contenía 53 00:06:38,000 --> 00:06:45,000 la IP y el nombre del equipo. Bueno, en este caso queremos solo las dos primeras líneas 54 00:06:45,000 --> 00:06:49,000 del fichero tchost, que en este caso solo tiene dos. En vuestro caso, en clase, veréis 55 00:06:49,000 --> 00:06:54,000 que en Ubuntu está compuesto de más líneas, pero si quisiéramos solo obtener las dos 56 00:06:54,000 --> 00:07:01,000 primeras, ya digo, en este caso va a coincidir, tendríamos que hacer head-2 para mostrar 57 00:07:01,000 --> 00:07:09,000 las dos primeras líneas del fichero tchost y queremos redirigirlas hacia un fichero que 58 00:07:09,000 --> 00:07:18,000 se llame host.txt. En vez de por pantalla vemos que lo ha derivado hacia ese fichero. 59 00:07:18,000 --> 00:07:22,000 En el 8 nos pide algo muy similar, pero con las tres últimas líneas. Tenemos que hacer 60 00:07:22,000 --> 00:07:26,000 las tres últimas líneas de un fichero, que se llama en este caso tcgroup, que ya hemos 61 00:07:26,000 --> 00:07:38,000 visto en clase con la gestión de usuarios, que es para los grupos de usuarios. Luego 62 00:07:38,000 --> 00:07:45,000 tenemos que derivar hacia otro fichero, xinet.txt. El nombre es lo de menos, pero veremos que 63 00:07:45,000 --> 00:07:50,000 se nos han creado dos ficheros. Uno es host, que tiene las dos primeras líneas del fichero 64 00:07:50,000 --> 00:07:58,000 tchost, ya digo que coincide, y otro que se llama xinet.txt, que coincide con las tres 65 00:07:58,000 --> 00:08:11,000 últimas grupos de tcgroup. Vamos a ver tcgroup, lo que contiene, que son una lista de los 66 00:08:11,000 --> 00:08:24,000 usuarios. Hemos dicho los tres últimos. Me da la sensación que se habían los tres 67 00:08:24,000 --> 00:08:36,000 primeros. Tcgroup. Sí, no sé por qué. Es que he puesto head otra vez y eran los tres 68 00:08:36,000 --> 00:08:46,000 últimos. Me he equivocado. Es tail-3 tcgroup y lo redirigimos hacia xinet.txt, que va a 69 00:08:46,000 --> 00:08:56,000 sustituir la anterior. Ahora ya sí. Ahí están los tres últimos grupos. 9. Concatenar 70 00:08:56,000 --> 00:09:00,000 ambos archivos en otro archivo, por ejemplo, llamado todo.txt, presentándolos juntos en 71 00:09:00,000 --> 00:09:05,000 pantalla. Bueno, si quiero concatenarlos y verlos a la vez en pantalla, teníamos el 72 00:09:05,000 --> 00:09:12,000 operador de redirección t, o t, o te, o como queráis llamarlo. En este caso voy a 73 00:09:12,000 --> 00:09:23,000 poner cat, hemos dicho que se llamaban host.txt y xinet.txt y tendría que poner el operador 74 00:09:23,000 --> 00:09:30,000 de redirección tubería, te, y el fichero, por ejemplo, todo.txt. Esto lo que va a hacer 75 00:09:30,000 --> 00:09:35,000 es mostrarme los dos ficheros por pantalla, pero a la vez redirigir hacia otro fichero 76 00:09:35,000 --> 00:09:41,000 llamado todo.txt, que contendrá exactamente lo mismo. Si recordáis, era como una tubería 77 00:09:41,000 --> 00:09:48,000 en forma de te y nos permitía realizar las dos operaciones a la vez. Con el comando cat, 78 00:09:48,000 --> 00:09:54,000 este 10 es un pelín enrevesado, pero en realidad es para que probemos a hacer redirecciones 79 00:09:54,000 --> 00:10:14,000 de diferentes entradas y salidas. Con el comando cat, intentar mostrar el archivo noexiste.txt. 80 00:10:14,000 --> 00:10:18,000 Este fichero no existe, como su nombre indica, no tendría por qué ser así, podría existir 81 00:10:18,000 --> 00:10:23,000 aunque se llamara noexiste, pero en realidad no hay ningún fichero que se llame así. 82 00:10:23,000 --> 00:10:30,000 Sin redireccionar entrada estándar. Bueno, la entrada estándar yo podría haberla redireccionado 83 00:10:30,000 --> 00:10:37,000 de todos modos poniendo noexiste.txt, pero es absurdo porque ya va a coger como entrada 84 00:10:37,000 --> 00:10:43,000 el nombre del fichero. Entonces, con esto ya estamos directamente dándole como entrada 85 00:10:43,000 --> 00:10:54,000 el nombre del fichero. Pero redireccionando la salida estándar hacia copia noexiste, 86 00:10:54,000 --> 00:11:05,000 y el error estándar para agregar al archivo errores.txt. ¿Esto qué haría? Primero, si 87 00:11:05,000 --> 00:11:12,000 el fichero realmente no existe, como os he indicado, daría un error. Por lo tanto, el 88 00:11:12,000 --> 00:11:18,000 error se agregaría, porque hemos puesto la doble redirección, a errores.txt. Si el fichero 89 00:11:18,000 --> 00:11:25,000 realmente existiera, haría la copia en el otro fichero porque redirigiría algo que 90 00:11:25,000 --> 00:11:33,000 tiene que ir a pantalla a otro fichero y entonces haría una copia de este fichero. Veremos 91 00:11:33,000 --> 00:11:44,000 que se ha creado el fichero errores.txt, donde aparece el error que noexiste.txt, no es un 92 00:11:44,000 --> 00:11:50,000 fichero ni es un directorio. 11. Redirecciona la salida del comando date a un fichero llamado 93 00:11:50,000 --> 00:11:56,000 fecha.txt en tu directorio home. La orden date lo que hace es mostrar la fecha y la 94 00:11:56,000 --> 00:12:05,000 hora actual. Lo que queremos hacer es redirigirlo hacia uno que se llame fecha.txt. Ya está. Ahora, 95 00:12:05,000 --> 00:12:12,000 fecha.txt contiene la fecha de hoy. 12. Añade la salida del comando ls al fichero fecha.txt. 96 00:12:12,000 --> 00:12:17,000 Pues ls da como resultado el contenido del directorio en el que me encuentro. Lo quiero 97 00:12:17,000 --> 00:12:24,000 añadir a fecha.txt, lo añado con el doble redireccionamiento, para que ahora podamos 98 00:12:24,000 --> 00:12:36,000 ver que contiene el resultado de los dos. En el 13 también pretendía hacer un ejemplo de 99 00:12:36,000 --> 00:12:40,000 cómo utilizar el redireccionamiento de entrada, utilizando un comando que se llama mail, que 100 00:12:40,000 --> 00:12:47,000 probablemente aquí no tengamos instalado. Os digo cómo se instala, pero no sé si voy a poder 101 00:12:47,000 --> 00:12:54,000 instalarlo aquí, porque es una consola que está simulada y a lo mejor no me deja instalar nada. 102 00:12:54,000 --> 00:13:19,000 Vale. Voy a hacerlo con more root. 103 00:13:19,000 --> 00:13:43,000 No, no me va a dejar instalar las utilidades de mail. Ya os lo comentaré en clase, pero existe 104 00:13:43,000 --> 00:13:47,000 un comando llamado mail que me deja gestionar correo electrónico. Entonces yo puedo enviar 105 00:13:47,000 --> 00:13:52,000 un mensaje a un usuario, poniendo mail y el nombre de usuario. En este caso me da un error 106 00:13:52,000 --> 00:13:59,000 porque no está instalado. Y podría escribir ese mensaje. Lo que quería que hicierais aquí era 107 00:13:59,000 --> 00:14:05,000 enviar este fichero como mensaje por correo electrónico y para ello podríamos utilizar el 108 00:14:05,000 --> 00:14:10,000 redireccionamiento de entrada. Porque de esta forma, con la flecha hacia la izquierda, con el 109 00:14:10,000 --> 00:14:21,000 menor que, podría pasarle como entrada los datos al programa mail y que enviara el correo electrónico 110 00:14:21,000 --> 00:14:30,000 con ese fichero. Bueno, no tiene mayor misterio, tampoco era que se complicara mucho, pero puede 111 00:14:30,000 --> 00:14:35,000 parecer un poco complicado. Ya digo que os lo comentaré en clase. El 14. Visualiza el número 112 00:14:35,000 --> 00:14:46,000 de usuarios en estos momentos. Aquí he mezclado dos cosas. Por un lado, aparece los usuarios que 113 00:14:46,000 --> 00:14:50,000 hay creados en el sistema y podría saber cuántos hay contando el número de líneas. 114 00:14:50,000 --> 00:15:09,000 Me dice que hay 30 usuarios. Incluso es más, hay muchos usuarios que no pueden hacer login. 115 00:15:09,000 --> 00:15:14,000 ¿Cómo son estos? Sbin, no login, Sbin, no login. El único que puede hacer login es este 116 00:15:14,000 --> 00:15:24,000 realmente usuario. Y supongo que root, root también. Incluso es curioso, esto es porque es un simulador, 117 00:15:24,000 --> 00:15:35,000 pero que tiene el bin barra hash, no el bin barra bash. Podríamos, si quisiéramos, contabilizar cuántos 118 00:15:36,000 --> 00:15:42,000 de estos usuarios, y así pongo otro ejemplo de redirección, pueden iniciar sesión. 119 00:15:43,000 --> 00:15:53,000 Ya digo, insisto, que el terminal es bash. Aquí es porque le habrán puesto un nombre para simularlo. 120 00:15:54,000 --> 00:15:55,000 ¿Vale? 121 00:16:08,000 --> 00:16:15,000 Podríamos contarlos. Y son realmente dos, dos los usuarios. Bueno, los habéis visto que nos los ha mostrado aquí. 122 00:16:15,000 --> 00:16:23,000 Son root. El $, recordad que era final de línea. Entonces le estoy diciendo que de cat etc para wd me muestre 123 00:16:23,000 --> 00:16:32,000 solo aquello que coincida en su búsqueda con que acabe con este patrón. ¿Vale? Y luego le redirijo hacia wc-l, 124 00:16:32,000 --> 00:16:38,000 me dice los que pueden iniciar sesión. ¿Vale? Esto no es lo que pedía el ejercicio. Es aumentado, es ampliado, 125 00:16:38,000 --> 00:16:43,000 pero bueno, así tenéis como otra cosa. Y luego nos pide también los usuarios conectados actualmente, 126 00:16:43,000 --> 00:16:49,000 que se pueden mostrar con who. Bueno, aquí hemos mezclado dos cosas. Who tampoco lo tengo disponible aquí, 127 00:16:49,000 --> 00:17:00,000 pero yo podría contar cuántos usuarios hay conectados haciendo simplemente who, tubería, wc-l, porque me contaría 128 00:17:00,000 --> 00:17:17,000 el número de líneas que contiene el resultado del orden who. ¿Vale? 15. Ordena el fichero etc pas wd. 129 00:17:17,000 --> 00:17:23,000 Entonces lo voy a ordenar según el tercer campo. Para ordenar según el tercer campo tenemos que utilizar cat 3, 130 00:17:23,000 --> 00:17:35,000 que es el número de campo. Como el fichero pas wd contiene una serie de campos separados por dos puntos, 131 00:17:35,000 --> 00:17:41,000 le tengo que decir también que el delimitador de campo son los dos puntos, no el espacio. ¿Vale? 132 00:17:42,000 --> 00:17:52,000 Entonces lo pondría así. Vemos que nos va a ordenar por el tercer campo, que es el uid. 123, 13, 16. 133 00:17:52,000 --> 00:17:59,000 Vemos que la ordenación no es del todo exacta y por eso nos pide en el siguiente que ordenemos, pero con ordenación numérica. 134 00:17:59,000 --> 00:18:05,000 Ya vimos que sort ordenaba, pero que si yo no le indico que es un número, la ordenación será alfabética. 135 00:18:05,000 --> 00:18:09,000 Entonces hay que añadirle la opción "-n", para que la ordenación sea numérica realmente. 136 00:18:09,000 --> 00:18:20,000 Entonces ya veremos ahí si el 1, el 2, el 3, el 4, el 5, el 6, el 7. Dijimos que a partir del 1000 es cuando se reserva para usuarios 137 00:18:20,000 --> 00:18:26,000 que yo haya creado dentro del sistema. Por debajo del 1000 está reservado para el sistema operativo. 138 00:18:26,000 --> 00:18:32,000 ¿Hay alguna diferencia? Pues evidentemente sí. ¿Por qué? Porque la ordenación ahora la hace numérica en vez de alfabética. 139 00:18:33,000 --> 00:18:41,000 Vale, 17. Contar cuántas veces se ha escrito la palabra de visualización del manual en el histórico. 140 00:18:41,000 --> 00:18:46,000 Para ello teníamos un comando history, que no sabía si iba a funcionar, pero sí ha funcionado. 141 00:18:46,000 --> 00:18:54,000 Nos aparece el historial, entonces yo puedo dentro de history buscar cuántas veces se ha escrito la palabra humana. 142 00:18:54,000 --> 00:19:11,000 En este caso son estas veces. Si quiero contarlas o bien pongo grep-c, que nos da el número, son 10, o bien podría redirigir hacia wc-l y contar. 143 00:19:11,000 --> 00:19:27,000 ¿Me salen 11? ¿Por qué? 1, 2, 3, 4, 5, 6, 7, 8, 9. Ah, porque el historial habrá cambiado al haber seguido poniendo. 144 00:19:27,000 --> 00:19:35,000 Claro, he añadido al escribir comandos, ¿veis? He añadido aquí la palabra man también, entonces se van incrementando. 145 00:19:36,000 --> 00:19:51,000 El ejercicio realmente nos quería pedir cuando empiece por la palabra man, pero el history ya veis que tiene delante un número con lo cual no nos permite buscar por el inicio de línea. 146 00:19:52,000 --> 00:20:03,000 Quizás se podría hacer una ordenación por el segundo campo y luego intentar contar cuántos hay para eso filtrarlo con tail. 147 00:20:03,000 --> 00:20:08,000 Se complicaría bastante, no hace falta que lo hagáis. Si lo queréis intentar y probar a lo mejor se puede hacer. 148 00:20:08,000 --> 00:20:19,000 Otra posibilidad, que no sé si aquí la tendremos porque ya repito que es un simulador, es utilizar el fichero bushistory. 149 00:20:19,000 --> 00:20:28,000 Que es un fichero oculto que tenemos dentro de Ubuntu, en este caso no está, con una copia del historial de comandos que hemos puesto. 150 00:20:28,000 --> 00:20:33,000 Y luego, por último, el 18, buscar la entrada de un usuario user dentro de la lista de variables de entorno. 151 00:20:33,000 --> 00:20:51,000 Bueno, dijimos que al hacer env yo tengo una lista de variables de entorno como son el usuario que ha iniciado sesión, el home, el prompt, el nombre de login, el terminal, el path, el que estoy utilizando... 152 00:20:51,000 --> 00:20:55,000 Bueno, un montón de variables de entorno. De hecho Ubuntu tiene bastantes más. 153 00:20:55,000 --> 00:21:05,000 Lo que nos pide aquí es mostrar la entrada referente al usuario. Entonces yo puedo filtrar. Os recuerdo que este ejercicio era todo de redireccionamiento. 154 00:21:05,000 --> 00:21:14,000 Y que busque user. Si lo busco al principio de la línea pues mejora. Por si acaso apareciera por otro lado la palabra user. 155 00:21:14,000 --> 00:21:24,000 Y me aparecerá esa línea filtrada de todas las que hay. Vale, pues este era el ejercicio del redireccionamiento 4.