Cómo crear su primer script

LinuxBeginner
Practicar Ahora

Introducción

¡Bienvenido al mundo de la automatización!

Imagine que es chef. En lugar de preparar cada plato a mano y de memoria una y otra vez, escribe una receta. Después, el personal de cocina puede seguirla para preparar el plato correctamente cada vez, sin que usted tenga que supervisar todos los pasos.

En Linux, un script es su receta. Es un archivo de texto plano que contiene comandos que el shell puede leer y ejecutar en orden. Esta es una de las formas de automatización más antiguas e importantes de los sistemas Unix y Linux.

Los scripts de shell se hicieron populares porque los administradores necesitaban una forma ligera de automatizar tareas repetitivas, mucho antes de que existieran las herramientas modernas de gestión de configuraciones. Incluso hoy, muchos sistemas en producción siguen dependiendo de pequeños scripts de shell para la configuración, el mantenimiento y la resolución de problemas.

En este laboratorio introductorio escribirá su primera receta. Usted:

  1. Preparará: cree el archivo del script.
  2. Escribirá: añada las instrucciones (comandos).
  3. Autorizará: conceda al archivo permiso para ejecutarse.
  4. Ejecutará: ejecute su nuevo programa.

Crear un archivo de script

Primero necesitamos una hoja en blanco donde escribir nuestra receta. En Linux, un script es simplemente un archivo de texto plano.

Aunque Linux no le obliga a usar extensiones de archivo, es una buena práctica poner .sh a los scripts de shell. Esto ayuda a las personas a reconocer rápidamente la función del archivo, aunque Linux presta más atención al contenido y a los permisos que a la extensión del nombre.

Esta es una idea importante de Unix: normalmente, un archivo se identifica más por su contenido y sus permisos que por su nombre. Un script no es un tipo de archivo especial creado por un asistente gráfico. Es simplemente texto que un programa como Bash puede leer línea por línea.

Vamos a crear un archivo vacío llamado hello.sh en el directorio de su proyecto.

Compruebe que se encuentra en el lugar correcto:

pwd

Ahora use el comando touch. Este comando equivale digitalmente a tomar una hoja de papel en blanco:

touch hello.sh

Compruebe su escritorio para asegurarse de que el papel está allí:

ls

Debería ver hello.sh, listo para recibir sus instrucciones.

Escribir el contenido del script

Ahora tenemos que escribir la receta real. Pero antes necesitamos un encabezado especial.

Piense en un script como si fuera una carta. Debe dirigirla a la persona correcta. En Linux, la primera línea de un script indica al sistema quién debe leerlo. Esta línea se llama shebang (#!).

Queremos que el shell Bash lea nuestro script, así que lo dirigiremos a /bin/bash. También añadiremos una instrucción sencilla: echo. Este comando indica al equipo que «diga esto en voz alta».

El shebang es una de las convenciones de Unix más antiguas y prácticas. Cuando ejecuta un script como programa, el sistema operativo lee la primera línea y la utiliza para decidir qué intérprete debe procesar el archivo. Un intérprete es un programa que lee instrucciones y las ejecuta, en lugar de ejecutar directamente un binario precompilado.

Abra el archivo vacío con el editor nano:

nano hello.sh

Ahora escriba estas dos líneas exactamente como aparecen:

#!/bin/bash
echo "Hello LabEx"

Veamos qué significa cada línea:

  • #!/bin/bash: la «etiqueta de dirección». Indica a Linux: «Envíe estas instrucciones al programa Bash».
  • echo "Hello LabEx": la «instrucción». Indica a Bash que muestre Hello LabEx en la pantalla.

Sin un shebang, el script todavía puede funcionar en algunos casos si lo ejecuta explícitamente con bash hello.sh, porque usted está eligiendo manualmente el intérprete. Sin embargo, cuando lo ejecuta como ./hello.sh, el shebang es la forma estándar de indicar al sistema qué programa debe procesar el archivo.

Guardar y salir:

  1. Pulse Ctrl + O para guardar.
  2. Pulse Enter para confirmar.
  3. Pulse Ctrl + X para salir.

Compruebe de nuevo lo que ha escrito leyendo el archivo con cat:

cat hello.sh

Hacer ejecutable el script

Ha escrito una receta, pero por ahora solo es una hoja de papel. Linux aplica una política de seguridad estricta: los archivos de texto no pueden ejecutarse como programas a menos que usted les conceda explícitamente ese permiso. ¡Así se evita que ejecute accidentalmente su lista de la compra como código!

Necesitamos girar la «llave» que permite la ejecución. El comando para cambiar los permisos (modos) es chmod. La llave que queremos añadir es +x (más eXecución).

Esto no modifica el contenido del archivo. Cambia sus bits de modo, que forman parte de los metadatos que Linux almacena sobre cada archivo. En otras palabras, chmod +x no hace que el script sea «más parecido a un script»; simplemente indica al sistema que este archivo tiene permiso para ejecutarse como programa.

Conceda el permiso a su script:

chmod +x hello.sh

Compruebe de nuevo la identificación del archivo para confirmar que funcionó:

ls -l hello.sh

Observe los permisos de la izquierda. Debería ver una x, como en -rwxr-xr-x. Es posible que el nombre del archivo también aparezca en color verde, que es la forma que tiene el terminal de indicar: «Adelante, puede ejecutarse».

Ejecutar el script

Ha llegado el momento de la verdad. ¡Vamos a cocinar la receta!

Para ejecutar un script que se encuentra justo delante de usted, en el directorio actual, debe ser muy específico. No puede escribir simplemente hello.sh. Debe escribir ./hello.sh.

  • . significa «directorio actual».
  • / es el separador.

Por tanto, ./hello.sh significa literalmente: «Ejecute el archivo llamado hello.sh que está dentro de esta carpeta».

Esto sorprende a muchos principiantes. La razón es que, normalmente, el shell solo busca en los directorios incluidos en la variable PATH cuando usted escribe el nombre de un comando por sí solo. Por motivos de seguridad, el directorio actual normalmente no se busca de forma automática. Por eso es importante ./: está proporcionando una ruta explícita en lugar de pedirle al shell que busque el comando en otro lugar.

Ejecute su script:

./hello.sh

Si todo ha funcionado correctamente, el equipo debería responderle amablemente:

Hello LabEx

¡Enhorabuena! Ya no es solamente un usuario de Linux; ahora es un programador de Linux. Ha creado, autorizado y ejecutado correctamente su primer script de automatización.

Resumen

¡Muy bien! Acaba de desbloquear un superpoder importante.

Repasemos el «flujo de trabajo de los scripts» que ha aprendido:

  1. Preparar: use touch o un editor para crear el archivo.
  2. Programar: añada el encabezado #!/bin/bash y sus comandos.
  3. Desbloquear: use chmod +x para que Linux permita su ejecución.
  4. Ejecutar: ejecútelo con ./scriptname.sh.

Puede parecer algo pequeño, pero todas las configuraciones automatizadas de gran escala, desde servidores web hasta supercomputadores, comienzan con scripts sencillos como este.