SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
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.

Mais conteúdo relacionado

Mais procurados

Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in LinuxAnu Chaudhry
 
Complete Guide for Linux shell programming
Complete Guide for Linux shell programmingComplete Guide for Linux shell programming
Complete Guide for Linux shell programmingsudhir singh yadav
 
Course 102: Lecture 5: File Handling Internals
Course 102: Lecture 5: File Handling Internals Course 102: Lecture 5: File Handling Internals
Course 102: Lecture 5: File Handling Internals Ahmed El-Arabawy
 
Intro to Linux Shell Scripting
Intro to Linux Shell ScriptingIntro to Linux Shell Scripting
Intro to Linux Shell Scriptingvceder
 
The linux file system structure
The linux file system structureThe linux file system structure
The linux file system structureTeja Bheemanapally
 
BASH Guide Summary
BASH Guide SummaryBASH Guide Summary
BASH Guide SummaryOhgyun Ahn
 
Course 102: Lecture 6: Seeking Help
Course 102: Lecture 6: Seeking HelpCourse 102: Lecture 6: Seeking Help
Course 102: Lecture 6: Seeking HelpAhmed El-Arabawy
 
Lesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File SystemLesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File SystemSadia Bashir
 
Bash Shell Scripting
Bash Shell ScriptingBash Shell Scripting
Bash Shell ScriptingRaghu nath
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basicsManav Prasad
 
Introduction to Linux
Introduction to Linux Introduction to Linux
Introduction to Linux Harish R
 
Course 102: Lecture 20: Networking In Linux (Basic Concepts)
Course 102: Lecture 20: Networking In Linux (Basic Concepts) Course 102: Lecture 20: Networking In Linux (Basic Concepts)
Course 102: Lecture 20: Networking In Linux (Basic Concepts) Ahmed El-Arabawy
 
Open save file vb6 program
Open save file vb6 programOpen save file vb6 program
Open save file vb6 programEclaro College
 

Mais procurados (20)

Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
 
Vi editor
Vi editorVi editor
Vi editor
 
Shellscripting
ShellscriptingShellscripting
Shellscripting
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in Linux
 
Complete Guide for Linux shell programming
Complete Guide for Linux shell programmingComplete Guide for Linux shell programming
Complete Guide for Linux shell programming
 
Course 102: Lecture 5: File Handling Internals
Course 102: Lecture 5: File Handling Internals Course 102: Lecture 5: File Handling Internals
Course 102: Lecture 5: File Handling Internals
 
Intro to Linux Shell Scripting
Intro to Linux Shell ScriptingIntro to Linux Shell Scripting
Intro to Linux Shell Scripting
 
Shell scripting
Shell scriptingShell scripting
Shell scripting
 
The linux file system structure
The linux file system structureThe linux file system structure
The linux file system structure
 
BASH Guide Summary
BASH Guide SummaryBASH Guide Summary
BASH Guide Summary
 
Course 102: Lecture 6: Seeking Help
Course 102: Lecture 6: Seeking HelpCourse 102: Lecture 6: Seeking Help
Course 102: Lecture 6: Seeking Help
 
Lesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File SystemLesson 2 Understanding Linux File System
Lesson 2 Understanding Linux File System
 
Bash Shell Scripting
Bash Shell ScriptingBash Shell Scripting
Bash Shell Scripting
 
SHELL PROGRAMMING
SHELL PROGRAMMINGSHELL PROGRAMMING
SHELL PROGRAMMING
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basics
 
Introduction to Linux
Introduction to Linux Introduction to Linux
Introduction to Linux
 
Course 102: Lecture 20: Networking In Linux (Basic Concepts)
Course 102: Lecture 20: Networking In Linux (Basic Concepts) Course 102: Lecture 20: Networking In Linux (Basic Concepts)
Course 102: Lecture 20: Networking In Linux (Basic Concepts)
 
Learn C Programming Language by Using GDB
Learn C Programming Language by Using GDBLearn C Programming Language by Using GDB
Learn C Programming Language by Using GDB
 
Open save file vb6 program
Open save file vb6 programOpen save file vb6 program
Open save file vb6 program
 
Linux systems - Linux Commands and Shell Scripting
Linux systems - Linux Commands and Shell ScriptingLinux systems - Linux Commands and Shell Scripting
Linux systems - Linux Commands and Shell Scripting
 

Destaque

Taller de Shell Scripting
Taller de Shell ScriptingTaller de Shell Scripting
Taller de Shell ScriptingEnrique Verdes
 
Diseño fisico
Diseño fisicoDiseño fisico
Diseño fisicoelylupita
 
Introducción a shell script
Introducción a shell scriptIntroducción a shell script
Introducción a shell scriptPablo Macon
 
Linux basico-8.PDF
Linux basico-8.PDFLinux basico-8.PDF
Linux basico-8.PDFULEAM
 
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 BashMauro Parra-Miranda
 
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 Rolapbrenda carolina
 
Primeros Programas Shell Script
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell ScriptPablo Macon
 
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 lejabamo
 
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-bashlluera
 
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 BASHUniversidad de Guayaquil
 
BI real time analytics
BI real time analyticsBI real time analytics
BI real time analyticsSolidQ
 
05 tutor lubricacion shell aceites-hidraulicos
05 tutor lubricacion shell   aceites-hidraulicos05 tutor lubricacion shell   aceites-hidraulicos
05 tutor lubricacion shell aceites-hidraulicosELAMAUTAREAL
 

Destaque (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
 
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
 
05 tutor lubricacion shell aceites-hidraulicos
05 tutor lubricacion shell   aceites-hidraulicos05 tutor lubricacion shell   aceites-hidraulicos
05 tutor lubricacion shell aceites-hidraulicos
 

Semelhante a The linux shell. Shell Scripting desde 0

Semelhante 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
 
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
 
MAnual de php básico
MAnual de php básicoMAnual de php básico
MAnual de php básico
 

Mais de Remigio Salvador Sánchez

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/linuxRemigio Salvador Sánchez
 
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 educadoresRemigio Salvador Sánchez
 
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/linuxRemigio Salvador Sánchez
 
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)Remigio Salvador Sánchez
 
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 propietarioRemigio Salvador Sánchez
 
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 libreRemigio Salvador Sánchez
 
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!Remigio Salvador Sánchez
 
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 libreRemigio Salvador Sánchez
 

Mais 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.