Scripting básico

Bash es el interprete de comandos por excelencia en Unix, y por lo tanto lo es también de Linux.

Aunque hay otros intérpretes de comandos, o shells muy interesantes como csh o ksh, el éxito de bash es debido a la versatilidad en línea de comandos y a su potencia componiendo scripts.

Un script en bash, se compone de:

Una cabecera que le dirá al sistema que este script lo interpretará bash.

#!/bin/bash

Debería incluir una pequeña descripción de su finalidad.

#Comentarios

Variables de entorno para la ejecución del script

VARIABLE1=VALOR1

Una lista de comandos ejecutados recursivamente.

#!/bin/bash
echo “Este script muestra la ejecución de varios comandos”
ls
date
echo “ya se ha acabado” 

Como es obvio, un script de bash no solo sirve para hacer un listado de un directorio y enseñar la hora.

Como todo lenguaje de programación, bash tiene sus propias funciones y como toda shell, también tiene sus propios comandos ‘embebidos’.

La forma de ejecución de varios comandos es con la ayuda de operadores de lista:

comando1 ; comando2 && comando3

En este ejemplo,  se ejecuta el comando1 y después se ejecuta el comando2. Si el comando2 no produce ‘0’ , se ejecutará el comando3.

Por ejemplo, si ejecutásemos:

comando1 ; comando2 || comando3

comando3 se ejecutaría en caso de que comando2 diera otra salida distinta a error.

Si queremos ejecutar varios comandos a la vez, en diferentes planos, deberemos poner:

comando1 & comando2 & comando3

Para acceder a cualquiera de estos comandos, se utiliza el comando

fg numero_de_trabajo

Si queremos unir la salida de varios programas, podemos utilizar las tuberías o ‘pipes’ (este caracter se consigue con alt+1)

cat lista_de_nombres | sort

Con lo cual veríamos en pantalla la lista de los nombres contenida en el fichero, ordenada alfabéticamente.

El numero de pipes puede ser infinito:

cat lista_de_nombres | sort | grep Pepe | more

 

Con este comando veríamos la lista de lista de antes, ordenada, excluyendo a los que no se llamen “Pepe” y paginada con el comando more.

Para series de comandos más largos, necesitaremos el lenguaje de script de bash.

Bash tiene saltos condicionales, incondicionales, bucles, asignación de variables, variables de entorno y funciones, como cualquier lenguaje de programación.

Vamos a ver un ejemplo de script en bash:

 

[table id=2 /]


Bien, ya hemos comprendido el uso de la pareja case-esac, muy utilizado en los scripts de inicio y en todos aquellos que no que ramos abusar de los saltos condicionales if.

Los saltos condicionales if se pueden utilizar para asegurarnos durante el lanzamiento de un script, que existe un fichero o no:

COMANDO=$1 
if  [ -x $1 ] ; then 
echo –n “Se puede ejecutar” 
else 
echo .n “no se puede ejecutar” 
fi 

if, aparte de –x tiene una nutrida lista de descriptores de fichero. Para más información de esta lista, se puede recurrir al manual de bash (escribe “man bash” en el terminal).

Las variables de entorno del propio bash, se fijan en ~/.bash_profile, ~/.bashrc y en /etc/profile.d

siendo lo mas recomendado minimizar el uso de variables generales en el sistema.

El uso de sed, cut, y otras pequeñas utilidades, pueden ahorrarnos muchas horas de edición si tenemos que hacer substituciones de texto, ordenar, etc.

Las posibilidades de bash, necesitan de la creación de una necesidad especifica, que siempre podremos suplirla con la ayuda de su extenso manual.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s