SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
The Linux Shell
Shell Scripting desde 0




                             Remigio Salvador Sánchez
remigio.salvador@gmail.com
¿Cómo es qué pueden llegar a ser tan
      anormales los humanos, siento la raza
      superior, el “animal más inteligente”?


                      ¿Quiénes son los
                        irracionales?




remigio.salvador@gmail.com
CONTENIDO:

                 ➢   Introducción
                 ➢   Nuestro primer script
                 ➢   Variables
                 ➢   Comandos del sistema
                 ➢   Estructuras condicionales
                 ➢   Ciclos
                 ➢   Ingresando datos
                 ➢   Operadores
                 ➢   Recomendaciones
                 ➢   Agradecimientos

remigio.salvador@gmail.com
INTRODUCCIÓN




 ●   El   shell    es   un    ambiente   de
     programación capaz de automatizar casi
     cualquier cosa en su sistema Linux.
 ●   El shell de uso más común en Linux es
     bash, pero existen otros (ksh, sh,
     entre otros)
INTRODUCCIÓN



 ●   El shell provee:
     –   Una interfase interactiva textual al
         sistema operativo.
     –   Un ambiente operacional.
     –   Facilidades para iniciar y
         administrar comandos y programas.
     –   Un lenguaje de programación.
INTRODUCCIÓN



 ●   Los scripts son archivos que contienen
     comandos a ser ejecutados por una
     shell.
 ●   Puede ser otro comando que pueda
     teclear a partir del prompt.
     - comando que invoque una utilidad
     - Un programa compilado
     - Otro script :)
INTRODUCCIÓN



 ●   Los scripts soportan varias
     características de programación como
     pueden ser: ciclos, variables,
     arreglos, funciones, etc.
 ●   Redirecciones de salida y entrada,
     PIPES, Expansiones, control de trabajo
     (jobs)
 ●   Comandos construidos de forma
     personalizada :)
NUESTRO PRIMER SCRIPT




  --- holaScript.sh ---
  #!/bin/bash
  clear
  echo Hola script
  --- holaScript.sh ---
VARIABLES

 ●   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.
 ●   De shell: Son variables locales. Son
     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.
VARIABLES


 ●   Muchas de las variables son necesarias
     para la ejecución de programas.
 ●   Para que esas variables esten
     disponibles deben ser exportadas para
     convertirlas en variables de ambiente.
 $ export MIVAR
 ●   Para listar las variables de ambiente:
 $ env
VARIABLES


  ●   $0 : Nombre del programa ó script.
  ●   $# : Cantidad de argumentos.
  ●   $1..$n : Argumentos según su posición
      en la línea de comandos.
  ●   $@ : Lista de argumentos.
  ●   $? : Resultado    de   la   ejecución   del
      ultimo comando.
  ●   $$ : PID del shell actual.
VARIABLES



 --- variables3.sh ---
 echo "Nombre del script: $0"
 echo "Número de argumentos: $#"
 echo "Lista de argumentos: $*"
 echo "PID del proceso actual: $$"
 echo "PID del proceso hijo: $!"
 --- vairables3.sh ---
COMANDOS DEL SISTEMA



 --- comando.sh ---
 #!/bin/bash
 HOLA="Hola, hoy es el día $(date +%j)
   del año."
 echo $HOLA
 --- comando.sh ---
Apostrofes y comillas


    Cuando   se   asignan  cadenas   de
  caracteres que contiene espacios o
  caracteres especiales, la cadena debe
  estar encerrada entre apostrofes o
  comillas
  El uso de comillas dentro de      una
  cadena de caracteres permitira    que
  cualquier variables dentro de     las
  comillassea interpretado
COMANDOS DEL SISTEMA



 --- comando.sh ---
 #!/bin/bash
 HOLA=”date +%j”
 echo $HOLA
 --- comando.sh ---
COMANDOS DEL SISTEMA



 --- comando.sh ---
 #!/bin/bash
 HOLA=`date +%j`
 echo $HOLA
 --- comando.sh ---
COMANDOS DEL SISTEMA



 --- variables.sh ---
 #!/bin/bash
 var=”test de cadenas”
 var2=”Valor de la variable es $var”
 echo $var2
 --- variables.sh ---
COMANDOS DEL SISTEMA



 --- variables.sh ---
 #!/bin/bash
 var='test de cadenas'
 var2='Valor de la variable es $var'
 echo $var2
 --- variables.sh ---
OPERADORES (CADENAS DE TEXTO)

 ●   [ s1 = s2 ]: s1 coincide con s2
 ●   [ s1 != s2 ]: s1 no coincide con s2
 ●   [ s1 < s2 ]: s1 es alfabéticamente
     anterior a s2, con el locale actual
 ●   [ s1 > s2 ]: s1 es alfabéticamente
     posterior a s2, con el locale actual
 ●   [ -n s1 ]: s1 no es nulo (contiene uno
     o más caracteres)
 ●   [ -z s1 ] : s1 es nulo
ESTRUCTURA CONDICIONALES


  --- si2.sh ---
  #!/bin/bash
  if [ $(whoami) = root ]; then
       echo “Hola ROOT”
  else
       echo “No eres root”
  fi
  --- si2.sh ---
ESTRUCTURA CONDICIONALES

 --- si3.sh ---
 #!/bin/bash
 if [ $USER = root ]; then
 echo “El usuario es root”
 elif [ $(whoami) = BugCon ]; then
      echo “El usuario es BugCon”
 else
      echo “quien eres”
 fi
 --- si3.sh ---
ESTRUCTURA CONDICIONALES


 --- archivo.sh ---
 #!/bin/bash
 if [ -f "BUGCON.TXT" ]; then
        echo el archivo existe
 else
        echo archivo no encontrado
 fi
 --- archivo.sh ---
INGRESANDO DATOS



 --- leer.sh ---
 #!/bin/bash
 echo Por favor, introduzca su nombre:
 read NOMBRE
 echo "¡Hola $NOMBRE!"
 --- leer.sh ---
OPERADORES (ARITMETICOS)



 ●   + (adición)
 ●   - (sustracción)
 ●   * (producto)
 ●   / (división)
 ●   % (módulo)
 ●   ** (exponenciación)
OPERADORES (RELACIONES ARITMETICAS)



 ●   [ a -lt b ] equivale a ((a < b))
 ●   [a -gt b ] equivale a ((a > b))
 ●   [a -le b ] equivale a ((a <= b))
 ●   [a -ge b ] equivale a ((a >= b))
 ●   [a -eq b ] equivale a ((a == b))
 ●   [a -ne b ] equivale a ((a != b))
OPERADORES (LOGICOS)



 ●   && Y lógico (AND)
 ●   || O lógico (OR)
OPERADORES (SOBRE ARCHIVOS)


–-d /ruta/archivo: Verdadero si archivo
existe y es un directorio
–-e /ruta/archivo: Verdadero si archivo
existe
–-f /ruta/archivo: Verdadero si archivo
existe y es un archivo común
–-l /ruta/archivo: Verdadero si archivo
existe y es un enlace suave
–-r /ruta/archivo: Verdadero si archivo
existe y puede leerse
OPERADORES (SOBRE ARCHIVOS)

 -s /ruta/archivo: Verdadero si      archivo
existe y tiene tamaño mayor que 0
–-w  /ruta/archivo: Verdadero   si   archivo
existe y es escribible
–-x  /ruta/archivo: Verdadero   si   archivo
existe y es ejecutable
arch1 -ot arch2: Verdadero si arch1 es más
viejo que arch2
CICLOS


●   El for es distinto a los de otros lenguajes
    de programación. Básicamente, le permite
    iterar sobre una serie de `palabras'
    contenidas dentro de una cadena.
CICLOS


●   El for es distinto a los de otros lenguajes
    de programación. Básicamente, le permite
    iterar sobre una serie de `palabras'
    contenidas dentro de una cadena.
●   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)
CICLOS


●   El for es distinto a los de otros lenguajes
    de programación. Básicamente, le permite
    iterar sobre una serie de “palabras”
    contenidas dentro de una cadena.
●   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).
●   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.
CICLOS


 --- contador.sh ---
 #!/bin/bash
 clear
 read -p "Introduce un numero: " numero
 for (( a=0; a<=$numero; a++ ))
  do
    echo "$a"
 done
 --- contador.sh ---
CICLOS


 --- mientras.sh ---
 #!/bin/bash
 CONTADOR=0
 while [ $CONTADOR -lt 10 ]; do
     echo El contador es $CONTADOR
     let CONTADOR=CONTADOR+1
 done
 --- mientras.sh ---
