Instalando un dispositivo BlueTooth en Linux Mint

Desde hace meses hago todas las clases online, así que estoy equipando los equipos, valga la redundancia, con auriculares, mejorando las conexiones, como en el estudio que hube de adquirir una antena especialmente potente para atravesar la pared que me separa del router, y en ocasiones, incluso, dotando a los PCs de conectividad que no tenían, como el caso del BlueTooth para poder utilizar dispositivos inalámbricos.

Pero luego viene la realidad de vivir luchando a la contra con mi empeño en utilizar Linux, aunque sé que no es la mejor de las herramientas desde el punto de vista de la productividad, pero algo «fanático» convencido de que instalar linux es un acto político y, quizá, incluso, poético, si considero que la sociedad es el papel en el que escribir el poema de mi vida.

He probado varios adaptadores con mala suerte en casi todos los casos. Recientemente adquirí uno (afortunadamente no muy caro) que garantizaba tener soporte para Linux, pero no era así, salvo que estuvieses dispuesto a compilar sus drivers para el kernel que usases y renunciases a actualizaciones so pena de perder el driver así creado.

Después de varios intentos de compilación (que no acaban de funcionar porque el «makefile» estaba mal diseñado), después de revisar el código abierto del mismo para intentar entender qué hacía y corregirlo, después de trastear de diversos modos, así como tener que saber si tenía que instalar la versión USB, la versión UART o la versión ALL, es decir, después de horas de trabajo… aún no funcionaba y además ralentizó el arranque de mi sistema.

En resumidas cuentas, doy la razón a quienes dicen que para usar Linux hay que ser un experto… o similar. Salvo contadas excepciones.

Finalmente, me di por vencido y decidí no perder más tiempo y cambiar el dispositivo en Amazon, con la pérdida de tiempo asumida.

Por si acaso, volví a darle una opción a otro dispositivo que no garantizaba la compatibilidad con Linux, un cacharrito que era al mismo tiempo antena WiFi y BlueTooth, lo que, si funcionaba bien, podría ser muy conveniente especialmente en el estudio, donde siempre me viene bien una antena de backup y además soporte BT para conectar auriculares.

Esta vez, después de que en marzo lo comprase y lo intentase instalar, parece ser que sí ha habido suerte (amén de un cambio de versión de sistema operativo), reconociéndome ambas funcionalidades. Hice bien, quizá, en suponer que un día funcionaría.

Pero Linux y los drivers de dispositivos…

Empatizar no la reconoce mi diccionario

En la entrada de ayer, hablaba sobre empatizar y me sorprendió que mi diccionario no la reconociese, ese que usa el sistema operativo para saber qué palabras están definidas o aceptadas y cuales no. No es riguroso y no pretende serlo, pero que no incluya una palabra como esta es poco empático… y algo antipático.

Pero peor aún resulta las que sugiere como alternativas:

Así que poco más que añadir, salvo que la incluí ese mismo día para no ir por ahí sin esa palabra en mi vocabulario. 😉

¿Y qué si tu infancia fue una mierda según la mayoría de la gente?

Tengo ya añitos encima como para que las fotos de mi infancia fueran en blanco y negro, aunque pronto comenzaron esas fotografías en color que amarilleaban rápidamente y que mi madre conserva con todo el cariño del que es capaz (que es mucho) en álbumes ordenados por año, mes y excursión u ocasión.

Pero discrepo completamente de lo que se entendía como una bella infancia, quizá porque nunca me gustaron los deportes, menos aún los de equipo, especialmente los equipos. Por supuesto, si me veía en obligación (solía ser así en esa «nostálgicamente idolatrada» infancia), prefería ser portero para no tener que andar correteando y poder quedarme a charlar con quien se acercase a la portería.

En cuanto pude (y fue bien pronto) me hice con mi primer ordenador, un viejo Spectrum 48K, que me abrió por fin la mente a un mundo completamente nuevo y prometedor. No envidiaba esas calles llenas de gente que jugaba a cosas con pelotas y agresividad en mitad de un escaso tráfico rodado.

