Tutorial Bash Scripting para principiantes

I f usted está empezando a utilizar sistemas Linux, términos como “Shell scripting” o “secuencias de comandos Bash ” pueden ser bastante común – Pero ¿qué significan? Antes de entrar en detalles, aprender a escribir scripts Bash puede ayudarlo a ahorrar tiempo en la ejecución y realización de varias tareas del sistema, comprender mejor la línea de comandos de Linux (Terminal) y automatizar múltiples tareas del sistema.

¿Qué es Bash?

Bash, un acrónimo de “Bourne-Again-Shell”, es un intérprete de lenguaje de comandos o shell de Unix para el sistema operativo GNU. Ha sido el Shell principal para las distribuciones de Linux y las versiones de Apple macOS antes de macOS Catalina. Bash también está disponible para Windows 10 a través del subsistema de Windows para Linux.

Bash generalmente se ejecuta en una ventana de texto comúnmente conocida como Terminal, donde los usuarios ingresan comandos para realizar varias tareas. Bash también puede ejecutar comandos escritos en un archivo, un método conocido como “scripting bash”.

Diferencia entre secuencias de comandos Bash y secuencias de comandos de Shell

Las secuencias de comandos de Shell y las secuencias de comandos Bash no son lo mismo. Con las secuencias de comandos Bash, está utilizando explícitamente el shell bash. Por otro lado, la creación de scripts de Shell puede ser una palabra bastante amplia, ya que tenemos otros shells disponibles además de Bash. Algunos de los más comunes incluyen Korn (ksh), C shell (csh), Z shell (zsh) y Bash shell (sh). Sin embargo, no sería una sorpresa encontrar personas que usan secuencias de comandos bash y secuencias de comandos de shell de manera intercambiable para significar lo mismo. Nuestra publicación sobre los 6 mejores shells de código abierto para Linux ofrece una descripción detallada de estos shells.

En esta publicación, veremos las secuencias de comandos Bash. De forma predeterminada, muchas distribuciones de Linux disponibles utilizan el shell Bash. Consulte nuestra publicación sobre las 6 mejores distribuciones de Linux para principiantes. Para confirmar el shell que está utilizando en su distribución actual de Linux, ejecute el comando en la Terminal.

echo $SHELL

cascarón
cascarón

En la imagen de arriba, puede ver que el intérprete predeterminado en mi sistema es bash. Actualmente, estoy ejecutando Ubuntu 20.04 LTS. ¡Vamos a sumergirnos!

Comprensión de los scripts de Bash

Los scripts bash son archivos de texto que contienen comandos bash que se ejecutan para realizar varias tareas. Para escribir estos scripts, solo necesita un editor de texto simple como gedit, leaf pad, vim, nano y mucho más. Recuerde guardar sus scripts con una .shextensión y como texto sin formato y no como texto enriquecido. Uno de mis editores favoritos que utilizo para escribir scripts es el editor nano.

Nombrar, asignar permisos y ejecutar un script Bash

Como se explicó anteriormente, asegúrese de usar la extensión .sh para sus scripts de bash. Por ejemplo, puede tener un script con el nombre fosslinux_backup.sh. Sin embargo, sería mejor si tuviera cuidado al nombrar sus scripts. Por ejemplo, a la mayoría de las personas les gusta guardar la mayoría de sus scripts como “prueba”. Desconocido para la mayoría, hay un comando integrado de Unix llamado test, que verifica los tipos de archivos y compara valores. Puede usar el comando which para verificar si hay un programa con el mismo nombre que el de su script para evitar conflictos entre programas.

which [command]


e.g


which test

Cual comando
Cual comando

De la salida anterior, podemos ver que la prueba ya es un comando incorporado. Por lo tanto, para evitar conflictos entre programas, no nombraré ninguno de mis scripts como “prueba”.

Para hacer que el script sea ejecutable para cada usuario, use el siguiente comando:

chmod +x [script.sh]

Para hacer que el script sea ejecutable para el usuario actual, use el siguiente comando:

chmod u+x [script.sh]

Ahora, para ejecutar el script, ejecute el siguiente comando:

./[script_name]

Con el método anterior, se dará cuenta de que necesitará usar el cdcomando para moverse al directorio que contiene el script o pasar la ruta al script. Sin embargo, hay una solución para esto. Guarde sus scripts en el bin directorio presente en el directorio de inicio.

Con las actualizaciones recientes, la mayoría de las distribuciones no vienen con la bincarpeta de forma predeterminada. Por lo tanto, se le pedirá que lo cree manualmente. Al colocar sus scripts en esta carpeta, puede ejecutar el script escribiendo su nombre en la Terminal sin usar los comandos cdy ./.

Directrices de Bash Scripting

Antes de escribir su primer guión, hay algunas pautas que debe comprender al escribir guiones.

  • Todos sus scripts deben comenzar con la línea “#! / Bin / bash”.
  • Pon cada comando en una nueva línea.
  • Cada comentario comienza con un #símbolo.
  • Los comandos se incluyen entre ()corchetes.

La #!/bin/bashdeclaración (Hash-Bang Hack) es la ruta al shell que usaremos. Si está utilizando otro shell, deberá editar esta ruta. Entendemos que todos los comentarios comienzan con el #símbolo. Sin embargo, cuando se le sigue con una (!)marca en el Hash-Bang Hack, el script se ve obligado a ejecutarse con el shell al que apunta esta línea. En nuestro caso, es el caparazón Bash.

Tu primer guión de Bash

Como la mayoría de los lenguajes de programación, escribiremos un script que imprima la instrucción “Hello World” cuando se ejecute. Abra su editor de texto favorito y pegue los siguientes comandos. Guarde el archivo de texto como fossHelloWorld.sho cualquier otro nombre que no sea un comando integrado.

#!/bin/bash


#This script will print 'Hello World' on the Terminal


echo "Hello World"

Una vez que haya guardado el archivo, hágalo ejecutable ejecutando el siguiente comando:

chmod +x fossHelloWorld.sh

Ahora, ejecútelo con el siguiente comando:

./fossHelloWorld.sh

Primer guion
Primer guion

El guión de arriba tiene solo tres líneas. El primero es el Hash-Bang Hack, que hemos discutido anteriormente, el segundo es un comentario y el tercero es el comando que se ejecutará. Tenga en cuenta que los comentarios nunca se ejecutan.

Veamos otras funciones de scripting de bash que puede utilizar.

Comando de eco

El comando Echo se usa para imprimir la salida en la línea de comandos o Terminal de Linux. Si es un desarrollador y ha trabajado con PHP antes, también debe haber encontrado este comando. Escribamos un pequeño script bash para demostrar cómo funciona este comando.

#!/bin/bash


#Let's print the first line


echo "This is Fosslinux.com - With a new line"


#Let's print the Second statement without a new line


echo -n "This is Fosslinux - No new Line"

Guarde su script, asigne los permisos necesarios y ejecútelo.

Bash Echo
Bash Echo

Para comprender el código, el primer comando echo imprime una declaración y pasa a la siguiente línea. El segundo comando echo tiene el -nargumento que evita que el script pase a la siguiente línea. Puede utilizar muchas otras opciones con el comando Echo, incluidas las variables, como veremos a continuación.

Variables

Las variables son una parte común y necesaria de cualquier lenguaje de programación. Se pueden declarar variables de Bash de varias formas. Al asignar un valor a cualquier variable, no es necesario utilizar ningún símbolo. Sin embargo, al llamar al valor de la variable, deberá usar el $signo al principio de la variable.

Puede usar variables en la Terminal o como scripts. Ejecute los siguientes comandos en su Terminal.

myWebsite = "Fosslinux.com"


echo $myWebsite

Usando variables en la terminal
Usando variables en la terminal

Ahora creemos un script bash que toma dos entradas del usuario y las almacena en variables $xy $y. El script luego verificará si los dos valores son iguales o no.

#!/bin/bash


echo "Enter the first number"


read a


echo "Enter the second number"


read b


if [[ $a -eq $b ]]


then


echo "Numbers are equal"


else


echo "Numbers are not equal"


fi

Guarde el script y ejecútelo. En la imagen de abajo, puede ver que ingresamos diferentes valores, y el script pudo verificar si son iguales o no.

Variables de bash
Variables de bash

Ahora, echemos un vistazo más de cerca al código. Las dos primeras declaraciones de eco le piden al usuario que ingrese el primer y segundo número. El readcomando esperará a que el usuario ingrese un número y lo almacene en la variable especificada. En nuestro caso, eso es ay b. Luego tenemos una declaración if que verifica si los dos valores son iguales o no.

