You are on page 1of 23

Scripts bajo la shell de Linux

Lina Mckoll Hernndez

Qu es un script?
Un script es archivo ejecutable con una serie de ordenes que sern ejecutadas secuencialmente por un programa intrprete, que en este caso ser la shell o interprete de comandos entre el usuario y el S.O

Cul es el objetivo de in script?


Un script permite reunir una serie de comandos (utilidades) que podran llegar a ser complicados incluyendo muchas opciones o parmetros y argumentos, presentndoselos al usuario como de una forma sencilla y de rpido acceso

Dnde crear un script?


Puede crearse en cualquier editor de texto plano, como vi u otro.

Cmo ejecutar un script?


Es necesario darle permisos de ejecucin: $ chmod +x your-script-name $ chmod 755 your-script-name $ chmod ugo+x ejemplo.sh syntax: $ bash your-script-name $ sh your-script-name $./your-script-name

Variables
Una variable es una asignacin en memoria donde podemos guardar y reescribir cualquier tipo de dato. Hay variables definidas por el programador y otras que, por ser de uso muy comn, ya estn definidas en el sistema. Para retornar su valor necesitamos anteponer el signo $. No usar caracteres especiales(,*, etc) Case sensitive.

Escribiendo un script
Las variables se definen as: Syntax: variable name=value #!/bin/sh # Ejemplo de uso de variables. VAR_1=Lina VAR_2=3 echo Mi nombre es $VAR_1 y tengo $VAR_2 aos"

Escribiendo un script
No es necesario declarar las variables del sitema, tambin llamadas variables de entorno. Algunas de ellas son: BASH, PWD, USER, UID #!/bin/sh # Ejemplo de uso de variables. clear echo Hola $USER , tu UID es $UID echo El calendario de este mes es cal exit 0

Uso de comillas
Comillas dobles: se usan para cadena de texto Comilla inclinada: permiten ejecutar el contenido y que su resultado sea devuelto. Comilla simple: permite ingnorar lo que est dentro, depende del contexto puede ejecutar comandos

#!/bin/sh # Ejemplo de uso de comillas Clear Yo=Lina Mckoll Hernndez echo Feliz dia a todos, les desea $Yo echo Hoy es ";date Fecha=date Echo Hoy es $Fecha Echo El contenido de esta carpeta es ls

Pidiendo datos al usuario


En ocasiones es muy importante guardar ciertos parmetros dados por el usuario, en el siguiente script vemos cmo hacerlo: #!/bin/sh # Script to print user information: # who currently login , current date & time # echo Ingrese por favor un numero read num echo Usted es $USER y ha ingresado el nmero $num

Aritmetica
Utilizar el comado expr
#!/bin/sh # Ejemplo de uso de variables. expr 1 + 3 #suma expr 2 1 # resta expr 10 / 2 #division expr 20 % 3 #residuo expr 10 \* 3 #multiplicacion

Aritmtica con variables


Utilizar el comado expr
#!/bin/sh # Ejemplo de uso de variables.
echo expr 6 + 3 # muestra cadena de texto echo `expr 6 + 3` # ejecuta la operacin VAR= `expr 6 + 3` # ejecuta la operacin y guarda el resultado #en VAR VAR= `expr $NUM1 + 3` # ejecuta la operacin, tomando uno de los #valores desde uma variables y guarda el resultado en VAR

Expresiones condicionales
Sentencia condicional if se utiliza para ejecutar unas u otras instrucciones, dependiendo de una condicin.
Ejercicios: Scripts bsicos para bash

If [ condicin es verdadera ] then hacer instrucciones else hacer otras instrucciones fi

Expresiones condicionales - IF
Ejercicios: Scripts bsicos para bash #!/bin/sh # Script con condicional if # echo Ingrese un numero read num echo Usted es $USER y ha ingresado el nmero $num If [ $num eq 10 ] then echo usted ingreso el numero 10 echo usted tiene permiso para continuar else echo usted ingreso un numero diferente de 10 echo usted no tiene permiso para continuar fi

Expresiones para los condicionales


Comparaciones aritmticas
-lt < #!/bin/bash # declare integers NUM1=2 NUM2=2 if [ $NUM1 -eq $NUM2 ] then echo "Both Values are equal" else echo "Values are NOT equal" fi

