Está en la página 1de 7

EJERCICIOS T6. SCRIPTS BLOQUE 2 Ejercicio 1. Crear un script por paso de parmetros.

- Comprobar que el nmero de parmetros es dos, sino poner error. - El ejercicio ha de cambiar de nombre a un fichero, pero se ha de comprobar si el archivo a cambiar de nombre existe. Si existe se ha de comprobar si el nuevo nombre existe en otro fichero, si existe poner error, el fichero ya existe. If [ $# -eq 2 ] Then If [ -f $2 ] Then Echo Error hay otro fichero con este nombre. Else mv $1 $2 Fi Else Echo Error fi Ejercicio 2. Realizar un script que reciba como argumento un nmero comprendido entre 1 y 20. Si el valor del parmetro no est comprendido entre 1-20 el programa termina. En caso contrario generar una lnea con tantos asteriscos como indique su argumento. echo Introduzca un nmero read num m01=0; m20=0; if [ $num -ge 1 ] then m01=1; fi if [ $num -le 20 ] then m20=1; fi if [ $m01 != $m20 ] then contador=0; while [ $contador -lt $num ]; do echo '*' let contador=$contador+1 done else fi Ejercicio 3. Crea un script que contabilice el nmero de ficheros en $HOME/ejercicios cuyo propietario es el usuario que le pasamos como argumento.

Ejercicio 4. Crear un guin-shell llamado lsmas que permita listar, en formato largo, el contenido de un directorio ( que se le pasa como argumento ), de tal manera que si el nmero de archivos que va a mostrar es mayor de 5 debe presentarlos por pginas para poder examinarlos. (Si no se le pasa ningn argumento listar el directorio actual). For a in `ls $1` Do If [ -f $1/$a ] Then M=`expr $M + 1` If [ $ M le 5 ] Then Ls l $1/$a Else M=0 Echo Pulsa una tecla para continuar Read tecla Clear Fi Fi done Ejercicio 5. Programa un script llamado estadistica_dir que realice un estudio del nmero de ficheros y directorio del directorio $HOME/ejercicios: Nmero de ficheros regulares encontrados = Nmero de directorios encontrados = #estadistica_dir For archivo in `ls` Do If [ -f $archivo ] Then Num=`expr $num + 1` Fi If [ -d $archivo ] Then Num1=`expr $num1 + 1` Fi Done Echo Nmero de ficheros encontrados= $num Echo Nmero de directorios encontrado= $num1 Ejercicio 6. Crea un script llamado rmnew, que realizar un borrado de fichero pero bajo la idea de papelera de reciclaje, es decir, borrar el fichero que se le indique pero antes har una copia como nommbre_fichero.bak que guardar en el directorio /

$HOME/copias. Si es la primera vez que se utiliza el comando deber crearse tal directorio. #rmnew If [ -d $HOME/COPIAS ] Then Mkdir $HOME/COPIAS Fi For a in `ls $HOME` Do If [ -f $HOME/$a ] Then Cp $HOME/$a $HOME/COPIAS/$a.bak Rm $HOME/$a Fi done Ejercicio 7. Escribir un script ejecucion que reciba como argumentos los nombres de dos archivos, ejecutables. Si tras la ejecucin del primero se detecta algn error, el segundo no se debe ejecutar. Hay que tener en cuenta los posibles errores e indicar, si se produce alguno, a qu es debido. Ejercicio 8. Disear un scipt copia que permita hacer un volcado de todos los ficheros de texto (*.txt) que existan en el directorio del alumno a un subdirectorio del mismo que se llamar backup.Si el directorio backup no existe se ha de crear. Ejercicio 9. Un usuario te ha comentado que sera muy til saber en todo momento qu archivos de un directorio son totalmente accesibles (lectura, escritura y ejecucin) por un usuario distinto de su grupo de trabajo. Te pide si puedes ayudarle. Para ello, disea un guin-shell permisos que, pasndole como argumento un directorio, te permita listar sus archivos y subdirectorios que tienen esta caracterstica. For A in `ls $1` Do If [ .f $A ] Then VAR=`ls l $A | cut c 8-10` If [ $VAR = rwx ] Then Ls l $A Echo Cuidado que tiene todos los permisos para los otros Fi Fi done Ejercicio 10.

Disea un script llamado seronoser que a partir de un nombre de usuario (pasado como argumento) te diga si el usuario existe y, en caso afirmativo, a qu grupos pertenece. Ejercicio 11. Pedir al usuario dos archivos. Comprobar que existen. Si existen comparar sus tamaos y decir cual es mayor. Ejercicio 12. Realizar un programa que, tras editar un fichero cualquiera, guarde una copia de seguridad de la anterior versin del mismo si ha sido modificado. Ejercicio 13. Crear el siguiente menu paso de parmetros a. Borrar archivo b. Mostrar contenido archivo c. Cambiar permisos Comprobar que el usuario ha introducido un parmetro. Comprobar que el archivo existe. En la opcin c pedir al usuario los permisos en octal y cambiarlos. Ejercicio 14. Borrar archivos Pedir al usuario un archivo a borrar. Si el archivo existe borrar el archivo Preguntar al usuario si desea continuar borrando archivos. Si es que si, volver a pedir otro archivo mirar si existe y borrar. El script finalizar cuando el usuario ya no desee borrar ms archivos.

Echo Borrar archivo A=SI While [ $A=SI ] Do Echo Introduzca archivo: Read Arch If [ -f $Arch ] Fi Echo Continuar borrando SI Read A done Ejercicio 15. Pedir al usuario un nmero. Si el nmero no est comprendido entre 1-6 volver a pedir otro nmero. Ejercicio 16. Pedir al usuario un nombre de usuario. Mirar los archivos del directorio $HOME/EJERCICIOS los archivos que no pertenecen al usuario.

Cambiar a esos archivos de propietario Ejercicio 17. Pedir al usuario un usuario. Mirar si existe. Si existe mostrar su id Ejercicio 18. Pedir al usuario dos archivos. Comprobar que existen. Si existen comparar su contenido. Si son iguales borrar el ultimo. Ejercicio 19. Crear el siguiente menu paso de parmetros 1. Sumar 2. Restar 3. Multiplicar 4. Dividir Comprobar que el usuario ha introducido dos parmetros. Mostrar el resultado de cada operacin. echo 1.Sumar echo 2.Restar echo 3.Multiplicar echo 4.Dividir echo Introduce una opcion: read OPCION case $OPCION in 1) echo Introduce un nmero read N1 echo Introduce otro nmero read N2 SOLUCION=`expr $N1 + $N2` echo El resultado es: $SOLUCION;; 2) echo introduce un nmero read N1 echo Introduce otro nmero read N2 SOLUCION=`expr $N1 - $N2` echo El resultado es: $SOLUCION;; 3) echo Introduce un nmero read N1 echo Introduce otro nmero read N2 SOLUCION=` $N1 \* $N2` echo El resultado es: $SOLUCION;; 4) echo Introduce un nmero read N1 echo Introduce otro nmero read N2 SOLUCION=` $N1 / $N2` echo El resultado es: $SOLUCION;; case

