Está en la página 1de 8

Tema: Programacin Shell

1. INTERPRETE DE COMANDOS: programa que se encarga de atender todas las peticiones del usuario; existen varios interpretes de comandos: a. BOURNE SHELL (sh): ms antiguo y ms extendido. b. KORN SHELL (ksh): proporciona algunas caractersticas adicionales. c. C SHELL (csh): diferencias de vocabulario y sintaxis con respecto a (sh) d. BOURNE AGAIN SHELL: todo lo de (sh); incorpora (ksh) y (csh); uno de los ms utilizados en al actualidad. Se puede trabajar de varias formas con un shell; Interactivamente Proporcionando pequeos programas llamados scripts. 2. CREACIN DE SCRIPTS. DEFINICIN: UN scripts es un fichero de texto que contiene secuencias de comandos y nombres de programas que pueden ser ejecutados, se pueden crear con cualquier editor de textos. Ejemplo: #cat echo echo echo who echo pwd echo script_1 este es mi primer script los usuarios conectados al sistema son: mi directorio actual es: fin de primer script

3. EJECUCIN DE UN SHELLSCRIPT: existen varias formas en la que podemos ejecutar un script: a. Invocar al intrprete de comandos y pasarle como parmetro el script que se desea ejecutar. Ejemplo: #bash mi.primer.script - no tiene que tener permiso de ejecucin - se crea un shell hijo del shell actual b. Directamente el nombre del script en en prompt. Ejemplo: #chmod u+x mi.primer.script #mi.primer.script #PATH=`echo $PATH`:/directorio.de.script - es necesario que tenga permiso de ejecucin - se crea un shell hijo del shell actual c. Utilizando el . Delante del nombre del script. Ejemplo: #. mi.primer.script - No necesita tener permiso de ejecucin - Se ejecuta en el mismo shell d. Utilizando el comando exec delante del nombre del script #exec nombre.shell.script

145687376.doc

Necesita permiso de ejecucin Se ejecuta en el shell actual Nos saca del terminal

4. VARIABLES Y PARMETROS: al hablar de variables y parmetros, podemos hacer la siguiente subdivisin: a. VARIABLES DE USUARIO b. PARMETROS i. PARMETROS POSICIONALES ii. PARMETROS DE PALABRA CLAVE c. VARIABLES DE SISTEMA i. VARIABLES PREDETERMINADAS ii. VARIABLES INTERNAS 5. VARIABLES DE USUARIO: son las definidas por el usuario, para los nombres, las caractersticas son: a. caractersticas de los nombres i. ii. iii. iv. v. vi. vii. viii. #echo $PATH #echo PATH Alfabticos (maysculas/minsculas) Nmeros Subrayado Hay diferencia entre maysculas y minsculas El nombre no puede empezar por un nmero Las variables pueden almacenar cadenas de texto Los nmeros se almacenan como cadenas de texto acceso al contenido de la variable, se antepone el smbolo $ al nombre de la variable sacara por pantalla el valor de PATH sacar por pantalla la palabra PATH

b. asignacin directa, mediante el signo =. Ejemplo: #variable=33 #variable=cadena #variable= ... hasta pronto..

c. asignacin por teclado, para asignar un valor a una variable mediante teclado utilizamos el comando read. Ejemplo: #read NOM #echo $NOM d. Atributos de una variable: i. export: el valor de la variable slo es conocido por el shell en el que se le asigna. Si deseamos que el valor sea conocido por otros shell hijos tendremos que utilizar el comando anterior. Ejemplo #export variable cat exportacion A=33 echo el valor de A es $A echo Introduzca el nombre de un pas read PAIS echo "El valor de la variable pas es $PAIS bash exportal #Llamada a otro subshells o shell hijo echo "He regresado del shell. exportal"

145687376.doc

echo "El valor de A despus de la modificacin es $A" cat exporta1 echo "se est ejecutando el shell exportal" echo "El valor de A en exportal es $A' A=cambio echo "El valor de A en exportal es $A ii. readonly: marca una variable para que su valor no se pueda modificar. 1. Persiste hasta que salgamos del SHELL 2. Si se utiliza en lnea de comandos persiste hasta que salgamos a login. Ejemplo:

#readonly MEJOREQUIPO

6. PARMETROS: los scripts pueden recibir argumentos desde la lnea de comandos, es lo que denominamos parmetros posicionales. Para hacer referencia a un parmetro dentro de un script se utiliza el carcter $ seguido del nmero que indica la posicin del parmetro en la lnea de comandos. i. ii. iii. iv. v. vi. vii. $0 $1 $9 $# $* $@ hace referencia al nombre del script hace referencia al primer argumento. hace referencia al argumento que ocupa el noveno lugar. n de parmetros EXCLUYENDO el $0 todos los parmetros EXCLUYENDO el $0 todos los parmetros INCLUYENDO EL $0

