Contenido
Ejercicio Nº 1: Hola Mundo!!
Desarrolla un programa en Bash que imprima el mensaje «Hola Mundo» en la consola utilizando el comando echo. El programa debe ser guardado en un archivo con extensión .sh y debe tener permisos de ejecución. Cuando se ejecute el programa, debería imprimirse el mensaje «Hola Mundo» en la consola.
Resolución:
Abre tu editor de texto favorito y crea un nuevo archivo. Para este ejemplo, llamaremos al archivo «holamundo.sh».
Escribe el siguiente código en el archivo:
#!/bin/bash
echo "Hola Mundo"
La primera línea #!/bin/bash
indica al sistema operativo que se debe utilizar el intérprete de comandos Bash para ejecutar el script. La segunda línea usa el comando «echo» para imprimir el mensaje «Hola Mundo» en la consola.
- Guarda el archivo y asegúrate de darle permisos de ejecución utilizando el siguiente comando:
chmod +x holamundo.sh
Este comando agrega permisos de ejecución al archivo «holamundo.sh».
- Para ejecutar el programa, en la terminal o línea de comandos, navega hasta la ubicación donde se encuentra el archivo «holamundo.sh» y escribe el siguiente comando:
./holamundo.sh
El resultado en la consola será la impresión del mensaje «Hola Mundo».
¡Y eso es todo! Con estos sencillos pasos has creado un programa en Bash que imprime «Hola Mundo» en la consola.
Lectura recomendada
Link de Compra en Amazon:
🛒 https://amzn.to/3ZMRl86
Contenido del libro:
A través de conceptos básicos, análisis de vulnerabilidades, técnicas de ataque y contramedidas, descubrirás cómo los administradores pueden pensar como hackers para fortalecer redes, servidores y aplicaciones contra amenazas. Con ejercicios prácticos y explicaciones claras, es la guía perfecta para estudiantes y profesionales interesados en la ciberseguridad.
Link de Compra en Amazon:
🛒 https://amzn.to/41LHXEd
Kit todo en uno para exploración tecnológica: incluye el Flipper Zero, una tarjeta de desarrollo WiFi, una funda de silicona, una tarjeta MicroSD de 32 GB y un adaptador MicroSD a SD, que ofrece todo lo que necesita para comenzar sus proyectos tecnológicos y de seguridad cibernética.
Ejercicio Nº 2: Variables en Bash Scripting
Crea un script de Bash que declare y asigne valores a las siguientes variables:
- «nombre» con valor «Firox».
- «nombres» con valores «Juan», «Pedro», «Manolo» y «Paco» .
- «edad» con valor «80».
- «PI» con valor «3,14».
- «ruta» con el valor de la ruta actual del directorio.
- «primerArgumento» con el valor del primer argumento que se pase al script.
- «segundoArgumento» con el valor del segundo argumento que se pase al script.
- «shell» con el valor de la variable de entorno SHELL.
Luego, imprime en la consola el valor de cada variable utilizando el comando «echo».
- Abre un editor de texto (p. ej., Visual Studio Code).
- Crea un archivo nuevo y guárdalo con el nombre que desees, pero con la extensión «.sh» al final para indicar que es un script de Bash (p. ej., «variables.sh»).
- Abre el archivo con el editor de texto y agrega el siguiente contenido:
code variables.sh
#!/bin/bash
# Variables
nombre=Firox
nombres=("Juan" "Pedro" "Manolo" "Paco")
edad=80
PI=3,14
ruta=$(pwd)
primerArgumento=$1
segundoArgumento=$2
sumaArgumentos=$(($1 + $2))
shell=$SHELL
# Imprimir valores de variables
echo "Mi nombre es $nombre"
echo "Y mi vecino se llama ${nombres[0]} y tiene una edad de $edad años."
echo "El número Pi es igual a $PI"
echo "[+] Estoy en la ruta: $ruta"
echo "[+] El primer argumento es $primerArgumento y el segundo es $segundoArgumento"
echo "La suma de los argumentos es $sumaArgumentos"
echo "La variable de entorno SHELL es $shell"
nombre
: Esta variable almacena una cadena de caracteres con el valor «Firox». En este caso, se utiliza para representar el nombre de una persona, pero puede contener cualquier tipo de información que se pueda representar como texto.nombres
: Esta variable almacena un array de cadenas de caracteres con los valores «Juan», «Pedro», «Manolo» y «Paco». Los arrays en Bash se definen utilizando paréntesis y los valores se separan por espacios. En este caso, se utiliza para representar los nombres de varias personas, pero se puede usar para almacenar cualquier tipo de datos que se puedan representar como una lista.edad
: Esta variable almacena un número entero con el valor «80». En este caso, se utiliza para representar la edad de una persona, pero se puede usar para almacenar cualquier tipo de datos que se puedan representar como un número entero.PI
: Esta variable almacena un número con el valor «3,14». En este caso, se utiliza para representar el número Pi, pero se puede usar para almacenar cualquier tipo de datos que se puedan representar como un número con decimales.ruta
: Esta variable almacena una cadena de caracteres con el valor de la ruta actual del directorio, que se obtiene utilizando el comando «pwd». En este caso, se utiliza para representar la ruta del directorio actual, pero se puede usar para almacenar cualquier tipo de datos que se puedan representar como una ruta de archivo o directorio.primerArgumento
ysegundoArgumento
: Estas variables almacenan los valores del primer y segundo argumento que se pasan al script, respectivamente. Los argumentos son valores que se pasan al script cuando se ejecuta, separados por espacios. En este caso, se utilizan para representar valores numéricos que se pueden sumar.sumaArgumentos
: Esta variable almacena la suma de los valores deprimerArgumento
ysegundoArgumento
, que se calcula utilizando el operador aritmético de Bash «$((…))». En este caso, se utiliza para calcular la suma de los argumentos numéricos que se pasan al script.shell
: Esta variable almacena el valor de la variable de entorno «SHELL», que representa la ruta del shell (Intérprete de Comandos) utilizado actualmente en la terminal. En este caso, se utiliza para mostrar información sobre el shell que se está utilizando actualmente.
Ejercicio Nº 3: Lotería
Desarrolla un script en Bash que:
- Solicite al usuario ingresar un número del 1 al 20.
- Si el número ingresado es igual a 8, el script debe imprimir «Premio Gordo» en la consola.
- Si el número ingresado es igual a 3, el script debe imprimir «Segundo Premio» en la consola.
- En cualquier otro caso, el script debe imprimir «Sigue jugando» en la consola.
- Guarda el script en un archivo con extensión «.sh» y asegúrate de darle permisos de ejecución.
Cuando se ejecute el script, debería solicitar al usuario ingresar un número y mostrar el mensaje correspondiente según la condición cumplida.
Resolución:
La primera línea
#!/bin/bash
indica al sistema operativo que se debe utilizar el intérprete de comandos Bash para ejecutar el script.El comando «echo» se utiliza para imprimir un mensaje en la consola, indicando al usuario que ingrese un número del 1 al 20. La opción «-e» se utiliza para habilitar la interpretación de caracteres especiales como «\n», que se usa para imprimir un salto de línea antes del mensaje.
#!/bin/bash
echo -e "\n[+]Ingresa un número del 1 al 20 : \n"
- El comando «read» se utiliza para leer la entrada del usuario y almacenarla en la variable «num». La variable «num» se utilizará más adelante en el script.
#!/bin/bash
echo -e "\n[+]Ingresa un número del 1 al 20 : \n"
read num
- Se utiliza un condicional «if-elif-else» para evaluar el valor de «num» y decidir qué mensaje debe imprimirse en la consola. El condicional comienza con la palabra clave «if», seguida de la condición que se debe evaluar. En este caso, la condición es si «num» es igual a 8.
#!/bin/bash
echo -e "\n[+]Ingresa un número del 1 al 20 : \n"
read num
if [ $num -eq 8 ]; then
fi
- Si la condición del «if» se cumple, se ejecuta el bloque de código que está dentro de él. En este caso, el bloque de código simplemente imprime «Premio Gordo» en la consola.
#!/bin/bash
echo -e "\n[+]Ingresa un número del 1 al 20 : \n"
read num
if [ $num -eq 8 ]; then
echo -e "\nPremio Gordo"
fi
- Si la condición del «if» no se cumple, se pasa a la siguiente condición en el condicional, que comienza con la palabra clave «elif». En este caso, la condición es si «num» es igual a 3.
- Si la condición del «elif» se cumple, se ejecuta el bloque de código que está dentro de él. En este caso, el bloque de código simplemente imprime «Segundo Premio» en la consola.
#!/bin/bash
echo -e "\n[+]Ingresa un número del 1 al 20 : \n"
read num
if [ $num -eq 8 ]; then
echo -e "\nPremio Gordo"
elif [ $num -eq 3 ]; then
echo -e "\nSegundo Premio"
fi
- Si la condición del «elif» no se cumple, se ejecuta el bloque de código que está dentro del «else». En este caso, el bloque de código simplemente imprime «Sigue jugando» en la consola.
- El condicional termina con la palabra clave «fi», que indica el final del bloque de código.
#!/bin/bash
echo -e "\n[+]Ingresa un número del 1 al 20 : \n"
read num
if [ $num -eq 8 ]; then
echo -e "\nPremio Gordo"
elif [ $num -eq 3 ]; then
echo -e "\nSegundo Premio"
else
echo -e "\nSigue jugando"
fi
- Una vez que se ha ejecutado el condicional, el script termina.
- Finalmente, debes dar permisos de ejecución al script utilizando el comando «chmod». La opción «+x» indica que se deben dar permisos de ejecución al archivo.
- Para ejecutar el script, debes utilizar el comando «./» seguido del nombre del archivo:
chmod +x loteria.sh
./loteria.sh
¡Y eso es todo! Este es un ejemplo básico de cómo utilizar condicionales en un script de Bash para controlar el flujo del programa en función de la entrada del usuario.
Ejercicio Nº 4: Mayor o menor
Escribe un script de Bash que pida al usuario ingresar dos números y luego los compare para determinar cuál es mayor, cuál es menor o si son iguales. La respuesta del ejercicio debe ser el script Bash proporcionado que realiza la comparación de números.
Resolución:
La primera línea
#!/bin/bash
indica al sistema operativo que el archivo es un script de Bash y debe ser ejecutado por el intérprete de Bash.La siguiente línea
echo -e "\n$[+] Ingresa los dos número que quieras comparar:\n"
muestra un mensaje en la terminal que pide al usuario que ingrese dos números para ser comparados. El uso de-e
en la opciónecho
permite la interpretación de caracteres especiales como\n
(salto de línea).Las siguientes dos líneas
read num1
yread num2
leen los dos números que el usuario ingresa desde la terminal y los almacenan en las variablesnum1
ynum2
, respectivamente.
#!/bin/bash
echo -e "\n$[+] Ingresa los dos número que quieras comparar:\n"
read num1
read num2
La siguiente línea
if [ $num1 -eq $num2 ]; then
es una estructura de controlif
que evalúa si el valor denum1
es igual al valor denum2
. Si los valores son iguales, entonces se ejecuta el siguiente bloque de código dentro delif
.La línea
echo -e "\n Los dos números son iguales."
muestra un mensaje en la terminal que indica que los dos números ingresados son iguales.
#!/bin/bash
echo -e "\n$[+] Ingresa los dos número que quieras comparar:\n"
read num1
read num2
if [ $num1 -eq $num2 ]; then
echo -e "\n Los dos números son iguales."
fi
Si los valores de
num1
ynum2
no son iguales, el siguiente bloque de código dentro delif
se salta y se ejecuta la siguiente líneaelif [ $num1 -gt $num2 ]; then
.La línea
elif [ $num1 -gt $num2 ]; then
es otra estructura de controlif
que evalúa si el valor denum1
es mayor que el valor denum2
. Sinum1
es mayor quenum2
, entonces se ejecuta el siguiente bloque de código dentro delelif
.La línea
echo -e "\n El número $num1 es mayor que $num2"
muestra un mensaje en la terminal que indica quenum1
es mayor quenum2
.
#!/bin/bash
echo -e "\n$[+] Ingresa los dos número que quieras comparar:\n"
read num1
read num2
if [ $num1 -eq $num2 ]; then
echo -e "\n Los dos números son iguales."
elif [ $num1 -gt $num2 ]; then
echo -e "\n El número $num1 es mayor que $num2"
fi
Si
num1
no es mayor quenum2
, el siguiente bloque de código dentro delelif
se salta y se ejecuta la siguiente líneaelse
.La línea
else
es una estructura de controlif
que se ejecuta si ninguna de las condiciones anteriores es verdadera. En este caso, significa quenum1
es menor quenum2
.
#!/bin/bash
echo -e "\n$[+] Ingresa los dos número que quieras comparar:\n"
read num1
read num2
if [ $num1 -eq $num2 ]; then
echo -e "\n Los dos números son iguales."
elif [ $num1 -gt $num2 ]; then
echo -e "\n El número $num1 es mayor que $num2"
else
echo -e "\n El número $num1 es menor que $num2"
fi
La línea
echo -e "\n El número $num1 es menor que $num2"
muestra un mensaje en la terminal que indica quenum1
es menor quenum2
.El script termina con la palabra clave
fi
que indica el final de la estructura de controlif
.
Ejercicio Nº 5: Par o Impar
Desarrolla un script en Bash para determinar si la suma de dos números es par o impar. Para lograr esto, el script debe seguir los siguientes pasos:
- Leer los dos números ingresados como argumentos.
- Sumar los dos números.
- Verificar si la suma es un número par o impar usando el operador módulo.
- Imprimir el resultado: «El número [suma] es un número par.» o «El número [suma] es un número impar.» según corresponda.
Resolución:
Abre un editor de texto y crea un nuevo archivo. Por ejemplo, puedes nombrar el archivo «par-impar.sh».
Agrega el siguiente encabezado al archivo para indicar que se usará el intérprete de Bash:
#!/bin/bash
Agrega las siguientes líneas de código para leer los dos números ingresados como argumentos y almacenarlos en variables:
variable1=$1 variable2=$2
#!/bin/bash
variable1=$1
variable2=$2
La variable «$1» representa el primer argumento y «$2» representa el segundo argumento. Estos valores se asignan a las variables «variable1» y «variable2», respectivamente.
Agrega las siguientes líneas de código para sumar los dos números:
suma=$(($variable1 + $variable2))
La variable «suma» contiene el resultado de la suma de «variable1» y «variable2».
Agrega las siguientes líneas de código para verificar si la suma es un número par o impar:
if [ $((suma % 2)) -eq 0 ]; then echo "El número $suma es un número par." else echo "El número $suma es un número impar." fi
La expresión "$((suma % 2))" calcula el resto de la división de "suma" por 2. Si el resultado es 0, entonces la suma es un número par. Si el resultado es diferente de cero, entonces la suma es un número impar. La sentencia "if" verifica el resultado y imprime el mensaje correspondiente usando la sentencia "echo".
Agrega las siguientes líneas de código para verificar si la suma es un número par o impar:
if [ $((suma % 2)) -eq 0 ]; then echo «El número $suma es un número par.» else echo «El número $suma es un número impar.» fi
La expresión «$((suma % 2))» calcula el resto de la división de «suma» por 2. Si el resultado es 0, entonces la suma es un número par. Si el resultado es diferente de cero, entonces la suma es un número impar. La sentencia «if» verifica el resultado y imprime el mensaje correspondiente usando la sentencia «echo».
#!/bin/bash
variable1=$1
variable2=$2
suma=$(($variable1 + $variable2))
if [ $((suma % 2)) -eq 0 ]; then
echo "El número $suma es un número par"
else
echo "El número $suma es un número impar."
fi
Guarda el archivo y ciérralo.
Abre una terminal y cambia al directorio donde guardaste el archivo «par-impar.sh».
Otorga permisos de ejecución al archivo usando el siguiente comando:
chmod +x par-impar.sh
Ejecuta el archivo usando los dos números que quieres sumar como argumentos. Por ejemplo, si quieres sumar los números 3 y 5, ejecuta el siguiente comando:
./par-impar.sh 3 5
El resultado debe ser:
El número 8 es un número par.
Ejercicio Nº 6: Listar archivos
Crear un script en Bash que imprima todos los nombres de archivo en el directorio actual utilizando un bucle for.
Resolución:
#!/bin/bash
echo -e "\n[+] Hola $USER"
echo -e "\n[+] Te encuentras en la ruta: \n\n $(pwd)\n"
for i in *; do
echo -e "$(ls -l $i | awk '{print $1, $NF}')"
done
La primera línea indica que el script se ejecutará en el intérprete de comandos Bash. La segunda línea utiliza el comando echo
para imprimir un mensaje en la pantalla que saluda al usuario actual del sistema, cuyo nombre se obtiene mediante la variable de entorno $USER
. El argumento -e
se utiliza para permitir el uso de secuencias de escape en el mensaje.
#!/bin/bash
echo -e "\n[+] Hola $USER"
La tercera línea utiliza el comando echo
para imprimir un mensaje en la pantalla que indica la ruta actual del usuario en el sistema de archivos, que se obtiene mediante el comando pwd
. El mensaje también incluye secuencias de escape para crear líneas en blanco antes y después del mensaje.
echo -e "\n[+] Te encuentras en la ruta: \n\n $(pwd)\n"
La cuarta línea es el inicio de un bucle for
que se utiliza para iterar a través de los archivos y directorios en el directorio actual (indicado por el comodín *
). En cada iteración del bucle, el nombre del archivo o directorio se almacena en la variable i
.
for i in *; do
echo -e "$(ls -l $i | awk '{print $1, $NF}')"
done
Dentro del bucle, se utiliza el comando ls -l $i
para obtener información detallada sobre el archivo o directorio, incluyendo los permisos de acceso, el propietario y la fecha de modificación. Esta información se pasa a través de un pipe (|
) al comando awk
, que se utiliza para imprimir los permisos y el nombre del archivo o directorio en el formato «permisos nombre».
Finalmente, se utiliza el comando echo
para imprimir la salida de awk
en la pantalla, incluyendo secuencias de escape para crear líneas en blanco antes y después de cada línea.
Ejercicio Nº 7: Contador de archivos de texto
Escribe un script Bash que use un bucle for
para iterar a través de los archivos en un directorio, y para cada archivo que tenga la extensión «.txt», el script debe imprimir el nombre del archivo y la cantidad de líneas que contiene.