Programando desde la shell. Shell-Scripting I (introducción)

Conozco una petrolera llamada shell

Sí, sí, lo sabemos, pero en este caso hablaremos de otra “Shell” El shell o más comunmente la shell (en ingles shell significa concha) es también conocida como interprete de comandos, aunque en algunos manuales se refieran a ella como linea de comandos o consola. Los comandos que integran un interprete (hay varios tipos de interpretes como veremos más adelante) pueden usarse en modo de guión (scripts) que podemos escribir en ficheros de texto a los cuales les daremos la posibilidad de ser ejecutados (los marcaremos como ejecutables), para luego utilizarlos llamando al script desde el propio shell o desde un lanzador (lo que conocemos en windows por acceso directo). De este modo podemos ejecutar una lista de comandos, o combinaciones de comandos con otras herramientas. Este guión será leído e interpretado por la shell linea a linea. A estos guiones escritos para ser ejecutados por la shell se les denomina shell-scripts.

Sus parientes en el mundo windows, son los ficheros bash y desde hace unos años la programación en Windows PowerShell (una interfaz de consola (CLI) con posibilidad de escritura y conjunción de comandos por medio de guiones) Si bien shell no es en si mismo un lenguaje de programación, hablamos de shell programming o shell scriptingcuando nos referimos al proceso de creación de guiones para la shell. La potencia de esta combinación entre la shell y sus guiones casi no tiene limites en cuando al uso y manejo de nuestro sistema operativo, ya que puede ser así mismo combinada con las distintas herramientas instaladas en nuestro sistema logrando entornos altamente eficientes y con tareas en muchos casos desatendidas. Por ejemplo, podemos crear un script que en función de quien haya estado usando el sistema, nos envíe un informe de actividades al mail. También podemos desconectar a un usuario si programamos un script que detecte actividades sospechosas en su uso del sistema. Estos ejemplos pueden dar al lector la falsa idea de que el shell-scripting es una técnica más bien orientada a sistemas de servidor. Esto es cierto en tanto en cuanto, es en un sistema servidor donde podremos aprovechar shell-scripting para normalizar tareas que normalmente han de efectuarse de modo recursivo, es una herramienta muy valiosa para cualquier administrador de sistemas y sin la cual, difícilmente podría efectuar su trabajo de un modo efectivo, sin embargo y como podremos ver a lo largo de estos artículos puede facilitar mucho la vida al usuario home de un sistema Linux. De hecho, gran parte de los propios archivos del sistema operativo son de hecho scripts de la shell, como ejemplos podemos poner algunos como:

  • Cualquiera de los contenidos en la carpeta /etc/grub.d/ que gestionan el arranque del sistema.
  • /etc/init.d/samba que controla el arranque del servidor de ficheros samba.
  • /etc/init.d/tor que configura y arranca el servicio de anonimato Tor.

Los usuarios de Linux y Unix pueden elegir entre distintos shells ( bash, ash, csh, zsh, ksh, tcsh) y pueden configurar que interprete se cargará al arranque del sistema o cambiarlo a posteriori. En las primeras versiones de Linux se usó el Bourne Shell, que con el tiempo se ha convertido en un estándar, es más, todos los sistemas Linux tienen al menos un shell compatible con Bourne shell. Uno de los más distribuidos es el shell bash, y es este en el que basaremos este conjunto de artículos. Bash es un shell compatible con Bourne shell, pero con algunas características más.

Comenzando

Antes de comenzar a trastear con nuestro shell, deberemos saber cual es el que estamos usando, para ello abrimos una consola y escribimos: (Como norma formal de este manual, escribiremos en negrita cursiva los comandos que introducimos y en cursiva simple la salida proporcionada por la shell) echo $SHELL /bin/bash echo $BASH_VERSION 4.2.24(1)-releasePodemos extraer de estas lineas un par de cuestiones usadas por convención:

  1. Todas las variables se utilizan escribiéndolas en MAYUSCULAS
  2. Para conocer el valor de una variable, simplemente antepondremos a esta el simbolo $
  3. En el ejemplo anterior utilizamos también el comando echo esto escribe por pantalla cualquier cosa que escribamos tras el.

Bien, ya conocemos nuestra shell y su versión, pero hemos dicho que podemos cambiar de shell, ¿cuales tengo instaladas? cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /etc/shells es un archivo que contiene la lista de shells instaladas en el sistema… mostramos por pantalla este archivo con el comando cat Si estuviesemos usando otra shell distinta a bash, podemos cambiarla, simplemente usando el comando chsh (change shell) chsh -s /bin/bash El parámetro -s, le indica al sistema que cambie la shell sólo para el usuario que estamos usando. Una vez ejecutado el comando deberemos salir de nuestra sesion y volver al loguearnos para que el sistema tome la nueva configuración. Como tareas previas a la siguiente entrega os recomendaría que revisarais la lista de comandos más utilizados en linux. Una lectura del man del comando cat tampoco estaría mal. man cat Podéis pasar las paginas del man de cat pulsando la barra espaciadora o bien desplazaros mediante las flechas del teclado, esto os ayudará a enteder todo lo que viene después.

Próximo articulo, el manejo de comodines.

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