Pesquisa de site

Navegando pelo mundo dos scripts BASH do Linux - Parte III


Os artigos anteriores da série ‘Shell Scripting’ foram muito apreciados e, portanto, estou escrevendo este artigo para estender o processo interminável de aprendizagem.

  1. Entenda as dicas básicas da linguagem de script do Linux Shell - Parte I
  2. 5 scripts Shell para iniciantes em Linux aprenderem programação Shell - Parte II
Palavras-chave Bash

Uma palavra-chave é uma palavra ou símbolo que tem um significado especial para uma linguagem de computador. Os símbolos e palavras a seguir têm significados especiais para Bash quando não estão entre aspas e são a primeira palavra de um comando.

! 			esac 			select 		} 
case 			fi 			then 		[[ 
do 			for 			until 		]] 
done 			function 		while 		elif
if 			time 			else 		in 		{

Ao contrário da maioria das linguagens de computador, o Bash permite que palavras-chave sejam usadas como nomes de variáveis mesmo que isso possa dificultar a leitura dos scripts. Para manter os scripts compreensíveis, palavras-chave não devem ser usadas para nomes de variáveis.

Um comando é implementado no shell como $(command). Talvez seja necessário incluir o caminho completo do comando. por exemplo, $ (/bin/date), para execução correta.

Você pode saber o caminho de um programa específico usando o comando ‘whereis’. por exemplo, onde está a data

[root@tecmint /]# whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

Isso é o suficiente por enquanto. Não falaremos muito sobre essas teorias agora. Chegando aos scripts.

Mover diretório de trabalho atual

Mova do diretório de trabalho atual para qualquer nível acima, apenas fornecendo o valor numérico no final do script durante a execução.

#! /bin/bash 
LEVEL=$1 
for ((i = 1; i <= LEVEL; i++)) 
do 
CDIR=../$CDIR 
done 
cd $CDIR 
echo "You are in: "$PWD 
exec /bin/bash

Salve os códigos acima como “up.sh“, em sua área de trabalho. Torne-o executável (chmod 755 up.sh). Correr:

./up.sh 2 (moverá o diretório de trabalho atual para dois níveis acima).
./up.sh 4 (moverá o diretório de trabalho atual para quatro níveis acima).

Uso e área de aplicação

Em scripts maiores que contém pasta dentro de pasta dentro… contendo bibliotecas, binários, ícones, executáveis, etc. em diferentes local, você, como desenvolvedor, pode implementar este script para mover para o local desejado de uma forma muito automatizada.

Nota: For é um loop no script acima e continuará a ser executado até que os valores sejam verdadeiros para o loop.

Saída de amostra
[root@tecmint /]# chmod 755 up
[root@tecmint /]# ./up.sh 2
You are in: /

[root@tecmint /]# ./up.sh 4 
You are in: / 

[root@tecmint /]#

Baixe up.sh

Crie um arquivo ou pasta aleatória

Crie um arquivo (pasta) aleatório sem chance de duplicação.

#! /bin/bash

echo "Hello $USER";
echo "$(uptime)" >> "$(date)".txt
echo "Your File is being saved to $(pwd)"

Este é um script simples, mas seu funcionamento não é tão simples.

  1. echo‘ : Imprime tudo o que está escrito entre aspas.
  2. $‘: é uma variável shell.
  3. >>‘: A saída é redirecionada para a saída do comando date seguido pela extensão txt.

Sabemos que a saída do comando data é data e hora em hora, minuto, segundo junto com ano. Conseqüentemente, poderíamos obter a saída em um nome de arquivo organizado sem a chance de duplicação de nome de arquivo. Pode ser muito útil quando o usuário precisar do arquivo criado com carimbo de data e hora para referência futura.

Saída de amostra
[root@tecmint /]# ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

Você pode visualizar o arquivo criado na área de trabalho com a data de hoje e a hora atual.

[root@tecmint /]# nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt 
13:51:52 up  3:54,  1 user,  load average: 0.09, 0.12, 0.08

Uma implementação mais detalhada do script acima é fornecida abaixo, que funciona com base no princípio acima e é muito útil na coleta de informações de rede de um servidor Linux.

Baixe randomfile.sh

Script para coletar informações de rede

Reúne informações de rede em um servidor Linux. O script é muito grande e não é possível postar todo o código e saída do script aqui. Portanto, é melhor você baixar o script usando o link de download abaixo e testá-lo você mesmo.

Nota: Pode ser necessário instalar o pacote lsb-core e outros pacotes e dependências necessários. Apt ou Yum os pacotes necessários. Obviamente você precisa ser root para executar o script porque a maioria dos comandos usados aqui são configurados para serem executados como root.

Saída de amostra
[root@tecmint /]# ./collectnetworkinfo.sh  

The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to your_name@service_provider.com. ktop

Você pode alterar o endereço de e-mail acima em seu script para que ele seja enviado para você. O arquivo gerado automaticamente pode ser visualizado.

Baixar collectnetworkinfo.sh

Script para Converte MAIÚSCULAS em minúsculas

Um script que converte MAIÚSCULAS em minúsculas e redireciona a saída para um arquivo de texto “small.txt” que pode ser modificado conforme necessário.

#!/bin/bash 

echo -n "Enter File Name : " 
read fileName 

if [ ! -f $fileName ]; then 
  echo "Filename $fileName does not exists" 
  exit 1 
fi 

tr '[A-Z]' '[a-z]' < $fileName >> small.txt

Este script acima pode converter maiúsculas e minúsculas de um arquivo de qualquer tamanho com um único clique de maiúsculas para minúsculas e vice-versa, se necessário, com poucas modificações.

Saída de amostra
[root@tecmint /]# ./convertlowercase.sh  
Enter File Name : a.txt 

Initial File: 
A
B
C
D
E
F
G
H
I
J
K
...

Saída do novo arquivo (small.txt):

a
b
c
d
e
f
g
h
i
j
k
...

Baixar convertlowercase.sh

Programa de calculadora simples

#! /bin/bash 
clear 
sum=0 
i="y" 

echo " Enter one no." 
read n1 
echo "Enter second no." 
read n2 
while [ $i = "y" ] 
do 
echo "1.Addition" 
echo "2.Subtraction" 
echo "3.Multiplication" 
echo "4.Division" 
echo "Enter your choice" 
read ch 
case $ch in 
    1)sum=`expr $n1 + $n2` 
     echo "Sum ="$sum;; 
        2)sum=`expr $n1 - $n2` 
     echo "Sub = "$sum;; 
    3)sum=`expr $n1 \* $n2` 
     echo "Mul = "$sum;; 
    4)sum=`expr $n1 / $n2` 
     echo "Div = "$sum;; 
    *)echo "Invalid choice";; 
esac 
echo "Do u want to continue (y/n)) ?" 
read i 
if [ $i != "y" ] 
then 
    exit 
fi 
done
Saída de amostra
[root@tecmint /]# ./simplecalc.sh 

Enter one no. 
12 
Enter second no. 
14 
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
1 
Sum =26 
Do u want to continue (y/n)) ? 
y
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
3 
mul = 14812
Do u want to continue (y/n)) ? 
n

Baixar simplecalc.sh

Então você viu como é fácil criar um programa poderoso de cálculos de forma tão simples. Não é o fim. Estaremos elaborando pelo menos mais um artigo desta série, abordando uma perspectiva ampla do ponto de vista da administração.

É tudo por agora. Sendo o leitor e o melhor crítico não se esqueça de nos contar o quanto e o que gostou neste artigo e o que deseja ver no artigo futuro. Qualquer pergunta é muito bem-vinda nos comentários. Até lá, mantenha-se saudável, seguro e sintonizado. Curta e Compartilhe e nos ajude a divulgar.