Estructuras de control en shell

Solo disponible en BuenasTareas
  • Páginas : 16 (3928 palabras )
  • Descarga(s) : 0
  • Publicado : 17 de mayo de 2011
Leer documento completo
Vista previa del texto
Introducción:
El tema que se desarrolara en las estructura de control que se utilizan en Shell, para ello se a requerido una pequeña investigación de cada un de estas estructuras que enseguida se manejaran algunos aspectos relacionados con la administración de sistemas que son importantes del conocimiento de los comandos de Unix / Linux.

La Programación del Shell de UNIX
 
El objetivo de lapráctica es desarrollar un programa intérprete de comandos (shell) similar al Csh del UNIX. En el caso que el shell se desarrolle en otro sistema operativo, también deberán compilarse los fuentes de los comandos principales del UNIX para que el shell pueda ejecutarlos (ls, more, cat, grep, mkdir, rmdir, rm, etc.). Los grupos de prácticas no podrán ser de mas de dos personas.
 
Las prácticas sepresentarán interactivamente y se deberán preparar una serie de programas (scripts) que ejecutados con el comando interno source (ver punto 3) muestren todas las capacidades del shell (comandos internos, estructuras de control, etc.). Para que la práctica sea aprobada deberán programarse como mínimo todas las especificaciones descriptas en este documento y no se deben producir errores deprogramación durante la ejecución. Se valorará además la facilidad de uso del mismo como la estructura y modularización de las funciones y ficheros fuentes. Si el programa se desarrolla en Linux o Minix, deberá funcionar como shell del usuario (especificado en el fichero /etc/passwd).
 
La documentación a tener a mano durante la presentación será:
 
1. Máquina (grafo) de estados finitos del shell.
2.Comandos/capacidades adicionales programadas.
3. Listado del programa (estructurado y comentado).
4. Listado de los scripts de pruebas.
 
Líneas de Comando e inicialización.
Al arrancarse el programa este debe leer dos ficheros:
 
a)     El fichero con las inicializaciones de las variables de entorno y comandos de inicialización que se encuentra en $HOME/.inicio. En este fichero deberáinicializar como mínimo las variables de entorno PATH e HISTORIA)
b)    El fichero donde se ha grabado los últimos comandos ejecutados en la sesión anterior ($HOME/.historia).
 
Las líneas de comandos aceptarán “;”como separadores de comandos. Los pipes entre comandos estarán indicados por el caracter “|”. Las redirecciones de salida a ficheros se especifican con “> fichero” (nuevo fichero) y “>>fichero” (concatenar). La redirección de entrada estándard se especifica con “< fichero”. Ejemplos:
 
% com1 arg1 arg2; com1 | com2 | com3 > salida < entrada; com8
 
El shell almacenará los últimos N (siendo N definido por la variable de entorno HISTORIA, si la variable no existe será un mínimo de 20) comandos ejecutados que podrán reejecutarse con la siguiente sintaxis (opcionalmente con lasflechas de arriba y abajo).
 
!!             ejecuta el último comando.
!2            ejecuta el segundo comando guardado en la historia.
!-n           ejecuta el último - n comando.
!XY         ejecuta el último de los comandos que comienzan con XY...
 
Los comandos serán almacenados en un fichero ($HOME/.historia) cuando se sale del shell y será leído cuando se arranca. Se utilizará unalista circular para almacenar los comandos ejecutados.
 
Procesos en Background.
Para enviar un proceso a background se indica con el carácter & al final del comando (después de las redirecciones, si las hubiera).
 
% com1 | com2 | com3 > salida < entrada &
 
Comandos internos
El shell tendra algunos comandos internos, lo que significa que en vez de hacer un  se ejecutará una funciónespecífica del shell. Los comando internos son:
cd                                                                                         (cambio de directorio de trabajo).
pwd                                                                                      (Imprimir directorio de trabajo).
printenv                                                                         (Imprimir variables de...
tracking img