¿Te han pedido que hagas uno de tus desarrollos utilizando Shell Script? No te desesperes buscando cómo empezar. Aquí te dejamos todo lo esencial para que inicies uno.
Luego ya puedes dirigirte a StackOverflow para ir consultando temas específicos que necesites en tu lógica.
Scripts
Lo primero que tienes que saber, es que existen bastantes Scripts en el mundo de la programación. Como te debes imaginar, PHP es un lenguaje scripting, así como el cada vez más popular y utilizado: Javascript. De lado de machine learning, tenemos al famoso Python. Claro, también te sonará Bash. Es un derivado de Bourne Shell. Exactamente proviene de las palabras “Bourne Again Shell”. En esta publicación, te enseñaré lo esencial para que puedas escribir tu primer programa en Shell Script (Bourne Shell $) sin problemas. Luego depende de ti la complejidad del programa. Considera que el lenguaje scripting es bastante divertido, puesto que no necesita de compilaciones, y es bastante robusto. Con ello, puedes hacer un sinfín de utilidades y automatizaciones genuinamente complejas.
Creación del Shell Script
Para que te des cuenta que es muy sencillo, ni siquiera necesitas instalarte una IDE específica ni instalar nodejs ni ejecutar npms ni nada por el estilo. Cualquier editor de texto bastará, incluso el Notepad++ que seguro tienes por ahí. Puedes abrir vi, si es más de tu estilo.
Si ya abriste tu editor de texto, asegúrate que tu primer línea que escribas, sea la siguiente:
#!/bin/bash
Seguramente ya lo has visto un millón de veces, si has leído otros programas en Shell Script. El primer símbolo “#!” se llama shebang, y simplemente indica qué programa usará para interpretar el script creado. Inmediatamente después, se coloca el directorio donde se encuentra el Shell. Por lo tanto, asegúrate de no olvidar colocar esa línea esencial. Sin eso, tus comandos no servirán de nada. Por ahora, guardemos. Para ello, no te olvides de hacerlo con el encoding apuntando a UNIX, y claro, la extensión, sin duda alguna es “.sh”. Para efectos de este post, lo llamaré “just-code-it.sh”. Tú lo puedes llamar como te sea más conveniente, dependiente de la lógica final de tu programa o su propósito.
Ejecución del Shell Script
Para esto, dirígete a un terminal (shell, más popular Bash). Las distribuciones de GNU/Linux son perfectas para esto, ya que el Shell convierte todos los comandos que escribas en algo perfectamente entendible para el Kernel, y la ejecución no podría ser más simple. Escribe cualquiera de las siguientes opciones:
- sh just-code-it.sh
- ./just-code-it.sh
- bash just-code-it.sh
En caso desees o necesites otorgar permisos a tu archivo para la ejecución, solo necesitas el comando “chmod”. Te recomiendo googlearlo para que lo domines. Por ahora, te dejo el siguiente comando completo para que le des permiso tanto lectura, escritura y de ejecución.
chmod 755 just-code-it.sh
Te aconsejo usar el 700 si deseas que el archivo creado sea privado. Pero en fin, eso es todo para su ejecución.
Comandos básicos
Lo primero que tienes que saber es que todas las variables se inicializan con el NOMBRE=valor. Es un estándar conocido que los nombres de las variables se escriben en mayúsculas, y por nada del mundo dejes espacios entre el signo igual. Ejemplo:
- NOMBRE = valor
- NOMBRE= valor
- NOMBRE =valor
Todos los anteriores están mal.
Lo siguiente que debes saber es que si quieres validar que estás inicializando bien tus variables, puedes usar echo NOMBRE a cada rato. Lo que hace echo es prácticamente imprimirte los valores, como un print en otros lenguajes. Otro relevante para documentar tu código conforme avances, es que para escribir un comentario, solo usas el signo #.
Los condicionales y los ciclos (Con esto me refiero a los clásicos if, case, for, while, etc), los puedes googlear conforme los necesites, ya que no son difíciles de implementar. En todo caso, más adelante te pondré un ejemplo con varios comandos mencionados.
Lo más relevante ahorita es que conozcas los parámetros especiales, porque más de uno se pierde cuando ve esto en algún programa Shell. Es muy simple:
- $0: Indica el nombre del programa shell
- $$: PID del programa shell
- $!: PID del último proceso que ahorita se encuentra en segundo plano
- $#: Indica el número de parámetros que se pasan al programa Shell, en caso utilices
- [email protected]: Todos los parámetros pasados en el shell-script, de manera separada (Lista)
- $*: Todos los parámetros como uno solo, con los espacios tal cual se hayan escrito.
- “$*”: Todos los parámetros como uno solo, con un espacio por defecto entre cada uno.
- $(): Dentro de los paréntesis se escriben funciones nativas
- ${}: Dentro de las llaves usas las variables creadas. También se puede usar de frente: $NOMBRE.
Con eso, ahora veamos un ejemplo pequeño que solidifique todo lo anterior:
De todas maneras, te lo dejo de manera escrita:
#!bin/bash
# Programa: just-code-it.sh
# Autor: guia-del-programador
# Creado: 18/01/2020
# Versión: 0.1.0
# Descripción: Prueba básica para comprender ciertos comandos
FECHA=$(date +»%Y%m%d») #creación de variable
DIR_PRINCIPAL=»/code-it/proyectos/utilitarios» #creación de variable
echo «${FECHA} – Proceso iniciado…» #echo imprime
crear_archivo() #Definiendo función
{
if [ ! -f «$1»] #-f solo es para validar si existe
then
echo «Creando el archivo $1…»
touch «$1» #touch crea el archivo
else
echo «El archivo ya existe, procediendo a reemplazar…» #echo imprime
echo «¿Desea que el archivo sea reemplazado? Conteste SI o NO»
while :
do
read RESPUESTA_USUARIO
case $RESPUESTA_USUARIO in
SI)
echo «Reemplazando archivo…»
rm r «$1»
touch «$1»
;;
NO)
echo «Reemplazo omitido.»
break
;;
*)
echo «Respuesta inválida. Procediendo a reemplazar ;)…»
rm r «$1»
touch «$1»
;;
esac
done
fi
}
ARCHIVO_GENERADO=»${DIR_PRINCIPAL}/${FECHA}.txt»
crear_archivo «${ARCHIVO_GENERADO}» #invocando función
echo «${FECHA_ACTUAL} – Proceso $0» >> $ARCHIVO_GENERADO #Agrega esa línea en el archivo creado o existente
exit 0
Como una última ayuda, considera lo siguiente (también muy utilizado):
- -f: Si es un archivo
- -w: Si es un archivo que se puede escribir
- -r: Si es un archivo que se puede leer
- -x: Si es un archivo ejecutable
- -d: Si es un directorio
- -nt: Si el archivo es más nuevo que… (En comparación con otro archivo)
- -eq: Si es igual (Numérico)
- -ne: Si no es igual (Numérico)
- -lt: Si es menor
- -gt: Si es mayor
- -le: Si es menor o igual
- -ge: Si es mayor o igual
- -z: Si la longitud de la cadena es cero.
- -n: Lo contrario de -z
Eso es todo por ahora. Con esta publicación, espero haber resumido lo más básico de un programa Shell para que puedas empezar e ir probando. Sin duda te encontrarás con varios obstáculos, y poco a poco, serás maestro del shell.
Stéphane Angeles
Propulsora y creadora de la nueva web guia-del-programador.com, genera publicaciones semanales para ayudar a actuales y futuros programadores a mejorar cada día.
Guía del programador se enfoca en todos los puntos que necesitas para poder seguir adelante: Cursos, consejos, recomendaciones, entre otros. Además, se encuentra afiliado a muchos programas de tecnología para poder brindarte descuentos, ofertas, noticias y reseñas verídicas.
Si quieres formar parte de la comunidad KeepCoding, compartiendo información relevante sobre desarrollo Web, Mobile, Big Data o Blockchain puedes escribirnos a [email protected] .