Scripts en Linux 01

download Scripts en Linux 01

of 66

Transcript of Scripts en Linux 01

  • 8/12/2019 Scripts en Linux 01

    1/66

    Scripts en linuxScripts en linux

    Implantacin de sistemas operativos.Implantacin de sistemas operativos.1 asir.1 asir.

    I.E.S. francisco romero Vargas.I.E.S. francisco romero Vargas.Jose Antonio carrasco Diaz.Jose Antonio carrasco Diaz.

  • 8/12/2019 Scripts en Linux 01

    2/66

    Nuestro primer scriptNuestro primer script

    mkdir ~scriptsnano ~scriptsprimer!script.s"

    #!/bin/bashecho Hola Mundo, mi primer script en Linu

    echo De momento no parece difcil el tema

    c"mod a#$ ~scriptsprimer!script.s"~scriptsprimer!script.s"cd ~scripts

    .primer!script.s"

  • 8/12/2019 Scripts en Linux 01

    3/66

    cd ~scriptsnano seg%ndo!script.s"

    #!/bin/bashecho o$ a contar cuantos scripts tenemos

    ls %&sh ' (c )l

    so%rce seg%ndo!script.s". seg%ndo!script.s"

    Usando sourceUsando source

  • 8/12/2019 Scripts en Linux 01

    4/66

    cd ~scriptsnano seg%ndo!script.s"

    #!/bin/bashecho o$ a contar cuantos scripts tenemos

    ls %&sh ' (c )l

    so%rce seg%ndo!script.s". seg%ndo!script.s"

    Usando sourceUsando source

  • 8/12/2019 Scripts en Linux 01

    5/66

    cd ~scriptsnano tercer!script!1.s"

    #!/bin/bashecho *enemos + ls %&sh ' (c )l " scripts

    c"mod a#$ tercer!script!1.s".tercer!script!1.s"

    Expansin de comandosExpansin de comandos

  • 8/12/2019 Scripts en Linux 01

    6/66

    cd ~scriptsnano tercer!script!&.s"

    #!/bin/bashecho )n *enemos

    echo )n + ls %&sh ' (c )l "echo scripts

    c"mod a#$ tercer!script!&.s".tercer!script!&.s"

    Expansin de comandosExpansin de comandos

  • 8/12/2019 Scripts en Linux 01

    7/66

    cd ~scriptsnano tercer!script!'.s"

    #!/bin/bash

    -.M012+ ls %&sh ' (c )l "echo *enemos +-.M01 scripts

    c"mod a#$ tercer!script!'.s".tercer!script!'.s"

    Expansin de comandosExpansin de comandos

  • 8/12/2019 Scripts en Linux 01

    8/66

    cd ~scriptsnano tercer!script!(.s"

    #!/bin/bashL3-42+ ls %&sh ' (c )l "

    L3-42*enemos +L3-4 scriptsecho +L3-4

    c"mod a#$ tercer!script!(.s".tercer!script!(.s"

    Expansin de comandosExpansin de comandos

  • 8/12/2019 Scripts en Linux 01

    9/66

    cd ~scriptsnano c%arto!script.s"

    #!/bin/bashecho Dime un n5mero

    read -.M01D16L2+ +-.M01 % 7 ""echo Has introducido +-.M01 $ su doble es

    c"mod a#$ c%arto!script.s"

    .c%arto!script.s"

    Expansin aritmticaExpansin aritmtica

  • 8/12/2019 Scripts en Linux 01

    10/66

    nano c%arto!script.s"

    #!/bin/bashclearecho Dime un n5mero

    read -.M01D16L2+8 +-.M01 % 7 9echo Has introducido +-.M01 $ su doble es

    Expansin aritmticaExpansin aritmtica

  • 8/12/2019 Scripts en Linux 01

    11/66

    nano )%into!script.s"

    #!/bin/bash:.-*4;6402-*2?

    :4D4;.-12+8 +:.-*4;640 / +>-* 9# Lnea de comentario# ste script no funciona bienecho :ada uno debemos pa@ar +:4D4;.-1

    Expansin aritmticaExpansin aritmtica

  • 8/12/2019 Scripts en Linux 01

    12/66

  • 8/12/2019 Scripts en Linux 01

    13/66

    cd ~scripts 9 mkdir fic"erosnano fic"erosnom,res.t$t

    -ombre/4pellidos/dad/-um;:ompras/3mporte;AacManuel/Buintanilla Auentes/C7/

  • 8/12/2019 Scripts en Linux 01

    14/66

    E>ercicio? -rear %n script llamado lista!clientes.s" )procese el fic"ero nom,res.t$t @ nos m%estre por psig%iente?

    L3J*4D1 D :L3-*J 10D-4D1J 10 -1M

    4na 6ienenido JancheKGuan 1rte@a 6ellidoManuel Buintanilla Auentesir@inia Machado Lorca

    Script secuencialScript secuencial

  • 8/12/2019 Scripts en Linux 01

    15/66

    lista!clientes.s"

    *+,in,as"clearec"o BIS0AD5 DE -BIE/0ES 5CDE/AD5S 5C /5

    ec"o GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGcat fic"erosnom,res.t$t ; sed Ge 1d H fic"erostemcat fic"erostemporal.t$t ; c%t Gd Gf1& ; sed Ge srm fic"erostemporal.t$t

    Script secuencialScript secuencial

  • 8/12/2019 Scripts en Linux 01

    16/66

    E>ercicio? -rear %n script llamado saldo.s" )%e mepantalla %n nom,re de cliente 7solo el nom,re= @ m%estre c%al es s% media fact%rada. 7Ba media seImporte Lact%rado dividido entre el /Mmero de -o

    D@ame el nombre de un cliente ir@iniaLa media facturada es de ??

  • 8/12/2019 Scripts en Linux 01

    17/66

    pasos para crear saldo.s".1=Bimpiar la pantalla&=edir )%e nos introd%zca el %s%ario %n nom,re mediante re'=F%scar la lNnea del fic"ero )%e tiene ese nom,re @ g%ardar

    en %n fic"ero temporal(=-ortar de ese fic"ero temporal el Importe 0otal Lact%rado @

    %na varia,leO=-ortar de ese fic"ero temporal el /%mero de compras @ g%a

    otra varia,leP=Dividir la varia,le del Importe 0otal Lact%rado entre la varia

    /%mero de compras 7esa divisin de,e "acerse con dos decg%ardar el res%ltado en %na varia,le.

    Q=ostrar por pantalla dic"a varia,le.

    Script secuencialScript secuencial

  • 8/12/2019 Scripts en Linux 01

    18/66

    *+,in,as"*saldo.s" Script )%e procesa fic"erosnom,res.t$tclearread Gp 8DNgame el nom,re de %n cliente ? 8 /5FCEcat fic"erosnom,res.t$t ; grep R6/5FCE H fic"erostem

    050AB67 cat fic"erostemporal.t$t ; c%t Gd GfO =/-5CAS67 cat fic"erostemporal.t$t ; c%t Gd Gf( =EDIA67ec"o scale&9 6050AB 6-5CAS ; ,c Gl=ec"o Ba media fact%rada es de 6EDIA e%ros.rm fic"erostemporal.t$t

    Script secuencialScript secuencial

  • 8/12/2019 Scripts en Linux 01

    19/66

    nano sal%do.s"

    *!/bin/bashfunction saludo

    echo Hola Mundo

    Necho o$ a saludarsaludoecho Oa he saludado

    Funciones en un script.Funciones en un script.

  • 8/12/2019 Scripts en Linux 01

    20/66

    temperat%ra.s"

    *!/bin/bashfunction cent;7;fah

    echo +8 +>04D1J % E / I P ?7 9

    N

    read p Dime los @rados centi@rados >04D1JA4H0-2+cent;7;fah"echo so son +A4H0- @rados en la escala Aahrenheit

    Funciones en un script.Funciones en un script.

  • 8/12/2019 Scripts en Linux 01

    21/66

    E>ercicio? -rear %n script con nom,re longit%d.s" pida por pantalla %na pala,ra @ de,e indicarnos contin%acin la longit%d de dic"a pala,ra.El script de,e repetir esto ' veces.

    *!/bin/bashfunction lon@itud & & & & & &

    Nread p Dime una palabra 4L4604

    &

    Funciones en un script.Funciones en un script.

  • 8/12/2019 Scripts en Linux 01

    22/66

    longit%d.s"#!/bin/bashfunction lon@itud -2+ echo +4L4604 ' (c c " -2+8 +- < 9 echo +-

    Nread p QDime una palabra Q 4L4604echo +lon@itud"read p QDime una palabra Q 4L4604echo +lon@itud"read p QDime una palabra Q 4L4604

    echo +lon@itud"

    Funciones en un script.Funciones en un script.

  • 8/12/2019 Scripts en Linux 01

    23/66

    Estr%ct%ra condicional IL 7sN ... entonces "az ...=

    if condicin T9 t"enFlo)%e a realizar si condicin se c%mple

    fi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    24/66

  • 8/12/2019 Scripts en Linux 01

    25/66

    ali,a,a.s"

    *!/bin/bashread p Dime la palabra secreta 4L4604if 8 +4L4604 2 abracadabra 9S then

    echo Mu$ bien, puedes pasarfi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    26/66

    Estr%ct%ra IL EBSE 7sN .. en caso contrario ..=

    if condicin T9 t"enFlo)%e a realizar si condicin se c%mple

    else

    Flo)%e a realizar si condicin no se c%mple fi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    27/66

    ali,a,a!&.s"

    *!/bin/bashread p Dime la palabra secreta 4L4604if 8 +4L4604 2 abracadabra 9S then

    echo Mu$ bien, puedes pasarelse

    echo sa no es la palabra secreta, fuerafi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    28/66

    cp ali,a,a!&.s" ali,a,a!'.s"nano ali,a,a!'.s"

    *!/bin/bash# cuidado con este error Tue es peli@roso

    read p Dime la palabra secreta 4L4604if 8 +4L460A=abracadabra 9S then

    echo Mu$ bien, puedes pasarelse

    echo sa no es, fuera

    fi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    29/66

  • 8/12/2019 Scripts en Linux 01

    30/66

    Numero1 -eqNumero2 Verdadero si son iguales (equal)

    Numero1 -neNumero2 Verdadero si NO son iguales (not eq

    Numero1 -lt Numero2 Verdadero si N1 menor que N2 (less

    Numero1-gtNumero2 Verdadero si N1 mayor que N2 (grea

    Numero1-leNumero2Verdadero si N1 es menor o igual quor equal)

    Numero1 -geNumero2Verdadero si N1 es mayor o igual qu

    (greater or equal)

    Operadores de comparacin numOperadores de comparacin num

  • 8/12/2019 Scripts en Linux 01

    31/66

    ma@or!edad.s"

    *!/bin/bashread p Dime tu edad D4Dif 8 +D4D @e

  • 8/12/2019 Scripts en Linux 01

    32/66

  • 8/12/2019 Scripts en Linux 01

    33/66

    compro,ar!edad.s"

    *!/bin/bashread p Dime tu edad D4Dif 8 +D4D lt

  • 8/12/2019 Scripts en Linux 01

    34/66

    Estr%ct%ra IL EBIL EBSE 7sN .. en caso contrario

    if condicin 1 T9 t"enFlo)%e a realizar si condicin 1 se c%mple

    elif condicin & T9 t"en

    Flo)%e a realizar si condicin 1 no se c%mplepero condicin & si se c%mple

    elseFlo)%e a realizar si ning%na condicin se c%m

    fi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    35/66

    compro,ar!edad.s"

    *!/bin/bashread p Dime tu edad D4Dif 8 +D4D lt

  • 8/12/2019 Scripts en Linux 01

    36/66

    -aichero Verdadero si ichero e!iste

    -dichero Verdadero si ichero e!iste y es un directorio

    -fichero Verdadero si ichero e!iste y es un ichero r

    -richero Verdadero si ichero e!iste y se "uede leer

    -wichero Verdadero si ichero e!iste y se "uede escri

    -xichero Verdadero si ichero e!iste y se "uede e#ecu

    ichero1 -ntichero2 Verdadero si ichero1 es mas nuevo que ic

    ichero1 -otichero2 Verdadero si ichero1 es mas antiguo que i

    Operadores test.Operadores test.

  • 8/12/2019 Scripts en Linux 01

    37/66

    E>ercicio? -rear %n script con nom,re cs.s" )%e nos va@%dar a crear scripts. -%ando se e>ec%te nos pedirK pantalla %n nom,re de script @ a contin%acin compe$iste %n fic"ero o directorio creado en el directorio acon ese mismo nom,re. Si es asN avisarK del error.Si no e$iste nada con ese nom,re crearK %n fic"ero c

    nom,re lo "arK e>ec%ta,le @ le aUadirK como primer *+,in,as" @ como seg%nda lNnea la sig%iente?

    * script nom,re generado el &22O&21(.

    Script con estructura alternaScript con estructura alterna

  • 8/12/2019 Scripts en Linux 01

    38/66

    odemos com,inar condiciones %sando 7W=

    if condicin 1 T condicin & T9 t"enFlo)%e a realizar si se c%mple tantocondicicomo condicin &

    fi

    if 6EDAD Gge 1X T 6EDAD Glt X2T9 t"enec"o %ede pasar

    fi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    39/66

    odemos com,inar condiciones %sando ;; 75=

    if condicin 1 T ;; condicin & T9 t"enFlo)%e a realizar si se c%mple condicin 1 Ose c%mple condicin & 7con )%e se c%mpla 1

    fi

    if 6EDAD Glt 1X T ;; 6EDAD Gge X2T9 t"enec"o /o tienes edad para pasar

    fi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    40/66

    odemos com,inar condiciones %sando ;; 75=

    if condicin 1 T ;; condicin & T9 t"enFlo)%e a realizar si se c%mple condicin 1 Ose c%mple condicin & 7con )%e se c%mpla 1

    fi

    if 6EDAD Glt 1X T ;; 6EDAD Gge X2T9 t"enec"o /o tienes edad para pasar

    fi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    41/66

    odemos negar condiciones %sando + 7not=

    If + condicin 1 T9 t"enFlo)%e a realizar si /5 se c%mple cond

    fi

    If + 6EDAD Gge 1X T9 t"enec"o /o tienes edad para pasar

    fi

    Estructuras condicionalesEstructuras condicionales

  • 8/12/2019 Scripts en Linux 01

    42/66

    Estr%ct%ra iterativa L5C 7por cada elemento "a

    for VACIAFBE in -5/J/059 doFlo)%e a realizar por cada elemento de con>

    varia,le va tomando los valores de cada ele done

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    43/66

    Estr%ct%ra iterativa L5C 7por cada elemento "a

    -5/J/05 es c%al)%ier com,inacin de valoreseparados por espacios en ,lanco o ,ien por re

    de lNnea.

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    44/66

    for VAB5C in 1( XQ YP perro gato9 doec"o VAB5C vale 6VAB5C

    done

    VAB5C vale 1(VAB5C vale XQVAB5C vale YPVAB5C vale perroVAB5C vale gato

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    45/66

    for VAB5C in 6-5/J/059 doec"o VAB5C vale 6VAB5C

    done

    ro,ar )%e res%ltados salen con los sig%ientecon>%ntos?

    -5/J/05:2 1 & ' ( O P Q X Y:-5/J/0567ls Z.s"=

    -5/J/0567cat fic"erosnom,res t$t=

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    46/66

    for VAB5C in 6-5/J/059 doec"o VAB5C vale 6VAB5C

    done

    ro,ar )%e res%ltados salen con los sig%ientecon>%ntos?

    -5/J/05:2 1 & ' ( O P Q X Y:-5/J/0567ls Z.s"=

    -5/J/0567cat fic"erosnom,res t$t=

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    47/66

    for VAB5C in 67se) &2=9 doec"o VAB5C vale 6VAB5C

    done

    for VAB5C in 67se) O 1O=9 do

    ec"o VAB5C vale 6VAB5Cdone

    for VAB5C in 67se) 1 & &2=9 doec"o VAB5C vale 6VAB5C

    done

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    48/66

    Estr%ct%ra iterativa ["ile 7mientras condicin "az

    ["ile condicin T9 doFlo)%e a realizar IE/0CAS la condicin se c

    done

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    49/66

  • 8/12/2019 Scripts en Linux 01

    50/66

    /1["ile / Gle 12 T9 do

    ec"o 6//6 6/ # 1 T

    done

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    51/66

    /1["ile / Gle 12 T9 do

    ec"o 6//6 6/ # 1 T

    done

    1 & ' ( O P Q X Y 12

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    52/66

    /1%ntil / Ggt 12 T9 do

    ec"o 6//6 6/ # 1 T

    done

    Estructuras iterativas. (buclEstructuras iterativas. (bucl

  • 8/12/2019 Scripts en Linux 01

    53/66

  • 8/12/2019 Scripts en Linux 01

    54/66

    Se le p%eden pasar parKmetros a %n script a la "oinvocarlo.

    &/mipro@rama&sh

  • 8/12/2019 Scripts en Linux 01

    55/66

    Vl d l l d

  • 8/12/2019 Scripts en Linux 01

    56/66

    E$iste %na varia,le especial 6\

    Esta varia,le valdrK 2 si el Mltimo comando e>ec%f%nciono ,ien.

    Si el Mltimo comando e>ec%tado dio algMn tipo de esta varia,le no valdrK 2. 7valdrK 1 o & o '.....=

    Valores devueltos por las orValores devueltos por las ord

    Vl d l l d

  • 8/12/2019 Scripts en Linux 01

    57/66

    *+,in,as"clearread Gp 8Dime %n nom,re de %s%ario ? 8 /5cat etcpass[d ; c%t Gc? Gf1 ; grep Gi 6/5 H de* A"ora preg%ntamos si el %ltimo comando 7grep

    if 6\ Ge) 2 T9 t"enec"o 6/5 es %n %s%ario del sistema

    elseec"o %s%ario desconocido en este sistema

    fi

    Valores devueltos por las orValores devueltos por las ord

    V RANDOMV iblRANDOM

  • 8/12/2019 Scripts en Linux 01

    58/66

    Ba varia,le 6CA/D5 nos dev%elve %n valoaleatorio entre 2 @ '&QPQ 7por defecto=.

    *+,in,as"ec"o vo@ a generar %n nMmero aletario entr

    /EC56 6CA/D5 ] P T* ] es %n operador aritm^tico )%e nos dev* resto de %na divisin 7md%lo=.ec"o 6/EC5

    Variable RANDOMVariable RANDOM

    C b l iC b l i

  • 8/12/2019 Scripts en Linux 01

    59/66

    *+,in,as"read Gp 8Dime %n nom,re de %s%ario ? 8 /5cat etcpass[d ; c%t Gc? Gf1 ; grep Gi 6/5 &H de* A"ora preg%ntamos si el %ltimo comando 7grepif 6\ Ge) 2 T9 t"en

    ec"o 6/5 es %n %s%ario del sistemaelse

    ec"o %s%ario desconocido en este sistemafi

    Comprobar un valor vaciComprobar un valor vaci

    C b l C b l

  • 8/12/2019 Scripts en Linux 01

    60/66

    *+,in,as"read Gp 8Dime %n nom,re de %s%ario ? 8 /5if 86/5: 8: T9 t"en

    ec"o /o "as escrito nadaelse

    Ec"o 4as escrito el nom,re 6/5fi

    Comprobar un valor vacComprobar un valor vac

    C b l C b l

  • 8/12/2019 Scripts en Linux 01

    61/66

    *+,in,as"BE0CA::["ile 86BE0CA: 8: T9 do

    read Gp 8Dime %na letra ? 8 BE0CAdone

    ec"o 4as introd%cido la letra 6BE0CA

    Comprobar un valor vacComprobar un valor vac

    C b l C b l

  • 8/12/2019 Scripts en Linux 01

    62/66

    *+,in,as"BE0CA:_:%ntil 86BE0CA: + 8: T9 do

    read Gp 8Dime %na letra ? 8 BE0CAdone

    ec"o 4as introd%cido la letra 6BE0CA

    Comprobar un valor vacComprobar un valor vac

    C b l C b l

  • 8/12/2019 Scripts en Linux 01

    63/66

    *+,in,as"SA2/: 8%ntil 86/: 8: T9 do

    read Gp 8Dime %n n%mero ? 8 /

    SA 6SA # 6/ Tdoneec"o Ba s%ma es 6SA

    Comprobar un valor vacComprobar un valor vac

    V iblIFSVariableIFS

  • 8/12/2019 Scripts en Linux 01

    64/66

    Bos con>%ntos del for separan s%s elementos por en ,lanco o por el retorno de lNnea estopro,lemas si tenemos espacios en ,lanco ecampos de %n fic"ero @ )%eremos leer dic"o flNneas.

    * Esto no va a f%ncionar como esperamosfor BI/EA in 67cat fic"erosnom,res.t$t=9 do

    ec"o Binea del fic"ero? 6BI/EAdone

    Variable IFSVariable IFS

    V iblIFSVariableIFS

  • 8/12/2019 Scripts en Linux 01

    65/66

    Ba varia,le ILS 7Internal Lield Separator= nocam,iar el limitador del con>%nto. El valor 6`n` dpermite separar solo por retornos de lNnea.

    * Esto f%nciona ,ien

    ILS6`n`for BI/EA in 67cat fic"erosnom,res.t$t=9 do

    ec"o Binea del fic"ero? 6BI/EAdone%nset ILS

    Variable IFSVariable IFS

    ScriptsenlinuxScriptsenlinux

  • 8/12/2019 Scripts en Linux 01

    66/66

    Scripts en linuxScripts en linux

    LI/LI/Implantacin de sistemas operativos.Implantacin de sistemas operativos.1 asir.1 asir.

    I.E.S. francisco romero Vargas.I.E.S. francisco romero Vargas.Jose Antonio carrasco Diaz.Jose Antonio carrasco Diaz.