Pesquisa de site

Como escrever e usar funções e bibliotecas personalizadas do Shell


No Linux, os scripts de shell nos ajudam de muitas maneiras diferentes, incluindo executar ou até mesmo automatizar certas tarefas de administração do sistema, criar ferramentas simples de linha de comando e muito mais.

Neste guia, mostraremos aos novos usuários do Linux onde armazenar scripts de shell personalizados de maneira confiável, explicaremos como escrever funções e bibliotecas de shell personalizadas e usar funções de bibliotecas em outros scripts.

Onde armazenar scripts de shell

Para executar seus scripts sem digitar um caminho completo/absoluto, eles devem ser armazenados em um dos diretórios da variável de ambiente ` PATH.

Para verificar seu ` PATH, emita o comando abaixo:

echo $PATH

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

Normalmente, se o diretório bin existir no diretório inicial de um usuário, ele será automaticamente incluído em seu ` PATH. Você pode armazenar seus scripts de shell aqui.

Portanto, crie o diretório bin (que também pode armazenar scripts Perl, Awk ou Python ou quaisquer outros programas):

mkdir ~/bin

A seguir, crie um diretório chamado lib (abreviação de bibliotecas) onde você manterá suas próprias bibliotecas. Você também pode manter bibliotecas para outras linguagens, como C, Python e assim por diante. Abaixo dele, crie outro diretório chamado sh; isso irá armazenar particularmente suas bibliotecas de shell:

mkdir -p ~/lib/sh 

Crie suas próprias funções e bibliotecas Shell

Uma função shell é um grupo de comandos que executam uma tarefa especial em um script. Eles funcionam de forma semelhante a procedimentos, sub-rotinas e funções de outras linguagens de programação.

A sintaxe para escrever uma função é:

function_name() { list of commands }

Por exemplo, você pode escrever uma função em um script para mostrar a data da seguinte forma:

showDATE() {date;}

Toda vez que você quiser exibir data, basta invocar a função acima usando seu nome:

showDATE

Uma biblioteca shell é simplesmente um script shell, no entanto, você pode escrever uma biblioteca para armazenar apenas funções que você pode chamar posteriormente de outros scripts shell.

Abaixo está um exemplo de uma biblioteca chamada libMYFUNCS.sh em meu diretório ~/lib/sh com mais exemplos de funções:

#!/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
}

Salve o arquivo e torne o script executável.

Como invocar funções de uma biblioteca

Para usar uma função em uma lib, você precisa primeiro incluir a lib no shell script onde a função será usada, no formato abaixo:

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

Portanto, você usaria a função printUSERDETS da lib ~/lib/sh/libMYFUNCS.sh em outro script, conforme mostrado abaixo.

Você não precisa escrever outro código neste script para imprimir os detalhes de um usuário específico, basta chamar uma função existente.

Abra um novo arquivo com o nome test.sh:

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

Salve-o, torne o script executável e execute-o:

chmod 755 test.sh
./test.sh 

Neste artigo, mostramos onde armazenar scripts de shell de maneira confiável, como escrever suas próprias funções e bibliotecas de shell, invocar funções de bibliotecas em scripts de shell normais.

A seguir, explicaremos uma maneira simples de configurar o Vim como um IDE para scripts Bash. Até então, fique sempre conectado ao TecMint e também compartilhe sua opinião sobre este guia através do formulário de feedback abaixo.