Scripts Bajo La Shell de Linux

23
Scripts bajo la shell de Linux Lina Mckoll Hernández

Transcript of Scripts Bajo La Shell de Linux

Page 1: Scripts Bajo La Shell de Linux

Scripts bajo la shell de Linux

Lina Mckoll Hernández

Page 2: Scripts Bajo La Shell de Linux

Qué es un script?

Un script es archivo ejecutable con una serie de ordenes que serán ejecutadas secuencialmente por un programa intérprete, que en este caso será la shell o interprete de comandos entre el usuario y el S.O

Page 3: Scripts Bajo La Shell de Linux

Cuál es el objetivo de in script?

Un script permite reunir una serie de comandos (utilidades) que podrían llegar a ser complicados incluyendo muchas opciones o parámetros y argumentos, presentándoselos al usuario como de una forma sencilla y de rápido acceso

Page 4: Scripts Bajo La Shell de Linux

Dónde crear un script?

Es necesario darle permisos de ejecución:

$ 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

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

Cómo ejecutar un script?

Page 5: Scripts Bajo La Shell de Linux

Variables

Una variable es una asignación 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 común, ya están definidas en el sistema. Para retornar su valor necesitamos anteponer el signo $. No usar caracteres especiales(¿,*, etc) Case sensitive.

Page 6: Scripts Bajo La Shell de Linux

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 años"

Page 7: Scripts Bajo La Shell de Linux

Escribiendo un script

No es necesario declarar las variables del sitema, también 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

Page 8: Scripts Bajo La Shell de Linux

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 Hernández

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 ´”

Page 9: Scripts Bajo La Shell de Linux

Pidiendo datos al usuario

En ocasiones es muy importante guardar ciertos parámetros dados por el usuario, en el siguiente script vemos cómo 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 número $num”

Page 10: Scripts Bajo La Shell de Linux

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

Page 11: Scripts Bajo La Shell de Linux

Aritmética 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 operación

VAR= `expr 6 + 3` # ejecuta la operación y guarda el resultado

#en VAR

VAR= `expr $NUM1 + 3` # ejecuta la operación, tomando uno de los #valores desde uma variables y guarda el resultado en VAR

Page 12: Scripts Bajo La Shell de Linux

Expresiones condicionales

Sentencia condicional if se utiliza para ejecutar unas u otras instrucciones, dependiendo de una condición. If [ condición es verdadera ] then hacer instrucciones else hacer otras instrucciones fi

Ejercicios: Scripts básicos para bash

Ejercicios: Scripts básicos para bash

Page 13: Scripts Bajo La Shell de Linux

Expresiones condicionales - IF

#!/bin/sh

# Script con condicional if #

echo “Ingrese un numero”

read num

echo “Usted es $USER y ha ingresado el número $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

Ejercicios: Scripts básicos para bash

Page 14: Scripts Bajo La Shell de Linux

Expresiones para los condicionales

Comparaciones aritméticas

-lt <

-gt >

-le <=

-ge >=

-eq ==

-ne !=

#!/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

Page 15: Scripts Bajo La Shell de Linux

Expresiones para los condicionales

Comparaciones de cadenas

#!/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

= equal

!= not equal

< less then

> greater then

-n s1 string s1 is not empty

-z s1 string s1 is empty

Page 16: Scripts Bajo La Shell de Linux

Expresiones para los condicionales Comparaciones de archivos Ver algunos en español en http://doc.ubuntu-es.org/Script

-b filename Block special file -L filename Symbolic link

-c filename Special character file -O filename True if file exists and is owned by the effective user id.

-d directoryname

Check for directory existence -r filename Check if file is a readable

-e filename Check for file existence -S filename Check if file is socket

-f filename Check for regular file existence not a directory

-s filename Check if file is nonzero size

-G filename Check if file exists and is owned by effective group ID.

-u filename Check if file set-ser-id bit is set

-g filename true if file exists and is set-group-id. -w filename Check if file is writable

-k filename Sticky bit -x filename Check if file is executable

Page 17: Scripts Bajo La Shell de Linux

Expresiones para los condicionales

Comparaciones de archivos

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

Tabla resumen

-e Verifica si el archivo existe

-d Verifica si el directorio existe

Page 18: Scripts Bajo La Shell de Linux

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

Page 19: Scripts Bajo La Shell de Linux

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

Page 20: Scripts Bajo La Shell de Linux

Ejercicios propuestos

1. Cree un script que sea interpretado por bash, que al ejecutarse busque entre sus directorios, todos los archivos, ordene los nombres alfabéticamente y le cree un archivo de texto con esta información. Ayuda: Puede emplear la opción -R de ls para listar subdirectorios, y la opción -u de sort.

2. La variable de ambiente HOME contiene el nombre de su directorio personal. Comprúebelo y después empleela para cambiarse a su directorio. Después cambie esta variable y explique que ocurre con el comodín '~'.

3. ¿Qué hace el comando echo `ls` ? (note que se usan apóstrofes invertidos).

Page 21: Scripts Bajo La Shell de Linux

Ejercicios propuestos 4. Qué hace la secuencia:

N=6

echo "'1+$N' = $((1+$N))"

Después de dar su respuesta, compruébela empleando un intérprete 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, añadir a tal variable la ruta /opt/bin y debe crear un alías que cuando se ejecute muestre el contenido de la variable PATH (no olvide cambiar el modo del archivo script2 generado para que sea ejecutable).

6. Escriba un sccript que cree sin intervención 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 también un script que elimine todo lo creado por el anterior script.

Page 22: Scripts Bajo La Shell de Linux

Ejercicios propuestos

6. Haga un script que después de ejecutarse pida al usuario 2 números y después presente la suma, la resta, el producto y la división.

7. Haga un script empleando condicional(s) if, para que se le pregunte a un usuario dos números para operarlos y que se le permita elegir que tipo de operación 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 : «Absténgase de hacer mal uso de los recursos, está siendo observado».

Page 23: Scripts Bajo La Shell de Linux

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/scripts-basicos-para-bash.html

http://www.freeos.com/guides/lsst/ch02sec02.html

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