Tenía unos 15 años. Eran los 80. Fue mi «movida» particular. Descubrí que podías hablar con una máquina. ¡Qué maravilla! ¡Por fin alguien me entendía! (Cabría decir que era alguien que me hacía caso o, incluso, que me obedecía… pero no sé si aquello era tan importante).

Un poco parecido a eso había sido mi relación (unos años antes) con el ajedrez. Algo comprensible, un juego serio, un juego relajado físicamente salvo para un cerebro que veía piezas moviéndose en un techo que no era un techo y sí un tablero imaginario en el que celebraba derrotas y victorias contra mí mismo (alusión a la preciosa miniserie de Netflix titulada Gambito de Dama).

Podía de repente hacer un programa en BASIC, sí, el viejo BASIC, que simulase una ruleta rusa y que tiñese de rojo la pantalla en caso de tener ¿suerte?. No tenía que explicarle a nadie que eso me resultaba estimulante, muchísimo más que perseguir un esférico por un parque plagado de baches en una tierra árida y hostil sin más objetivo que darle una patada.

Podía de repente saber que una máquina sabe interpretar señales binarias (ceros/unos) que le decían qué tenían que hacer y poco a poco me fue mecanizando comprendiendo que era una forma de cualificar el mundo (sí/no) en grupos básicos de pertenencia a conjuntos que mucho más tarde aprendí a ampliar con una gama discreta y después infinita de grises en una lógica que no era simplemente bievaluada. Podía saber que los humanos no éramos tan simples.

Podía de repente hacer que la repetición no tuviese sentido si no era programable. Paquetizar las operaciones de modo que pudiera afrontarlas más eficazmente para disponer de más tiempo, quizá para leer, que era mi otra gran pasión.

En aquella época no necesitaba ganar eficacia, pero sí senté las bases en mi cerebro para poder hacerlo más adelante.

Oh… pero lo mejor aún estaba por llegar.

Cuando descubrí que los ordenadores podían conectarse entre sí, formando redes que te permitían algo tan básico en aquella época como un comando TALK para hablar entre dos personas (quizá al otro lado no había una persona, pero lo parecía más que los que jugaban al fútbol en mi barrio).

Y llegó (para mí) la red de redes, la red que unía un millar de millares de ordenadores (en aquella época sólo ordenadores) y con ello extensiones brutales de ese básico TALK, para poder hacer lo que hacía en esa vieja portería (charlar), pero con personas afines a mí en todos los rincones de la única esfera que me interesaba, esa llamada mundo.

Me hice adicto (casi) al uso de usenet y los Grupos de Noticias, esos antiguos «foros» donde volqué mi ansia por conocer gente afín. Así, escribí hasta la saciedad en el viejo grupo «soc.culture.spain» que me sirvió de contacto con el mundo incluso cuando estuve viviendo en Australia, pero especialmente cuando estuve trabajando en empresas donde habitaba un millar de personas de las que consideraba que la infancia ideal (esa de la que no querían salir) era la del fútbol entre un montón de energúmenos que ocupaban el patio como si fuese suyo.

Me acabo de dar cuenta de que otra de las diferencias entre estas dos imágenes comparativas de las dos infancias es que en la «presuntamente» de mierda hay dos chicas y sólo hay chicos en la de blanco y negro. ¡Curiosa diferencia!

Creé o solicité la creación de es.alt.literature (creo recordar) y alguna otra agrupación donde esperaba conocer gente interesante. «Buscaba un alma que se pareciera a mí y no podía encontrarla» que diría Lautreamont.

Así fue pasando el tiempo y pude encontrar gente fuera de ese ámbito telemático que, literalmente, me salvó la vida, para hallarme rodeado de personas a la que quiero, pero no guardo más que buenos recuerdos de aquellos tiempos, esas conversaciones con BegoWhat4, alguna otra gente… y mi certificación de que fue cualquier cosa menos una infancia como la que otras personas consideran ideal y sin embargo me ha llevado a ser, hoy, una persona feliz.

Volvería a elegir la misma ruta que me ha traído hasta aquí. Y no me gusta mucho que se estigmatice como infancia de mierda aquella que tuve solo por el hecho de que no es la que tenía que tener… según no sé «qué mierda» de patrones.

