Documente Academic
Documente Profesional
Documente Cultură
5/2/12
Es una parte fundamental de todo sistema operativo que se encarga de ejecutar rdenes bsicas para el manejo del sistema. incorporar caractersticas como:
Suelen
redireccin leguaje
Hay
command.com
Para
escribir nuestros programas en shell usaremos cualquier clase de editor de texto, por ejemplo vi. programa debe empezar con la siguiente lnea (debe ser la primera lnea del fichero):
El
#!/bin/bash
Los caracteres #! indican al sistema que el primer argumento que sigue en la lnea es el programa a utilizar para ejecutar este archivo. En este caso usamos el shell /bin/bash.
5/2/12 hallas escrito y guardado tu script
Cuando
Para
hacer el script ejecutable debemos escribir el siguiente comando: chmod 755 nombre-del-script. puedes ejecutar tu script escribiendo:
./nombre-del-script o
Despus
sh nombre-del-script
5/2/12
2.- Variables
Asignacin: La
un
un script todo lo que venga despus del smbolo # y hasta el prximo carcter nueva lnea se toma como comentario y no se ejecuta.
Ejemplos: echo
Hola todos # comentario hasta fin de lnea slo imprime "Hola todos". # cat /etc/passwd 5/2/12 no ejecuta nada, pues el smbolo # convierte
Cada
forma tiene sus variaciones, y la combinacin de todas ellas generan mltiples posibilidades, pero detrs de cualquiera de ellas, por compleja que parezca, se encuentran siempre repeticiones o alternativas.
5/2/12
1.-
Estructura repetitiva: se realiza una accin un cierto nmero de veces, o mientras dure una condicin. desde i = 1 hasta i = 7 escribir dia_semana(i);
Ejemplo:
5/2/12
Estructura
alternativa: en base a la comprobacin de una condicin, se decide una accin diferente para cada caso.
Ejemplo:
# orculo caso $estado en soltero) escribir "El casamiento ser su felicidad"; casado) escribir "El divorcio le devolver la felicidad"; divorciado) escribir "Slo ser feliz si se vuelve a casar"; 5/2/12
Comandos de programacin.
Comandos
del shell.
tpicos de programacin
5/2/12
Funciones:
Una tarea Ejemplo:
que se realiza repetidamente dentro del mismo programa puede escribirse funcin dia_semana(da_hoy) aparte e invocarse como una "funcin". caso $dia_hoy en Para definir una funcin es preciso elegir un 1) devolver "Lunes";; nombre y escribir un trozo de cdigo asociado 2) a ese nombre. devolver "Martes";; La funcin suele recibir algn valor como 3) "parmetro" en base al cual realiza su tarea. devolver "Mircoles";: Definida as la funcin, para usarla basta 4) escribir su nombre y colocar el valor del devolver "Jueves";; parmetro entre parntesis. 5) devolver "Viernes;; 5/2/12 6)
Argumentos:
Los
argumentos que se pasan en el momento de invocar el script se asignan a las variables automticas $1, $2, $3, etc...
script $1
Ejemplo:
En
ocasiones se desea asignar a una variable el valor obtenido mediante la ejecucin de otro comando. Esto se logra encerrando el comando entre ' como se ve en el siguiente 5/2/12 ejemplo:
Expresiones:
El
comando test permite evaluar expresiones devolviendo verdadero o falso como resultado (usualmente se utiliza con el comando if):
El
Si
"$nombre" != "Carlos
5/2/12
5/2/12
test $archivo1 -nt $archivo2 test -f $archivo test -d $archivo test -r $archivo test -w $archivo test -x $archivo test -b $archivo test -c $archivo
Chequea las fechas de modificacin de dos archivos, devolviendo verdadero si el archivo1 es ms nuevo que el archivo2. Chequea si el archivo existe, en caso afirmativo devuelve verdadero. Chequea si el archivo en cuestin es un directorio y si existe, en cuyo caso devuelve verdadero. Chequea si tenemos permiso de lectura sobre el archivo, devolviendo verdadero en caso afirmativo. Chequea si tenemos permiso de escritura sobre el archivo, devolviendo verdadero en caso afirmativo. Chequea si tenemos permiso de ejecucin sobre el archivo, devolviendo verdadero en caso afirmativo. Chequea si el archivo es un block device, devolviendo verdadero en caso afirmativo. Chequea si el archivo es un character device, devolviendo verdadero en caso afirmativo.
5/2/12
que los comandos que se ejecutan con xito devuelven un cdigo de ejecucin equivalente a verdadero, mientras que los que fallan devuelven un cdigo de ejecucin equivalente a falso, podemos evaluar directamente el resultado de un comando como en el siguiente ejemplo:
grep Si El
el usuario existe el resultado ser verdadero, de lo contrario ser falso. '> /dev/null' es para evitar la salida del grep por pantalla. 5/2/12
Condicionales y ciclos:
Haga clic para modificar el estilo de subttulo del patrn
5/2/12
Shell donde el usuario ingresa por teclado su nombre y es comparado con la variable nombre.
1.-Crear
y ejecutar el siguiente script trabajo.sh: # trabajo.sh: dice si se trabaja segn el da #invocar con parmetros: #domingo, feriado, u otro nombre cualquiera # if [ $1 = "domingo" ] then echo "no se trabaja" elif [ $1 = "feriado" ] then echo "en algunos se trabaja" else echo "se trabaja" 5/2/12
comando implementa una estructura repetitiva, en la cual una secuencia de comandos se ejecuta una y otra vez. Su sintaxis es:
Se
2.-
Crear y ejecutar el siguiente script listapal.sh # listapal.sh: lista de palabras #muestra palabras de una lista interna # LISTA="silla mesa banco cuadro armario" for I in $LISTA do echo $I done # fin listapal.sh
5/2/12
3. En
Crear y ejecutar el siguiente script contarch.sh el siguiente script, el comando expr calcula expresiones aritmticas; notar su sintaxis. # contarch.sh #muestra nombres y cuenta archivos en el directorio actual # CUENTA=0 for ARCH in * do echo $ARCH CUENTA=`expr $CUENTA + 1` # agrega 1 a CUENTA 5/2/12 done
comando implementa alternativas o "casos"; elige entre mltiples secuencias de comandos la secuencia a ejecutar. La eleccin se realiza encontrando el primer patrn con el que iguala una cadena de caracteres. Su sintaxis es case $CADENA in patrn1) comandos1;; patrn2) comandos2;; ... *) comandosN;; esac 5/2/12 El patrn * se coloca al final; aparea cualquier
4.-
Crear y ejecutar el siguiente script diasemana.sh : # diasemana.sh: nombres de los das de la semana # invocar con nmero del 0 al 6; 0 es domingo case $1 in 0) echo Domingo;; 1) echo Lunes;; 2) echo Martes;; 3) echo Mircoles;; 4) echo Jueves;; 5) echo Viernes;; 6) echo Sbado;; *) echo Debe indicar un nmero de 0 a 6;; 5/2/12 esac
5.- Crear y ejecutar el siguiente script estacion.sh : # estacion.sh # indica la estacin del ao aproximada segn el mes # case $1 in diciembre|enero|febrero) echo Verano;; marzo|abril|mayo) echo Otoo;; junio|julio|agosto) echo Invierno;; setiembre|octubre |noviembre) echo Primavera;; *) echo estacion.sh: debe invocarse como echo estacion.sh mes echo con el nombre del mes 5/2/12 en
comando implementa una estructura repetitiva en la cual el conjunto de comandos se ejecuta mientras se mantenga vlida una condicin (while = mientras). La condicin se examina al principio y luego cada vez que se completa la secuencia de comandos. Si la condicin es falsa desde la primera vez, los comandos no se ejecutan nunca. Su sintaxis es
6.-
Crear y ejecutar el siguiente script crear1.sh su sintaxis, sobre todo la posicin de los espacios en blanco, obligatorios. # crear1.sh # crea archivos arch1....arch9, los lista y luego borra VAL=1 while [ $VAL -lt 10 ] # mientras $VAL < 10 do echo creando archivo arch$VAL touch arch$VAL VAL=`expr $VAL + 1` 5/2/12 done
Observar
until
Este
comando implementa una estructura repetitiva en la cual el conjunto de comando se ejecuta hasta que se cumpla una condicin. En cuanto la condicin se cumple, dejan de ejecutarse los comandos. La condicin se examina al principio; si es verdadera, los comandos no se ejecutan. Notar la diferencia con while. Su sintaxis es
7.-
Usando
# crear2.sh # crea archivos arch1....arch9, los lista y luego borra VAL=1 until [ $VAL -eq 10 ] # hasta que $VAL = 10 do echo creando archivo arch$VAL touch arch$VAL VAL=`expr $VAL + 1` done 5/2/12 ls -l arch[0-9]
exit
Este
comando se utiliza en programacin de shell para terminar inmediatamente un script y volver al shell original. en un script, termina inmediatamente el script; en la lnea de comando, termina la ejecucin del shell actual, y por lo tanto la sesin de UNIX. 6: termina el script devolviendo el 5/2/12 nmero indicado, lo que puede usarse para
exit:
exit
8.-
Crear y ejecutar el siguiente script usoexit.sh #!/bin/bash # usoexit.sh: prueba valores de retorno de exit # clear echo "Prueba de valores de retorno" echo " Invocar con parmetros " echo " bien, error1, error2, cualquier cosa o nada" echo " Verificar valor de retorno con" echo ' echo $?' echo VALOR=$1 5/2/12 case $VALOR in
expr
Este
comando recibe nmeros y operadores aritmticos como argumentos, efecta los clculos indicados y devuelve el resultado. argumento debe estar separado por blancos. Opera slo con nmeros enteros y realiza las operaciones:
Cada
resta
entera (/),
expr
4+5 devuelve 9 ( 4 + 5 = 9 ). expr 3 \* 4 + 6 \/2 devuelve 15 ( 3 * 4 + 6 /2 = 15 ). expr 3 \* \( 4 + 3 \) \/2 devuelve 10 ( 3 * (4 + 3) / 2 = 10 ). expr tambin realiza operaciones lgicas de comparacin, aceptando los operadores =, !=, >, <, >= y <=. El operador != es "no igual"; el ! se usa para negar. Estos caracteres tambin requieren ser escapados. echo `expr 6 \< 10` devuelve 1, cierto para expr. 5/2/12
read
Este
comando tiene como propsito solicitar informacin al usuario. Su ejecucin captura las digitaciones del usuario, hasta obtener un carcter nueva lnea (tecla Enter). El ejemplo siguiente obtiene datos del usuario, los repite en pantalla, solicita confirmacin y emite un mensaje en consecuencia. Crear y ejecutar el siguiente script yo.sh # yo.sh: captura datos del usuario # 5/2/12
9.
Depuracin.
Se
llama depuracin ("debug") de un programa al proceso de verificar su funcionamiento en todos los casos posibles y corregir sus errores ("bugs", "pulgas"; del ingls, literalmente. se est escribiendo un script, puede convenir invocarlo de forma especial para generar informacin de comandos ejecutados y errores, para ayudar en la depuracin. salidas se imprimen en el error estndar, por lo que pueden direccionarse a un archivo 5/2/12 sin mezclarse con la salida del comando.
Cuando
Las
Ejercicios en clase :
5/2/12
1: Programa que cambia de directorio y nos muestra donde estamos en cada momento. 2:Programa que muestra la hora del sistema cada segundo durante 1 minuto. 3: Programa que nos dice el da de la semana que fue ayer 4: Programa que pide al usuario que introduzca una cadena de caracteres y la muestra, por pantalla del derecho y del revs. 5:Programa que simula una papelera de reciclaje, mediante el cual en lugar de borrar un archivo, lo que hace es guardarlo en un subdirectorio, 5/2/12 con el fin de evitar borrados accidentales.
Ejercicio