Skip to content

[HOW TO] Introdução a Shell Script

Já pensou em criar scripts para automatizar seu dia a dia com as tarefas no Linux? Se não, agora é a hora de conhecer o Shell!

Requisitos:

  • Noção Básica sobre Linux e Comandos.
  • Um terminal Linux para testes.

Shell pode ser considerado, a grosso modo, um interpretador de comandos no Linux. Ele é o responsável por criar a ponte Usuário => Sistema. O Shell sobrevive de instruções do usuário, tudo que for digito nele, seguido de um Enter, será lido, verificado, processado e enviado ao kernel do sistema operacional para buscar as informações desejadas.

Apenas para esclarecimento, o Kernel é o núcleo do sistema operacional, ele é o responsável por acessar o hardware do computador, como processador, memória  e etc.
Sob um olhar mais detalhado, Shell, além de interpretar instruções, ele possui estrutura de uma linguagem de programação, aceitando assim condições e comando como IF, FOR, WHILE, funções e váriaveis.
Para iniciarmos e entendermos melhor o que faremos, abra seu terminal e use o comando whoami, a saída será assim:

[Andy@Alpha ~]$ whoami

Andy

O comando whoami pergunta ao sistema operacional com qual usuário estou logado, no meu caso, estou logado como Andy. Depois de saber com qual usuário estamos logados, vamos ver em qual diretório estamos com o comando pwd (Print Working Directory).

[Andy@Alpha ~]$ pwd

/home/Andy

 Com o pwd, podemos notar que estou no /home do meu usuário. Para finalizar, vamos executar um último comando para saber a data atual, para isso use o comando date.

[Andy@Alpha~]$ date

Mon Jul 28 23:06:55 BRT 2014

 Com estes 3 comandos que rodamos, obtemos a informação do usuário logado, em qual diretório ele está e o exato momento disto. Agora, imagine em uma situação um pouco fantasiosa, que a necessidade da sua empresa em saber estas três informações a cada 30 minutos é enorme.
Se respondermos de imediato, existe uma grande chance de falarmos que é possível acessar a máquina e executar o comando, o que não é uma mentira, porém, considerando uma carga horário normal, de segunda a sexta das 08:00 horas até as 18:00, quem irá coletar as informações no restante do período? E se você esquecer de fazer a coleta? Fica realmente complicado, por isso a automação de coisas simples, porém repetitivas pode trazer benefícios.
Utilizaremos a situação acima para a criação do nosso primeiro script em Shell, ele irá apenas buscar estas 3 informações e irá popular um arquivo que criaremos.
Primeiramente, certifique-se de não estar como root, pois isso pode gerar desconforto caso você rode algum comando de maneira errada, após a certeza de que você está com o seu usuário padrão, use o seu editor de texto preferido para criar um arquivo chamado coleta-dados.sh.

[Andy@Alpha ~]$ vi coleta-dados.sh

 Dentro do arquivo, insira a primeira linha com o que irá executar seu script, no nosso caso, será o Shell, por isso colocaremos o abaixo:
#!/bin/bash
Depois da linha acima, iremos por os comandos a serem executado. Todo os comando serão colocados com variáveis, para facilitar em scripts maiores e até mesmo na organização. Para criar uma variável, ela deve ficar na seguinte estrutura: nome_da_variavel=$(comando -a -ser -executado), como abaixo:
quem=$(whoami)
onde=$(pwd)
quando=$(date)
Salve e saia do arquivo.
Nesse momento, deveremos criar um arquivo chamado “dados”, onde será inserido as informações coletadas no nosso script, para isso use:

[Andy@Alpha ~]$ > dados

Após a criação, entre novamente no arquivo por que iremos inserir as linhas que colocam as informações dentro do arquivo, as linhas em questão são estas:
echo Usuário: $quem >> dados

echo Diretorio: $onde >> dados

echo Momento: $quando >> dados

Salve novamente, e saia do arquivo.
Agora que já temos nosso script pronto, dê permissão de execução nele:

[Andy@Alpha ~]$ chmod +x coleta-dados.sh

Feito isto, vamos executa-lo, como estamos na mesma pasta do script, basta digitar ./nome_do_script, assim:

