Este documento proporciona información sobre scripts en Ubuntu. Explica qué es un script, los pasos para crear uno, incluyendo identificar el shell, agregar comandos y comentarios, y hacerlo ejecutable. También cubre variables, comandos condicionales como if/then/else y ejemplos de scripts condicionales como una calculadora básica y comparar números.
2. SCRIPTS EN ubuNTu
“Todo lo que necesitas saber acerca de un
Scripts ”
GRUPO 2
Vanessa Estefania Napa
Renato Diaz
Pablo Medina
3. ara modificar el estilo de Que es un Script?
texto del patrón
ivel
Un script es un tipo de lenguaje informático
vel interpretado, formado por lineas de texto ASCII,
nivel 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’.
4. 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.
5. 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.
6. 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
7. 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:
8. 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:
9. Comando echo
Es 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
10. 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 "LatvidatestBella"
El comando mostrará:
”La vida es Bella”
11. 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.
12. 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.
13. 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.
.
14. 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.
15. Pasos para la creación de un script
5. Agregar comandos y comentarios
6. Guardar el archivo script
EJEMPLO:
#!binbash
#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
16. 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
17. 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.
18. 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)
19. 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
20. 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.
21. 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 x >= y
que
-gt Mayor que x>y
-le Menor o igual x <= y
que
-lt Menor que x<y
-ne No es igual a x != y
22. 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
23. 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 éxito
then
ejecutar el/los comando(s)
else
ejecutar el/los comando(s)
fi
24. EJEMPLO (Calculadora Básica)
#!/bin/bash
echo "Ingrese el primer numero"
read x
echo "Ingrese el segundo numero"
read y
echo "¿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 ]
then
echo "La resta es: " $(($x - $y))
else
if [ $oper -eq 3 ]
then
echo "La multiplicacion es: " $(($x * $y))
else
echo "Invalido argumento"
fi
fi
fi
25. El Formato del Comando if-then-elif (else if)
(si-entonces-de lo contrario si):
if el comando tiene éxito
then
ejecutar el/los comando(s)
elif el comando tiene éxito
then
ejecutar el/los comando(s)
else
ejecutar el/los comando(s)
fi
26. EJEMPLO(Comparar dos numeros)
#!/bin/bash
echo " Digite el primer número"
read primero
echo "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
27. EJEMPLO (Montar una particion)
#!/bin/bash
echo "¿Desea montar una particion?. ¿S/n?"
read x
if [ $x = S ]
then
echo "Es necesario instalar el programa pysdm.¿desea instalarlo?.¿S/n? "
read y
if [ $y = S ]
then
sudo apt-get install pysdm
echo "Elprograma pysdm esta a punto de iniciar.."
sleep 3
echo "Utilice el entorno grafico para montar la particion"
sudo pysdm
echo "Saliendo del programa.."
sleep 3
echo "¿Desea reiniciar el sistema?. ¿S/n?"
read z
if [ $z = S ]
then
reboot
else
clear
exit
fi
else
exit
fi
else
exit
fi
28. 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
29. 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.
30. 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
31. 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/bash
echo "Diga si o no:"
read VAR
case "$VAR" in
si) 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.
32. 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/bash
echo "Diga si o no:"
read VAR
case "$VAR" in
si) 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.
33. 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.
34. 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.
35. 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
36. 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
37. 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 "
38. 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"
39. 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"
40. 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
41. Script5: Permite crear respaldos de un carpeta
deseada en un dirección ingreseda por el usuario.
●
#!/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
●
42.
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
43. ● 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"