Tuve suerte.

El ingenio español ha desaparecido

Ponerle de nombre «Ingenio» a un satélite es poco ingenioso o poco previsor, pues es algo previsible (siempre hay que pensar en los errores como parte del desarrollo tecnológico) que pueda extraviarse o explotar… y genera titulares que, si a alguien le importase, cosa que tampoco parezca ser el caso, daría lugar a millares de «memes» posibles o bromas más o menos malintencionadas.

Pero es que con ese nombre el chiste está escrito, casi, sin error… el Ingenio Español se va de España, emigra, pero en en este caso para no volver jamás.

Gracioso, triste… pero demasiado real. ¡ay, querida amiga!

Caballo de Troya

Es tan conocida la historia (leyenda) del Caballo de Troya que casi da pereza tener que explicar qué es un troyano, pero cuando te llega un mensaje como este por correo corres el riesgo de creer que verdaderamente es un mensaje destinado a ti.

Cada día más, los antivirus heurísticos son capaces de discernir con una inteligencia más o menos artificial, implementada en forma de algún algoritmo (¿son algoritmos las redes neuronales artificiales, los sistemas expertos, la lógica difusa?), si se trata de SPAM, virus, o si por el contrario es un mensaje «verificado» como sin peligro.

Por supuesto, queda la llamada a la ciudadanía, a los y las internautas, para que sean conscientes del riesgo que asumen al tener un dispositivo conectado a estos ataques que muchas veces es muy complejo distinguir de cartas bienintencionadas.

Me llegó este mensaje al correo electrónico de mi flamante linux (algo más seguro frente a ataques «convencionales» de software que se ejecuta en el equipo, básicamente porque la seguridad es implícita al propio sistema operativo y además (y sobretodo) porque no se desarrollan muchos virus para atacar a menos del 1% de dispositivos, pudiendo atacar al 99%):

Cuando el cuerpo del mensaje es como este:

señor.
Siga según lo solicitado, ¡tómese su tiempo!
(Archivo_10009256727)

yo sospecho, ya de primera, por la mala redacción del mismo, el iniciar la presentación de manera tan formal, pero en minúsculas, y ese «según lo solicitado» tan inespecífico, amén de incluir un «asunto» con problemas en la codificación UTF-8.

Además, me encuentro con que lleva a un presunto PDF (que tampoco abriría, pues no sé las capacidades de ejecutar macros o similar por el lector de PDF que tengo instalado y que no es el habitual de Adobe, por supuesto, en LinuxMint), que para colmo tiene la extensión .html tras de sí y un tamaño ridículo de menos de 1kb.

Ya con esta información puedo saber de qué tipo de virus se trata, pero no pierdo la ocasión de recordar viejos tiempos, cuando me tocaba analizarlos como parte de mi trabajo en seguridad informática y lo descargo en una zona segura (no voy a «pincharlo», así, sin más) y lo abro con un editor al que confiaría mi vida (tecnológica). El código es tan simple que espanta:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="XXXrefresh" XXXcontent="0;URL=https://XXXbit.ly/XXX3jeIkxk">
</head>
<body>
<br>
</body>
</html>

En realidad, lo único que hace este código (al que le he añadido las XXX por seguridad) es redireccionar (con http-equiv=»refresh»)  el navegador a un lugar seguramente malicioso. Ahí sí que no voy a arriesgarme, salvo que lo hiciese en una máquina virtual… y no tengo tiempo ni ganas.

 

 

 

 

Cambiar el tamaño del lienzo de una imagen sin alterar la imagen

mogrify -gravity center -background white -extent 5000x5000 *.png

Con este comando linux puedo cambiar automáticamente el tamaño de todos los archivos PNG en una carpeta dada, pero específicamente cambiar el tamaño del lienzo (de ahí la opción «extent») del mismo, sin tocar la proporción de la imagen.

Con la opción «-gravity center», mantengo la imagen a transformar en el centro del mismo y con la opción «background white» le añado un conveniente fondo blanco, ideal para subir archivos a Instagram, por ejemplo, que no se lleva muy bien con las transparencias de los PNG.

Esto ha transformado esta imagen original (transparente) de 2044×513 pixels:

