Skip to main content

P.033: Introducción a BashScript [Miércoles]

Saludos, he aquí Jaroslav con un nuevo Podcast.

Shell:
  • Programa intermediario entre ordenador y usuario, que funciona en base a comandos
  • Permite acceder a los servicios del Sistema Operativo
  • El tipo de Shell varía de un sistema a otro
  • GNU/Linux generalmente utiliza Bash
BashScript:
  • Secuencia de ordenes en programadas en bash 
  • Permite automatizar tareas
  • Permite crear nuestros propios programas
  • Permite  crear los modos de ejecución de nuestros programas (Lo explicaré mejor más adelante)

     Para programar en Bashscript (O sea, un Script de Bash), primero necesita conocer los comandos básicos, como "echo", que imprime todo lo que escribamos en la pantalla. Empecemos por el típico "Hola Mundo"... Sí, puede ser tedioso hacerlo siempre, pero ya es una tradición empezar desde aquí. Normalmente, con la práctica escribes "Hola Mundo" que no digan Hola Mundo. Pero ese no será el caso de este tutorial.

Pasos para empezar a programar:

  1. Abre tu terminal de GNU/Linux
  2. Ejecuta la orden mkdir ~/Mis\ Archivos\ SH
  3. Entra en la carpeta cd ~/Mis\ Archivos\ SH
  4. Crea tu primer Bashscript con vim hola_mundo.sh
  5. En caso de toner vim instalado, instalalo
  6. Asegúrate de estar en modo texto (Si no lo estas, oprime la tecla "I latina")
  7. Escribe
#!/bin/bash
# Esto es un Comentario (Se ignora por el ordenador)
# Los Comentarios sirven para ordenar contenido
# Los comentarios, muchas veces, sirven para que los programadores pongan sus datos
# Lo siguiente imprime Hola mundo
echo "Hola Mundo"

     Si ya escribiste lo anterior, sal del modo texto con escape, y guarda el documento con el comando :wq (Guardar y Salir). Ahora ejecuta en el terminal el comando sudo chmod +x hola_mundo.sh si estás como usuario normal, y chmod +x hola_mundo.sh si estás como usuario Root.

     Si eres usuario normal debe salirte este signo $, si eres usuario Root (O Superusuario) deberías er este otro #. Pero normalmente (Salvo pocas excepciones), la mayoría de Distros (O sea, distribuciones de sistemas GNU/Linux) te abrirán la terminal en modo de usuario normal.

     Me disculpo que mi Shell se vea así. Ya que cambie la Shell por defecto por "Oh My Zsh". Pero ustedes aún no necesitan que les enseñe eso. Tal vez más adelante.

     Ahora sólo ejecutas tu Script con ./[ScriptSH], o sea ./hola_mundo.sh. Si acaso te sale un error, puede que no estés dentro de la carpeta. Pon cd ~/Mis\ Archivos\ SH, e inténtalo de nuevo. Si tienes otro error, es que no diste los privilegios de ejecución, pon sudo chmod +x hola_mundo.sh, y si vez un error es que estás en modo Root y necesitas omitir el sudo, entonces ejecuta chmod +x hola_mundo.sh. Si sale otro error (Que ya sería raro), es posible que escribieras mal el nombre del archivo. Pon el comando ls y verás todos los nombres de los archivos dentro de la carpeta donde te encuentras.

     Recuerda también que Linux distingue mayúsculas de minúsculas. Así que asegúrate de escribir el nombre correctamente. Puedes usar la tecla Tab para auto-completar.

     Pasemos ahora a las variables, y posteriormente a las funciones. Una variable, como su nombre lo indica, es algo que varía. Son llamadas al Sistema de donde se extraen los datos ingresados por el programa o usuario, y que generalmente sobre estos resultados se puede ejecutar una orden específica,

     Una función, es un conjunto de ordenes que serán ejecutadas al ingresar una orden específica. Esto se entenderá mejor con ejemplos, vamos a modificar nuestro programa. Asegurate de estar en la carpeta correcta, o ingresa a ella con cd ~/Mis\ Archivos\ SH, ahora ejecutas vim hola_mundo.sh. No necesito decir que entres al modo texto.

#!/bin/bash
# La orden read convertirá lo que ingresemos en una variable
# El símbolo $ sirve para indicar una llamada a una variable
echo "Ingrese su nombre"
read H
echo "Hola Mundo, mi nombre es $H"
echo "Mi hostname es $USER"

     Ejecuta, y mira el resultado. Ya tienes un programa que dice "Hola Mundo", y escribe cualquier nombre. Puede que ahora te preguntes "[...] ¿Para qué sirve? [...]". No sirve de nada, sólo para aprender a programar. Así que pasemos a hacer algo útil. empieza descargando imágenes a tu ordenador

     Ingresa al terminal y has una copia de tu archivo "~/.bashrc", cp ~/.bashrc ~/bashrc-copia, el comando cp es una complexión de la palabra "Copy" (Copiar). Copiará el archivo que indiquemos primero, y lo guardará con el nombre que le indiquemos segundo. Ahora podemos modificar ~/.bashrc, sabiendo que tenemos una copia de respaldo.

     Ahora ejecutamos vim ~/.bashrc en el terminal, y añadiremos esta función en el documento:

