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

Sabes que sería bueno que hubiera un condicional que pidiera si deseo buscar otra palabra o de lo contrario que se cierre.
Agur y saludos desde algún lugar de Colombia!!!
Añado una de las posibles modificaciones de la parte principal del script para que se comporte como comentas.
Saludos!
Pingback: Ubuntu: Diccionario RAE desde un terminal GNU/Linux — Textualmenteactivo.com
Otra manera de hacer la parte principal es que vaya pidiendo palabras hasta introducir una cadena vacía, que es como a mi me es más comodo:
## Parte principal:
echo “Diccionario de la RAE”
while [ 1 ]
do
echo -n “Introduce la palabra a buscar (en blanco para salir): ”
read palabra
if test -z $palabra
then
break
fi
adaptar_palabra
buscar_palabra
done
@pitogrillo Si, es más sencillo, eliminas un paso para el usuario. Ahora habría que adaptarlo un poco para que en la primera ejecución aceptara la palabra por parámetro, que también resulta muy cómodo.
Saludos.
si para el segundo script modificamos desde la línea 17 (después del else) a la línea 20 (antes del fi) e introducimos estas líneas, podríamos pasar más de una palabra como argumento:
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
@mch
Pues a mi no me funciona. Si cambio el links2 por firefox si que me lanza bien el navegador con la definicion de la palabra, pero con el links2 o lynx me dice pagina incorrecta y me muestra la pagina principal de la RAE. Alguna sugerencia?
Si ya hace un tiempo que los de la RAE cambiaron su página y este script no funciona, habrá que ver si se puede hacer algo…
Pingback: La RAE en la consola | Ubunteate
Pingback: Buscar palabras en el DRAE desde la terminal en GNU/Linux « El blog de SMAUG
Pues no sé si el script habrá sido modificado después de esos mensajes de 2010 diciendo que no funcionaba, pero acabo de probar el primer script (utilizando lynx que es el navegador que tenía instalado) y me ha funcionado a la perfección a la primera.
¡Grandísima idea! ¡Gracias!