En esta imagen de 5000×5000 pixels con fondo blanco:

Dictionary of the Spanish language Text Analysis

El 20 de agosto de este «peculiar» 2020 recibí un simpático correo electrónico de un hombre llamado «Germán Andrés Segura Tinoco» que me decía:

Buscando en Internet, encontré en su website el diccionario de la RAE en modo texto plano, el cual me pareció genial y quisiera usarlo en un proyecto personal (sin fines de lucro) y publicar el resultado en mi GitHub, en donde tengo mis proyectos de informática públicos.

Por lo tanto, quería preguntarle, ¿cuál es la forma correcta de citarlo o de darle agradecimientos?

No es la primera vez que me pasa algo así desde que realicé el trabajo de recopilar todas las palabras (tecleándolas) del diccionario de la RAE para aquel, lejano ya, proyecto de Isidoro Valcárcel Medina. Sin ir más lejos, el año pasado una persona desde Chile me decía que lo estaba usando para «enseñar a hablar» a una máquina. Así como la gran colaboración que realicé dentro del interesantísimo proyecto de Marta PCampos 1914-2014 sobre las palabras que habían desaparecido del diccionario en esos 100 años. Su precioso trabajo que yo denomino «Palabras Muertas».

Yo le respondí cortésmente con un email ese mismo día diciéndole:

Por supuesto eres libre de usarlo en un proyecto personal sin ánimo de lucro o, incluso, remunerado. Son las palabras de la RAE… es decir, de todos, que yo tan sólo he tecleado (ante la imposibilidad de conseguir una versión digital).

Puedes citarme como te dé la gana, pero agradecería que citases mi nombre y website:
Giusseppe Domínguez https://www.giusseppe.net

Te envío, no obstante, una entrada del blog con una versión lo más actualizada posible (en Mega) y no me responsabilizo de posibles errores… que voy corrigiendo, pero que seguro que alguna quedará. Si necesitas algún tipo de «sección» del mismo o alguna cosa curiosa… puedes decírmelo y si tengo ocasión, cuenta conmigo.

Un cordial saludo y hasta pronto,
Giusseppe

Fue muy bonito e interesante encontrarse en dónde había utilizado esas palabras y para qué: un análisis estadístico de las palabras en español, además de su gentileza a la hora de citarme en varios lugares agradeciéndome mi contribución (que siempre tiendo a minimizar, pues las palabras son públicas).

Buenas tardes, estimado Giusseppe,

Muchas gracias por su respuesta.

Le comparto el link a la página principal del proyecto en el que estoy trabajando, en donde realizo el agradecimiento a usted (en la sección Acknowledgment), con link a su website.
https://ansegura7.github.io/DSL_Analysis/

También le comparto el resultado del análisis descriptivo en el que estoy trabajando. Agradecería sus comentarios al respecto.
https://ansegura7.github.io/DSL_Analysis/pages/dsl_text_analysis.html
Próximamente, estaré compartiendo los resultados por Twitter. Por lo tanto, agradecería si me indica el nombre de usuario de su cuenta Twitter, para poder mencionarlo.

Una vez más, muchas gracias por compartir y recopilar el dataset del DLE.

Saludos cordiales,
Andrés Segura Tinoco

Me resulta simpático que llamen «dataset» al conjunto o listado de las palabras que recoge la RAE en su DLE. Los enlaces del proyecto de Andrés son fantásticos y es un trabajo divertido que seguro que además alguien considera útil.

En su proyecto mezclaba dos de mis grandes pasiones: la programación y el lenguaje, cosa que suelo hacer con frecuencia y que, próximamente, haré aún más. Así que estuve cotilleando con suma atención hasta que creí que podía hacerle una sugerencia útil, además de agradecerle su agradecimiento (entrando en un curioso bucle)

Me alegra saber que te sirve el material recopilado.

He estado ojeando tu proyecto y tiene una pinta estupenda. Me encantan los análisis y tu codificación es muy limpia y bien comentada.

Como única sugerencia (no muy difícil de hacer) es la de escribir todas las frases del análisis en un array (o un archivo externo) que puede modificarse sencillamente para traducciones a otros idiomas. Me explico, por ejemplo, en la parte del código:

