GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de secuencias de comandos de Bash para principiantes

Si está comenzando con los sistemas Linux, términos como “Shell scripting” o “Bash scripting ” puede ser bastante común, pero ¿qué significan? Antes de entrar en detalles, el aprendizaje de las secuencias de comandos de Bash puede ayudarlo a ahorrar tiempo en la ejecución y realización de diversas tareas del sistema y comprender mejor la línea de comandos de Linux (Terminal) y automatizar múltiples tareas del sistema.

¿Qué es Bash?

Bash, acrónimo de “Bourne-Again-Shell” es un shell de Unix o intérprete de lenguaje de comandos para el sistema operativo GNU. Ha sido el Shell principal para las distribuciones de Linux y los lanzamientos 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 escriben comandos para realizar varias tareas. Bash también puede ejecutar comandos escritos en un archivo, un método denominado “bash scripting”.

Diferencia entre Bash scripting y Shell Scripting

Las secuencias de comandos de Shell y las secuencias de comandos de Bash no son lo mismo. Con las secuencias de comandos Bash, está utilizando explícitamente el shell bash. Por otro lado, la secuencia de comandos 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 de bash y secuencias de comandos de shell indistintamente para significar lo mismo. Nuestra publicación sobre los 6 principales shells de código abierto para Linux ofrece una descripción detallada de estos shells.

En esta publicación, veremos las secuencias de comandos de 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

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 las secuencias de comandos 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 un .sh extensión y como texto sin formato y no como texto enriquecido. Uno de mis editores favoritos que uso para escribir guiones 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 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 guiones como "prueba". Desconocido para la mayoría, hay un comando incorporado de Unix llamado prueba, que verifica los tipos de archivos y compara los valores. Puede usar el comando which para verificar si hay un programa con el mismo nombre que el de su secuencia de comandos para evitar conflictos de programas.

which [command]
e.g
which test

Del resultado 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 todos los usuarios, 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, te darás cuenta de que necesitarás usar el cd comando 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 actualizaciones recientes, la mayoría de las distribuciones no vienen con el bin carpeta por defecto. 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 el cd y ./ comandos.

Directrices de secuencias de comandos de Bash

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.
  • Todos los comentarios comienzan con un # símbolo.
  • Los comandos se incluyen con () corchetes.

El #!/bin/bash (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 va seguido de un (!) marca en Hash-Bang Hack, el script se ve obligado a ejecutarse con el shell al que apunta esta línea. En nuestro caso, es el shell Bash.

Tu primera secuencia de comandos Bash

Como la mayoría de los lenguajes de programación, escribiremos un script que imprima el “Hello World” declaración cuando se ejecuta. Abra su editor de texto favorito y pegue los comandos a continuación. Guarde el archivo de texto como fossHelloWorld.sh o cualquier otro nombre que no sea un comando incorporado.

#!/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

El guión anterior tiene solo tres líneas. El primero es 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 secuencias de comandos bash que puede utilizar.

Comando de eco

El comando Echo se usa para imprimir resultados 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 secuencia de comandos, asígnele los permisos necesarios y ejecútela.

Para comprender el código, el primer comando de eco imprime una declaración y pasa a la siguiente línea. El segundo comando echo tiene el -n argumento que impide que el script pase a la siguiente línea. Puede usar 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. Uno puede declarar variables Bash de varias maneras. Al asignar un valor a cualquier variable, no necesita usar ningún símbolo. Sin embargo, al llamar al valor de la variable, deberá usar el $ firmar 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

Ahora vamos a crear un script bash que tome dos entradas del usuario y las almacene en variables $x y $y . La secuencia de comandos comprobará 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 a continuación, puede ver que ingresamos valores diferentes y el script pudo verificar si son iguales o no.

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

Declaración condicional

En cualquier lenguaje de programación, las sentencias 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 "if-then-else" y "case". 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 siguiente secuencia de comandos, que utiliza la declaración condicional "if-then-else".

