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.