programación en bash
DESCRIPTION
Introducción a la Programación en bashTRANSCRIPT
![Page 1: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/1.jpg)
#!/bin/bash
Rafael BucioUniversidad Politecnica de Chiapas
![Page 2: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/3.jpg)
Como encontrarlo ??
Aplicaciones → accesorios → Terminal
Tecleamos:
locate bashlocate bash
Para ser mas exactos:
which bashwhich bash
![Page 4: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/4.jpg)
¿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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/7.jpg)
HOLA MUNDOOOHOLA MUNDOOO
#!/bin/bash#!/bin/bash
echo ”Hola Mundo, cruel :'(”echo ”Hola Mundo, cruel :'(”
![Page 8: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/12.jpg)
SCRIPTSSCRIPTS
![Page 13: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/13.jpg)
VAR IABLESVAR IABLES
#!/bin/bash#!/bin/bash
nombrevariable=valornombrevariable=valor
![Page 14: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/14.jpg)
VAR IABLESVAR IABLES
#!/bin/bash#!/bin/bash
Nombrevariable=´comando´Nombrevariable=´comando´
![Page 15: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/15.jpg)
L LAMAR VAR IABLELLAMAR VAR IABLE
#!/bin/bash#!/bin/bash
nombrevariable=valornombrevariable=valor
$nombrevariable$nombrevariable
![Page 16: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/16.jpg)
L LAMAR VAR IABLELLAMAR VAR IABLE
#!/bin/bash#!/bin/bash
nombrevariable=valornombrevariable=valor
echo $nombrevariableecho $nombrevariable
![Page 17: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/20.jpg)
Condic ionesCondic iones
Operadores.Operadores.
![Page 21: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/30.jpg)
WHILE.WHILE.
while [ while [ condicióncondición ]; do ]; do
......
donedone
![Page 31: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/35.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/36.jpg)
GTK-DIALOGGTK-DIALOG
![Page 37: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/37.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/38.jpg)
¿Preguntas?¿Preguntas?
![Page 39: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/39.jpg)
![Page 40: Programación en Bash](https://reader034.vdocuments.mx/reader034/viewer/2022050723/5588fb20d8b42a321a8b4596/html5/thumbnails/40.jpg)
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/