Your SlideShare is downloading. ×
0
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Taller de Shell Scripting
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Taller de Shell Scripting

2,265

Published on

Minitaller de shell scripting para el 2do. Debian Day, Montevideo, Uruguay

Minitaller de shell scripting para el 2do. Debian Day, Montevideo, Uruguay

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,265
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
123
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Shell Scripting - Introducción Enrique Verdes SysAdmin UyLUG 2do. Debian Day
  • 2. Breve presentación: Quien es El G@llego? <ul><li>Programador por formación, SysAdmin por deformación. </li></ul><ul><li>Certificado LPIC-1. 10 años de experiencia usando Linux. </li></ul><ul><li>Socio fundador del UyLUG. </li></ul><ul><li>Miembro de varias asociaciones: Hispalinux, IEEE, Computer Society. </li></ul><ul><li>Profesor Adjunto de Administración de Sistemas GNU/Linux en la Universidad ORT. </li></ul>
  • 3. El shell interactivo <ul><li>El shell es un ambiente de programación capaz de automatizar casi cualquier cosa en su sistema Linux. </li></ul><ul><li>Una vez iniciado presenta un prompt ($ ó #) para indicar que está listo para recibir instrucciones por la entrada estándar (usualmente el teclado). </li></ul><ul><li>El shell de uso más común en Linux es bash , pero existen otros. </li></ul><ul><li>El shell puede ser cualquier aplicación de usuario. </li></ul>
  • 4. ¿Que nos ofrece el shell? <ul><li>El shell provee: </li></ul><ul><ul><li>Una interfase interactiva textual al sistema operativo. </li></ul></ul><ul><ul><li>Un ambiente operacional. </li></ul></ul><ul><ul><li>Facilidades para iniciar y administrar comandos y programas. </li></ul></ul><ul><ul><li>Un lenguaje de programación. </li></ul></ul>
  • 5. <ul><li>#!/bin/bash </li></ul><ul><li>clear </li></ul><ul><li>echo Hola Mundo </li></ul>Un script muy sencillo...
  • 6. <ul><li>#!/bin/bash </li></ul><ul><li>clear </li></ul><ul><li>SALUDO=&amp;quot;Hola Mundo&amp;quot; </li></ul><ul><li>echo $SALUDO </li></ul>... lo complicamos con variables
  • 7. Variables <ul><li>De ambiente : Variables globales. Son pasadas a todos los procesos iniciados por el shell, incluyendo otros shells. Esto significa que los procesos hijo heredan el ambiente. Por convención se expresan en mayúsculas. </li></ul><ul><li>De shell : Son variables locales. So específicas al shell corriente y no son heredadas por procesos hijo. En bash , las variables de shell pasan a ser de ambiente cuando son exportadas. </li></ul>
  • 8. Variables de ambiente <ul><li>Muchas de las variables son necesarias para la ejecución de programas. </li></ul><ul><li>Para que esas variables esten disponibles deben ser exportadas para convertirlas en variables de ambiente. </li></ul><ul><li>$ export MIVAR </li></ul><ul><li>Para listar las variables de ambiente: </li></ul><ul><li>$ env </li></ul>
  • 9. Un poquito mas complicado ... <ul><li>#!/bin/bash </li></ul><ul><li>HOLA=Hola </li></ul><ul><li>function hola { </li></ul><ul><ul><li>local HOLA=Mundo </li></ul></ul><ul><ul><li>echo $HOLA </li></ul></ul><ul><li>} </li></ul><ul><li>echo $HOLA </li></ul><ul><li>hola </li></ul><ul><li>echo $HOLA </li></ul>
  • 10. Ahora con sustitución de comandos. <ul><li>#!/bin/bash </li></ul><ul><li>HOLA=&amp;quot;Hola, hoy es el día $(date +%j) del año.&amp;quot; </li></ul><ul><li>echo $HOLA </li></ul>
  • 11. Estructuras condicionales if .. then <ul><li>#!/bin/bash </li></ul><ul><li>... </li></ul><ul><li>if [ !$# ]; then </li></ul><ul><ul><li>echo “Hay parametros” </li></ul></ul><ul><li>fi </li></ul><ul><li>... </li></ul>
  • 12. Condicional if .. then .. else <ul><li>#!/bin/bash </li></ul><ul><li>... </li></ul><ul><li>if [ $(whoami) = root ]; then </li></ul><ul><ul><li>return 0 </li></ul></ul><ul><li>else </li></ul><ul><ul><li>return 1 </li></ul></ul><ul><li>fi </li></ul><ul><li>... </li></ul>
  • 13. Condicional if .. then .. elif <ul><li>#!/bin/bash </li></ul><ul><li>... </li></ul><ul><li>if [ $USER = root ]; then </li></ul><ul><li>echo “El usuario es root” </li></ul><ul><li>elif [ $(whoami) = gallego ]; then </li></ul><ul><ul><li>echo “El usuario es El G@llego” </li></ul></ul><ul><li>else </li></ul><ul><ul><li>echo “Vos quien sos?” </li></ul></ul><ul><li>fi </li></ul><ul><li>... </li></ul>
  • 14. Ahora un ejemplo con argumentos. <ul><li>#!/bin/bash </li></ul><ul><li>FILE= $1 </li></ul><ul><li>if [ -f $FILE ]; then </li></ul><ul><ul><li>echo el archivo $FILE existe </li></ul></ul><ul><li>else </li></ul><ul><ul><li>echo archivo no encontrado </li></ul></ul><ul><li>fi </li></ul>
  • 15. Ciclos: for, while y until <ul><li>El for es distinto a los de otros lenguajes de programación. Básicamente, le permite iterar sobre una serie de `palabras&apos; contenidas dentro de una cadena. </li></ul><ul><li>El while ejecuta un trozo de código si la expresión de control es verdadera, y termina cuando es falsa (o se encuentra una interrupción explícita dentro del código en ejecución). </li></ul><ul><li>El until es casi idéntico al while , excepto en que el código se ejecuta mientras la expresión de control se evalúe como falsa. </li></ul>
  • 16. Ejemplo de for... <ul><li>#!/bin/bash </li></ul><ul><li>for i in $( ls ); do </li></ul><ul><ul><li>echo item: $i </li></ul></ul><ul><li>done </li></ul>
  • 17. Ejemplo de while... <ul><li>#!/bin/bash </li></ul><ul><li>CONTADOR=0 </li></ul><ul><li>while [ $CONTADOR -lt 10 ]; do </li></ul><ul><li>echo El contador es $CONTADOR </li></ul><ul><li>let CONTADOR=CONTADOR+1 </li></ul><ul><li>done </li></ul>
  • 18. Ejemplo de until... <ul><li>#!/bin/bash </li></ul><ul><li>CONTADOR=20 </li></ul><ul><li>until [ $CONTADOR -lt 10 ]; do </li></ul><ul><li>echo CONTADOR $CONTADOR </li></ul><ul><li>let CONTADOR-=1 </li></ul><ul><li>done </li></ul>
  • 19. La instrucción case... <ul><li>case $USER; in </li></ul><ul><li>root) </li></ul><ul><ul><li>echo “Usuario es root”;; </li></ul></ul><ul><li>gallego) </li></ul><ul><ul><li>echo “Usuario es el G@llego”;; </li></ul></ul><ul><li>*) </li></ul><ul><ul><li>echo “Y este quien es?”;; </li></ul></ul><ul><li>esac </li></ul>
  • 20. Un pequeño ejemplo. <ul><li>case &amp;quot;$1&amp;quot;; in </li></ul><ul><li>*start) </li></ul><ul><li>;; </li></ul><ul><li>*) </li></ul><ul><li>gprintf &amp;quot;Usage: %s &amp;quot; &amp;quot;$(basename $0) {start}&amp;quot; </li></ul><ul><li>exit 1 ;; </li></ul><ul><li>esac </li></ul>
  • 21. Ingresando información... <ul><li>#!/bin/bash </li></ul><ul><li>echo Por favor, introduzca su nombre: </li></ul><ul><li>read NOMBRE </li></ul><ul><li>echo &amp;quot;¡Hola $NOMBRE!&amp;quot; </li></ul>
  • 22. Uso de argumentos... <ul><li>$0 : Nombre del programa ó script. </li></ul><ul><li>$# : Cantidad de argumentos. </li></ul><ul><li>$1..$n : Argumentos según su posición en la línea de comandos. </li></ul><ul><li>$@ : Lista de argumentos. </li></ul><ul><li>$? : Resultado de la ejecución del ultimo comando. </li></ul><ul><li>$$ : PID del shell actual. </li></ul>
  • 23. Ejemplo de script con argumentos. <ul><li>#!/bin/bash </li></ul><ul><li>if [ $# -ne 1 ]; then </li></ul><ul><ul><li>echo uso: $0 archivo </li></ul></ul><ul><ul><li>exit 1 </li></ul></ul><ul><li>elif [ -f $1 ]; then </li></ul><ul><ul><li>echo el archivo $1 existe </li></ul></ul><ul><li>else </li></ul><ul><ul><li>echo archivo no encontrado </li></ul></ul><ul><li>fi </li></ul>
  • 24. Operadores de cadenas de texto <ul><li>[ s1 = s2 ]: s1 coincide con s2 </li></ul><ul><li>[ s1 != s2 ]: s1 no coincide con s2 </li></ul><ul><li>[ s1 &lt; s2 ]: s1 es alfabéticamente anterior a s2, con el locale actual </li></ul><ul><li>[ s1 &gt; s2 ]: s1 es alfabéticamente posterior a s2, con el locale actual </li></ul><ul><li>[ -n s1 ]: s1 no es nulo (contiene uno o más caracteres) </li></ul><ul><li>[ -z s1 ] : s1 es nulo </li></ul>
  • 25. Operadores aritmeticos <ul><li>+ (adición) </li></ul><ul><li>- (sustracción) </li></ul><ul><li>* (producto) </li></ul><ul><li>/ (división) </li></ul><ul><li>% (módulo) </li></ul><ul><li>** (exponenciación) </li></ul>
  • 26. Operadores relacionales aritmeticos <ul><li>[ a -lt b ] equivale a ((a &lt; b)) </li></ul><ul><li>[a -gt b ] equivale a ((a &gt; b)) </li></ul><ul><li>[a -le b ] equivale a ((a &lt;= b)) </li></ul><ul><li>[a -ge b ] equivale a ((a &gt;= b)) </li></ul><ul><li>[a -eq b ] equivale a ((a == b)) </li></ul><ul><li>[a -ne b ] equivale a ((a != b)) </li></ul>
  • 27. Operadores lógicos <ul><li>&amp;&amp; Y lógico (AND) </li></ul><ul><li>|| O lógico (OR) </li></ul>
  • 28. Operadores sobre archivos <ul><ul><li>d archivo : Verdadero si archivo existe y es un directorio </li></ul></ul><ul><ul><li>e archivo : Verdadero si archivo existe </li></ul></ul><ul><ul><li>f archivo : Verdadero si archivo existe y es un archivo común </li></ul></ul><ul><ul><li>L archivo : Verdadero si archivo existe y es un enlace simbólico </li></ul></ul><ul><ul><li>r archivo : Verdadero si archivo existe y puede leerse </li></ul></ul><ul><ul><li>s archivo : Verdadero si archivo existe y tiene tamaño mayor que 0 </li></ul></ul><ul><ul><li>w archivo : Verdadero si archivo existe y es escribible </li></ul></ul><ul><ul><li>x archivo : Verdadero si archivo existe y es ejecutable </li></ul></ul><ul><ul><li>arch1 -ot arch2 : Verdadero si arch1 es más viejo que arch2 </li></ul></ul>
  • 29. Algunos ejemplos prácticos <ul><li>Confección de Manual </li></ul><ul><li>Usuario que usa más espacio en disco </li></ul><ul><li>Archivos con bit SUID </li></ul>
  • 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 Documentación de Linux http://www.tldp.org

×