Escuela de Informática y Telecomunicaciones SEMANA N° 8 NOMBRE EXPERIENCIA: Control del flujo en BASH UNIDAD DE APRENDIZAJE: Introducción a los SCRIPTS I. Objetivo Que el alumno tenga una idea general de las posibilidades que BASH ofrece para la elaboración y ejecución de shell scripts y las potencialidades de los mismos en la resolución de problemas prácticos. II. Conocimientos previos El control del flujo es la manera que tiene un lenguaje de programación (cualquiera) de provocar que el flujo de la ejecución avance y se ramifique en función de los cambios de estado de los datos. Controlar el flujo es determinar el orden en el que se ejecutarán las instrucciones en nuestros programas. Si no existiesen las sentencias de control entonces los programas se ejecutarían básicamente de manera secuencial, una instrucción tras otra. El BASH de GNU/LINUX soporta dos tipos de sentencias de CONTROL DEL FLUJO: SENTENCIAS CONDICIONALES, como por ejemplo: if-then,if-then-else y case, y SENTENCIAS ITERATIVAS, como por ejemplo: while, for, until. III. Requerimientos técnicos Para esta actividad basta con un PC con LINUX por alumno o en grupo de máximo dos alumnos por PC, opcionalmente acceso a Internet. IV. Desarrollo de la Actividad La siguiente actividad está centrada en la profundización de los conceptos generales relativos a la elaboración, ejecución y depuración de Shell scripts, así como de las posibles aplicaciones de estos a problemas relativos a usuarios y a la administración del sistema. Ud. deberá profundizar acerca de las principales características del intérprete de comandos BASH en el contexto de la realización de operaciones aritméticas básicas y avanzadas sobre datos provenientes desde la entrada estándar o desde archivos. También, y principalmente, en la profundización de los conceptos básicos de Shell scripting, la codificación y ejecución de Shell scripts, la depuración de los Shell scripts previamente codificados, así como la aplicación de estos a problemas prácticos. Algunas de las preguntas y/o actividades planteadas pueden responderse con la documentación ofrecida en el material teórico de la asignatura, otras, sin embargo, requieren que Ud. Investigue, para esto último será usual que se le ofrezcan links a 1 Escuela de Informática y Telecomunicaciones páginas web, esquemas o dibujos, diagramas, tablas, documentación complementaria, etc. Shell scripts 1.- Escriba un script Shell que después de ejecutarse permita que cada 90 minutos se presente en pantalla el mensaje "Hacer tareas" (indic.: usar while true, sleep, 90 minutos equivalen a 540 segundos y ejecutar el script en segundo plano). #!/bin/bash while true do echo –e “Hacer tareas\n” sleep 540 done Suponiendo que Ud. dio el nombre de mensaje al script, debería ejecutarse como $./mensaje& 2.- Escriba un script Shell que después de ejecutarse permita verificar cada 30 segundos si existe en el directorio actual un archivo llamado prueba.txt (indic.: para probar este script es necesario ejecutarlo en segundo plano) 2 Escuela de Informática y Telecomunicaciones 3.- Escriba un script Shell que después de ejecutarse permita pedir al usuario un nombre de archivo, luego presente en pantalla el contenido del archivo (usar cat o more) si este es un archivo regular (u ordinario), y si el archivo en cuestión es un directorio, el listado del mismo (usar ls). Informar en pantalla si es que el archivo no se corresponde con un archivo regular o directorio. #!/bin/bash clear echo –e “Ingrese el nombre de un archivo: \c” read arch if test –f $arch then more $arch else if test –d $arch then ls –l $arch else echo –e “$arch no es archivo ni directorio…\n” fi fi 4.- Escriba un script Shell que después de ejecutarse permita pedir al usuario un nombre de archivo, luego presente en pantalla si el archivo en cuestión existe y es ejecutable. 3 Escuela de Informática y Telecomunicaciones 5.- Escriba un script Shell que después de ejecutarse permita visualizar en pantalla un menú de tres opciones, la primera opción para borrar un archivo leído desde teclado, la segunda opción para visualizar un archivo también leído desde teclado y la tercera opción para terminar la ejecución del programa. 6.- Escriba un script Shell que después de ejecutarse permita pedir al usuario un nombre de archivo valido (es decir, un archivo ya existente) y un nombre de directorio valido. Luego el script debe permitir copiar el archivo en el directorio especificado. 4 Escuela de Informática y Telecomunicaciones 7.- Escriba un script Shell que después de ejecutarse permita desplegar en pantalla un menú usando la sentencia select y que posibilite la ejecución del escritorio (KDE o GNOME) que el usuario desee. La siguiente actividad requiere que Ud. elabore y pruebe el script que a continuación se le pide, una vez terminado y probado documéntelo en su cuaderno y pídale a su profesor que lo revise. 7.- Escriba un script Shell que después de ejecutarse presente en pantalla un menú y opciones de menú adecuadas que permitan simular una agenda telefónica, como tal, el script deberá permitir gestionar una libreta de direcciones (Agenda) y se deberán implementar las siguientes funcionalidades: añadir registros o datos a la agenda, buscar registros o datos en la agenda, borrar registros o datos de la agenda, y por último, se deberá permitir la edición/modificación de los registros o datos de la agenda. 5 Escuela de Informática y Telecomunicaciones 6 Escuela de Informática y Telecomunicaciones Existen una buena cantidad de sitios desde donde Ud. puede obtener información acerca de la programación en BASH, a modo de ejemplo, puede consultar: http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-IntroCOMO.html http://www.tldp.org/LDP/abs/html/index.html http://www.gentoo.org/doc/es/articles/bash-by-example-p1.xml http://doc.gulo.org/docu/bashavanzado.pdf V. Resumen Con esta experiencia aprendiste a elaborar y ejecutar Shell scripts básicos. Aplicaste los Shell scripts en la resolución de problemas prácticos de usuarios y relativos a la administración del sistema. 7