Hasta ahora hemos utilizado Bash como una herramienta estática. En las clases anteriores aprendimos a crear scripts básicos, a ejecutarlos y a configurar sus permisos de seguridad.
Pero, ¿qué pasa si queremos que nuestro script tome decisiones o maneje decenas de archivos al mismo tiempo sin tener que escribir el nombre de cada uno? Hoy vamos a dar el salto al verdadero poder de la automatización en la terminal aprendiendo sobre Variables y Comodines.
1. Variables: La memoria de tu Script
¿Qué es una variable?
En programación, una variable no es más que una «caja» con un nombre donde guardamos información. En Bash, utilizamos estas cajas para almacenar textos, números o rutas de archivos que nuestro script necesitará usar más adelante.
Existen dos tipos principales de variables con las que trabajarás todos los días:
A. Variables de Entorno (Las que Bash ya conoce)
Cuando abres tu terminal, el sistema operativo ya ha creado varias «cajas» con información útil sobre ti y tu computadora. Por convención, estas siempre van en MAYÚSCULAS. Para ver el contenido de una variable, siempre debemos poner un símbolo de dólar ($) antes de su nombre.
$USER: Contiene tu nombre de usuario.
$HOME: Contiene la ruta a tu directorio principal.
$PWD: Muestra el directorio exacto donde estás trabajando en este momento.
Ejemplo en tu terminal:
echo "Hola $USER, estás trabajando en la carpeta $PWD"
Bash
B. Variables Locales (Las que tú creas)
Tú también puedes crear tus propias variables dentro de tus scripts.
Regla de oro en Bash: Al declarar una variable, NUNCA debes dejar espacios antes ni después del signo igual (=).
# FORMA INCORRECTA
mi_curso = "Bash Scripting"
# FORMA CORRECTA
mi_curso="Bash Scripting"
# Para usarla, recuerda el signo de dólar:
echo "Bienvenidos a $mi_curso"
Bash
2. Comodines (Globbing): Magia para tus archivos
Los comodines son caracteres especiales que actúan como «comodines de búsqueda». Te permiten seleccionar múltiples archivos que cumplan con cierto patrón de nombre, ahorrándote horas de trabajo manual.
Aquí tienes los dos comodines más importantes que debes conocer:
- El Asterisco (
*): Significa «Todo» o «Cualquier cosa».
*.txt ➔ Selecciona todos los archivos que terminen en .txt, sin importar su nombre.
foto* ➔ Selecciona todo lo que empiece con la palabra «foto» (foto_vacaciones.jpg, fotografia.png, fotos.zip).
* ➔ Selecciona absolutamente todos los archivos y carpetas del directorio actual.
- El Signo de Interrogación (
?): Significa «Un solo carácter exacto».
archivo?.txt ➔ Seleccionará archivo1.txt o archivoA.txt, pero NO seleccionará archivo10.txt (porque el 10 son dos caracteres).
3. Práctica: Tu primer Script Organizador
Vamos a poner en práctica lo aprendido. Haremos un script que salude al usuario por su nombre, cree una carpeta y mueva automáticamente todos los archivos de texto que tengamos sueltos hacia ella usando comodines.
Paso 1: Preparar el entorno de pruebas
Antes de crear el script, vamos a ensuciar un poco nuestra carpeta actual creando varios archivos de prueba vacíos. Ejecuta esto en tu terminal:
touch nota1.txt nota2.txt nota3.txt imagen.jpg cancion.mp3
Bash
Paso 2: Escribir el Script
Crea un archivo llamado organizador.sh, ábrelo con tu editor de texto favorito (como nano) y escribe el siguiente código:
#!/bin/bash
# 1. Creamos una variable local para el nombre de nuestra nueva carpeta
CARPETA_DESTINO="mis_textos_ordenados"
# 2. Usamos una variable de entorno para saludar
echo "¡Hola, $USER! Vamos a limpiar este directorio."
# 3. Creamos la carpeta usando nuestra variable local
mkdir -p $CARPETA_DESTINO
# 4. Usamos el comodín (*) para mover solo los archivos .txt
mv *.txt $CARPETA_DESTINO/
# 5. Mensaje de éxito
echo "¡Listo! Todos los archivos .txt fueron movidos a la carpeta: $CARPETA_DESTINO"
Bash
Paso 3: Dar permisos de ejecución
Como vimos en la Clase 4, por seguridad los scripts no se pueden ejecutar nada más crearlos. Debemos darle permiso:
chmod +x organizador.sh
Bash
Paso 4: ¡Ejecutar la magia!
Corre tu script escribiendo:
¡Felicidades! Si haces un comando ls, verás que tu imagen y tu canción siguen ahí, pero todos tus archivos de texto han sido mágicamente aspirados hacia la nueva carpeta mis_textos_ordenados.
Resumen de la clase: Hoy aprendimos que las variables nos permiten guardar datos (ya sean del sistema o nuestros) y que los comodines como * y ? son nuestros mejores amigos para aplicar comandos a muchos archivos a la vez.
En la siguiente clase, daremos un paso más: aprenderemos cómo hacer que el script se pause y le haga preguntas al usuario utilizando el comando read.