Vous êtes sur la page 1sur 6

1

PROGRAMACI
E
SHELL DE LI
UX.
M Dolores Carballar Falcn 28935146

1. I
TRODUCCI
.
Este manual de Shell de Linux va dirigido a todo principiante que desee introducirse en el
mundo de los scripts de este sistema operativo. Describe, de una forma no muy detallada la
construccin de estas herramientas del programador, sin entrar en profundidad en comandos
propios del lenguaje.
Debido al nivel inicial del que se parte, puede estar dirigido a alumnos de 4 ESO de la
asignatura Informtica Aplicada, siendo de introduccin a la teora de la programacin.
Indudable es su aplicacin para alumnos de ciclos formativos de informtica tanto de grado
medio ( mdulo de Sistemas Operativos Monopuesto ) como en los de grado superior ( mdulos
de Sistemas Informticos Multiusuario y Monousuario de ASI y Sistemas Informticos
Multiusuario y en Red de DAI).

2. QU ES U
SCRIPT?QU ES EL SHELL?
Los scripts son guiones que contienen una serie de rdenes y estructuras organizadas
secuencialmente. Principalmente, presentan las siguientes caractersticas:
Se generan con gran facilidad y son bastantes funcionales.
Se ejecutan de forma lineal-secuencial orden tras orden.
Los lenguajes de scripts son interpretados, no compilados; lo que quiere decir que sus rdenes
secuenciales son interpretadas por un sistema o programa padre. Actualmente, son muy conocidos
lenguajes-scripts como JavaScript, PHP, ASP , etc para el desarrollo de webs.
El concepto de los scripts en linux, es bastante anlogo al de los ficheros por lotes (.bat) de
MSDOS, siendo los scripts bastante ms potentes por la cantidad de estructuras, bucles, y dems
recursos que permiten utilizar.
El Shell es la interfaz con la que el usuario-programador se comunica con el sistema operativo
directamente. Principalmente, es el elemento encargado de las siguientes funciones:
Interpretar comandos: acepta comandos y los ejecuta; si se trata de comandos de los
usuarios, como los scripts, los envia al Kernel para que sea ste quien los ejecute y procese.
Actuar como un intrprete de programacin de un lenguaje de alto nivel.
Existen distintos tipos de Shell, cada uno con una sintaxis diferente, pero con la misma filosofa:
sh, csh, bash y tcsh.
2

3. CMO TRABAJO CO
EL SCRIPT?
La primera tarea, ser crear el script utilizando para ello el editor que acompaa a Linux
denominado vi. Este editor presenta una interfaz interesante en modo texto, a la que hoy en da
no estamos muy acostumbrados. Existe una versin mejorada, que se denomina vim, pero que
igualmente, sigue siendo textual. Podemos usar otros editores como gedit (interfaz grfica),
emacs, kwrite, etc aunque se corre el riesgo que no las encontremos en todas las
distribuciones Linux.
Para generar el script, supongamos con vi, bastara con ejecutar en el prompt: vi
nombrefichero y nos saldra una pantalla como la
de la imagen para escribir el cuerpo del script. Para
aadir el texto del script, deberamos pulsar la tecla i
(de INSERTAR). Finalmente, para salir, guardando los
cambios, bastara con pulsar ESC, :wq.
Si se desea abrir de nuevo el archivo, basta con
ejecutar de nuevo vi nombrefichero.
Para ejecutar el script, se presentan dos opciones:
a) Asignarle el permiso de ejecucin al fichero, mediante la sentencia:
chmod 777 nombrefichero, que otorga permisos de lectura, escritura y ejecucin al
fichero. Posteriormente, ejecutaramos ruta/nombrefichero; si el fichero est en el
directorio actual, bastara con poner ./nombrefichero.
b) Ejecutar la siguiente instruccin: bash nombre_fichero.

4. ELEME
TOS DEL LE
GUAJE SCRIPT DE PROGRAMACI
E
SHELL
LI
UX.
Entrecomillados: existen de tres tipos:
- Comillas simples: para indicar caracteres literales.
- Comillas dobles: para asignar un string a una variable.
- Comillas invertidas: ` ` para que se evalue su contenido y que el resultado sea devuelto
como el de una variable.
Caracteres especiales:
- ; para separar comandos escritos en la misma lnea
- # para incluir comentarios
3

- * cadena de caracteres. (En expresiones regulares se traduce como 0 o ms veces)


