Taller de Shell Scripting
-
Upload
enrique-verdes -
Category
Technology
-
view
2.275 -
download
2
description
Transcript of Taller de Shell Scripting
- 1. Shell Scripting - Introduccin Enrique Verdes SysAdmin UyLUG 2do. Debian Day
2. Breve presentacin: Quien es El G@llego?
- Programador por formacin, SysAdmin por deformacin.
- Certificado LPIC-1. 10 aos de experiencia usando Linux.
- Socio fundador del UyLUG.
- Miembro de varias asociaciones: Hispalinux, IEEE, Computer Society.
- Profesor Adjunto de Administracin de Sistemas GNU/Linux en la Universidad ORT.
3. El shell interactivo
- El shell es un ambiente de programacin capaz de automatizar casi cualquier cosa en su sistema Linux.
- Una vez iniciado presenta unprompt($ #) para indicar que est listo para recibir instrucciones por laentrada estndar(usualmente el teclado).
- El shell de uso ms comn en Linux esbash , pero existen otros.
- El shell puede ser cualquier aplicacin de usuario.
4. Que nos ofrece el shell?
- El shell provee:
-
- Una interfase interactiva textual al sistema operativo.
-
- Un ambiente operacional.
-
- Facilidades para iniciar y administrar comandos y programas.
-
- Un lenguaje de programacin.
5.
- #!/bin/bash
- clear
- echo Hola Mundo
Un script muy sencillo... 6.
- #!/bin/bash
- clear
- SALUDO="Hola Mundo"
- echo $SALUDO
... lo complicamos con variables 7. Variables
- De ambiente : Variables globales. Son pasadas a todos los procesos iniciados por el shell, incluyendo otros shells. Esto significa que los procesos hijoheredanel ambiente. Por convencin se expresan en maysculas.
- De shell : Son variables locales. So especficas al shell corriente y no son heredadas por procesos hijo. Enbash , las variables de shell pasan a ser de ambiente cuando son exportadas.
8. Variables de ambiente
- Muchas de las variables son necesarias para la ejecucin de programas.
- Para que esas variables esten disponibles deben ser exportadas para convertirlas envariables de ambiente.
- $ export MIVAR
- Para listar las variables de ambiente:
- $ env
9. Un poquito mas complicado ...
- #!/bin/bash
- HOLA=Hola
- function hola {
-
- local HOLA=Mundo
-
- echo $HOLA
- }
- echo $HOLA
- hola
- echo $HOLA
10. Ahora con sustitucin de comandos.
- #!/bin/bash
- HOLA="Hola, hoy es el da $(date +%j) del ao."
- echo $HOLA
11. Estructuras condicionales if .. then
- #!/bin/bash
- ...
- if [ !$# ]; then
-
- echo Hay parametros
- fi
- ...
12. Condicional if .. then .. else
- #!/bin/bash
- ...
- if [ $(whoami) = root ]; then
-
- return 0
- else
-
- return 1
- fi
- ...
13. Condicional if .. then .. elif
- #!/bin/bash
- ...
- if [ $USER = root ]; then
- echo El usuario es root
- elif [ $(whoami) = gallego ]; then
-
- echo El usuario es El G@llego
- else
-
- echo Vos quien sos?
- fi
- ...
14. Ahora un ejemplo con argumentos.
- #!/bin/bash
- FILE= $1
- if [ -f $FILE ]; then
-
- echo el archivo $FILE existe
- else
-
- echo archivo no encontrado
- fi
15. Ciclos: for, while y until
- Elfores distinto a los de otros lenguajes de programacin. Bsicamente, le permite iterar sobre una serie de `palabras' contenidas dentro de una cadena.
- Elwhileejecuta un trozo de cdigo si la expresin de control es verdadera, y termina cuando es falsa (o se encuentra una interrupcin explcita dentro del cdigo en ejecucin).
- Eluntiles casi idntico alwhile , excepto en que el cdigo se ejecuta mientras la expresin de control se evale como falsa.
16. Ejemplo de for...
- #!/bin/bash
- for i in $( ls ); do
-
- echo item: $i
- done
17. Ejemplo de while...
- #!/bin/bash
- CONTADOR=0
- while [ $CONTADOR -lt 10 ]; do
- echo El contador es $CONTADOR
- let CONTADOR=CONTADOR+1
- done
18. Ejemplo de until...
- #!/bin/bash
- CONTADOR=20
- until [ $CONTADOR -lt 10 ]; do
- echo CONTADOR $CONTADOR
- let CONTADOR-=1
- done
19. La instruccin case...
- case $USER; in
- root)
-
- echo Usuario es root;;
- gallego)
-
- echo Usuario es el G@llego;;
- *)
-
- echo Y este quien es?;;
- esac
20. Un pequeo ejemplo.
- case "$1"; in
- *start)
- ;;
- *)
- gprintf "Usage: %s " "$(basename $0) {start}"
- exit 1 ;;
- esac
21. Ingresando informacin...
- #!/bin/bash
- echo Por favor, introduzca su nombre:
- read NOMBRE
- echo "Hola $NOMBRE!"
22. Uso de argumentos...
- $0 : Nombre del programa script.
- $# : Cantidad de argumentos.
- $1..$n : Argumentos segn su posicin en la lnea de comandos.
- $@ : Lista de argumentos.
- $? : Resultado de la ejecucin del ultimo comando.
- $$ : PID del shell actual.
23. Ejemplo de script con argumentos.
- #!/bin/bash
- if [ $# -ne 1 ]; then
-
- echo uso: $0 archivo
-
- exit 1
- elif [ -f $1 ]; then
-
- echo el archivo $1 existe
- else
-
- echo archivo no encontrado
- fi
24. Operadores de cadenas de texto
- [ s1 = s2 ]: s1 coincide con s2
- [ s1 != s2 ]: s1 no coincide con s2
- [ s1 < s2 ]: s1 es alfabticamente anterior a s2, con el locale actual
- [ s1 > s2 ]: s1 es alfabticamente posterior a s2, con el locale actual
- [ -n s1 ]: s1 no es nulo (contiene uno o ms caracteres)
- [ -z s1 ] : s1 es nulo
25. Operadores aritmeticos
- + (adicin)
- - (sustraccin)
- * (producto)
- / (divisin)
- % (mdulo)
- ** (exponenciacin)
26. Operadores relacionales aritmeticos
- [ a -lt b ] equivale a ((a < b))
- [a -gt b ] equivale a ((a > b))
- [a -le b ] equivale a ((a = b))
- [a -eq b ] equivale a ((a == b))
- [a -ne b ] equivale a ((a != b))
27. Operadores lgicos
- && Y lgico (AND)
- || O lgico (OR)
28. Operadores sobre archivos
-
- darchivo : Verdadero siarchivoexiste y es un directorio
-
- earchivo : Verdadero siarchivoexiste
-
- farchivo : Verdadero siarchivoexiste y es un archivo comn
-
- Larchivo : Verdadero siarchivoexiste y es un enlace simblico
-
- rarchivo : Verdadero siarchivoexiste y puede leerse
-
- sarchivo : Verdadero siarchivoexiste y tiene tamao mayor que 0
-
- warchivo : Verdadero siarchivoexiste y es escribible
-
- xarchivo : Verdadero siarchivoexiste y es ejecutable
-
- arch1-otarch2 : Verdadero siarch1es ms viejo quearch2
29. Algunos ejemplos prcticos
- Confeccin de Manual
- Usuario que usa ms espacio en disco
- Archivos con bit SUID
30. Para ampliar estos temas Bash Guide for Begginers - Matchtelt Garrels http://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html Visiten el Proyecto de Documentacin de Linux http://www.tldp.org