Shell-script - A/S Leonardo Carámbula

Anuncio
Shell
Script
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
• SHELL tiene dos formas distintas de
ejecutar comandos :
– Archivos binarios
• Programas compilados y de los cuales
existe un ejecutable
• archivos .exe ó .com en MS-DOS
– Archivos de texto
• Contienen un programa escrito en el
lenguaje del shell
• archivos .bat en MS-DOS
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
• Para ejecutarlos, el usuario solamente
debe digitar su nombre y el shell se
encarga de ver como debe ser ejecutado.
• El shell tiene primitivas de control de
ejecución como por ej.:
– sentencias condicionales
– bucles.
• La interpretación del lenguaje se lleva a
cabo en tiempo real.
• A medida que va interpretando, va
ejecutando.
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
• Estos archivos deben tener permiso de
ejecución para el usuario.
chmod -u +x archivo
chmod 7.. archvivo
• Lo tiene que encontrar en el camino de
búsqueda.
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
• El nombre comienza con /
• Nombre absoluto de un archivo
– /home/user/prog
Nombre absoluto
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
• Es una palabra reservada
–
–
–
–
–
–
–
–
–
if
then
elif
fi
while
do
done
for
!
–
–
–
–
–
–
case
in
esac
{
}
until
Sistemas Operativos III - ITS – EMT - CETP
Nombre absoluto
Palabra Reservada
Prof. L. Carámbula
SHELL SCRIPT
• Es un alias de otro comando
• Ver alias, en presentación SHELL
Nombre absoluto
Palabra Reservada
Alias
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
• Es un comando interno del núcleo
– fg
– read – test – umask
– alias
– history – return – trap – unalias
– bg
–
jobs
–
unset
–
set
–
type
– break
–
kill
– cd
Nombre absoluto
–
let
– continue
– logout
Palabra Reservada
– echo
– pwd
– exec
– exit Comando interno
Alias
–
export
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
• Es una función definida por el usuario
– más adelante se verá como se definen las
mismas.
Nombre absoluto
Palabra Reservada
Función
Comando interno
Sistemas Operativos III - ITS – EMT - CETP
Alias
Prof. L. Carámbula
SHELL SCRIPT
• Busca en cada uno de los directorios
contenidos en la variable PATH
– ej: PATH = /bin:/usr/bin:/etc:
– La variable PATH incluye
actual
Variable PATH
, directorio
Nombre absoluto
Palabra Reservada
Función
Comando interno
Sistemas Operativos III - ITS – EMT - CETP
Alias
Prof. L. Carámbula
SHELL SCRIPT
• Si no encuentra la orden ingresada en el
camino de búsqueda, emite el mensaje de
error correspondiente.
Variable PATH
Nombre absoluto
Palabra Reservada
Función
Comando interno
Sistemas Operativos III - ITS – EMT - CETP
Alias
Prof. L. Carámbula
SHELL SCRIPT
• Parámetros posicionales
– son parámetros disponibles dentro del
shell script como variables.
– se ingresan a continuación del nombre.
– se separan por espacios.
– prog hola 5 pedro 7 juan 11
$0 $1 $2 $3 $4 $5 $6
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
$0
el nombre del shell script que
estamos ejecutando.
$1
$2
$9
${10}
$#
Primer parámetro posicional.
Segundo parámetro posicional.
Noveno parámetro posicional.
Decimo parámetro posicional.
Cantidad de parámetros que se han
pasado al shell script.
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
$*
• Un argumento que contiene a todos los
parámetros que se han ingresado
conjuntamente con el shell script ($1,
$2, …) menos $0.
• En forma de lista, separados por
espacios.
$@
$?
Lo mismo que
$*
Almacena el código de error del
último comando ejecutado.
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
$$
$!
Número de proceso actual (PID)
#
COMENTARIO : Todo lo que
haya escrito a la derecha, se
toma como comentario.
Almacena el código de error del
último comando ejecutado en
segundo plano
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•NOTA:
#!/bin/bash
• Esta línea se debe ingresar como primera
línea de un shell script, de esta manera se
identifica como tal.
/bin/bash es la ruta donde se encuentra
el interprete de comandos.
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
• Ejercicio:
– Generar un archivo vi
– Ingresar en vi:
#!/bin/bash
prueba.sh
echo “El script se llama $0”
echo “Cantidad de parametros es: $#”
echo “El primero parametro es:
$1”
$*
echo “Y todos son:
”
echo “Fin - Shell Script”
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
• Ejercicio:
– Una vez ingresado las líneas anterirores presionar:
• ESC
•:
• wq
– Guardar y salir
–Colocar permiso de ejecución para el archivo
creado:
chmod –u +x prueba.sh
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Ejercicio:
–Ejecutar el script de la siguiente manera:
prueba.sh uno dos tres
–Desplegará por pantalla:
• El script se llama prueba.sh
• La cantidad de parámetros es: 3
• El primero es: uno
• Y todos son: uno dos tres
• Fin - Shell Script
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando echo
–Imprime por pantalla un literal en
una línea
• echo “Hola Linux”
-n
• No genera una nueva línea
-e
• Permite utilizar los caracteres de escape
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando echo
–caracteres de escape
\n
\r
\t
\v
nueva línea
\b
\a
retroceso, backspace
retorno de carro, primera línea
tabulador horizontal
tabulador vertical
beep, campana
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando echo
–caracteres de escape
\ Oxx
octal ascii de Oxx
– ABC = $’\101\102\103\010’
– echo $ABC
\“
\$
\\
comillas dobles, “
símbolo de pesos, $
contrabarra, \
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando read
– Lee caracteres del teclado hasta
presionar <enter>
– Los caracteres ingresados se
almacenan en una variable.
read numero
-n número
• Cantidad de caracteres a leer
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando read
– Shell-script : read.sh ;
– ejecutar como read.sh
echo “ INGRESE SU NOMBRE? ”
read nom
echo “Hola $nom”
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética
en SHELL
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
–Tipo
entero
para
una
variable
–se fija con el comando:
typeset –i variable
• o por base# para el valor.
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•Ejemplo
–La variable X es fijada a 5 en base
2 usando ambos formatos:
typeset -i X=5
typeset -i X=2#101
echo $X
»
5
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•Ejemplos
– Se desea desplegar el valor de X en otra
base, puede ser definida otra base con el
comando typeset -in.
• Ejemplo, redefinir X, X en base 3:
typeset -i X
echo $X
»
3#12
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•El comando LET
let “ < expresión-aritmética> ”
( ( < expresión-aritmética > ) )
–Donde las expresión aritmética puede
contener:
–constantes
–operaciones
–variables
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•El comando LET
–Asignar la suma de 1+1 a la variable X:
let “X=1+1"
echo $X
»
2
–Luego puede ser incrementado:
let “X=X+1"
echo $X
»
3
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•El comando (( ... ))
–Asignar la suma de 1+1 a la variable X:
(( X = 1 + 1 ))
echo $X
»
2
–Luego puede ser incrementado:
(( X = X + 1 ))
echo $X
»
3
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•Operadores Aritméticos
*
Multiplicación
/
División
%
Módulo, resto de la
división
+
Suma
Resta
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•Operadores Aritméticos
X= 4
(( X = X % 2 ))
echo $X
» 0
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•Operadores Aritméticos
*=
Asignar Multiplicación
/=
Asignar División
%=
Asignar Módulo
+=
Incrementar
- =
Disminuir
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•Operadores Aritméticos
X= 4
(( X *= 2 ))
echo $X
»8
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•Operadores Aritméticos
–Expresiones lógicas
!
&&
||
Negación Lógica
Y Lógico
O Lógico
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Aritmética en SHELL
•Operadores de comparación
<=
<
>=
>
==
!=
Menor o igual que
Menor que
Mayor igual que
Mayor que
Igual que
Distinto que
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Estructuras
de Control
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Condicional
if <condición>
then
... comandos ...
else
... comandos ...
fi
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Condicional
–La condición puede escribirse como:
let “<argumentos>”
o
( ( <argumentos> ) )
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Condicional
if (( A > B ))
then
echo “$A es mayor que $B”
else
echo “$B es mayor que $A”
fi
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Condicional
read usuario
if grep $usuario /etc/passwd
then
echo “$usuario es un usuario”
else
echo “$usuario no es un usuario”
fi
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Condicional interactivo
case variable in
patron1)
... comandos ...
;;
patron2)
... comandos ...
;;
esac
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Condicional interactivo
clear
echo “1.- Usuarios conectados”
echo “2.- Espacio utilizado”
echo “3.- Procesos”
echo “5.- Salir.”
echo –n “Opción? : “
read opcion
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Condicional interactivo
case $opcion in
1) who;;
2) df;;
3) ps;;
5) echo “Saliendo...”;;
*) echo “Opción $opcion es
incorrecta”;;
esac
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Repetitivas
while <condición>
do
... comandos
done
– Ejecuta los comandos del bloque hasta
que la condicion sea falsa.
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Repetitivas
NUM=2
while (( NUM < 64 ))
do
echo -e “\t$NUM”
((NUM *= 2))
done
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Repetitivas
until <condición>
do
... comandos ...
done
• Se ejecuta al menos una vez los
comandos del bloque
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Recorrer una lista
for variable in <lista>
do
... comandos ...
done
• Se ejecuta los comandos del bloque
para cada valor de <lista>
• variable adopta el valor del item de
la lista
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Repetitivas
for NOM in Ana Maria Jose Leo
do
echo -n $NOM
done
» AnaMariaJoseLeo
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Repetitivas
# $@ contiene la lista de parametros
for X in $@
do
echo $X
done
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Repetitivas
–Procesar todas las líneas de un archivo
for linea in $(cat /etc/passwd)
do
...
done
– En la variable linea se almacena la
línea del archivo, para cada interacción
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando test
test “<argumentos>”
[ [ <argumentos> ] ]
– Condiciones con cadenas de
caracteres
– Condiciones con archivos
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando test
[-n] string » largo != 0
-z string
» largo = 0
s1 = s2
» s1 y s2 iguales
s1 != s2
» s1 y s2 distintos
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando test
–b
–c
–d
–e
–f
archivo » Э de bloques
archivo » Э de caracteres
archivo » Э directorio
archivo » Э
archivo » Э regular
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando test
–g
–O
–r
–w
–x
archivo Э del grupo
archivo Э del usuario
archivo Э permiso lectura
archivo Э permiso escritura
archivo Э permiso ejecución
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando test
– s archivo
Э tamaño > 0
– z archivo
Э tamaño = 0
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando test
a1 -ef a2
= dispositivo e i-nodo
a1 -nt a2
a1 es más nuevo que a2
a1 -ot a2
a1 es más viejo que a2
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
SHELL SCRIPT
•Comando test
-a
y lógico
-o
o lógico
Sistemas Operativos III - ITS – EMT - CETP
Prof. L. Carámbula
Descargar