40
#!/bin/bash Rafael Bucio Universidad Politecnica de Chiapas

Programación en Bash

Embed Size (px)

DESCRIPTION

Introducción a la Programación en bash

Citation preview

Page 1: Programación en Bash

#!/bin/bash

Rafael BucioUniversidad Politecnica de Chiapas

Page 2: Programación en Bash

Que es Bash ??

Bourne-Again SHell (otro shell bourne)

Haciendo un juego de palabras (born-again significa renacimiento)

Sobre el Bourne shell (sh) → que fue uno de los primeros intérpretes importantes de Unix.

Hacia 1978 el shell Bourne era el shell distribuido con el Unix Version 7.

Es un Interprete de comandos. no necesita compi lar :D

Page 3: Programación en Bash

Como encontrarlo ??

Aplicaciones → accesorios → Terminal

Tecleamos:

locate bashlocate bash

Para ser mas exactos:

which bashwhich bash

Page 4: Programación en Bash

¿Qué necesito?:¿Qué necesito?:

● Editor de texto, gedit, vim etc..Editor de texto, gedit, vim etc..

● Comandos Basicos Unix.Comandos Basicos Unix.

● Un poco de XMLUn poco de XML

Page 5: Programación en Bash

Comandos BasicosComandos Basicos

$ $ cdcd → → Cambiar el directorio de trabajo (change directory)Cambiar el directorio de trabajo (change directory)

$$ ls ls →→ Listar el contenido de directorios (list)Listar el contenido de directorios (list)

$$ mkdir mkdir →→ Crear un directorio (make directory) Crear un directorio (make directory)

$$ rmdir rmdir →→ Borrar un directorio (remove directory)Borrar un directorio (remove directory)

$ $ cp cp →→ Copiar un archivo o directorio en el directorio especificado (copy)Copiar un archivo o directorio en el directorio especificado (copy)

$$ mv mv →→ Mover un archivo o directorio a un archivo o directorio. Se utiliza también para renombrar; Mover un archivo o directorio a un archivo o directorio. Se utiliza también para renombrar; el origen y destino es un archivo (move)el origen y destino es un archivo (move)

$ $ rm rm →→ Borrar archivos o directorios (remove):Borrar archivos o directorios (remove):

$ cat $ cat →→ Mostrar por pantalla el contenido de los archivos por la salida estándar.Mostrar por pantalla el contenido de los archivos por la salida estándar.

$ find $ find →→ Buscar archivos recorriendo árboles de directorios especificados por las rutas.Buscar archivos recorriendo árboles de directorios especificados por las rutas.

$ pwd $ pwd →→ Mostrar el nombre del directorio en el que uno se encuentra situado Mostrar el nombre del directorio en el que uno se encuentra situado

$chmod $chmod →→ Cambiar los permisos de el archivo.Cambiar los permisos de el archivo.

$echo$echo → → Sacar por la salida standard (la pantalla) lo que se le pasa por parámetro, puede ser texto o Sacar por la salida standard (la pantalla) lo que se le pasa por parámetro, puede ser texto o una variable una variable

Page 6: Programación en Bash

Estructura.Estructura.

#!/bin/bash#!/bin/bash

##

# Esto es un comentario# Esto es un comentario

##

comandocomando

comandocomando

comandocomando

..........

#! Se conoce con el nombre de Sha Bang. /bin/bash Lo que vamos a usar ya sea bash o

perl (/usr/bin/perl)

Page 7: Programación en Bash

HOLA MUNDOOOHOLA MUNDOOO

#!/bin/bash#!/bin/bash

echo ”Hola Mundo, cruel :'(”echo ”Hola Mundo, cruel :'(”

Page 8: Programación en Bash

Cómo ejecutar.Cómo ejecutar.Primero damos permisos de ejecución

chmod +x script.sh

Ejecutamos

./script.sh

Page 9: Programación en Bash

RED I R REC IONESREDIRREC IONES

ls -l > ejemplols-l.txtls -l > ejemplols-l.txtEsto hará que la salida de un programa se Esto hará que la salida de un programa se

escriba en un fichero.escriba en un fichero.

stdout a un ficherostdout a un fichero

Page 10: Programación en Bash

TUBER ÍASTUBER ÍAS

Las tuberías le permiten utilizar la Las tuberías le permiten utilizar la salida de un programa como la salida de un programa como la entrada de otro.entrada de otro.

Page 11: Programación en Bash

TUBER ÍASTUBER ÍAS

ls -l ls -l || sed -e "s/[aeio]/u/g" sed -e "s/[aeio]/u/g"

enlista enlista || entuba en sed e imprime en entuba en sed e imprime en pantalla, todo con solo U =)pantalla, todo con solo U =)

