Introdução ao Shell Script - Revista Infra Magazine 12

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (3)  (0)

Este artigo tem por objetivo introduzir fundamentos de Shell Script aos administradores de sistema, possibilitando a automatização de tarefas repetitivas e até mesmo a personalização do ambiente.

Artigo do tipo Exemplos Práticos
Autores: Ivani Nascimento e Pathiene Gerstenberger
Introdução ao Shell Script
Este artigo tem por objetivo introduzir fundamentos de Shell script aos administradores de sistema, possibilitando a automatização de tarefas repetitivas e até mesmo a personalização do ambiente. O shell script não é exatamente uma linguagem de programação, mas tem a vantagem de ser mais simples, pois trabalha com uma gama de utilitários para tarefas como consulta de informações, manipulação de textos, elaboração de relatórios, envio de e-mails, e assim por diante. Em razão da diversidade de solução para um mesmo problema, e sendo a criatividade o limite para elaborar Shell script, este artigo não cobre todos os tópicos relacionados ao assunto. Serão apresentadas definições do que é necessário saber para criação de scripts, permitindo que o leitor esteja apto para criar seus próprios programas.


Em que situação o tema é útil
Através dos tempos, o homem sempre tentou resolver seus problemas com a maior rapidez e com o menor esforço possíveis. A busca pela automatização de tarefas repetitivas possibilitou a invenção de instrumentos como a roda, a alavanca, o carro e até o computador. Entretanto, as tarefas que devem ser realizadas pelo computador de forma automática têm de ser planejadas e colocadas em uma sequência de ações para serem posteriormente executadas. A vantagem no Linux é que praticamente tudo pode ser automatizado por meio de script, utilizando shells nativos no sistema operacional, onde é possível criar desde rotinas simples para backup até programas que realizam extração de dados para serem utilizados na confecção de relatórios. Seja você um administrador de sistemas, programador ou usuário final, em algum momento irá se deparar com situações em que um simples shell script será utilizado para economia de tempo ou, ainda, para automatizar alguma tarefa importante.

Todo administrador de sistema, programador ou até mesmo usuário final, um dia se depara com a necessidade de criar um Shell script simples (ou não) para economizar tempo e esforço, ou ainda automatizar uma tarefa repetitiva, que pode ser desde um alias (apelido) para um comando utilizado com frequência até uma tarefa mais complexa, como extração de dados para criação de relatórios.

Mas o que é exatamente o Shell? Todo Sistema Operacional (SO) possui um shell, que interpretará os comandos do usuário, como copiar ou remover arquivos a partir de uma interface gráfica (GUI – Graphical User Interface) utilizando o mouse, ou a partir do modo linha de comando (CLI – Command-Line Interface) em um terminal. Assim, o Shell, antes de tudo, é uma interface para comunicação entre o usuário e o sistema operacional, recebendo como input (entrada) comandos que são convertidos em instruções que o SO entenda e execute. Quando um comando é emitido, o shell passa essa solicitação para o kernel traduzir em linguagem apropriada à plataforma que está sendo utilizada. Dessa forma, o sistema tem um maior controle sobre o hardware, impedindo acessos indevidos por parte dos usuários.

Além de shells de sistema operacional baseados em texto, é possível encontrar shells para interface gráfica (como o Windows Explorer no Windows, ou o Nautilus no Linux), shells para linguagens (como Perl/Python shell), ou ainda shells para fins específicos, como o goosh, por exemplo, que funciona como um front-end para navegação web. Com ele é possível realizar pesquisa via linha de comando com o Google por meio de comandos como search, more e go. A Figura 1 apresenta um exemplo de uso do goosh.

Figura 1. Shell goosh: exemplo de pesquisa Google via linha de comando.

O Unix popularizou a separação do shell (parte do sistema que permite que os comandos sejam digitados e interpretados) de todo o resto: o sistema de entrada/saída, gerenciamento de memória/CPU, entre outras tarefas que o SO executa para que o usuário não tenha que se preocupar. Mas esse conceito foi o início de uma revolução, na qual o shell era mais um programa que rodava no Unix e contava com pelo menos dois tipos: o Bourne Shell (sh), descendente do Thompson Shell (original do Unix, que possuía estruturas básicas de controle e era minimalista a ponto de as declarações if e goto serem implementadas como comandos externos) e o C Shell (csh) desenvolvido por Billy Joe da Universidade de Berkeley, que tinha por objetivo criar uma linguagem de script que fosse semelhante à linguagem C. Ao longo dos anos, outras alternativas surgiram, como o Korn Shell e o Bourne Again Shell, que será utilizado neste artigo.

Quando se fala em Shell, geralmente imagina-se apenas um terminal complexo que aceita comandos, porém o shell faz mais que isso: é possível ter um histórico dos comandos digitados que podem ser editados e reutilizados, personalizar o ambiente definindo comandos próprios (criação de alias), criar atalhos, etc. E, como se não fosse o bastante, o shell também é programável, possibilitando que sequências de comandos digitados repetidamente possam ser colocadas em um arquivo e transformadas em um programa, comumente chamado de script. Compactar arquivos de log do sistema para backup, renomear uma lista de arquivos, localizar arquivos criados há mais de 30 dias no disco e remover, são exemplos de tarefas rotineiras que podem ser automatizadas por meio de um script.

Com base neste cenário, o objetivo deste artigo é proporcionar ao usuário que já possui certo domínio na utilização do Linux, uma visão sobre o ambiente shell e a familiarização com as características básicas (estrutura, variáveis, parâmetros) para a criação de scripts utilizando o shell Bash.

Definição inicial de Shell

De uma forma geral, shell é o nome comum para um conjunto de programas que tem o propósito de fornecer uma interface interativa com o usuário, desempenhando entre outras, as seguintes funções:

· Ler a linha de comando do usuário;

· Separar o comando e parâmetros passados;

· Executar o comando (interno ou não);

· Esperar que o processo seja finalizado;

· Retornar o controle para o usuário.

Tipos de shell

O shell, como já informado, é o programa que permite a interação do usuário com o sistema. No início, o sh era o shell padrão utilizado para criação de scripts e interpretação de comandos, porém, atualmente existem diversos tipos de shell, cada um com seus próprios recursos, capacidades e limitações, sendo que em quase todas as distribuições do Linux, o bash é o shell padrão. A seguir são apresentadas as descrições dos principais tipos de shells.

sh

Bourne shell, ou simplesmente sh, foi o shell padrão do Unix Versão 7, que substituiu o Thompson shell, cujo arquivo executável tinha o mesmo nome, sh. Desenvolvido por Stephen Bourne, dos laboratórios AT&T, foi lançado em 1977 junto com o Unix Versão 7 distribuído para as universidades. Shell com maior portabilidade para criação de scripts, introduziu uma sintaxe compacta para canalização e redirecionamento (|, <> e >>), suporte para comandos sequenciais (utilizando o ';') e recursos como histórico e edição de comandos, alias, entre outros.

csh/tcsh

O C shell (csh) foi desenvolvido para sistemas UNIX Berkeley Software Distribution (BSD) por Bill Joe, com o objetivo de criar uma linguagem de script que fosse semelhante à linguagem C. Um recurso útil introduzido por Bill Joe no csh foi o histórico de comandos, que permitia que o usuário revisasse e selecionasse facilmente comandos anteriores para serem executados. Após cinco anos, Ken Greer, da Universidade Carnegie Mellon, criou o tcsh, compatível com scripts C Shell e com recursos como auto completar melhorado em relação ao csh, correção ortográfica e edição de linha de comando.

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?