Si alguna vez ha usado un sistema operativo Linux como la mayoría de los servidores privados virtuales, es posible que haya oído hablar de bash. Es un shell de Unix que lee y ejecuta varios comandos.
Cuando necesite ejecutar varios comandos bash, no tiene que ejecutarlos manualmente uno a la vez. En su lugar, es posible crear un archivo de script que contenga funciones de bash para ejecutar esos comandos.
Puede sonar complicado, pero al aprender sus conceptos básicos, comprenderá el lenguaje de secuencias de comandos bash y descubrirá cómo puede ayudar a su flujo de trabajo.
Este artículo cubrirá el proceso de secuencias de comandos de bash. Repasaremos todo, desde comandos bash hasta ejecutar un programa bash en una terminal Linux.
¿Qué es Bash?
Bash, abreviatura de Bourne-Again Shell , es un shell de Unix y un intérprete de lenguaje de comandos. Lee comandos de shell e interactúa con el sistema operativo para ejecutarlos.
Para comprender completamente las secuencias de comandos bash shell, debe conocer dos conceptos:shell y secuencias de comandos .
Shell es un procesador de macros que utiliza comandos para interactuar con el sistema operativo. Esto significa que puede recuperar, procesar y almacenar información en una computadora.
Mientras tanto, la secuencia de comandos es el proceso de compilar comandos de shell en un nuevo archivo usando un editor de texto.
Cuando escribe bash en un editor de texto, está compilando comandos bash o funciones bash – un conjunto de comandos que se pueden llamar varias veces usando solo el nombre de la función. Luego, el texto se guarda como un script bash ejecutable. archivo con el .sh extensión.
¿Por qué utilizar Bash Scripting?
Los scripts de Bash pueden ayudarlo con su flujo de trabajo, ya que compilan muchos comandos extensos en un único archivo de script ejecutable.
Por ejemplo, si tiene varios comandos que debe ejecutar en un intervalo de tiempo específico, puede compilar un script bash en lugar de escribir y ejecutar los comandos manualmente uno por uno. Solo necesita ejecutar el archivo de script cuando sea necesario.
Aquí hay algunas otras ventajas de usar scripts bash:
- Comandos bien estructurados – estructura los comandos en una secuencia para que cada vez que ejecutes el script, se ejecute en el orden correcto.
- Automatización de tareas – automatice la ejecución del script en cualquier momento definido utilizando el programador basado en el tiempo de cron.
- Transparencia – las personas pueden verificar el contenido de un script ya que está en un archivo de texto legible. Sin embargo, si ejecuta los comandos usando otro programa escrito en un lenguaje de programación diferente, como C++, necesitará acceder al código fuente.
- Transferible – si transfiere un script a otras distribuciones de Linux, seguirá funcionando, siempre que los comandos de shell estén disponibles en ese sistema operativo en particular.
Familiarícese con los comandos Bash
Bash está disponible en casi todos los tipos de sistemas operativos basados en Unix y no requiere una instalación separada. Necesitará una línea de comando de Linux, también conocida como terminal de Linux. Es un programa que contiene el shell y te permite ejecutar scripts bash.
Use este comando para verificar la lista de shells disponibles en su sistema operativo Unix:
cat /etc/shells
La salida debería mostrar una lista como esta:
/bin/bash /bin/sh /bin/tcsh /bin/csh
Cada secuencia de comandos bash shell debe comenzar con #! seguido de la ruta absoluta al intérprete bash. Para ver la ruta, ingrese este comando:
which bash
Debería producir el siguiente resultado:
/bin/bash
Esta es la ruta estándar al intérprete bash en la mayoría de los sistemas operativos Unix. Para que el shell sepa que debe ejecutar comandos usando el intérprete de bash, inicie el script con esta línea:
#!/bin/bash
¡Importante! Si desea ejecutar scripts bash en un servidor privado virtual, conéctese a través de un cliente SSH.
El siguiente paso es escribir y compilar los comandos en un .sh archivo utilizando un editor de texto. Necesitará un editor de texto Unix como VIM o GNU Nano. En este tutorial, usaremos el Nano editor de texto para crear el archivo ingresando este comando:
nano function.sh
Esto abrirá un nuevo .sh archivo para que lo edites. Comience escribiendo #!/bin/bash seguido de comandos bash.
¡Importante! Una vez que haya terminado de usar el editor de texto Nano, presione Ctrl+X para cerrarlo, luego presione Y y Introducir para guardar los cambios.
Comandos básicos de Bash para su primer script de Bash
Para crear con éxito su primer script bash, debe comprender los comandos bash esenciales. Son los elementos principales de un guión, y debes saber qué hacen y cómo escribirlos correctamente.
Hay muchos comandos bash en Linux. Para empezar, cubriremos siete básicos.
1. Comentarios
Los comentarios presentan una descripción en ciertas líneas del guión. El terminal no analiza los comentarios durante la ejecución, por lo que no afectarán la salida.
Hay dos formas de agregar comentarios a un script. El primer método es escribiendo # al comienzo de un comentario de una sola línea.
#!/bin/bash #Command below prints a Hello World text echo “Hello, world!”
El segundo método es usando : seguido de ‘ . Este método funciona para comentarios de varias líneas.
#!/bin/bash read a : ‘ The following commands prints Hello, world! ‘ echo “Hello, World!”
2. Variables
Las variables son símbolos que representan un carácter, cadenas de caracteres o números. Solo necesita escribir el nombre de la variable en una línea de comando para usar las cadenas o números definidos.
Para asignar una variable, escriba el nombre de la variable y el valor de la cadena como aquí:
testvar=“This is a test variable”
En este caso, testvar will es el nombre de la variable, y Esta es una variable de prueba es el valor de la cadena. Al asignar una variable, recomendamos usar un nombre de variable que sea fácil de recordar y represente su valor.
Para leer el valor de la variable en la línea de comando, use $ símbolo antes del nombre de la variable. Echa un vistazo al siguiente ejemplo:
#!/bin/bash testvar=“This is a test variable” echo $testvar
La segunda línea de comando usa echo para imprimir el valor de testvar . El resultado de ese script será:
This is a test variable
Echemos un vistazo a cómo puede ingresar un valor de cadena usando el leer comando y hacer que el script compare dos valores de cadena de diferentes variables:
#!/bin/bash
echo “Enter a number”
read a #The user input in this command line will be stored as variable a
b=50 #The value of variable b
if [[$a -eq $b]]
then
echo “Same number”
else
echo “Different number”
fi
El resultado de ese script debería ser el siguiente:
Enter a number
20
Different number
Tenga en cuenta que línea 3 es el valor que se convierte en variable a .
El script compara la variable a con el valor 20 y la variable b con el valor 50 . Dado que los valores son diferentes, el script imprime Número diferente .
Sin embargo, si el usuario ingresa 50 , esta será la salida:
Enter a number
50
Same number
Este ejemplo también utiliza sentencias condicionales, de las que hablaremos más adelante.
3. comando de eco
eco es un comando muy conocido que se utiliza en muchos lenguajes de programación. Hay varias opciones que puede usar con echo para imprimir la salida en el terminal.
El primer y más común uso de eco es generar texto estándar:
#!/bin/bash
echo “Hello, world!”
El resultado de ese comando es ¡Hola, mundo! De manera predeterminada, al usar el comando echo de esta manera, la terminal ingresará una nueva línea debajo de eso. Si desea repetir una salida sin una nueva línea, puede hacerlo usando -n .
#!/bin/bash
echo -n “Hello, world!”
Usa la opción \n para introducir un salto de línea en la salida. Para habilitar la barra invertida (\) , debe incluir -e .
#!/bin/bash
echo -e “Hello, \nworld!”
La salida de ese comando se verá así:
Hello,
world!
La opción \t agrega un espacio de tabulación horizontal:
#!/bin/bash
echo -e “\tHello, world!”
La salida de este comando sangrará el texto a la derecha:
Hello, world!
También puedes combinar varias opciones. Por ejemplo, combine \n y \t para dividir el texto en líneas y sangrar a la derecha:
#!/bin/bash
echo -e “\n\tHello, \n\tworld!”
La salida de ese comando se verá así:
Hello, world!
4. Funciones
Una función compila un conjunto de comandos en un grupo. Si necesita ejecutar el comando nuevamente, simplemente escriba la función en lugar de todo el conjunto de comandos.
Hay varias formas de escribir funciones.
La primera forma es comenzando con el nombre de la función y siguiéndolo con paréntesis y corchetes:
function_name () {
first command
second command
}
O, si quieres escribirlo en una sola línea:
function_name () { first command; second command; }
El segundo método para escribir una función es usar la palabra reservada función seguido del nombre de la función. Esto elimina la necesidad de paréntesis:
function function_name {
first command
second command
}
Este método también tiene una versión de una sola línea:
function function_name { first command; second command; }
Por ejemplo, podemos escribir dos funciones con múltiples echo comandos:
#!/bin/bash
hello_world () {
echo “Hello, World!”
echo “This is a test function”
}
print_message () {
echo “Let’s learn bash programming”
echo “Enjoy this tutorial”
}
Tenga en cuenta que escribir las funciones como en el ejemplo anterior solo las define y no ejecuta los comandos contenidos. Para ejecutar una función, ingrese su nombre en la línea de comando.
Ahora, usemos los dos ejemplos anteriores en una función bash completa, incluida su ejecución:
#!/bin/bash
#Define a hello world function
hello_world () {
echo “Hello, World!”
echo “This is a test function”
}
#Define a print message function
print_message () {
echo “Let’s learn bash programming”
echo “Enjoy this tutorial”
}
#Execute the hello world function
hello_world
#Execute the print message function
print_message
Este es el resultado del script anterior:
Hello, World!
This is a test function
Let’s learn bash programming
Enjoy this tutorial
5. Bucles
Los comandos de loop bash son útiles si desea ejecutar comandos varias veces. Hay tres tipos de ellos que puede ejecutar en bash:para , mientras y hasta .
El para loop ejecuta el comando para una lista de elementos:
#!/bin/bash
for item in [list]
do
[commands]
done
El siguiente ejemplo usa un for bucle para imprimir todos los días de la semana:
#!/bin/bash
for days in Monday Tuesday Wednesday Thursday Friday Saturday Sunday
do
echo “Day: $days”
done
En línea 2 , “días” automáticamente se convierte en una variable, siendo los valores los nombres de los días que siguen. Luego, en el eco comando, usamos el $ símbolo para llamar a los valores de las variables.
El resultado de ese script será el siguiente:
Day: Monday
Day: Tuesday
Day: Wednesday
Day: Thursday
Day: Friday
Day: Saturday
Day: Sunday
Tenga en cuenta que incluso con una sola línea de comando en el script de bucle, imprime siete echo salidas.
El siguiente tipo de bucle es while . El script evaluará una condición. Si la condición es verdadera , seguirá ejecutando los comandos hasta que la salida ya no cumpla con la condición definida.
#!/bin/bash
while [condition]
do
[commands]
done
Echemos un vistazo a un ejemplo simple que involucra una variable y un operador de incremento, denotado como ((++)) :
#!/bin/bash
i=0
while [ $i -le 5 ]
do
echo $i
((i++))
done
La variable comienza con un 0 valor, y el operador de incremento lo incrementará en uno. El conjunto de condiciones es menor o igual a cinco, por lo que el comando seguirá iterando hasta que la salida llegue a cinco. El resultado de ese script será el siguiente:
0
1
2
3
4
5
El último tipo de bucle, hasta , es lo contrario de mientras . Iterará el comando hasta que la condición se vuelva verdadera.
Si queremos el mismo resultado que el while ejemplo anterior usando el hasta loop, podemos escribir el script así:
#!/bin/bash
i=0
until [ $i -gt 5 ]
do
echo $i
((i++))
done
Ahora, este comando iterará hasta que el valor de salida llegue a cinco. El resultado será el mismo que nuestro ejemplo con while bucle:
0
1
2
3
4
5
6. Declaraciones condicionales
Muchos lenguajes de programación, incluido bash, usan declaraciones condicionales como si , entonces , y más para la toma de decisiones. Ejecutan comandos e imprimen resultados según las condiciones.
El si La instrucción va seguida de una expresión condicional. Después de eso, le sigue luego y el comando para definir la salida de la condición. El script ejecutará el comando si la condición expresada en if afirmación es verdadera.
Sin embargo, si desea ejecutar un comando diferente si la condición es falsa, agregue un else instrucción al script y seguirlo con el comando.
Echemos un vistazo al si simple , entonces , y más declaraciones. Antes de la declaración, incluiremos una variable para que el usuario pueda ingresar un valor:
#!/bin/bash
echo “Enter a number”
read num
if [[$num -gt 10]]
then
echo “The number is greater than 10”
else
echo “The number is not greater than 10”
7. Leer y escribir archivos
Existen varios métodos para leer un archivo, con el gato el comando es el más popular. Tenga en cuenta que este comando lee el todo contenido del archivo.
Para leer el contenido línea por línea, utilice el leer comando y un bucle. Antes de escribir un script para leer un archivo, primero asegúrese de que el archivo exista.
En el siguiente ejemplo, tenemos un to-do.txt archivo que contiene una lista de tareas pendientes:
Reply email
Finish report
Call clients
Team evaluation
Usaremos el gato y leer comandos en nuestra función bash para leer e imprimir el contenido de to-do.txt expediente. La primera parte del script usará el gato mientras que la segunda parte usará el comando leer comando en un bucle.
#!/bin/bash
echo “Reading the file using cat command”
content=’cat to-do.txt’
echo $content
echo “Reading the file using read command and loop”
filename=’to-do.txt’
while read line
do
echo $line
done<$filename
El resultado del script será el siguiente:
Reading the file using cat command
Reply email Finish report Call clients Team evaluation
Reading the file using read command and loop
Reply email
Finish report
Call clients
Team evaluation
Para escribir la salida de un comando en un archivo, use los operadores de redirección, representados con > y >> símbolos, y seguirlos con el nombre del archivo:
output > filename
output >> filename
Tenga cuidado al elegir el operador. Si el archivo existe, el > El operador sobrescribirá su contenido con una cadena de longitud cero. Significa que perderá el contenido del archivo existente. Si el nombre del archivo ingresado no existe, lo creará.
El >> El operador, por otro lado, agregará la salida al archivo dado.
Aquí hay una redirección simple para escribir la salida en un archivo de texto:
echo “Hello, world!” >> hello_world.txt
La redirección también funciona con leer Comando para escribir cualquier entrada del usuario. Este ejemplo de secuencia de comandos agregará el valor de entrada en name.txt archivo:
#!/bin/bash
echo “Enter your name”
read Name
echo $Name >> name.txt
Debido a que la secuencia de comandos redirige la salida variable al archivo, no verá ninguna salida impresa. Para ver el resultado imprimiendo el contenido del archivo, agregue la siguiente línea de comando para leer el archivo:
echo ‘cat name.txt’
Asegúrese de que tiene permiso para leer y escribir en el archivo para evitar el permiso denegado error. Si desea agregar la salida a los archivos existentes, asegúrese de escribir los nombres de archivo correctos.
4 Funciones Fáciles para Probar en su Primer Script Bash
Ahora que conocemos algunos comandos bash, veremos ejemplos de funciones bash más básicas para su primer script.
Como se mencionó anteriormente, cuando desee escribir un archivo de script bash, use el comando nano filename.sh para crear y abrir un .sh archivo y comience a escribir sus funciones bash. No olvide salir y guardar el archivo cuando haya terminado.
Empezar con una función de eco simple
Comencemos con una función de eco simple. Comience definiendo el nombre de la función seguido del comando echo en la siguiente línea, como en el ejemplo a continuación:
#!/bin/bash testfunction () { echo “My first function” } testfunction
Guarde este script en testFunction.sh . Cuando ejecuta el script en la línea de comando, debería ver el siguiente resultado:
My first function
Tenga en cuenta que si intercambia la posición de la definición de la función con la llamada a la función, se producirá un error. Veamos el ejemplo a continuación:
#!/bin/bash
testfunction
testfunction(){
echo “My first function”
}
Este fragmento no funcionará. Llama a la función en la segunda línea de comando y define la función más tarde. En este caso, el intérprete no puede encontrar la función cuando ejecuta el script, lo que genera un comando no encontrado. error.
Use algunos parámetros
Las funciones Bash aceptan cualquier número de parámetros. El siguiente ejemplo acepta dos parámetros:
#!/bin/bash
testfunction () {
echo $1
echo $2
}
testfunction “Hello” “World”
También puede usar los argumentos de la línea de comando y realizar funciones de bash. A continuación se muestra un ejemplo de este tipo:
#!/bin/bash
addition () {
sum=$(($1+$2))
return $sum
}
read -p "Enter a number: " int1
read -p "Enter a number: " int2
addition $int1 $int2
echo "The result is : " $?
La suma se asigna en una variable suma , y esto se devuelve desde la función. Las funciones Bash siempre devuelven un solo valor. La entrada del usuario se toma usando leer para ambos números. Finalmente, el resultado se imprime usando $? que almacena el valor devuelto $sum de la función.
Crear directorios y cambiar rutas
Ahora, veamos otro ejemplo de función donde primero creamos un directorio y luego cambiamos la ruta para que apunte a una nueva ubicación. Esta función contendrá mkdir y cd Comandos de Linux para crear un nuevo directorio y cambiar el directorio actual:
#!/bin/bash sampleFunction () { mkdir -p $1 cd $1 } sampleFunction myDir
La función leerá el primer argumento y creará un directorio con ese nombre. Después de ejecutar el script, verifique la ruta de trabajo actual usando pwd comando en la terminal. Verá que actualmente se encuentra dentro del myDir recién creado .
Combinar bucles y condicionales
Los bucles y las declaraciones condicionales también son populares en las secuencias de comandos bash. Veremos algunos casos de uso de ambos en el mismo script:
#!/bin/bash
isvalid=true
count=1
while [ $isvalid ]
do
echo $count
if [ $count -eq 5 ];
then
break
fi
((count++))
done
El ejemplo anterior usa while y si declaraciones. Esto ejecuta el mientras bucle cinco veces después de verificar la declaración condicional.
El resultado de este script será:
1
2
3
4
5
El para loop puede incrementar y decrementar los contadores. Un ejemplo de un para bucle se muestra a continuación:
#!/bin/bash
for (( count=10; count>0; count-- ))
do
echo -n "$count "
done
La salida de este ciclo for debería ser:
10 9 8 7 6 5 4 3 2 1
Con si declaraciones, también podemos definir else if usando elif declaración:
#!/bin/bash
echo "Enter a valid number"
read n
if [ $n -eq 101 ];
then
echo "This is the first number"
elif [ $n -eq 510 ];
then
echo "This is the second number"
elif [ $n -eq 999 ];
then
echo "This is the third number"
else
echo "No numbers over here"
fi
También podemos escribir ese script usando el caso declaración. En el caso declaraciones, ;; representa un salto de caso, por lo que si el valor de la variable cumple alguna de las condiciones, salta al final del script:
#!/bin/bash
echo "Enter a valid number"
read n
case $n in
101)
echo "This is the first number" ;;
510)
echo "This is the second number" ;;
999)
echo "This is the third number" ;;
*)
echo "No numbers over here" ;;
esac
Cómo ejecutar Bash Script
Ahora que hemos escrito un script bash, aprendamos cómo ejecutarlo desde la terminal. Hay tres métodos para hacerlo:usando el bash comando, usando el ./ y ejecutar el script desde un directorio diferente.
Uso del comando Bash
El primer método es usando el bash comando desde el directorio apropiado. Por ejemplo, puede tener un function.sh script bash que contiene funciones de eco simples en Test/Bash directorio. Primero debe abrir el directorio usando este comando:
cd Test/Bash
Luego, ejecuta el siguiente bash comando para ejecutar el script bash:
bash function.sh
Debería ver el resultado como este:
Si intenta ejecutar el script sin bash comando, recibirá un comando no encontrado mensaje de error.
Uso del comando ./
Puede ejecutar un script bash sin bash dominio. Sin embargo, debe configurar el archivo para que ejecutar permiso usando el siguiente comando desde el directorio apropiado:
chmod +x function.sh
Este comando modifica los permisos del archivo para que todos puedan ejecutar el archivo. Una vez que haya hecho eso, ejecute el script bash usando este comando:
./function.sh
Si no establece el permiso correctamente, el terminal imprimirá un Permiso denegado mensaje de error:
Como el golpe comando, también obtendrá un comando no encontrado error si no usa ./ a tu mando.
Ejecutar el script desde un directorio diferente
Otra alternativa es ejecutar el script desde un directorio diferente. Después de crear el script bash, use el pwd comando para encontrar su directorio actual. Una vez que conozca la ruta, puede ejecutar el script desde cualquier directorio. Por ejemplo, use el siguiente comando para ejecutar function.sh desde el directorio de inicio:
bash Test/Bash/function.sh
Conclusión
Bash lee comandos de shell e interactúa con el sistema operativo para ejecutarlos. El gran aspecto de bash es que puede compilar muchos comandos y funciones de bash en un solo script ejecutable, lo que lo ayuda a optimizar su flujo de trabajo.
Para crear un archivo de script bash, debe comprender los diversos comandos de shell y su sintaxis adecuada. En este tutorial, hemos cubierto siete comandos básicos:
- Comentarios
- Variables
- Eco
- Funciones
- Bucles
- Declaraciones condicionales
- Lectura y escritura de archivos
Sin embargo, hay mucho más que aprender si desea poder utilizar todo el potencial de bash. Practique con los ejemplos que proporcionamos y continúe explorando bash para que pueda escribir secuencias de comandos mejores y más eficientes.
Hemos cubierto las tres formas de ejecutar un script bash. Si tiene alguna pregunta o comentario, déjelos en la sección a continuación.