Página siguiente Página anterior Índice general

2. ¿Qué es un guión (script)?

Un guión o script es un fichero de texto que contiene una serie de instrucciones que se pueden ejecutar en la línea de órdenes, y que se ejecutarán seguidas. En ese sentido son iguales que los ficheros con extensión BAT de MS-DOS, aunque, por supuesto, como en los sistemas UNIX no existe el concepto de extensión, pueden tener cualquier nombre. El único requisito es que ese fichero de texto tenga permiso de ejecución para la persona que intenta ejecutarlo. Alternativamente, puedes llamar al intérprete y darle como parámetro el nombre del guión, pero es más cómodo dar permiso de ejecución al guión para ahorrarnos escribir el nombre del intérprete.

Esas instrucciones se procesarán por orden, como si alguien las escribiera en el mismo orden en la línea de órdenes (no es exactamente así, pero casi). Por ello, van una por línea (los saltos de línea se interpretan igual que si hubieras pulsado INTRO), o separadas por caracteres ``punto y coma'' (;) si están en la misma línea. Cuando se ejecuta un guión para el intérprete de órdenes, se intenta ejecutar como un binario normal, pero al darse cuenta el sistema operativo de que no es un binario válido, pero que es un archivo de texto, ejecuta un intérprete hijo y empieza a interpretar el fichero de texto. Si fuera un archivo con un texto cualquiera, tarde o temprano (probablemente en la primera línea) habría un error de sintaxis y se abortaría la ejecución del programa.

2.1 Comentarios

Como el resto de los lenguajes de programación (al menos todos los que he visto yo), hay un carácter o unos caracteres especiales que denotan comentario. Ese texto es ignorado por el intérprete al leer el guión, y sólo sirven para que una persona, cuando edite el guión, pueda entender cómo funciona. Este carácter especial es la almohadilla `#', y denota que desde ahí hasta el final de la línea, el resto de los caracteres son un comentario del programador (como el `//' de C++).

2.2 Redirecciones

Al igual que si fuera un ejecutable cualquiera, un guión permite redireccionamientos de la entrada y de las salidas. No ocurre lo mismo con los ficheros BAT de MS-DOS, por razones obvias (el MS-DOS está mal hecho). Las redirecciones de la entrada, salida estándar, errores estándar, y todas las salidas se realizan con los caracteres <, >, 2> y &> (depende del intérprete, así son las del bash), como estoy suponiendo que ya sabes. Algo que puede que no sepas es que existe un fichero-dispositivo en UNIX, estándar a todos los clones (en Linux está), que es el /dev/null. Cualquier cosa que es escriba en ese dispositivo virtual va a parar a un agujero negro, es decir, se ignora completamente. ¿Y para qué sirve esto?, puede que te preguntes. Pues si quieres comprobar si un programa devuelve un error, pero no quieres que la salida estándar aparezca en pantalla (porque al usuario no le interesa, por ejemplo), entonces redireccionas la salida total (con &>) a /dev/null.

2.3 El truco del #!

Por lo general, en los guiones de los sistemas UNIX se suele incluir una línea especial, que empieza por #! (deben ser los dos primeros caracteres del fichero). La historia de esto es larga, y no la sé exactamente, pero el caso es que sirve para ejecutar un fichero con un intérprete determinado (no sólo intérpretes de órdenes como bash o el intérprete C, sino también como Perl, Tcl o Python).

Lo único que debes saber es que todos tus guiones deben empezar con una línea como:

        #!/bin/bash

En general, debe empezar con los caracteres #!, seguidos de la ruta completa al intérprete que desees utilizar para ese guión. Si no utilizas características específicas de bash, deberías poner #!/bin/sh.

¿Y cómo sabes qué intérprete quieres utilizar? Por lo general, bastará con /bin/sh. Si utilizas características específicas del intérprete Korn o del bash, entonces deberías utilizar /bin/ksh o /bin/bash respectivamente. Si el intérprete fuera del lenguaje Perl, por ejemplo (nada que ver con este tutorial), querrías que se ejecutara el programa perl y que recibiera como parámetro el fichero en el que has escrito esa línea mágica. Entonces, para hallar la ruta completa al programa perl, escribes which perl, y el sistema te responderá algo como /usr/bin/perl o /usr/local/bin/perl. Tú pones la línea que te devuelva y listo.


Página siguiente Página anterior Índice general