Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

PROGRAMAÇÃO 
EM AMBIENTES DE 
REDES DE 
COMPUTADORES
Fernanda Rosa da Silva
Introdução ao Shell 
Script Linux
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever os principais usos da programação Shell Script.
 � Discutir as maneiras de realizar a customização e a execução em 
ambientes de programação.
 � Explicar as principais características da linguagem Shell Script.
Introdução
Administradores de sistema ou até mesmo usuários comuns algum dia 
precisaram criar um script simples ou abrangendo funcionalidades mais 
complexas. Isso pode ser feito com o uso da linguagem Shell Script, que, 
como vantagem, consegue garantir a necessidade de menor tempo e 
esforço em determinadas tarefas.
Neste capítulo, você acompanhará as principais utilidades de aplicação 
para o Shell Script, entendendo como se pode customizar um script em 
Shell no Linux e executá-lo no ambiente Linux, conhecendo também os 
atributos que o caracterizam. 
1 Conceito e principais utilidades do Shell Script
Desde o seu surgimento, o sistema operacional Unix foi evoluindo e adicio-
nando diversas ferramentas à sua interface, inicialmente nos mainframes, 
depois em estações de trabalho e, em seguida, largamente utilizado em ambien-
tes corporativos, para fins domésticos e até mesmo acadêmicos, constituindo 
base para atividades simples e tarefas complexas com frequência executadas 
pelo administrador do sistema.
No entanto, existem por trás das tarefas realizadas no sistema operacional, 
o que levou ao surgimento, conforme Newham (2005), do Shell, que faz parte 
da camada superior dos sistemas operacionais, incluindo os do tipo Unix, 
como o Linux. Antes abordarmos sobre o Shell Script, é necessário saber que 
o Shell é um interpretador nativo dos sistemas operacionais Linux, podendo 
ser definido como qualquer interface do usuário para sistema UNIX capaz de 
receber informações de um usuário e convertê-las em instruções passíveis de 
ser entendidas pelo sistema, transmitindo a saída novamente para o usuário, 
apresentando o resultado para sua solicitação (NEWHAM, 2005).
Por sua vez, o Shell Script se resume a uma linguagem de programa-
ção escrita em arquivos-texto que contêm um ou mais comandos de Shell 
(comandos do Linux) em forma de instruções, utilizadas para simplificar 
tarefas repetitivas, automatizar processos (p. ex., instalação de programas) e 
realizar processos vitais para a organização (p. ex., backup de dados). Ainda, 
é bastante utilizado para desenvolver diversas aplicações, das mais simples 
até as de maior complexidade.
Para entender mais sobre o assunto, você precisa saber que o Shell em-
pregado para rodar os scripts no Linux pode ser definido como um prompt 
de linha de comando e identificado no sistema Linux já na primeira tela, 
introduzindo seu acesso à interface, quando solicita que o usuário e senha 
sejam informados para efetivar o login, conforme a Figura 1.
Figura 1. Shell — linha de comando Linux.
Introdução ao Shell Script Linux2
 Na Figura 2, podemos observar a localização do Shell em relação ao sistema 
operacional, representado na camada mais alta de interação com o usuário.
Figura 2. Shell — camadas do sistema.
Fonte: Adaptada de Newham (2005).
Unix
Sistema
operacional
Shell
Saída
Usuário
Entrada
Exemplos de uso
A seguir, apresentaremos alguns exemplos de uso do Shell Script.
Automatização de backups
O exemplo mais comum de uso do Shell Script consiste na automatização de 
backups, possibilitando a análise dos dados no período estabelecido e a reali-
zação do backup de forma incremental, verificando somente as informações 
que ainda não foram salvas pelo backup anterior e salvando as alterações, 
levando menos tempo do que um backup completo e sem a necessidade da 
interação do usuário no processo, além de não comprometer muito espaço em 
disco (MULINARI, 2005).
3Introdução ao Shell Script Linux
Suponha que um administrador de sistema precise automatizar o backup de diretórios 
específicos do seu servidor de arquivos, fazendo com que essa tarefa rode no menor 
tempo possível utilizando Shell Script. Para isso, ele cria o seguinte script:
 � #!/bin/bash -> indica que o executável será interpretado pelo Bash (interpre-