Ejemplo: #script.para pepe 3 hola 34 echo echo echo echo El El El El

primer parmetro posicional es $1 segundo parmetro posicional es $2 tercer parmetro posicional es $3 cuarto parmetro posicional es $4 a. Comando set: entre otras cosas sirve para almacenar valores en las variables posicionales. Ejemplo:

#cat set1 echo El valor echo El valor echo El valor set `date` echo El valor echo El valor echo El valor set 33 es una echo El valor echo El valor echo El valor de \$1 es: $1 de \$2 es: $2 de \$3 es: $3 de \$1 es: $1 de \$2 es: $2 de \$3 es: $3 cadena fin de \$1 es: $1 de \$2 es: $2 de \$3 es: $3

#set1 juan pedro ana b. Comando shift: hace una translacin de n posiciones en la asignacin de parmetros por posicin. #cat sft echo El echo El echo El shift 3 echo El echo El echo El #sft 1 2 valor de \$1 es: $1 valor de \$2 es: $2 valor de \$3 es: $3 valor valor valor 3 4 5 de \$1 es: $1 de \$2 es: $2 de \$3 es: $3 6

145687376.doc

Ejercicio: crear un script llamado mis.lineas, al que se le pase como parmetro el nombre de un fichero y el nmero de lneas que queremos visualizar de dicho fichero.
7. VARIABLES DEL SISTEMA. a. VARIABLES PREDETERMINADAS: algunas variables tienen un significado especial para el shell. Ejemplo: HOME, PATH. b. VARIABLES INTERNAS: son variables directamente, los valores. Ejemplo: a las que el sistema les asigna,

i. $? Cdigo de ejecucin del ltimo comando ejecutado, 0 ejecutado correctamente. ii. $# n de parmetros EXCLUYENDO el $0 iii. $* todos los parmetros EXCLUYENDO el $0 iv. $$ contiene el PID del proceso en ejecucin 8. ESTRUCTURAS DE PROGRAMACIN: a. EJECUCIN CONDICIONAL DE COMANDOS i. comando1 && comando2 ->se ejecuta comando2 si est correcta la ejecucin de comando1. ii. comando1 || comando2 comando1 #ls fich1 && cat fich1 #ls fich1 || echo el fichero no existe 9. EXPRESIONES: el comando expr evala los argumentos considerndolos como una expresin; escribe el resultado sobre la salida estndar. Slo permite trabajar con enteros. a. expr variable operador variable [operador variable] i. + ii. -> suma -> resta ->se ejecuta comando2 si hay un error en

iii. * -> producto, precedido de \ para que no asigne el valor que tiene para el shell. iv. / v. % -> divisin -> resto.

b. Comandos para trabajar con cadenas: i. substr cadena i j crea una subcadena de longitud j a partir de la posicin i, incluida. Ej. expr Substr $CADENA 2 4 ii. length cadena devuelve la longitud de cadena expr length $CADENA iii. index cadena carcter .. devuelve la posicin de la primera aparicin de carcter en cadena. Si se ponen varios caracteres, devuelve la posicin de aquel que aparezca en primera posicin.

Ejercicio: crear un script llamado operaciones al que le pasaremos como parmetros 2 valores numricos, as mismo nos debe solicitar por teclado el tipo de operacin a realizar con los nmeros.
10. COMANDO TEST: sirve para evaluar expresiones lgicas, chequear tipos de ficheros, compara cadenas, compara enteros, etc.

145687376.doc

a. Formato: test expresin. Test evalua la expresin y si el valor es cierto retorna un cdigo de estado 0, en caso contrario, retorna un estado distinto de 0. b. Opciones de comprobacin de ficheros: i. e existe ii. b fichero especial de bloques iii. c fichero especial de caracteres. iv. d directorio v. f fichero ordinario vi. s tamao mayor que 0 bytes vii. w permiso de escritura viii. x permiso de ejecucin ix. h enlace simblico #test e fich1 ; echo $? c. Operaciones con cadenas: i. ii. iii. iv. i. ii. iii. iv. v. vi. z cadena -> n cadena -> cad1 = cad2 -> cad1 != cad2 -> eq ne le lt ge gt -> -> -> -> -> -> verdadero verdadero verdadero verdadero si si si si longitud de cadena es igual a 0 longitud de cadena es distinto de 0 las cadenas son iguales. las cadenas distintas.

d. Operaciones con enteros: iguales distintos menor o igual menor mayor o igual mayor -> cierto si la expresin es falsa. -> and -> or

e. operadores lgicos: i. ! expresin ii. a iii. o

