Ejercicios de Scripts
A tener en cuenta:
LESS (nombre fichero):
Nos muestra el contenido de un fichero en su totalidad
MORE (nombre fichero):
Nos muestra el contenido del fichero paginándolo
Para salir de estos comandos WQ
Less (fichero) | head –n 5 nos muestra las primeras 5 lineas
Less (fichero)| tail –n 5 nos muestra las ultimas 5 lineas
Less (fichero) |grep (palabra) muestra las líneas donde se encuentra esta palabra
Para utilizar número utilizamos:
-eq
|
=
|
-me
|
¡=
|
-lt
|
<
|
-gt
|
>
|
-le
|
<=
|
-ge
|
>=
|
Para utilizar ficheros:
-a
|
Si existe
|
-d
|
Existe es un directorio
|
-f
|
Existe es un fichero
|
-r
|
Es de lectura
|
-w
|
Es de escritura
|
-x
|
Es ejecutable
|
Para dar permiso de ejecución utilizamos el comando CHMOD
Ejemplo
Chmod u +x expresión-logica.sh
U= permiso a usuario
+= agregar
X= ejecutable
Así podemos ejecutar el fichero sin utilizar el bash inicial.
CASE se suele utilizar para menus cuando hay varias opciones.
Sintaxis:
Case $variable in
Valor1)
Se ejecuta si variable tiene valor 1
;;
Valor2)
Se ejecuta si variable tiene valor 2
;;
*)Se ejecuta su variable no tiene ninguno de los valores anteriores
ESAC
Expresiones lógicas
If [Expresion]; Then
Realiza expresión si es verdadera
FI Cierra la estructura
If [Expresion]; Then
Realiza expresión si es verdadera
Else
Realiza expresión si es falsa
FI
-n utilizamos para variables si no es nula
-z Utilizamos para variables nulo, vacia o no definida
Cuando hay más de dos opciones utilizamos ELIF
If [Expresion]; Then
Realiza expresión si es verdadera
elif [Expresion]; Then
Realiza expresión si es verdadera
elif [Expresion]; Then
Realiza expresión si es verdadera
Else
Realiza expresión si es falsa
FI
-------------------------------------------------------
#!/bin/bash
-------------------------------------------------------------
#primer programa
Echo Hola mundo
Guardamos con extensión .SH - primer-programa.sh
Nos vamos al terminal y ejecutamos
bash primer-programa.sh
------------------------------------------------------------
#!/bin/bash
#!/bin/bash
#Movimiento de fichero de una ruta a otra
Mv /home/asir/ASO/TEMA1/ejercicios/tema1 /home/asir/SRI/TEMA1/DHCP/ejercicios
Echo Contenido de la carpeta ASO/TEMA1/ejercicios/
Ls /home/asir/ASO/TEMA1/ejercicios/tema1
Echo Contenido de la carpeta destino /SRI/TEMA1/DHCP/ejercicios
Ls /home/asir/SRI/TEMA1/DHCP/ejercicios
Guardamos como movimiento-fichero.sh
Ejecutamos.
------------------------------------------------------------
#!bin/bash
#Muestra nombre y apellidos por parámetros
Echo Hola $1, tienes $2 años
Guardamos como parámetros.sh
Desde terminal ejecutamos
Bash parámetros.sh Jhon 35
-------------------------------------------------------------
Fichero que solicita nombre y edad por pantalla
#!bin/bash
#Muestra nombre y apellidos por parámetros
Echo “Introduzca su nombre”
Read nombre
Echo “introduzca su edad”
Read edad
Echo “Hola eres” $nombre “ y tienes” $edad “años”
Guardamos como introduce-parametros.sh
Desde terminal ejecutamos
Bash inbtroduce-parámetros.sh Jhon 35
Aquí el introduzca su nombre hace un salto de línea para introducir el nombre, si queremos que se haga en la misma línea ponemos -n
Echo –n: Nos deja poner el nombre y la edad en la misma linea
-------------------------------------------------------------
#!bin/bash
#!bin/bash
#Muestra nombre y apellidos por parámetros
Echo -n “Introduzca su nombre: ”
Read nombre
Echo -n “introduzca su edad: ”
Read edad
Echo “Hola eres” $nombre “ y tienes” $edad “años”
READ –P: nos muestra todo con una sola línea de comando eliminamos el echo
-------------------------------------------------------------
#!bin/bash
#!bin/bash
#Muestra nombre y apellidos por variable
read –p “Introduzca su nombre: “ nombre
read -p “introduzca su edad: ” edad
Echo “Hola eres” $nombre “ y tienes” $edad “años”
Introducimos nombre y año de nacimiento, que muestre el nombre y la edad.
-------------------------------------------------------------
#!bin/bash
#Muestra nombre y apellidos por parámetros
Actual=2011
Echo Te llamas $1 y tienes $(expr $actual - $2) años.
Ejecutamos parametros1.sh jhon 1976
-------------------------------------------------------------
#!bin/bash
#Pasando por parámetro, especificamos fichero y donde moverlo
Echo Movemos el fichero $1 a la carpeta $2
Mv $1 $2
Echo nos muestra el contenido del fichero
Ls $2
---------------------------------------------------------------
#!/bind/bash
#programa que compara el nombre y nos da mensaje si somo o no
Name=jhon
Echo –n “introduce tu nombre: “
Read nombre
If [ $nombre = $name ]; then
Echo “Hola, eres” $nombre
Else
Echo “Hola, Tu no eres” $name
fi
guardamos como parámetros.sh
Ejecutamos bash parámetros.sh
----------------------------------------------------------------
Creamos script con parámetros
#!/bind/bash
#programa que compara el nombre y nos da mensaje si somo o no
Name=jhon
If [ $1 = $name ]; then
Echo “Hola, eres” $1 buenos dias
Else
Echo “Hola, Tu no eres” $name
fi
guardamos como parámetros1.sh
Ejecutamos bash parámetros1.sh jhon
-----------------------------------------------------------------
#!/bind/bash
#programa que compara el año de nacimiento
Anho=1976
Read –p “introduce tu naño de nacimiento: “ anio
If [ $anio -eq $anho ]; then
Echo “Hola, naciste ” $anho
Else
Echo “Hola, Tu no naciste ” $anho
fi
Guardamos como parámetros2.sh
Ejecutamos bash parámetros2.sh
----------------------------------------------------------
#!/bind/bash
#pasados 2 valores por parametro, indique cual de lo dos es mayor o si son iguales
read -p "introduce un valor: " num1
read -p "Introduce valor a comparar: " num2
if [ $num1 -lt $num2 ]; then
echo $num2 " Es mayor que " $num1
elif [ $num1 -eq $num2 ]; then
echo $num1 " Es igual a " $num2
else
echo $num2 " Es menor que " $num1
fi
--------------------------------------------------------
#!/bind/bash
#Mirar si el directorio pasado por parametro ya existe si es si, que muestre un mensaje. Si es no lo debe crear y decir que lo ha creado
read -p "introduce un directorio: " dir1
if [ -a $dir1 ]; then
echo " El directorio existe "
ls
else
echo "El directorio no existe"
mkdir $dir1
echo "Se ha creado el directorio " $dir1
ls
fi
-----------------------------------------------------
#!/bind/bash
#Nos pide la edad y nos dice si es mayor de edad o menor
read -p "introduce tu edad: " edad
if [ $edad -lt 18 ]; then
echo " Eres menor de edad "
elif [ $edad -gt 18 ]; then
echo "Eres mayor de edad"
else
echo "Eres mayor de edad"
fi
-----------------------------------------------------------
#!/bind/bash
#Script que mire si el fichero por parametro, existe. si existe mostrar mensaje con el nombre del fichero. Si no existe crearlo y decir que lo ha creado con el nombre quese ha puesto.
if [ -a $1 ]; then
echo "El fichero existe se llama "$1
else
touch $1
echo "Se ha creado el fichero con el nombre "$1
fi
----------------------------------------------------------
#!/bind/bash
#Script que mire si el fichero pedido, existe. si existe mostrar mensaje con el nombre del fichero. Si no existe crearlo y decir que lo ha creado con el nombre quese ha puesto.
read -p "Introduzca ruta del fichero: " f1
if [ -a $f1 ]; then
echo "El fichero existe se llama "$f1
else
touch $f1
echo "Se ha creado el fichero con el nombre "$f1
fi
----------------------------------------------------------
#!/bind/bash
#Script que reciba un nombre de fichero, verifique que existe y que es un fichero comun (lectura-escritura) lo convierta en ejecutable para el usuario y el grupo y muestre el estado final de los permisos.
if [ -f $1 ]; then
echo "El parametro introducido es un fichero"
ls -l $1
if [ -r $1 ];then
echo " Tiene permisos de Lectura"
if [ -w $1 ];then
echo "Tiene permisos de escritura "
chmod ug+x $1
ls -l $1
else
echo "No es un fichero comun"
fi
else
echo "No es un fichero comun"
fi
else
echo "El fichero no existe "
fi
------------------------------------------------------------
#!/bind/bash
#Script que reciba un nombre de fichero, verifique que existe y que es un fichero comun (lectura-escritura) lo convierta en ejecutable para el usuario y el grupo y muestre el estado final de los permisos.
if [ -f $1 ]; then
echo "El parametro introducido es un fichero"
more $1
elif [ -d $1 ]; then
cd $1
ls
else
echo " ERROR!!! no es fichero ni directorio "
fi
------------------------------------------------------------
#/!bin/bash
#Script que nos muestra un menu para elegir una opcion, y nos da un mensaje despues de la eleccion.
echo "1. Opcion uno"
echo "2. Opcion dos"
read -p "introduzca opcion:" op
case $op in
1)
echo "Ha pulsado opcion 1"
;;
2)
echo "Ha pulsado opcion 2"
;;
*)
echo "La opcion es incorrecta"
;;
esac
---------------------------------------------------------
#/!bin/bash
#Script que nos muestra un menu para elegir la operacion a realizar
echo ""
echo "Realiza una operacion matematica segun las opciones"
echo ""
echo "a.Suma"
echo "b.Resta"
echo "c.Multiplicación"
echo "d.Division entera"
echo "e.Resto"
echo "f.Es un numero par?"
read -p "Seleccione la operacion a realizar y pulse intro: " op
read -p "introduzca operando 1:" num1
if [ $op != f ]; then
read -p "introduzca operando 2:" num2
fi
case $op in
a)
suma=`expr $num1 + $num2`
echo "Ha pulsado opcion a, el resultado de la suma es "$suma
;;
b)
resta=`expr $num1 - $num2`
echo "Ha pulsado opcion b, el resultado de la resta es "$resta
;;
c)
multiplicacion=`expr $num1 \* $num2`
echo "Ha pulsado opcion c, el resultado de la multiplicacion es "$multiplicacion
;;
d)
division=`expr $num1 / $num2`
echo "Ha pulsado opcion d, el resultado de la division es "$division
;;
e)
resto=`expr $num1 % $num2`
echo "Ha pulsado opcion e, el resto es "$resto
;;
f)
res=`expr $num1 % 2`
if [ $res -eq 0 ]; then
echo " el numero introducido es " $num1 " es par"
else
echo " el numero introducido es " $num1 " No es par"
fi
;;
esac
---------------------------------------------------
#/!bin/bash
#Script que nos diga al pulsar una tecla, si es letra, numero o caracter especial
read -n 1 tecla
case $tecla in
[a-z,A-Z]) echo "ha introducido una letra"
;;
[0-9]) echo "Ha introducido un numero"
;;
*) echo "Ha introducido un caracter especial"
;;
esac
------------------------------------------------------
#!/bin/bash
#realizar un scrip que reciba varios parametros y nos diga cuantos de esos parametros son de directorios y cuantos son archivos. $# contador que indica cuantos parametros se pasan.
#realizar un scrip que reciba varios parametros y nos diga cuantos de esos parametros son de directorios y cuantos son archivos. $# contador que indica cuantos parametros se pasan.
cont=0
contf=0
for var in $*; do
if [ -d $var ]; then
cont=`expr $cont + 1`
elif [ -f $var ]; then
contf=`expr $contf + 1`
else
echo "$var no es fichero ni directorio"
fi
done
echo "Ha introducido $cont directorios y $contf ficheros."
echo "Se han introducido $# parametros"
----------------------
# Mostramos menu, con productos para vender, luego nos pide que introduzcamos la opcion. luego mensaje que indica que introduzca moneda. Si ponemos precio exacto nos da mensaje, "Gracias buen provecho", si ponemos menos, nos diga falta.
Si poner mas valor, nos indique el cambio con mensaje.
echo """"
echo "Bienvenido a la tienda On-line - CEPAL"
echo ""
echo "1. Refresco 1 euro"
echo "2. Sandiwch 3 euros"
echo "3. Tabaco 5 euros"
echo ""
read -p "Introduzca opcion:" op
read -p " Introduzca importe: " mon
case $op in
1)
precio=1
;;
2)
precio=3
;;
3)
precio=5
;;
*)
echo "Opcion incorrecta"
esac
while [ $mon -lt $precio ]; do
falta=`expr $precio - $mon`
read -p " Introduzca $falta euros, por favor introduzcalos" mas
mon=`expr $mon + $mas`
done
if [ $mon -gt $precio ]; then
cambio=`expr $mon - $precio`
echo "Gracias por su compra, su cambio es de $cambio euros"
else
echo "Gracias por su compra. Buen provecho"
fi
---------------
#!/bin/bash
#Realizar un script que pida introducir la ruta de un directorio por teclado (Hay que validar que la variable introducida sea un directorio) nos diga cuantos archivos y cuantos directorios hay dentro de ese directorio.
read -p "Introduzca la ruta de un directorio :" dir
until [ -d $dir ]; do
read -p "Introduzca la ruta de un directorio :" dir
done
cont=0
contf=0
for var in `ls $dir`; do
if [ -d $var ]; then
cont=`expr $cont + 1`
elif [ -f $var ]; then
contf=`expr $contf + 1`
fi
done
echo "Ha introducido $cont directorios y $contf ficheros."
echo "Se han introducido $# parametros"
-------------------------------------
#/!bin/bash
#Realiza un script que introduzca numero por parametro y muestre tabla de multiplicar
#Realiza un script que introduzca numero por parametro y muestre tabla de multiplicar
echo " la tabla de multiplicar de $1 es: "
numerador=1
while [ $numerador -lt 11 ]; do
resul=`expr $1 \* $numerador`
echo "$1 x $numerador = $resul"
numerador=`expr $numerador + 1`
done
------------------
#!/bind/bash
#apertura carpeta contenido ASIR
ls /home/asir#apertura carpeta contenido ASIR
------------------------
#/!bin/bash
#Realiza un script que muestre por pantalla los numeros del 1 al 20
num=1
while [ $num -lt 21 ]; do
echo "$num"
num=`expr $num + 1`
done
---------------------------
Bien montado amigo!
ResponderEliminarMuy buena recopilación. Saludos!
ResponderEliminarQue te parece esto para resolver el de número de directorios y ficheros:
ResponderEliminar#!/usr/bin/env bash
read -p "Introduzca la ruta de un directorio :" dir
until [ -d $dir ]; do
read -p "Introduzca la ruta de un directorio :" dir
done
contd=`find ${dir}/* -maxdepth 0 -type d | wc -l`
contf=`find ${dir}/* -maxdepth 0 -type f | wc -l`
echo "Ha introducido $contd directorios y $contf ficheros."
echo "Se han introducido $# parametros $*"
Yo hice esto:
Eliminar#!/bin/bash
# verdirectorio.sh
DIREC=0
until [ -d $DIREC ]; do
read -p "Por favor, introduzca el nombre de un directorio: " DIREC
done
NUMFICH=`ls -l $DIREC | grep -e ^- | wc -l`
NUMDIR=`ls -l $DIREC | grep -e ^d | wc -l`
echo "Dentro de $DIREC hay $NUMDIR directorios y $NUMFICH archivos"
Hola me podrías ayudar a hacer unas prácticas de scripts para aprobar la asignatura de Linux de ASIR2? Sería de gran ayuda.
ResponderEliminarHola! podrian ayudarme con este programa?
ResponderEliminarRealice un script que defina la variable llamada KERNEL que referencia al directorio donde se encuentra el núcleo del SO. ¿Qué pasa cuando el usuario finaliza su sesión? ¿Cómo solucionaría el problema?
Tarea De giovanna garrido ...
Eliminardado el nombre de archivo como parametro, verifique si esta en mayuscula y renombralo a mayuscula preguntando se desea hacerlo. gracias..
ResponderEliminarMe podrian ayudar porfavor con este script por mas facil que se pueda ver para algunos; me gustaria que me ayuden con su conocimiento
ResponderEliminar1.- Hacer un script que admita como parametros el nombre de dos ficheros, El script debe avisar si los parametros pasados no existen como ficheros, o si no se le pasan parametros, o si solo se pasa un parametro. Una vez comprobados que se le han pasado dos ficheros, el script debe mostrar por pantalla el tamaño en KB de cada uno de ellos
Hola me podian ayudar con este script, para tarea de ASO.
ResponderEliminarCrea un script que reciba un fichero o un directorio como parámetro de entrada.
Si es un fichero:
visualiza su contenido
Si es un directorio:
mostrará el contenido de este
Si no es un fichero ni un directorio:
informará con el mensaje adecuado
Me podian ayudar con este script, gracias.
ResponderEliminarScript de Linux: gestión_claves.sh
Usando una máquina de Ubuntu Desktop, crea un script que lea el fichero /etc/shadow y cree los siguientes archivos de texto:
con_clave.txt: debe contener los usuarios que tengan clave codificada
sin_clave.txt: debe contener los usuarios que no tengan clave
Te puede ser de ayuda crear una copia del fichero /etc/shadow para poder trabajar con él en el script.
Considereaciones a tener en cuenta:
El script debe incluir tu nombre y la fecha y hora al final de los ficheros creados.
Es decir, el fichero con_clave.txt y sin_clave.txt deben terminar con la línea:
Fichero creado por:
Fecha y hora: fecha y hora del sistema
Nota: no será evaluado ningún script que no cumpla estos últimos requisitos
hola me podrían ayudar escribir un script que determine cuanto espacio en disco ocupa el directorio /home
ResponderEliminarbuenas me gustaria que me echarais una mano con este ejercicio
ResponderEliminarSe desea implementar un pequeño juego mediante un script para Bash. El juego consistirá en lo siguiente:
1. El jugador deberá acertar una palabra oculta
2. El jugador dispondrá de 5 intentos para acertar la palabra oculta
3. La palabra se tomará aleatoriamente de entre las palabras existentes es un fichero en el cual existe una palabra por línea. NOTA: para tomar de manera aleatoria una línea de un fichero se puede utilizar el comando:
shuf -n1 filename
donde filename es el nombre del fichero que contiene una palabra por línea.
El programa, al iniciarlo deberá solicitar una palabra al jugador y mostrar el número de intentos restantes (5). El jugador, introducirá la palabra que considere correcta a través del teclado. Si el usuario acierta la palabra oculta, el programa mostrará un mensaje indicando "HAS ACERTADO" y finalizará la ejecución del juego. Si no se acierta, se indicará "NO HAS ACERTADO. VUELVE A ESCRIBIR UNA PALABRA" junto al número de intentos restantes. Si el jugador no ha acertado en 5 intentos, se mostrará el mensaje "HAS PERDIDO" y finalizará el juego.
Buenas me podríais ayudar con estos 3 scripts se lo agradecería mucho.
ResponderEliminar1. Realizar un script que permita realizar copias de seguridad. Para ello, pedirá al usuario por pantalla el lugar donde almacenar las copias de seguridad. Si no es un directorio, avisará del fallo y volverá a pedir el directorio. El nombre del fichero comprimido será el nombre del usuario activo más “_comprimido.tar”. Cuando esté correctamente solicitará ficheros o directorios, comprobando que existen, hasta que el usuario deje en blanco la respuesta.
2. Realizar un script que permita generar usuarios dada una lista de nombres que recibe de un fichero. El fichero debe pasarse por parámetro. El fichero de lista de nombres tendrá el formato “usuario1 usuario2 usuario3 usuario4”.
3. Realizar un script que permita realizar tareas básicas de administración. Se debe comprobar que el script lo lanza el administrador, si no, avisará que solo lo puede usar el super usuario. Dependiendo del primer parámetro recibido, se realizarán operaciones con los parámetros adicionales. Por ejemplo “./P4_3.sh -p 755 archivo” cambiará los permisos del archivo, “.P4_3.sh -ip eth0 on” activará la interfaz de red “eth0”. Las operaciones son:
a. “-p” para modificar los permisos de un archivo.
b. “-ip” para modificar el estado de una interfaz de red (up o down).
c. “-o” para modificar el propietario de un archivo.
d. “-l” listará un directorio
i. “-a” listará el directorio y los ocultos
ii. “-l” listará el directorio con detalles
e. Si se introduce un parámetro que no existe o no se puede realizar las operaciones por falta o excedente de parámetros, mostrar un mensaje de ayuda de cómo utilizar este script.