Você está na página 1de 45

Shell Script - Bsico

Thomaz de Oliveira dos Reis - thommy@globo.com

Pra programar Shell no preciso Texaco

- Julio Cezar Neves

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona Comandos interessantes Programando em shell

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona Comandos interessantes Programando em shell

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona?

In computing, a shell is a piece of software that provides an interface for users. - Wikipedia

Traduo Livre: Na computao, um shell um pedao de programa que prov uma interface com o usurio.

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona?

1. 2. 3. 4. 5.

Exame da linha de comando recebida Resoluo de Redirecionamentos Substituio de variveis Substituio de meta caracteres Passa o comando para o kernel

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

1. Exame da linha de comando recebida Comando: Separado por espao em branco, sendo o primeiro o comando e o restante os parmetros OBS: Remove todos os espaos em brancos repetidos! Atribuio: Separado por = sem espaos em branco

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

2. Resoluo de Redirecionamentos > e >>: Redireciona sada padro para um arquivo 2> e 2>>: Redireciona sada de erro para um arquivo |: Redireciona a sada padro para a entrada de outro programa tee: Redireciona o pipe (|) para a sada padro < e <<: Redireciona a entrada padro

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

3. Substituio de variveis substitui todos os $Variavel pelo contedo da varivel. ex: echo $PATH echo \$PATH echo '$PATH' echo $PATH

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Uma paradinha para explicar \, ' e : \ : Ignora o prximo caracter ': ignora o contedo entre dois ' : considera tudo como apenas um parametro

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

4. Substituio de meta caracteres Para arquivos: *: nmero qualquer de letras, e qualquer letra ?: apenas uma letra qualquer . : Pasta atual .. : Pasta anterior ~: Home do usurio `: Abre um shell filho, e executa o comando que est entre `.

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

5. Passa o comando para o kernel !!!ATENO:!!! !!!Prximas informaes apenas para geeks!!! O Shell envia o comando para o kernel, que por sua vez executa um fork, criando um processo filho na memria, e ento executa o programa determinado. Para os no (muito) geeks: O Shell manda o SO executar o comando OBS: Caso o comando seja um script, todas as modificaes a variveis feitas dentro dele no alteram o shell principal.

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona Comandos interessantes Programando em shell

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona Comandos interessantes Programando em shell

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

1.cat, more e less 2.wc 3.sort 4.head e tail 5.find 6.grep 7.sed 8.cut e paste 9.tr 10.dialog

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

1. cat,more,less Serve para mostrar o contedo de arquivos cat: Joga todo o conteudo do arquivo para a sada padro more: Joga o conteudo do arquivo at preencher 1 tela, e espera a tecla enter para ir para a prxima linha. Possui recursos de busca e outros estilo vi. less: O mesmo do more s que pode voltar...

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

2. wc Mostra o nmero de linhas, palavras e bytes de um arquivo. -l: mostra apenas o nmero de linhas -c: mostra apenas o nmero de bytes -m: mostra apenas o nmero de letra -w: mostra apenas o nmero de palavras

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

3. sort Mostra o contedo de um arquivo em ordem crescente ou alfabtica

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

4. head e tail Mostra as primeiras ou ultimas linhas de um arquivo

head -x: mostra as x primeiras linhas do arquivo tail -x: mostra as x ultimas linhas do arquivo

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Os trs prximos comandos (find, grep e sed), so EXTREMAMENTE poderosos, e vale o aprofundamento do estudo deles.

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

5. find Procura arquivos por caractersticas find caminho expresso ao expresses: -name nome-do-arquivo -user nome-do-usurio -groupnome-do-grupo -type tipo-do-arquivo (d: diretrio, f: arquivo, l: link, p: pipe)

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

5. find Procura arquivos por caractersticas find caminho expresso ao aes: -print (ao padro) -exec comando {} \; -okcomando {} \;

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

6. grep Mostra as linhas dos arquivos que casam com uma expresso regular -i ignora maisculas e minsculas -v inverte o resultado -R procura recursivamente

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

7. sed Editor de arquivos completo Muito usado para substituir cadeias de caracteres ex: sed 's/original/final/g' arquivo Troca todas as cadeias de caracteres iguais a original por final

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

8. cut e paste cut: separa o arquivos em partes paste: junta arquivos -d: qual o caractere que separa as partes -f: qual das partes deve ser mostrada

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

9. tr substitui caracteres [:upper:] letras em maiusculo [:lower:] letras em minusculo [:digit:] digitos

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

10. dialog Mostra uma janela, com mensagens, entradas e outros dialog tipo texto X Y onde tipo pode ser: msgbox, inputbox e outros X e Y o tamanho da janela tem tambm o Xdialog (100% compatvel e grfico), gdialog (usa gtk) e kdialog (usa qt, e possui diversos recursos diferentes)

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona Comandos interessantes Programando em shell

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona Comandos interessantes Programando em shell

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

1.Hello World em Shell Script 2.Cabealho 3.Comentrios 4.Condicional 5.Pegando informao do teclado 6.Estruturas de repetio

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

1.Hello World em Shell Script


$ [vi|mcedit|kwrite|editor preferido] hello.sh 1 echo Hello World

$ chmod +x hello.sh $./hello.sh

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

2. Cabealho
O cabealho serve para escolher o interpretador de comandos que ser utilizado. Tem que estar na primeira linha e ser iniciado com #!