tador padrão de comando)
 � #tar cf nomedobackup.tar –g /caminho/do/arquivo/con-
trole.txt /dir1 /dir2
Nessa linha: 
 � -c: cria o arquivo;
 � -f: identifica o próximo parâmetro como o nome a aplicar ao arquivo;
 � -g: informa que o backup é incremental.
Manipulação de arquivos
Um script também pode ser utilizado para localizar arquivos no sistema, 
facilitando a busca em casos nos quais a estrutura do sistema é muito extensa 
e é necessário executar essa tarefa com frequência. 
Contudo, conforme Arruda (2014), o Shell Script não é apenas definido 
por uma sequência de comandos, podendo utilizar características comuns às 
linguagens de scripts, como condições e variáveis, além de ser possível usá-lo 
para redimensionar um lote de fotografias, compactar arquivos de log e limpar 
erros de um arquivo de texto sem a necessidade de refazê-lo, indicando no 
script que o arquivo seja todo substituído por outro em branco.
Como o Shell Script utiliza o sistema de arquivos do Unix, pode ser utilizado 
para manipular arquivos, organizar arquivos em pastas e fazer uso direto da 
hierarquia de diretórios e arquivos gerando qualquer informação do sistema 
que se possa imaginar. 
Renomear arquivos e diretórios e criar e excluir arquivos em lote, tarefas 
rotineiras que não exigem muito esforço, também se tornam mais fáceis com 
o uso de Shell Script, visto que o administrador pode listar todos os arquivos 
que precisam sofrer essas alterações, adicionando as informações a um script 
e rodando-o no sistema, sem precisar renomear cada arquivo manualmente, 
o que acarretaria muito tempo perdido. 
Introdução ao Shell Script Linux4
Tarefas administrativas
Todas as tarefas que incluam funções do sistema, como gerenciamento de 
pacotes, criação de usuários e atribuição de permissões, podem ser realizadas 
com o uso de Shell Script no Linux.
A seguir, você pode observar outros cenários de uso, que, apesar de mais 
completos, são totalmente possíveis com o uso de Shell Script personalizados.
Scripts de deploy
Ponte (2016) define deploy como o processo de disponibilizar uma aplicação 
para uso, como a exportação de um arquivo, realizando, por exemplo, upload. 
Ainda, esses processos de desenvolvimento, quando realizados manualmente, 
ficam demorados e podem ser facilitados com o uso de Shell Script, que permite 
validar, compilar, automatizar testes e empacotar aplicações, disponibilizando-
-as para aplicação ao ambiente.
Provisionamento de máquinas
Também é possível provisionar máquinas virtuais com a criação de códigos em 
Shell Script, personalizando um código que localize a imagem ISO necessária 
no sistema, integrada ao hospedeiro para realizar a preparação do ambiente 
antes mesmo da instalação.
2 Execução e customização do Shell Script
Um script é um algoritmo que recebe instruções para realizar determinadas 
tarefas fazendo uso de comandos específicos de modo executável no sistema 
operacional (LOUSADA, 2015).
Ao utilizar o Shell Script, é possível personalizar o ambiente, visto que, 
à medida que o empregamos, percebemos adaptações capazes de atender 
melhor às expectativas do administrador do sistema, além de a execução dos 
comandos e a criação de scripts permitirem selecionar o tipo de execução 
ideal para o seu ambiente, em modo interativo ou automatizado.
5Introdução ao Shell Script Linux
Modo interativo 
Trata-se daquele no qual o usuário de fato interage com a tarefa em questão, 
como no caso do script em que informações necessárias são digitadas pelo 
usuário e recebidas pelo Shell para a finalidade a que se aplica (NASCIMENTO; 
GERSTENBERGER, 2013). 
A Figura 3 demonstra um exemplo simples de Shell Script em modo inte-
rativo, que solicita o nome do usuário e o imprimena tela.
Figura 3. Exemplo de Shell interativo.
De maneira mais realista, descrevendo funções em um ambiente corpora-
tivo, por exemplo, quando se deseja realizar uma operação simples, uma única 
vez, o modo interativo pode ser útil, visto que o script permite que a qualquer 
momento os comandos necessários sejam executados, como ls (para listar 
arquivos e diretórios) ou cat (para criar novos arquivos).
Outro exemplo clássico de Shell Script interativo é o bc (TERMINAL-
ROOT, 2014), definido como uma linguagem de código que lembra uma 
calculadora e que recebe dados do usuário em interfaces simples. Na Figura 4, 
observamos que, após ingressar com o comando no terminal, é possível realizar 
operações matemáticas e receber o resultado impresso — na expressão decla-
rada, realiza-se uma operação de multiplicação.
Figura 4. Shell interativo — bc.
Introdução ao Shell Script Linux6
Contudo, segundo Newham (2005), o uso do Shell de forma interativa 
pode se tornar cansativo e repetitivo, por exigir atenção do administrador e 
digitação de texto, sendo o mais prático fixar esses comandos em um arquivo, 
padronizando-os de acordo com a demanda em um arquivo que permita sua 
repetição e aproveitamento apenas com a alteração de alguns parâmetros, 
quando da necessidade de ajustes.
Modo automatizado
Já o uso do Shell Script de maneira automatizada deve ser considerado quando 
nenhum tipo de dado precise ser digitado, geralmente em procedimentos 
complexos que usam muitas linhas de comando, na maioria das vezes com 
um horário de execução definido, planejados previamente ou interagindo, por 
exemplo, com o sistema operacional para sua execução (NASCIMENTO; 
GERSTENBERGER, 2013).
Alias
Em relação à customização, o Shell Script possibilita a criação de alias para 
personalizar o ambiente e facilitar o uso dos comandos quando do emprego 
de scripts. De acordo com Newham (2005), aliases são apelidos que o admi-
nistrador pode atribuir a um comando existente, a fim de nomear as funções 
de modo mais fácil, utilizados dentro dos scripts quando de sua criação. 
Considere que, frequentemente, o administrador precisa verificar as atualizações 
disponíveis para programas utilizados no servidor, instalando novos ou removendo 
os antigos. Para isso, ele deve digitar todos os comandos completos toda vez em que 
essa rotina é executada; portanto, pode usar o alias para renomear os comandos, 
de modo a poder memorizá-los mais facilmente e executar sem a necessidade de 
confirmar se estão ou não corretos. Observe: 
 � alias atualizar ='sudo apt-get update && sudo apt-get 