Ejercicio 20. Disea un guin que transforme unos permisos expresados en forma octal al formato rwxrwxrwx Ejercicio 21. Disea un guin que transforme unos permisos expresados en fortato rwxrwxrwx a formato octal. Ejercicio 22. Pedir al usuario varios archivos Mirar si existen. si existen empaquetar y comprimir los archivos Ejercicio 23. Pedir al usuario un archivo .tar. Mirar si existen. Si existe desempaquetar el archivo. Ejercicio 24. Pedir al usuario un archivo .tgz. Mirar si existen. Si existe decomprimir el archivo. If [ -f $1 ] Then Gzip d $1 fi Ejercicio 25. Realice un shell-scrip piramide que admita como argumento un nmero 'N' y que obtenga a la salida una serie de 'N' filas de forma triangular. Para ./piramide.sh 12 la salida sera. 01 02 02 03 03 03 <br 04 04="" 05 05 05 05 05 06 06 06 06 06 06 07 07 07 07 07 07 07 08 08 08 08 08 08 08 08 09 09 09 09 09 09 09 09 09 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 Echo Introduzca un nmero Read NUM A=1 While [$A le NUM ] Do B=$A While [ $B gt 0 ] Do If [ $A lt 10 ]

Then Echo n 0$A Else Echo n $A Fi B=`expr $B 1` Done Echo A=`expre $A + 1` done

También podría gustarte