Búsqueda de sitios web

Cómo escribir y utilizar bibliotecas y funciones de Shell personalizadas


En Linux, los scripts de shell nos ayudan de muchas maneras diferentes, incluida la realización o incluso la automatización de ciertas tareas de administración del sistema, la creación de herramientas simples de línea de comandos y muchas más.

En esta guía, mostraremos a los nuevos usuarios de Linux dónde almacenar de manera confiable scripts de shell personalizados, explicaremos cómo escribir funciones y bibliotecas de shell personalizadas y cómo usar funciones de bibliotecas en otros scripts.

Dónde almacenar scripts de Shell

Para ejecutar sus scripts sin escribir una ruta completa/absoluta, deben almacenarse en uno de los directorios de la variable de entorno ` PATH.

Para verificar su ` PATH, ejecute el siguiente comando:

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Normalmente, si el directorio bin existe en el directorio de inicio de un usuario, se incluye automáticamente en su ` PATH. Puede almacenar sus scripts de shell aquí.

Por lo tanto, cree el directorio bin (que también puede almacenar scripts Perl, Awk o Python o cualquier otro programa):

mkdir ~/bin

A continuación, cree un directorio llamado lib (abreviatura de bibliotecas) donde guardará sus propias bibliotecas. También puede mantener bibliotecas para otros lenguajes como C, Python, etc. Debajo de él, cree otro directorio llamado sh; esto almacenará particularmente sus bibliotecas de shell:

mkdir -p ~/lib/sh 

Cree sus propias funciones y bibliotecas de Shell

Una función shell es un grupo de comandos que realizan una tarea especial en un script. Funcionan de manera similar a procedimientos, subrutinas y funciones en otros lenguajes de programación.

La sintaxis para escribir una función es:

function_name() { list of commands }

Por ejemplo, puedes escribir una función en un script para mostrar la fecha de la siguiente manera:

showDATE() {date;}

Cada vez que quieras mostrar la fecha, simplemente invoca la función anterior usando su nombre:

showDATE

Una biblioteca de shell es simplemente un script de shell; sin embargo, puede escribir una biblioteca para almacenar solo las funciones que luego podrá llamar desde otros scripts de shell.

A continuación se muestra un ejemplo de una biblioteca llamada libMYFUNCS.sh en mi directorio ~/lib/sh con más ejemplos de funciones:

#!/bin/bash 

#Function to clearly list directories in PATH 
showPATH() { 
        oldifs="$IFS"   #store old internal field separator
        IFS=:              #specify a new internal field separator
        for DIR in $PATH ;  do echo $DIR ;  done
        IFS="$oldifs"    #restore old internal field separator
}

#Function to show logged user
showUSERS() {
        echo -e “Below are the user logged on the system:\n”
        w
}

#Print a user’s details 
printUSERDETS() {
        oldifs="$IFS"    #store old internal field separator
        IFS=:                 #specify a new internal field separator
        read -p "Enter user name to be searched:" uname   #read username
        echo ""
       #read and store from a here string values into variables using : as  a  field delimiter
    read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep   "^$uname")"
       #print out captured values
        echo  -e "Username is            : $username\n"
        echo  -e "User's ID                 : $uid\n"
        echo  -e "User's GID              : $gid\n"
        echo  -e "User's Comments    : $comments\n"
        echo  -e "User's Home Dir     : $homedir\n"
        echo  -e "User's Shell             : $shell\n"
        IFS="$oldifs"         #store old internal field separator
}

Guarde el archivo y haga que el script sea ejecutable.

Cómo invocar funciones desde una biblioteca

Para usar una función en una lib, primero debe incluir la lib en el script de shell donde se usará la función, en el siguiente formulario:

./path/to/lib
OR
source /path/to/lib

Por lo tanto, usaría la función printUSERDETS de la biblioteca ~/lib/sh/libMYFUNCS.sh en otro script como se muestra a continuación.

No es necesario escribir otro código en este script para imprimir los detalles de un usuario en particular, simplemente llame a una función existente.

Abra un nuevo archivo con el nombre test.sh:

#!/bin/bash 

#include lib
.  ~/lib/sh/libMYFUNCS.sh

#use function from lib
printUSERDETS

#exit script
exit 0

Guárdelo, luego haga que el script sea ejecutable y ejecútelo:

chmod 755 test.sh
./test.sh 

En este artículo, le mostramos dónde almacenar de manera confiable los scripts de Shell, cómo escribir sus propias funciones y bibliotecas de Shell y cómo invocar funciones desde bibliotecas en scripts de Shell normales.

A continuación, explicaremos una forma sencilla de configurar Vim como un IDE para secuencias de comandos Bash. Hasta entonces, manténgase siempre conectado con TecMint y también comparta sus opiniones sobre esta guía a través del formulario de comentarios a continuación.