[go: up one dir, main page]

0% encontró este documento útil (0 votos)
261 vistas5 páginas

Casos Prácticos Shell Scripting

El documento presenta 5 problemas relacionados con shell scripts en Linux. El primer problema describe un menú para gestionar una agenda telefónica almacenada en un archivo de texto. El segundo problema pide crear un script que liste los detalles de los archivos en un directorio dado. El tercer problema pide validar parámetros y buscar nombres en un archivo de texto. El cuarto problema pide copiar o mover archivos con una extensión dada a un directorio. El quinto problema no se describe.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
261 vistas5 páginas

Casos Prácticos Shell Scripting

El documento presenta 5 problemas relacionados con shell scripts en Linux. El primer problema describe un menú para gestionar una agenda telefónica almacenada en un archivo de texto. El segundo problema pide crear un script que liste los detalles de los archivos en un directorio dado. El tercer problema pide validar parámetros y buscar nombres en un archivo de texto. El cuarto problema pide copiar o mover archivos con una extensión dada a un directorio. El quinto problema no se describe.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Problema

Escribir un shell-script que construya un men con 4 opciones. El men opera sobre un fichero
llamado datos. Cada lnea del fichero contiene dos cadenas: un nombre y un nmero de telfono. El
fichero est ordenado alfabticamente por el nombre. Las opciones del men son:
1.
2.
3.
4.

Bsqueda de un telfono, dado el nombre.


Alta, dado el nombre.
Baja, dado el nombre.
Listado por pantalla del fichero completo.

# Conviene crear el fichero vaco si no existe.


if [ ! f datos ]
then
echo > datos
fi
while true
do
clear
echo AGENDA TELFONICA
echo
echo 1. Buscar entrada
echo 2. Insertar entrada
echo 3. Borrar entrada
echo 4. Mostrar listado
echo 5. Salir
echo
echo n Opcin elegida:
read opcion
case $opcion in
1) clear
echo BUSCAR ENTRADA
echo
echo n Introduzca el nombre del usuario:
read nombre
if [ -z $nombre ]
then
break
fi
echo
grep i $nombre datos
if [ $? ne 0 ]
then
echo La entrada no existe
echo
fi
echo
echo Pulse INTRO para continuar
read intro;;
2) clear
echo INSERTAR ENTRADA
echo
echo n Introduzca el nombre de usuario:
read nombre
if [ -z $nombre ]

then
break
fi
echo
echo n Introduzca el telfono:
read telefono
if [ -z $telefono ]
then
break
fi
echo
echo $nombre $telefono >> datos
sort d datos > temp
mv temp datos;;
3) clear
echo BORRAR ENTRADA
echo
echo n Introduzca el nombre de usuario:
read nombre
if [ -z $nombre ]
then
break
fi
echo
# Opcin 1
grep v $nombre datos > temo
mv temp datos;;
# Opcin 2
# grep d ^[\<$nombre\>] datos > temp
# mv temp datos;;
4) clear
echo LISTAR ENTRADAS
echo
more datos
echo
echo Pulse INTRO para continuar
read intro;;
5) clear
exit 0;;
esac
done

Problema 2

Escribir un shell-script que tome como parmetro el nombre de un directorio y realice las
siguientes acciones:
1.
2.
3.

Comprobar que el nmero de parmetros es correcto.


Comprobar que el parmetro es un directorio.
Para cada entrada del directorio especificado el programa genera:
a. El nmero de la entrada.
b. Nombre de la entrada.
c. Tipo de la entrada: fichero, directorio
d. Tamao.

e.
f.

Nmero de enlaces.
Da y mes de la ltima modificacin.

# Comprobamos el nmero de parmetros.


if [ $# -ne 1 ]
then
echo Nmero de parmetros incorrecto
echo
echo Sintaxis: $0 directorio
echo
exit 0
fi
# Comprobamos que el parmetro es un directorio.
if [ ! d $1 ]
then
echo El parmetro especificado no es un directorio
echo
echo Sintaxis: $0 directorio
echo
exit 0
fi
# Listado de los ficheros del directorio.
cont=0
for i in $1/*
do
echo Entrada nmero: $cont
ls l $i
cont=`expr $cont + 1`
done

Problema 3

En un sistema de informacin disponemos de un fichero de texto de la forma:


Primer_Apellido Segundo_Apellido Nombre
La prueba consistir en escribir un shell-script que tenga tres parmetros:
1. Directorio en el que se encuentra el fichero (D)
2. Nombre del fichero (F)
3. Nmero de lneas (N)
El Shell-script debe realizar las siguientes acciones:
1. Comprobar la existencia del directorio (D).
2. Comprobar la existencia y permisos de lectura sobre el fichero (F) dentro del directorio
indicado.
3. Localizar en el fichero (F) todas las lneas correspondientes a sujetos cuyo primer apellido
sea Felipe.
4. Crear un fichero (F1) ordenado alfabticamente segn el segundo apellido, que contenga
los N primeros nombres localizados.
# Comprobacin del nmero de parmetros.
if [ $# -ne 3 ]

then
echo Sintaxis: $0 directorio fichero nmero_lneas
echo
exit
fi
# Comprobar que el directorio existe.
if [ ! d $1 ]
then
echo Error: El directorio no existe.
echo
exit
fi
# Comprobar que el fichero existe.
if [ ! f $1/$2 ]
then
echo Error: El fichero no existe.
echo
exit
fi
# Comprobar el permiso de lectura del fichero.
if [ ! r $1/$2 ]
then
echo Error: El fichero debe tener permiso de lectura.
echo
exit
fi
grep ^Felipe $1/$2 > $1/temp
if [ $? ne 0 ]
then
echo No se encontr el patrn.
rm $1/temp
exit
else
echo Las entradas con el primer apellido \Felipe\ son:
cat $1/temp
echo
fi
sort +1 -2 $1/temp > $1/F1
echo Los $3 primeros nombres del fichero ya ordenado son:
head -$3 $1/F1
rm $1/temp

Problema 4

Realizar un shell-script que reciba como parmetro una extensin de archivo sin punto y el nombre
de un directorio especificado mediante su nombre de ruta completo. El shell-script preguntar al
usuario si desea copiar o mover los archivos del directorio actual que tengan esa extensin al
directorio especificado como segundo parmetro. Una vez realizada la opcin escogida se mostrar
por pantalla un listado de los ficheros afectados, ordenados alfabticamente.

if [ $# -ne 2 ]
then
echo Error, nmero de parmetros incorrecto.
exit
fi
if [ ! d $2 ]
then
echo Error, el directorio no existe.
exit
fi
echo Elija una opcin:
echo 1. Para copiar.
echo 2. Para mover.
read opcion
while [ $opcion ne 1 ] || [ $opcion ne 2 ]
do
echo Error, opcin incorrecta.
echo Vuelva a teclear la opcin.
done
if [ $opcion eq 1 ]
then
cp *.$1 $2
fi
if [ $opcion eq 2 ]
then
mv *.$1 $2
fi

Problema 5

También podría gustarte