-gt
-le -ge -eq

>
<= >= ==

-ne

!=

Expresiones para los condicionales


Comparaciones de cadenas
= equal

!=
< > -n s1

not equal
less then greater then string s1 is not empty

-z s1

string s1 is empty

#!/bin/bash #Declare string S1 S1="Bash" #Declare string S2 S2="Scripting" if [ $S1 = $S2 ] then echo "Both Strings are equal" else echo "Strings are NOT equal" fi

Expresiones para los condicionales


Comparaciones de archivos
Ver algunos en espaol en http://doc.ubuntu-es.org/Script
-b filename
-c filename

Block special file


Special character file

-L filename
-O filename

Symbolic link
True if file exists and is owned by the effective user id.

-d Check for directory existence directoryname -e filename -f filename Check for file existence Check for regular file existence not a directory Check if file exists and is owned by effective group ID.

-r filename
-S filename -s filename

Check if file is a readable


Check if file is socket Check if file is nonzero size

-G filename

-u filename

Check if file set-ser-id bit is set

-g filename -k filename

true if file exists and is set-group-id. -w filename Sticky bit -x filename

Check if file is writable Check if file is executable

Expresiones para los condicionales


Comparaciones de archivos
Tabla resumen -e -d

Verifica si el archivo existe


Verifica si el directorio existe

#!/bin/bash if [ -e /carpeta/archivo ] then echo "File exists" else echo "File does not exists" fi

Sentencia for
Este bucle sirve para repetir un determinado numero de veces una o varias instrucciones. for variables in {inicio fin incremento} do instruccion1 instruccion2 done

Ejemplo de sentencia for


#!/bin/sh # Script con bucle for para mostrar 5 veces un mensaje # for i in {1..5..1} do echo hola, esta es la vez $i

done

Ejercicios propuestos
1. Cree un script que sea interpretado por bash, que al ejecutarse busque entre sus directorios, todos los archivos, ordene los nombres alfabticamente y le cree un archivo de texto con esta informacin. Ayuda: Puede emplear la opcin -R de ls para listar subdirectorios, y la opcin -u de sort. 2. La variable de ambiente HOME contiene el nombre de su directorio personal. Comprebelo y despus empleela para cambiarse a su directorio. Despus cambie esta variable y explique que ocurre con el comodn '~'. 3. Qu hace el comando echo `ls` ? (note que se usan apstrofes invertidos).

4. Qu hace la secuencia: N=6 echo "'1+$N' = $((1+$N))" Despus de dar su respuesta, comprubela empleando un intrprete de comandos.
5. Cree un script que al ser ejecutado, cree un archivo script2. El archivo script2 creado debe poner la variable PATH en el valor que tenga cuando el primer script sea ejecutado, aadir a tal variable la ruta /opt/bin y debe crear un alas que cuando se ejecute muestre el contenido de la variable PATH (no olvide cambiar el modo del archivo script2 generado para que sea ejecutable).

Ejercicios propuestos

6. Escriba un sccript que cree sin intervencin del ejecutante 50 usuarios: user1, user2, user3.user50. A cada uno le debe crear una carpeta llamada tareas, con un archivo dentro llamado listado. Cree tambin un script que elimine todo lo creado por el anterior script.

Ejercicios propuestos
6. Haga un script que despus de ejecutarse pida al usuario 2 nmeros y despus presente la suma, la resta, el producto y la divisin. 7. Haga un script empleando condicional(s) if, para que se le pregunte a un usuario dos nmeros para operarlos y que se le permita elegir que tipo de operacin quiere realizar (+,,*,%). 8. Cree un script que muestre un mensaje cada hora en todas las terminales o consolas que se tengan abiertas en el equipo. El mensaje debe decir : Abstngase de hacer mal uso de los recursos, est siendo observado.

Fuentes
Fuentes disponibles a Octubre de 2012 http://aurea.es/wp-content/uploads/scriptsenlinux.pdf http://linuxconfig.org/Bash_scripting_Tutorial http://structio.sourceforge.net/guias/AA_Linux_colegio/scriptsbasicos-para-bash.html http://www.freeos.com/guides/lsst/ch02sec02.html

http://www.cyberciti.biz/faq/bash-for-loop/

You might also like