"source": [
  "# Show results\n",
  "n_words = len(word_dict)\n",
  "print('Total of different words: %d' % n_words)"
]

podrías sustituir el print por algo así como:

"print('%s: %d' % msg_total_words[i], n_words)"

y tener un array de cadenas msg_total_words[LANGUAGES] o algo similar… (disculpa mi escaso conocimiento de python)

Es sólo una insignificante sugerencia que, seguramente, se puede hacer mejor que como te sugiero. (Leyendo los textos/mensajes de un archivo idiomático, por ejemplo)

Quizá me ha llamado la atención especialmente por el hecho de que no esté en español el resultado, lo que comprendo desde el punto de vista de la divulgación, pero también me resulta paradójico siendo que se habla sobre el español… 😉

Muchísimas gracias por la atribución y espero que no te molesten mis sugerencias.

Un cordial saludo,
Giusseppe

PS: No uso Twitter. Tengo cuenta de Facebook e Instagram, just in case…
https://www.facebook.com/giusseppe.dominguez (perfil personal)
https://www.facebook.com/giusseppedelaaalaz (página «oficial»)
https://www.instagram.com/giusseppe.dominguez

Y en último agradecimiento, me escribió unos días después con los resultados que estaba obteniendo para hacerme partícipe de su publicación. (Lo que es de agradecer).

Estimado Giusseppe,

Muchas gracias por tu sugerencia. Me parece súper válida y útil para mayor y mejor divulgación del material publicado. La tendré en cuenta para este y futuros proyectos.

Aprovecho el correo y te comento 3 cosas brevemente:
1. Cree un hilo en Twitter publicando algunos de los resultados obtenidos en mi análisis y al final hay un tweet agradeciendo y reconociendo tu aporte con link directo a tu sitio web. Te comparto el enlace al hilo (son solo 8 tweets) por si los quieres revisar: https://twitter.com/seguraandres7/status/1298025632090259458?s=21

2. He hecho algunas correcciones sobre las palabras recopiladas. Encontré como 2 o 3 palabras en donde se acentuaban consonantes en vez de vocales y otros pequeños errores, en donde se invertían letras, sin embargo han sido menos de 10 correcciones hasta el momento. Una vez termine el proyecto, te envío de vuelta el diccionario de palabras, para que puedas actualizar el tuyo, de así considerarlo.

3. Para futuro networking o trabajos, te comparto mi sitio web y mi perfil de Twitter donde constantemente estoy publicando resultados de mis trabajos de investigación personales o académicos. Curiosamente, yo no tengo Facebook. Website: https://ansegura7.github.io/ y usuario de twitter: https://twitter.com/SeguraAndres7

Una vez mas, muchas gracias por recopilar y compartir este dataset tan valioso.

Saludos cordiales,
Andres Segura Tinoco
Telf: +57 3555590546

Actualicé mi diccionario con su revisión incorporada, para poder utilizarlo en nuevos proyectos, pero sé, soy consciente, que seguro que habrá más errores. Quizá por ello en el proyecto «Cocinillas» en el que estoy metido ahora mismo he querido incorporar un «testeador» o comprobador, para saber si la palabra que busco en el diccionario existe o no y, en caso contrario, hacer un listado con todas las palabras erróneas que tengo y poder mejorar mi diccionario en texto plano (aunque espero que la próxima vez que lo actualice pueda incorporar, incluso, todas las definiciones).

Skype en Linux

Como soy un apasionado de la terminal (modo comando en Linux, donde todo es más rápido que en ventanitas muchas veces innecesarias), he encontrado utilísimo un manual en inglés para instalar Skype (la última versión disponible para plataformas de 64bits) sobre distribuciones basadas en debian (.deb)

Skype está disponible para linux en los repositorios oficiales de Microsoft. Lo que no deja de ser sorprendente, pues hace tiempo su batalla era tan enloquecida que pareciera que los linuxeros éramos pájaros a batir, siendo una comunidad ínfima y poco dañina.