1 2

#!/bin/sh echo Hello World

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

3. Comentrios
Comentrio toda texto contido no script (ou cdigo fonte) que no faz parte do cdigo. Os comentrios em shell so iniciados com #

1 2 3 4

#!/bin/sh #Isto um comentrio :) echo Hello World

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

4. Condicional
A condicional serve para ver se uma sentena verdadeira ou falsa Em shell, a condicional o if, e retorna verdadeiro se o comando terminar com sucesso, e falso se der erro no comando 1 2 3 4 5 6 7 8 #!/bin/sh if ls then echo o comando deu certo else echo o comando deu errado fi Experimente mudar o ls para um comando inexistente ou usar parmetros errados no ls.

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #!/bin/sh #Comparao de textos if [ isso = aquilo ] then echo so iguais else echo so diferentes fi #O arquivo existe? if [ -f arquivo ] then echo arquivo existe else echo arquivo no existe fi #o diretrio existe? if [ -d diretorio ] then echo diretrio existe else echo diretrio no existe fi 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #negando o if if ! [ isso = aquilo ] then echo so diferentes fi #Conjuno E if [ isso = isso ] && [ -f arquivo ] then echo so iguais E arquivo existe fi #conjuno OU if [ isso = isso ] || [ -f arquivo ] then echo so iguais OU arquivo existe fi #comparador matemtico if (( 5 < 10 )) then echo 5 menor que 10 fi

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

5. Pegando informao do teclado


O comando read serve para pegar uma entrada do teclado, e armazena-la na varivel informada 1 2 3 4 5 6 7 #!/bin/sh echo Qual o seu nome? read NOME echo Ol $NOME\! Tenha um bom-dia\!

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Desafio!
Faa um script, que mostre o contedo do arquivo informado pelo usurio! Ateno: se o arquivo no existir mostre a seguinte mensagem: Que pena, o arquivo (nome do arquivo) infelizmente no foi encontrado...

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Soluo simples
1 2 3 4 5 6 7 8 9 10 11 #!/bin/sh echo Informe o nome do arquivo: read ARQUIVO if [ -f $ARQUIVO ] then cat $ARQUIVO else echo Que pena, o arquivo $ARQUIVO infelizmente no foi encontrado... fi

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Soluo elegante
1 2 3 4 5 6 7 8 #!/bin/sh echo Informe o nome do arquivo: read $ARQUIVO if ! cat $ARQUIVO 2> /dev/null then echo Que pena, o arquivo $ARQUIVO infelizmente no foi encontrado... fi

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Soluo grfica
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/bin/sh DIALOG=dialog #voc pode escolher o Xdialog ou o dialog ARQTEMP=/tmp/script.$$ # $$ trocado pelo nmero do processo do script #pega o nome do arquivo e guarda em arqtemp $DIALOG --fselect "$HOME/" 10 60 2>$ARQTEMP #pega o contedo do arquivo ARQTEMP e bota em ARQUIVO ARQUIVO=`cat $ARQTEMP` rm -fr $ARQTEMP #remove o ARQTEMP

if [ -f $ARQUIVO ] then $DIALOG --textbox "$ARQUIVO" 0 0 else $DIALOG --msgbox "Que pena, o arquivo $ARQUIVO infelizmente no foi encontrado..." 0 0 18 fi

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

6. Estruturas de repetio
As estruturas de repetio servem para repetir uma srie de comandos at que uma condio especial seja alcanada. WHILE Enquanto a condio do while for verdadeira, as instrues entre do e done executada. 1 2 3 4 5 6 7 8 #!/bin/sh X=0 while (( X < 10 )) do echo $X X=$((X+1)) done

O $(( )), serve para executar operaes matemticas

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Desafio!
Reescreva o programa anterior, para que toda vez que o usurio informar um nome de arquivo invlido, ele tenha que digitar o nome do arquivo novamente.

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

6. Estruturas de repetio
FOR O for no shell se comporta diferente do que o for nas linguagens tradicionais. Em shell, o for percorre uma lista qualquer, e atribui a uma varivel, cada valor dessa lista. O comando seq X Y Z, conta de X at Z indo de Y em Y

1 2 3 4 5 6 7

#!/bin/sh for X in `seq 1 1 10` do echo vamos contar: $X done

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Desafio Final!
Faa um programa que redimensione todos as imagens png da pasta informada pela linha de comando para 50% do seu tamanho, e salve no formato jpg Para modificar imagens pela linha de comando, use o comando convert, do image magick para pegar os argumentos da linha de comando, use: $1 para o primeiro arguento, $2 para o segundo e assim por diante $* retorna todos os argumentos da linha de comando $# retorna a quantidade de argumentos shift 1 remove o primeiro parametro e o segundo passa a ser o primeiro, o terceiro o segundo e assim por diante

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona Comandos interessantes Programando em shell

Shell Script - Bsico


Thomaz de Oliveira dos Reis - thommy@globo.com

Como o Shell funciona Comandos interessantes Programando em shell


Finalmente Chegamos ao Final! Lista de Discusso: http://br.groups.yahoo.com/group/shell-script/ Links: www.thobias.org http://aurelio.net/ www.julioneves.com Livro: Programao Shell Linux Julio Cezar Neves (ed. Brasport)

Você também pode gostar