Você está na página 1de 10

SHELL SCRIPT

Nice Pereira, Tuani Zanatta.


Faculdade de Informática de Taquara – Curso de Sistemas de Informação
Fundação Educacional Encosta Inferior do Nordeste
Av. Oscar Martins Rangel, 4500 – Taquara – RS – Brasil

nice.pereira@faccat.br, tuani@faccat.br

Resumo. Este artigo refere-se a histórico, características, paradigma e


implementações da Linguagem Shell Script. Shell script é uma linguagem de
programação de scripts do Linux. O shell script não é exatamente uma linguagem
de programação, mas tem a vantagem de ser bem mais simples, o que permite
desenvolver pequenos programas muito rapidamente, em questão de minutos.

Abstract. This article mentions it, characteristic, paradigm and implementations of


the Language Shell Script historical. Shell script is a programming language of
scripts of the Linux. Shell script is not accurately one programming language, but it
has the advantage of being well simpler, what it allows to develop small programs
very quickly, in question of minutes.

1. Introdução:
Shell scripts são um meio de executar várias tarefas em apenas um comando, muitas vezes
com o objetivo de facilitar o trabalho de quem os usa. A facilidade na criação destes scripts
é um ponto forte que faz com que muitas pessoas optem por este tipo de linguagem sempre
que possível, pois estes possuem algumas limitações. O básico do shell script começa com
#!/bin/bash dentro de um arquivo que pode ter a extensão que desejar, desde que no início
do arquivo contenha o caminho para o interpretador.

2. Histórico
O primeiro Shell, Shell sh, foi desenvolvido pelo Bell Labs (Laboratórios Bell) e é mais
difundido na comunidade UNIX. O Shell C (csh) desenvolvido pela universidade de
Berkeley foi mais difundido devido ao uso pelos programadores.
3. Paradigma
Interpretado.
Shell Script é um arquivo de texto ou script que é interpretado pela shell especificada para
realizar ações envolvendo o sistema. Shell scripts são muito utilizados para automatizarem
ações repetitivas ou corriqueiras envolvendo programas e arquivos do sistema.

4. Características

4.1. SHELL
O Shell nada mais é, que o responsável entre a comunicação do usuário com o Kernel do
sistema. Para isso, basta que o usuário conheça os comando e sintaxes apropriadas há este
Shell.O Shell é o "prompt" da linha de comando do Linux, é o servo que recebe os
comandos digitados pelo usuário e os executa.O Shell é aquele que aparece logo após se
digitar a senha do usuário e entrar na tela preta do Linux. Ou na interface gráfica, ao clicar
no ícone do Xterm ou do rxvt.
localhost login: root
Password:
Last login: Fri Apr 16 01:57:28 on tty5
[root@localhost root]# _

Ai está o Shell, essa é a sua função: esperar e executar. Cada comando digitado é lido,
checado, interpretado e enviado ao Sistema Operacional para ser de fato executado.

4.2. SHELL SCRIPT


Um script é um arquivo que guarda vários comandos e pode ser executado sempre que
preciso. Os comandos de um script são exatamente os mesmos que se digita no prompt, é
tudo Shell.
Se de tempos em tempos quisermos saber informações do sistema como horária, ocupação
do disco e os usuários que estão logados, é preciso digitar três comandos:

[root@localhost root]# date


[root@localhost root]# df
[root@localhost root]# w

Fazer um script e dar um nome, por exemplo "sistema" e colocar estes comandos nele. O
conteúdo do arquivo "sistema" seria o seguinte:
#!/bin/bash
date
df
w
E para chamar este script, basta agora executar apenas um comando:

[root@localhost root]# sistema

Isso é um Shell Script. Um arquivo de texto que contém comandos do sistema e pode ser
executado pelo usuário.

Existem 3 principais Shells utilizados no Linux.


BASH (Bourne Again Shell) é uma versão avançada da versão Bourne Shell, possuindo
ainda as principais funcionalidades existentes nos Shells Korn e C.
TCSH Shell é uma versão derivada do C Shell que foi desenvolvida originalmente das
versões BSD do UNIX. O TCSH tenta assemelhar-se mais a uma linguagem de
programação.
Z Shell é uma versão derivada do Korn Shell do UNIX, permite a criação de complexas
estruturas nos scripts.