Pongo los pasos en cajas de código, para poder copiarlos si alguna vez vuelvo a necesitarlos. Asumo que se conoce algo de la operativa en terminal de linux. En caso contrario, no perder el tiempo con esto.

Para descargar (en la carpeta que sea, aunque yo recomiendo ~/Descargas o /tmp) la última versión de Skype mediante un paquete .deb usando el comando wget:

wget https://go.skype.com/skypeforlinux-64.deb

A continuación, instalar el paquete así descargado con:

sudo dpkg -i skypeforlinux-64.deb

(Otra opción es con apt: sudo apt install ./skypeforlinux-64.deb)

Durante el proceso de instalación, se añadirá el repositorio oficial de Skype al sistema, con lo que las actualizaciones son tan sencillas como ejecutar los comandos habituales para actualizar cualquier pieza del mismo:

sudo apt update
sudo apt upgrade

Y eso es todo. Tendremos nuestro skype para linux completamente operativo. Sólo queda iniciar sesión y disfrutar de una conexión más o menos satisfactoria, dependiendo de otros factores, como las tarjetas de sonido que se manejen, auriculares o no, vídeo-cámaras, etc. Recomendable conocer y tener instalado PulseAudio para manejar la configuración del sonido.

Búsqueda de palabras en la RAE en línea de comandos

He fabricado un script (un lote de comandos) de bash shell en Linux para descargar y juguetear con búsquedas en la RAE, ya que resulta complicado pedir que tengan la deferencia de hacerla disponible para el público, como si la RAE fuese un organismo público pagado con dinero público.

Es el paso intermedio entre buscar una palabra y descargarme el diccionario completo palabra a palabra. Ahora toca hacer un pequeño programita que lo invoque para cada una de las palabras que tecleé para el proyecto de Isidoro Valcárcel Medina hace unos años y traiga sus definiciones.

Lo he llamado buscaenrae.sh.

Esta versión está modificada sobre la que publiqué hace unos días para subsanar errores relacionados con las palabras que contienen varias entradas/acepciones (no es lo mismo acepciones que entradas y soy consciente de ello, pero no es importante), así como para retirar las conjugaciones en los verbos.

#!/bin/bash

### FUNCIONES ÚTILES PARA EL PROGRAMA
# uso() Instrucciones del programa y salida en caso de error.
uso () {
  echo "Uso: $0 salida palabra"
  echo -e "\tsalida es un valor númerico que identifica:"
	echo -e "\t[0] para generar un archivo HTML con la respuesta"
	echo -e "\t[1] para generar un archivo TXT  con la respuesta"
	echo -e "\t[2] para generar una línea  TXT  con la respuesta"
  exit
}
f_verbos="00000_VERBOS.txt"
f_errores="00000_ERRORES.txt"

