Está en la página 1de 3

Lydia Manazanares 1DAW

Script que busca un fichero introducido por parmetro en el directorio actual


Qu?
He realizado un script que busque un fichero en el directorio actual, el nombre del fichero se introduce por parmetro.

Para qu?
Pues para conocer y practicar la potencia que puede llegar a tener la programacin en consola de Linux puesto que somos programadores y es una herramienta indispensable.

Cmo?
En esta prctica lo primero que he pensado es el la comodidad del usuario que va a usar el script. Es por eso que he decidido que si el usuario introduce un nombre de fichero que no existe o un nombre de directorio que no existe sugerirle los nombres de ficheros o directorios ms parecidos a la bsqueda realizada. Lo primero que hago comprobar si el nmero de argumentos introducidos es igual a uno, con esta lnea: if [ $# -eq 1 ] #Si el numero de argumentos es igual a 1 Esto es para poder informar al usuario del modo en que debe usar el script y nuestro script solo tiene un nico parmetro de entrada, as que si el usuario no introdujese ningn parmetro o mas de uno el script saltara a else del final, que es el siguiente: else #Si el numero de argumentos es distinto de uno echo "Error argumento" echo "Use: ./buscar_fichero.sh <nombre_archivo.extension> or ./buscar_fichero.sh <nombre_archivo>" As le mostrara que puede introducir el nombre del fichero bien con extensin o bien sin extensin.

Sobre el resto del script he de destacar el uso anidado de sentencias de tipo if que ha requerido para mostrar al usuario cuando se ha encontrado un fichero o cuando se ha encontrado un directorio. Trabajando con directorios y ficheros he utilizado estas sentencias: 1/3

Lydia Manazanares 1DAW

if [ -d "$1" ] #si es un directorio y existe if [ ! -f "$1" ] #si un fichero y no existe Estos if me han permitido mostrar las sugerencias de las capturas siguientes: Por ejemplo, cuando detecta un directorio similar muestra esto:

O tambin al buscar un fichero y no ser encontrado listar los similares:

Cmo he mostrado las sugerencias de bsqueda? Muy fcil. #Busco $1 o $1 acabado en cualquier cosa gracias al comodn * y lo guardo en $result, result=$(find . -name "$1*") Con esto puedo mostrar la variable result en caso de no encontrarse el fichero o introducir mal el nombre, de la siguiente forma: echo "Sugerencias: -$result" #Sugiero las bsquedas de $result En caso de que el fichero exista, solo tengo que listarlo con esta lnea de cdigo: #listo el resultado en color para una mejor lectura :) 2/3

Lydia Manazanares 1DAW

ls -ls --color $result

Listado del directorio de archivos

Script completo
result=0 if [ $# -eq 1 ] #Si el numero de argumentos es igual a 1 then if [ -d "$1" ] #si es un directorio y existe then echo "Directorio encontrado" ls $1 #listo el directorio else #Si no es un directorio entonces en un fichero #Busco $1 o $1 acabado en cualquier cosa y lo guardo en $result result=$(find . -name "$1*") if [ ! -f "$1" ] #si el fichero no existe then echo "fichero no encontrado" #Muestro no encontrado echo "Sugerencias: -$result" #Sugiero las busquedas de $result elif [ -f "$1" ] #si existe then #listo el resultado en color para una mejor lectura :) ls -ls --color $result else echo "Un error inesperado ha ocurrido" fi fi else #Si el numero de argumentos es distinto de uno echo "Error argumento" echo "Use: ./buscar_fichero.sh <nombre_archivo.extension> or ./buscar_fichero.sh <nombre_archivo>" fi

3/3