CICLOS


 --- until.sh ---
 #!/bin/bash
 CONTADOR=20
 until [ $CONTADOR -lt 10 ]; do
     echo CONTADOR $CONTADOR
     let CONTADOR-=1
 done
 --- until.sh ---
CICLOS
  --- caso.sh ---
  #!/bin/bash
  echo "Introduce un numero entre 1 y 5: "
  read num
  case $num in
         1) echo "El valor de num es 1.";;
         2) echo "El valor de num es 2.";;
         3) echo "El valor de num es 3.";;
         4) echo "El valor de num es 4.";;
         5) echo "El valor de num es 5.";;
         0|6) echo "NUMERO FUERA DE RANGO.";;
         *) echo "valor no reconocido";;
  esac
  --- caso.sh ---
EJERCICIO



     Script (ejercicio.sh) que haga:
 ●   Una carpeta (BUGCON)
 ●   Una serie de archivos (10 archivos)
     dentro de la carpeta BUGCON
 ●   Comprima la carpeta de BUGCON
 ●


 ●   PREMIO AL QUE LO REALICE :)
RECOMENDACIONES




 ●   ¡Lean!
RECOMENDACIONES




 ●   ¡Lean!
 ●   Crond + script
RECOMENDACIONES




 ●   ¡Lean!
 ●   Crond + script
 ●   Webmin + script
RECOMENDACIONES




 ●   ¡Lean!
 ●   Crond + script
 ●   Webmin + script
 ●   Script con Expect
AGRADECIMIENTOS




Gracias a ustedes por su atención
                 Y
      A los organizadores por
    todas facilidades prestadas
DEDICADO A:

  Mi familia,
    Alondra <3
y a amigos (B) xD
CONTACTO:



     Remigio Salvador Sánchez

            @remitos

    remigio.salvador@gmail.com
   remigio.salvador@hotmail.com

   http://vkn-side.blogspot.mx
FUENTES:



          Shell Scripting en Linux
           Roberto Gómez Cárdenas
              rogomez@itesm.mx
    http://homepage.cem.itesm.mx/rogomez

              Creación de script
           Documentos Aula SUN UCM
              de Software Libre
                Sergio Velasco
               Alicia Martín.
                  Mayo 2008.

Más contenido relacionado

La actualidad más candente

Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
Nathaniel Richand
 

La actualidad más candente (20)

점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정
 
En lenguaje natutal Programacion basica.pdf
En lenguaje natutal Programacion basica.pdfEn lenguaje natutal Programacion basica.pdf
En lenguaje natutal Programacion basica.pdf
 
Hybrid Apps with Angular & Ionic Framework
Hybrid Apps with Angular & Ionic FrameworkHybrid Apps with Angular & Ionic Framework
Hybrid Apps with Angular & Ionic Framework
 
Bash vs C Shell vs Korn Shell | Edureka
Bash vs C Shell vs Korn Shell | EdurekaBash vs C Shell vs Korn Shell | Edureka
Bash vs C Shell vs Korn Shell | Edureka
 
How I started to love design patterns
How I started to love design patternsHow I started to love design patterns
How I started to love design patterns
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 
Docker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityDocker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and security
 
What is Docker
What is DockerWhat is Docker
What is Docker
 
Web Development with Laravel 5
Web Development with Laravel 5Web Development with Laravel 5
Web Development with Laravel 5
 
Dockerfile
Dockerfile Dockerfile
Dockerfile
 
From Zero to Docker
From Zero to DockerFrom Zero to Docker
From Zero to Docker
 
Linux
LinuxLinux
Linux
 
Application Spring MVC/IOC & Hibernate
Application Spring MVC/IOC & HibernateApplication Spring MVC/IOC & Hibernate
Application Spring MVC/IOC & Hibernate
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to Maven
 
Spring aop
Spring aopSpring aop
Spring aop
 
Docker 101: An Introduction
Docker 101: An IntroductionDocker 101: An Introduction
Docker 101: An Introduction
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
 

Destacado

Diseño fisico
Diseño fisicoDiseño fisico
Diseño fisico
elylupita
 
Linux basico-8.PDF
Linux basico-8.PDFLinux basico-8.PDF
Linux basico-8.PDF
ULEAM
 
Conceptos básicos del shell
Conceptos básicos del shellConceptos básicos del shell
Conceptos básicos del shell
gschuldt23
 
Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.
Alan Resendiz
 
El shell-bash
El shell-bashEl shell-bash
El shell-bash
lluera
 

Destacado (20)

Taller de Shell Scripting
Taller de Shell ScriptingTaller de Shell Scripting
Taller de Shell Scripting
 
Sarid
SaridSarid
Sarid
 
Diseño fisico
Diseño fisicoDiseño fisico
Diseño fisico
 
Scripts
ScriptsScripts
Scripts
 
Introducción a shell script
Introducción a shell scriptIntroducción a shell script
Introducción a shell script
 
Linux basico-8.PDF
Linux basico-8.PDFLinux basico-8.PDF
Linux basico-8.PDF
 
Introducción a la programación en Bash
Introducción a la programación en BashIntroducción a la programación en Bash
Introducción a la programación en Bash
 
Los scripts de linux
Los scripts de linuxLos scripts de linux
Los scripts de linux
 
Conceptos básicos del shell
Conceptos básicos del shellConceptos básicos del shell
Conceptos básicos del shell
 
bash
bashbash
bash
 
Tareas 1- 4 Olap, Molap Y Rolap
Tareas 1- 4 Olap, Molap Y RolapTareas 1- 4 Olap, Molap Y Rolap
Tareas 1- 4 Olap, Molap Y Rolap
 
Curso Bash 1
Curso Bash 1Curso Bash 1
Curso Bash 1
 
Cubo
CuboCubo
Cubo
 
Primeros Programas Shell Script
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell Script
 
Taller # 1 bodegas de datos y olap
Taller # 1 bodegas de datos y olap Taller # 1 bodegas de datos y olap
Taller # 1 bodegas de datos y olap
 
Curso Bash 2
Curso Bash 2Curso Bash 2
Curso Bash 2
 
Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.
 
El shell-bash
El shell-bashEl shell-bash
El shell-bash
 
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASHCOMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
 
BI real time analytics
BI real time analyticsBI real time analytics
BI real time analytics
 

Similar a The linux shell. Shell Scripting desde 0

Quasi - scripts-linux
Quasi - scripts-linuxQuasi - scripts-linux
Quasi - scripts-linux
degarden
 
Script presentacion
Script presentacionScript presentacion
Script presentacion
Vanne Napa
 
Programacinenshell linux
Programacinenshell linuxProgramacinenshell linux
Programacinenshell linux
usupr2014
 
[ES] Administración básica de GNU / Linux
[ES] Administración básica de GNU / Linux[ES] Administración básica de GNU / Linux
[ES] Administración básica de GNU / Linux
Eudris Cabrera
 
6 la shell bash
6 la shell bash6 la shell bash
6 la shell bash
yimfer1
 

Similar a The linux shell. Shell Scripting desde 0 (20)

Agilidad en shell de linux
Agilidad en shell de linuxAgilidad en shell de linux
Agilidad en shell de linux
 
Shell script en linux
Shell script en linuxShell script en linux
Shell script en linux
 
Giseproi hacking ético - bash scripting
Giseproi   hacking ético - bash scriptingGiseproi   hacking ético - bash scripting
Giseproi hacking ético - bash scripting
 
Quasi - scripts-linux
Quasi - scripts-linuxQuasi - scripts-linux
Quasi - scripts-linux
 
Introduction to linux for bioinformatics
Introduction to linux for bioinformaticsIntroduction to linux for bioinformatics
Introduction to linux for bioinformatics
 
Script presentacion
Script presentacionScript presentacion
Script presentacion
 
Programacinenshell linux
Programacinenshell linuxProgramacinenshell linux
Programacinenshell linux
 
Linux Programacion en Shell
Linux Programacion en ShellLinux Programacion en Shell
Linux Programacion en Shell
 
Script Linux
Script LinuxScript Linux
Script Linux
 
Anonimo el libro hacker
Anonimo   el libro hackerAnonimo   el libro hacker
Anonimo el libro hacker
 
Script
ScriptScript
Script
 
Linux for bioinformatics
Linux for bioinformaticsLinux for bioinformatics
Linux for bioinformatics
 
Script Y Comandos De Linux
Script Y Comandos De LinuxScript Y Comandos De Linux
Script Y Comandos De Linux
 
[ES] Línea de Comandos GNU/Linux
[ES] Línea de Comandos GNU/Linux[ES] Línea de Comandos GNU/Linux
[ES] Línea de Comandos GNU/Linux
 
Sobreviviendo commando style
Sobreviviendo commando styleSobreviviendo commando style
Sobreviviendo commando style
 
Introduccion a php
Introduccion a phpIntroduccion a php
Introduccion a php
 
[ES] Administración básica de GNU / Linux
[ES] Administración básica de GNU / Linux[ES] Administración básica de GNU / Linux
[ES] Administración básica de GNU / Linux
 
6 la shell bash
6 la shell bash6 la shell bash
6 la shell bash
 
6 la shell bash
6 la shell bash6 la shell bash
6 la shell bash
 
6 la shell bash
6 la shell bash6 la shell bash
6 la shell bash
 

Más de Remigio Salvador Sánchez

Más de Remigio Salvador Sánchez (11)

Docker
DockerDocker
Docker
 
Taller de Instalación y configuración de gnu/linux
Taller de Instalación y configuración de gnu/linuxTaller de Instalación y configuración de gnu/linux
Taller de Instalación y configuración de gnu/linux
 
Software Libre. qué es y para qué
Software Libre. qué es y para quéSoftware Libre. qué es y para qué
Software Libre. qué es y para qué
 
Seguridad informática para niños, padres y educadores
Seguridad informática para niños, padres y educadoresSeguridad informática para niños, padres y educadores
Seguridad informática para niños, padres y educadores
 
Taller de Instalación, configuración y mantenimiento básico de gnu/linux
Taller de Instalación, configuración y mantenimiento básico de gnu/linuxTaller de Instalación, configuración y mantenimiento básico de gnu/linux
Taller de Instalación, configuración y mantenimiento básico de gnu/linux
 
Firewall Casero con gnu/linux (Ubuntu Server 14.04)
Firewall Casero con gnu/linux (Ubuntu Server 14.04)Firewall Casero con gnu/linux (Ubuntu Server 14.04)
Firewall Casero con gnu/linux (Ubuntu Server 14.04)
 
Alternativas de software libre frente al software propietario
Alternativas de software libre frente al software propietarioAlternativas de software libre frente al software propietario
Alternativas de software libre frente al software propietario
 
Desarrollo de firewall con herramientas de software libre
Desarrollo de firewall con herramientas de software libreDesarrollo de firewall con herramientas de software libre
Desarrollo de firewall con herramientas de software libre
 
Instalación y configuración de gnu/linux
Instalación y configuración de gnu/linuxInstalación y configuración de gnu/linux
Instalación y configuración de gnu/linux
 
Desarrollo rápido de páginas web con Joomla!
Desarrollo rápido de páginas web con Joomla!Desarrollo rápido de páginas web con Joomla!
Desarrollo rápido de páginas web con Joomla!
 
Diseño de un firewall con herramientas de software libre
Diseño de un firewall con herramientas de software libreDiseño de un firewall con herramientas de software libre
Diseño de un firewall con herramientas de software libre
 

The linux shell. Shell Scripting desde 0

  • 1. The Linux Shell Shell Scripting desde 0 Remigio Salvador Sánchez remigio.salvador@gmail.com
  • 2. ¿Cómo es qué pueden llegar a ser tan anormales los humanos, siento la raza superior, el “animal más inteligente”? ¿Quiénes son los irracionales? remigio.salvador@gmail.com
  • 3. CONTENIDO: ➢ Introducción ➢ Nuestro primer script ➢ Variables ➢ Comandos del sistema ➢ Estructuras condicionales ➢ Ciclos ➢ Ingresando datos ➢ Operadores ➢ Recomendaciones ➢ Agradecimientos remigio.salvador@gmail.com
  • 4. INTRODUCCIÓN ● El shell es un ambiente de programación capaz de automatizar casi cualquier cosa en su sistema Linux. ● El shell de uso más común en Linux es bash, pero existen otros (ksh, sh, entre otros)
  • 5. INTRODUCCIÓN ● El shell provee: – Una interfase interactiva textual al sistema operativo. – Un ambiente operacional. – Facilidades para iniciar y administrar comandos y programas. – Un lenguaje de programación.
  • 6. INTRODUCCIÓN ● Los scripts son archivos que contienen comandos a ser ejecutados por una shell. ● Puede ser otro comando que pueda teclear a partir del prompt. - comando que invoque una utilidad - Un programa compilado - Otro script :)
  • 7. INTRODUCCIÓN ● Los scripts soportan varias características de programación como pueden ser: ciclos, variables, arreglos, funciones, etc. ● Redirecciones de salida y entrada, PIPES, Expansiones, control de trabajo (jobs) ● Comandos construidos de forma personalizada :)
  • 8. NUESTRO PRIMER SCRIPT --- holaScript.sh --- #!/bin/bash clear echo Hola script --- holaScript.sh ---
  • 9. VARIABLES ● 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. ● De shell: Son variables locales. Son 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.
  • 10. VARIABLES ● Muchas de las variables son necesarias para la ejecución de programas. ● Para que esas variables esten disponibles deben ser exportadas para convertirlas en variables de ambiente. $ export MIVAR ● Para listar las variables de ambiente: $ env
  • 11. VARIABLES ● $0 : Nombre del programa ó script. ● $# : Cantidad de argumentos. ● $1..$n : Argumentos según su posición en la línea de comandos. ● $@ : Lista de argumentos. ● $? : Resultado de la ejecución del ultimo comando. ● $$ : PID del shell actual.
  • 12. VARIABLES --- variables3.sh --- echo "Nombre del script: $0" echo "Número de argumentos: $#" echo "Lista de argumentos: $*" echo "PID del proceso actual: $$" echo "PID del proceso hijo: $!" --- vairables3.sh ---
  • 13. COMANDOS DEL SISTEMA --- comando.sh --- #!/bin/bash HOLA="Hola, hoy es el día $(date +%j) del año." echo $HOLA --- comando.sh ---
  • 14. Apostrofes y comillas Cuando se asignan cadenas de caracteres que contiene espacios o caracteres especiales, la cadena debe estar encerrada entre apostrofes o comillas El uso de comillas dentro de una cadena de caracteres permitira que cualquier variables dentro de las comillassea interpretado
  • 15. COMANDOS DEL SISTEMA --- comando.sh --- #!/bin/bash HOLA=”date +%j” echo $HOLA --- comando.sh ---
  • 16. COMANDOS DEL SISTEMA --- comando.sh --- #!/bin/bash HOLA=`date +%j` echo $HOLA --- comando.sh ---
  • 17. COMANDOS DEL SISTEMA --- variables.sh --- #!/bin/bash var=”test de cadenas” var2=”Valor de la variable es $var” echo $var2 --- variables.sh ---
  • 18. COMANDOS DEL SISTEMA --- variables.sh --- #!/bin/bash var='test de cadenas' var2='Valor de la variable es $var' echo $var2 --- variables.sh ---
  • 19. OPERADORES (CADENAS DE TEXTO) ● [ s1 = s2 ]: s1 coincide con s2 ● [ s1 != s2 ]: s1 no coincide con s2 ● [ s1 < s2 ]: s1 es alfabéticamente anterior a s2, con el locale actual ● [ s1 > s2 ]: s1 es alfabéticamente posterior a s2, con el locale actual ● [ -n s1 ]: s1 no es nulo (contiene uno o más caracteres) ● [ -z s1 ] : s1 es nulo
  • 20. ESTRUCTURA CONDICIONALES --- si2.sh --- #!/bin/bash if [ $(whoami) = root ]; then echo “Hola ROOT” else echo “No eres root” fi --- si2.sh ---
  • 21. ESTRUCTURA CONDICIONALES --- si3.sh --- #!/bin/bash if [ $USER = root ]; then echo “El usuario es root” elif [ $(whoami) = BugCon ]; then echo “El usuario es BugCon” else echo “quien eres” fi --- si3.sh ---
  • 22. ESTRUCTURA CONDICIONALES --- archivo.sh --- #!/bin/bash if [ -f "BUGCON.TXT" ]; then echo el archivo existe else echo archivo no encontrado fi --- archivo.sh ---
  • 23. INGRESANDO DATOS --- leer.sh --- #!/bin/bash echo Por favor, introduzca su nombre: read NOMBRE echo "¡Hola $NOMBRE!" --- leer.sh ---
  • 24. OPERADORES (ARITMETICOS) ● + (adición) ● - (sustracción) ● * (producto) ● / (división) ● % (módulo) ● ** (exponenciación)
  • 25. OPERADORES (RELACIONES ARITMETICAS) ● [ a -lt b ] equivale a ((a < b)) ● [a -gt b ] equivale a ((a > b)) ● [a -le b ] equivale a ((a <= b)) ● [a -ge b ] equivale a ((a >= b)) ● [a -eq b ] equivale a ((a == b)) ● [a -ne b ] equivale a ((a != b))
  • 26. OPERADORES (LOGICOS) ● && Y lógico (AND) ● || O lógico (OR)
  • 27. OPERADORES (SOBRE ARCHIVOS) –-d /ruta/archivo: Verdadero si archivo existe y es un directorio –-e /ruta/archivo: Verdadero si archivo existe –-f /ruta/archivo: Verdadero si archivo existe y es un archivo común –-l /ruta/archivo: Verdadero si archivo existe y es un enlace suave –-r /ruta/archivo: Verdadero si archivo existe y puede leerse
  • 28. OPERADORES (SOBRE ARCHIVOS) -s /ruta/archivo: Verdadero si archivo existe y tiene tamaño mayor que 0 –-w /ruta/archivo: Verdadero si archivo existe y es escribible –-x /ruta/archivo: Verdadero si archivo existe y es ejecutable arch1 -ot arch2: Verdadero si arch1 es más viejo que arch2
  • 29. CICLOS ● El for es distinto a los de otros lenguajes de programación. Básicamente, le permite iterar sobre una serie de `palabras' contenidas dentro de una cadena.
  • 30. CICLOS ● El for es distinto a los de otros lenguajes de programación. Básicamente, le permite iterar sobre una serie de `palabras' contenidas dentro de una cadena. ● 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)
  • 31. CICLOS ● El for es distinto a los de otros lenguajes de programación. Básicamente, le permite iterar sobre una serie de “palabras” contenidas dentro de una cadena. ● 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). ● 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.
  • 32. CICLOS --- contador.sh --- #!/bin/bash clear read -p "Introduce un numero: " numero for (( a=0; a<=$numero; a++ )) do echo "$a" done --- contador.sh ---
  • 33. CICLOS --- mientras.sh --- #!/bin/bash CONTADOR=0 while [ $CONTADOR -lt 10 ]; do echo El contador es $CONTADOR let CONTADOR=CONTADOR+1 done --- mientras.sh ---
  • 34. CICLOS --- until.sh --- #!/bin/bash CONTADOR=20 until [ $CONTADOR -lt 10 ]; do echo CONTADOR $CONTADOR let CONTADOR-=1 done --- until.sh ---
  • 35. CICLOS --- caso.sh --- #!/bin/bash echo "Introduce un numero entre 1 y 5: " read num case $num in 1) echo "El valor de num es 1.";; 2) echo "El valor de num es 2.";; 3) echo "El valor de num es 3.";; 4) echo "El valor de num es 4.";; 5) echo "El valor de num es 5.";; 0|6) echo "NUMERO FUERA DE RANGO.";; *) echo "valor no reconocido";; esac --- caso.sh ---
  • 36. EJERCICIO Script (ejercicio.sh) que haga: ● Una carpeta (BUGCON) ● Una serie de archivos (10 archivos) dentro de la carpeta BUGCON ● Comprima la carpeta de BUGCON ● ● PREMIO AL QUE LO REALICE :)
  • 38. RECOMENDACIONES ● ¡Lean! ● Crond + script
  • 39. RECOMENDACIONES ● ¡Lean! ● Crond + script ● Webmin + script
  • 40. RECOMENDACIONES ● ¡Lean! ● Crond + script ● Webmin + script ● Script con Expect
  • 41. AGRADECIMIENTOS Gracias a ustedes por su atención Y A los organizadores por todas facilidades prestadas
  • 42. DEDICADO A: Mi familia, Alondra <3 y a amigos (B) xD
  • 43. CONTACTO: Remigio Salvador Sánchez @remitos remigio.salvador@gmail.com remigio.salvador@hotmail.com http://vkn-side.blogspot.mx
  • 44. FUENTES: Shell Scripting en Linux Roberto Gómez Cárdenas rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez Creación de script Documentos Aula SUN UCM de Software Libre Sergio Velasco Alicia Martín. Mayo 2008.