Page 12: Programación en Bash

SCRIPTSSCRIPTS

Page 13: Programación en Bash

VAR IABLESVAR IABLES

#!/bin/bash#!/bin/bash

nombrevariable=valornombrevariable=valor

Page 14: Programación en Bash

VAR IABLESVAR IABLES

#!/bin/bash#!/bin/bash

Nombrevariable=´comando´Nombrevariable=´comando´

Page 15: Programación en Bash

L LAMAR VAR IABLELLAMAR VAR IABLE

#!/bin/bash#!/bin/bash

nombrevariable=valornombrevariable=valor

$nombrevariable$nombrevariable

Page 16: Programación en Bash

L LAMAR VAR IABLELLAMAR VAR IABLE

#!/bin/bash#!/bin/bash

nombrevariable=valornombrevariable=valor

echo $nombrevariableecho $nombrevariable

Page 17: Programación en Bash

VAR IABLES INTRODUCIDAS POR EL TECLADOVAR IABLES INTRODUCIDAS POR EL TECLADO

#!/bin/sh#!/bin/sh

echo ”hola como te llamas”echo ”hola como te llamas”

readread nombre nombre

Page 18: Programación en Bash

VAR IABLES INTRODUCIDAS POR EL TECLADOVAR IABLES INTRODUCIDAS POR EL TECLADO

#!/bin/sh#!/bin/sh

echo ”hola como te llamas”echo ”hola como te llamas”

read read nombrenombre

echo ”Hola echo ”Hola $nombre$nombre””

Page 19: Programación en Bash

COMANDO READCOMANDO READ

readread [opciones][opciones] nombre_variable1 nombre_variable1 nombre_variable2 nombre_variableNnombre_variable2 nombre_variableN

readread -p-p “Introduce el nombre y los “Introduce el nombre y los apellidos” nombre apellidosapellidos” nombre apellidos

Page 20: Programación en Bash

Condic ionesCondic iones

Operadores.Operadores.

Page 21: Programación en Bash

OPERADORES RELACIONALES AR I TMET ICOSOPERADORES RELACIONALES AR I TMET ICOS

-lt (<)-lt (<)

-gt (>)-gt (>)

-le (<=)-le (<=)

-ge (>=)-ge (>=)

-eq (==)-eq (==)

-ne (!=) -ne (!=)

Page 22: Programación en Bash

OPERADORES AR I TMET ICOSOPERADORES AR I TMET ICOS

+ (adición)+ (adición)

- (sustracción)- (sustracción)

* (producto)* (producto)

/ (división)/ (división)

% (módulo) % (módulo)

Page 23: Programación en Bash

CONDIC IONES, BUCLES, C ICLOS.CONDIC IONES, BUCLES, C ICLOS.

( If – Then )( If – Then )

( While )( While )

(UNTIL)(UNTIL)

( FOR )( FOR )

Page 24: Programación en Bash

I FI F

IfIf [condición] [condición]

thenthen

lista de comandoslista de comandos

elseelse

lista de comandos2lista de comandos2

fifi

Page 25: Programación en Bash

I FI F

#!/bin/bash#!/bin/bash

echo ' Adivina el valor numerico de la variable'echo ' Adivina el valor numerico de la variable'

read Aread A

if [ $A = 1 ]if [ $A = 1 ]

thenthen

echo 'Acertaste'echo 'Acertaste'

exit 0exit 0

fifi

echo 'No acertaste'echo 'No acertaste'

exitexit

Page 26: Programación en Bash

I F-ELSEIF-ELSE

#!/bin/bash#!/bin/bash

echo Cual es tu Edadecho Cual es tu Edad

read edadread edad

if [ $edad -ge 18 ]; thenif [ $edad -ge 18 ]; then

echo eres mayor de edadecho eres mayor de edad

elseelse

echo eres menor de edadecho eres menor de edad

fifi

Page 27: Programación en Bash

FORFOREl bucle for es distinto a los de otros lenguajes de El bucle for es distinto a los de otros lenguajes de

programación. Básicamente, le permite iterar sobre una programación. Básicamente, le permite iterar sobre una serie de `palabras' contenidas dentro de una cadena.serie de `palabras' contenidas dentro de una cadena.

Page 28: Programación en Bash

FORFOR

#!/bin/bash#!/bin/bash

for i in $( ls ); dofor i in $( ls ); do

echo item: $iecho item: $i

donedone

