script presentacion
TRANSCRIPT
ESCUELA POLITECNICA NACIONAL
SITEMAS OPERATIVOS
ING. ADRIAN ZAMBRANO
14-11-2012
SCRIPTS EN ubuNTu“Todo l o que ne c e s i tas sabe r ac e r ca de un Scr ip t s ”
GRUPO 2
Vanessa Estefania NapaRenato DiazPablo Medina
Haga clic para modificar el estilo de texto del patrón Segundo nivel Tercer nivel
Cuarto nivel Quinto nivel
Que es un Script?
Un script es un tipo de lenguaje informático interpretado, formado por lineas de texto ASCII, las cuales son ejecutadas de manera secuencial y ordenada por un programa padre, en este caso nuestro shell Bash.
Es un conjunto de comandos presentados de manera sencilla y de acceso rápido para el usuario.
‘Un script es el medio de comunicación entre el programador y el usuario’.
Dentro de la edición de un Script hay caracteres que cumplen una función predeterminada y especifica.
‘ ’ Comillas simples: Se las utiliza para indicar caracteres literales ‘a’.
“ ” Comillas dobles: Agrupa cadenas de caracteres “ Grupo 2 Script”
` ` Comillas invertidas: Hacen que su contenido sea evaluado y que su
resultado sea devuelto. Al tipear `date` en el script al momento que este
se haya ejecutado se enviará una respuesta con el la fecha actual.
Linea del script: `date`
Respuesta mostrada por el shell: sab nov 19 18:58:31 ECT 2012
# se lo utiliza para dejar comentarios o hacer una descripción dentro del script.
Pasos para la creación de un script
1. Decidir la función que el script va a efectuar
2. Hacer una lista de comandos que se
introducirán en el Script.
3. Crear un nuevo archivo para el script
4. Identificar el shell que utilizará el script
5. Agregar comandos y comentarios
6. Guardar el archivo script
7. Hacer ejecutable el archivo script
8. Tipear el nombre del script para ejecutarlo
9. Hacer debug y modificar el script si
tiene algún error.
Pasos para la creacion de un script
1. Decidir la función que el script va a efectuar
Este es uno de los pasos
más importantes ya que
antes de crear el cómo
tenemos que crear el que,
es decir la función que
cumplirá el programa a
desarrollar
Pasos para la creacion de un script
2. Hacer una lista de los comandos que se introduciran en el Script
El paso siguiente después de haber
imaginado el programa es pensar en los
comandos con los cuales desarrollaremos el
como.
Hay una serie de comandos que se utilizan en un
script .
A continuación les presentamos los más
representativos:
Pasos para la creacion de un script
2. Hacer una lista de los comandos que se introduciran en el Script
El paso siguiente después de haber
imaginado el programa es pensar en los
comandos con los cuales desarrollaremos el
como.
Hay una serie de comandos que se utilizan en un
script .
A continuación les presentamos los más
representativos:
Comando echoEs uno de los comandos mas utilizados dentro de un script de shell, su función es la de mostrar en pantalla una cadena de caracteres.
Su sintaxis es:
echo [opciones] [cadena]
OPCIONES:
-n Suprime el caracter de nueva linea final
-e Activa la interpretación de los caracteres alternativos
listados debajo
-E Desactiva la interpretación de secuencias de cadena
Sin -E, las siguientes secuencias con reconocidas
\\ barra inversa
\b retorno
\f salto de página
\n nueva línea
\r retorno de carro
\t tabulación horizontal
\v tabulación vertical
Comando echo
EJEMPLO:
1. Comando echo
echo \"La vida es Bella\"
El comando mostrará: ”La vida es Bella”
2. Para usar el retorno
echo -e \"La vida es \bBella\"
El comando eliminará el espacio y se mostrará:
”La vida esBella”
3. Para usar el espacio de tabulación en el comando echo
echo -e \"La\tvida\tes\tBella\"
El comando mostrará:
”La vida es Bella”
Comando read
El comando read es de mucha ayuda dentro del desarrollo de scripts que necesiten que el usuario introduzca algún tipo de parámetro o dato.
Durante la ejecución de un script, si este encuentra una línea de comando que tenga el comando read seguido de un nombre de variable, dicha ejecución se detendrá y en pantalla se mostrará el cursor parpadeando en espera de que se introduzca el valor de la variable, este valor a continuación sera almacenado por la shell como el valor de la variable.
Comando read
EJEMPLO:
#!/bin/bash
#uso de read
echo "Cuál es tu nombre?"
read nombre
echo "Hola $nombre“
En este ejemplo se puede observar que al pedir el ingreso de la edad utilizamos read edad. Hay que fijarse bien que para que el shell entienda la orden y pueda mostrar la edad ingresada con el comando echo es necesario preceder a la variable edad de un signo de dinero ($), de esta forma $edad.
Pasos para la creación de un script
3. Crear un nuevo archivo para el script
Elegir un editor de texto para la creación de este archivo.
Elegir un nombre para el script evitando nombres como backup.sh son nombres que se deben
evitar ya que estos tienen funciones específicas
dentro del shell. Los archivos script pueden ser guardados en el
directorio home del usuario, pero también se los
puede colocar en el directorio ~/bin que se
encuentra como subdirectorio de home. .
Pasos para la creación de un script
4. Identificar el shell que utilizara el script
El usuario debe introducir #!/bin/ksh o #!/bin/bash en la primera línea del script. Es importante empezar la primera línea con "#!" ya que así el script no lo reconocerá como
comando a ser ejecutado.
Pasos para la creación de un script
5. Agregar comandos y comentarios
6. Guardar el archivo script
EJEMPLO: #!\bin\bash #Código que muestra información importante del terminal #Este comando nos mostrará el directorio actual de trabajo echo \"Directorio actual:\" pwd #Limpiamos la pantalla clc echo \"Usuario actualmente en el sistema:\" who
Pasos para la creación de un script
7. Hacer ejecutable el archivo script
1er método
Asignando permisos mediante el comando chmod
cambiamos de 664 a ..
2do método
Tipear bash en el prompt antes del nombre del archivo
$ bash nombre_script.sh
Como hacer debugging de un script
Un problema común al escribir scripts de shell es que el shell no interpreta el comando de la manera en la cual lo espera el usuario. El alumno puede utilizar los comandos ksh o bash con las opciones -x (echo - eco) y -v (verbose - "elocuente") para ayudar a identificar en qué parte del script se encuentran los problemas.
VARIABLES EN LOS SCRIPTS Una variable es un placeholder (marcador de posición) para la
información requerida por los procesos para que puedan funcionar apropiadamente. Una variable tiene un nombre y guarda un valor. Cambiar el valor de una variable es configurarla. Existen dos tipos de variables utilizados en scripts de shell, las variables de shell y las variables del entorno.
Las variables de shell son mantenidas por el shell y sólo son conocidas para el shell actual. Estas variables son variables locales. Las variables del entorno son variables conocidas para el shell actual y todos los shells hijos o subshells. Algunos ejemplos de variables del entorno predefinidas son:
* El shell de login (SHELL)
* El nombre de login (LOGNAME)
* La ruta de búsqueda que se utiliza para buscar comandos (PATH)
* Las configuraciones de terminal (TERM)
Las variables locales se configuran utilizando el formato VARIABLE=valor. Por ejemplo, BACKUPDIR =/home/user2/myfiles configura la variable denominada BACKUPDIR como igual al valor de /home/user2/myfiles. Los nombres de las variables van en mayúscula por convención pero también pueden ir en minúscula. Utilice el comando echo para mostrar el valor de una variable. La figura ilustra cómo configurar y mostrar la variable BACKUPDIR. El signo de dólar antes de un nombre de variable instruye al shell para que utilice el valor de la variable. De otro modo, echo BACKUPDIR, sin el signo de dólar daría como resultado la cadena de texto BACKUPDIR, como se ilustra en el ejemplo.
Haga clic para modificar el estilo de texto del patrón
Segundo nivel Tercer nivel
Cuarto nivel Quinto nivel
Las variables también pueden configurarse para que sean igual al resultado de un comando. Por ejemplo, DATE=`date` asignaría el valor de la fecha actual a la variable DATE. Cuando ha de mostrarse una variable, los acentos graves (`) indican al shell que utilice la fecha actual en lugar de la palabra "date". Los acentos graves y otros caracteres de encomillado se trataron anteriormente en este capítulo.
La ventaja de una variable es que una vez configurada puede hacerse referencia a ella muchas veces a lo largo de un script. Si el valor de la variable se cambia entonces todas las veces que se hace referencia a ella se utilizará el nuevo valor y no hacen falta otras modificaciones.
Comandos condicionales LOS OPERADORES DISPONIBLES PARA SENTENCIAS
CONDICIONALES Y SUS SIGNIFICADOS
Operador Significado Equivalente Matematico
-eq Es igual a x == y-ge Mayor o igual
quex >= y
-gt Mayor que x > y-le Menor o igual
quex <= y
-lt Menor que x < y-ne No es igual a x != y
comandos condicionales Los comandos que llevan a cabo ciertas tareas basadas en si una condición tiene
éxito o falla se denominan comandos condicionales. Los tres comandos condicionales utilizados más frecuentemente son if, test, y case.
COMANDO if
La forma más simple de un comando condicional es el comando if.
El comando if es un comando de shell incorporado que permite probar una condición y luego cambiar el flujo de la ejecución de un script de shell basándose en el resultado de la prueba.
Existen tres formatos del comando if. El comando fi (if invertido) se coloca siempre al final de un condicional if.
El Formato del Comando if-then (si-entonces): if el comando tiene éxito
then
ejecutar el/los comando(s)
fi
EJEMPLO
#!/bin/bash
x=3 y=9 if [ $x -lt $y ] then echo "x=$x es menor que y=$y" fi
x=3 es menor que y=9
El Formato del Comando if-then-else (si-entonces-de lo contrario):
if el comando tiene éxitothenejecutar el/los comando(s)elseejecutar el/los comando(s)fi
EJEMPLO (Calculadora Básica)
#!/bin/bashecho "Ingrese el primer numero"read xecho "Ingrese el segundo numero"read yecho "¿Que operacion matematica desea hacer?" echo "1. Suma"echo "2. Resta"echo "3. Multiplicación"echo "Escoja una opción [1,2 or 3]? "read oper
if [ $oper -eq 1 ]then
echo "La suma es: " $(($x + $y))else
if [ $oper -eq 2 ]thenecho "La resta es: " $(($x - $y))elseif [ $oper -eq 3 ]thenecho "La multiplicacion es: " $(($x * $y))elseecho "Invalido argumento"fifi
fi
El Formato del Comando if-then-elif (else if)(si-entonces-de lo contrario si):if el comando tiene éxitothenejecutar el/los comando(s)
elif el comando tiene éxito then ejecutar el/los comando(s)
else ejecutar el/los comando(s)
fi
EJEMPLO(Comparar dos numeros)
#!/bin/bashecho " Digite el primer número"read primeroecho "Digite el segundo número"read segundo
if [ $primero -eq 0 ] && [ $segundo -eq 0 ]then
echo "Num1 y Num2 son cero"elif [ $primero -eq $segundo ]then
echo "Ambos numeros son iguales"elif [ $primero -gt $segundo ]then
echo "$primero es mayor que el $segundo"else
echo "$primero es menor que el $segundo"fi
EJEMPLO (Montar una particion)
#!/bin/bashecho "¿Desea montar una particion?. ¿S/n?"read xif [ $x = S ]thenecho "Es necesario instalar el programa pysdm.¿desea instalarlo?.¿S/n? "read y
if [ $y = S ]thensudo apt-get install pysdmecho "Elprograma pysdm esta a punto de iniciar.."sleep 3echo "Utilice el entorno grafico para montar la particion"sudo pysdmecho "Saliendo del programa.."sleep 3
echo "¿Desea reiniciar el sistema?. ¿S/n?"read zif [ $z = S ]thenrebootelse clearexitfi
else exitfi
else exitfi
Comando test
El comando condicional incorporado al shell test se utiliza a menudo para probar una o más condiciones que siguen al comando if.
El comando test evalúa una expresión, y si el resultado es verdadero, devuelve un estado de salida de cero. De otro modo el resultado es falso, y devuelve un estado de salida que no es cero.
La expresión compara normalmente dos números o dos cadenas para comprobar si los valores son idénticos. La expresión se utiliza también para probar el estado de un archivo.
Formato del Comando:
if test expresión o if [expresión]
then
ejecutar comando(s)
fi
En el ejemplo que figura a continuación, test evalúa la variable $answer para determinar si el usuario respondió "y" (de "yes" - sí) a la pregunta ( "¿Despejar la pantalla antes de mostrar el listado de archivos?"). De ser verdadera, se despeja la pantalla y se muestra el contenido del directorio actual. De ser falsa, se muestra el contenido del directorio actual pero no se despeja antes la pantalla.#!/bin/ksh
echo "¿Despejar la pantalla antes de mostrar el listado de archivos?").
echo " enter y for Yes or n for No:\c"
read answer
if test "$answer" = y
then
clear;ls
else
ls
fi
El comando test se utiliza tan a menudo en los scripts de shell que los corchetes ([ ]) pueden utilizarse como alternativa a tipear "test". Por ejemplo, la línea de más arriba "if test "$answer" = y" también podría escribirse así: if [ $answer = y ].
Nota: el signo != (no igual) puede utilizarse para probar si una cadena no es igual a otra.
Comando case Una forma de realizar la misma acción sin escribir tantas lineas de condicionales elif y con ello disminuir el tamaño del guión
es la utilización de la sentencia case-in-esac. Esta sentencia permite vincular patrones de texto con conjuntos de comandos; cuando la variable de la sentencia coincide con alguno de los patrones, se ejecuta el conjunto de comandos asociados. La sintaxis de la sentencia case-in esac es como sigue.
Formato del Comando:
case valor de la variable in
value1 )
Comando
Comando
;;
value2 )
Comando
Comando
;;
*)
Comando
;; esac
El valor de una variable de case se compara con value1, value2, etcétera, hasta hallar una coincidencia.
Cuando un valor coincide con la variable de case, los comandos que siguen a ese valor se ejecutan hasta llegar a los punto y coma dobles (;;). Luego el control se dirige a toda la línea directamente después del enunciado esac.
Si el valor de una variable de case no coincide, el programa ejecuta los comandos después del valor por defecto *) hasta que se llega a los punto y coma dobles o hasta esac.
EJEMPLO
#!/bin/bashecho "Diga si o no:"read VAR case "$VAR" insi) echo "Escribiste -si-"
;;no) echo "Escribiste -no-"
;;*) echo "Lo que escribió no se acepta"
;;esac
Observe que el carácter (*) utilizado en la última opción significa "patrón no contemplado" en este caso.
El valor de una variable de case se compara con value1, value2, etcétera, hasta hallar una coincidencia.
Cuando un valor coincide con la variable de case, los comandos que siguen a ese valor se ejecutan hasta llegar a los punto y coma dobles (;;). Luego el control se dirige a toda la línea directamente después del enunciado esac.
Si el valor de una variable de case no coincide, el programa ejecuta los comandos después del valor por defecto *) hasta que se llega a los punto y coma dobles o hasta esac.
EJEMPLO
#!/bin/bashecho "Diga si o no:"read VAR case "$VAR" insi) echo "Escribiste -si-"
;;no) echo "Escribiste -no-"
;;*) echo "Lo que escribió no se acepta"
;;esac
Observe que el carácter (*) utilizado en la última opción significa "patrón no contemplado" en este caso.
BUCLES
Se puede utilizar bucles para controlar el flujo de ejecución de un script. Un bucle repite una secuencia de instrucciones hasta satisfacer una condición predeterminada.
A menudo un script tiene que ver con llevar a cabo la misma operación o conjunto de operaciones de cada archivo en un directorio o lista, cada línea de un archivo, o cada palabra de una línea.
El shell proporciona tres construcciones de bucle para lograr este tipo de acción: el bucle for, el bucle while y el bucle until.
EL BUCLE FOR
El bucle for ejecuta una lista de comandos una vez para cada valor de variable de bucle.
Formato del Comando:
for variable in
list
do
Comandos
Done
El valor de la variable se cambia con cada pasada a través del bucle al siguiente valor en list. Cada vez que un valor es asignado, los comandos se ejecutan en el cuerpo del bucle. Cuando ya no quedan más valores en list, el bucle se termina.
EL BUCLE WHILE
El bucle while ejecuta repetidamente un grupo de comandos dentro del cuerpo de un bucle hasta que la condición de prueba de la expresión se hace falsa. En otras palabras, mientras la expresión sea verdadera, ejecuta estos comandos.
Formato del Comando:
while condición
do
Comandos
done
EL BUCLE UNTIL
El bucle until es muy similar al bucle while pero ejecuta una serie de comandos mientras un comando continúe fallando (estado de salida no-cero). Cuando el comando finalmente se ejecuta con éxito, el bucle se termina y la ejecución pasa al primer enunciado que sigue a la construcción done. La condición until se verifica en la parte superior del bucle, no en la inferior.
Formato del Comando:
until condición
do
Comandos
done
Script1: Factorial de un número ingresado por el usuario .
#!/bin/bash
echo "ingrese el numéro para hallar su factorial" read num n=$num fact=1
for (( i=1; i<=n; i++ )) do
fact=`expr $fact \* $i`
done echo "el factorial de $num es: $fact "
Script2: Verifica si un usuario está loggeado.
#!/bin/bash
echo "Ingrese l nombre de un usuario: " read name
while who | grep $name do echo "$name está loggeado" sleep 5 exit done echo "$name no está loggeado"
Script3: Indica si un usuario está loggeado .
#!bin/bash echo "ingrese un usuario" read user until who | grep $user do echo "el $user no esta loggeado" sleep 5 done echo "el $user esta loggeado"
Script4: ver que número es mayor, menor o igual.Script.sh num1 num2(asi se ejecuta el script).
#!/bin/bash if [ $2 -gt $3 ] then echo "$2 es mayor" elif [ $2 -eq $3 ] then echo "$2 = $3" else echo "$3 es mayor" fi
● #!/bin/bash● clear ● cd● pwd● echo "ingrese el path absoluto de la carpeta con el contenido que desea que se
respalde"● read path● while [ ! -d $path ]● do● clear● echo "$path no existe"● echo "ingrese el path absoluto de la carpeta con el contenido que desea que se
respalde una vez por semana"● read path● done●
Script5: Permite crear respaldos de un carpeta deseada en un dirección ingreseda por el usuario.
clear echo "ingrese el nombre de la carpeta donde se guardarán los resplados" read name echo "ingrese el path absoluto en donde quiere que se cree la carpeta respaldos" read ruta while [ ! -d $ruta ] do clear echo "$ruta no es válido" echo "ingrese el path absoluto en donde quiere que se cree la carpeta $name" read ruta done
● mkdir $ruta/$name● echo "ingrese el nombre del fichero donde se
almacenarán y del cual se realizará un compresión"● read fichero
● tar -cvf $ruta/$name/$fichero.tar $path/*● sudo apt-get install ncompress● compress -v $ruta/$fichero.tar $ruta/$name/$fichero.Z
● clear● echo "Se han creado los respaldos de $path"