Sei sulla pagina 1di 12

UNIVERSIDAD POLITCNICA SALESIANA

CARRERA DE INGENIERA EN SISTEMAS


SISTEMAS OPERATIVOS II

Nombre: Paul Velasco

Laboratorio # 4
Nivel: 5to G2

Fecha: 22/10/14

Ejercicio #1
1.
Descripcin
Analizar y detallar que acciones realiza el archivo variables.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano variables.sh, a continuacin el programa nos muestra como declarar una variable y como
imprimir en pantalla dicha variable.
OF: Es el nombre que le asignamos a esta variable la cual almacenara dos comandos del terminal que son:
USER que nos muestra informacin de los usuarios conectados al sistema, y DATE que nos muestra la fecha
del sistema. Los dos comandos y el texto adicional de /home/son almacenados en la variable OF con la
extensin.tgz que se ha colocado en este ejercicio.
Se procede a imprimir en pantalla con el cdigo de: echo $OF.
Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh variables.sh
A continuacin el cdigo fuente:
#Variables en el Bash
#
OF=/home/${USER}-$(date +%d%m%Y).tgz
echo $OF

3.

Ejecucin

4.

Conclusiones y recomendaciones
Se recomienda utilizar el editor de textos NANO puesto que es ms dinmico que el editor Vi.
Se concluye que las variables pueden almacenar datos numricos, alfanumricos, textuales, etc.

Ejercicio #2
1.
Descripcin
Analizar y detallar que acciones realiza el archivo mysystem.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano mysystem.sh, a continuacin el programa nos muestra combinaciones de comandos del
terminal que son guardarlos en variables, luego proceden a ser impresos de forma ordenada.
A continuacin detallaremos cada una de las sentencias utilizadas en el script mysystem.sh que son:
CLEAR que sirve para borrar el contenido de la pantalla, ECHO que sirve para imprimir en pantalla cualquier
contenido que deseemos mostrar, USER que nos muestra informacin de los usuarios conectados al sistema
DATE que nos muestra la fecha del sistema, date +"%V" que muestra la fecha y el nmero de semana en el
ao, (w | cut -d " " -f 1 - | grep -v USER | sort -u), esta combinacin de comandos nos muestra el nombre
del usuario en el que estamos trabajando, pero corta las lneas que tengan un espacio despus del nombre
del usuario y si la lnea esta duplicada la mostrara una sola vez.
UNAME S que imprimir el nombre del sistema operativo; UNAME M que imprimir el tipo de maquina
(hardware).
Y el comando UPTIME que indica el tiempo que lleva el sistema encendido.
Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh mysystem.sh
A continuacin el cdigo fuente:
#!/bin/bash
clear; echo "Informacin proporcionada por el shell script mysys.sh"
echo "Hola, $USER"
echo
echo "La fecha es `date` y la semana `date +"%V"` "
echo
echo "Usuarios conectados:"
w | cut -d " " -f 1 - | grep -v USER | sort -u
echo
echo "El sistema es `uname -s` y el procesador es `uname -m`"
echo
echo "el sistema est encendido desde:"
uptime
echo
echo "Esto es todo!"

3.

Ejecucin

4.

Conclusiones y recomendaciones
Se concluye que se pueden realizar varias combinaciones con los comandos utilizando tuberas
Se recomienda imprimir un encabezado con echo de cada accin realizada por los comandos

Ejercicio #3
1.
Descripcin
Analizar y detallar que acciones realiza el archivo if.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano if.sh, a continuacin el programa nos muestra dos expresiones diferentes y en la evaluacin
nos indica que si son iguales arroje un mensaje de verdadero o falso, y en la segunda evaluacin nos indica
que si son diferentes nos arroje un mensaje de verdadero o falso, A continuacin detallaremos cada sentencia
utilizada:
T1="pirulo" ; T2="pirulon": son las variables que vamos a utilizar.
if [ "$T1" = "$T2" ] esta es la evaluacin de las variables nos dice que si son IGUALES nos indique un mensaje
VERDADERO. Else significa caso contrario nos muestre un mensaje de FALSO.
if [ "$T1" != "$T2" ] esta es la evaluacin de las variables nos dice que si son DIREFENTES nos indique un
mensaje VERDADERO. Else significa caso contrario nos muestre un mensaje de FALSO.
Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh if.sh
A continuacin el cdigo fuente:
#!/bin/bash
T1="pirulo"
T2="pirulon"
if [ "$T1" = "$T2" ]; then
echo expresin evaluada como verdadera
else
echo expresin evaluada como falsa
fi
if [ "$T1" != "$T2" ]; then
echo expresin evaluada como verdadera
else
echo expresin evaluada como falsa
fi