upgrade'
 � alias instalar_pacote='sudo apt-get install'
 � alias remover_pacote='sudo apt-get remove'
7Introdução ao Shell Script Linux
Assim, quando for preciso atualizar o repositório e todos os programas instalados no 
sistema, a chamada será apenas atualizar, conforme mostra a Figura 5.
Figura 5. Customização com alias no Linux.
Variáveis
Assim como ocorre com o uso de alias para personalização do ambiente, 
o emprego de variáveis, bastante comum em scripts de Shell, permite associar 
um valor a elas. Uma particularidade quanto ao uso da programação de scripts 
em Shell em relação às demais reside no fato de que não é necessário declarar 
o tipo de variável permitido, como: string, inteiro, decimal, etc.
Arquivos especiais
Existem três arquivos no diretório pessoal de cada usuário com funções 
especiais e que fornecem opções para configurar o ambiente de modo inde-
pendente para cada uma das contas utilizando a linguagem Shell Script, a fim 
de estabelecer parâmetros capazes de personalizar a execução de um script 
dentro do Shell do Linux (NEWHAM, 2005), conforme descrito a seguir.
.bash_profile
Trata-se do arquivo mais importante, pois é executado pelo Bash, toda vez em 
que o usuário faz login no sistema operacional. Para acessá-lo, basta executar 
nano .bash_profile ou apenas nano .profile.
Introdução ao Shell Script Linux8
Esse arquivo armazena todos os comandos que você precisa que sejam 
executados logo na inicialização, compreendendo um script programado para 
rodar a cada login do usuário realizando uma tarefa específica, por exemplo, 
executar um serviço sempre que o usuário acessar sua conta, abrir uma planilha 
automaticamente, mapear uma unidade, etc.
.bash_logout
Arquivo lido e executado toda vez que o usuário finaliza sua seção, pode ser 
utilizado para complementar a personalização do ambiente (NEWHAM, 
2005). Com ele, podemos definir ações como remover arquivos temporários 
quando da finalização das tarefas ou registrar o tempo total em que a conta 
esteve ativa durante o uso ou qualquer outra informação relevante sobre a sua 
conta em relação ao que foi executado durante a sessão.
bashrc
Por esse arquivo, que é oculto e localizável pelo usuário no seu diretório 
/home/usuário/.bashrc, podemos realizar algumas alterações e per-
sonalizar o uso do terminal, fazendo alterações que customizam o Bash (ter-
minal), como configurar ou ativar cores diferentes para a janela do terminal, 
personalizar propriedades do histórico do Shell, configurar alias de comando, 
entre outras funções mais bem entendidas quando de sua análise.
Um exemplo de uso do arquivo bashrc se dá quando o administrador do sistema 
cria um alias, que, por padrão, somente é salvo no processo/shell atual até que seja 
fechado. Porém, isso pode ser contornado fixando-se uma linha para o comando que 
se deseja alterar:
alias ls="ls --color"
Nesse caso, ao utilizar o comando ls, que, por sinal, já é curto, o comando chamado 
será ls –color, que lista, porém, colorindo os caracteres.
9Introdução ao Shell Script Linux
Colorir fonte no Shell Script
Podemos colorir o código em Shell Script e alterar o fundo do terminal para 
rodar seu código ou alterar parte do código somente, modificando, também, 
a formatação dos caracteres. No Quadro 1, podemos observar, brevemente, 
algumas alterações possíveis e códigos correspondentes.
Código Alteração
1 Negrito
4 Sublinhado
31 Fonte vermelha
34 Fonte azul
43 Fundo amarelo
44 Fundo azul
Quadro 1. Exemplos de valores para uso de cores em Shell Script
Considere o exemplo de um código de somente uma linha, lembrando que essa 
alteração pode ser realizada dentro de um código mais extenso, em partes específicas, 
que você queira destacar.
Para alterar a linha para a cor vermelha, o seguinte código pode ser utilizado: 
$ echo -e "\033[31;1mColorindo_o_codigo"
Nesse caso, a expressão colorindo_o_codigo aparecerá na tela na cor vermelha 
e com a fonte em negrito quando da execução do código. 
Introdução ao Shell Script Linux10
Parâmetros de entrada
O Shell Script consegue receber valores por meio de variáveis-padrão, definidas 
pelo sistema para facilitar a criação do código, como:
 � $0: recebe o nome do script;
 � $n: n-ésimo argumento da linha de comando (definido por numeral);
 � $*, $@: todos os argumentos da linha de comando;
 � $#: número de argumentos;
 � $?: status do último comando executado (status <> 0 indica erro);
 � $$: número de processo (PID) do Shell que executa o script.
