Algumas Noções sobre Shell Script


Shell script é uma Linguagem de programação interpretada usada em vários sistemas operacionais, com diferentes dialetos dependendo do interpretador de comandos utilizado. Um exemplo de interpretador de comandos é o bash, usado na grande maioria das distribuições GNU/Linux.

A maior parte dos usuários classificam shell script como uma linguagem de fácil aprendizado. O primeiro passo é, saber o que se deseja fazer, então ver qual o código que executa este comando em shell e aí criar, basta escrever o código em algum editor de texto e salvar. Depois de salvo você tem que executar o arquivo, dessa forma:

./"Nome do arquivo", sem aspas

No Linux o script tem que ter permissão de execução, isto pode ser feito com o comando chmod +x “arquivo”, para exibir um manual do bash ou mesmo do comando ‘chmod’, digite na linha de comando ‘man bash’ ou ‘man chmod’ (sem aspas).

Índice

Shell

Antes de saber o que é um script em shell, é importante saber o que é um Shell.

Na linha de comandos de um shell, podemos utilizar diversos comandos um após o outro, ou mesmo combiná-los numa mesma linha. Se colocarmos diversas linhas de comandos em um arquivo de texto simples, teremos em mãos um Shell Script, ou um script em shell, já que Script é uma descrição geral de qualquer programa escrito em linguagem interpretada, ou seja, não compilada. Outros exemplos de linguagens para scripts são o php, perl, python, javascript e muitos outros. Podemos então ter um script em php, um script perl e assim em diante.

Uma vez criado, um ShellScript pode ser reutilizado quantas vezes for necessário. Seu uso, portanto, é indicado na automação de tarefas que serão realizadas mais de uma vez. Todo sistema Unix e similares são repletos de scripts em shell para a realização das mais diversas atividades administrativas e de manutenção do sistema.

Os arquivos de lote (batch – arquivos *.bat) do windows são também exemplos de ShellScripts, já que são escritos em linguagem interpretada e executados por um Shell do Windows, em geral o command.com ou hoje em dia o cmd.exe. Os Shells do Unix, porém, são inúmeras vezes mais poderosos que o interpretador de comandos do windows, podendo executar tarefas muito mais complexas e elaboradas.

Os scripts em shell podem ser agendados para execução através da tabela crontab, entre outras coisas. É uma ferramenta indispensável aos administradores de sistemas Unix.

O Shell mais comum e provavelmente o que possui mais scripts escritos para ele é também um dos mais antigos e simples, o sh. Este shell está presente em todo o sistema tipo Unix, incluindo o Linux, FreeBSD, AIX, HP-UX, OpenBSD, Solaris, NetBSD, Irix, etc. Por ser o shell nativo mais comum é natural que se prefira escrever scripts para ele, tornando o script mais facilmente portável para outro sistema.

Os Shells não estão diretamente associados a um ou outro tipo de Unix, embora várias empresas comerciais tenham suas próprias versões de Shell. No software livre o Shell utilizado em um sistema em geral é exatamente o mesmo utilizado em outro. Por exemplo, o bash encontrado no Linux é o mesmo shell bash encontrado no FreeBSD e pode também facilmente ser instalado no Solaris ou outros sistemas Unix comerciais para passar a ser utilizado como interface direta de comandos ou como interpretador de scripts. O mesmo acontece com o tcsh e vários outros shells desenvolvidos no modelo de Software Livre.

Características

Os scripts shell podem conter estruturas de programação tais como:

  • estruturas de decisão (if)
  • estruturas de repetição (for)(while)
  • funções e argumentos
  • definições de variáveis e escopo destas

Exemplos de uso

Apagar arquivos velhos

Apagar periodicamente arquivos mais velhos que 30 dias do diretório /tmp:

#!/bin/bash

cd /tmp
find . -type f -mtime +30 -delete

Este seria o conteúdo de um shell script que sempre que fosse executado apagaria arquivos com data de modificação maior que 30 dias a partir do diretório /tmp do sistema de arquivos.

Notem que ele é nada mais do que uma associação de 2 comandos (cd e find) em um arquivo para facilitar a repetição da tarefa. Este poderia ser, por exemplo, o conteúdo do arquivo /bin/limpatmp.sh e poderíamos chamar este script pela linha de comandos sempre que desejássemos repetir esta ação:

$ limpatmp.sh

Onde o símbolo “$” representa o prompt de comandos. Do ponto de vista do usuário este seria mais um comando disponível para uso.

Os scripts em shell são também muito empregados junto à inicialização do sistema (para auto-iniciar tarefas) ou como mini-aplicativos, que facilitam tarefas dos usuários, tais como montagem de dispositivos, menus de ajuda, etc.

Sua primeira linha obrigatoriamente começa com um “#!” (que não se deve confundir com um comentário qualquer, pois realmente é uma exceção), informando diretamente ao kernel qual interpretador ele deverá usar, juntamente com seu caminho, de acordo com a necessidade de cada caso.

Exemplo:

#!/bin/bash

Em seguida, são adicionados os comandos desejados, um por linha, ou separados por ponto e vírgula.

EXEMPLO:

$ mount -t reiserfs /dev/hda1 /mnt/hda1
$ ls /mnt/hda1
$ cp -r /mnt/hda1/* /home/user/backup
$ umount /dev/hda1

Por fim, dá-se a permissão de execução a este arquivo de texto simples (“chmod +x arquivo”).

Data Anterior

# Função em Shell Script para retornar a data anterior, levando em conta o mes e ano.
fn_data_anterior()
{
DIA=$D
MES=$M
ANO=$A

# Dado DIA, MES e ANO numericos, obtem a data do dia anterior
DIA=`expr $DIA - 1`
if [ $DIA -eq 0 ]; then
MES=`expr $MES - 1`
if [ $MES -eq 0 ]; then
MES=12
ANO=`expr $ANO - 1`
fi
DIA=`cal $MES $ANO`
DIA=`echo $DIA | awk '{ print $NF }'`
fi
}

ano=`date +%Y`;
mes=`date +%m`;
let dia=10\#`date +%d`;

if (( $dia<10 ));
then
j=0$dia;
else
j=$dia;
fi
dia=$j;
j="";

D=$dia
M=$mes
A=$ano

fn_data_anterior

echo $DIA $MES

2 Responses to Algumas Noções sobre Shell Script

  1. Danigalvao disse:

    Olá amigo

    Desculpe pela pergunta, pois nada tem a ver com sua publicação ou objetivo do seu blog, mas: como você faz para deixar somente um curto texto (resumo) de toda sua publicação na página “Início” do seu blog??

    É que eu gostaria de fazer o mesmo no meu blog e nunca consegui encontrar essa função.

    Agradeço se me responder. Meu blog: http://www.ideiascorporativas.wordpress.com

    • admin disse:

      Daniel,
      Muito obrigado pela visita, não esquenta a cabeça quanto ao comentário sobre a publicação.
      Bom vamos ao que interessa, no editor de post do WordPress existe uma opção que se chama “Inserir a tag Mais” que fica próximo do ícone de “Remover link“, o que você precisa fazer é digitar o “resumo” e clicar nesse ícone e pronto.
      Só que no teu caso tem um detalhe, observei o teu blog e percebi que tens muitas imagens nos posts, acho que você vai ter que adequar os posts se quiser usar esta opção.
      A aparência com as aspas é outra opção que se chama “Blockquote” e ícone dela são aspas que ficam próximo do item de lista numerada.
      Abraço e divulgue o blog com os amigos. Se quiser pode colocar a url na página de links úteis. Qualquer outra dúvida só entrar em contato.

Conte-nos o que achou...

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: