Professional Documents
Culture Documents
en Sistemas de Informacin
Tema: Programacin del Shell utilizando estructuras de control: if, case, for, while y until Objetivos: Adquirir destreza en el manejo de las estructuras de control. Actividad: En una terminal de un laboratorio de computacin se necesita desarrollar una solucin en Linux que contemple las siguientes opciones:
c) Por cada archivo que hay en un directorio, si es regular que contar la cantidad de
lneas que tiene y si es subdirectorio mostrar su contenido en formato extendido. (utilizar estructura for).
Hoja: .. de ..
while true do clear echo -n "Menu de opciones a) Agregar a un archivo el contenido de n archivos. b) Sumar n nmeros. c) Contar lneas de regulares y listar en formato extendido directorios. d) Borrar archivos ordinarios que excedan la cantidad de 3. e) Activar el bit suid en cada archivo regular que hay en un directorio. f) Salir. Ingrese opcion: " read opc case $opc in a|A) echo -n "Ingrese el archivo base a modificar: " read archibase if test f $archibase then caning=0 echo -n "Ingrese la cantidad de archivos cuyo contenido desea agregarle: " read cantot else echo el archivo base ingresado no existe o no es comn fi while test $caning -ne $cantot do echo -n "Ingrese archivo:a concatenar " read archi if test -f $archi then caning=`expr $caning + 1` cat $archi >> $archibase && echo "El nuevo contenido del archivo es: " more $archibase else echo "El archivo que desea agregar no existe o no es regular" fi done echo Presione enter para continuar read a;; b|B) caning=0 resum=0 echo -n "Ingrese la cantidad de numeros que desea sumar: " read cantot; until test $caning -eq $cantot do echo -n "Ingrese un numero: " read num resum=`expr $resum + $num` caning=`expr $caning + 1` echo -n "El resultado parcial de la suma es: "
Ciclo lectivo: 2012
Hoja: .. de ..
$resum done echo "El resultado final de la suma es $resum" echo Presione enter para continuar read a;; c|C) echo -n "Ingrese el directorio: " read di if test -d $di then for i in `ls $di` do if test -f $di/$i then can=`wc -l $di/$i|cut -d' ' -f1` echo "El archivo $i tiene $can lineas" else if test -d $di/$i then echo "El contenido del directorio $i es:" ls -l $di/$i fi fi done else echo "El archivo ingresado no es directorio o no existe." fi echo Presione enter para continuar read a;; d|D) echo "Ingrese directorio: " read dir con=`ls -l $dir|grep '^-'|wc -l` if [ $con -gt 3 ] then for i in `ls $dir` do if [ -f $dir/$i -a $con -gt 3 ] then rm $direlet/$i echo "El archivo $i fue borrado" con=`expr $con - 1` fi done echo "El directorio $dir tiene 3 archivos ordinarios y son los siguientes:" ls -l $dir|grep '^-' else echo "El directorio tiene $con archivos ordinarios" fi echo Presione enter para continuar read a;; e|E) echo -n "Ingrese directorio: "
Ciclo lectivo: 2012
Hoja: .. de ..
read direc if [ -d $direc ] then for i in `ls $direc` do if [ -f $direc/$i ] then chmod u+s $direc/$i echo "El archivo $i tiene activado el bit suid" echo "En la siguiente linea puede visualizar los caracteres que representan los permisos:" ls -l $direc/$i fi done else echo "El archivo ingresado no es directorio" fi echo Presione enter para continuar read a;; f|F) echo salimos del men exit;;
*) echo "Opcin incorrecta" echo "Presione cualquier enter para continuar" read a;; esac done
Hoja: .. de ..