En Linux todos hemos topado tarde o temprano con un archivo terminado en .sh.
Pero ojo: un script no es «un ejecutable raro» ni un «programilla misterioso». Es simplemente un guion de instrucciones que la máquina interpreta en orden, como si tú estuvieras tecleándolas una tras otra en tu terminal.
La diferencia es que el script no se cansa, no se equivoca al reescribir y siempre repite la misma receta, paso a paso. Ahí está su magia: automatizar lo que de otra forma te haría perder minutos (o incluso horas).
Vamos a ver y entender un ejemplo de principiante: mi_primer_script.sh.
El shebang: la primera línea que manda
Si abres un script verás arriba, en la primera línea, algo así:
#!/bin/bash
Ese «shebang» es como decirle al sistema: lee todo lo que viene a continuación usando este idioma. Normalmente será bash, pero podrías cambiarlo a sh, python o cualquier otro intérprete. Es como elegir entre subtítulos en castellano o en inglés: el guion es el mismo, pero cómo lo entiendas depende del traductor.
Scripts en Linux Mint y en cualquier distribución GNU/Linux
Tu primer guion, explicado de verdad:
- #!/bin/bash → invoca a Bash como traductor oficial.
- mensaje=… → guardamos un texto en una variable. Como cuando apuntas una nota en un post-it.
- clear → limpias la terminal. No es necesario, pero mola empezar con una pantalla limpia.
- echo → imprime lo que guardaste en la variable. Aquí aparece la gracia del script: él recuerda por ti.
#!/bin/bash
mensaje="Mi primer Script."
clear
echo $mensaje
Ejemplo básico de un script
Hacerlo ejecutable
Aquí viene lo que siempre se olvida el primer día: para que funcione un script es necesario concederle permiso de ejecución.
$ chmod +x mi_primer_script.sh
Nota: si trabajas en tu carpeta de usuario no es necesario sudo
La utilidad real: no repetir instrucciones
Piensa en tareas como respaldar tus documentos. Puedes copiar carpeta a carpeta cada vez, o crear un script que lo haga solito e incluso se guarde con fecha.
Nota: para principiantes aconsejo que usen el editor de texto Xed (Linux Mint), para otras distribuciones usar el que tengáis por defecto. Si ya estáis familiarizados utilizad nano o vim.
#!/bin/bash
fecha=$(date +%F_%H%M)
tar -czf Copia_de_seguridad_$fecha.tar.gz ~/Documentos
echo "Copia de seguridad creada de Documentos: Copia_de_seguridad_$fecha.tar.gz"
Resultado: con un simple ./Copia_de_seguridad.sh ejecutarás la copia. Así obtienes un archivo comprimido con todo tu trabajo y nombre con marca temporal. Eso ya no es teoría, es tiempo real que ganas.
Consejos de la vieja escuela
- Usa
#!/usr/bin/env bashen vez de#!/bin/bashsi quieres que tu script funcione en más distribuciones. - Coloca en la segunda línea
set -euo pipefaily después en la tercera líneaIFS=$'\n\t'- Con
set -e,-uy-o pipefailevitarás errores silenciosos. En los casos que se produzcan el script se detendrá. Es una buena técnica para revisar y limpiar errores.-e→ si cualquier comando devuelve error (exit≠0), el script se detiene. Evita seguir tras fallos.-u→ error si usas una variable no definida. Ejemplo si definesmensaje="Buenos días"y luego lo llamas conecho "$Mensaje", Linux diferencia minúsculas y mayúsculas y generará un error. O en su defecto cometes errores tipográficos.-o pipefail→ en una tubería (cmd1 | cmd2 | cmd3), el exit status del pipeline será el del primer comando que falle. Sinpipefail, Bash sólo mira el último (cmd3), y podría «ocultar» quecmd1ocmd2falló.IFS=$'\n\t'→ cambia el separador interno de campos para no partir por espacios (sólo por nueva línea y tab). Así, rutas con espacios no se trocean.
- Con
- Muy importante, siempre pon comillas a tus variables:
echo "$variable". Evitarás que se rompa todo por un espacio maldito. Éstos hay que tratarlos de una manera especial en Linux: se aplica\antes del espacio de separación si no se usan comillas.- Ejemplo sin uso de comillas:
echo Copia\ de\ seguridad\ creada... - Simplifica y evita despistes con
echo "Copia de seguridad creada..."
- Ejemplo sin uso de comillas:
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
comando1 | comando2 # si comando1 falla, el script aborta (con pipefail)
echo "$NO_DEFINIDA" # con -u, esto aborta; te evita sorpresas
Si lo olvidas, bash te lo recordará deteniendo el script.
Conclusión
✔ Si llegaste hasta aquí, ya no ves un script como un archivo extraño, sino como un aliado. La próxima vez que pienses «uf, otra vez teclear esto», recuerda: un script.sh lo puede hacer por ti.


Deja una respuesta