Para facilitar o seu entendimento, considere o exemplo de script criado no 
Shell por Maziero (2019) e exibido na Figura 6 com seu respectivo resultado.
Figura 6. Uso de parâmetros de entrada no Shell Script — Linux.
11Introdução ao Shell Script Linux
3 Características da linguagem Shell Script
Uma das principais características da linguagem Shell Script reside na pos-
sibilidade de personalizar o ambiente utilizando variáveis, especificando-se 
desde uma string até a frequência com que o Shell verifica se existem novas 
mensagens. Além disso, por se tratar de uma linguagem interpretada, não é 
necessário o uso de um compilador para executá-lo, e sim de um programa 
como o Bash ou sh, capazes de interpretar os comandos dentro script para que 
esteja em uma linguagem entendida por um computador (NEWHAM, 2005).
Sabemos que o Shell é uma linguagem de programação completa, sendo 
assim considerada,conforme Newham (2005), uma linguagem de quarta 
geração (4GL), por ser de protótipo rápido, aplicada com o uso de conceitos-
-chaves como modularidade, reutilização e desenvolvimento e construída 
com o uso de elementos que incluem variáveis, construções condicionais e 
possibilidade de interação, além de poder utilizar todos esses recursos para 
ser adaptada de acordo com a necessidade de cada ambiente.
O Shell estabelece a comunicação entre os comandos por meio de uma 
interface simples, denominada pipeline (|), e pode ser utilizado simultaneamente 
com qualquer outro processo do sistema operacional sem que haja interferência 
em sua função. Pipeline corresponde a um processo que possibilita a execução 
simultânea de dois ou mais programas de forma coordenada, seguindo uma 
ordem estabelecida, de modo que seu resultado (saída) seja redirecionado, 
servindo como entrada para o próximo processo. Um exemplo simples dessa 
operação, de acordo com DeLyra (2002), pode ser acompanhado a seguir.
Sabendo que o comando ls -l /etc é utilizado para listar conteúdo do diretório/
etc., considere a utilização do comando ls -l /etc | more. Com isso, além 
de o conteúdo ser listado, o comando more (paginador) é combinado de maneira 
a poder utilizar a barra de espaço do teclado ou o mouse para passar de página em 
página, percorrendo a lista completa. 
Introdução ao Shell Script Linux12
Ao rodar seus scripts em Shell no sistema Linux, podem ser necessários 
diversos testes, rodando o mesmo script para atestar que as alterações ne-
cessárias estejam rodando corretamente; assim, você pode utilizar a função 
histórico, que permite que os últimos comandos utilizados sejam armazenados 
no cache para nova utilização sem que a necessidade de redigitar toda a sintaxe 
do comando. 
Este histórico é acessado pelo uso da seta para cima até encontrar o co-
mando necessário para que consiga ser executado novamente, auxiliando na 
verificação e na execução de comandos, mesmo quando se necessita fazer 
uma pequena variação em sua sintaxe (GLAUCO, 2011).
Ainda, o Shell Script permite controlar recursos do sistema, os chamados 
job controls (Figura 7). Segundo Reis (2013), um job é representado por uma 
única linha, que pode incluir um único comando em Shell Script ou vários 
conectados pelo pipe (|). Então, os jobs ativos podem ser verificados em 
detalhes com esse uso particular do Shell Script.
Figura 7. Exemplo de job control como Shell Script.
Linhas comentadas caracterizam o uso de Shell Script, mantendo a estrutura 
do código organizada, explicando cada linha que faz parte da sua formação, 
compreendendo um recurso importante para facilitar o entendimento do código 
(NASCIMENTO; GERSTENBERGER, 2013). A Figura 8 demonstra como 
os comentários devem ser inseridos.
Figura 8. Exemplo de uso de comentários.
Fonte: Lousada (2015, documento on-line).
13Introdução ao Shell Script Linux
Os comentários não são apresentados como saída no script, podendo ser visualizados 
apenas internamente.
Além de todas as tarefas simples citadas, o Shell Script no Linux possibilita 
uma integração natural da linguagem com as funções do sistema. De acordo 
com Jargas (2008), utilizando Shell Script no Linux, é possível utilizar fer-
ramentas do sistema no próprio código para realizar tarefas mais complexas, 
como grep, sed e find, empregados para buscar informações no sistema, 
manipulando arquivos, e todos com interface amigável utilizada pela linha de 
comando, o que facilita a interação entre o usuário e o sistema.
Todavia, o Shell Script também oferece opções mais complexas, como 
viabilidade de redirecionamento, permitindo a combinação de diversos pro-
gramas entre si, o que evita a reescrita de código e torna as funcionalidades 
do código ainda mais poderosas (JARGAS, 2008). Por essa combinação de 
soluções, o Shell Script é chamado de Lego, visto permitir que várias “peças” 
sejam harmonizadas a fim de alcançar determinado objetivo. 
Por fim, outra característica que podemos citar quando falamos de Shell 
Script é a facilidade de voltar ao código, corrigir erros e modificar comandos 
digitados anteriormente utilizando o mecanismo de histórico disponível.
Em resumo, o Shell Script atualmente tem um grande valor, sendo con-
siderado uma ferramenta valiosa para os programadores, visto promover a 
automatização de tarefas de modo eficaz, além de possibilitar agilidade nas 
entregas e adicionar confiabilidade aos processos antes somente possíveis de 
maneira manual e hoje automatizados de forma prática e segura.
Introdução ao Shell Script Linux14
ARRUDA, F. Introdução ao Shell Script. Canaltech, São Bernardo do Campo, 2 jun. 2014. 
Disponível em: https://canaltech.com.br/linux/Introducao-ao-Shell-Script/. Acesso 
em: 19 jul. 2020.
DELYRA, J. L. Pipeline. Instituto de Física da Universidade de São Paulo, São Paulo, 
25 abr. 2002. Disponível em: http://latt.if.usp.br/fma215/apostilas/aula-06/node4.
html. Acesso em: 19 jul. 2020.
GLAUCO, T. Linux Shell Essentials. DevMedia, Rio de Janeiro, 2011. Disponível em: https://
www.devmedia.com.br/linux-shell-essentials/20158. Acesso em: 19 jul. 2020.
JARGAS, A. M. Shell script professional. São Paulo: Novatec, 2008. 480 p.
LOUSADA, F. B. Introdução ao Shell Script no Linux. DevMedia, Rio de Janeiro, 2015. Dis-
ponível em: https://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778. 
Acesso em: 19 jul. 2020.
MAZIERO, C. A. Departamento de Informática da Universidade Federal do Paraná, Curitiba, 
5 ago. 2019. UNIX: Shell scripts. Disponível em: http://wiki.inf.ufpr.br/maziero/doku.
php?id=unix:shell_scripts. Acesso em: 19 jul. 2020.
MULINARI, J. A. Shell de backup incremental. Dicas-L, Jaguariúna, 23 jul. 2005. Dispo-
nível em: https://www.dicas-l.com.br/arquivo/script_shell_de_backup_incremental.
php. Acesso em: 19 jul. 2020.
NASCIMENTO, I.; GERSTENBERGER, P. Introdução ao Shell Script. Infra Magazine, Rio de 
Janeiro, n. 12, 2013. Disponível em: https://www.devmedia.com.br/introducao-ao-
-shell-script-revista-infra-magazine-12/28607. Acesso em: 19 jul. 2020.
NEWHAM, C. Learning the bash shell: Unix shell programming. 3. ed. Sebastopol: O’Reilly, 
2005. 352 p.
OLIVEIRA, M. Dicas úteis para Shell Script. Terminal Root, Londrina, 19 dez. 2014. Dis-
ponível em: https://terminalroot.com.br/2014/12/dicas-uteis-para-shell-script.html. 
Acesso em: 19 jul. 2020.
PONTE, R. Deploy automatizado: feito é melhor que perfeito. TriadWorks – Ensino e 
Formação Java, Fortaleza, 5 out. 2016. Disponível em: http://blog.triadworks.com.br/
deploy-automatizado-feito-e-melhor-que-perfeito. Acesso em: 19 jul. 2020.
REIS, F. Controle de tarefas no shell – comandos bg, fg, jobs. Bóson Treinamentos em 
Tecnologia, São Paulo, 20 jun. 2013. Disponível em http://www.bosontreinamentos.com.
br/linux/controle-de-tarefas-no-shell-comandos-bg-fg-jobs/. Acesso em: 19 jul. 2020.
15Introdução ao Shell Script Linux
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
Leituras recomendadas
GIMSON, M. Linux command line: fast and easy! [S. l.]: Edição do autor, 2015.
ROCHA, J. Variáveis em bash. Viva o Linux, Nova Friburgo, 3 dez. 2018. Disponível em: 
https://www.vivaolinux.com.br/dica/Variaveis-em-bash. Acesso em: 19 jul. 2020.
SILVA, I. S.; SOUZA, J. M.; SANTOS, M. C. Linguagem de Programação – Shell Script. 
Faculdade de Informática de Taquara, Taquara, [200-?], Disponível em: https://fit.faccat.
br/~igor/artigos/Shell.htm#. Acesso em: 19 jul. 2020.
Introdução ao Shell Script Linux16

Mais conteúdos dessa disciplina