shell scripting ishell scripting imaterias.fi.uba.ar/7508/practica-2013/claseu1.pdf · fiuba 75.08...
TRANSCRIPT
![Page 1: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/1.jpg)
75.08 Sistemas OperativosLic. Ing. Osvaldo Clúa
Lic. Adrián Muccio
Facultad de IngenieríaUniversidad de
Buenos Aires
Shell Scripting IShell Scripting I
![Page 2: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/2.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 2
Unix
¿Qué es Unix?
Evolución desde Multics
Sistemas Abiertos
Sabores
Ken Thompson
Dennis Ritchie
![Page 3: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/3.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 3
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 4: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/4.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 4
Características Principales:
Multiproceso / Multiusuario
Los recursos del sistema son administrados por el Kernel
Kernel
Unix
S.O
![Page 5: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/5.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 5
El Kernel implementa los servicios esenciales del S.O.:
Administración de Memoria
Administración de Procesos
Concurrencia
Unix
![Page 6: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/6.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 6
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 standarizado
Ejemplo: read, write, exit, etc
Unix
![Page 7: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/7.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 7
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 8: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/8.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 8
“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 9: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/9.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 9
Ejemplos dispositivos:
/dev/rmt/1: cinta
/dev/hda5: disco
/dev/pts0: terminal
/dev/null: elimación del sistema
Unix
![Page 10: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/10.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 10
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 11: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/11.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 11
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 12: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/12.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 12
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 13: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/13.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 13
Unix
Shell
Interfaz entre SO y usuario
Interpreta comandos
Determina formas de ejecución
Expande caracteres comodines
Expande variables de ambiente
Lenguaje de scripting
![Page 14: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/14.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 14
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 asigno al usuario
Unix
![Page 15: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/15.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 15
Ingreso de Comandos
Unix
> echo “Hola Mundo”Hola Mundo> _
![Page 16: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/16.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 16
Unix
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
man
grep
sed
kill
mkdir
more
cat
![Page 17: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/17.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 17
Primer Shell Script
Unix
# Mi primer shellecho Hola Mundo
:wq
> vim hola.sh
![Page 18: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/18.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 18
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 19: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/19.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 19
Cada archivo / directorio tiene asociado un conjunto de permisos, los permisos son:
Lectura
Escritura
Ejecución
Unix
![Page 20: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/20.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 20
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 21: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/21.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 21
Para poder ejecutar nuestro script
Unix
> chmod +x hola.sh> hola.shHola Mundo>_
Otra sintaxis para los mismos permisos> chmod 775 hola.sh> hola.shHola Mundo>_
![Page 22: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/22.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 22
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 23: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/23.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 23
Ejecución Foreground con proceso hijo
Unix
> 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 24: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/24.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 24
Ejecución Background con proceso hijo
Unix
> 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 25: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/25.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 25
Ejecución Foreground sin proceso hijo
Unix
> . .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 26: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/26.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 26
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
Unix
![Page 27: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/27.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 27
Tener una lista de directorios donde buscar a archivos para ejecutar es un concepto utilizado en otros S.O. (por ejemplo D.O.S. y 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
Unix
![Page 28: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/28.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 28
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.
Unix
![Page 29: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/29.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 29
Existe el archivo .profile, para no repetir acciones repetitivas como setear variables de ambiente, umask, etc.
Este archivo se encuentra en el $HOME del usuario y contiene el seteo de acciones a ejecutar por el shell al momento de conexión.
Unix
IMPORTANTE: Es conveniente testear cualquier modificación a este archivo manteniendo una conexión abierta durante el test.
![Page 30: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/30.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 30
Relación entre Variable y Ambiente
Supongamos que en un shell script se realiza una asignación.
Unix
# script1.shecho “VARIABLE: $VARIABLE”
![Page 31: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/31.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 31
Ejecutamos script1.sh
Unix
> script1.shVARIABLE:>_
Asignamos valor a VARIABLE y Ejecutamos
> VARIABLE=”CERO”> script1.shVARIABLE:>_
VARIABLE sin inicializar
Ambientes distintos
![Page 32: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/32.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 32
Utilizamos el comando export
Unix
> VARIABLE=”CERO”> export VARIABLE> script1.sh
VARIABLE: CERO>_
![Page 33: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/33.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 33
Unix
¿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 34: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/34.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 34
¿Con qué valor queda VARIABLE?
Unix
> echo $VARIABLE
VARIABLE: CERO>_
No se modifica el valor en el padre
![Page 35: Shell Scripting IShell Scripting Imaterias.fi.uba.ar/7508/Practica-2013/ClaseU1.pdf · FIUBA 75.08 Sistemas Operativos Shell Scripting 20 En primera instancia el owner es el usuario](https://reader034.vdocuments.mx/reader034/viewer/2022052320/5f0578bc7e708231d41320ed/html5/thumbnails/35.jpg)
FIUBA 75.08 Sistemas Operativos Shell Scripting 35
Si ejecutáramos en el mismo Ambiente
Unix
> . script1.shVARIABLE: UNO> echo $VARIABLE
VARIABLE: UNO>_