Shell Script Fabiano Jacoboski1, Jackson Colombo2 Faculdades de informática de Taquara (FIT) Cep 95.600-000 – Taquara – RS – Brasil [email protected], [email protected] Resumo. Linguagens de Programação existem muitas. O Shell do Linux, além de ser a “linha de comando”, a interface do sistema com o usuário, também é um rico ambiente de programação, e é sobre isso que iremos tratar neste artigo _______________________ 1. Histórico e Evolução Desenvolvido por S.R Bourne em 1975, o Shell script, é uma linguagem sofisticada e muito leve. Se popularizou com a expanção do sistema Linux, hoje em dia muito utilizada, ele atua com interface usuário - sistema operacional A evolução do Bourne Shell foi o C Shell. Desenvolvido por Bill Joy ele apresentava como inovações o histórico de comandos (que permite usar um "apelido" para omandos complexos) e o controle de processos em foreground e background. Mas a característica principal do C Shell era a semelhança de sua sintaxe com a da linguagem C. Recentemente tivemos o desenvolvimento do Turbo C Shell, que apresenta algumas melhorias em relação ao C Shell. Na busca da implementação do das características positivas do Bourne Shell e do C Shell, surgiu o Korn Shell, desenvolvido por David Korn. O Bash (Bourne Again Shell) surgiu como uma reimplementação do Bourne Shell realizada pelo Projeto GNU (www.gnuproject.org). Apresentando melhorias em relação ao Bourne Shell, esse shell se popularizou pela expansão em sistemas GNU/Linux e portanto, é nele que iremos nos basear neste artigo. 2. Características Além de possuir as funcionalidades básicas de uma linguagem estruturada normal, o Shell se diferencia pela integração "natural" com o Sistema Operacional, tendo comandos especialistas em manipular arquivos, processos e descritores.++++++++ +++++++++++++++++++++++++++++++++++++ Mas o seu ponto forte, o divisor de águas que o torna especial é o acesso direto e gerenciamento facilitado de todos os programas do Sistema Operacional. Cada executável com suas uma ferramenta disponível para Shell._______________________________ muitas opções programar se torna em O shell é um módulo que atua como interface usuário - sistema operacional, possuindo diversos comandos internos que permitem ao usuário solicitar serviços do sistema operacional. O shell também implementa um linguagem simples de programação que permite o desenvolvimento de pequenos programas (os famosos shell scripts).________________________________________ Em muitos sistemas o interpretador de comandos é uma parte da estrutura interna do S.O.. No Unix porém, o shell é um programa como outro qualquer, além de ser uma linguagem de programação sofisticada (scripts em shell). Como dito anteriormente, existem diversos tipos de shell como o /bin/sh (Bourne Shell), /bin/ksh (Korn Shell) e o /bin/csh (C Shell) O shell do Unix suporta o conceito de scripts. Os comandos do Unix podem ser colocados em um arquivo, e executados entrando-se com o nome do arquivo no prompt do shell. Os scripts do shell do Unix são análogos aos arquivos de execução em lote do DOS (BAT). Para que um script do shell possa ser executado, não é necessário seguir nenhuma convenção especial de nomes, como acontece no DOS; em vez disso, o arquivo com o script deve receber permissões de execução. Há uma vaga convenção de nomes para os scripts do Unix._____________________________________________________ Para indicar que um comando é um script do shell do Unix, acrescenta-se a extensão.sh. Isto não é obrigatório, e o shell do Unix não trata os arquivos que usam esta convenção de nomes de forma diferente do que qualquer outro arquivo comum. É simplesmente uma convenção que torna mais fácil para o usuário reconhecer que um comando é, na realidade, um script do shell e não um executável binário. Observe, ainda, que as convençòes de nomes do Unix não impõem padrões específicos para indicar executáveis binários, como acontece no DOS.__________________________________ Programadores e usuários recém-chegados ao Unix devem compreender que o shell do Unix é tão versátil, e os recursos da programação em shell são tão poderosos, que frequentemente acontece de novas aplicações poderem ser escritas em linguagem shell, e não em C, mais difícil e mais pesada. Isto é particularmente verdadeiro para ferramentas de programação personalizada. Em muitos sistemas Unix provavelmente serão encontradas ferramentas personalizadas já disponíveis. De fato, é uma bênção e uma maldição no ambiente Unix Além de possuir as funcionalidades básicas de uma linguagem estruturada normal, o Shell se diferencia pela integração “natural” com o Sistema Operacional, tendo comandos especialistas em manipular arquivos, processos e descritores._Mas o seu ponto forte, o divisor de águas que o torna especial é o acesso direto e gerenciamento facilitado de todos os programas do Sistema Operacional. Cada executável com suas muitas opções se torna uma ferramenta disponível para programar em Shell.__________________________________ O shell é um módulo que atua como interface usuário - sistema operacional, possuindo diversos comandos internos que permitem ao usuário solicitar serviços do sistema operacional. O shell também implementa um linguagem simples de programação que permite o desenvolvimento de pequenos programas (os famosos shell scripts). Em muitos sistemas o interpretador de comandos é uma parte da estrutura interna do S.O. 3. Exemplo de programa Criação de um pequeno shell script: Vamos começar por criar um pequeno script que efectue as seguintes tarefas: - Mostrar o nome do directório orrente._______________________________________ - Listar o conteúdo do directório corrente._____________________________________ - Indicar que terminou a tarefa.____________________________________________ Estas tarefas poderiam ser executadas manualmente através da utilização dos comandos "pwd", "ls" e "echo". Para automatizar esta tarefa basta criar um arquivo com os comandos dentro. Utilizando um editor de texto pode-se criar um arquivo chamado "dl" (directory list) com o seguinte conteúdo:___________________________________________________ $ cat dl pwd ls echo "fim do script" $ Depois de feito esta primeira parte, já se tem um programa escrito em shell! Para o executar basta, a partir do shell, digitar o seguinte comando: sh dl Os comandos contidos no ficheiro "dl" são executados sequêncialmente pelo shell: o nome do directório é mostrado primeiro, seguido do resultado do comando ls, e finalmente o echo diz "fim do script.". 4. Conclusão O shell é uma ferramenta poderosa dos sistemas GNU/Linux, portanto é bastante interessante para aqueles que querem se aventurar no mundo Linux aprenderem pelo menos alguns comandos básicos dele. 5. Referencias UNIX – WORLD PAGE - Home page dedicada ao Unix. Disponível em <http://planeta.terra.com.br/esporte/biscoito/biscoito/unix.html> Acesso em 17 de Abril de 2005. VIVA O LINUX – Home Page de uma comunidade de usiários de Linux. Disponível em <http://www.vivaolinux.com.br/artigos> Acesso em 17 de Abril de 2005.