Primeiros passos em Shell Script
Projeto Casa Brasil
Oficina: Unidade CB de Imperatriz - MA
TEC Daniela Montelo - MA/PA
Roteiro
PARTE 01
➲ Ambientação
➲ Visão Geral: ambientes linux e shell
➲ Principais Shells
➲ Funcionamento do Shell
➲ Caracteres especiais para o Shell
➲ Dicas de Shell
PARTE 02
➲ Redirecionamento de comandos
➲ Caracteres de Ambiente
➲ Referências
Ambientação
Diálogo entreouvido entre um Linuxer e um empurrador de
mouse:
- Quem é o Bash?
- O Bash é o filho mais novo da família Shell.
- Pô cara! Estás a fim de me deixar maluco? Eu tinha uma dúvida
e você me deixa com duas!
- Não, maluco você já é há muito tempo. Desde que se decidiu a
usar aquele sistema operacional que você tem que dar dez boots
por dia e não tem domínio nenhum sobre o que esta acontecendo
no seu computador. Mas deixa isso prá lá, vou te explicar o que é
Shell e os componentes de sua família e ao final da explanação
você dirá: "Meu Deus do Shell! Porque eu não optei pelo Linux
antes?".
Visão Geral
➲
Ambiente Linux
Visão Geral
➲
Ambiente Shell

Linux multiusuário;

Arquivo /etc/passwd;

Login – recebe shell;

Segurança com shell;

Shell – concha que envolve o S.O.
Ambiente Shell
➲
/etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
sshd:x:114:65534::/var/run/sshd:/usr/sbin/nologin
debian:x:1000:1000:debian,,,:/home/debian:/bin/bash
gilvan:x:1001:1000:,,,,:/home/gilvan:/bin/bash
brunini:x:1002:1000:,,,,:/home/brunini:/bin/bash
sacix1:x:1003:1003:,,,,:/home/sacix1:/bin/bash
sacix2:x:1004:1004:,,,,:/home/sacix2:/bin/bash
Principais Shells
➲
➲
Principais Shells: sh (Bourne Shell), ksh
(Korn Shell), bash (Bourne Again Shell) e
csh (C Shell).
SHELLs

Bourne Shell (sh) - desenvolvido por Stephen Bourne
da Bell Labs (da AT&T onde também foi desenvolvido
o Unix), este foi durante muitos anos o Shell default do
sistema operacional Unix. É também chamado de
Standard Shell por ter sido durante vários anos o único
e até hoje é o mais utilizado até porque ele foi portado
para todos os ambientes Unix e distros Linux.
Principais Shells
➲
SHELLs




Korn Shell (ksh) - desenvolvido por David Korn, também da Bell
Labs, é um superset do sh, isto é, possui todas as facilidades do
sh e a elas agregou muitas outras. A compatibilidade total com o
sh vem trazendo muitos usuários e programadores de Shell para
este ambiente.
Boune Again Shell (bash) - este é o Shell mais moderno e cujo
número de adeptos mais cresce em todo o mundo, seja por ser o
Shell default do Linux, seu sistema operacional hospedeiro, seja
por sua grande diversidade de comandos, que incorpora
inclusive diversos instruções características do C Shell.
C Shell (csh) - desenvolvido por Bill Joy da Berkley University é o
Shell mais utilizado em ambientes *BSD e Xenix. A estruturação
de seus comandos é bem similar à da linguagem C. Seu grande
pecado foi ignorar a compatibilidade com o sh, partindo por um
caminho próprio.
Além destes Shells existem outros, mas os trataremos
genericamente por Shell.
Funcionamento do Shell
➲
Shell – primeiro programa no login
➲
Interpreta comandos
➲
Poderosa linguagem com comandos de alto nível,
que permite construção de loops (laços), de
tomadas de decisão e de armazenamento de
valores em variáveis
➲ Ordem de funcionamento do shell:
 Exame da linha de comando,
 Atribuição,
 Comando,
 Redirecionamento,
 Substituição de variáveis e meta caracteres,
 Passar linha de comando para o kernel.
Exemplos
➲
Exemplos de funcionamento do shell:





ls diretório,
var = 100;
var=100;
echo var;
echo $var
Caracteres especiais para o Shell
➲
Caracteres para remoção do significado

Apóstrofo ou plic ( ' ): $ ls nome*; $ ls 'nome*'

Contrabarra ou barra invertida ( \ ): $ ls casa
brasil; ls casa\ brasil

$ cd /etc,$ echo '*', $ echo \*, $ echo *

Aspas ( “ ): igual ao apóstrofo exceto que, se a
cadeia entre aspas contiver um cifrão ($), uma
crase (`), ou uma barra invertida (\), estes
caracteres serão interpretados pelo Shell.
Caracteres especiais para o Shell
➲
Caracteres para redirecionamento

Comando: entrada, saída, erros

Stdin – teclado, stdout – tela, stderr – tela

$ cat, $cat > teste, $cat >> teste

Redirecionamento da saída de erro padrão:

2> nome_arquivo
Ex: $nano arquivo
rm /tmp/arquivo$$ 2> /dev/null
$ls naoexiste
$ls naoexiste 2> arquivodeerros
$cat arquivodeerros
Dicas de Shell
➲
Dica # 1

➲
O $$ contém o PID, isto é, o número do seu processo. Como o
Linux é multiusuário, é bom anexar sempre o $$ ao nome dos dos
arquivos que serão usados por várias pessoas para não haver
problema de propriedade, isto é, caso você batizasse o seu arquivo
simplesmente como seraqueexiste, o primeiro que o usasse
(criando-o então) seria o seu dono e todos os outros ganhariam um
erro quando tentassem gravar algo nele.
Dica # 2
- Quem é esse tal de /dev/null?

- Em Unix existe um arquivo fantasma. Chama-se /dev/null. Tudo que é
mandado para este arquivo some. Assemelha-se a um Buraco Negro. No
caso do exemplo, como não me interessava guardar a possível mensagem
de erro oriunda do comando rm, redirecionei-a para este arquivo.
É interessante notar que estes caracteres de redirecionamento são
cumulativos, isto é, se no exemplo anterior fizéssemos:
$ ls naoexiste 2>> arquivodeerros

PARTE 02
➲
➲
Redirecionamento de comandos
Caracteres de Ambiente
Redirecionamento de comandos
➲
Redirecionamento de comandos
cat < arquivo
ftp -ivn hostremoto << fimftp
user $Usuário $Senha
binary
get arquivoremoto
fimftp
➲ $ ls | wc -l
➲ $ cat /etc/passwd |sort | lp
Caracteres de Ambiente
➲
Caracteres de Ambiente
$ who | wc -l
$ echo "Existem who | wc -l usuários conectados"
$ echo "Existem `who | wc -l` usuários conectados"
$ echo Existem `who | wc -l` usuários conectados
$ pwd ; cd /etc; pwd; cd -; pwd
$ (pwd ; cd /etc ; pwd;)
$ pwd

➲
➲
➲
➲
➲
➲
Referências
➲
Livro de Shell em português, disponível em:
http://twiki.softwarelivre.org/TWikiBar/WebHome#Livro_de_Shell_em_Portugu_s
➲
TwikiBar – wiki com materiais sobre shell,
disponível em:
http://twiki.softwarelivre.org/TWikiBar/WebHome
➲
NEVES, Júlio Cesar. Programação Shell
Linux, 6ª edição, Ed. Brasport, 2006.
➲
Curiosidades: http://pt.wikipedia.org/wiki/JeanFran%C3%A7ois_Champollion
Download

oficina_shellscript