SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
LINUX Básico


                   TAKASHI SUGASAWA




 LINUX Básico (8. Shells(3))          1
Programa del curso

   1.   Introducción a LINUX
   2.   Operación básica de LINUX
   3.   Operación de archivos y directorios
   4.   Editor vi
   5.   Comprensión del sistema de ficheros
   6.   Shells(1)
   7.   Shells(2)
   8.   Shells(3)
   9.   Otros comandos

                 LINUX Básico (8. Shells(3))   2
LINUX Básico
8. Shells(3)

                      Índice
    8.1   Introducción a scripts de shell
    8.2   Redacción de scripts de shell
    8.3   Programación con control
    8.4   Procesos de scripts de shell
    8.5   Ajuste del ambiente del shell

                LINUX Básico (8. Shells(3))   3
8.1 Introducción a scripts de shell
(1) Comprensión de los scripts de shell
 • Normalmente escribimos los comandos en la terminal
     usando el teclado.
 •   O sea los comandos pueden provenir de un archivo.
 •   Un script de shell es una colección de uno o más
     comandos de shell en un archivo.
 •   Para ejecutar los comandos en el script de shell, basta
     con escribir el nombre del archivo.
 •   Las ventajas de scripts de shell son que:
     –   No tiene que volver a escribir una secuencia de comandos.
     –   Determina los pasos para llevar a cabo un objeto una vez.
     –   Simplifica operaciones para usted mismo y para otros.



                         LINUX Básico (8. Shells(3))                 4
8.1(2) Un ejemplo de scripts de shell
 • Ahora vamos a crear un script de shell “donde” que
     ejecute 3 comandos “whoami”, “hostname”, “pwd” en
     secuencia.
  1. Primero, confirme que está en el su directorio base.
[usr000@linuxpc usr000]$ pwd
/home/usr000

  2. Inicie “vi” con el nombre del archivo, “vi donde”.
[usr000@linuxpc usr000]$ vi donde

  3. Escriba como siguiente en el “vi”.
whoami
hostname                               primero teclee “i”, después escriba el texto.
pwd
  4. Salga de “vi” guardando el archivo.          teclee “ESC”, “Z”, “Z”



                             LINUX Básico (8. Shells(3))                        5
5. Confirme el existencia el archivo y su contenido.
[usr000@linuxpc usr000]$ ls -l donde
-rw-rw-r--       1 usr000        usr000             20 sep 22 09:29 donde
[usr000@linuxpc usr000]$ cat donde
whoami
hostname
pwd

  6. Agregue el permiso de ejecución al archivo.
[usr000@linuxpc usr000]$ chmod +x donde
[usr000@linuxpc usr000]$ ls -l donde
-rwxrwxr-x       1 usr000      usr000            20 sep 22 09:29 donde

  7. Ejecute el archivo.
[usr000@linuxpc usr000]$ ./donde
usr000
linuxpc               el resultado del script de shell
/home/usr000

   Si no sale así, chequee el contenido o los permisos del archivo.



                              LINUX Básico (8. Shells(3))              6
8.1(3) Arranque de scripts de shell
• Podemos ejecutar un script de shell como sigue
  también.
              bash <nombre_de_script>
       [usr000@linuxpc[usr000@linuxpc usr000]$ ./donde
       usr000
       linuxpc
       /home/usr000                         igual
       [usr000@linuxpc usr000]$ bash donde
       usr000
       linuxpc
       /home/usr000


  En este caso, el permiso de ejecución no es necesario.
       [usr000@linuxpc   usr000]$ chmod -x donde
       [usr000@linuxpc   usr000]$ ls -l donde
       -rw-rw-r--    1   usr000   usr000         20 sep 22
       09:29 donde
       [usr000@linuxpc   usr000]$ bash donde
       usr000
       linuxpc
       /home/usr000

                         LINUX Básico (8. Shells(3))         7
• El shell tiene opciones que son convenientes en el
  caso de la depuración.
  -x: El shell sale cada comando (detrás de un “+”) a stderr
      antes de ejecutarlo.
  -v: El shell sale sus entradas a stderr al captar los.
  -n: El shell solamente pasa los comandos, no ejecuta los.

       [usr000@linuxpc usr000]$ bash -x donde
       + whoami
       usr000
       + hostname
       linuxpc
       + pwd
       /home/usr000
       [usr000@linuxpc usr000]$ bash -nv donde
       whoami
       hostname
       pwd




                       LINUX Básico (8. Shells(3))             8
8.1(4) Variedad de scripts de shell
• Cada shell (BASH, Shell Bourne, Shell C, tcsh, ...) tiene
  su manera de descripción de scripts.

    BASH es el shell derivado de Shell Bourne. Por eso, BASH
    puede ejecutar los scripts de Shell Bourne.
    En este curso, aprendemos scripts de BASH.




                       LINUX Básico (8. Shells(3))             9
8.2 Redacción de scripts de shell
(1) Selección de shell que se arranca
 • La descripción como sigue en la cabeza del script, selecciona el
    tipo del shell que se arranca.
                      #!/bin/bash
                                         nombre de ruta de acceso del shell


    Vamos a escribirlo como frase hecha, para definir el tipo del
    script de shell.
       [usr000@linuxpc usr000]$ cat donde2
       #!/bin/bash
       whoami
       hostname
       pwd

       [usr000@linuxpc usr000]$ ./donde2
       usr000
       linuxpc
       /home/usr000

                        LINUX Básico (8. Shells(3))                           10
8.2(2) Uso de comentarios
 • El signo “#” le indica al shell el principio de un comentario. Cada
     carácter a partir del signo “#” hasta el final de la línea es parte
     de ese comentario.
 •   El shell ignora los comentarios. Un comentario es una nota para
     usted mismo o para cualquiera que lea el script.

        [usr000@linuxpc usr000]$ cat donde3
        #!/bin/bash

        # Esto es un comentario.
        whoami    # Esto es un comentario también.
        hostname
        pwd

        [usr000@linuxpc usr000]$ ./donde3
        usr000
        linuxpc
        /home/usr000




                          LINUX Básico (8. Shells(3))                      11
8.2(3) Uso de variables
 • Variables son disponibles en scripts de shell: podemos asignar
   un valor a un variable y acceder el valor guardad en la variable.

     [usr000@linuxpc usr000]$ cat donde4
     #!/bin/bash

     # "donde4": una prueba de script de shell

     variable1=`whoami`                       Asignación del valor al variable
     variable2=`hostname`:`pwd`

     echo "Su nombre del usuario es $variable1."
     echo "Ahora usted está en $variable2."

                                                      Sustitución del variable

     [usr000@linuxpc usr000]$ ./donde4
     Su nombre del usuario es usr000.
     Ahora usted está en linuxpc:/home/usr000.

                       LINUX Básico (8. Shells(3))                               12
8.2(4) Uso del comando “read”
 • El comando “read” toma la siguiente línea de entrada y la
   asigna a una variable.
[usr000@linuxpc usr000]$ cat quien
#!/bin/bash

# "quien": Presenta quién es el usuario de su selección.
           Suprime aparte
echo   -n "Nombre del usuario: "
read   usuario   Nombre de un variable
grep   $usuario /home/copropiedad/cuenta.txt
               Sustitución del variable


[usr000@linuxpc usr000]$ ./quien
Nombre del usuario: usr000   Entrar de la teclado (+[Enter])
usr000 Sugasawa Takashi



                            LINUX Básico (8. Shells(3))        13
8.2(5) Uso del parámetros de línea de comando
 • Podemos consultar los parámetros de línea de comando con los
   variables $1, $2, ..., $9.
[usr000@linuxpc usr000]$ cat quien2
#!/bin/bash

# "quien2": Presenta quién es el usuario de su selección.
          Primer parámetro
grep $1 /home/copropiedad/cuenta.txt

                                                      Esto es necesario.
[usr000@linuxpc usr000]$ ./quien2 usr000
usr000 Sugasawa Takashi
                               $0     $1

                  $0: El nombre del comando.
                  $*: Todos los parámetros.
                  $#: El número de parámetros.

                        LINUX Básico (8. Shells(3))                        14
8.3 Programación con control
(1) Uso de la estructura if
 • “if comando then ... else ... fi” es una estructura de decisión que
    le permite seleccionar uno de dos cursos de acción basados en el
    resultado de un comando.

      if comando
                                            Si el resultado del
      then                                  comando es 0, ...
           ...
                                                 Todos los programas tienen
      else                         Si no, ...    su valor de resultado.
           ...                                   Generalmente el valor 0
      fi                                         representa el estado de
                                                 salida del programa con
                                                 éxito.
   El estado de salida del comando ejecutado últimamente, se
   puede saber con el variable "$?".

                        LINUX Básico (8. Shells(3))                           15
(40) test Regresa un estado de salida de cero cuando
          lo que se probó fue cierto.
          (ej.) test -f FILE1
                test $variable1 = STR1
                test $variable2 -lt 10

-f FILE         cierto si existe el fichero FILE y es regular.
-d FILE         cierto si el fichero FILE es un directorio.
STR1 = STR2     cierto si la cadena STR1 es igual a la cadena STR2.
STR1 != STR2             no es igual
INT1 -eq INT2   cierto si el número INT1 es igual al número INT2.
INT1 -ne INT2            no es igual
INT1 -gt INT2            mayor que
INT1 -ge INT2            mayor que o igual
INT1 -lt INT2            menor que
INT1 -le INT2            menor que o igual
                          LINUX Básico (8. Shells(3))                 16
[usr000@linuxpc usr000]$ cat quien3
#!/bin/bash

# "quien3": Presenta quién es el usuario de su selección.
            El número de parámetros.
if test $# -ge 1      Si el número de parámetros es mayor o igual que 1, ...
then
          grep $1 /home/copropiedad/cuenta.txt
else
          echo   -n "Nombre del usuario: "
          read   usuario
          grep   $usuario /home/copropiedad/cuenta.txt
fi

[usr000@linuxpc usr000]$ ./quien3 usr000
usr000 Sugasawa Takashi

[usr000@linuxpc usr000]$ ./quien3
Nombre del usuario: usr000
usr000 Sugasawa Takashi




                           LINUX Básico (8. Shells(3))                         17
8.3(2) Uso de la estructura for
 • “for nombre in palabras do... done” es una estructura iterativa.
Un nombre del variable    (ej.) $*
                                *.txt
                                a ab abc abcd
                                `seq 1 10`


             for i in $* Todos los parámetros.
             do
                  ...        por ejemplo,
                   $i        si hay 3 palabras,
                  ...        se repite 3 veces.

             done      Podemos acceder cada palabra así.




                         LINUX Básico (8. Shells(3))                  18
[usr000@linuxpc usr000]$ cat quien4
#!/bin/bash
# "quien4": Presenta quién es el usuario de su selección.
if test $# -ge 1
then
        for i in $*
        do
                grep $i /home/copropiedad/cuenta.txt
        done
else
        echo -n "Nombre del usuario: "
        read usuario
        grep $usuario /home/copropiedad/cuenta.txt
fi

[usr000@linuxpc usr000]$ ./quien4
Nombre del usuario: usr000
usr000 Sugasawa Takashi
[usr000@linuxpc usr000]$ ./quien4 usr000
usr000 Sugasawa Takashi
[usr000@linuxpc usr000]$ ./quien4 usr000 usr001
usr000 Sugasawa Takashi
usr001 Acosta Alonzo Jessica Elizabeth
                    LINUX Básico (8. Shells(3))         19
8.4 Procesos de scripts de shell
 Aquí hay un script de shell ...
 [usr000@linuxpc 8vo]$ cat ej_cd
 #!/bin/bash
 # "cd" en el script de shell
 echo -n "pwd: "
 pwd
 echo "cd /:"
 cd /              En el script de shell, se ejecuta el comando "cd".
 echo -n "pwd: "
 pwd

 [usr000@linuxpc 8vo]$ pwd                 Antes de ejecutar el script
 /home/usr000/8vo
                                               En el script, se ejecuta el
 [usr000@linuxpc 8vo]$ ./ej_cd
 pwd: /home/usr000/8vo                         comando "cd", y ciertamente
 cd /:                                         se ha cambiado el directorio
 pwd: /                                        de trabajo actual.

 [usr000@linuxpc 8vo]$ pwd                después de ejecutar el script
 /home/usr000/8vo                         pero, no se ha cambiado...
                         LINUX Básico (8. Shells(3))                          20
• Normalmente el script de shell se ejecuta en el otro
    proceso.
•   Las operaciones en el una proceso no ejercen
    influencia sobre otros procesos.
                    Proceso de
                    Shell
                                                Proceso de
                                                otro shell
                              ./ej_cd

           espera                                      cd /




                         LINUX Básico (8. Shells(3))          21
• Utilizando el comando "source", se ejecuta el script de
  shell en el mismo proceso.
    [usr000@linuxpc 8vo]$ pwd                          ". ej_cd" también tiene
    /home/usr000/8vo                                        mismo efecto.
    [usr000@linuxpc 8vo]$ source ej_cd
    pwd: /home/usr000/8vo
    cd /:
    pwd: /
                                                            Proceso de
    [usr000@linuxpc /]$ pwd                                 Shell
    /

       Esta vez, se ha cambiado el        source ej_cd
       directorio de trabajo actual.
                                                               cd /




                         LINUX Básico (8. Shells(3))                        22
8.5 Ajuste del ambiente del shell
 • Los cambios del ambiente del shell (umask, variables)
     no tienen su efecto después de la terminación del
     proceso. Al registrarse la próxima vez, tenemos que
     hacerlos otra vez.
 •   Podemos escribirlos en el archivo “.bashrc” en el
     directorio base, que el bash ejecuta automáticamente
     al iniciar.
     [usr001@linuxpc usr001]$ ls -a ~
     . .. .bash_history .bash_logout           .bash_profile          .bashrc
     .gtkrc


                       Al hacer logout, se ejecuta.

                                       Al hacer login, se ejecutan.

                                                  Cuando el bash inicia como un
                                                   shell interactivo, se ejecuta.

                        LINUX Básico (8. Shells(3))                                 23
Ejemplo de “.bashrc”
[usr001@linuxpc ~]$ cat ~/.bashrc
# .bashrc

# User specific aliases and functions

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

umask 022                      Asigna el valor del umask.
PS1="[u@h w]$ "            Cambia el formato del indicador del shell.
alias ll='ls -l'
                                Definen alias del comando
alias la='ls -a'

  Los cambios van a tener su efecto, cuando se inicia el shell la
  próxima vez.
  Tenemos que chequear el archivo antes de rehacer Login.

                       LINUX Básico (8. Shells(3))                          24
¡ Muchas gracias por su atención !
        ¡ Hasta pronto !




           LINUX Básico (8. Shells(3))   25

Más contenido relacionado

La actualidad más candente

La actualidad más candente (16)

GUIA 9 PHP
GUIA 9 PHPGUIA 9 PHP
GUIA 9 PHP
 
Guía PHP
Guía PHPGuía PHP
Guía PHP
 
Capitulo Nº9 - Archivos
Capitulo Nº9 - ArchivosCapitulo Nº9 - Archivos
Capitulo Nº9 - Archivos
 
Linux basico-7.PDF
Linux basico-7.PDFLinux basico-7.PDF
Linux basico-7.PDF
 
Anonimo el libro hacker
Anonimo   el libro hackerAnonimo   el libro hacker
Anonimo el libro hacker
 
Cap 9
Cap 9Cap 9
Cap 9
 
14 11-16
14 11-1614 11-16
14 11-16
 
5 11 armeli simonetti capitulo 9
5 11 armeli simonetti capitulo 95 11 armeli simonetti capitulo 9
5 11 armeli simonetti capitulo 9
 
Permisos de archivos
Permisos de archivosPermisos de archivos
Permisos de archivos
 
Permisos de linux
Permisos de linuxPermisos de linux
Permisos de linux
 
Permisos de archivos completo
Permisos de archivos completoPermisos de archivos completo
Permisos de archivos completo
 
Permisos de archivos
Permisos de archivosPermisos de archivos
Permisos de archivos
 
Taller de Shell Scripting
Taller de Shell ScriptingTaller de Shell Scripting
Taller de Shell Scripting
 
Evadiendo antivirus - uso de crypters
Evadiendo antivirus - uso de cryptersEvadiendo antivirus - uso de crypters
Evadiendo antivirus - uso de crypters
 
The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0
 
6 la shell bash
6 la shell bash6 la shell bash
6 la shell bash
 

Destacado

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
 
Conceptos básicos del shell
Conceptos básicos del shellConceptos básicos del shell
Conceptos básicos del shellgschuldt23
 
Primeros Programas Shell Script
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell ScriptPablo Macon
 
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
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in LinuxAnu Chaudhry
 
Programación en Bash
Programación en BashProgramación en Bash
Programación en BashRafael Bucio
 

Destacado (12)

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
 
Conceptos básicos del shell
Conceptos básicos del shellConceptos básicos del shell
Conceptos básicos del shell
 
bash
bashbash
bash
 
Curso Bash 1
Curso Bash 1Curso Bash 1
Curso Bash 1
 
Primeros Programas Shell Script
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell Script
 
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
 
Shell programming
Shell programmingShell programming
Shell programming
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in Linux
 
Programación en Bash
Programación en BashProgramación en Bash
Programación en Bash
 

Similar a Linux basico-8.PDF

Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDFULEAM
 
Introduction to linux for bioinformatics
Introduction to linux for bioinformaticsIntroduction to linux for bioinformatics
Introduction to linux for bioinformaticsAlberto Labarga
 
Linux for bioinformatics
Linux for bioinformaticsLinux for bioinformatics
Linux for bioinformaticscursoNGS
 
Administración básica de ubuntu server parte 3
Administración básica de ubuntu server   parte 3Administración básica de ubuntu server   parte 3
Administración básica de ubuntu server parte 3Santiago Márquez Solís
 
Curso GNU/Linux
Curso GNU/LinuxCurso GNU/Linux
Curso GNU/Linuxcorchero83
 
Unidad 9 - Instalación y configuración Linux
Unidad 9 - Instalación y configuración LinuxUnidad 9 - Instalación y configuración Linux
Unidad 9 - Instalación y configuración Linuxvverdu
 
Introducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXIntroducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXJose Pla
 
40 Comandos básicos de Linux.docx
40 Comandos básicos de Linux.docx40 Comandos básicos de Linux.docx
40 Comandos básicos de Linux.docxGladys648508
 
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]RootedCON
 

Similar a Linux basico-8.PDF (20)

Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDF
 
Introduction to linux for bioinformatics
Introduction to linux for bioinformaticsIntroduction to linux for bioinformatics
Introduction to linux for bioinformatics
 
Linux Programacion en Shell
Linux Programacion en ShellLinux Programacion en Shell
Linux Programacion en Shell
 
arquitectura-de-linux
arquitectura-de-linuxarquitectura-de-linux
arquitectura-de-linux
 
Linux for bioinformatics
Linux for bioinformaticsLinux for bioinformatics
Linux for bioinformatics
 
Curso-Taller GNU-Linux Dia2
Curso-Taller GNU-Linux Dia2Curso-Taller GNU-Linux Dia2
Curso-Taller GNU-Linux Dia2
 
Linux básico
Linux básicoLinux básico
Linux básico
 
Unix 1314 test
Unix 1314 testUnix 1314 test
Unix 1314 test
 
Administración básica de ubuntu server parte 3
Administración básica de ubuntu server   parte 3Administración básica de ubuntu server   parte 3
Administración básica de ubuntu server parte 3
 
Scripts
ScriptsScripts
Scripts
 
Comandos
ComandosComandos
Comandos
 
Curso GNU/Linux
Curso GNU/LinuxCurso GNU/Linux
Curso GNU/Linux
 
17 comandos basicoslinuxasoitson
17 comandos basicoslinuxasoitson17 comandos basicoslinuxasoitson
17 comandos basicoslinuxasoitson
 
Unidad 9 - Instalación y configuración Linux
Unidad 9 - Instalación y configuración LinuxUnidad 9 - Instalación y configuración Linux
Unidad 9 - Instalación y configuración Linux
 
Manual linux
Manual linuxManual linux
Manual linux
 
Agilidad en shell de linux
Agilidad en shell de linuxAgilidad en shell de linux
Agilidad en shell de linux
 
Introducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXIntroducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUX
 
40 Comandos básicos de Linux.docx
40 Comandos básicos de Linux.docx40 Comandos básicos de Linux.docx
40 Comandos básicos de Linux.docx
 
Curso básico linux
Curso básico linuxCurso básico linux
Curso básico linux
 
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
 

Más de ULEAM

Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_JessSistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_JessULEAM
 
capitulo5-2011-110612183514-phpapp01
capitulo5-2011-110612183514-phpapp01capitulo5-2011-110612183514-phpapp01
capitulo5-2011-110612183514-phpapp01ULEAM
 
CAPITULO-2-2011
CAPITULO-2-2011CAPITULO-2-2011
CAPITULO-2-2011ULEAM
 
CAP-3
CAP-3CAP-3
CAP-3ULEAM
 
Linux basico-5.PDF
Linux basico-5.PDFLinux basico-5.PDF
Linux basico-5.PDFULEAM
 
Linux basico-3.PDF
Linux basico-3.PDFLinux basico-3.PDF
Linux basico-3.PDFULEAM
 
Linux basico-1.PDF
Linux basico-1.PDFLinux basico-1.PDF
Linux basico-1.PDFULEAM
 
Linux basico-2.PDF
Linux basico-2.PDFLinux basico-2.PDF
Linux basico-2.PDFULEAM
 
Linux basico-4.PDF
Linux basico-4.PDFLinux basico-4.PDF
Linux basico-4.PDFULEAM
 
UBUNTU-1
UBUNTU-1UBUNTU-1
UBUNTU-1ULEAM
 
Capitulo 1
Capitulo 1Capitulo 1
Capitulo 1ULEAM
 
Instalación de Ubuntu
Instalación de UbuntuInstalación de Ubuntu
Instalación de UbuntuULEAM
 
Manual de kicad
Manual de kicadManual de kicad
Manual de kicadULEAM
 
Manual de python
Manual de pythonManual de python
Manual de pythonULEAM
 
Manual de bouml
Manual de boumlManual de bouml
Manual de boumlULEAM
 

Más de ULEAM (16)

Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_JessSistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
 
capitulo5-2011-110612183514-phpapp01
capitulo5-2011-110612183514-phpapp01capitulo5-2011-110612183514-phpapp01
capitulo5-2011-110612183514-phpapp01
 
CAPITULO-2-2011
CAPITULO-2-2011CAPITULO-2-2011
CAPITULO-2-2011
 
CAP-3
CAP-3CAP-3
CAP-3
 
Linux basico-5.PDF
Linux basico-5.PDFLinux basico-5.PDF
Linux basico-5.PDF
 
Linux basico-3.PDF
Linux basico-3.PDFLinux basico-3.PDF
Linux basico-3.PDF
 
Linux basico-1.PDF
Linux basico-1.PDFLinux basico-1.PDF
Linux basico-1.PDF
 
Linux basico-2.PDF
Linux basico-2.PDFLinux basico-2.PDF
Linux basico-2.PDF
 
Linux basico-4.PDF
Linux basico-4.PDFLinux basico-4.PDF
Linux basico-4.PDF
 
UBUNTU-1
UBUNTU-1UBUNTU-1
UBUNTU-1
 
W7
W7W7
W7
 
Capitulo 1
Capitulo 1Capitulo 1
Capitulo 1
 
Instalación de Ubuntu
Instalación de UbuntuInstalación de Ubuntu
Instalación de Ubuntu
 
Manual de kicad
Manual de kicadManual de kicad
Manual de kicad
 
Manual de python
Manual de pythonManual de python
Manual de python
 
Manual de bouml
Manual de boumlManual de bouml
Manual de bouml
 

Linux basico-8.PDF

  • 1. LINUX Básico TAKASHI SUGASAWA LINUX Básico (8. Shells(3)) 1
  • 2. Programa del curso 1. Introducción a LINUX 2. Operación básica de LINUX 3. Operación de archivos y directorios 4. Editor vi 5. Comprensión del sistema de ficheros 6. Shells(1) 7. Shells(2) 8. Shells(3) 9. Otros comandos LINUX Básico (8. Shells(3)) 2
  • 3. LINUX Básico 8. Shells(3) Índice 8.1 Introducción a scripts de shell 8.2 Redacción de scripts de shell 8.3 Programación con control 8.4 Procesos de scripts de shell 8.5 Ajuste del ambiente del shell LINUX Básico (8. Shells(3)) 3
  • 4. 8.1 Introducción a scripts de shell (1) Comprensión de los scripts de shell • Normalmente escribimos los comandos en la terminal usando el teclado. • O sea los comandos pueden provenir de un archivo. • Un script de shell es una colección de uno o más comandos de shell en un archivo. • Para ejecutar los comandos en el script de shell, basta con escribir el nombre del archivo. • Las ventajas de scripts de shell son que: – No tiene que volver a escribir una secuencia de comandos. – Determina los pasos para llevar a cabo un objeto una vez. – Simplifica operaciones para usted mismo y para otros. LINUX Básico (8. Shells(3)) 4
  • 5. 8.1(2) Un ejemplo de scripts de shell • Ahora vamos a crear un script de shell “donde” que ejecute 3 comandos “whoami”, “hostname”, “pwd” en secuencia. 1. Primero, confirme que está en el su directorio base. [usr000@linuxpc usr000]$ pwd /home/usr000 2. Inicie “vi” con el nombre del archivo, “vi donde”. [usr000@linuxpc usr000]$ vi donde 3. Escriba como siguiente en el “vi”. whoami hostname primero teclee “i”, después escriba el texto. pwd 4. Salga de “vi” guardando el archivo. teclee “ESC”, “Z”, “Z” LINUX Básico (8. Shells(3)) 5
  • 6. 5. Confirme el existencia el archivo y su contenido. [usr000@linuxpc usr000]$ ls -l donde -rw-rw-r-- 1 usr000 usr000 20 sep 22 09:29 donde [usr000@linuxpc usr000]$ cat donde whoami hostname pwd 6. Agregue el permiso de ejecución al archivo. [usr000@linuxpc usr000]$ chmod +x donde [usr000@linuxpc usr000]$ ls -l donde -rwxrwxr-x 1 usr000 usr000 20 sep 22 09:29 donde 7. Ejecute el archivo. [usr000@linuxpc usr000]$ ./donde usr000 linuxpc el resultado del script de shell /home/usr000 Si no sale así, chequee el contenido o los permisos del archivo. LINUX Básico (8. Shells(3)) 6
  • 7. 8.1(3) Arranque de scripts de shell • Podemos ejecutar un script de shell como sigue también. bash <nombre_de_script> [usr000@linuxpc[usr000@linuxpc usr000]$ ./donde usr000 linuxpc /home/usr000 igual [usr000@linuxpc usr000]$ bash donde usr000 linuxpc /home/usr000 En este caso, el permiso de ejecución no es necesario. [usr000@linuxpc usr000]$ chmod -x donde [usr000@linuxpc usr000]$ ls -l donde -rw-rw-r-- 1 usr000 usr000 20 sep 22 09:29 donde [usr000@linuxpc usr000]$ bash donde usr000 linuxpc /home/usr000 LINUX Básico (8. Shells(3)) 7
  • 8. • El shell tiene opciones que son convenientes en el caso de la depuración. -x: El shell sale cada comando (detrás de un “+”) a stderr antes de ejecutarlo. -v: El shell sale sus entradas a stderr al captar los. -n: El shell solamente pasa los comandos, no ejecuta los. [usr000@linuxpc usr000]$ bash -x donde + whoami usr000 + hostname linuxpc + pwd /home/usr000 [usr000@linuxpc usr000]$ bash -nv donde whoami hostname pwd LINUX Básico (8. Shells(3)) 8
  • 9. 8.1(4) Variedad de scripts de shell • Cada shell (BASH, Shell Bourne, Shell C, tcsh, ...) tiene su manera de descripción de scripts. BASH es el shell derivado de Shell Bourne. Por eso, BASH puede ejecutar los scripts de Shell Bourne. En este curso, aprendemos scripts de BASH. LINUX Básico (8. Shells(3)) 9
  • 10. 8.2 Redacción de scripts de shell (1) Selección de shell que se arranca • La descripción como sigue en la cabeza del script, selecciona el tipo del shell que se arranca. #!/bin/bash nombre de ruta de acceso del shell Vamos a escribirlo como frase hecha, para definir el tipo del script de shell. [usr000@linuxpc usr000]$ cat donde2 #!/bin/bash whoami hostname pwd [usr000@linuxpc usr000]$ ./donde2 usr000 linuxpc /home/usr000 LINUX Básico (8. Shells(3)) 10
  • 11. 8.2(2) Uso de comentarios • El signo “#” le indica al shell el principio de un comentario. Cada carácter a partir del signo “#” hasta el final de la línea es parte de ese comentario. • El shell ignora los comentarios. Un comentario es una nota para usted mismo o para cualquiera que lea el script. [usr000@linuxpc usr000]$ cat donde3 #!/bin/bash # Esto es un comentario. whoami # Esto es un comentario también. hostname pwd [usr000@linuxpc usr000]$ ./donde3 usr000 linuxpc /home/usr000 LINUX Básico (8. Shells(3)) 11
  • 12. 8.2(3) Uso de variables • Variables son disponibles en scripts de shell: podemos asignar un valor a un variable y acceder el valor guardad en la variable. [usr000@linuxpc usr000]$ cat donde4 #!/bin/bash # "donde4": una prueba de script de shell variable1=`whoami` Asignación del valor al variable variable2=`hostname`:`pwd` echo "Su nombre del usuario es $variable1." echo "Ahora usted está en $variable2." Sustitución del variable [usr000@linuxpc usr000]$ ./donde4 Su nombre del usuario es usr000. Ahora usted está en linuxpc:/home/usr000. LINUX Básico (8. Shells(3)) 12
  • 13. 8.2(4) Uso del comando “read” • El comando “read” toma la siguiente línea de entrada y la asigna a una variable. [usr000@linuxpc usr000]$ cat quien #!/bin/bash # "quien": Presenta quién es el usuario de su selección. Suprime aparte echo -n "Nombre del usuario: " read usuario Nombre de un variable grep $usuario /home/copropiedad/cuenta.txt Sustitución del variable [usr000@linuxpc usr000]$ ./quien Nombre del usuario: usr000 Entrar de la teclado (+[Enter]) usr000 Sugasawa Takashi LINUX Básico (8. Shells(3)) 13
  • 14. 8.2(5) Uso del parámetros de línea de comando • Podemos consultar los parámetros de línea de comando con los variables $1, $2, ..., $9. [usr000@linuxpc usr000]$ cat quien2 #!/bin/bash # "quien2": Presenta quién es el usuario de su selección. Primer parámetro grep $1 /home/copropiedad/cuenta.txt Esto es necesario. [usr000@linuxpc usr000]$ ./quien2 usr000 usr000 Sugasawa Takashi $0 $1 $0: El nombre del comando. $*: Todos los parámetros. $#: El número de parámetros. LINUX Básico (8. Shells(3)) 14
  • 15. 8.3 Programación con control (1) Uso de la estructura if • “if comando then ... else ... fi” es una estructura de decisión que le permite seleccionar uno de dos cursos de acción basados en el resultado de un comando. if comando Si el resultado del then comando es 0, ... ... Todos los programas tienen else Si no, ... su valor de resultado. ... Generalmente el valor 0 fi representa el estado de salida del programa con éxito. El estado de salida del comando ejecutado últimamente, se puede saber con el variable "$?". LINUX Básico (8. Shells(3)) 15
  • 16. (40) test Regresa un estado de salida de cero cuando lo que se probó fue cierto. (ej.) test -f FILE1 test $variable1 = STR1 test $variable2 -lt 10 -f FILE cierto si existe el fichero FILE y es regular. -d FILE cierto si el fichero FILE es un directorio. STR1 = STR2 cierto si la cadena STR1 es igual a la cadena STR2. STR1 != STR2 no es igual INT1 -eq INT2 cierto si el número INT1 es igual al número INT2. INT1 -ne INT2 no es igual INT1 -gt INT2 mayor que INT1 -ge INT2 mayor que o igual INT1 -lt INT2 menor que INT1 -le INT2 menor que o igual LINUX Básico (8. Shells(3)) 16
  • 17. [usr000@linuxpc usr000]$ cat quien3 #!/bin/bash # "quien3": Presenta quién es el usuario de su selección. El número de parámetros. if test $# -ge 1 Si el número de parámetros es mayor o igual que 1, ... then grep $1 /home/copropiedad/cuenta.txt else echo -n "Nombre del usuario: " read usuario grep $usuario /home/copropiedad/cuenta.txt fi [usr000@linuxpc usr000]$ ./quien3 usr000 usr000 Sugasawa Takashi [usr000@linuxpc usr000]$ ./quien3 Nombre del usuario: usr000 usr000 Sugasawa Takashi LINUX Básico (8. Shells(3)) 17
  • 18. 8.3(2) Uso de la estructura for • “for nombre in palabras do... done” es una estructura iterativa. Un nombre del variable (ej.) $* *.txt a ab abc abcd `seq 1 10` for i in $* Todos los parámetros. do ... por ejemplo, $i si hay 3 palabras, ... se repite 3 veces. done Podemos acceder cada palabra así. LINUX Básico (8. Shells(3)) 18
  • 19. [usr000@linuxpc usr000]$ cat quien4 #!/bin/bash # "quien4": Presenta quién es el usuario de su selección. if test $# -ge 1 then for i in $* do grep $i /home/copropiedad/cuenta.txt done else echo -n "Nombre del usuario: " read usuario grep $usuario /home/copropiedad/cuenta.txt fi [usr000@linuxpc usr000]$ ./quien4 Nombre del usuario: usr000 usr000 Sugasawa Takashi [usr000@linuxpc usr000]$ ./quien4 usr000 usr000 Sugasawa Takashi [usr000@linuxpc usr000]$ ./quien4 usr000 usr001 usr000 Sugasawa Takashi usr001 Acosta Alonzo Jessica Elizabeth LINUX Básico (8. Shells(3)) 19
  • 20. 8.4 Procesos de scripts de shell Aquí hay un script de shell ... [usr000@linuxpc 8vo]$ cat ej_cd #!/bin/bash # "cd" en el script de shell echo -n "pwd: " pwd echo "cd /:" cd / En el script de shell, se ejecuta el comando "cd". echo -n "pwd: " pwd [usr000@linuxpc 8vo]$ pwd Antes de ejecutar el script /home/usr000/8vo En el script, se ejecuta el [usr000@linuxpc 8vo]$ ./ej_cd pwd: /home/usr000/8vo comando "cd", y ciertamente cd /: se ha cambiado el directorio pwd: / de trabajo actual. [usr000@linuxpc 8vo]$ pwd después de ejecutar el script /home/usr000/8vo pero, no se ha cambiado... LINUX Básico (8. Shells(3)) 20
  • 21. • Normalmente el script de shell se ejecuta en el otro proceso. • Las operaciones en el una proceso no ejercen influencia sobre otros procesos. Proceso de Shell Proceso de otro shell ./ej_cd espera cd / LINUX Básico (8. Shells(3)) 21
  • 22. • Utilizando el comando "source", se ejecuta el script de shell en el mismo proceso. [usr000@linuxpc 8vo]$ pwd ". ej_cd" también tiene /home/usr000/8vo mismo efecto. [usr000@linuxpc 8vo]$ source ej_cd pwd: /home/usr000/8vo cd /: pwd: / Proceso de [usr000@linuxpc /]$ pwd Shell / Esta vez, se ha cambiado el source ej_cd directorio de trabajo actual. cd / LINUX Básico (8. Shells(3)) 22
  • 23. 8.5 Ajuste del ambiente del shell • Los cambios del ambiente del shell (umask, variables) no tienen su efecto después de la terminación del proceso. Al registrarse la próxima vez, tenemos que hacerlos otra vez. • Podemos escribirlos en el archivo “.bashrc” en el directorio base, que el bash ejecuta automáticamente al iniciar. [usr001@linuxpc usr001]$ ls -a ~ . .. .bash_history .bash_logout .bash_profile .bashrc .gtkrc Al hacer logout, se ejecuta. Al hacer login, se ejecutan. Cuando el bash inicia como un shell interactivo, se ejecuta. LINUX Básico (8. Shells(3)) 23
  • 24. Ejemplo de “.bashrc” [usr001@linuxpc ~]$ cat ~/.bashrc # .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi umask 022 Asigna el valor del umask. PS1="[u@h w]$ " Cambia el formato del indicador del shell. alias ll='ls -l' Definen alias del comando alias la='ls -a' Los cambios van a tener su efecto, cuando se inicia el shell la próxima vez. Tenemos que chequear el archivo antes de rehacer Login. LINUX Básico (8. Shells(3)) 24
  • 25. ¡ Muchas gracias por su atención ! ¡ Hasta pronto ! LINUX Básico (8. Shells(3)) 25