4.3. CÓDIGO DE CORES (ANSI)


Cor Letra Fundo __ Atributo Valor __ Exemplos: ESC [ <N>;<N> m
Preto 30 40 reset 0 ESC[m texto normal (desliga cores)
vermelho 31 41 negrito 1 ESC[1m negrito
verde 32 42 sublinhado 4 ESC[33;1m amarelo
amarelo 33 43 piscando 5 ESC[44;37m fundo azul, letra
cinza
azul 34 44 reverso 7 ESC[31;5m vermelho piscando
rosa 35 45 Na linha de comando:
echo -e '\e[33;1m amarelo
ciano 36 46 \e[m'
echo -e '\033[33;1m
branco 37 47 amarelo \033[m'

5. EXEMPLOS

5.1. Exemplo 1
A seguir um exemplo de shell script bem simples:

1 #!/bin/sh
2 # Shell script para adicionar uma linha com conteúdo definido
3 # pelo usuário a um arquivo
4 echo -e "Inserir:" '\c'
5 read inserir
6 echo $inserir >> $1
A seguir a explicação de cada linha:
1) Essa linha especifica ao shell qual interpretador deve ser usado para a execução do
programa, como este é um shell script o interpretador usado é o sh, contido no diretório
"/bin".
2-3) Apenas comentários(para comentar linhas preceda-as por "#")
4) O comando "echo" é utilizado para exibir um prompt ao usuário para que ele digite o que
dejesa inserir no arquivo.
5) Define que aquilo que o usuário digitou no prompt será chamado pela string $inserir;
6) Finalmente, utiliza o comando "echo" para enviar o que o usuário digitou para a última
linha do arquivo que foi especificado no primeiro argumento do comando("$1").
* Por que foram utilizados os argumentos "-e" e "'\c'" no comando "echo"?
R: O argumento "-e" habilita a interpretação de argumentos como o "'\c'" que por sua vez é
utilizado para que se crie um prompt na posição em que ele estiver.
*Pra que serve esse ">>"?
R: Serve para aquilo que seria exibido na saída default seja inserido em um determinado
arquivo sem destruir o conteúdo do mesmo. Caso fosse um ">" solitário o conteúdo do
arquivo seria destruído e ele passaria a ter apenas o que foi fornecido por nós. Esse tipo de
função chama-se "append".

5.2. Exemplo 2
O seguinte script procura por arquivos pertencentes a um determinado usuário, lista-os e,
caso haja a confirmação, apaga-os.
1 #!/bin/sh
2 # Apaga arquivos de um determinado usuário caso você seja root.
3 if [ "$LOGNAME" = "root" ]; then
4 if [ "$#" != 1 ]; then
5 echo "Uso: `basename $0` "
6 exit 0
7 fi
8 echo -e "Remover os arquivos de $1 [s/N]" '\c'
9 read resposta
10 if [ $resposta ]; then
11 if [ "$resposta" = s -o $resposta = S ]; then
12 rm -rf `find / -user $1 | grep -v "/dev/tty"`
13 else
14 exit 0
15 fi
16 else
17 exit 0
18 fi
19 else
20 echo "Erro: Voce precisa ser root para rodar este programa"
21 fi
Agora a explicação de cada linha:
1) Essa linha especifica ao shell qual interpretador deve ser usado para a execução do
programa, como este é um shell script o interpretador usado é o sh, contido no diretório
"/bin".
2) Apenas comentários(para comentar linhas é utilizado "#")
3) Utiliza o comando "if" para verificar se o usuário é root.
4-7) Verifica se o número de argumentos fornecidos na linha de comando é diferente de 1,
caso haja confirmação é exibida mensagem de erro e o programa é finalizado.
8-9) Exibe o prompt de confirmação(echo...) e nomeia a resposta dada como a string
$resposta(read resposta).
10) Verifica se foi dada alguma resposta.
11-15) Verifica se a resposta dada é igual a "s" ou "S", se for, executa o comando rm -rf
para apagar todos os arquivos pertencentes usuário especificado no argumento 1("$1")
utilizando o comando "find / -user $1| grep -v /dev/tty" para lista-los.
NOTA: O comando "grep" é utilizado para excluir da lista os arquivos /dev/ttyX, como
/dev/ttyS1, que recebem o uid do usuário ao serem abertas sessões e cuja exclusão poderia
prejudicar o funcionamento do sistema.
16-18) Caso o usuário não tenha dado uma resposta no prompt, o programa é finalizado.
19-21) Caso você não seja root é apresentada uma mensagem de erro e o programa é
finalizado.
* Como esse comando "if" é utilizado?
R: Simples.
if [ expressão de teste ]; then
comando em caso de positivo
else
comando em caso de negativo
fi

