Sei sulla pagina 1di 12

UNIVERSIDAD POLITÉCNICA SALESIANA CARRERA DE INGENIERÍA EN SISTEMAS SISTEMAS OPERATIVOS II

Nombre:

Paul Velasco

Laboratorio # 4 Nivel: 5to G2

Ejercicio #1

Fecha: 22/10/14

1. Descripción

Analizar y detallar que acciones realiza el archivo variables.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano variables.sh, a continuación 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 información 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 extensión.tgz que se ha colocado en este ejercicio. Se procede a imprimir en pantalla con el código de: echo $OF.

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

A continuación el código fuente:

#Variables en el Bash

#

OF=/home/${USER}-$(date +%d%m%Y).tgz

echo $OF

3. Ejecución

+%d%m%Y).tgz echo $OF 3. Ejecución 4. Conclusiones y recomendaciones  Se recomienda

4. Conclusiones y recomendaciones

Se recomienda utilizar el editor de textos NANO puesto que es más dinámico que el editor Vi.

Se concluye que las variables pueden almacenar datos numéricos, alfanuméricos, textuales, etc.

Ejercicio #2

1. Descripción

Analizar y detallar que acciones realiza el archivo mysystem.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar

la sentencia nano mysystem.sh, a continuación el programa nos muestra combinaciones de comandos del

terminal que son guardarlos en variables, luego proceden a ser impresos de forma ordenada.

A continuación 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 información de los usuarios conectados al sistema DATE que nos muestra la fecha del sistema, date +"%V" que muestra la fecha y el número de semana en el año, (w | cut -d " " -f 1 - | grep -v USER | sort -u), esta combinación de comandos nos muestra el nombre del usuario en el que estamos trabajando, pero corta las líneas que tengan un espacio después del nombre del usuario y si la línea 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 continuación el código fuente:

#!/bin/bash clear; echo "Información 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. Ejecución

uptime echo echo "¡Esto es todo!" 3. Ejecución 4. Conclusiones y recomendaciones  Se concluye que

4. Conclusiones y recomendaciones

Se concluye que se pueden realizar varias combinaciones con los comandos utilizando tuberías

Se recomienda imprimir un encabezado con “echo” de cada acción realizada por los comandos

Ejercicio #3

1. Descripción

Analizar y detallar que acciones realiza el archivo if.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano if.sh, a continuación el programa nos muestra dos expresiones diferentes y en la evaluación nos indica que si son iguales arroje un mensaje de verdadero o falso, y en la segunda evaluación nos indica que si son diferentes nos arroje un mensaje de verdadero o falso, A continuación detallaremos cada sentencia utilizada:

T1="pirulo" ; T2="pirulon": son las variables que vamos a utilizar.

if [ "$T1" = "$T2" ] esta es la evaluación 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 evaluación 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

continuación el código fuente:

 
 

#!/bin/bash

T1="pirulo"

T2="pirulon"

if [ "$T1" = "$T2" ]; then echo expresión evaluada como verdadera

else

echo expresión evaluada como falsa

fi

if [ "$T1" != "$T2" ]; then echo expresión evaluada como verdadera

else

echo expresión evaluada como falsa

fi

3.

Ejecución

evaluada como verdadera else echo expresión evaluada como falsa fi 3. Ejecución 4. Conclusiones y recomendaciones

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 comparación en la sentencia IF.

Ejercicio #4

1. Descripción

Analizar y detallar que acciones realiza el archivo select.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano select.sh, a continuación 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 Opción1"

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. Adiós. Exit elif [ "$opt" = "Opción1" ]; 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 continuación el código fuente:

#!/bin/bash OPCIONES="Salir Opción1" select opt in $OPCIONES; do if [ "$opt" = "Salir" ]; then echo Salir. Adiós. exit elif [ "$opt" = "Opción1" ]; then echo Hola UOC

else

clear echo opción no permitida

done

fi

3. Ejecución

clear echo opción no permitida done fi 3. Ejecución 4. Conclusiones y recomendaciones  Se recomienda

4. Conclusiones y recomendaciones

