Un script shell es un fichero de texto tipo plano compuesto por comandos de terminal interpretados por Bash para poder ser ejecutados automáticamente.
Los scripts de shell pueden simplificar comandos complejos en una sola unidad en ejecución y ayudarnos a eliminar tareas repetitivas en uno o varios archivos ejecutables. Los scripts de bash son excelentes para cualquier administrador de sitemas UNIX / Linux puesto que en ocasiones es necesario trabar en la administración sin entorno visual.
¡El uso de shell de Bash en Linux es ilimitado! En este tutorial te mostraremos conceptos básicos para que puedas comenzar a programar tus propios scripts de shell. Puedes comenzar a utilizarlo tanto para administrar servicios, establecer o consultar conexiones de red, crear o modificar carpetas y archivos, automatizar instalaciones de aplicaciones y mucho más.
Para poder ejecutar un script para bash debe de contener en su primera línea lo siguiente:
#!/bin/bash
o bien
#!/usr/bin/env bash
Ejecución del script
Para poder ejecutar un script se debe conceder permisos de ejecución, de no habilitar el permiso de ejecución, el archivo permanecerá como de texto plano.
Puedes crear un archivo de texto plano y denominarlo prueba.sh con las siguientes líneas
#!/bin/bash
echo "Hola mundo"
Permisos de ejecución:
Desde la consola de Linux ejecuta los siguientes comandos:
chmod u+x prueba.sh # permiso de ejecución
./prueba.sh # Ejecutar el script desde la terminal
También podríamos ejectuar el script desde la terminal de Linux con el siguiente comando:
bash prueba.sh
Comentarios
Para poder agregar comentarios dentro del código del shell tienes que agregar al principio de cada línea #
# Esto es un comentario y no será interpretado como comando del script
Variables
Una variable es un espacio de memoria reservado para utilizar información de texto o valor. Al declarar variables cuando necesites esa información puedes invocarla por su nombre y recuperarla cuando quieras. Para trabajar con una variable necesitas guardar el dato (escribir) y recuperar (leer) para utilizarla.
variable=valor
echo $variable
#!/bin/bash
variable1=Pedro
variable2='Hola $variable1'
echo variable2
Condiciones if
Dentro de un script podemos agregar condiciones lógicas de tipo if then
if [ <condición> ]
then
# Hacer tal cosa
fi
También podemos representar una condición lógica if de la siguiente manera:
if [ <condición> ]; then
# Hacer tal cosa
fi
Ciclos for
Un ciclo For nos permite iterar una !n cantidad de veces una acción.
#!/bin/bash for variable in 1 2 3 4 do echo "El valor de variable es $variable
" done
El ciclo Flor mostrará tantas veces el valor de la variable como es definido
Ejemplo: Recorrer las líneas de un fichero de texto y mostrarlo en pantalla:
for linea in `cat fichero.txt`
do
echo "Línea:
"
done
Entradas y salidas
Desde el script de shell podemos asignar argumentos que se capturan desde la consola (input) para ser capturados y utilizados como variables.
#!/bin/bash
nombre=$1
edad=$2
echo "Nombre: $nombre"
echo "Edad: $edad"
En este ejemplo luego de ejecutar el script el usuario podrá ingresar su nombre y su edad como entradas, las que se mostrarán en pantalla como salida en pantalla.
Script para reemplazar imágenes terminadas en -min.jpg
Este tipo de script es de gran utilidad para reemplazar archivos terminados en -min.jpg
Ejemplo de uso: cuando descargas imágenes optimizadas con Optimizilla la aplicación las renombra con su nombre original junto con la terminación -min.jpg
Con este script te ahorrarás de renombrar las imágenes descargadas manualmente. Renombrará todas las imágenes que se encuentren en la carpeta del script.
En nuestro caso crearemos un script de shell con el nombre rename-min.sh el cua realizará mediante un ciclo for el reemplazo de los archivos terminados en -min.jpg
#!/bin/sh
for f in *.jpg; do
mv -- "$f" "${f%-min.jpg}.jpg"
done
Menú
Si posees varios script para automatizar tus tareas una genial idea es crear un menú con los comandos y scripts más frecuentes.
Todos los script que desas ejecutar desde el menú tienen que estar en la misma carpeta o folder de menu.sh
En nuestro caso agregamos rename-min.sh como opción 4 del menú como ejemplo de invocación de un script dentro de otro script.
#!/bin/bash
clear
while :
do
echo "MENU"
echo "1. Estado de servicio httpd"
echo "2. Ping a tarjeta de red (Salir con Ctrl + c)"
echo "3. Mostrar conexiones de redes, puertos y servicios"
echo "4. Renombrar imágenes terminadas en -min.jpg"
echo "5. Limpiar pantalla"
echo "6. Salir"
echo -n "Seleccione una opcion [1 - 6]"
read opcion
case $opcion in
1) ./service-status.sh;;
2) ping 127.0.0.1;;
3) netstat -putona;;
4) ./rename-min.sh;;
5) clear;;
6) echo "bye bye";
exit 1;;
*) echo "$opc ES UNA OPCIONES ERRONEA";
echo "Presiona una tecla para continuar...";
read foo;;
esac
done