Vous êtes sur la page 1sur 44

Tpicos

Especiais em Linguagens de Programao


Shell Script

Apresentao da Disciplina

Andrei Rimsa lvares


Sumrio

Sobre UNIX
Sobre Shell
Shell Scrip;ng
Um Shell Script Simples
Ementa, Avaliaes, Regras
Bibliograa
SOBRE UNIX

Shell Script
Histrico UNIX

UNIX foi criado em 1969 nos laboratrios da


Bell, na poca uma diviso de P&D da AT&T

Foi inspirado no sistema operacional MULTICS (Mul$plexed


Opera$ng and Compu$ng System), projeto anterior com o MIT e a
GE para criao de um sistema operacional para mainframe da GE

A primeira verso foi ba;zada de UNICS (Uniplexed Opera$ng and


Computer System) que foi evoluda para os sistemas UNIX
encontrados comumente atualmente

UNIX no mais acrnimo de nada, mas uma derivao de UNICS


Vantagens

Como UNIX foi desenvolvido em um ambiente de pesquisa, no


havia presso comercial para liberar um produto nalizado
O sistema era desenvolvido pelos prprios usurios
Os pesquisadores eram livres para experimentar e modicar
programas conforme necessidade; como eram pequenos e os
usurios eram desenvolvedores, isso no era um problema
Os pesquisadores desenvolveram o sistema para seu prprio
uso e de seus colegas (todos cien;stas da computao) o que
levou uma abordagem de design non-sense; programas faziam o
que se pedia, sem "falao" e "perguntao" se voc tem
certeza do que quer fazer
A liberdade no ambiente de desenvolvimento da Bell levou a
criao de um sistema elegante, no s funcional
Adoo de UNIX

UNIX foi gradualmente portado originalmente do


minicomputador PDP-7 para diferentes arquiteturas

O cdigo-fonte era disponibilizado por uma pequena taxa com o


obje;vo de aumentar sua adoo

UNIX ganhou aceitao nas universidades entre os alunos


A medida que esses alunos assumiam cargos corpora;vos de


compra de sodwares e equipamentos, UNIX era uma escolha
natural, j que eram familiarizados com a tecnologia

Hoje, sistemas computacionais UNIX formam a infraestrutura de


muitas grandes corporaes
Verses UNIX

No comeo, UNIX era distribudo na forma de cdigo-fonte, ao


invs da fpica forma binria

Isso facilitou customizaes para propsitos prprios, resultando


em diversas verses de UNIX (sabores diferentes)

A vasta maioria de sistemas UNIX foram construdos sobre duas


verses base

AT&T System V BSD


Verses UNIX

Com vrias verses de UNIX disponveis o usurio tem o poder de


escolha, ou seja, pode selecionar aquela que melhor atende s suas
necessidades

Algumas verses comerciais e open-source famosas

Qual o problema de ser ter


: UNIX ;meline (hlp://www.oreilly.com/go/languageposter)
tantas verses diferentes?
Desvantagens

A mesma liberdade teve desvantagens claras com a adoo do


UNIX alm do ambiente original de desenvolvimento
Haviam muitas inconsistncia entre os programas u;litrios
(usar a mesma letra para signicar coisas diferentes, ou letras
diferentes para signicar a mesma coisa)
Muitos programas ;nham limitaes, quanto ao tamanho das
entradas ou no nmero de arquivos abertos
Programas no eram testados to rigorosamente quanto
deveriam, tornando-os menos conveis
A documentao, embora geralmente completa, eram concisas
e minimalistas, dicultando o aprendizado do sistema
Contextualizao

Shell scripts so usados principalmente para processamento e


manipulao de dados textuais (no binrio)

Isso se deve ao fato do forte interesse nesse ;po de processamento


que exis;a no incio do desenvolvimento do UNIX, mas vlido por
outros mo;vos tambm
O primeiro sistema UNIX em produo era u;lizado para
processamento de texto e formatao no departamento de
patentes da Bell Labs
Contextualizao

Os computadores originais que executavam UNIX (PDP-11) no


eram capaz de executar grandes programas

Para executar uma tarefa complexa era preciso dividir o problema


em pedaos menores e usar pequenos programas para cada
Alguns ;pos de tarefas comuns (extrair campos em linhas,
subs;tuio de texto) era compar;lhadas entre muitos
projetos, o que acabaram tornando ferramentas padres

Isso no nal acabou se tornando uma boa coisa, a limitao


computacional levou a programas menores, simples e mais focados
Contextualizao

Muitas pessoas trabalhavam semi-independentemente no UNIX,


reimplementado programas de outras pessoas

Entre diferentes verses e sem nenhum obrigao de padronizao,


as ferramentas foram naturalmente divergindo

Isso acontecia com muitas ferramentas, no somente com algumas

Como resolver
essa situao?
Padronizao

Eventualmente, era preciso de um conjunto de ferramentas e


opes padronizadas

O resultado foi a padronizao POSIX (Portable Opera$ng System


Interface), que atualmente engloba a biblioteca de desenvolvimento
C, linguagem shell e programas u;litrios com suas opes

Atualmente, a maiorias dos sistemas UNIX (comerciais e open-


source) so todos POSIX-compafveis

Isso torna o aprendizado mais fcil e permite a escrita de scripts


portveis para diversas plataformas
SOBRE SHELL

Shell Script
Linha de Comando

Existem vrios ;pos de interface com o usurio, onde os exemplos


mais clssicos so as duas a seguir

Interface baseadas em Interface grca


caracteres textuais
Qual mais fcil
de operar?
Interface em Linha de Comando

A interface em linha de comando sempre foi cri;cada por sua


complexidade e alta curva de aprendizado

Contudo, indiscufvel que uma das mais exveis e poderosas


interfaces de usurios

Alm disso, normalmente so altamente programveis


O que Shell?

O obje;vo do shell traduzir os comandos dados por um usurio


em instrues para o sistema operacional


Acessando o Shell

O shell pode ser acessado de vrias maneiras


Quando voc loga por um terminal (control+alt+F1 no linux)
Por um emulador de terminal pela interface grca
Por uma sesso de rede (como telnet, ssh)
Entre outros

Exemplo
Comandos no Shell

Aps acessar o shell, ele mostrar um prompt que indica que est
pronto para receber comandos

Em resposta ao prompt, voc pode dar os comandos que desejar

O shell ento executa o comando e aps terminar mostra um novo


prompt

Comandos Disponveis

Quais comandos esto disponvel para uso?

Mas s isso?
Comandos Disponveis
Eu preciso conhecer
todos eles?
Quais comandos esto disponvel para uso?
Obtendo Ajuda

Obter o prposito do comando

apropos comando whaEs comando

Obtendo o manual do comando


man comando
SHELL SCRIPTING

Shell Script
Shell Scrip;ng

Quando se quer realizar alguma tarefa em um computador,


melhor u;lizar uma ferramenta que apropriada para a situao

Voc no ir usar editor de texto


para fazer o balano de uma empresa

Nem vai usar uma calculadora para


escrever uma proposta de negcio
Shell Scrip;ng

Shell scripts so usados frequentemente para tarefas


administra;vas do sistema

Podem ser usados combinando programas j existentes para


realizar uma tarefa especca

Depois de descobrir como fazer, pode-se agrupar os comandos em


um arquivo formando uma "receita" (script)

Assim, outros usurios podem fazer uso desse script como um


programa fechado, sem saber como funciona internamente
Linguagens de Script vs Linguagens Compiladas

A maioria dos programas de mdio e grande porte so escritos em


linguagens compilada (C, Pascal, C++, Java, C#); traduzidos do cdigo-
fonte para cdigo objeto que executado pelo computador
A vantagem que so ecientes
A desvantagem que trabalham no baixo nvel (como copiar
todos os arquivos de um diretrio para outro em C++?)

Linguagens de scripts normalmente so interpretadas; seu cdigo


lido, traduzido e ento executado
A vantagem que trabalham em um nvel de abstrao mais alto
A desvantagem que so mais inecientes que linguagens
compiladas
Por qu ento usar
shell scripts?
Por Qu Usar Shell Scripts?

O trade-o vale a pena


pode ser que demore uma hora para codicar um script simples
que demoraria algumas horas em outras linguagens (como C/C++)
e, mesmo mais lento, o script vai executar rpido o suciente de
forma que o desempenho no ser relevante
Por Qu Usar Shell Scripts?

Como o shell universal entre sistemas UNIX e a linguagem


padronizada pelo POSIX, shell scripts podem ser escritos uma vez
(se tomadas as devidas precaues) e usados numa variedade de
sistemas diferentes

Razes para usar shell scrip$ng


Simplicidade: uma linguagem de alto nvel que se pode
expressar operaes complexas de forma simples e clara
Portabilidade: Ao usar somente funcionalidades padronizadas
(POSIX), tm se grandes chances de funcionar em vrios sistemas
Fcil desenvolvimento: pode-se escrever scripts teis e
poderosos em pouqussimo tempo
UM SHELL SCRIPT SIMPLES

Shell Script
Um Shell Script Simples

Imagine que voc queira contar quantas pessoas esto atualmente


logadas no sistema atualmente

O comando who pode ser usado para listar os usurios logados

Em servidores mul;-usurios est lista pode ser to extensa que


a barra de rolagem iria correr antes de dar tempo de voc contar
Mesmo se no for esse o caso, seria muito chato ter que contar
manualmente toda vez
Um Shell Script Simples

O que est faltando aqui somente contar quantos usurios agora

Para isso, podemos u;lizar o comando wc (word count) que capaz


de contar linhas, palavras e caracteres; nesse caso queremos contar
apenas linhas (opo l)

O smbolo | (pipe) cria um tnel entre dois programas: a sada do


comando who vir entrada do comando wc
Automa;zando o Processo

Podemos automa;zar o processo seguindo os seguintes passos


1. Criar um arquivo contendo os comandos para realizao da
tarefa
2. Torn-lo executvel
3. Executar o script
Automa;zando o Processo

Quando o shell tenta executar o programa, ele pede ao kernel para


criar um novo processo e rodar o programa nesse processo
O kernel sabe como fazer isso para programas compilados, mas
no para scripts; o que resultar em uma falha

O shell percebe que o kernel no conseguiu executar porque "o


formato do arquivo no reconhecido" e ento considera que ento
s pode ser um script e o executa

Esse mecanismo ;mo quando se tm apenas um shell, mas


sistemas UNIX podem ter vrios; preciso ter uma forma melhor de
dizer como executar o script, at com outros outros interpretadores
Shebang

Isso feito atravs de uma primeira linha especial no arquivo de


script que comea com #! (shebang)

O kernel escaneia o resto da linha procurando um caminho para o


programa capaz de interpretar o script; alm de procurar uma nica
opo aps o comando
Ex.: #!/bin/csh f
Ex.: #!/usr/bin/awk f

Podemos reescrever nosso script


especicando o uso do interpretador
/bin/bash
EMENTA, AVALIAES, REGRAS

Shell Script
Ementa

Mdulo 1: U;lizao do sistema


Comandos bsicos
Processamento de arquivos
Sistema de arquivos
Controle de processos e escalonamento
Mdulo 2: Shell Scrip$ng
Redirecionamento
Parsing e expanso em linha de comando
Parmetros, variveis e funes
Casamento de padres
Comandos condicionais
Comandos de repe;o
Ementa

Mdulo 3: Shell Scrip$ng Avanado


Expresses regulares
Comando: sed
Comando: awk
Avaliaes

Prova 1 Prova Suplementar


Pontuao: 20pts Pontuao: 20pts
Data: 05/10/2016 Data: 30/11/2016
Prova 2 Prova Especial
Pontuao: 20pts Pontuao: 100pts
Data: 23/11/2016 Data: 14/12/2016

Doze (12) testes pr;cos


Pontuao: 60pts (5pts cada)
Data: toda semana antes das aulas
Regras

A presena obrigatria em 75% das aulas


Em todas as aulas haver chamada
No haver abono de faltas, salvo os casos previstos por lei

As pr;cas devem ser feitas de forma individual e manuscrita


Devem ser entregues na prxima aula aps o contedo dado
No sero aceitas pr;cas entregues com atraso

Cpias de qualquer natureza sero penalizadas com nota zero do


valor da pr;ca plagiada
Estudem!
BIBLIOGRAFIA

Shell Script
Bibliograa

Sobell M. Shols W.
A Prac;cal Guide to Linux The Linux Command Line:
Commands, Editors, and A complete introduc;on
Shell Programming 2a edio, 2012
3a edio, 2012
Bibliograa

Marsh N. Robbins A., Beebe N.


Introduc;on to the Classic Shell Scrip;ng
Command Line 1a edio, 2005
2a edio, 2010
ISSO TUDO PESSOAL!

Shell Script

Vous aimerez peut-être aussi