Laboratorio2-Programación bajo plataformas abiertas Profesor Francisco Siles Estudiante Juan Orozco Villalobos-B14801 100 1.Usando comandos conocidos, explore las funciones de autocompletado, historial y búsqueda de comandos del shell, así como las distintas formas de indicar nombre de archivos y directorios. Hecho 2. Explore el funcionamiento de las variables de entorno. Ejecute los siguientes comandos: $ echo $SALUDO $ SALUDO=hola $ echo $SALUDO $ bash $ echo $SALUDO $ exit $ export SALUDO=hola $ bash $ echo $SALUDO $ exit ¿Qué sucede en cada caso? ¿Cuándo no funciona el comando echo y por qué? root@localhost:/home/juan# echo $SALUDO **No emite respuesta, SALUDO no tiene ningún valor declarado root@localhost:/home/juan# SALUDO=hola **Le asigna a la variable SALUDO el valor de “hola” root@localhost:/home/juan# echo $SALUDO **Al usar echo en SALUDO, imprime el valor que se le asignó,osea “hola” hola ** Impresión del hola root@localhost:/home/juan# bash **Crea una “sub-sesión “ en la terminal root@localhost:/home/juan# echo $SALUDO **Al suar echo en SALUDO no se imprime nada por que en esta sesión SALUDO no tiene valor alguno asignado. root@localhost:/home/juan# exit **Salir de la sub-sesión exit **Salir de la sub-sesión root@localhost:/home/juan# export SALUDO=hola **Exporta el valor de hola desde la sesión principal, dejando que otras sub-sesiones puedan usar el SALUDO con el valor que se le asignó root@localhost:/home/juan# bash **Crea una “sub-sesión “ en la terminal root@localhost:/home/juan# echo $SALUDO **Al usar echo en SALUDO, imprime el valor que se le asignó,osea “hola”, dado que fue previamente exportado desde la sesión principal. hola ** Impresión del hola root@localhost:/home/juan# exit **Salir de la sub-sesión exit **Salir de la sub-sesión 3.Declare algunas variables usando el comando export. Verifique que la declaración haya sido exitosa usando printenv. ¿Qué sucede con las variables declaradas si cierra la sesión y la inicia de nuevo? Se le asignó usando el comando export a A el valor de Avión, a B el de Barco y a C el de Carro, cuando se cerró la sesión y se volvió a iniciar, se usó el comando echo en A, (echo A),y dio como salida una letra “A”, sucedió de forma análoga en B y en C, por lo que se concluye que al cerrar la sesión se borran todas los valores que se le asignaron a las distintas variables y se reinician a su valor original. Cuando se usa el comando printenv A B C devuelve: juan@localhost:~$ printenv A B C juan@localhost:~$ 4.Declare algunas variables usando export, pero esta vez editando el archivo ~/.bashrc (archivo de configuración de bash para el usuario). Cierre la sesión e ingrese de nuevo. ¿Qué sucede ahora con las variables? Ésta vez, al modificar el archivo ~/.bashrc asignándole a las variables A,B y C los mismos valores que en el caso anterior, cerrando sesión y volviendo a la terminal, al ejecutar el comando printenv AB C me devuelve: juan@localhost:~$ printenv A B C Avion Barco Carro Esto sucede por que el archivo ~/.bashrc se ejecuta cada vez que se llama al bash, por lo tanto, las variables que estén allí declaradas se harán efectivas una vez se use el bash, independientemente si se cierra la sesión, por que el archivo no se vuelve a su estado original. 5.Explore las redirecciones de entrada y salida y las tuberías usando los siguientes comandos (si tiene dudas sobre lo que hace alguno de los comandos, consulte la página de manual): $ date > fecha.txt $ date >> fecha.txt $ ls -l /etc/ > dir.txt $ ls -l /bin/ > dir.txt $ echo Hola Mundo! > hola.txt $ gzip < /etc/passwd > passwd.gz $ gzip -dc passwd.gz | less $ apt-cache search text editor | less $ cat /etc/passwd | grep root $ cat /usr/share/doc/gcc/copyright | wc $ ls -l /etc/ | tee ls.txt ¿Qué sucede en cada caso? ¿Qué función cumple la redirección o tubería? date > fecha.txt: Me crea en el directorio que estoy un archivo llamado fecha.txt en el que están los datos que el comando date devuelve, que es la fecha y hora actuales date >> fecha.txt: Escribe dentro del archivo que ya existía (fecha.txt) de nuevo la fecha, pero no borra las anteriores, por lo que se deduce que al poner un > se crea un archivo o se sobreescribe borrando su contenido y reemplazandolo por uno nuevo, pero si se usa el >> se edita el que esta ya creado, tomando en cuenta el que estaba conservando lo que contenía y sumando el nuevo dato. $ ls -l /etc/ > dir.txt: Crea un archivo en el directorio en el que se está llamado dir.txt, en el que se escribe la salida del comando ls -l /etc/, que es el contenido del directorio etc. $ ls -l /bin/ > dir.txt: Modifica el archivo dir.txt para que su nuevo contenido sea la salida de ls -l /bin/, que es la lista de lo que está en el directorio /bin/ $echo Hola Mundo! > hola.txt:Crea en el directorio en el que estoy un archivo de texto que se llama hola.txt, cuyo contenido es la frase “Hola Mundo!” $ gzip < /etc/passwd > passwd.gz: Crea en el directorio en el que nos encontramos un archivo .gz llamado passwd.gz, que contiene el archivo passwd. $ gzip -dc passwd.gz | less: Imprime el contenido del archivo comprimido passwd.gz, lo que hace es que descomprime el contenido y mediante el pipe lo envia a less, que imprime el texto del archivo en pantalla $ apt-cache search text editor | less: Imprime el contenido de la búsqueda que hace apt-cache sobre editores de texto, el pipe liga el resultado de la búsqueda a less, que es un comando de impresión en pantalla. $ cat /etc/passwd | grep root: Usamos cat para ver el contenido de un archivo, y grep root para buscar archivos que contengan la palabra root, en este caso el pipe sirve para imprimir con el cat el resultado de la busqueda de lo que contenga root, juan@localhost:~$ cat /etc/passwd | grep root root:x:0:0:root:/root:/bin/bash $ cat /usr/share/doc/gcc/copyright | wc: wc sirve para saber cuantas palabras componen un archivo, mediante el pipe le asignamos eso al contenido de …/copyright, la impresión en la terminal es: juan@localhost:~$ cat /usr/share/doc/gcc/copyright | wc 42 330 2207 $ ls -l /etc/ | tee ls.txt:Con tee es posible almacenar la salida estándar de un programa, en este caso el pipe se usa para aplicar el tee a el ls -l /etc/, mientras se guarda en ls.txt y se imprime en la pantalla. Segunda Parte: Programación de tareas con cron 1. Edite el crontab del usuario y agregue el comando date >> /tmp/date para que sea ejecutado cada minuto. Espere un par de minutos y compruebe que la acción se haya efectuado correctamente. Se usa el comando crontab -e para abrir el archivo en el que se tiene que modificar, y se escribe: * * * * * date >> /tmp/date Esto nos muestra en la pantalla cada minuto: dom mar 25 10:22:31 CST 2012 dom mar 25 10:23:31 CST 2012 dom mar 25 10:24:31 CST 2012 2. Edite el crontab del sistema y agregue el comando que se muestra a continuación para que sea ejecutado dentro de tres minutos (compruebe la hora del sistema usando el comando date) y todos los demás días jueves de cada semana a la misma hora. El comando debe ser ejecutado por el usuario root: echo "Esto es una prueba" > /root/prueba Espere y compruebe su funcionamiento. Se usa crontab -e para editar, y se escribe: 03 22* *4 echo “Esto es una prueba” > /root/prueba Esto nos mostrara todos los jueves cada tres minutos la frase “Esto es una prueba” luego de las 10 de la noche.