[Andy@Alpha ~]$ ./coleta-dados.sh 

Com isso, estamos iniciando todos os 3 comandos de uma só vez. Para automatiza-lo, basta inserir a execução do script na crontab (O foco da postagem é scripts, em outro momento será abordado sobre crontab).

Para sabermos se deu certo, iremos dar um cat no arquivo de dados:

[Andy@Alpha ~]$ cat dados 

Usuário: Andy

Diretorio: /home/Andy

Momento: Mon Jul 28 23:36:48 BRT 2014[Andy@Alpha ~]$ 

Pronto, temos nosso primeiro script funcional, que tal se dermos uma melhorada? Vamos lá!
Nós vimos apenas o resultado final, porém podemos customizar nosso script da melhor maneira possível. Iremos alterar o script para que toda vez que ele execute uma ação, ele “jogue” na tela o que está fazendo, é simples, basta usar o comando echo precedento o comando, desta forma:

#!/bin/bash

echo “Checando Usuário!”

quem=$(whoami)

echo “Checando Diretorio”

onde=$(pwd)

echo “Coletando Data e hora Atual”

quando=$(date)

echo “Inserindo informacoes no arquivo de dados”

echo Usuário: $quem >> dados

echo Diretorio: $onde >> dados

echo Momento: $quando >> dados

OBS: Note que as frases que deverão ser jogadas na tela ficão entre aspas duplas, diferenciando assim o comando echo da segunda linha com o da última. Resumo, para imprimir na tela, coloque entre aspas duplas, para inserir em um arquivo, não é necessário.
Agora, executaremos novamente o script, e a saída será a seguinte:

[Andy@Alpha ~]$ ./coleta-dados.sh 

Checando Usuário!

Checando Diretorio

Coletando Data e hora Atual

Inserindo informacoes no arquivo de dados

Pronto! Fácil não? Mas, e se seu script interagisse com você? Seria magnífico!
Um script pode ou não solicitar dados ao operador, fazendo com que ele tenha que digitar alguma opção para dar continuidade no processo. Para fazer isso, iremos usar a “tag” read para ler a resposta e test para checar o que foi digitado. Agora, antes do script popular o arquivo dados, ele irá perguntar se você deseja ou não que ele seja executado, para isso, basta inserir as linhas abaixo logo depois da primeira:

echo “Será iniciada a coleta de dados do sistema!. Posso continuar? [sn] ”

read RESPOSTA

test “$RESPOSTA” = “n” && exit

Salve novamente, saia do editor e execute o script e teste as duas respostas!
Alguns pontos relevantes desta etapa:
O comando “read” leu o que o usuário digitou e guardou na variável RESPOSTA. Logo em seguida, o comando “test” verificou se o conteúdo dessa variável era “n”. Se afirmativo, o comando “exit” foi chamado e o script foi finalizado. Nessa linha há vários detalhes importantes:

O conteúdo da variável é acessado colocando-se um cifrão “$” na frente.

O comando test é útil para fazer vários tipos de verificações em textos e arquivos

O operador lógico “&&”, só executa o segundo comando caso o primeiro tenha sido OK. O operador inverso é o “||”

Fantástico né?
Um dica é sempre comentar bem seu script, deixando ele de forma sucinta e organizada, facilitando aos futuros mantenedores e até a você mesmo.

Para comentar uma linha em Shell use ‘#’ antes do comentário.

Como já citado, as possibilidades de customização são enormes, a ideia é apenas apresentar o Shell de uma maneira simples para aqueles que tiveram pouco ou nenhum contato com esta ferramenta.
Por hoje é isto, futuramente outras postagens sobre Shell Script irão aparecer, foi apenas uma introdução!
Entusiasta por Linux e telecomunicações. Extrovertido, comunicativo e fascinado por disseminar o conhecimento. Tenho como hobby escrever artigos para este blog desde 2013.
Só mais um maluco que aprendeu a codar e vive perdidamente apaixonado por Shell <3
Published inLinuxShell Script

Be First to Comment

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Feito com amor, usando WordPress
Compilando...

Opa, que tal receber as novidades?

Inscreva-se para ficar sabendo das novidades do blog em primeira mão.