#!/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

Repasemos el guión de arriba. Tenemos el echo declaración que solicita a los usuarios que ingresen su número de edad. El read La declaració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 años antes de instruir al usuario.

Bucles

Los bucles se usan comúnmente cuando desea ejecutar una pieza de código varias veces. Por ejemplo, si quisiera hacer eco de 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 Mientras y Bucle Hasta. Veamos cada uno de ellos.

  • El bucle For

Un For Loop se usa para iterar a través de una lista de datos específicos o una matriz. A continuación se muestra la sintaxis básica de 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. Itera a través de los días dados de la semana 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.sh y ejecutarlo. A continuación se muestra una captura de pantalla de la salida.

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 ciclo while

El ciclo while ejecuta una tarea específica mientras una condición en particular sigue siendo verdadera. En cada iteración, el bucle 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 while de bash es la siguiente:

while [CONDITION]
do
[COMMANDS]
done

Por ejemplo, podemos tener un script que imprima la declaración “Bienvenido a FOSSLINUX.COM” 20 veces hasta que una variable X se establezca en 20. Intentemos implementar eso de manera práctica. Eche un vistazo a la secuencia de comandos 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.sh y ejecutarlo. A continuación se muestra una captura de pantalla de la salida.

Echemos un vistazo a la secuencia de comandos While Loop anterior. Primero declaramos una variable X dándole el valor 1. Luego creamos una instrucción While que genera la declaración "Bienvenido a FOSSLINUX.COM" mientras 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 Until.

until [CONDITION]
do
[INSTARUCTIONS/COMMANDS]
done

Similar al ciclo While, el ciclo Until 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 siguiente resultado:

Los scripts anteriores primero crean un recuento variable y lo establecen en cero (0). Esa es la condición que controla el flujo de nuestro programa. El Bucle Hasta comprueba si el valor de la cuenta 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 de conteo en 1 (contar++).

Funciones bash

En programación y secuencias de comandos, las funciones se utilizan para contener una pieza de código reutilizable necesaria para realizar una tarea en particular. Por lo tanto, si tiene comandos similares que desea ejecutar en diferentes partes de su secuencia de comandos, no necesita escribir estos comandos repetidamente. Incluyalos en una función y ejecute 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>
}

Vamos a crear un script simple que haga uso de 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 acepta 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 siguiente resultado.

Menús de fiesta

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

Crea un script de menú simple que pedirá a los usuarios que seleccionen sus distribuciones de Linux favoritas de una lista. Eche un vistazo a la secuencia de comandos 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 el resultado a continuación.

En el script anterior, tenemos una lista de siete distribuciones de Linux, el usuario seleccionará una. Después de hacer una selección, se almacena en la variable distro y luego se imprime concatenándolo 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 bash scripting no es una excepción. Sin embargo, la forma en que llevamos a cabo 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 aritmetic.sh y ejecútelo. Obtenemos el resultado a continuación.

Conclusión

Esta es una guía completa para principiantes para comenzar con la creación de scripts de 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 esta publicación, no dude en hacer clic en los comentarios a continuación.


Linux
  1. Tutorial de scripts de Bash para principiantes:qué es, cómo escribir uno y ejemplos de scripts

  2. Tutorial de comando cd de Linux para principiantes (8 ejemplos)

  3. Tutorial de comandos de comunicación de Linux para principiantes (5 ejemplos)

  4. Tutorial de comando Linux df para principiantes (8 ejemplos)

  5. Tutorial de comando de fecha de Linux para principiantes (8 ejemplos)

Tutorial de comandos de Linux nm para principiantes (10 ejemplos)

Tutorial de comandos OD de Linux para principiantes (6 ejemplos)

Tutorial de comando Linux w para principiantes (5 ejemplos)

Tutorial de comandos ss de Linux para principiantes (8 ejemplos)

Tutorial de Bash Heredoc para principiantes

Shell Scripting para principiantes:cómo escribir Bash Scripts en Linux