introdução à shell script - vinícius alves hax
DESCRIPTION
"Tópicos abordados: 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, etc"TRANSCRIPT
Introdução à Shell Script
Vinícius Alves Hax
Agosto de 2010TchêLinux Pelotas
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
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
4
Filosofia dos sistemas Unix
Algumas maneiras de pensar que estão atreladas ao próprio desenvolvimento
5
Filosofia dos sistemas Unix
“Escreva programas que resolvam um único problema, e faça bem feito.”
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
7
Filosofia dos sistemas Unix
Automatize as tarefas (mas não exagere!)
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.
9
Interligando programas
A comunicação dos programas é feita através do pipe, representado por |
cat /etc/fstab | grep sd
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
11
Shell Script
● Chamamos de Shell Script, um arquivo contendo comandos do terminal, sob a forma de um programa executável
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
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
14
Ok, ok, podemos começar?
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
16
Executando um shell script
● Opção 1:
./meu_primeio_script.bash
● Opção 2:
bash meu_primeiro_script.bash
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!)
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
19
Atribuição de variáveis
● Operações matemáticas podem ser feitas com let
let a=a*3
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”
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
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
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”
24
Leitura do teclado
read var_resposta● O valor de var_resposta é tudo que o usuário
digitar, incluindo espaços
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
26
Estruturas de seleção if
Utilizado em conjunto com o comando test
Sintaxeif COMANDO_TEST
then
A
else
B
fi
27
Estruturas de seleção ifEx:
if test $v1 gt $v2
then
echo “V1 > V2”
else
echo “V2 > V1”
fi
28
Estruturas de seleção casecase $var in
1)
echo “Opção 1”
;;
2)
echo “Opção 2”
;;
*)
echo “Outras opções”
;;
esac
29
Estruturas de repetição while
while test d diretorio
do
echo “Diretório não foi deletado ainda”
done
30
Estruturas de repetição for
for numero in um dois tres
do
echo $numero
done
31
Programas interessantes
32
O comando mais importante
man
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 “:”
34
sed
● Substitui trechos de texto em arquivos
sed s/OLD/NEW/ FILE
sed s/admin/master/ /etc/group
35
grep
● Filtra trechos de arquivos
grep PADRAO ARQUIVO
grep /etc/fstab /dev/sd
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)
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
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
39
Referências
● http://aurelio.net/shell/● http://www.delicious.com/vinicius_ah/shell
40
TchêLinux Rio Grande
● CIDECSul – FURG – Campus Carreiros● 27 de novembro de 2010● Call To Papers a partir de segunda
41
Agradecimentos● Vocês
● Organização do evento, especialmente Jerônimo
● Grupo Tchelinux
● Patrocinadores
● Comunidade Software Livre
42
O poder é de vocês!
43
Contato
Email / Twitter:
[email protected] / @vinicius_ah
Sites:● www.ti.c3.furg.br● www.zetaflops.com.br● www.tchelinux.org