
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.
/bin/bash señala que el script se ejecutará con Bash.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).
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.
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”.
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.
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.
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.
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.
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.
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.
fruits=(“Apple” “Orange” “Banana”)
echo “Fruits: ${fruits[@]}”
Los arrays en Bash permiten almacenar múltiples valores. ${fruits[@]} imprime todos los elementos del array.
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.
current_date=$(date)
echo “Today’s date is: $current_date”
Permite almacenar el resultado de un comando en una variable usando $(comando).
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.
result=$( expr 15 + 2 )
echo $result
expr permite realizar operaciones matemáticas simples. También puedes usar $((15 + 2)).
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.
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.
# 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 ?
frenify: Thank you for your kind words! We’re glad you enjoyed the post. Stay tuned for more content – we’ve got plenty more coming your way.
frenify: I really enjoyed reading this. The content is informative, and the layout makes it so easy to follow. Looking forward to more posts like this! Keep up the great work!