introdução à shellscript
DESCRIPTION
⇒ Filosofia dos sistemas Unix e como os utilitários se interligam ⇒ O que é shell? O que é bash? ⇒ Entrada e saída em bash ⇒ Estruturas de controle no bash (for, if, while) ⇒ Alguns utilitários interessantes: awk, head, tail, sort, etcTRANSCRIPT
![Page 1: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/1.jpg)
Introdução à Shell Script
Vinícius Alves Hax
Agosto de 2010TchêLinux Pelotas
![Page 2: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/2.jpg)
2
Palestrante
● Engenheiro de Computação pela FURG● Analista de TI no Centro de Ciências
Computacionais – FURG● Sóciofundador da Zetaflops – Computação de
Alto Desempenho● Usuário Linux desde 2004
![Page 3: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/3.jpg)
3
Conteúdo
● Filosofia dos sistemas Unix e como os programas se comunicam
● O que é shell? O que é bash?● Entrada e saída em bash● Estruturas de controle no bash (for, if, while)● Alguns utilitários interessantes: awk, head, tail,
sort, etc
![Page 4: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/4.jpg)
4
Filosofia dos sistemas Unix
Algumas maneiras de pensar que estão atreladas ao próprio desenvolvimento
![Page 5: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/5.jpg)
5
Filosofia dos sistemas Unix
“Escreva programas que resolvam um único problema, e faça bem feito.”
![Page 6: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/6.jpg)
6
Filosofia dos sistemas Unix
Armazene dados em arquivos de texto● Cabível de edição manual● Mais fácil escrever programas que manipulem
esses arquivos
![Page 7: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/7.jpg)
7
Filosofia dos sistemas Unix
Automatize as tarefas (mas não exagere!)
![Page 8: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/8.jpg)
8
Filosofia dos sistemas Unix
Escreva programas que "conversem" com outros: leiam dados da entrada padrão e escrevam dados
na saída padrão. Geralmente o teclado e o terminal.
![Page 9: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/9.jpg)
9
Interligando programas
A comunicação dos programas é feita através do pipe, representado por |
cat /etc/fstab | grep sd
![Page 10: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/10.jpg)
10
Shell
● O Shell é o prompt de comando do Linux● Ele lê o que o usuário digita, interpreta o
comando e o executa● Como um Command do MSDOS, mas
melhorado
![Page 11: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/11.jpg)
11
Shell Script
● Chamamos de Shell Script, um arquivo contendo comandos do terminal, sob a forma de um programa executável
![Page 12: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/12.jpg)
12
Utilidade
● Executar tarefas repetidas no Shell● Integração de tarefas complexas com cron● Operações com múltiplos arquivos e diretórios● Reaproveitamento do SEU tempo
![Page 13: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/13.jpg)
13
Bash
O bash é um dos possíveis interpretadores disponíveis no prompt de comando.
Geralmente é o mais usado e é o shell padrão da maioria das distribuições Linux
Outras possibilidades: ksh, csh, etc
![Page 14: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/14.jpg)
14
Ok, ok, podemos começar?
![Page 15: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/15.jpg)
15
Criando um shell script
● Criar um arquivo de texto normal.● A primeira linha do arquivo deve ser:
!#/bin/bash
A linha acima diz que o interpretador é o bash● Salvar o arquivo
chmod +x meu_primeiro_script.bash
![Page 16: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/16.jpg)
16
Executando um shell script
● Opção 1:
./meu_primeio_script.bash
● Opção 2:
bash meu_primeiro_script.bash
![Page 17: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/17.jpg)
17
Observação
● A extensão é opcional, apenas facilita ao usuário, a primeira linha do arquivo é que diz quem vai interpretar o arquivo
● Alguns usam a extensão .sh, mas geralmente é um arquivo bash (verificar antes de executar!)
![Page 18: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/18.jpg)
18
Atribuição de variáveis
● Atribui valor a uma variável
a=1
Importante: A atribuição não pode ter espaços nem antes nem depois da igualdade, senão o Bash acusa um erro
![Page 19: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/19.jpg)
19
Atribuição de variáveis
● Operações matemáticas podem ser feitas com let
let a=a*3
![Page 20: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/20.jpg)
20
Atribuição de variáveis
● Se você precisar que a variável fique acessível em processos filho do shell atual é preciso usar export
export OUTRO_SHELL=”ola shell”
![Page 21: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/21.jpg)
21
Acessando variáveis
● Com exceção do let, para acessar uma variável devemos adicionar $ na frente do nome da mesma.
Ex:
numero=10
outro_numero=$numero
![Page 22: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/22.jpg)
22
Mostrando dados na tela
● Para mostrar dados na tela existe o comando echo
Ex: echo “ola publico”● O mesmo com variáveis● Ex: echo $a
![Page 23: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/23.jpg)
23
Variáveis dentro de strings
● Para imprimir o valor de variáveis concatenado com strings usados { e }
Ex:
str0=“string0”
echo “minha string é ${str0}”● Mostra na tela “minha string é string0”
![Page 24: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/24.jpg)
24
Leitura do teclado
read var_resposta● O valor de var_resposta é tudo que o usuário
digitar, incluindo espaços
![Page 25: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/25.jpg)
25
Testes
● O comando test realiza … testes● Cada operação de test possui um parâmetro.
Por exemplo para testar se um arquivo existe o parâmetro é “f”
Ex:
test f arquivo.txt
![Page 26: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/26.jpg)
26
Estruturas de seleção if
Utilizado em conjunto com o comando test
Sintaxeif COMANDO_TEST
then
A
else
B
fi
![Page 27: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/27.jpg)
27
Estruturas de seleção ifEx:
if test $v1 gt $v2
then
echo “V1 > V2”
else
echo “V2 > V1”
fi
![Page 28: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/28.jpg)
28
Estruturas de seleção casecase $var in
1)
echo “Opção 1”
;;
2)
echo “Opção 2”
;;
*)
echo “Outras opções”
;;
esac
![Page 29: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/29.jpg)
29
Estruturas de repetição while
while test d diretorio
do
echo “Diretório não foi deletado ainda”
done
![Page 30: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/30.jpg)
30
Estruturas de repetição for
for numero in um dois tres
do
echo $numero
done
![Page 31: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/31.jpg)
31
Programas interessantes
![Page 32: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/32.jpg)
32
O comando mais importante
man
![Page 33: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/33.jpg)
33
awk
● Linguagem de programação para manipulação de strings
● Ex:
echo "1:2:3:4" | awk F : '{print $2}'
Mostra o segundo item da string, ou seja “2”, usando o separador “:”
![Page 34: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/34.jpg)
34
sed
● Substitui trechos de texto em arquivos
sed s/OLD/NEW/ FILE
sed s/admin/master/ /etc/group
![Page 35: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/35.jpg)
35
grep
● Filtra trechos de arquivos
grep PADRAO ARQUIVO
grep /etc/fstab /dev/sd
![Page 36: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/36.jpg)
36
uniq, sort, wc
● uniq: Retira linhas contíquas repetidas
uniq arquivo.txt● sort: Ordena um arquivo
sort arquivo.txt● wc: Conta palavras, linhas e caracteres de um
arquivo
wc l arquivo.txt (mostra as linhas)
![Page 37: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/37.jpg)
37
head, tail, less
● Head: Mostra as primeiras linhas de um arquivo
head arquivo.txt● Tail: Mostra as últimas linhas de um arquivo
tail arquivo.txt● Less: Mostra o conteúdo de um arquivo de
forma paginada
less arquivo.txt
![Page 38: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/38.jpg)
38
Mais comandos
● http://wiki.ubuntubr.org/ComandosBasicos Comandos básicos e alguns um pouco mais avançados
● http://www.cyberciti.biz/tips/toplinuxmonitoringtools.htm Para administradores de sistema
![Page 39: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/39.jpg)
39
Referências
● http://aurelio.net/shell/● http://www.delicious.com/vinicius_ah/shell
![Page 40: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/40.jpg)
40
TchêLinux Rio Grande
● CIDECSul – FURG – Campus Carreiros● 27 de novembro de 2010● Call To Papers a partir de segunda
![Page 41: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/41.jpg)
41
Agradecimentos● Vocês
● Organização do evento, especialmente Jerônimo
● Grupo Tchelinux
● Patrocinadores
● Comunidade Software Livre
![Page 42: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/42.jpg)
42
O poder é de vocês!
![Page 43: Introdução à Shellscript](https://reader034.vdocuments.net/reader034/viewer/2022051412/5489a284b47959f60c8b5969/html5/thumbnails/43.jpg)
43
Contato
Email / Twitter:
[email protected] / @vinicius_ah
Sites:● www.ti.c3.furg.br● www.zetaflops.com.br● www.tchelinux.org