Diccionario de la RAE en tu terminal GNU/Linux
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #!/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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ## 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:
16 17 18 19 20 21 22 23 24 25 26 27 28 | 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 |
GNU/Linux, Software Libre, Unix, buscadores, curioso, códigos, shell

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!
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…