Se recomienda tabular la programación interna para evitar confusiones

Se concluye que la sentencia select es muy parecida a la sentencia if

Ejercicio #5

1. Descripción

Analizar y detallar que acciones realiza el archivo case.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano case.sh, a continuación 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 partición, 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 continuación el código 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="Podría comenzar a borrar algo en $space %" ;;

9[1-8])

Message="Uff. Mejor un nuevo disco. Partición $space % a tope." ;;

99)

Message="Pánico! No tiene espacio en $space %!" ;; *) Message="NO tienen nada ;; esac echo $Message

"

3. Ejecución

tienen nada ;; esac echo $Message " 3. Ejecución 4. Conclusiones y recomendaciones  Se recomienda

4. Conclusiones y recomendaciones

Se recomienda utilizar la opción “ *) ” para el caso de que se ingresen opciones inválidas

Se concluye que la estructura select y case son muy similares

Ejercicio #6

1. Descripción

Analizar y detallar que acciones realiza el archivo while.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano while.sh, a continuación el programa nos muestra la utilización del bucle mientras cuyo propósito es repetir un bloque de código mientras una condición se mantenga verdadera.

1. Declaramos una variable denominada contador = 0

2. Utilizamos el bucle while [ $contador -lt 10 ]; do y establecemos que la condición debe cumplirse mientras en contador sea menor a 10

3. echo El contador es: $contador En esta sección imprimimos en pantalla el contador

4. let contador=contador+1 En esta sección el contador aumentara en +1 hasta finalizar el bucle.

5. Cerramos el bucle con la instrucción DONE

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

A continuación el código fuente:

#!/bin/bash

contador=0

while [ $contador -lt 10 ]; do echo El contador es: $contador let contador=contador+1

done

3. Ejecución

es: $contador let contador=contador+1 done 3. Ejecución 4. Conclusiones y recomendaciones  Se recomienda

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 comparación para los bucles

Ejercicio #7

1. Descripción

Analizar y detallar que acciones realiza el archivo for.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano for.sh, a continuación el programa nos muestra el bucle for el cual permite ejecutar un conjunto de sentencias cierto número de veces. A continuación explicaremos que realiza cada línea en el programa for.sh :

1.

primero se evalúan las expresiones “i” y $(ls) La variable del bucle recorrerá los valores desde el número dado por

done la expresión “i” hasta el número dado por la expresión “ls”, y done terminara el bucle

for i in $( ls ); do echo elemento: $i

terminara el bucle for i in $( ls ); do echo elemento: $i 2. for i
2. for i in `seq 1 10`; do echo -n ${i}, igual que en la
2.
for i in `seq 1 10`;
do
echo -n ${i},
igual que en la línea anterior “i” recorrerá los valores dados en la
done secuencia 1 hasta 10, con el comando echo –n imprimirá de forma
echo horizontal la secuencia. Finalmente con DONE terminamos el bucle.

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

A continuación el código 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. Ejecución

`seq 1 10`; do echo -n ${i}, done echo 3. Ejecución 4. Conclusiones y recomendaciones 

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 números

Ejercicio #8

1. Descripción

Analizar y detallar que acciones realiza el archivo until.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano until.sh, a continuación el programa nos muestra la utilización del bucle UNTIL cuyo propósito es repetir un bloque de código hasta que la condición sea verdadera.

1. Declaramos una variable denominada contador = 20

2. Utilizamos el bucle until [ $contador -lt 10 ]; do y establecemos que la condición debe cumplirse mientras en contador sea menor a 10

3. echo El contador Until: $contador

4. let contador-1 En esta sección el contador disminuirá en -1 hasta finalizar el bucle.

5. Cerramos el bucle con la instrucción DONE

En esta sección imprimimos en pantalla el contador

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

A continuación el código fuente:

#!/bin/bash

contador=20

until [ $contador -lt 10 ]; do echo contador-Until $contador let contador-=1

done

3. Ejecución

$contador let contador-=1 done 3. Ejecución 4. Conclusiones y recomendaciones  Se recomienda

4. Conclusiones y recomendaciones

