Iniciando con Bash Scripting

4 Abr

Primera publicación del curso de Bash Scripting.

En esta primera publicación pretendemos dar algunas definiciones, mostrar un primer ejemplo en el que se habla sobre las convenciones que se seguirán a lo largo del curso, y referenciar la guía que se sigue para brindar toda esta información.

Sobre el Curso

  • Se pretende realizar una publicación semanal, que saldría cada domingo (o en la madrugada del lunes en su defecto).
  • Los temas se darán en forma secuencial.
  • Cada publicación está sujeta a cambios, sobretodo si posee errores.
  • El contenido del curso está fundamentado en la referencia principal que se entrega al final, pero puede estar sujeto a cambios a discreción de los escritores.
  • En cada publicación se pretende dar anotaciones sobre algún comando. No siempre se contará con dichas anotaciones.
  • Se considera que quien toma el curso ya sabe acceder a la consola.

Definiciones

Script: Un script es un conjunto de instrucciones localizados en un archivo. Las instrucciones en el archivo son por lo general interpretadas, esto quiere decir que no se genera un archivo binario ejecutable, sino que se ejecuta el archivo con las instrucciones sin previa compilación. No todo programa interpretado es considerado un script.

Bash: Es un intérprete de órdenes basado en la Shell de Unix que consiste en la interfaz de usuario tradicional de los Sistemas Operativos basados en Unix y que permite al usuario comunicarse con el Núcleo a través de las instrucciones que aporta el intérprete. Bash es un acrónimo de Bourne-Again Shell. Invito a conocer un poco mejor sobre estas dos definiciones que no son más que resúmenes:

Tomado de:

http://es.wikipedia.org/wiki/Script_(informática)
http://es.wikipedia.org/wiki/Shell_de_Unix
http://es.wikipedia.org/wiki/Bash

Comando: Es cada una de las instrucciones disponibles en la Shell, a su vez se puede ver como cada una de las instrucciones en el script.

Parámetro: Son las opciones que puede tener un comando. Permiten habilitar o desabilitar funcionalidades en las utilidades.

Argumento: Un argumento está asociado a un Parámetro o a un Comando directamente: en el caso de los Parámetros, se trata de opciones que requieren de un valor adicional, por ejemplo, un archivo, o un valor. Un argumento para un comando, puede ser un archivo o un valor también, solo que no está relacionado a ninguna opción o parámetro.

Ventajas

Siempre es posible encontrar razones por las cuales hacer algo, en el caso de la programación en Bash Scripting esto no es difícil:

  • Sólo por diversión: No es necesario necesitar algo para usarlo.
  • Automatizar tareas en sistemas de escritorio y servidores: A veces si nos aburrimos de tener que hacer la misma tarea una y otra vez, en el caso de servidores es común encontrar tareas de mantenimiento que no son fáciles de llevar a cabo pues requieren de un conjunto de instrucciones las cuales no son cómodas de escribir una por una cada vez. (Esta razón es demasiado fuerte, que no se diga más).

Primer Ejemplo y Convenciones

null   
#!/bin/bash
 
echo "Hello f*cking World."

En este primer bloque vemos el uso del resaltador de sintaxis WP-SynHighlight, su uso será común en este curso pues siempre va a mostrar el código de los ejemplos.

En este primer ejemplo vemos dos líneas relevantes (en realidad hay tres pero se dejan espacios para que luzca más ordenado):

  • La primera línea comienza con #!, esto se llama sha-bang se encuentra al inicio de los scripts y le dice al sistema que el archivo es un conjunto de comandos del intérprete indicado en la dirección que sigue al sha-bang, en nuestro caso siempre usaremos /bin/bash por obvias razones, esta es la dirección al programa que interpreta los comandos en el script, puede ser una shell, un lenguaje o una utilidad. #! es un número mágico de dos bytes, es una marca especial que designa un tipo de archivo, o en este caso un script ejecutable. El sha-bang puede ser omitido si el script sólo consiste de un conjunto de comandos genéricos, los cuales no usan directivas de shell internas (Por ejemplo, en este caso pudo ser omitido).
  • Se muestra el primer comando que aprenderemos, se usa para imprimir en la salida estándar lo que le pasemos como parámetro. Ver las anotaciones al final.

Ahora veamos cómo ejecutar los scripts:

El código del ejemplo anterior ha de guardarse en un archivo de texto, por ejemplo helloworld.bash

La extensión .bash en el nombre del archivo no es necesaria, ninguna extensión lo es en Linux, pero es una buena práctica de programación, asignar esta extensión a Scripts de Bash para ser reconocidos posteriormente.

El bloque anterior siempre mostrará Tips.

Ahora que se tiene el archivo, hay dos formas de ejecutarlo:

  • Haciendo un llamado directo al Shell para que ejecute el script:
null   
bash helloworld.bash
  • O asignando permisos de ejecución (el comando chmod podría verse más adelante) y ejecutando directamente:
null   
chmod +x helloworld.bash
./helloworld.bash

En cualquier caso, la salida sería:

Hello f*cking World.

El bloque anterior se mostrará para la salida de los scripts.

Si tenemos algún error en el script, por ejemplo, mal escrito el nombre de la shell: /bin/bach obtendriamos:

bash: ./helloworld.bash: /bin/bach: intérprete erróneo: No existe el fichero o el directorio

Finalmente, para mostrar cómo conseguir ayuda, mostraremos el siguiente bloque:

Siempre haga uso del comando man, para obtener información del sha-bang, use man magic

Anotaciones

Para no dejarnos a todos tan iniciados, hablemos sobre algunas opciones del comando echo:

Para obtener detalles del comando echo, escriba en su shell: man echo

El comando echo muestra una línea de texto, tal como lo dice el manual, recibe como argumento, una cadena de texto cualquiera, y como parámetros posee las opciones :

  • -n lo cual hace que no se imprima el caracter de nueva línea al final.
  • -e habilita la interpretación de los caracteres especiales que usan backslash (\) como escape, por ejemplo \n para nueva línea.
  • -E desabilita la interpretación de los caracteres especiales que usan backslash (\) como escape. (Se usa por defecto)

Otras opciones (ayuda y versión), se muestran en el manual así como una lista de los caracteres de escape que se reconocen cuando se usa la opción -e.

Guia

Se usará como guía para este curso, este excelente tutorial: http://tldp.org/LDP/abs/html/

Acerca del autor

Christian Gutierrez ha escrito 22 publicaciones en este blog.

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why. – Anonymous Developer

4 Comentarios a “Iniciando con Bash Scripting”