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.
- Entenda as dicas básicas da linguagem de script do Linux Shell - Parte I
- 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.
- ‘echo‘ : Imprime tudo o que está escrito entre aspas.
- ‘$‘: é uma variável shell.
- ‘>>‘: 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.