Fundamentos de Bash

El scripting en Bash es una herramienta esencial para cualquier profesional de sistemas, especialmente en el mundo de la ciberseguridad y la administración de servidores. Aprender los fundamentos del scripting en Bash no solo te permite automatizar tareas repetitivas, sino también aumentar tu productividad y tener un mayor control sobre el sistema operativo GNU/Linux.

1. Shebang Line

#!/bin/bash
La primera línea de cualquier script Bash debe comenzar con el “shebang”, que indica al sistema qué intérprete usar para ejecutar el archivo. En este caso, /bin/bash señala que el script se ejecutará con Bash.

2. Variables

username=”jay”
filename=$3

Aquí se declaran variables. username tiene un valor estático, mientras que filename toma el valor del tercer argumento de línea de comandos ($3).

3. Entrada del Usuario

read -p “Enter your username: ” user
echo “Username: $user”

read captura la entrada del usuario. La opción -p muestra un mensaje antes de esperar el input. Luego, se imprime la variable user.

4. Estructura Condicional IF

if [ $EUID -ne 0 ]; then
echo “You are not running this script as the root user.”
else
echo “You are running this script as the root user.”
fi

Verifica si el script está siendo ejecutado como root (el usuario administrador en sistemas Linux). $EUID es el ID del usuario actual. -ne significa “not equal”.

5. Bucle For

echo “Counting to 5:”
for i in {1..5}; do
echo “$i”
done

Un bucle for básico que imprime los números del 1 al 5. Muy útil para iterar sobre listas o rangos.

6. Funciones

function greet() {
echo “Hello, $1”
}
greet “Alice”

Define una función llamada greet que recibe un argumento. $1 hace referencia al primer argumento pasado a la función.

7. Sentencia Case

echo “Enter a number between 1 and 2: ”
read num
case $num in
1) echo “You chose one.” ;;
2) echo “You chose two.” ;;
*) echo “Invalid choice.” ;;
esac

case permite manejar múltiples condiciones de forma más limpia que varios if. Ideal cuando hay múltiples opciones posibles.

8. Operaciones con Archivos

if [ -e “$filename” ] && [ -d “$filename” ]; then
echo “File exists and is a directory.”
else
echo “File does not exist or is not a directory.”
fi

Verifica si un archivo existe (-e) y si además es un directorio (-d). Muy útil en scripts de gestión de archivos.

9. Argumentos de Línea de Comando

echo “First argument: $1”
echo “Second argument: $2”

Los scripts pueden recibir argumentos desde la terminal. $1, $2, etc., representan los valores que se pasan al script al ejecutarlo.

10. Códigos de Salida

cat nonexistent-file.txt 2> /dev/null
echo “Exit status: $?”

$? devuelve el código de salida del último comando ejecutado. En Bash, un código 0 indica éxito y cualquier otro valor representa un error.

11. Arrays Indexados

fruits=(“Apple” “Orange” “Banana”)
echo “Fruits: ${fruits[@]}”

Los arrays en Bash permiten almacenar múltiples valores. ${fruits[@]} imprime todos los elementos del array.

12. Arrays Asociativos

declare -A capitals
capitals[USA]=”Washington D.C”
capitals[France]=”Paris”
echo “Capital of France: ${capitals[France]}”

Los arrays asociativos usan claves en lugar de índices numéricos, similares a diccionarios en otros lenguajes.

13. Sustitución de Comando

current_date=$(date)
echo “Today’s date is: $current_date”

Permite almacenar el resultado de un comando en una variable usando $(comando).

14. Redirección de Comandos

echo “This is a sample text.” > example.txt
find ./ -name hello.txt 2> /dev/null

> redirige la salida estándar a un archivo. 2> redirige los errores. /dev/null es como un “agujero negro” para salidas no deseadas.

15. Operaciones Aritméticas

result=$( expr 15 + 2 )
echo $result

expr permite realizar operaciones matemáticas simples. También puedes usar $((15 + 2)).

16. Expansión de Parámetros

SRC=”/path/to/foo.cpp”
BASEPATH=${SRC##*/}
echo $BASEPATH

##*/ elimina todo lo anterior al último /, dejando solo el nombre del archivo. Una técnica poderosa de manipulación de texto.

17. Manejo de Señales

trap ‘echo “Received SIGTERM signal. Cleaning up…”; exit’ SIGTERM

trap permite definir acciones ante señales del sistema como SIGTERM. Esto es útil para limpiar procesos antes de terminar.

18. Comentarios

# Esto es un comentario de una línea

: ‘
Esto es
un comentario
multilínea

Los comentarios son esenciales para hacer el código legible. Puedes usar # para una línea o el operador : con comillas para bloques.

Dominar estos conceptos te permitirá escribir scripts sólidos, seguros y mantenibles. Puedes comenzar con tareas simples como backups automáticos, análisis de logs o control de servicios, y poco a poco avanzar hacia scripts complejos para pruebas de penetración, auditorías o automatización de entornos.


#bash ? #linux ? #scripting ? #automatización ⚙️ #terminal ? #programación ?️ #devops ? #comandos ⌨️ #sysadmin ?‍? #ciberseguridad ?

1 Votes: 0 Upvotes, 1 Downvotes (-1 Points)

Loading Next Post...
Follow
Search Trending
Popular Now
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...

Cart
Cart updating

ShopYour cart is currently is empty. You could visit our shop and start shopping.