En la segunda línea declaramos i como la variable que recibirá los En la segunda línea declaramos i como la variable que recibirá los diferentes valores contenidos en $( ls ).diferentes valores contenidos en $( ls ).

'done' indica que el código que ha utilizado el valor de $i ha acabado e 'done' indica que el código que ha utilizado el valor de $i ha acabado e $i puede tomar el nuevo valor.$i puede tomar el nuevo valor.

Page 29: Programación en Bash

WHILEWHILEEl bucle while ejecuta un trozo de códico si la expresión de El bucle while ejecuta un trozo de códico si la expresión de

control es verdadera, y sólo se para cuando es falsa (o se control es verdadera, y sólo se para cuando es falsa (o se encuentra una interrupción explícita dentro del código en encuentra una interrupción explícita dentro del código en ejecución).ejecución).

Page 30: Programación en Bash

WHILE.WHILE.

while [ while [ condicióncondición ]; do ]; do

......

donedone

Page 31: Programación en Bash

UNT I LUNT I LEl bucle until es casi idéntico al bucle loop, excepto en que el El bucle until es casi idéntico al bucle loop, excepto en que el

código se ejecuta mientras la expresión de control se evalúe código se ejecuta mientras la expresión de control se evalúe como falsa.como falsa.

Page 32: Programación en Bash

UNTILUNTIL

#!/bin/bash #!/bin/bash

CONTADOR=20CONTADOR=20

until [ $CONTADOR -lt 10 ]; dountil [ $CONTADOR -lt 10 ]; do

echo CONTADOR $CONTADORecho CONTADOR $CONTADOR

let CONTADOR-=1let CONTADOR-=1

donedone

Page 33: Programación en Bash

FUNCIONESFUNCIONES

Como en casi todo lenguaje de programación, puede utilizar funciones Como en casi todo lenguaje de programación, puede utilizar funciones para agrupar trozos de código de una manera más lógica, o practicar para agrupar trozos de código de una manera más lógica, o practicar el divino arte de la recursión.el divino arte de la recursión.

function mi_func { mi_código }. function mi_func { mi_código }.

Page 34: Programación en Bash

FUNCIONESFUNCIONES 1 #!/bin/bash 1 #!/bin/bash

2 function salir {2 function salir {3 exit3 exit4 }4 }5 function hola {5 function hola {6 echo Hola6 echo Hola7 }7 }8 hola8 hola9 salir9 salir10 echo bushio 10 echo bushio

Primero se llama a la función 'hola', luego a la función 'quit', y el programa nunca llega a la línea 10.

Page 35: Programación en Bash

SELECTSELECT #!/bin/bash

OPCIONES="Hola Salir" select opt in $OPCIONES; do if [ "$opt" = "Salir" ]; then echo done exit elif [ "$opt" = "Hola" ]; then echo Hola Mundo else clear echo opción errónea fi done

El sueño de un programador para hacer menús basados en texto.

Muy simi lar a la construcción 'for ' , só lo que en vez de interar para cada 'palabra' en $OPCIONES, se lo pide al usuario .

Page 36: Programación en Bash

GTK-DIALOGGTK-DIALOG

Page 37: Programación en Bash

GTK-DIALOGGTK-DIALOG

● Texto Atributos. (texto_atributos.sh) Texto Atributos. (texto_atributos.sh)

● Archivos de Entrada. (input.sh)Archivos de Entrada. (input.sh)

● Button (button.sh)Button (button.sh)

● CheckBox (check.sh, Checkb.sh, Combobox.sh)CheckBox (check.sh, Checkb.sh, Combobox.sh)

● ProgressBar (progresobar.sh, progresobarter.sh, ProgressBar (progresobar.sh, progresobarter.sh, progresobartest.sh)progresobartest.sh)

● Menu (Menu.sh, Menuicon.sh, Choo.sh)Menu (Menu.sh, Menuicon.sh, Choo.sh)

● Notebook (notebook.sh)Notebook (notebook.sh)

Page 38: Programación en Bash

¿Preguntas?¿Preguntas?

Page 39: Programación en Bash
Page 40: Programación en Bash

Links:Links:http://bucio.com.mx/sobre/bash/http://bucio.com.mx/sobre/bash/

http://www.gnu.org/software/bash/manual/bashref.htmlhttp://www.gnu.org/software/bash/manual/bashref.html

http://www.linuxconfig.org/Bash_scripting_Tutorialhttp://www.linuxconfig.org/Bash_scripting_Tutorial

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.htmlhttp://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

http://bucio.com.mx/sobre/gtkdialog/http://bucio.com.mx/sobre/gtkdialog/