PROGRAMACIÓ E SHELL DE LI UX. Mª Dolores Carballar Falcón 28935146 1 1. I TRODUCCIÓ. Este manual de Shell de Linux va dirigi a to principiante que desee introducirse en el mun de los scripts de este sistema operativo. Describe, de una forma no muy detallada la construcción de estas herramientas del programar, sin entrar en profundidad en comans propios del lenguaje. Debi al nivel inicial del que se parte, puede estar dirigi a alumnos de 4º ESO de la asignatura Informática Aplicada, sien de introducción a la teoría de la programación. Indudable es su aplicación para alumnos de ciclos formativos de informática tanto de gra medio ( módulo de Sistemas Operativos Monopuesto ) como en los de gra superior ( módulos de Sistemas Informáticos Multiusuario y Monousuario de ASI y Sistemas Informáticos 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 características: Se generan con gran facilidad y son bastantes funcionales. Se ejecutan de forma lineal-secuencial orden tras orden. Los lenguajes de scripts son interpretas, no compilas; lo que quiere decir que sus órdenes secuenciales son interpretadas por un sistema o programa padre. Actualmente, son muy conocis lenguajes-scripts como JavaScript, PHP, ASP, etc para el desarrollo de webs. El concepto de los scripts en linux, es bastante análogo al de los ficheros por lotes (.bat) de MSDOS, sien los scripts bastante más potentes por la cantidad de estructuras, bucles, y demás recursos que permiten utilizar. El Shell es la interfaz con la que el usuario-programar se comunica con el sistema operativo directamente. Principalmente, es el elemento encarga de las siguientes funciones: Interpretar comans: acepta comans y los ejecuta; si se trata de comans de los usuarios, como los scripts, los envia al Kernel para que sea éste quien los ejecute y procese. Actuar como un intérprete de programación de un lenguaje de alto nivel. Existen distintos tipos de Shell, cada uno con una sintaxis diferente, pero con la misma filosofía: sh, csh, bash y tcsh.
2 3. CÓMO TRABAJO CO EL SCRIPT? La primera tarea, será crear el script utilizan para ello el editor que acompaña a Linux denomina vi. Este editor presenta una interfaz interesante en mo texto, a la que hoy en día no estamos muy acostumbras. Existe una versión mejorada, que se denomina vim, pero que igualmente, sigue sien textual. Podemos usar otros editores como gedit (interfaz gráfica), emacs, kwrite, etc aunque se corre el riesgo que no las encontremos en todas las distribuciones Linux. Para generar el script, supongamos con vi, bastaría con ejecutar en el prompt: vi nombrefichero y nos saldría una pantalla como la de la imagen para escribir el cuerpo del script. Para añadir el texto del script, deberíamos pulsar la tecla i (de INSERTAR). Finalmente, para salir, guardan los cambios, bastaría 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 s opciones: a) Asignarle el permiso de ejecución al fichero, mediante la sentencia: chmod 777 nombrefichero, que otorga permisos de lectura, escritura y ejecución al fichero. Posteriormente, ejecutaríamos ruta/nombrefichero; si el fichero está en el directorio actual, bastaría con poner./nombrefichero. b) Ejecutar la siguiente instrucción: bash nombre_fichero. 4. ELEME TOS DEL LE GUAJE SCRIPT DE PROGRAMACIÓ E SHELL LI UX. Entrecomillas: existen de tres tipos: - Comillas simples: para indicar caracteres literales. - Comillas bles: para asignar un string a una variable. - Comillas invertidas: ` ` para que se evalue su conteni y que el resulta sea devuelto como el de una variable. Caracteres especiales: - ; para separar comans escritos en la misma línea - # para incluir comentarios
3 - * cadena de caracteres. (En expresiones regulares se traduce como 0 o más veces) -? sustituye un carácter. ((En expresiones regulares se traduce como 0 o 1 vez) - + en expresiones regulares, se traduce como 1 o más veces. - ~ la ruta del home del usuario. Parámetros: pasas al programa principal, para luego operar con ellos. Se utilizan dentro del script, mantenien la posición en la que se incluyen cuan se invocan. Existen la siguiente nomenclatura: - $1 $9: parámetros posicionales. - $* : tos los parámetros pasas. - $#: número total de parámetros pasas. - $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 creación, existen s tipos: - Variables de entorno o del sistema, son las que crea el sistema. Normalmente, vienen escritas en mayúsculas y se conoce su valor ejecutan echo $NOMBREVARIABLE. Algunas son : $LOGNAME, $SHELL, $HOME, etc. - Variables de usuario. Para crear las variables, se usa la sintaxis nombrevariable=valordatos, nde nombrevariable es el identificar de la variable y valordatos es el conteni que se almacenará. Para conocer el conteni de las variables, se precede el nombre de la variable de un signo $, incluida en una expresión de impresión por pantalla con el coman echo. Expresiones: existen tres tipos de expresiones fundamentales en Linux: - Expresiones regulares: son patrones que nos permiten buscar un texto forma por metacaracteres y caracteres ordinarios. Por ejemplo, un. es un metacarácter que se traduce como cualquier carácter. - Expresiones aritméticas: son evaluadas por el Shell con el coman expr para realizar operaciones de suma +, resta -, división / y multiplicación \* (Se debe tener especial cuida en la sintaxis, ya que cada término especifica 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 ejecución de sentencias del
4 script, en base a una variable u otro elemento en cualquier otro tipo de lenguaje. Para evaluar una condición podremos usar: a) test <expresión> b) if [ condición ] En caso de que la expresión 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 ejecución -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 tamaño 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 s números enteros son iguales -ne verdadero si s números enteros son distintos -gl verdadero si el primer número es mayor que el segun -ge verdadero si el primer número es mayor o igual que el segun -lt verdadero si el primer número es menor que el segun -le verdadero si el primer número es menor o igual que el segun = verdadero si las s cadenas son iguales (ojo con los espacios)!= verdadero si las s cadenas son distintas cadena verdadero si la cadena no es nula 3. Operares lógicos: 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 expresión no es cierta Sentencias if < condición> then else fi if < condición> then elif elif fi case valor_variable in 1) Instruccion1; instruccion2; instruccion3; 2) Instruccion1; instruccion2; instruccion3; 3) Instruccion1; instruccion2; instruccion3; *) Instruccion1; instruccion2; instruccion3; esac Instrucciones iterativas while <condición> <instrucciones> until <condición> <instrucciones> for variables in var1 var2 var3 <instrucciones> Funciones: las funciones son pequeños trozos de código que cumplen una determinada función. Se sitúan en el script de forma independiente, y sólo se ejecutan si en el código principal se hace una llamada a ellas. A las funciones se les pueden pasar parámetros de la misma forma que al programa principal, luego podemos operar con ellos con las variables $1, $2, $3, function nombrefuncion(){ Instrucciones }
La sintaxis de la función es la siguiente: Otras instrucciones - Coman select: para crear menús interactivos. - Break y continue: la instrucción break finaliza la iteratividad o repetición del bucle mas interior salien por su ; aunque la condición de ese bucle se cumpla, éste se romperá y saldrá forza por el coman break. El coman continue causa la ejecución del bucle. - Exit: finaliza el script. - Ejecutar un coman sin crear un nuevo proceso, con la sentencia exec coman. Ejemplo de script: Muestra la tabla de multiplicar del número pasa por parámetro. n=0 while [ $n le 10 ] result=`expr $n \* $1` echo $1 * $n = [ $result ] n=`expr $n 1 ` 6 5. BIBLIOGRAFÍA. Configuración de sistemas Linux. Daniel L. Morrill, Ed. Anaya Multimedia, 2002.