3.

Ejecucin

4.

Conclusiones y recomendaciones
Se recomienda utilizar la estructura (if, then, else y fi), para que no existan errores.
Se concluye que podemos utilizar varios operadores de comparacin en la sentencia IF.

Ejercicio #4
1.
Descripcin
Analizar y detallar que acciones realiza el archivo select.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano select.sh, a continuacin el programa nos muestra un men de opciones establecidas por
el usuario.
Para realizar este men con el comando de control SELECT.
1. Guardamos en una variable las opciones que queremos mostrar en pantalla.
Eje. OPCIONES="Salir Opcin1"
2. Utilizamos el comando select opt in $OPCIONES; do (para crear el men de opciones)
3. Dentro de la variable $opt establecemos las condiciones que deseamos realizar en el men
Eje.
if [ "$opt" = "Salir" ]; then
echo Salir. Adis.
Exit
elif [ "$opt" = "Opcin1" ]; then
echo Hola UOC
4. Finalmente cerramos la sentencia de control con DONE
Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh select.sh
A continuacin el cdigo fuente:
#!/bin/bash
OPCIONES="Salir Opcin1"
select opt in $OPCIONES; do
if [ "$opt" = "Salir" ]; then
echo Salir. Adis.
exit
elif [ "$opt" = "Opcin1" ]; then
echo Hola UOC
else
clear
echo opcin no permitida
fi
done

3.

Ejecucin

4.

Conclusiones y recomendaciones
Se recomienda tabular la programacin interna para evitar confusiones
Se concluye que la sentencia select es muy parecida a la sentencia if

Ejercicio #5
1.
Descripcin
Analizar y detallar que acciones realiza el archivo case.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano case.sh, a continuacin el programa nos muestra un men en el cual se establecen posibles
condiciones que se pueden mostrar en nuestro sistema Linux; guardando en una variable los siguientes
comandos:
space=`df -h | awk '{print $5}' | grep % \ | grep -v Use | sort -n | tail -1 | cut -d "%" -f1 -`; dichos comandos
se encargan de informar al usuario cuanto espacio libre existe en el disco y est disponible para cada
particin, con awk atrapa la columna de espacio disponible, el resto de comandos se encargan ordenar y
cortar lo que el comando df encontr.
Luego de almacenar todos estos comandos en la variable $space, procedemos a introducir dicha variable en
la estructura de control CASE, la cual permite realizar varias comparaciones (casos) y ejecutar las sentencias:
1. Case $space in Se encarga de introducir la variable a ser evaluada para los diferentes casos.
2. ;; Se encarga de cerrar los casos
3. Esaac se encarga de cerrar todo el case que contiene todas las comparaciones.
Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh case.sh
A continuacin el cdigo fuente:
#!/bin/bash
space=`df -h | awk '{print $5}' | grep % \
| grep -v Use | sort -n | tail -1 | cut -d "%" -f1 -`
case $space in
[1-6]*)
Message="todo ok."
;;
[7-8]*)
Message="Podra comenzar a borrar algo en $space %"
;;
9[1-8])
Message="Uff. Mejor un nuevo disco. Particin $space % a tope."
;;
99)
Message="Pnico! No tiene espacio en $space %!"
;;
*)
Message="NO tienen nada..."
;;
esac
echo $Message

3.

Ejecucin

4.

Conclusiones y recomendaciones
Se recomienda utilizar la opcin *) para el caso de que se ingresen opciones invlidas
Se concluye que la estructura select y case son muy similares

