De vez en cuando se me da por comprar una de esas revistas que hablan de GNU/Linux, sobre todo cuando voy a coger un tren, para entretenerme durante el viaje, y como suelen venir con un CD de las últimas distros que van saliendo pues así de paso las pruebo.
El caso que este fin de semana me compré la “Todo Linux“. Me llamó la atención que en su sección de “Trucos Linux”, el destacado del mes trataba sobre la construcción de un pequeño y simplísimo script para gente nueva en el sistema. El Scritp no lo crearon ellos si no que era una pequeña modificación de un script colgado en TrucoLinux.com y que lo que hacía era mostrar una entrada del diccionario de la RAE en tu terminal.
Como en el artículo comentaban que el script no aceptaba las tildes (ni tampoco las ñ, ni las mayúsculas) pues me dispuse a retocar un poco el mismo para que si aceptara palabras con esos caracteres. Me aburro y lo cuelgo aquí.
El script acepta que le pases la palabra a buscar como parámetro, o se la introduzcas después.
#!/bin/bash
## Funciones:
function buscar_palabra {
echo "Se está buscando la palabra \"$aux\" en la RAE, esto"
echo "puede tardar dependiendo de la velocidad de su conexión"
echo ''
#Aquí puedes utilizar lynx o links2 en lugar de links, y si quieres
#quitarle el "-dump" para visualizar directamente el navegador
links2 -dump "http://buscon.rae.es/draeI/SrvltGUIBusUsual?LEMA=$palabra&origen=RAE"
echo ''
}
function adaptar_palabra {
#Pasar a minúsculas
palabra=$(echo $palabra | awk '{print tolower($0)}')
#Para poner la palabra por pantalla
aux=$palabra
#Cambiar caracteres especiales
palabra=$(echo $palabra | sed 's/á/%C3%A1/')
palabra=$(echo $palabra | sed 's/é/%C3%A9/')
palabra=$(echo $palabra | sed 's/í/%C3%AD/')
palabra=$(echo $palabra | sed 's/ó/%C3%B3/')
palabra=$(echo $palabra | sed 's/ú/%C3%BA/')
palabra=$(echo $palabra | sed 's/ñ/%C3%B1/')
}
## Parte principal:
if test -z $1
then
clear
echo "Diccionario de la RAE"
echo "Introduce la palabra a buscar:"
read palabra
adaptar_palabra
buscar_palabra
else
clear
palabra=$1
adaptar_palabra
buscar_palabra
fi
Argordmel propone en los comentarios que sería bueno que el script te diera la oportunidad de volver a buscar una palabra al final. Bien, pues esta podría ser una de las implementaciones ( es solo la parte principal del script):
## Parte principal:
buscar="s"
count="0"
while [ $buscar = 's' ]
do
if [ $count -eq "0" ]
then
if test -z $1
then
clear
echo "Diccionario de la RAE"
echo -n "Introduce la palabra a buscar: "
read palabra
adaptar_palabra
buscar_palabra
else
clear
palabra=$1
adaptar_palabra
buscar_palabra
fi
else
echo -n "Otra palabra: "
read palabra
adaptar_palabra
buscar_palabra
fi
count=$(($count+1))
opc=b
while [ $opc != 'n' ] && [ $opc != 's' ]
do
echo -n "¿Buscar otra? [s/n]: "
read opc
if [ "$opc" = 'n' ]; then
exit
elif [ "$opc" = '' ]; then
opc='b'
fi
done
done
Como bien dice mch en lo comentarios, si modificamos en esta segunda parte principal con el siguiente recorte de código desde la línea 16 (“else”) hasta la 21 (“fi”), podremos pasar como parámetro más de una palabra:
else
for pal in "$@"; do
clear
palabra=$1
adaptar_palabra
buscar_palabra
if [ $# -gt 1 ]; then
echo "Pulse una tecla para siguiente palabra "
read -n1
fi
shift
done
fi

