Shell script



Baixar 44.04 Kb.
Encontro26.07.2016
Tamanho44.04 Kb.
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 [ ; 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:

ciano

36

46













echo -e '\e[33;1m amarelo \e[m'

branco

37

47













echo -e '\033[33;1m 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

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


©principo.org 2016
enviar mensagem

    Página principal