*O que é "$LOGNAME"?
R: É uma variável do ambiente shell. Para conhecer as variáveis que o seu Shell possui
utilize o comando "env".

5.3. Exemplo 3
O comando "for" é utilizado para que uma tarefa seja executada sobre diversos itens
especificados.
1 #!/bin/bash
2 # xvslide - exibe todas as imagens de um diretório seguidamente
3 # como "slides".
4 echo -e "Tempo de espera entre as imagens(seg):"'\c'; read tempo
5 for img in `ls`
6 do
7 xv $img &
8 sleep $tempo
9 killall xv
10 done
Agora a explicação de cada linha:
1) Essa linha especifica ao shell qual interpretador deve ser usado para a execução do
programa.
2-3) Comentários.
4) Exibe o prompt para que o usuário informe o tempo de espera entra as imagens e
identifica a resposta como $tempo.(";" separa comandos)
5) Inicia o comando "for" identificando a próxima imagem apresentada no comando "ls"
como $img.
6) do = fazer
7) roda o comando "xv" para visualizar a imagem identificada por $img. Note que o
comando está detachado("&") para que o script possa seguir após sua execução.
8) Utiliza o comando "sleep" para esperar o número de segundos indicados pela variável
$tempo.
9) Mata o processo correspondente ao "xv"
10) done = feito!

5.4. Exemplo 4
O while é utilizado para que uma tarefa seja executada até que a expressão de teste
especificada torne-se falsa.
Agora um exemplo de while:

1 # Contagem Regressiva - Regressiva.sh <segundos>


2 #!/bin/sh
3 contagem="$1"
4 while [ $contagem != 0 ]
5 do
6 echo $contagem
7 sleep 1
8 contagem=`expr $contagem - 1`
9 done
Explicação:
1) Comentários.
2) Especifica ao shell qual interpretador deve ser usado para a execução do programa.
3) Identifica o número indicado no primeiro argumento("$1") como $contagem.
4) "Enquando $contagem for diferente de 0..."
5) "faça"
6) "mostrar contagem"
7) "durma durante um segundo"
8) "Subtraia 1 de $contagem"
9) "feito!"
Depois desses dois exemplos foi possível constatar como funcionam os comandos "for" e
"while".
for - "for variavel_correspondente_ao_item_atual in Comando
que gera a lista
do
comando
done"

while - "while expressao de teste


do
comando
done"

5.5. Exemplo prático feito em aula


#!/bin/bas
chmod +x sistema
echo –e “\e[34;1m Boa Noite\e[m $USER”
echo “Digite o numero a ser somado: ”
read n1
echo “Digite outro numero a ser somado: ”
read n2
soma=$(($n1+$n2))
echo “Soma :$soma”
echo “Digite o numero a ser multiplicado: ”
read n3
echo “Digite outro numero a ser multiplicado: ”
read n4
multiplicacao=$(($n3*$n4))
echo “Multiplicação: $multiplicacao”
6. Bibliografia:
http://sh.underlinux.com.br/doc/programacaosh.htm
http://aurelio.net/shell/canivete.html
http://aurelio.net/shell/
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=347
http://paginas.faccat.br/chandra/lp/ling_shell_script.php
http://www.dotlinux.net/modules.php?name=Sections&op=View&id=118

Você também pode gostar