img-ordenar{
mkdir PNG JPG JPEG GIF WEBP
mv *.[pP][nN][gG] PNG
mv *.[jJ][Pp][gG] JPG
mv *.[jJ][Pp][eE][gG] JPEG
mv *.[gG][iI][fF]
mv *.[wW][eE][bB][pP]
}

     Lo que está entre corchetes es la función que hemos programado. Ahora guardemos los cambios yendo al modo normal de vim, y ejecutando el comando :wq, cerremos el terminal con exit,y abramos otro terminal. Vamos a la carpeta donde están nuestras imágenes cd [Ruta], ejemplo cd ~/Downloads, y ejecutamos nuestra función con img-ordenar.

     Como podremos ver, las imágenes se guardarán automáticamente en las carpetas que les hemos indicado. Este nuevo comando ya estará disponible, de ahora en más, siempre que lo necesitemos.

     Una buena idea es crear nuestra función para hacer actualizaciones automáticas. Pero los comandos de actualización varían de una distro a la otra. Por lo que enseñaré funciones para añadir a nuestro ~/.bashrc para Arch Linux y derivados, Debian y derivados, y Ubuntu y derivados.

# Esta función es sólo para Arch y derivados
pcmn{
yes | sudo pacman -Syuu
}

     En el ejemplo anterior, el comando yes le da "Sí" a todo lo que pregunte el equipo. Si no estamos seguros, podemos omitirlo para evitar incompatibilidades de software (Especialmente si tienen código compilado. Si no sabés que es compilar, entonces seguramente NO lo tienes)

     Otra forma de hacer lo mismo es con el comando alias, este lo explicaré más adelante. Por ahora prefiero explicarles el tema de las funciones. Las Tuberías o Pipes, se explicarán en el próximo programa del Miércoles de Informática.

# Esta función es sólo para Debian y derivados (También funcionaría con Ubuntu)
sapt{
yes | sudo apt update ; yes | sudo apt upgrade
}

     Ahora pasemos a la función de Ubuntu y derivados, que como verán es exactamente la misma que la anterior, pero con una pequeña diferencia.

# Esta función es sólo para Ubuntu y derivados (NO funciona con Debian)
sapt{
yes | sudo apt-get update ; yes | sudo apt-get upgrade
}

     Aquí es donde se preguntarán la diferencia apt entre y apt-get. Pues la única respuesta, es que apt-get es una versión modificada de apt, lanzada por Cannonical para su distro Ubuntu, y todas sus derivadas.

     Por defecto apt-get NO se encuentra disponible en Debian, y aunque  apt también funcione para Ubuntu y derivadas, el equipo de Cannonical en su momento recomendó usar apt-get para actualizar su distro (Ubuntu). Supongo que ellos sabrán el porqué de que lo digan. Después de todo son el equipo detrás de la creación y/o mantenimiento de Ubuntu. 

Comments

Popular posts from this blog

La dieta de los Caballeros Medievales

     Este blog tiene por objetivo difundir contenido educativo, y sobre todo científico. Por ello, tras hallar este artículo , lo consideré suficientemente interesante para compartir aquí.      Como mi blog comparte datos, decidí acudir a más artículos relacionados sobre el tema, con fines de más información. Fuentes al final. Regimen Sanitatis Salernitanum: Escrito creado por médicos medievales Régimen alimentario recelosamente reservado para la realeza inglesa Fue de las guías alimenticias mas populares de Europa Tuvo una vigencia de aprox. 6 Siglos El Regimen Sanitatis Salernitanum, incluyó: Remedios caseros contra enfermedades Recetas para mejorar la fertilidad o detener sangrados nasales Guía de consultas para cada dolencia específica Tratamientos como la "Sangría" que hoy día son descartados por resultar inútiles      Aunque nadie en su sano juicio quisiera hacerse una cirugía al estilo del Medioevo, por ser métodos absurdos y cien...

P.056: Rubén Dario - Los motivos del lobo [Lunes]

Saludos, he aquí Jaroslav con un nuevo Podcast.      Lectura de la obra "Los motivos del lobo" de "Rubén Darío". Sé que falla un poco de más en la parte de interpretación. Pero de momento no cuento con el entorno adecuado para "Interpretar" sin que los vecinos me oigan y tomen por loco. Pero ya tengo un micro de mejor calidad, así que a futuro, un cuarto insonorizado no estaría mal.

P.040: Mi kaj la bildliteraturo [Jueves]

Saludos, he aquí Jaroslav con un nuevo Podcast.       EO : Antaû ol komenci, ĉi tiu estas franca komikso de Davido Revûa, nomata "Pipro Kaj Karoĉjo".Sed tiu ĉi komikso estas libera kaj malfermkoda retkomikso, kiu vi povas legi tie ĉi . La kreinto de "Pipro Kaj Karoĉjo" uzas GNU/Linukso.       ES : Antes de comenzar, este es un cómic francés (NdT: Bande Desineé) de David Revoy, llamado "Pepper & Carrot". Pero este comic es un webcomic libre y de código abierto, el cual puedes leer aquí . El creador de "Pepper & Carrot" usa GNU/Linux. Enunciado en Esperanto      Saluton karajn aûskultantojn. Bonan fortunon, mi deziras al vi ĉiuj. Hodiaû mi pensas ekparoli pri bildliteraturo. La plej famaj je la mondo estas Komikso aû Mangao.      Kiam mi estis knabeto, al mi ŝatis bildliteraturo, kaj eĉ nun mi vidas kaj legis bildliteraturon. Kiam mi estis infano, mi legis argentinajn historietojn de García Ferré , Dante Quinterno , ...