Ejercicio #6
1.
Descripcin
Analizar y detallar que acciones realiza el archivo while.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano while.sh, a continuacin el programa nos muestra la utilizacin del bucle mientras cuyo
propsito es repetir un bloque de cdigo mientras una condicin se mantenga verdadera.
1. Declaramos una variable denominada contador = 0
2. Utilizamos el bucle while [ $contador -lt 10 ]; do y establecemos que la condicin debe cumplirse
mientras en contador sea menor a 10
3. echo El contador es: $contador En esta seccin imprimimos en pantalla el contador
4. let contador=contador+1 En esta seccin el contador aumentara en +1 hasta finalizar el bucle.
5. Cerramos el bucle con la instruccin DONE
Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh while.sh
A continuacin el cdigo fuente:
#!/bin/bash
contador=0
while [ $contador -lt 10 ]; do
echo El contador es: $contador
let contador=contador+1
done
3.

Ejecucin

4.

Conclusiones y recomendaciones

Se recomienda utilizar los operadores con la estructura lt,-gt,-le,-gt,etc


Se concluye que se pueden utilizar los operadores de comparacin para los bucles

Ejercicio #7
1.
Descripcin
Analizar y detallar que acciones realiza el archivo for.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano for.sh, a continuacin el programa nos muestra el bucle for el cual permite ejecutar un
conjunto de sentencias cierto nmero de veces. A continuacin explicaremos que realiza cada lnea en el
programa for.sh :
1. for i in $( ls ); do
echo elemento: $i
done
2. for i in `seq 1 10`;
do
echo -n ${i},
done
echo

primero se evalan las expresiones i y $(ls)


La variable del bucle recorrer los valores desde el nmero dado por
la expresin i hasta el nmero dado por la expresin ls, y done
terminara el bucle

igual que en la lnea anterior i recorrer los valores dados en la


secuencia 1 hasta 10, con el comando echo n imprimir de forma
horizontal la secuencia. Finalmente con DONE terminamos el bucle.

Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh for.sh


A continuacin el cdigo fuente:
#!/bin/bash
for i in $( ls ); do
echo elemento: $i
done
echo
for i in `seq 1 10`;
do
echo -n ${i},
done
echo

3.

Ejecucin

4.

Conclusiones y recomendaciones

Se recomienda utilizar una variable de una letra como i que recorrer todo el bucle for
Se concluye que se puede imprimir de forma horizontal o vertical una serie de nmeros

Ejercicio #8
1.
Descripcin
Analizar y detallar que acciones realiza el archivo until.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano until.sh, a continuacin el programa nos muestra la utilizacin del bucle UNTIL cuyo
propsito es repetir un bloque de cdigo hasta que la condicin sea verdadera.
1. Declaramos una variable denominada contador = 20
2. Utilizamos el bucle until [ $contador -lt 10 ]; do y establecemos que la condicin debe cumplirse
mientras en contador sea menor a 10
3. echo El contador Until: $contador
En esta seccin imprimimos en pantalla el contador
4. let contador-1 En esta seccin el contador disminuir en -1 hasta finalizar el bucle.
5. Cerramos el bucle con la instruccin DONE

Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh until.sh


A continuacin el cdigo fuente:
#!/bin/bash
contador=20
until [ $contador -lt 10 ]; do
echo contador-Until $contador
let contador-=1
done

3.

Ejecucin

4.

Conclusiones y recomendaciones

Se recomienda inicializar siempre el contador con algn valor.


Se concluye que until y while son estructuras similares mas no son las mismas.

Ejercicio #9
1.
Descripcin
Analizar y detallar que acciones realiza el archivo funciones.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano funciones.sh, a continuacin el programa nos muestra como almacenar sentencias,
comandos, etc. En mtodos que posteriormente podremos llamar en nuestro script, las veces que deseemos.
A continuacin detallaremos la utilizacin de estos mtodos:
1. Function nombre_mtodo { operaciones y/o sentencias }
2. Ahora para llamar al mtodo solo digitando su nombre en este caso ser: nombre_mtodo
El ejemplo de nuestro script utiliza el comando exit para salir y el comando echo para imprimir dos comandos
sencillos almacenados en dos mtodos distintos.
Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh funciones.sh
A continuacin el cdigo fuente:
#!/bin/bash
function salir {
exit
}
function hola {
echo "Hola PAul!"
}
hola
salir
echo "Nunca llegara a esta lnea"

3.

Ejecucin

4.

Conclusiones y recomendaciones

Se recomienda usar nombres cortos para los mtodos que vayamos a implementar
Se concluye que podemos utilizar el mismo mtodo las veces que sean necesarias