11. ESTRUCTURA if: la estructura de control examina el estado que devuelve la expresin y si es cero ejecuta las rdenes que siguen al then, en caso contrario, ejecutas rdenes que siguen a else. a. El formato de la estructura es la siguiente: if expresin then comandos else comandos fi fi if expresin then comandos

Ejercicio: crear un script, llamado mis.lineas.completo, al que se le pase como parmetro el nombre de un fichero y el nmero de lneas que queremos visualizar de dicho fichero. Se debe mejorar el script, mis.lineas, para que tenga en cuenta que el fichero existe y que efectivamente le hemos pasado 2 parmetros al script. Ejercicio: crear un script, llamado resta.si, que pida 2 nmeros por teclado, si el primero es mayor que el segundo los restamos; en caso contrario, mostrar un mensaje indicando que no se pueden restar.

145687376.doc

Ejemplo: crear un script llamado renom que permita renombrar ficheros. Se debe comprobar que se le pasan 2 parmetros, que el primer parmetro sea un fichero normal que exista y que el segundo nombre sea un fichero que no exista. Visualizar los mensajes de error oportunos. if test f $1 a e $1 then if test e $2 then echo error el fichero $2 ya existe else mv $1 $2 fi else echo El fichero no es normal o no existe fi 12. ESTRUCTURA case: permite tomar una decisin entre mltiples casos: a. El formato de la estructura es la siguiente: case variable in patron1) comando1 comando2;; patron2|patron3) comando3;; *) comandos por defecto (opcional) esac 13. ESTRUCTURA while: cuando la condicin devuelve un estado de cierto, se sigue ejecutando la serie de mandatos delimitada por las instruccines do y done. Antes de cada ciclo, la estructura prueba la condicin a. El formato de la estructura es el siguiente: while condicin do comando1 comando2 done 14. ESTRUCTURA until: cuando la condicin devuelve un estado de falso, se sigue ejecutando la serie de mandatos delimitada por las instruccines do y done. Antes de cada ciclo, la estructura prueba la condicin. until condicin do comando1 comando2 done

Ejemplo: mostrar los nmeros del 1 al 10 por pantalla. contador=1 incremento=1 until test $contador eq 11

145687376.doc

do done

echo $contador contador=`expr $contador + $incremento`

15. ESTRUCTURA for: permite realizar la repeticin mltiple de la serie de comandos que estn dentro de la misma. a. El formato de la estructura es el siguiente: for variable in lista_de_valores do comando1 comando2 done Ejemplo: mostrar los parmetros pasados. contador=1 for i in $* do echo Parmetro $contador llamado $i contador=`expr $contador + 1` done

Ejercicio: crear un script, llamado veinte, que procese los nmeros del 1 al 20 y que muestre por pantalla el nmero, su cuadrado y su cubo. Ejercicio: crear un script, llamado fichero.lineas, que muestre por pantalla los nombres y el nmero de lneas que tiene cada fichero ordinario que se encuentre en el directorio actual de trabajo. La salida debe ser ms o menos as Nombre de fichero:. . . . . Contiene: . . . . lneas Ejercicio: crear un script, llamado grupo.usuarios, que genere un listado con cada uno de los grupos que hay en el sistema y los usuarios que pertenecen a ese grupo como secundario. La salida debe ser: Nombre del grupo:. . . . . Usuarios: . . . . . . . Ejercicio: realizar un script, llamado usuarios.sin, que muestre por pantalla la lista de los usuarios que no tienen asignada contrasea. El segundo campo en el fichero /etc/passwd debe estar vacio. Ejercicio: realizar un script, llamadobienvenida, que de la bienvenida a cada uno de los usuarios conectados al sistema. La salida debe ser: Hola usuario1, bienvenido Hola usuario2, bienvenido Etc
16. ESTRUCTURA break: rompe la ejecucin de un bucle y contina la ejecucin del programa en secuencia. Slo se aplica a los comandos for, while, until, if. Ejemplo: fbreak while true do echo "estoy dentro del bucle" break done echo "el valor del codigo de error es $?"

145687376.doc

17. ESTRUCTURA exit: permite abandonar la ejecucin de un shellscript en el momento que nosotros deseemos. Si lleva un nmero y est al final del programa, ese ser el cdigo que tendremos en $? Ejemplo: fexit while true do echo "estoy dentro del bucle" exit 2 done echo "El codigo de error es $?" 18. ESTRUCTURA continue: suspende la secuencia de ejecucin y vuelve al principio del bucle. Slo se utiliza con el comando for Ejemplo: fcontinue for var in 1 2 3 4 do if test "$var" = "2" then echo "antes de ejecutar continue" continue echo "despues de ejecutar continue" else echo "el valor de var es $var" fi done

145687376.doc

También podría gustarte