Shell scripting es una parte importante de la automatización de procesos en Linux. Las secuencias de comandos lo ayudan a escribir una secuencia de comandos en un archivo y luego ejecutarlos.
Esto le ahorra tiempo porque no tiene que escribir ciertos comandos una y otra vez. Puede realizar tareas diarias de manera eficiente e incluso programarlas para que se ejecuten automáticamente.
También puede configurar ciertos scripts para que se ejecuten al inicio, como mostrar un mensaje en particular al iniciar una nueva sesión o configurar ciertas variables de entorno.
Las aplicaciones y los usos de las secuencias de comandos son numerosos, así que profundicemos.
En este artículo, aprenderá:
- ¿Qué es un shell bash?
- ¿Qué es un script bash y cómo se identifica?
- Cómo crear su primer script bash y ejecutarlo.
- La sintaxis básica de las secuencias de comandos de shell.
- Cómo ver los scripts programados de un sistema.
- Cómo automatizar secuencias de comandos programando a través de trabajos cron.
La mejor forma de aprender es practicando. Le recomiendo encarecidamente que siga usando Replit. Puede acceder a un shell de Linux en ejecución en cuestión de minutos.
Introducción a Bash Shell
La línea de comandos de Linux la proporciona un programa llamado shell. A lo largo de los años, el programa shell ha evolucionado para adaptarse a varias opciones.
Se pueden configurar diferentes usuarios para usar diferentes shells. Pero la mayoría de los usuarios prefieren quedarse con el shell predeterminado actual. El shell predeterminado para muchas distribuciones de Linux es GNU Bourne-Again Shell (bash). Bash es sucedido por Bourne shell (sh
).
Cuando inicia el shell por primera vez, utiliza un script de inicio ubicado en .bashrc
o .bash_profile
archivo que le permite personalizar el comportamiento del shell.
Cuando un shell se usa de forma interactiva, muestra un $
cuando está esperando un comando del usuario. Esto se llama indicador de shell.
[username@host ~]$
Si el shell se ejecuta como root, el aviso se cambia a #
. El indicador de shell de superusuario se ve así:
[root@host ~]#
Bash es muy poderoso ya que puede simplificar ciertas operaciones que son difíciles de realizar de manera eficiente con una GUI. Recuerde que la mayoría de los servidores no tienen una GUI y es mejor aprender a usar los poderes de una interfaz de línea de comandos (CLI).
¿Qué es un script Bash?
Un script bash es una serie de comandos escritos en un archivo. Estos son leídos y ejecutados por el programa bash. El programa se ejecuta línea por línea.
Por ejemplo, puede navegar a una ruta determinada, crear una carpeta y generar un proceso dentro de ella usando la línea de comando.
Puede hacer la misma secuencia de pasos guardando los comandos en un script bash y ejecutándolo. Puede ejecutar el script tantas veces como desee.
¿Cómo se identifica un script Bash?
Extensión de archivo de .sh
.
Por convenciones de nomenclatura, los scripts bash terminan con un .sh
. Sin embargo, los scripts de bash pueden ejecutarse perfectamente sin el sh
extensión.
Los scripts comienzan con un bash bang.
Los scripts también se identifican con un shebang
. Shebang es una combinación de bash #
y bang !
siguió la ruta del shell bash. Esta es la primera línea del script. Shebang le dice al shell que lo ejecute mediante bash shell. Shebang es simplemente una ruta absoluta al intérprete bash.
A continuación se muestra un ejemplo de la declaración shebang.
#! /bin/bash
La ruta del programa bash puede variar. Más adelante veremos cómo identificarlo.
Derechos de ejecución
Los scripts tienen derechos de ejecución para el usuario que los ejecuta.
Un derecho de ejecución está representado por x
. En el siguiente ejemplo, mi usuario tiene el rwx
(leer, escribir, ejecutar) derechos para el archivo test_script.sh
Color de archivo
Los scripts ejecutables aparecen en un color diferente al resto de los archivos y carpetas.
En mi caso, los scripts con derechos de ejecución aparecen en color verde.
Cómo crear su primer script Bash
Vamos a crear un script simple en bash que genere Hello World
.
Crea un archivo llamado hello_world.sh
touch hello_world.sh
Encuentre la ruta a su shell bash.
which bash
En mi caso, la ruta es /usr/bin/bash
e incluiré esto en el tinglado.
Escribe el comando.
Haremos echo
"hola mundo" a la consola.
Nuestro script se verá así:
#! usr/bin/bash
echo "Hello World"
Edite el archivo hello_world.sh
usando un editor de texto de su elección y agregue las líneas anteriores en él.
Proporcione derechos de ejecución a su usuario.
Modifique los permisos del archivo y permita la ejecución del script usando el siguiente comando:
chmod u+x hello_world.sh
chmod
modifica los derechos existentes de un archivo para un usuario en particular. Estamos agregando +x
al usuario u
.
Ejecutar el script.
Puede ejecutar el script de las siguientes maneras:
./hello_world.sh
bash hello_world.sh
.
Aquí está el resultado:
La sintaxis básica de Bash Scripting
Al igual que cualquier otro lenguaje de programación, bash scripting sigue un conjunto de reglas para crear programas comprensibles para la computadora. En esta sección, estudiaremos la sintaxis de las secuencias de comandos de bash.
Cómo definir variables
Podemos definir una variable usando la sintaxis variable_name=value
. Para obtener el valor de la variable, agregue $
antes de la variable.
#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name
Tux es también el nombre de la mascota de Linux, el pingüino.
Expresiones aritméticas
A continuación se muestran los operadores admitidos por bash para cálculos matemáticos:
Operador | Uso | |
---|---|---|
+ | adición | |
- | resta | |
* | multiplicación | |
/ | división | |
** | exponenciación | |
% | módulo |
Operación | Sintaxis | Explicación |
---|---|---|
Igualdad | num1 -eq numero2 | es num1 igual a num2 |
Mayor que igual a | num1 -ge numero2 | es num1 mayor que igual a num2 |
Mayor que | num1 -gt numero2 | es num1 mayor que num2 |
Menor que igual a | num1 -le num2 | es num1 menor que igual a num2 |
Menos de | num1 -lt numero2 | es num1 menor que num2 |
No es igual a | num1 -ne num2 | es num1 diferente a num2 |
HORARIO | VALOR PROGRAMADO |
---|---|
5 0 * 8 * | A las 00:05 de agosto. |
5 4 * * 6 | A las 04:05 del domingo. |
0 22 * * 1-5 | A las 22:00 todos los días de la semana de lunes a viernes. |