Está en la página 1de 47

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Introduccin a Bash o
Aprenda Bash como si estuviera en primero Daniel Inostroza dinostro@alumnos.inf.utfsm.cl Charlas Tcnicas Departamento de Informtica e a

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Qu es un Shell e

El shell es un intrprete de comandos. e Pero tambin es un lenguaje. e El conjunto de comandos es un script. Un script sirve como pegamento de diversos comandos sencillos, que en conjunto son considerablemente poderosos.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Por qu aprender a programarlo 1/2 e

Te evita hacer tareas repetitivas. Es bueno conocerlo, algn dia resolver algn problema como u a u con los scripts en /etc/rc.d. Es fcil de aprender: a
Piensa qu quieres hacer. e

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Por qu aprender a programarlo 1/2 e

Te evita hacer tareas repetitivas. Es bueno conocerlo, algn dia resolver algn problema como u a u con los scripts en /etc/rc.d. Es fcil de aprender: a
Piensa qu quieres hacer. e Escr belo.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Por qu aprender a programarlo 1/2 e

Te evita hacer tareas repetitivas. Es bueno conocerlo, algn dia resolver algn problema como u a u con los scripts en /etc/rc.d. Es fcil de aprender: a
Piensa qu quieres hacer. e Escr belo. Rev salo.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Por qu aprender a programarlo 1/2 e

Te evita hacer tareas repetitivas. Es bueno conocerlo, algn dia resolver algn problema como u a u con los scripts en /etc/rc.d. Es fcil de aprender: a
Piensa qu quieres hacer. e Escr belo. Rev salo. Ahora ponlo todo en un archivo!!

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Por qu aprender a programarlo 2/2 e

Usualmente no tienes que debugear mucho, es como si vaciaras lo que har en el prompt de comandos, pero escrito as en un archivo. Es ideal para hacer algunos prototipos. Es muy *NIX.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

No se use en caso de...

Hacer matemticas intensas. a Requerir super portabilidad. Aplicaciones complejas. Requerir estructuras de datos elegantes. Crear aplicaciones propietarias (dif de ofuscar). cil

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Cmo creo un script o

Crea un archivo miscript.sh con tu editor de textos favorito.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Cmo creo un script o

1 2

Crea un archivo miscript.sh con tu editor de textos favorito. Dale permisos de ejecucin. o

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Cmo creo un script o

1 2 3

Crea un archivo miscript.sh con tu editor de textos favorito. Dale permisos de ejecucin. o Ejectalo. u

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Cmo creo un script o

1 2 3 4

Crea un archivo miscript.sh con tu editor de textos favorito. Dale permisos de ejecucin. o Ejectalo. u Listo!!

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Cmo creo un script o

1 2 3 4 5

Crea un archivo miscript.sh con tu editor de textos favorito. Dale permisos de ejecucin. o Ejectalo. u Listo!! En serio!!!

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Shell Cmo creo un script o

Ejemplo

Ejemplo #!/bin/bash echo "Hello world"

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Las variables no necesitan ser declaradas. Son dinmicas (no hay que alojar memoria). a Pueden contener tanto un string como el resultado de un comando.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Ejemplo
Ejemplo #!/bin/bash STR="Hello world" echo $STR FECHA=date +%Y%m%d echo $FECHA FECHA=$( date +%Y%m%d ) echo $FECHA

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Resultado

Ejemplo [dinostro@niplonia scripts]$ ./hello.sh Hello world 20070416 20070416

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Condicionales

Existen: if expresin then instruccin. o o if expresin then instruccin1 else instruccin2. o o o if expresin1 then instruccin1 elif expresin2 then o o o instruccin2 else instruccin3. o o

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

if expr then instr

Ejemplo #!/bin/bash if [ "foo" = "foo" ]; then echo "Cierto, foo es igual a foo" fi

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

if expr then instr1 else instr2

Ejemplo #!/bin/bash A=1 B=2 if [ "$A" = "$B" ]; then echo "A es igual a B" else echo "A no es igual a B" fi

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

if expr1 then instr1 elif expr2 then instr2 else instr3


Ejemplo #!/bin/bash A=1 B=2 if [ "$A" -gt "$B" ]; then echo "A es mayor que B" elif [ "$A" -lt "$B" ]; then echo "A es menor que B" else echo "A y B son iguales" fi

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Operadores aritmticos e

+: adicin. o -: sustraccin. o *: producto. /: divisin. o %: mdulo. o

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Operadores relacionales aritmticos e

-lt: Less Than. Menor que (). -gt: Greater Than. Mayor que (). -le: Less or Equal. Menor o igual (=). -ge: Greater or Equal. Mayor o igual (=). -eq: Equal. Igual (==). -ne: Not Equal. No igual (!=).

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Operadores de comparacin de cadenas o

s1 = s2: s1 coincide con s2. s1 != s2: s1 no coincide con s2. s1 s2: s1 es alfabticamente anterior a s2, con el locale e actual. s1 s2: s1 es alfabticamente posterior a s2, con el locale e actual. -n s1: s1 no es nulo. -z s1: s1 es nulo.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Ciclos

Existen: for while until

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

for 1/2

Ejemplo #!/bin/bash for i in ls; do echo item: $i done

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

for 2/2

Ejemplo #!/bin/bash for i in seq 1 10; do echo $i done

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

while

Ejemplo #!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do echo "El contador es $COUNTER" let COUNTER=COUNTER+1 done

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

until

Ejemplo #!/bin/bash COUNTER=20 until [ $COUNTER -lt 10 ]; do echo Contador $COUNTER let COUNTER-=1 done

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Funciones

Para hacer los programas ordenados. Para reusar cdigo. o Para ser recursivo.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Funciones
Ejemplo #!/bin/bash function quit { exit } function hello { echo "Hello world" } hello quit echo "Esto no lo alcanza a hacer"
Daniel Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Funciones con argumentos

Ejemplo #!/bin/bash function e { echo $1 } e "Hello" e "World"

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Variables Condicionales Operadores Ciclos Funciones Prompt

Utilizando la l nea de comandos


Ejemplo #!/bin/bash if [ -z "$1" ]; then echo "Uso: $0 directorio" exit fi SRCD=$1 TGTD="/var/backups/" OF=home-$(date +%Y%m%d).tar.gz tar -czf $TGTD$OF $SRCD

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Introduccin o Variable PS1 Variables ms comunes a

Introduccin o

Cada shell maneja sus propias variables. Estas variables se llaman Variables de Entorno. Un script en Bash hereda estas variables.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Introduccin o Variable PS1 Variables ms comunes a

Ejemplo

Ejemplo [dinostro@niplonia ~]$ echo $PATH /bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/opt/bin: /opt/gnome/bin:/opt/java/jre/bin:/opt/kde/bin: /opt/mozilla/bin:/opt/qt/bin

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Introduccin o Variable PS1 Variables ms comunes a

prompt
Algunos caracteres especiales de la variable PS1 \t: La Hora actual en formato HH : MM : SS. \d: La fecha en formato Dia de la semana Mes Fecha, como por ejemplo Mon Apr 16. \n: Salto de l nea. \s: Nombre del shell. \w: El directorio actual. \W: El nombre base del directorio actual. \u: Nombre de usuario. \h: Nombre de mquina. a
Daniel Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Introduccin o Variable PS1 Variables ms comunes a

Variables ms comunes a
PPID: Nmero de identicacin del proceso padre de la u o interfaz de comandos. PWD: Directorio de trabajo actual. OLDPWD: Anterior directorio de trabajo. UID: Nmero identicativo del usuario. u BASH VERSION: Nmero d versin de Bash. u o RANDOM: Cada vez que se invoca se obtiene un nmero u entero aleatorio. HOSTNAME: Nombre de la mquina. a PATH: La ruta de bsqueda de comandos. u HOME: Directorio ra del usuario actual. z
Daniel Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Expresiones Regulares

Comodines

* [] {}

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Expresiones Regulares

grep

Uso: grep str1 archivo1 archivo2 archivo3 ... Busca en archivo1, archivo2, archivo3, etc. las l neas que contengan el string str 1.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Expresiones Regulares

grep 1/3

Ejemplo [dinostro@niplonia ~]$ grep carta documentos Nos devuelve las l neas que contengan carta en el archivo documentos

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Expresiones Regulares

grep 2/3

Ejemplo [dinostro@niplonia ~]$ grep [Cc]arta documentos Nos devuelve las l neas que contengan carta o Carta en el archivo documentos

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Expresiones Regulares

grep 3/3

Ejemplo [dinostro@niplonia ~]$ grep ^[Cc]arta documentos Nos devuelve las l neas que empiezan con carta o Carta en el archivo documentos

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Expresiones Regulares

sed

Es un editor no interactivo. Se utiliza una serie de instrucciones de edicin. o Tambin se puede describir como un ltro. e

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Expresiones Regulares

sed

Ejemplo [dinostro@niplonia ~]$ sed -e s#hola#chao#g casa Cambia todos los hola por chao en el archivo casa.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Expresiones Regulares

awk

awk busca un patrn, y por cada patrn de bsqueda que coincida, o o u se realiza una accin. o

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Expresiones Regulares

awk

Ejemplo [dinostro@niplonia ~]$ awk /prueba/ {print} /tmp/lala Busca el patrn prueba y la accin que realiza cuando encuentra o o una l nea en /tmp/lala con la cadena prueba es print.

Daniel

Introduccin a Bash o

Introduccin o Bsico a Variables de Entorno Comandos utiles Fin

Preguntas

No hay preguntas.. Cierto?..

Daniel

Introduccin a Bash o

También podría gustarte