Sentencia condicional

En cualquier lenguaje de programación, las declaraciones condicionales controlan el flujo de un programa. Un fragmento de código se ejecutará solo cuando se cumpla una condición particular. Algunas de las declaraciones condicionales más comunes incluyen “si-entonces-si no” y “caso”. A continuación se muestra la sintaxis básica de la instrucción if-then-else.

if [[ condition ]]


then


<execute an instruction>


else


<execute another instruction/command>


fi

Eche un vistazo a la secuencia de comandos a continuación, que hace uso de la declaración condicional “si-entonces-si no”.

#!/bin/bash


echo "Enter Your Age"


read age


if ((age > 18 ))


then


echo "You can go to the party"


else


echo "You are not eligible to go to the party"


fi

Bash declaraciones condicionales
Bash declaraciones condicionales

Repasemos el guión de arriba. Tenemos la echodeclaración que solicita a los usuarios que ingresen su número de edad. La readdeclaración almacena la edad ingresada en una variable “edad”. Luego tenemos una declaración condicional if-then-else que verifica si la edad es mayor de 18 antes de instruir al usuario.

Bucles

Los bucles se usan comúnmente cuando desea ejecutar un fragmento de código varias veces. Por ejemplo, si quisiera repetir 1000 líneas de la declaración “Bienvenido a Fosslinux”, necesitaría 1000 declaraciones de eco. Sin embargo, con los bucles, todo lo que necesito hacer es especificar la cantidad de veces que quiero que la declaración se repita o se imprima en la Terminal. Bash admite tres tipos de bucles Bucle for, bucle while y bucle hasta. Veamos cada uno de ellos.

  • El bucle for

Un bucle For se utiliza para recorrer en iteración una lista de datos especificados o una matriz. A continuación se muestra la sintaxis básica del Bash For Loop

for Value in 1 2 3 4 5 .. N


do


instruction1


instruction2


instruction-N


done

o,

for VALUE in file1 file2 file3


do


instruction1 on $VALUE


instruction2


instruction-N


done

Eche un vistazo al guión a continuación. Repite los días de la semana indicados y los imprime en la Terminal línea por línea.

#Read a weekday name in each iteration of the loop


for day in Monday Tuesday Wednesday Thursday Friday Saturday Sunday


do


echo "$day"


done

Guardemos el script como ForLoop.shy ejecútelo. A continuación se muestra una captura de pantalla de la salida.

En bucle
En bucle

Eso es solo un ejemplo simple de lo que puede hacer con For Loop. También puede combinarlo con declaraciones condicionales para completar una tarea en particular.

  • El bucle while

El ciclo While ejecuta una tarea específica mientras una condición particular permanece como Verdadera. En cada iteración, el ciclo primero verificará la condición antes de ejecutar las instrucciones. Cuando la condición es Falsa, el ciclo terminará. La sintaxis básica del ciclo de bash While es la siguiente:

while [CONDITION]


do


[COMMANDS]


done

Por ejemplo, podemos tener una secuencia de comandos que imprima la declaración “Bienvenido a FOSSLINUX.COM” 20 veces hasta que una variable X se establezca en 20. Intentemos implementarlo de manera práctica. Eche un vistazo al guión a continuación.

#!/bin/bash


x=1


while [ $x -le 20 ]


do


echo "Welcome to FOSSLINUX.COM"


x=$(( $x + 1 ))


done

Guardemos el script como WhileLoop.shy ejecútelo. A continuación se muestra una captura de pantalla de la salida.

Mientras bucle
Mientras bucle

Echemos un vistazo a la secuencia de comandos While Loop anterior. Primero declaramos una variable X dándole el valor 1. Luego creamos una declaración While que genera la declaración “Bienvenido a FOSSLINUX.COM” mientras que X es menor que 20. Por último, incrementamos X en uno después de cada iteración.

  • El bucle hasta

Los bucles Bash Until se utilizan para ejecutar un conjunto de instrucciones o comandos siempre que la condición establecida se evalúe como falsa. A continuación se muestra la sintaxis básica del Bucle Hasta.

until [CONDITION]


do


[INSTARUCTIONS/COMMANDS]


done

Similar al ciclo While, el ciclo Hasta primero evalúa la condición establecida antes de ejecutar las instrucciones o comandos. Si la condición se evalúa como falsa, se ejecutan las instrucciones. El bucle finaliza cuando la condición se evalúa como verdadera. Eche un vistazo al siguiente ejemplo.