- ? sustituye un carcter. ((En expresiones regulares se traduce como 0 o 1 vez)
- + en expresiones regulares, se traduce como 1 o ms veces.
- ~ la ruta del home del usuario.
Parmetros: pasados al programa principal, para luego operar con ellos. Se utilizan dentro
del script, manteniendo la posicin en la que se incluyen cuando se invocan. Existen la
siguiente nomenclatura:
- $1$9: parmetros posicionales.
- $* : todos los parmetros pasados.
- $#: nmero total de parmetros pasados.
- $0: nombre del script.
Variables: son un trozo de memoria en el que se almacena un dato. Sirven como enlace
entre el usuario remoto y el programa y se pueden usar con la ventaja de no tener que
definirlas antes de ser utilizadas en cualquier parte del script.
A nivel de creacin, existen dos tipos:
- Variables de entorno o del sistema, son las que crea el sistema. Normalmente, vienen
escritas en maysculas y se conoce su valor ejecutando echo $NOMBREVARIABLE.
Algunas son : $LOGNAME, $SHELL, $HOME, etc.
- Variables de usuario.
Para crear las variables, se usa la sintaxis nombrevariable=valordatos, donde
nombrevariable es el identificador de la variable y valordatos es el contenido que
se almacenar.
Para conocer el contenido de las variables, se precede el nombre de la variable de un signo
$, incluida en una expresin de impresin por pantalla con el comando echo.
Expresiones: existen tres tipos de expresiones fundamentales en Linux:
- Expresiones regulares: son patrones que nos permiten buscar un texto formado por
metacaracteres y caracteres ordinarios. Por ejemplo, un . es un metacarcter que se
traduce como cualquier carcter.
- Expresiones aritmticas: son evaluadas por el Shell con el comando expr para
realizar operaciones de suma +, resta -, divisin / y multiplicacin \* (Se debe tener
especial cuidado en la sintaxis, ya que cada trmino especificado lleva un espacio).
- Expresiones condicionales: son evaluadas por el Shell. Se pueden comparar: enteros,
strings, existencia de ficheros y directorios, permiso de acceso a ellos, etc. Este tipo de
instrucciones de control tienen la finalidad de ramificar la ejecucin de sentencias del
4

script, en base a una variable u otro elemento en cualquier otro tipo de lenguaje.
Para evaluar una condicin podremos usar:
a) test <expresin>
b) if [ condicin ]
En caso de que la expresin sea cierta y se cumpla, sta devolver un cero; en caso
contrario, devolver cualquier otro valor, distinto de cero.
Posibles expresiones para condicionales son:
1. Para ficheros:
-r fichero si es un fichero con permiso de lectura
-w fichero si es un fichero con permiso de escritura
-x fichero si es un fichero con permiso de ejecucin
-b fichero si es un fichero de dispositivo de bloque
-c fichero si es un fichero de dispositivo de caracteres
-f fichero si es un fichero regular
-d directorio si es un directorio
-s fichero si es un fichero y tiene tamao mayor que cero
-S fichero si existe el fichero y es un socket

2. Para cadenas y enteros:


-z cadena verdadero si la longitud de cadena es cero
-n cadena verdadero si la longitud de cadena es distinto de cero.
-eq verdadero si dos nmeros enteros son iguales
-ne verdadero si dos nmeros enteros son distintos
-gl verdadero si el primer nmero es mayor que el segundo
-ge verdadero si el primer nmero es mayor o igual que el segundo
-lt verdadero si el primer nmero es menor que el segundo
-le verdadero si el primer nmero es menor o igual que el segundo
= verdadero si las dos cadenas son iguales (ojo con los espacios)
!= verdadero si las dos cadenas son distintas
cadena verdadero si la cadena no es nula

3. Operadores lgicos:
AND o && o a verdadero si ambas son verdaderas
OR o || o o verdadero si una de las expresiones es cierta
5

NOT o != verdadero si la expresin no es cierta


Sentencias if < condicin>
if < condicin> then
then < instrucciones >
< instrucciones > elif
else < instrucciones >
< instrucciones > elif
fi < instrucciones >
fi

case valor_variable in
1) Instruccion1; instruccion2; instruccion3;
2) Instruccion1; instruccion2; instruccion3;
3) Instruccion1; instruccion2; instruccion3;

*) Instruccion1; instruccion2; instruccion3;
esac

Instrucciones iterativas

while <condicin> until <condicin>


do do
<instrucciones> <instrucciones>
done done

for variables in var1 var2 var3


do
<instrucciones>
done

Funciones: las funciones son pequeos trozos de cdigo que cumplen una determinada
funcin. Se sitan en el script de forma independiente, y slo se ejecutan si en el cdigo
principal se hace una llamada a ellas. A las funciones se les pueden pasar parmetros de la
misma forma que al programa principal, luego podemos operar con ellos con las variables
$1, $2, $3,
function nombreFuncion(){
Instrucciones
}
6

La sintaxis de la funcin es la siguiente:


Otras instrucciones
- Comando select: para crear mens interactivos.
- Break y continue: la instruccin break finaliza la iteratividad o repeticin del bucle mas
interior saliendo por su done; aunque la condicin de ese bucle se cumpla, ste se
romper y saldr forzado por el comando break. El comando continue causa la ejecucin
del bucle.
- Exit: finaliza el script.
- Ejecutar un comando sin crear un nuevo proceso, con la sentencia exec
comando.

Ejemplo de script: Muestra la tabla de multiplicar del nmero


pasado por parmetro.

n=0
while [ $n le 10 ]
do
result=`expr $n \* $1`
echo $1 * $n = [ $result ]
n=`expr $n 1 `
done

5. BIBLIOGRAFA.
Configuracin de sistemas Linux. Daniel L. Morrill, Ed. Anaya Multimedia, 2002.