Apuntes mientras aprendo sobre software y computadoras.

programación

Cómo memorizar un texto con la ayuda de Bash

En este apunte rápido voy a revisar cómo memorizar un texto con la ayuda de Bash.

Digamos que tengo un texto que necesito memorizar. Puede ser una lista de números, la letra de una canción o el material de estudio para un examen hablado.

Mi idea es crear un programa en Bash que me permita ir repasando las lineas de texto una a una, presentando las mismas en la terminal de comando. El objetivo va a ser tener una opción con la que pueda repasar toda esa información, para memorizarla con un poco de práctica y repetición.

Puede no ser la mejor forma de aprender algo, pero va a ser una buena oportunidad para aprender algo de Bash.

El programa

Este es el código, por si te interesa revisarlo o empezar a utilizarlo. En la siguiente sección voy a revisar algunas de las partes, para entender cómo funcionan.

#!/bin/bash

# Programa para memorizar lineas repitiendo en serie de 8 segundos o al presionar un botón. 

echo -e "\e[1;31m"El texto a recordar"\e[0m"
echo -e "\e[1;31m'Por Gustavo'\e[0m"
echo ""

while true; do
  texto=(
    "\e[1;32mEsta frase tiene que ser recordada\e[0m"
    "\e[1;32mTambién puede ser guardada\e[0m"
    "\e[1;32mlo mejor es que no sea olvidada,\e[0m"
    "\e[1;32mpero no hay rima en la última oración.\e[0m"
  )
  for line in "${texto[@]}"
  do
    echo -e "$line"
    echo ""
    read -n 1 -s -r -t 8 -p "Presionar "e" para terminar el programa, o cualquier otra tecla para continuar..."
    echo ""
    if [ "$REPLY" == "e" ]
    then
      break 2
    fi
    echo ""
  done

  # loop para preguntar si el programa se termina o si vuelve a empezar. 
  while true; do
    echo ""
    read -p "¿reiniciar el programa? (y/n) " choice
    echo ""
    case "$choice" in
      y|Y ) break ;;
      n|N ) exit ;;
      * ) echo "Solamente se admite y/n por respuesta." ;;
    esac
  done
done

Cómo Funciona

El programa tiene lo que yo considero dos partes importantes.

En la primera parte, una lista guarda el texto que necesito memorizar. Aunque es bueno mencionar que yo no memoricé este texto, simplemente lo estoy utilizando a modo de ejemplo.

texto=(
    "\e[1;32mEsta frase tiene que ser recordada\e[0m"
    "\e[1;32mTambién puede ser guardada\e[0m"
    "\e[1;32mlo mejor es que no sea olvidada,\e[0m"
    "\e[1;32mpero no hay rima en la última oración.\e[0m"
  )

Luego un loop va avanzando por el contenido de la lista.

for line in "${texto[@]}"
  do
    echo -e "$line"
    echo ""
    read -n 1 -s -r -t 8 -p "Presionar "e" para terminar el programa, o cualquier otra tecla para continuar..."
    echo ""
    if [ "$REPLY" == "e" ]
    then
      break 2
    fi
    echo ""
  done

Cada vez que un renglón se muestra, el código espera 8 segundos o que presionemos cualquier tecla para mostrar la siguiente oración. Pero si presionamos “e” el programa se termina.

Luego, la segunda parte del programa es un nuevo loop.

while true; do
    echo ""
    read -p "¿reiniciar el programa? (y/n) " choice
    echo ""
    case "$choice" in
      y|Y ) break ;;
      n|N ) exit ;;
      * ) echo "Solamente se admite y/n por respuesta." ;;
    esac
  done
done

Este loop sigue funcionando mientras espera nuestra respuesta. Si presiono “y” el programa vuelve a empezar desde el principio, y si presiono “n” el programa se termina.

Conclusión

Con esto termino el apunte sobre cómo memorizar un texto con la ayuda de Bash.

Aunque existen muchas otras herramientas de repetición de información, nunca esta de más practicar para crear una nueva. Tal vez en otra ocasión voy a probar algo diferente, en otro lenguaje de programación, un software que permita mostrar tarjetas o flashcards. Esa es una forma de estudiar mucho más popular, porque permite asociar la información.

¿El apunte te sirvió de utilidad? ¿Encontraste algún error o tenés alguna idea para mejorarlo? Me gustaría conocer tus comentarios.

La seguimos en el próximo apunte.

Leave a Reply