#!/bin/bash


count=0


until [ $count -gt 5 ]


do


echo Counter: $count


((count++))


done

Después de guardar y ejecutar el script anterior, obtenemos el resultado a continuación:

Hasta bucle
Hasta bucle

Los scripts anteriores primero crean un recuento de variables y lo ponen a cero (0). Esa es la condición que controla el flujo de nuestro programa. El Bucle Hasta verifica si el valor de conteo es mayor que 5. Si no lo es, imprimirá las instrucciones pasadas. Sin embargo, si el valor es mayor que 5, el ciclo terminará inmediatamente. Por último, incrementamos el valor del recuento en 1 (recuento ++).

Funciones Bash

En programación y secuencias de comandos, las funciones se utilizan para contener un fragmento de código reutilizable necesario para realizar una tarea en particular. Por lo tanto, si tiene comandos similares que desea ejecutar en diferentes partes de su script, no necesita escribir estos comandos repetidamente. Incluirlos en una función y ejecutar la función en su lugar.
A continuación se muestra la sintaxis básica de la función Bash.

function_name () {


<instructions/commands>


}


o,

function function_name {


<instructions/commands>


}


Creemos un script simple que utilice funciones. Primero creamos una función llamada “myFunction”, que genera la declaración “Hola, soy la primera función” cuando se llama. La segunda función, “myCities”, es un poco avanzada ya que toma los argumentos pasados. Los argumentos se dan después de llamar al nombre de la función. Son accesibles en la función como $ 1.

#!/bin/bash


myFunction () {


echo "Hello I am the first function"


echo "Hello I am the first function"


echo


}





echo "This is the second function"


function myCities () {


echo Hello $1


}


myFunction


myCities Washington,D.C


myCities Phoenix

Después de guardar y ejecutar el script, obtenemos el resultado a continuación.

Funciones
Funciones

Menús Bash

Al escribir un script para realizar una tarea avanzada, es posible que necesite que el usuario seleccione una sola opción entre varias opciones que se muestran en la Terminal. Para lograrlo, usaremos el selectcomando bash .

Crea una secuencia de comandos de menú simple que pedirá a los usuarios que seleccionen sus distribuciones de Linux favoritas de una lista. Eche un vistazo al guión a continuación.

#!/bin/bash





#Print message for the user


echo "Select your favorite Linux Distribution"


select distro in Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kali


do


#Print the selected value


if [[ $distro == "Exit" ]]


then


exit 0


else


echo "Selected Linux distribution is $distro"


fi


done

Guardemos el script como menu.sh y ejecútelo. Obtenemos la salida a continuación.

Menús Bash
Menús Bash

En el script anterior, tenemos una lista de siete distribuciones de Linux del usuario que seleccionará una. Después de hacer una selección, se almacena en la variable distroy luego se imprime concatenando con la cadena “La distribución de Linux seleccionada es”. Los menús de selección de Bash pueden ser bastante útiles, especialmente cuando tiene varios scripts que realizan diferentes tareas, y uno tiene que seleccionar el que desea ejecutar.

Aritmética

Todos los lenguajes de programación admiten la realización de operaciones aritméticas, y los scripts bash no son una excepción. Sin embargo, la forma en que realizamos las operaciones aritméticas es un poco diferente. A continuación se muestra una de las formas en que puede realizar operaciones aritméticas en bash. Veremos cuatro tipos de operaciones aritméticas: suma, división y multiplicación.

#!/bin/bash


# Calculate the sum


result=$((70+15))


# Print sum value


echo "sum = $result"





# Calculate the division


result=$((100/25))


# Print division value


echo "division = $result"





#Calculate Multiplication


result=$((15*15))


echo "Multiplication = $result"

Guardemos el script anterior como arithmetic.sh y ejecútelo. Obtenemos la salida a continuación.

Aritmética
Aritmética

Conclusión

Esa es una guía completa para principiantes para comenzar con las secuencias de comandos Bash. Sin embargo, hay más en Bash además de lo que se cubre en este tutorial. Uno de los lugares que recomendaría para mejorar sus habilidades es el Manual de referencia de Bash de GNU. Si tiene algún problema o comenta sobre esta publicación, no dude en hacer clic en los comentarios a continuación.

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux