01. Bash: introducción

Publicado por

Bash es un lenguaje de programación ideal para escribir scripts simples que permitan automatizar las tareas que desempeña un administrador de sistemas que, de otro modo, tendría que estar escribiendo directamente en la línea de comandos, ya que su característica principal es interpretar órdenes. Actualmente es el estándar de todas las distribuciones GNU/Linux, así que la mayoría de los scripts escritos para este tipo de sistemas operativos están hechos en Bash. Sin embargo, si lo que se quiere es escribir scripts más complejos y extensos Bash no es la solución, en esos casos será necesario utilizar Python o Perl.

En la temporada 1 de esta serie se dio un breve repaso sobre la sintaxis y comandos del lenguaje Bash utilizándolo desde la shell, pero ¿qué es la shell? Es la interfaz que permite enviar comandos al sistema operativo ya sea de forma individual o agrupados en un archivo (llamado script) con la intención de que todas las instrucciones sean ejecutadas automáticamente por el sistema operativo. Y ¿qué es un script? Es una serie de comandos que se le proporcionan a un programa para que los interprete y los ejecute.

Sintaxis de un script

Es momento de aprender un poco de la sintaxis propia del lenguaje.

Bash no permite escribir comentarios en el encabezado de los archivos, ya que se debe incluir estrictamente como primera línea el shebang, el cual indica qué interpretador será utilizado para ejecutar el script.

#!/bin/bash

Para escribir comentarios se utiliza el símbolo de numeral [#], este debe ir al inicio del texto que se desea comentar, puede ser al principio de la línea o al final de alguna instrucción, se puede emplear en cualquier parte del script, a excepción de la primera línea que le pertenece al shebang.

# Este es mi primer comentario en un script de Bash.

Recordando los comandos que se abordaron en la primera temporada de esta serie: echo imprime en la terminal el mensaje dado o una variable, y las variables basta con que se definan al momento de utilizarlas y la forma de acceder a su valor es por medio del símbolo de pesos [$].

echo "¡Hola mundo!"
saludo="Hola mundo"
echo $saludo

Para que el usuario identifique fácilmente cuando un archivo contiene un script de Bash, se acostumbra guardarlo con la extensión .sh.

Ejemplo:

$ vim miprimerscript.sh

Primer script en Bash.

Antes de ejecutar cualquier script es necesario darle permisos de ejecución, los cuales se pueden dar con el siguiente comando:

chmod +x <nombre del archivo>

El comandochmod permite modificar los permisos de un archivo o un directorio.

Nota: cuando no conozcas la sintaxis y opciones propias de un comando, puedes escribir en tu terminal <comando> –help y este te mostrará el manual de ayuda de dicho comando.

La opción xse refiere a los permisos de ejecución del archivo y el signo de más+ indica que se están otorgando, si en lugar se pone el signo de menos- indica que se le están quitando.

chmod +x miprimerscript.sh

Para ejecutar el script si estás colocado en el directorio donde está guardado, puedes correrlo de la siguiente manera:

$ ./miprimerscript.sh

También se puede ejecutar directamente con el intérprete.

$ bash miprimerscript.sh

o bien

$ source miprimerscript.sh

$ . miprimerscript.sh

Acertijo: ¿Sabes cuál es la diferencia entre las 4 formas de ejecución?

Formas de ejecución de un script en Bash.
Respuesta:

Cuando se ejecuta el script de la forma ./<archivo>el sistema llama al intérprete necesario que lo reconoce a partir del shebang y entonces ejecuta el script pasándolo como argumento del intérprete, esto lo hace de forma automática sin necesidad de que el usuario indique que intérprete utilizar.

A diferencia de la opción anterior, cuando se ejecuta un script de la manera <intérprete> <archivo> lo que está ocurriendo es que se ejecuta el intérprete indicado con el archivo que se desea ejecutar como argumento, en este caso el usuario sí indica el intérprete con que se debe ejecutar el archivo. Al ejecutarlo de esta forma se crea una nueva instancia de Bash en una nueva shell. De este modo, no es necesario otorgar permisos de ejecución sobre el script.

 

Ejecución de un script en Bash con el intérprete.

En cambio cuando se ejecuta de la forma source <archivo>el script se ejecuta en la shell actual y no crea una instancia nueva de la misma, lo contrario a la opción anterior. Esta forma de ejecución tiene varias ventajas sobre la anterior, por ejemplo:

Si se desea que el script comparta el mismo ámbito de variables que la shell actual, este debe ejecutarse mediante source. De este modo cualquier variable inicializada en la shell estará definida con ese mismo valor dentro del script, y cualquier variable definida dentro del script seguirá existiendo en la shell incluso cuando el script ha terminado de ejecutarse.

Ejecución de un script en Bash con source.

Esta opción . <archivo> es una variante de source se puede usar una en lugar de la otra, tienen exactamente la misma función.

En esta nota se aprendió que un script en Bash puede estar conformado solamente por un par de líneas de comandos. También se repasó la sintaxis básica que debe contener un script para poder ser ejecutado. Finalmente se descubrieron las distintas formas de ejecutar un script y las diferencias que conlleva cada una de ellas. En la siguiente nota 02. Bash: scripts desde línea de comandos se dará un salto más profundo a lo que implica un script en Bash ¡Hasta la próxima!

4 comments

  1. Hola buenas,

    ¿Con que programa haces esos esquemas para la ilustración?

    Estoy escribiendo una guía de sistemas y me gustaría hacer algo parecido.

    Gracias.

  2. Hola!

    Los hice en inkscape, pero porque solo eran esos dos, si quieres hacer muchos no creo que sea la mejor opción, porque es un programa de dibujo vectorial no de diagramas.

    Saludos!

  3. Hola estimados Codingornot.com. Los felicito por su pagina, su contenido es muy didáctico y claro, agradezco su entrega y dedicación a estos tutoriales.
    Saludos!!!
    Francisco Farias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *