36
75.08 Sistemas Operativos Lic. Ing. Osvaldo Clúa Lic. Adrián Muccio Facultad de Ingeniería Universidad de Buenos Aires Shell Scripting Shell Scripting

Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

75.08 Sistemas OperativosLic. Ing. Osvaldo Clúa

Lic. Adrián Muccio

Facultad de IngenieríaUniversidad de

Buenos Aires

Shell Scripting Shell Scripting

Page 2: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 2

Introducción a los Sistemas Operativos

Algunos de los temas que veremos en este curso:

• Scheduling o cómo se decide que será lo próximo que va a ejecutar la CPU

• Administración de Memoria• Exclusión Mutua, Semáforos• Máquinas virtuales• Persistencia de datos y ejecutables• Device Drivers• Shell Scripting y Expresiones Regulares

Page 3: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 3

Unix

¿Qué es Unix?

Evolución desde Multics

Sistemas Abiertos

Sabores

Ken Thompson

Dennis Ritchie

Page 4: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 4

Unix

Cultura Unix

Lenguajes: (B->) C, C++, C*, Java

Shells: sh, ksh, csh, bash

Expresiones Regulares y AWK

Editores: vi / vim

Protocolos: TCP/IP, Ethernet, HTTP, etc

Otras Herramientas: entornos Xwindow, GNU, etc

Page 5: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 5

Características Principales:

Multiproceso / Multiusuario

Los recursos del sistema son administrados por el Kernel

Kernel

Unix

S.O

Page 6: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 6

El Kernel implementa los servicios esenciales del S.O.:

Administración de Memoria

Administración de Procesos

Concurrencia

Unix

Page 7: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 7

Todos los procesos se comunican con el Kernel por medio de llamadas al sistema conocidas como System Calls

Son un listado de funciones con prototipo estandarizado

Ejemplo: read, write, exit, etc

Unix

Page 8: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 8

File System

Es una estructura jerárquica, agrupada por directorios

Ejemplo de ordenamiento del File System

Unix

/ . | | | | | | | | |bin dev etc home include lib proc usr tmp | | | | passwd hosts init.d rc.d

Page 9: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 9

“Everything in Unix are Files” - Kernighan / Pike

Para standarizar y simplificar la forma de acceso a los recursos, Unix los trata como archivos

Los directorios, las terminales, el teclado, los dispositivos de I/O tanto magnéticos como ópticos son archivos

Unix

Page 10: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 10

Si hacemos ls –l, listamos el contenido del directorio con los permisos de cada uno de los archivos, en este caso

Unix

Permisos links dueño grupo tamaño fecha nombre -rw-rw-r-- 1 amuccio grupo1 200 Jul 30 17:41 hola.sh

Page 11: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 11

Cada archivo / directorio tiene asociado un conjunto de permisos, los permisos son:

Lectura

Escritura

Ejecución

Unix

Page 12: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 12

Unix

Los archivos se crean con un conjunto de permisos por defecto asignado por el administrador

Se puede modificar mediante el comando umask

> umask –S # lista el modo> umask u=rw,g=rw,o=r # setea 664

Page 13: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 13

En primera instancia el owner es el usuario que crea el archivo, luego se lo puede asignar a otro usuario con el comando chown dueño archivo

El grupo es el “principal” del usuario que crea el archivo, se puede cambiar el grupo con el comando chgrp grupo archivo

Unix

Page 14: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 14

Ejemplos dispositivos:

/dev/rmt/1: cinta

/dev/hda5: disco

/dev/pts0: terminal

/dev/null: eliminación del sistema

Unix

Page 15: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 15

Unix maneja los conceptos de Xterm y Terminal Virtual

Terminales Virtuales son terminales de texto que estan implementadas en el mismo host y se accede desde la consola presionando ALT-F2, ALT-F3, etc.

También son terminales virtuales, las que abrimos desde un host remoto, si el host no fuera Unix necesitaremos un emulador de terminal.

Unix

Page 16: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 16

Unix es FULL DUPLEX, los caracteres que se tipean, se envían al sistema (Kernel), el cual los pasa a la terminal

Este es el proceso conocido como eco, se puede desactivar por ejemplo para el tipeo de claves

Unix

Page 17: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 17

Además del eco hay otras propiedades de la terminal que se pueden configurar, por ejempo:

Unix

> stty –echo #elimina el eco> no se ve lo que escribo> stty echo #restaura el eco> stty erase backespace > stty erase backespace> stty intr ^C # Interrupcion de procesamiento

Page 18: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 18

Shell Scripting

Shell

Interfaz entre SO y usuario

Interpreta comandos

Determina formas de ejecución

Expande caracteres comodines

Expande variables de ambiente

Lenguaje de scripting

Page 19: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 19

Ingreso al Shell

En una terminal del sistema se autentica el usuario con su clave y en ese momento se le asigna una sesión al usuario

Un usuario puede tener “n” sesiones abiertas en distintas terminales

Una vez que el sistema devuelve el control, aparece la línea de comandos del shell que el administrador del sistema le asignó al usuario

Shell Scripting

Page 20: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 20

Ingreso de Comandos

Shell Scripting

> echo “Hola Mundo”Hola Mundo> _

Page 21: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 21

Shell Scripting

Algunos Comandos útiles:

adduser

cal

date

sort

batch

nohup

read

cp

mv

rm

man

head

tail

tr

ln

pwd

wc

ps

set

talk

touch

find

tar

type

diff

chown

sleep

who

ls

grep

sed

kill

mkdir

more

cat

Page 22: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 22

Primer Shell Script

Shell Scripting

# Mi primer shellecho Hola Mundo

:wq

> vim hola.sh

Page 23: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 23

Para poder ejecutar nuestro script

Shell Scripting

> chmod +x hola.sh> hola.shHola Mundo>_

Otra sintaxis para los mismos permisos> chmod 775 hola.sh> hola.shHola Mundo>_

Page 24: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 24

Ejecución Foreground con proceso hijo

Shell Scripting

> script1.sh script1.sh necesita permiso de ejecución no nos devuelve el control hasta que no finaliza > _

> cp origen.dat destino.dat ; more destino.dat

Page 25: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 25

Ejecución Background con proceso hijo

Shell Scripting

> script1.sh & script1.sh necesita permiso de ejecución Nos devuelve el control en el momento

[1] 20295 muestra el número de proceso > _

> ps

PID PPID TTY TIME CMD 5754 1 pts/6 00:00:00 ksh20295 5754 pts/6 00:00:00 script1.sh 20861 5754 pts/6 00:00:00 ps

> _[1] + Done script1.sh nos avisa que finalizó

Page 26: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 26

Ejecución Foreground sin proceso hijo

Shell Scripting

> . script1.sh script1.sh no necesita permiso de ejecución no nos devuelve el control hasta que no finaliza se ejecuta en el mismo ambiente, eso significa que no hay un shell hijo >_

Page 27: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 27

El Shell maneja variables de ambiente

No es necesario “definir” una variable, simplemente comienza a existir cuando le asignamos un valor.

Existen variables predefinidas.

SHELL #Nombre del Shell

PWD #Directorio corriente

PS1 #Prompt 1

PATH #Directorios donde buscar ejecutables

Shell Scripting

Page 28: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 28

Tener una lista de directorios donde buscar a archivos para ejecutar es un concepto utilizado en otros S.O. (por ejemplo Windows)

Si el directorio corriente no se encuentra en esa lista, el Shell no va a ejecutar script1.sh.

Para poder ejecutarlo desde el prompt, tenemos dos posibilidades:

1. Hacer una referencia explícita al directorio.

> ./script1.sh # . es el directorio corriente

Shell Scripting

Page 29: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 29

2. Incluir al directorio corriente en el PATH

> PATH=$PATH:.

Como la variables es del ambiente, cuando nos reconectemos podría ser necesario repetir esta acción.

Shell Scripting

Page 30: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 30

Para personalizar el ambiente y evitar acciones repetitivas como setear variables de ambiente, umask y otros existen los achivos .profile y .bash_profile.

Se encuentran en el $HOME del usuario y contienen el seteo de acciones a ejecutar por el shell al momento de conexión.

Shell Scripting

IMPORTANTE: Es conveniente testear cualquier modificación a estos archivos manteniendo una conexión abierta durante el test.

Page 31: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 31

Relación entre Variable y Ambiente

Supongamos que en un shell script se realiza una asignación.

Shell Scripting

# script1.shecho “VARIABLE: $VARIABLE”

Page 32: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 32

Ejecutamos script1.sh

Shell Scripting

> script1.shVARIABLE:>_

Asignamos valor a VARIABLE y Ejecutamos

> VARIABLE=”CERO”> script1.shVARIABLE:>_

VARIABLE sin inicializar

Ambientes distintos

Page 33: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 33

Utilizamos el comando export

Shell Scripting

> VARIABLE=”CERO”> export VARIABLE> script1.sh

VARIABLE: CERO>_

Page 34: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 34

Shell Scripting

¿Qué sucedería si asignáramos un valor dentro de script?

> VARIABLE=”CERO”> export VARIABLE> script1.sh

# script1.shexport VARIABLE=”UNO”echo “VARIABLE: $VARIABLE”

VARIABLE: UNO>_

Page 35: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 35

¿Con qué valor queda VARIABLE?

Shell Scripting

> echo $VARIABLE

VARIABLE: CERO>_

No se modifica el valor en el padre

Page 36: Facultad de Ingeniería Universidad de Buenos Airesmaterias.fi.uba.ar/7508/Slides/12-ShellScripting_I.pdffuera Unix necesitaremos un emulador de terminal. Unix FIUBA 75-08 Sistemas

FIUBA75-08 Sistemas Operativos

Lic. A Muccio 36

Si ejecutáramos en el mismo Ambiente

Shell Scripting

> . script1.shVARIABLE: UNO> echo $VARIABLE

VARIABLE: UNO>_