# CONTROL DE ENTRADA DE VARIABLES y ASIGNACIÓN
if [ $# -lt 2 ]
then
  # Reportar uso inapropiado
  uso
else
  salida=$1
  if [ $# -eq 2 ]; then
    palabra="$2"
  elif [ $# -eq 3 ]; then 
    palabra="$2 $3"
  elif [ $# -eq 4 ]; then 
    palabra="$2 $3 $4"
  elif [ $# -eq 5 ]; then 
    palabra="$2 $3 $4 $5"
  fi
  # echo "Palabra es #$palabra#"
fi

# CONSULTA DEL SERVIDOR de la RAE simulando ser uno de los diversos navegadores posibles
navegador=(
  "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1"
  "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:77.0) Gecko/20100101 Firefox/77.0"
  "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:77.0) Gecko/20190101 Firefox/77.0"
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"
)
rnd=`echo $(($RANDOM%${#navegador[@]}))` # Elegimos un navegador al azar
# Hacemos la petición a la web de la RAE
curl -s --user-agent "${navegador[$rnd]}" https://dle.rae.es/"$palabra" > ./"$palabra.html"

# PROCESAMOS EL ARCHIVO OBTENIDO (Cortamos, retiramos lo innecesario, etc)
# Si se trata de un verbo, quitar las conjugaciones
id_conjugacion="
" esunverbo=`grep -c "$id_conjugacion" ./"$palabra.html"` if [ $esunverbo -gt 0 ] then echo "$palabra es un verbo" >> $f_verbos # ELIMINAMOS la(s) CONJUGACIÓN(ES) sed -i "/${id_conjugacion}/d" ./"$palabra.html" fi # Si tiene más de una acepción (Calcular cuántas después de saber si es un verbo) id_acepcion="
" num_acepciones=`grep -c "$id_acepcion" ./"$palabra.html"` # Si no tiene acepciones, la palabra no existe. No continuamos. if [ $num_acepciones -eq 0 ] then echo "$palabra no se ha encontrado en la RAE" >> $f_errores rm "./$palabra.html" exit fi # PARTIR en $num_acepciones EL FICHERO $palabra.html" # acepciones y acepciones_fin son 2 arrays de líneas PRECISO CONVERTIRLOS a cortes[] acepciones=`grep -n "$id_acepcion" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'` c=0 for i in $acepciones do let cortes[$c]=$(($i)) let c=$(($c+1)) done acepciones_fin=`grep -n "$id_acepcion_fin" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'` c=0 for i in $acepciones_fin do let cortes_fin[$c]=$(($i)) let c=$(($c+1)) done # GENERA FICHEROS palabra.X.html por cada ACEPCIÓN for (( i=0; i<$num_acepciones; i++ )) do # echo "El comienzo del corte está en ${cortes[$((i))]}" # echo "El fin del corte está en ${cortes_fin[$((i))]}" sed "${cortes[$((i))]},${cortes_fin[$((i))]} !d" "./$palabra.html" > "./$palabra.$i.html" # Distintas salidas del programa, en función de la variable "salida" if [ $salida -gt 0 ] # Salida a modo TXT then w3m "./$palabra.$i.html" > "./$palabra.$i.txt" if [ $salida -gt 1 ] # En una sóla línea then sed ':a;N;$!ba;s/\n/ /g' "./$palabra.$i.txt"|sed 's/ / /g' > "./$palabra.$i.1linea" fi fi done # BORRAR indica si dejar o no los archivos que no se deseen como salida BORRAR=1 if [[ $BORRAR -eq 1 ]] && [[ $salida -gt 0 ]] then rm "./$palabra."*html if [ $salida -eq 2 ] then rm "./$palabra."*txt fi fi # SALIDA FORZADA exit

Las primeras pruebas las he realizado con la palabra palabra, como debe ser.

buscaenrae.sh 2 palabra

Potencias

Adoro las potencias del 3. Seguro que ya lo sabes si has leído algo de mi trabajo… sin ir más lejos el que está dedicado completamente a juegos con ello, como es el proyecto !ç~ñ¿.#.

Pero estaba jugueteando con darle una respuesta automática a un amigo sobre cuáles eran las potencias de 3 y no tenía ningún programita que las calculase. ¡¿Habrase visto?!

Así que tenía que hacerlo. Decidí hacerlo a partir de una modificación del 17 amores, que le regalé a Carmen en nuestro decimoséptimo aniversario. Aunque me precipité y lo escribí mal un par de veces (siendo algo trivial) por exceso de confianza. Aquí está la versión definitiva (muy muy mejorable), que me dan ganas de escribir también en Python o en BASIC.

#!/bin/bash
# Escribe todas las potencias de un número dado (3, por ejemplo)
# hasta una cantidad dada (17, por ejemplo)

razon=3;
producto=3;
cantidad=17;

for ((i=1; i<=$cantidad; i++)); do
  producto=$(($producto*$razon));
  echo -e $(($producto/$razon)) " x " $razon " = " $producto
done

Por supuesto, el resultado de esta ejecución es sencillo y casi diría tonto:

3 x 3 = 9
9 x 3 = 27
27 x 3 = 81
81 x 3 = 243
243 x 3 = 729
729 x 3 = 2187
2187 x 3 = 6561
6561 x 3 = 19683
19683 x 3 = 59049
59049 x 3 = 177147
177147 x 3 = 531441
531441 x 3 = 1594323
1594323 x 3 = 4782969
4782969 x 3 = 14348907
14348907 x 3 = 43046721
43046721 x 3 = 129140163
129140163 x 3 = 387420489
Esto no es una broma