C贸mo programar en Bash

programar en bash

He estado muy ocupado y no me ha dado tiempo de publicar nada m谩s desde junio o algo as铆. Desde aquel mes he hecho algunas cosas interesantes que conforme pueda ir茅 subiendo. Por ahora veremos como programar en Bash. Este es el primero de varios porque me toc贸 hacer una implementaci贸n tipo wizard en Ubuntu para respaldar un sistema. Lo hice con Zenity, pero ya les contar茅, por ahora centr茅monos en Bash.

No vamos a entrar en detalle sobre la historia de Bash. Solo para entrar en contexto debemos saber que es un int茅rprete de comandos que forma parte de Linux. Es el shell predeterminado en la mayor铆a de las distribuciones y es el encargao de ejecutar comandos, tanto directo en la consola como en scripts dise帽ados y ejecutados por esta shell, como veremos m谩s adelante.

驴Qu茅 es un shell? B谩sicamente es el int茅rprete de comandos que permite a los usuarios gestionar el sistema operativo en una interfaz de l铆nea de comandos (CLI). En pocas palabras es el encargado de traducir lo que escribes para que el sistema operativo haga lo que le dices.

Usos m谩s comunes de Bash

Ejecuci贸n de comandos

Bash se utiliza para ejecutar comandos directamente desde la terminal, permitiendo a los usuarios interactuar con el sistema operativo, el sistema de archivos, instalar o mantener programas, gestionar redes. Los comandos b谩sicos incluyen algunos como:

  • ls: listar archivos y directorios.
  • cd: cambiar de directorio.
  • cp, mv, rm: copiar, mover y eliminar archivos.
  • mkdir: crear directorios.
  • rm: borrar archivos o directorios.

Automatizaci贸n de tareas

Al programar en Bash una de las principales cosas que uno hace es buscar c贸mo evitarse hacer manualmente tareas repetitivas. Con un script de Bash, puedes realizar tareas de mantenimiento de tus sistemas, procesamiento de datos o copias de seguridad sin intervenci贸n del usuario.

Por ejemplo, el administrador de sistemas puede crear un script que borre archivos temporales cada noche, que genere informes autom谩ticos o haga respaldo peri贸dicos y los mande a otro servidor.

Manipulaci贸n de archivos

Bash ofrece potentes herramientas para procesar archivos y texto. Comandos como grep, awk, y sed permiten buscar, filtrar y modificar texto dentro de archivos. Esto es 煤til para administrar registros del sistema, analizar archivos de texto o procesar logs.

Scripts en Bash

Bash es 煤til no solo para ejecutar comandos aislados, sino tambi茅n para escribir scripts como en cualquier lenguaje de programaci贸n, que interact煤en con los usuarios, aceptando datos de entrada, proces谩ndolos y respondiendo con los datos necesarios.

Estos tienen m谩s o menos las mismas opciones que cualquier lenguaje, es decir, tiene variables, ciclos o control de flujo sobre las decisiones del c贸digo.

Ejemplo de un script

Ahora veamos un script que tiene ciertas cositas que nos ayudan a entender.

Primero vamos a crear el archivo. Entra a la consola y con nano o con otro editor (VS Code o el que quieras) creamos el archivo primero.sh.

nano primero.sh

El contenido es el siguiente:

#!/bin/bash

echo "Captura tu nombre: "
read nombre

echo "隆Hola, $nombre! Ahora te saludo como debe ser."

hora=$(date +"%H")

if [ $hora -lt 12 ]; then
    echo "隆Buenos d铆as, $nombre!"
elif [ $hora -lt 18 ]; then
    echo "隆Buenas tardes, $nombre!"
else
    echo "隆Buenas noches, $nombre!"
fi

Claves del script

  • Shebang (#!/bin/bash): indica que el script debe ejecutarse con el int茅rprete de Bash. Si fuese c贸digo, por ejemplo de PHP, el inicio #! deber铆a ir acompa帽ado por la ruta del ejecutable de PHP (y de las caracter铆sticas dependiendo del lenguaje).
  • echo: es un comando built-in de Linux que imprime mensajes en la terminal.
  • read nombre: recibe el input del usuario y lo almacena en la variable nombre.
  • date +"%H": Obtiene la hora actual en formato de 24 horas (solo la hora).
  • Condicional if: Compara la hora para dar un saludo adecuado (ma帽ana, tarde o noche). Ya veremos los operadores en otro post.

Ejecuci贸n de scripts en Bash

Una vez que hemos terminado de programar en Bash debemos saber c贸mo ejecutarlo y ver el resultado.

Alguna vez habremos hecho un ls -lh para ver los archivos en un directorio. La informaci贸n que sale es algo as铆:

drwxr-xr-x. 1 manuel manuel 404 Sep 10 18:24  directorio

Permisos

R谩pidamente revisemos (sin entrar en detalle).

  1. La primera d nos indica que es un directorio, cuando es un archivo es -.
  2. Primer tr铆o de valores rwx pertenece a los permisos que el propietario tiene sobre el archivo.
  3. Segundo tr铆o de valores r-x pertenece al grupo.
  4. Tercer tr铆o de valores r-x pertenece a otros usuarios.

En este caso, el valor que nos interesa es la x, ya que nos indica que el archivo tiene permisos de ejecuci贸n. Es decir, el archivo puede ser perfectamente v谩lido pero no ser谩 ejecutado y nos dar谩 un error de permisos ya que no hemos dado el permiso.

Para darle el permiso ejecutamos:

chmod +x primero.sh

Con eso ya podemos ejecutar el archivo.

Nota: que un archivo no tenga el permiso x no quiere decir que es imposible, solo que tenemos que hacerlo de otra manera, como veremos a continuaci贸n.

Ejecuci贸n

Una vez que el permiso ha sido agregado, ejecutamos el archivo.

./primero.sh

Imaginemos que no agregaste el permiso +x y lo quieres ejecutar. Esto no es posible de la manera anterior. Probemos quitando el permiso de ejecuci贸n al archivo.

chmod -x primero.sh

Si ahora queremos ejecutar el archivo nos dar谩 un error de permisos bash: ./primero.sh: Permission denied.

Sin embargo es posible ejecutarlo usando bash y luego llamar al archivo:

bash primero.sh

En los pr贸ximos posts veremos otros temas.

隆Gracias por leer!


Posted

in

, ,

by