Se recomienda inicializar siempre el contador con algún valor.

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

Ejercicio #9

1. Descripción

Analizar y detallar que acciones realiza el archivo funciones.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano funciones.sh, a continuación el programa nos muestra como almacenar sentencias, comandos, etc. En métodos que posteriormente podremos llamar en nuestro script, las veces que deseemos.

A

continuación detallaremos la utilización de estos métodos:

1. Function nombre_método { operaciones y/o sentencias }

2. Ahora para llamar al método solo digitando su nombre en este caso será: nombre_método

El

ejemplo de nuestro script utiliza el comando exit para salir y el comando echo para imprimir dos comandos

sencillos almacenados en dos métodos distintos.

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

A continuación el código fuente:

#!/bin/bash function salir { exit

}

function hola {

echo "Hola PAul!"

}

hola salir echo "Nunca llegara a esta línea"

3. Ejecución

echo "Nunca llegara a esta línea" 3. Ejecución 4. Conclusiones y recomendaciones  Se recomienda usar

4. Conclusiones y recomendaciones

Se recomienda usar nombres cortos para los métodos que vayamos a implementar

Se concluye que podemos utilizar el mismo método las veces que sean necesarias

Ejercicio #10

1. Descripción

Analizar y detallar que acciones realiza el archivo arreglos.sh y posteriormente ejecutarlo.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano arreglos.sh, a continuación el programa nos muestra la utilización de varios números almacenados correctamente en un vector. A continuación explicaremos que realiza cada línea de código 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 posición del vector

3. echo ${array[*]} Muestra en pantalla todos los elementos del vector

4. echo ${array[2]} Muestra en pantalla la posición número 2 del vector

5. array[3]=4 ]} Agrega una nueva posición al vector y dicha posición contiene el dato “4”

6. echo ${array[*]} Muestra en pantalla todos los elementos del nuevo vector

7. unset array[1] → Elimina la posición número 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 continuación el código 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. Ejecución

${array[*]} unset array[1] echo ${array[*]} 3. Ejecución 4. Conclusiones y recomendaciones  Se recomienda

4. Conclusiones y recomendaciones

Se recomienda utilizar espacios en blanco para la mejor visualización del vector.

Se concluye que al eliminar una posición del vector; se modifican las posiciones del vector.

Ejercicio #11

1. Descripción

Analizar y detallar que acciones realiza el archivo operaciones.sh y posteriormente ejecutarlo, dicho

programa debe recibir parámetros de texto.

2. Solución

Para dar solución al problema primero se debe abrir el Terminal de Linux, luego de lo cual se deberá ejecutar la sentencia nano operaciones.sh, a continuación el programa recibirá datos desde el teclado para luego hacer las 4 operaciones fundamentales de la matemática. A continuación explicaremos que realiza cada línea de código en nuestro script:

1. Read a → esta línea de código me pide como parámetro el ingreso de un número y guarda en la variable a

2. Read b → esta línea de código me pide como parámetro el ingreso de un número 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 multiplicación entre las variables a y b

6. Para la división utilizaremos la estructura If puesto que no existe la división para cero y debemos controlar ese error.

7. if [ $b -gt 0 ]

para cero y debemos controlar ese error. 7. if [ $b -gt 0 ] El if

El if compara si el segundo número ingresado es mayor a 0 de ser así realizara la operación de la división utilizamos | bc l porque este comando nos conecta con la librería matemática.

Caso contrario si el segundo número es menor a 0, Enviara un mensaje de que no existe la división para 0

then d=$(echo "($a/$b)" | bc -l) echo DIV ES: $d else echo no hay división para 0

fi Por último ejecutamos el programa en el Terminal mediante la sentencia sh operaciones.sh A continuación el código 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:

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

$s

3. Ejecución

$b -gt 0 ] then d=$(echo "($a/$b)" | bc -l) echo DIV ES: $d else echo

4.

Conclusiones y recomendaciones

Se recomienda utilizar la librería matemática para operaciones complejas

Se concluye que la división para cero puede ser controlada con la estructura IF

Bibliografía:

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