Ejercicio #10
1.
Descripcin
Analizar y detallar que acciones realiza el archivo arreglos.sh y posteriormente ejecutarlo.
2.

Solucin

Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano arreglos.sh, a continuacin el programa nos muestra la utilizacin de varios nmeros
almacenados correctamente en un vector.
A continuacin explicaremos que realiza cada lnea de cdigo en nuestro script:
1. array(1 2 3 ) Aqu declara el vector con los datos 1 2 3 y con el nombre de array.
2. echo $array Muestra en pantalla la primera posicin del vector
3. echo ${array[*]} Muestra en pantalla todos los elementos del vector
4. echo ${array[2]} Muestra en pantalla la posicin nmero 2 del vector
5. array[3]=4 ]} Agrega una nueva posicin al vector y dicha posicin contiene el dato 4
6. echo ${array[*]} Muestra en pantalla todos los elementos del nuevo vector
7. unset array[1] Elimina la posicin nmero 1 del vector
8. echo ${array[*]} Muestra en pantalla todos los elementos del nuevo vector
Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh arreglos.sh
A continuacin el cdigo fuente:
#!/bin/bash
array=(1 2 3)
echo "Impresion de diferentes formas del array"
echo $array
echo ${array[*]}
echo ${array[2]}
array[3]=4
echo ${array[*]}
unset array[1]
echo ${array[*]}

3.

Ejecucin

4.

Conclusiones y recomendaciones

Se recomienda utilizar espacios en blanco para la mejor visualizacin del vector.


Se concluye que al eliminar una posicin del vector; se modifican las posiciones del vector.

Ejercicio #11
1.
Descripcin
Analizar y detallar que acciones realiza el archivo operaciones.sh y posteriormente ejecutarlo, dicho
programa debe recibir parmetros de texto.
2.
Solucin
Para dar solucin al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deber ejecutar
la sentencia nano operaciones.sh, a continuacin el programa recibir datos desde el teclado para luego
hacer las 4 operaciones fundamentales de la matemtica.
A continuacin explicaremos que realiza cada lnea de cdigo en nuestro script:
1. Read a esta lnea de cdigo me pide como parmetro el ingreso de un nmero y guarda en la
variable a
2. Read b esta lnea de cdigo me pide como parmetro el ingreso de un nmero y guarda en la
variable b
3. s=`expr $a + $b` realiza la suma entre las variables a y b
4. r=`expr $a - $b` realiza la resta entre las variables a y b
5. m=`expr $a '*' $b` realiza la multiplicacin entre las variables a y b
6. Para la divisin utilizaremos la estructura If puesto que no existe la divisin para cero y debemos
controlar ese error.
7. if [ $b -gt 0 ]
El if compara si el segundo nmero ingresado es mayor a 0 de
then
ser as realizara la operacin de la divisin utilizamos | bc l
d=$(echo "($a/$b)" | bc -l)
porque este comando nos conecta con la librera matemtica.
echo DIV ES: $d
else
Caso contrario si el segundo nmero es menor a 0, Enviara un
echo no hay divisin para 0
mensaje de que no existe la divisin para 0
fi
Por ltimo ejecutamos el programa en el Terminal mediante la sentencia sh operaciones.sh
A continuacin el cdigo fuente:
echo "ingrese 1er numero"
read a
echo "ingrese 2do numero"
read b
s=`expr $a + $b`
r=`expr $a - $b`
m=`expr $a '*' $b`
echo SUMA ES: $s
echo RESTA ES: $r
echo MULT ES: $m
if [ $b -gt 0 ]
then
d=$(echo "($a/$b)" | bc -l)
echo DIV ES: $d
else
echo no hay division para 0
fi

3.

Ejecucin

4.

Conclusiones y recomendaciones

Se recomienda utilizar la librera matemtica para operaciones complejas


Se concluye que la divisin para cero puede ser controlada con la estructura IF
Bibliografa:
1. Linux Total. (22 de Octubre de 2014). Obtenido de
http://www.linuxtotal.com.mx/?cont=info_admon_002
2. Soluciones Linux para empresas. (22 de Octubre de 2014). Obtenido de
http://wiki.xtech.com.ar/index.php/Programaci%C3%B3n_de_scripts_en_Bash

Potrebbero piacerti anche