Bash Script – DÍA 1
Tu primer script Bash: shebang, ejecutar, variables y leer datos
1. Objetivo del día
Hoy aprenderás lo imprescindible para crear y ejecutar tu primer script:
- crear un archivo
.sh - entender el shebang
- ejecutar scripts correctamente
- usar variables
- leer datos del usuario (
read) - mostrar mensajes por pantalla
Si hoy consigues crear un script que pida un dato y lo muestre → Día completado.
2. Requisitos
- Haber completado el mini tutorial de Linux Command Line (recomendado)
- Saber moverte por la terminal
- Saber usar
chmod
3. ¿Qué es un script Bash?
Un script es un archivo de texto que contiene una serie de comandos que Bash ejecuta línea a línea.
En lugar de escribirlos uno a uno en la terminal puedes automatizarlos en un solo archivo.
4. Crear tu primer script
4.1. Crear un archivo vacío
touch hola.sh
Abrirlo con tu editor preferido:
nano hola.sh
(o vi hola.sh si quieres practicar Vim)
4.2. Añadir el “shebang” (muy importante)
En la primera línea, siempre:
#!/bin/bash
Esto le dice al sistema con qué intérprete ejecutar el archivo.
4.3. Añadir un comando básico
Debajo del shebang:
#!/bin/bash
echo "Hola, este es mi primer script Bash"
Guardar y salir.
5. Ejecutar el script
Antes de ejecutarlo, hazlo ejecutable:
chmod +x hola.sh
Ejecutarlo:
./hola.sh
5.1. Ejecutarlo sin permisos (método alternativo)
bash hola.sh
Este método NO necesita permisos de ejecución, pero es menos profesional.
6. Variables en Bash (muy simple)
Crear una variable:
nombre="Tomas"
Usarla:
echo "Hola $nombre"
No uses espacios alrededor del signo igual:
❌ nombre = "Tomas"
✔️ nombre="Tomas"
6.1. Ejemplo práctico
#!/bin/bash
nombre="Tomas"
echo "El usuario es: $nombre"
7. Leer datos del usuario: read
Esto hace que tu script pregunte algo:
read -p "Introduce tu nombre: " nombre
echo "Encantado de conocerte, $nombre"
8. Ejecutar varios comandos en un script
Puedes poner cualquier comando válido:
#!/bin/bash
echo "Mostrando la fecha:"
date
echo "Contenido del directorio:"
ls -lh
9. Práctica guiada (20–30 minutos)
9.1. Crear un script simple (5 minutos)
Crear archivo:
nano saludo.sh
Contenido:
#!/bin/bash
echo "¿Cómo te llamas?"
read nombre
echo "Hola $nombre, ¡bienvenido al mundo de Bash!"
Dar permiso:
chmod +x saludo.sh
Ejecutarlo:
./saludo.sh
9.2. Añadir más variables y varios comandos (5–10 minutos)
Modifica tu script saludo.sh para aprender a combinar varias cosas:
#!/bin/bash
# Preguntar el nombre
read -p "Introduce tu nombre: " nombre
# Crear una variable fija
equipo="tu sistema Linux"
# Mostrar mensajes combinados
echo "Hola $nombre"
echo "Estás usando $equipo"
echo "La fecha actual es:"
date
echo "Tu directorio de trabajo es:"
pwd
Ejecuta de nuevo y revisa cómo se combinan variables + comandos.
9.3. Practicar lectura de varios datos (5 minutos)
Crea un nuevo script:
nano datos.sh
Contenido:
#!/bin/bash
read -p "Nombre: " nombre
read -p "Ciudad: " ciudad
read -p "Tu shell actual es: " shell
echo "Resumen:"
echo "Nombre: $nombre"
echo "Ciudad: $ciudad"
echo "Shell: $shell"
Este ejercicio refuerza el uso de read varias veces seguidas.
Nota explicativa sobre read
En Bash existen varias formas de pedir datos al usuario, pero no todas funcionan en todas las versiones, shells o entornos.
Para evitar errores, se puede usar la forma más básica y universal, que funciona en cualquier sistema:
Forma universal (siempre funciona):
echo -n "Dime tu nombre: "
read nombre
echo -nimprime el mensaje sin salto de línea.read nombrerecoge lo que escriba el usuario.- Este método funciona en todas las versiones de Bash, sin opciones adicionales.
¿Por qué también usamos read -p en el tutorial?
Aunque la forma más universal y compatible es:
echo -n "Dime tu nombre: "
read nombre
en la mayoría de sistemas actuales (Linux modernos, macOS y Bash recientes) existe una forma más cómoda:
read -p "Dime tu nombre: " nombre
¿Qué hace -p?
La opción -p significa prompt:
Muestra un mensaje antes de leer la entrada del usuario, sin necesidad de usar echo.
Diferencias importantes
read -pfunciona en Bash moderno, el que incluyen la mayoría de distribuciones (Bash 4.x, 5.x).- No es 100% universal: no existe en todos los shells (por ejemplo, no funciona en
shni en algunos entornos POSIX puros). - Por eso enseñamos ambas formas:
- La forma universal (echo + read) nunca fallará.
- La forma con
-pes más cómoda y legible, y funciona normalmente en Linux actual.
Recomendación del curso
En este mini-tutorial usamos read -p porque:
- simplifica el código
- es más claro para principiantes
- funciona correctamente en cualquier Bash moderno (el entorno esperado del alumno)
Pero si necesitas compatibilidad total con cualquier shell, usa la forma universal.
9.4. Añadir sustitución de comandos (5 minutos)
Vamos a mejorar el script datos.sh usando $(...)
para guardar la salida de un comando en una variable.
Edita el script como sigue y ejecuta:
#!/bin/bash
read -p "Introduce tu nombre: " nombre
# Guardar fecha y directorio en variables
fecha_actual="$(date)"
directorio="$(pwd)"
echo "Hola $nombre"
echo "Fecha actual: $fecha_actual"
echo "Directorio actual: $directorio"
9.5. Mini-reto opcional (5 minutos)
Modifica datos.sh para que:
- pregunte el nombre
- pregunte el nombre de un archivo o carpeta
- muestre su contenido con:
ls -lh <lo_que_introdujo_el_usuario>
Este reto no usa condicionales (eso llega en el Día 2), así que si el usuario escribe algo inexistente verá un error real → y eso está bien para aprender.
10. Errores comunes del Día 1 (y cómo evitarlos)
| Error | Solución |
|---|---|
bash: ./script.sh: Permission denied | Falta chmod +x script.sh |
command not found | El script no empieza con #!/bin/bash |
| Variables con espacios no funcionan | Nunca pongas espacios en variable=valor |
./script.sh no funciona en Windows | Bash no existe fuera de WSL / Linux / Mac |
11. Checklist del Día 1
- Has creado un archivo
.sh - Has añadido el shebang correcto
- Has dado permisos con
chmod +x - Has ejecutado un script con
./script.sh - Has usado variables
- Has pedido datos con
read
Si has marcado todo → Día 1 superado.
12. Ejercicio sugerido
Crea un script llamado:
info.sh
Que:
- Te pida tu nombre
- Te pida tu edad
- Muestre un mensaje del tipo:
Hola Tomas, tienes 55 años.
Tu script funciona correctamente.
Esto prepara el terreno para condicionales del Día 2.
13. Día 1 completado
¡Ya estás escribiendo y ejecutando tus propios scripts!
A partir de aquí Bash se vuelve mucho más potente.
En el Día 2, aprenderás:
- condicionales
- comparaciones
- test
[ ] if,elif,else- y el poderoso
case
Todo lo necesario para que tus scripts tomen decisiones.
