3/28/2008

Un poco de shell script

Después de tanto tiempo sin escribir me estoy animando a retomar el blog, que no es que lo tuviese olvidado, sino que no tenía nada que contar, ya que, aunque he escrito algunas entradas más o menos personales lo tengo intención de que sea un blog sobre mis vivencias, sino sobre mis conocimientos. Bueno, y después de este rollo, volvamos al tema del post, el shell script.

¿Que?

Un script de shell es simplemente un conjunto de ordenes shell almacenadas en un archivo, de tal manera que puedas ejecutar este archivo como si de un programa normal se tratase.

¿Por que?

La programación en shell es en un principio bastante mas compleja que la normal, ¿que tiene frente a los lenguajes de programación tradicionales? Lo mejor para responder a esa pregunta es un ejemplo:

Pensemos que tenemos un fichero con varias columnas separadas por espacios, de las cuales solo queremos la segunda, tras obtener esa segunda columna queremos ordenarla alfabéticamente y eliminar los elementos duplicados. En C/C++/Java, no tengo ganas de intentar hacerlo, pero escribiendo un código legible, bien comentado (como se debería hacer siempre) este programa tan simple ocuparía unos cientos de líneas fácilmente. En PHP (los otros dos lenguajes interpretados por excelencia Perl y Phyton no los conozco) supongo que ocuparía entre 15 y 30 y por ultimo en shell script ocuparía dos líneas comentándolo al detalle:

#corta la segunda columna (cut) separada por espacios (-d" "), la ordena (sort) y elimina duplicados (-u)

cat fichero.txt | cut -d" " -f2 | sort -u

Y esto realmente no se si se puede llegar a llamar programa ya que no llegamos a usar ninguna variable, ni estructura de control, simplemente hemos encadenado la salida de cada comando con el siguiente.

¿Cuando?

Pues yo le veo dos utilidades principalmente:

  • Automatización de tareas: es decir, en la vida de todo informático hay tareas que son un coñazo, repetitivas y con unas dependencias entre un paso y otro bastante bien definidas, en mi caso, el primer shell script útil que hice fue para ejecutar un proceso para el cual debías crear un fichero de una línea, con una docena de campos, de los cuales solo variaban unas fechas y dejarlo en una carpeta determinada, para después, irte a otra carpeta y ejecutar el proceso en si. Es algo simple, que tardaba cinco minutos, pero que debía realizar varias veces al día, además de ser bastante fácil equivocarse. Ahora tardo en hacer lo mismo unos 10 segundos y sin posibilidad de fallo.
  • Tratamiento de ficheros: para este caso el mejor ejemplo es el  del fichero del apartado anterior, además de disponer de muy buenas herramientas para el tratamiento de expresiones regulares.

¿Como?

Eso lo veremos en los siguientes post, no tengo intención de hacer una guía de aprendizaje, ya que eso podría ser bastante extenso y demasiado complejo para mi (le estoy cogiendo manejo pero no soy un experto), sino más bien de trucos útiles que he aprendido, aunque que menos que una introducción.

Hasta pronto!!

3 comentarios:

juan dijo...

Hola, estaría bien que comentases como te va en madrid, el mundo profesional ect si quieres. Soy alumno de la etsiit, terminado y ando un poco perdido así que te lo agreadeceria. Saludos

neox dijo...

Yo lo utilizo bastante para los pases a producción. Luego también está control-m

José María Calderer dijo...

yo soy mas de fijo, asi que $U