shell script

Upload: tazalexandria

Post on 20-Jul-2015

132 views

Category:

Documents


0 download

TRANSCRIPT

Shell ScriptVerso 1.0.0

SumrioI Sobre essa Apostila 2 4 9 1819 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 20 20 20 20 21 21 22 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 24 24 25 26 28 28 28 29 29 29 29 30 30

II Informaes Bsicas III GNU Free Documentation License IV Shell Script

1 O que Shell Script 2 Plano de ensino 2.1 Objetivo . . . 2.2 Pblico Alvo . 2.3 Pr-requisitos 2.4 Descrio . . 2.5 Metodologia . 2.6 Programa . . 2.7 Avaliao . . 2.8 Bibliograa . 3 Introduo 4 Expresses Regulares 4.1 Introduo . . . . . . . . . . . . 4.2 Comando grep . . . . . . . . . 4.3 Os Metacaracteres . . . . . . . 4.4 Metacaracteres quanticadores 4.5 Metacaracteres tipo ncora . . 4.5.1 Circunexo . . . . . . 4.5.2 Cifro - o m . . . . . 4.5.3 Borda - a limtrofe . . . 4.6 Outros metacaracteres . . . . 4.7 Explicando-os melhor . . . . . 4.7.1 Escape . . . . . . . . . 4.7.2 Ou . . . . . . . . . . . . 4.7.3 Grupo . . . . . . . . . . . . . . . . . .

1

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

4.7.4 Retrovisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5 Parte I 5.1 Dilogo . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 O ambiente Linux . . . . . . . . . . . . . . . . . . . . . . 5.3 O ambiente Shell . . . . . . . . . . . . . . . . . . . . . . 5.4 Uma rpida passagem nos principais sabores de Shell . 5.5 Explicando o funcionamento do Shell . . . . . . . . . . 5.6 Caracteres para remoo do signicado . . . . . . . . . 5.7 Caracteres de redirecionamento . . . . . . . . . . . . . 5.7.1 Caracteres de redirecionamento . . . . . . . . . 5.7.2 Redirecionamento da Sada Padro . . . . . . . 5.7.3 Redirecionamento da Sada de erro Padro . . . 5.7.4 Redirecionamento da Entrada Padro . . . . . . 5.8 Redirecionamento de Comandos . . . . . . . . . . . . . 5.9 Caracteres de Ambiente . . . . . . . . . . . . . . . . . . 6 Parte II 6.1 Dilogo . . . . . . . . . . . . . . . . . 6.2 Eu co com o grep, voc com a gripe 6.3 A famlia grep . . . . . . . . . . . . . . 6.4 Exemplos da famlia grep . . . . . . . 6.5 Vamos montar uma cdteca . . . . . . 6.6 Passando parmetros . . . . . . . . . 6.7 Macetes paramtricos . . . . . . . . . 7 Parte III 7.1 Trabalhando com cadeias . . . . . . . 7.2 O comando cut . . . . . . . . . . . . . 7.2.1 O comando cut a opo -c . . 7.2.2 O comando cut a opo -f . . . 7.3 O comando tr . . . . . . . . . . . . . . 7.3.1 Trocando caracteres com tr . . 7.3.2 Removendo caracteres com tr 7.3.3 Xpremendo com tr . . . . . . . 7.3.4 O Comando if . . . . . . . . . . 8 Parte IV 8.1 Dilogo . . . . . . . . . . . . . . . . 8.2 O comando Test . . . . . . . . . . . 8.3 Continuao do comando test . . . 8.4 Encolheram o comando condicional 8.5 E tome de test . . . . . . . . . . . . 8.6 Acaso casa com case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 33 33 34 34 35 37 38 38 38 39 40 41 42 46 46 46 47 48 49 49 51 57 57 57 57 58 60 60 61 62 63 67 67 68 70 73 75 76

2

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

9 Parte V 9.1 Comandos de Loop (ou lao) . . . . . . 9.2 O Comando for . . . . . . . . . . . . . . 9.2.1 Primeira sintaxe do comando for 9.2.2 Segunda sintaxe do comando for 9.2.3 Terceira sintaxe do comando for 10 Parte VI 10.1 Um pouco mais de for e matemtica 10.2 O Comando while . . . . . . . . . . 10.3 O Comando Until . . . . . . . . . . . 10.4 Atalhos no loop . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

79 79 79 79 84 86 88 88 89 93 95

11 Parte VII 99 11.1 O comando tput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 11.2 E agora podemos ler os dados na tela . . . . . . . . . . . . . . . . . . . . . . . . . . 101 11.3 Vamos ler arquivos? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 12 Parte VIII 110 12.1 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 12.2 O comando source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 13 Parte IX 13.1 Envenenando a escrita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2 Principais Variveis do Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3 Expanso de parmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Parte X 14.1 O comando eval . . 14.2 Sinais de Processos 14.3 Sinais assassinos . 14.4 O trap no atrapalha 14.5 O comando getopts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 . 120 . 122 . 125 . . . . . . . . . 130 130 133 134 134 138 142 142 143 144 146

15 Parte XI 15.1 Named Pipes . . . . . . . . . 15.2 Sincronizao de processos . 15.3 Bloqueio de arquivos . . . . . 15.4 Substituio de processos . .

3

Parte I

Sobre essa Apostila

4

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

ContedoO contedo dessa apostila fruto da compilao de diversos materiais livres publicados na internet, disponveis em diversos sites ou originalmente produzido no CDTC (http://www.cdtc.org.br.) O formato original deste material bem como sua atualizao est disponvel dentro da licena GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seo de mesmo nome, tendo inclusive uma verso traduzida (no ocial). A reviso e alterao vem sendo realizada pelo CDTC ([email protected]) desde outubro de 2006. Crticas e sugestes construtivas sero bem-vindas a qualquer hora.

AutoresA autoria deste de responsabilidade de Waldemar Silva Jnior ([email protected]). O texto original faz parte do projeto Centro de Difuso de Tecnologia e Conhecimento que vm sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informao) em conjunto com outros parceiros institucionais, e com as universidades federais brasileiras que tem produzido e utilizado Software Livre apoiando inclusive a comunidade Free Software junto a outras entidades no pas. Informaes adicionais podem ser obtidas atravs do email [email protected], ou da home page da entidade, atravs da URL http://www.cdtc.org.br.

GarantiasO material contido nesta apostila isento de garantias e o seu uso de inteira responsabilidade do usurio/leitor. Os autores, bem como o ITI e seus parceiros, no se responsabilizam direta ou indiretamente por qualquer prejuzo oriundo da utilizao do material aqui contido.

LicenaCopyright 2006, Instituto Nacional de Tecnologia da Informao ([email protected]) . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOSTILA. A copy of the license is included in the section entitled GNU Free Documentation License.

5

Parte II

Informaes Bsicas

6

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Sobre o CDTCObjetivo Geral O Projeto CDTC visa a promoo e o desenvolvimento de aes que incentivem a disseminao de solues que utilizem padres abertos e no proprietrios de tecnologia, em proveito do desenvolvimento social, cultural, poltico, tecnolgico e econmico da sociedade brasileira. Objetivo Especco Auxiliar o Governo Federal na implantao do plano nacional de software no-proprietrio e de cdigo fonte aberto, identicando e mobilizando grupos de formadores de opinio dentre os servidores pblicos e agentes polticos da Unio Federal, estimulando e incentivando o mercado nacional a adotar novos modelos de negcio da tecnologia da informao e de novos negcios de comunicao com base em software no-proprietrio e de cdigo fonte aberto, oferecendo treinamento especco para tcnicos, prossionais de suporte e funcionrios pblicos usurios, criando grupos de funcionrios pblicos que iro treinar outros funcionrios pblicos e atuar como incentivadores e defensores dos produtos de software no proprietrios e cdigo fonte aberto, oferecendo contedo tcnico on-line para servios de suporte, ferramentas para desenvolvimento de produtos de software no proprietrios e do seu cdigo fonte livre, articulando redes de terceiros (dentro e fora do governo) fornecedoras de educao, pesquisa, desenvolvimento e teste de produtos de software livre.

Guia do alunoNeste guia, voc ter reunidas uma srie de informaes importantes para que voc comece seu curso. So elas: Licenas para cpia de material disponvel; Os 10 mandamentos do aluno de Educao a Distncia; Como participar dos foruns e da wikipdia; Primeiros passos. muito importante que voc entre em contato com TODAS estas informaes, seguindo o roteiro acima.

LicenaCopyright 2006, Instituto Nacional de Tecnologia da Informao ([email protected]). 7

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

dada permisso para copiar, distribuir e/ou modicar este documento sob os termos da Licena de Documentao Livre GNU, Verso 1.1 ou qualquer verso posterior pblicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA APOSTILA. Uma cpia da licena est inclusa na seo entitulada "Licena de Documentao Livre GNU".

Os 10 mandamentos do aluno de educao online

1. Acesso Internet: ter endereo eletrnico, um provedor e um equipamento adequado pr-requisito para a participao nos cursos a distncia; 2. Habilidade e disposio para operar programas: ter conhecimentos bsicos de Informtica necessrio para poder executar as tarefas; 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distncia conta muitos pontos, pois ir colaborar para o processo ensino-aprendizagem pessoal, dos colegas e dos professores; 4. Comportamentos compatveis com a etiqueta: mostrar-se interessado em conhecer seus colegas de turma respeitando-os e se fazendo ser respeitado pelos mesmos; 5. Organizao pessoal: planejar e organizar tudo fundamental para facilitar a sua reviso e a sua recuperao de materiais; 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigaes e realiz-las em tempo real; 7. Curiosidade e abertura para inovaes: aceitar novas idias e inovar sempre; 8. Flexibilidade e adaptao: requisitos necessrio mudana tecnolgica, aprendizagens e descobertas; 9. Objetividade em sua comunicao: comunicar-se de forma clara, breve e transparente ponto - chave na comunicao pela Internet; 10. Responsabilidade: ser responsvel por seu prprio aprendizado. O ambiente virtual no controla a sua dedicao, mas reete os resultados do seu esforo e da sua colaborao.

Como participar dos fruns e WikipdiaVoc tem um problema e precisa de ajuda? Podemos te ajudar de 2 formas: A primeira o uso dos fruns de notcias e de dvidas gerais que se distinguem pelo uso: . O frum de notcias tem por objetivo disponibilizar um meio de acesso rpido a informaes que sejam pertinentes ao curso (avisos, notcias). As mensagens postadas nele so enviadas a 8

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

todos participantes. Assim, se o monitor ou algum outro participante tiver uma informao que interesse ao grupo, favor post-la aqui. Porm, se o que voc deseja resolver alguma dvida ou discutir algum tpico especco do curso. recomendado que voc faa uso do Frum de dvidas gerais que lhe d recursos mais efetivos para esta prtica. . O frum de dvidas gerais tem por objetivo disponibilizar um meio fcil, rpido e interativo para solucionar suas dvidas e trocar experincias. As mensagens postadas nele so enviadas a todos participantes do curso. Assim, ca muito mais fcil obter respostas, j que todos podem ajudar. Se voc receber uma mensagem com algum tpico que saiba responder, no se preocupe com a formalizao ou a gramtica. Responda! E no se esquea de que antes de abrir um novo tpico recomendvel ver se a sua pergunta j foi feita por outro participante. A segunda forma se d pelas Wikis: . Uma wiki uma pgina web que pode ser editada colaborativamente, ou seja, qualquer participante pode inserir, editar, apagar textos. As verses antigas vo sendo arquivadas e podem ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um timo suporte a processos de aprendizagem colaborativa. A maior wiki na web o site "Wikipdia", uma experincia grandiosa de construo de uma enciclopdia de forma colaborativa, por pessoas de todas as partes do mundo. Acesse-a em portugus pelos links: Pgina principal da Wiki - http://pt.wikipedia.org/wiki/ Agradecemos antecipadamente a sua colaborao com a aprendizagem do grupo!

Primeiros PassosPara uma melhor aprendizagem recomendvel que voc siga os seguintes passos: Ler o Plano de Ensino e entender a que seu curso se dispe a ensinar; Ler a Ambientao do Moodle para aprender a navegar neste ambiente e se utilizar das ferramentas bsicas do mesmo; Entrar nas lies seguindo a seqncia descrita no Plano de Ensino; Qualquer dvida, reporte ao Frum de Dvidas Gerais.

Perl do TutorSegue-se uma descrio do tutor ideal, baseada no feedback de alunos e de tutores. O tutor ideal um modelo de excelncia: consistente, justo e prossional nos respectivos valores e atitudes, incentiva mas honesto, imparcial, amvel, positivo, respeitador, aceita as idias dos estudantes, paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar. 9

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

A classicao por um tutor desta natureza proporciona o melhor feedback possvel, crucial, e, para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem. Este tutor ou instrutor: fornece explicaes claras acerca do que ele espera e do estilo de classicao que ir utilizar; gosta que lhe faam perguntas adicionais; identica as nossas falhas, mas corrige-as amavelmente, diz um estudante, e explica porque motivo a classicao foi ou no foi atribuda; tece comentrios completos e construtivos, mas de forma agradvel (em contraste com um reparo de um estudante: os comentrios deixam-nos com uma sensao de crtica, de ameaa e de nervossismo) d uma ajuda complementar para encorajar um estudante em diculdade; esclarece pontos que no foram entendidos, ou corretamente aprendidos anteriormente; ajuda o estudante a alcanar os seus objetivos; exvel quando necessrio; mostra um interesse genuno em motivar os alunos (mesmo os principiantes e, por isso, talvez numa fase menos interessante para o tutor); escreve todas as correes de forma legvel e com um nvel de pormenorizao adequado; acima de tudo, devolve os trabalhos rapidamente;

10

Parte III

GNU Free Documentation License

11

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

(Traduzido pelo Joo S. O. Bueno atravs do CIPSGA em 2001) Esta uma traduo no ocial da Licena de Documentao Livre GNU em Portugus Brasileiro. Ela no publicada pela Free Software Foundation, e no se aplica legalmente a distribuio de textos que usem a GFDL - apenas o texto original em Ingls da GNU FDL faz isso. Entretanto, ns esperamos que esta traduo ajude falantes de portugus a entenderem melhor a GFDL. This is an unofcial translation of the GNU General Documentation License into Brazilian Portuguese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GFDLonly the original English text of the GFDL does that. However, we hope that this translation will help Portuguese speakers understand the GFDL better. Licena de Documentao Livre GNU Verso 1.1, Maro de 2000 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA permitido a qualquer um copiar e distribuir cpias exatas deste documento de licena, mas no permitido alter-lo.

INTRODUOO propsito desta Licena deixar um manual, livro-texto ou outro documento escrito "livre"no sentido de liberdade: assegurar a qualquer um a efetiva liberdade de copi-lo ou redistribui-lo, com ou sem modicaes, comercialmente ou no. Secundariamente, esta Licena mantm para o autor e editor uma forma de ter crdito por seu trabalho, sem ser considerado responsvel pelas modicaes feitas por terceiros. Esta Licena um tipo de "copyleft"("direitos revertidos"), o que signica que derivaes do documento precisam ser livres no mesmo sentido. Ela complementa a GNU Licena Pblica Geral (GNU GPL), que um copyleft para software livre. Ns zemos esta Licena para que seja usada em manuais de software livre, por que software livre precisa de documentao livre: um programa livre deve ser acompanhado de manuais que provenham as mesmas liberdades que o software possui. Mas esta Licena no est restrita a manuais de software; ela pode ser usada para qualquer trabalho em texto, independentemente do assunto ou se ele publicado como um livro impresso. Ns recomendamos esta Licena principalmente para trabalhos cujo propsito seja de introduo ou referncia.

APLICABILIDADE E DEFINIESEsta Licena se aplica a qualquer manual ou outro texto que contenha uma nota colocada pelo detentor dos direitos autorais dizendo que ele pode ser distribudo sob os termos desta Licena. O "Documento"abaixo se refere a qualquer manual ou texto. Qualquer pessoa do pblico um

12

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

licenciado e referida como "voc". Uma "Verso Modicada"do Documento se refere a qualquer trabalho contendo o documento ou uma parte dele, quer copiada exatamente, quer com modicaes e/ou traduzida em outra lngua. Uma "Seo Secundria" um apndice ou uma seo inicial do Documento que trata exclusivamente da relao dos editores ou dos autores do Documento com o assunto geral do Documento (ou assuntos relacionados) e no contm nada que poderia ser includo diretamente nesse assunto geral (Por exemplo, se o Documento em parte um livro texto de matemtica, a Seo Secundria pode no explicar nada de matemtica). Essa relao poderia ser uma questo de ligao histrica com o assunto, ou matrias relacionadas, ou de posies legais, comerciais, loscas, ticas ou polticas relacionadas ao mesmo. As "Sees Invariantes"so certas Sees Secundrias cujos ttulos so designados, como sendo de Sees Invariantes, na nota que diz que o Documento publicado sob esta Licena. Os "Textos de Capa"so certos trechos curtos de texto que so listados, como Textos de Capa Frontal ou Textos da Quarta Capa, na nota que diz que o texto publicado sob esta Licena. Uma cpia "Transparente"do Documento signica uma cpia que pode ser lida automaticamente, representada num formato cuja especicao esteja disponvel ao pblico geral, cujos contedos possam ser vistos e editados diretamente e sem mecanismos especiais com editores de texto genricos ou (para imagens compostas de pixels) programas de pintura genricos ou (para desenhos) por algum editor de desenhos grandemente difundido, e que seja passvel de servir como entrada a formatadores de texto ou para traduo automtica para uma variedade de formatos que sirvam de entrada para formatadores de texto. Uma cpia feita em um formato de arquivo outrossim Transparente cuja constituio tenha sido projetada para atrapalhar ou desencorajar modicaes subsequentes pelos leitores no Transparente. Uma cpia que no "Transparente" chamada de "Opaca". Exemplos de formatos que podem ser usados para cpias Transparentes incluem ASCII simples sem marcaes, formato de entrada do Texinfo, formato de entrada do LaTex, SGML ou XML usando uma DTD disponibilizada publicamente, e HTML simples, compatvel com os padres, e projetado para ser modicado por pessoas. Formatos opacos incluem PostScript, PDF, formatos proprietrios que podem ser lidos e editados apenas com processadores de texto proprietrios, SGML ou XML para os quais a DTD e/ou ferramentas de processamento e edio no estejam disponveis para o pblico, e HTML gerado automaticamente por alguns editores de texto com nalidade apenas de sada. A "Pgina do Ttulo"signica, para um livro impresso, a pgina do ttulo propriamente dita, mais quaisquer pginas subsequentes quantas forem necessrias para conter, de forma legvel, o material que esta Licena requer que aparea na pgina do ttulo. Para trabalhos que no tenham uma pgina do ttulo, "Pgina do Ttulo"signica o texto prximo da apario mais proeminente do ttulo do trabalho, precedendo o incio do corpo do texto.

13

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

FAZENDO CPIAS EXATASVoc pode copiar e distribuir o Documento em qualquer meio, de forma comercial ou no comercial, desde que esta Licena, as notas de copyright, e a nota de licena dizendo que esta Licena se aplica ao documento estejam reproduzidas em todas as cpias, e que voc no acrescente nenhuma outra condio, quaisquer que sejam, s desta Licena. Voc no pode usar medidas tcnicas para obstruir ou controlar a leitura ou confeco de cpias subsequentes das cpias que voc zer ou distribuir. Entretanto, voc pode aceitar compensao em troca de cpias. Se voc distribuir uma quantidade grande o suciente de cpias, voc tambm precisa respeitar as condies da seo 3. Voc tambm pode emprestar cpias, sob as mesmas condies colocadas acima, e tambm pode exibir cpias publicamente.

FAZENDO CPIAS EM QUANTIDADESe voc publicar cpias do Documento em nmero maior que 100, e a nota de licena do Documento obrigar Textos de Capa, voc precisar incluir as cpias em capas que tragam, clara e legivelmente, todos esses Textos de Capa: Textos de Capa da Frente na capa da frente, e Textos da Quarta Capa na capa de trs. Ambas as capas tambm precisam identicar clara e legivelmente voc como o editor dessas cpias. A capa da frente precisa apresentar o ttulo completo com todas as palavras do ttulo igualmente proeminentes e visveis. Voc pode adicionar outros materiais s capas. Fazer cpias com modicaes limitadas s capas, tanto quanto estas preservem o ttulo do documento e satisfaam a essas condies, pode ser tratado como cpia exata em outros aspectos. Se os textos requeridos em qualquer das capas for muito volumoso para caber de forma legvel, voc deve colocar os primeiros (tantos quantos couberem de forma razovel) na capa verdadeira, e continuar os outros nas pginas adjacentes. Se voc publicar ou distribuir cpias Opacas do Documento em nmero maior que 100, voc precisa ou incluir uma cpia Transparente que possa ser lida automaticamente com cada cpia Opaca, ou informar, em ou com, cada cpia Opaca a localizao de uma cpia Transparente completa do Documento acessvel publicamente em uma rede de computadores, qual o pblico usurio de redes tenha acesso a download gratuito e annimo utilizando padres pblicos de protocolos de rede. Se voc utilizar o segundo mtodo, voc precisar tomar cuidados razoavelmente prudentes, quando iniciar a distribuio de cpias Opacas em quantidade, para assegurar que esta cpia Transparente vai permanecer acessvel desta forma na localizao especicada por pelo menos um ano depois da ltima vez em que voc distribuir uma cpia Opaca (diretamente ou atravs de seus agentes ou distribuidores) daquela edio para o pblico. pedido, mas no obrigatrio, que voc contate os autores do Documento bem antes de redistribuir qualquer grande nmero de cpias, para lhes dar uma oportunidade de prover voc com uma verso atualizada do Documento.

14

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

MODIFICAESVoc pode copiar e distribuir uma Verso Modicada do Documento sob as condies das sees 2 e 3 acima, desde que voc publique a Verso Modicada estritamente sob esta Licena, com a Verso Modicada tomando o papel do Documento, de forma a licenciar a distribuio e modicao da Verso Modicada para quem quer que possua uma cpia da mesma. Alm disso, voc precisa fazer o seguinte na verso modicada: A. Usar na Pgina de Ttulo (e nas capas, se houver alguma) um ttulo distinto daquele do Documento, e daqueles de verses anteriores (que deveriam, se houvesse algum, estarem listados na seo "Histrico do Documento"). Voc pode usar o mesmo ttulo de uma verso anterior se o editor original daquela verso lhe der permisso; B. Listar na Pgina de Ttulo, como autores, uma ou mais das pessoas ou entidades responsveis pela autoria das modicaes na Verso Modicada, conjuntamente com pelo menos cinco dos autores principais do Documento (todos os seus autores principais, se ele tiver menos que cinco); C. Colocar na Pgina de Ttulo o nome do editor da Verso Modicada, como o editor; D. Preservar todas as notas de copyright do Documento; E. Adicionar uma nota de copyright apropriada para suas prprias modicaes adjacente s outras notas de copyright; F. Incluir, imediatamente depois das notas de copyright, uma nota de licena dando ao pblico o direito de usar a Verso Modicada sob os termos desta Licena, na forma mostrada no tpico abaixo; G. Preservar nessa nota de licena as listas completas das Sees Invariantes e os Textos de Capa requeridos dados na nota de licena do Documento; H. Incluir uma cpia inalterada desta Licena; I. Preservar a seo entitulada "Histrico", e seu ttulo, e adicionar mesma um item dizendo pelo menos o ttulo, ano, novos autores e editor da Verso Modicada como dados na Pgina de Ttulo. Se no houver uma sesso denominada "Histrico"no Documento, criar uma dizendo o ttulo, ano, autores, e editor do Documento como dados em sua Pgina de Ttulo, ento adicionar um item descrevendo a Verso Modicada, tal como descrito na sentena anterior; J. Preservar o endereo de rede, se algum, dado no Documento para acesso pblico a uma cpia Transparente do Documento, e da mesma forma, as localizaes de rede dadas no Documento para as verses anteriores em que ele foi baseado. Elas podem ser colocadas na seo "Histrico". Voc pode omitir uma localizao na rede para um trabalho que tenha sido publicado pelo menos quatro anos antes do Documento, ou se o editor original da verso a que ela se rera der sua permisso; K. Em qualquer seo entitulada "Agradecimentos"ou "Dedicatrias", preservar o ttulo da 15

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

seo e preservar a seo em toda substncia e m de cada um dos agradecimentos de contribuidores e/ou dedicatrias dados; L. Preservar todas as Sees Invariantes do Documento, inalteradas em seus textos ou em seus ttulos. Nmeros de seo ou equivalentes no so considerados parte dos ttulos da seo; M. Apagar qualquer seo entitulada "Endossos". Tal sesso no pode ser includa na Verso Modicada; N. No reentitular qualquer seo existente com o ttulo "Endossos"ou com qualquer outro ttulo dado a uma Seo Invariante. Se a Verso Modicada incluir novas sees iniciais ou apndices que se qualiquem como Sees Secundrias e no contenham nenhum material copiado do Documento, voc pode optar por designar alguma ou todas aquelas sees como invariantes. Para fazer isso, adicione seus ttulos lista de Sees Invariantes na nota de licena da Verso Modicada. Esses ttulos precisam ser diferentes de qualquer outro ttulo de seo. Voc pode adicionar uma seo entitulada "Endossos", desde que ela no contenha qualquer coisa alm de endossos da sua Verso Modicada por vrias pessoas ou entidades - por exemplo, declaraes de revisores ou de que o texto foi aprovado por uma organizao como a denio ocial de um padro. Voc pode adicionar uma passagem de at cinco palavras como um Texto de Capa da Frente , e uma passagem de at 25 palavras como um Texto de Quarta Capa, ao nal da lista de Textos de Capa na Verso Modicada. Somente uma passagem de Texto da Capa da Frente e uma de Texto da Quarta Capa podem ser adicionados por (ou por acordos feitos por) qualquer entidade. Se o Documento j incluir um texto de capa para a mesma capa, adicionado previamente por voc ou por acordo feito com alguma entidade para a qual voc esteja agindo, voc no pode adicionar um outro; mas voc pode trocar o antigo, com permisso explcita do editor anterior que adicionou a passagem antiga. O(s) autor(es) e editor(es) do Documento no do permisso por esta Licena para que seus nomes sejam usados para publicidade ou para assegurar ou implicar endossamento de qualquer Verso Modicada.

COMBINANDO DOCUMENTOSVoc pode combinar o Documento com outros documentos publicados sob esta Licena, sob os termos denidos na seo 4 acima para verses modicadas, desde que voc inclua na combinao todas as Sees Invariantes de todos os documentos originais, sem modicaes, e liste todas elas como Sees Invariantes de seu trabalho combinado em sua nota de licena. O trabalho combinado precisa conter apenas uma cpia desta Licena, e Sees Invariantes Idnticas com multiplas ocorrncias podem ser substitudas por apenas uma cpia. Se houver mltiplas Sees Invariantes com o mesmo nome mas com contedos distintos, faa o ttulo de 16

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

cada seo nico adicionando ao nal do mesmo, em parnteses, o nome do autor ou editor origianl daquela seo, se for conhecido, ou um nmero que seja nico. Faa o mesmo ajuste nos ttulos de seo na lista de Sees Invariantes nota de licena do trabalho combinado. Na combinao, voc precisa combinar quaisquer sees entituladas "Histrico"dos diversos documentos originais, formando uma seo entitulada "Histrico"; da mesma forma combine quaisquer sees entituladas "Agradecimentos", ou "Dedicatrias". Voc precisa apagar todas as sees entituladas como "Endosso".

COLETNEAS DE DOCUMENTOSVoc pode fazer uma coletnea consitindo do Documento e outros documentos publicados sob esta Licena, e substituir as cpias individuais desta Licena nos vrios documentos com uma nica cpia incluida na coletnea, desde que voc siga as regras desta Licena para cpia exata de cada um dos Documentos em todos os outros aspectos. Voc pode extrair um nico documento de tal coletnea, e distribu-lo individualmente sob esta Licena, desde que voc insira uma cpia desta Licena no documento extrado, e siga esta Licena em todos os outros aspectos relacionados cpia exata daquele documento.

AGREGAO COM TRABALHOS INDEPENDENTESUma compilao do Documento ou derivados dele com outros trabalhos ou documentos separados e independentes, em um volume ou mdia de distribuio, no conta como uma Verso Modicada do Documento, desde que nenhum copyright de compilao seja reclamado pela compilao. Tal compilao chamada um "agregado", e esta Licena no se aplica aos outros trabalhos auto-contidos compilados junto com o Documento, s por conta de terem sido assim compilados, e eles no so trabalhos derivados do Documento. Se o requerido para o Texto de Capa na seo 3 for aplicvel a essas cpias do Documento, ento, se o Documento constituir menos de um quarto de todo o agregado, os Textos de Capa do Documento podem ser colocados em capas adjacentes ao Documento dentro do agregado. Seno eles precisaro aparecer nas capas de todo o agregado.

TRADUOTraduo considerada como um tipo de modicao, ento voc pode distribuir tradues do Documento sob os termos da seo 4. A substituio de Sees Invariantes por tradues requer uma permisso especial dos detentores do copyright das mesmas, mas voc pode incluir tradues de algumas ou de todas as Sees Invariantes em adio s verses orignais dessas Sees Invariantes. Voc pode incluir uma traduo desta Licena desde que voc tambm inclua a verso original em Ingls desta Licena. No caso de discordncia entre a traduo e a

17

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

verso original em Ingls desta Licena, a verso original em Ingls prevalecer.

TRMINOVoc no pode copiar, modicar, sublicenciar, ou distribuir o Documento exceto como expressamente especicado sob esta Licena. Qualquer outra tentativa de copiar, modicar, sublicenciar, ou distribuir o Documento nula, e resultar automaticamente no trmino de seus direitos sob esta Licena. Entretanto, terceiros que tenham recebido cpias, ou direitos de voc sob esta Licena no tero suas licenas terminadas, tanto quanto esses terceiros permaneam em total acordo com esta Licena.

REVISES FUTURAS DESTA LICENAA Free Software Foundation pode publicar novas verses revisadas da Licena de Documentao Livre GNU de tempos em tempos. Tais novas verses sero similares em espirito verso presente, mas podem diferir em detalhes ao abordarem novos porblemas e preocupaes. Veja http://www.gnu.org/copyleft/. A cada verso da Licena dado um nmero de verso distinto. Se o Documento especicar que uma verso particular desta Licena "ou qualquer verso posterior"se aplica ao mesmo, voc tem a opo de seguir os termos e condies daquela verso especca, ou de qualquer verso posterior que tenha sido publicada (no como rascunho) pela Free Software Foundation. Se o Documento no especicar um nmero de Verso desta Licena, voc pode escolher qualquer verso j publicada (no como rascunho) pela Free Software Foundation. ADENDO: Como usar esta Licena para seus documentos Para usar esta Licena num documento que voc escreveu, inclua uma cpia desta Licena no documento e ponha as seguintes notas de copyright e licenas logo aps a pgina de ttulo: Copyright (c) ANO SEU NOME. dada permisso para copiar, distribuir e/ou modicar este documento sob os termos da Licena de Documentao Livre GNU, Verso 1.1 ou qualquer verso posterior publicada pela Free Software Foundation; com as Sees Invariantes sendo LISTE SEUS TTULOS, com os Textos da Capa da Frente sendo LISTE, e com os Textos da Quarta-Capa sendo LISTE. Uma cpia da licena est inclusa na seo entitulada "Licena de Documentao Livre GNU". Se voc no tiver nenhuma Seo Invariante, escreva "sem Sees Invariantes"ao invs de dizer quais so invariantes. Se voc no tiver Textos de Capa da Frente, escreva "sem Textos de Capa da Frente"ao invs de "com os Textos de Capa da Frente sendo LISTE"; o mesmo para os Textos da Quarta Capa. Se o seu documento contiver exemplos no triviais de cdigo de programas, ns recomendamos a publicao desses exemplos em paralelo sob a sua escolha de licena de software livre,

18

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

tal como a GNU General Public License, para permitir o seu uso em software livre.

19

Parte IV

Shell Script

20

Captulo 1

O que Shell ScriptShell o nome que se d linha de comando em modo texto dos sistemas operacionais Linux e UNIX. E, portanto, os shell scripts so um meio de se juntar uma poro de comandos shell em um s arquivo para serem executados quantas vezes forem necessrias. Os arquivos de lote (bach) do windows so similares, apenas com uma signicativa diferena, j que a linha de comando de sistemas Unix e Linux mais poderosa.

21

Captulo 2

Plano de ensino2.1 Objetivoverb Capacitar o usurio para o aprendizado bsico dos comandos do Linux.

2.2 Pblico AlvoUsurios que tenham perl administrativo, desenvolvedores, programadores e interessados em geral.

2.3 Pr-requisitosOs usurios devero ser, necessariamente, funcionrios pblicos e ter conhecimentos bsicos para operar um computador com uma distribuio baseada no Debian instalada.

2.4 DescrioO curso ser realizado na modalidade Educao a Distncia e utilizar a Plataforma Moodle como ferramenta de aprendizagem. O curso tem durao de uma semana e possui um conjunto de atividades (lies, fruns, glossrios, questionrios e outros) que devero ser executadas de acordo com as instrues fornecidas. O material didtico est disponvel on-line de acordo com as datas pr-estabelecidas em cada tpico.

2.5 MetodologiaO curso est dividido da seguinte maneira: Durao 1 semana 2 semana Descrio do Mdulo Expresses Regulares Ambiente Shell e Comandos de manipulao de caracteres

Todo o material est no formato de lies, e estar disponvel ao longo do curso. Ao nal de cada semana do curso ser disponibilizada a prova referente ao mdulo estudado anteriormente 22

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

que tambm conter perguntas sobre os textos indicados. Utilize o material de cada semana e os exemplos disponibilizados para se preparar para prova.

As lies contm o contedo principal. Elas podero ser acessadas quantas vezes forem necessrias, desde que estejam dentro da semana programada. Ao nal de uma lio, voc receber uma nota de acordo com o seu desempenho. Responda com ateno s perguntas de cada lio, pois elas sero consideradas na sua nota nal. Caso sua nota numa determinada lio seja menor que 6.0, sugerimos que voc faa novamente esta lio. Ao nal do curso ser disponibilizada a avaliao referente ao curso. Tanto as notas das lies quanto a da avaliao sero consideradas para a nota nal. Todos os mdulos caro visveis para que possam ser consultados durante a avaliao nal. Aconselhamos a leitura da "Ambientao do Moodle"para que voc conhea a plataforma de Ensino a Distncia, evitando diculdades advindas do "desconhecimento"sobre a mesma. Os instrutores estaro a sua disposio ao longo de todo curso. Qualquer dvida dever ser enviada ao frum. Diariamente os monitores daro respostas e esclarecimentos.

2.6 ProgramaO curso de CVS oferecer o seguinte contedo: Expresses regulares; Ambiente Shell, Linhas de comando, Caracteres de remoo, redirecionamento e ambiente; A famlia grep, Passagens de parmetros; Comando cut, Comando tr, Usando separadores, Comando condicionais; O comando eval, O trap no atrapalha, O comando getopts; Comando test, Simplicaes dos comandos condicionais; Comandos de Loop; Um pouco mais de Loops e matemtica; O comando tput; Funes; Variveis do Shell; Named Pipes.

2.7 AvaliaoToda a avaliao ser feita on-line. Aspectos a serem considerados na avaliao: Expresses Regulares; 23

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Ambiente Shell; Comandos de manipulao de caracteres; Capacidade de pesquisa e abordagem criativa na soluo dos problemas apresentados. Instrumentos de avaliao: Participao ativa nas atividades programadas. Avaliao ao nal do curso. O participante far vrias avaliaes referente ao contedo do curso. Para a aprovao e obteno do certicado o participante dever obter nota nal maior ou igual a 6.0 de acordo com a frmula abaixo: Nota Final = ((ML x 7) + (AF x 3)) / 10 = Mdia aritmtica das lies AF = Avaliaes

2.8 Bibliograa Site http://aurelio.net/shell/ Site: http://www.ic.unicamp.br/ celio/mc514/bash/bash.html

24

Captulo 3

IntroduoSejam bem vindos ao curso de Bash Bsico! O curso tem durao de apenas duas semanas e consiste na leitura de alguns livros e lies e, ao trmino delas, realizar algumas avaliaes. Todas essas atividades valem pontuao. Para um bom aproveitamento do curso importante que haja entrosamento com os materiais, os fruns e os tutores. Seja participativo, questione e tire suas dvidas. O material didtico do prof. Jlio Neves e de fato no h nada melhor que aprender brincando. interessante que j esteja instalado o Linux e que deixe o terminal sempre aberto. Assim facilita acompanhar o raciocnio da leitura. Qualquer dvida quanto ao comando pode ser resolvida digitando no Shell: $ man nomedocomando ou ainda discutindo concosco no frum. Assim aprendemos juntos a funcionalidade de cada um. Bom trabalho!

25

Captulo 4

Expresses Regulares4.1 IntroduoUma Expresso Regular (ER) um mtodo formal de se especicar um padro de texto. uma composio de smbolos, caracteres com funes especiais, chamados "metacaracteres"que, agrupados entre si e com caracteres literais, formam uma seqncia, uma expresso. Essa expresso testada em textos e retorna sucesso caso este texto obedea exatamente a todas as suas condies. Diz-se que o texto "casou"com a expresso. A ERs servem para se dizer algo abrangente de forma especca. Denido o padro de busca, tem-se uma lista (nita ou no) de possibilidades de casamento. Em um exemplo rpido, [rgp]ato pode casar "rato", "gato"e "pato"]. As ERs so teis para buscar ou validar textos variveis como: data; horrio; nmero IP; endereo de e-mail; endereo de Internet; declarao de uma funo (); dados na coluna N de um texto; dados que esto entre ; nmero de telefone, RG, CPF, carto de crdito. Vrios editores de texto e linguagens de programao tm suporte a ERs, ento, o tempo investido em seu aprendizado recompensado pela larga variedade de aplicativos onde ele pode ser praticado.

4.2 Comando grepPara no precisar listar todo o contedo de um arquivo por completo para apenas saber os dados do usurio "root", pode-se usar o grep para pesquisar e retornar somente a linha dele. O 26

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

comando grep tem o seguinte formato: grep palavra arquivo Vamos utilizar como exemplo o arquivo /etc/passwd, que a base de usurios de um sistema UNIX/Linux. Vale a pena, antes, vericar como que se constitui esse arquivo dando o comando: $cat /etc/passwd Observa-se que sero obtidas vrias linhas, onde cada um se refere a um usurio diferente. E cada linha possui o seguinte formato: login : senha : UID : GID : Nome completo : Diretrio $HOME : shellz Voltando ao grep. Para "pescar"somente a linha do usurio root faremos: $ grep root /etc/passwd root:x:0:0:root:/root:/bin/bash

4.3 Os MetacaracteresCada metacaracteres uma ferramenta que tem uma funo especca. Servem para dar mais poder s pesquisas, informando padres e posies impossveis de se especicar usando somente caracteres normais. Os metacaracteres so pequenos pedacinhos simples, que agrupados entre si ou com caracteres normais formam algo maior, uma expresso. O importante compreender bem cada um individualmente, e depois apenas l-los em seqncia.

Metacaracteres RepresentantesSo aqueles cuja funo representar um ou mais caracteres. Ponto . Lista [...] Lista Negada [^...]O ponto

O ponto nosso curinga solitrio, que est sempre procura de um casamento no importa com quem seja. Pode ser um nmero, uma letra, um TAB, um , o que vier ele traa, pois o ponto casa qualquer coisa. Exemplos: "n.o"casaria: no, nao, ... 27

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

".eclado"casaria: teclado, Teclado, ... "12.45"casaria: 12:45, 12 45, 12.45, ...A lista

Bem mais exigente que o ponto, a lista no casa com qualquer um. Ela sabe exatamente o que quer, e nada diferente daquilo, a lista casa com quem ela conhece. Toda "lista"(os colchetes e seu contedo) vale para apenas uma posio, um caractere, por maior que seja. Exemplos: n[a]o no, nao, ... [Tt]eclado teclado, Teclado, .... 12[:. ]45 12:45, 12 45, 12.45, ... A lista de certa forma exigente. Sendo assim: Evite Prera: [0123456789] [0-9] [0-9][0-9]:[0-9][0-9] [012][0-9]:[0-5][0-9] [A-z] [A-Za-z]Lista negada

A lista negada exatamente igual lista, podendo ter caracteres literais, intervalos e classes POSIX. Tudo o que se aplica a lista normal, se aplica negada tambm. A nica diferena que ela possui lgica inversa, ou seja, ela casar com qualquer coisa, fora os componentes listados. Observe que a diferena em sua notao que o primeiro caractere da lista um circunexo, ele indica que esta uma lista negada. Ento, se [0-9] so nmeros, [^\0-9] qualquer coisa fora nmeros. Pode ser letras, smbolos, espao em branco, qualquer coisa menos nmeros. Porm, ao iniciar o circunexo (^) fora das chaves possui outro signicado diferente: simboliza o incio de uma linha. Mas tem de ser alguma coisa. S porque ela uma lista negada isso no signica que ela pode casar "nada". Exemplos: [A-Z^] casa maisculas e o circunexo e [^A-Z^]casa tudo fora isso. Como mandam as regras da boa escrita, sempre aps caracteres de pontuao como a vrgula ou o ponto, devemos ter um espao em branco os separando do resto do texto. Ento, vamos procurar por qualquer coisa que no o espao aps a pontuao: [:;,.!?][^ ]

4.4 Metacaracteres quanticadoresOs quanticadores servem para indicar o nmero de repeties permitidas para a entidade imediatamente anterior. Essa entidade pode ser um caractere ou metacaractere. Em outras palavras, eles dizem a quantidade de repeties que o tomo anterior pode ter, quantas vezes ele pode aparecer. So eles: opcional ? asterisco * mais + 28

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

chaves Opcional til para procurar palavras no singular e plural e pode ser tornar opcionais caracteres e metacaracteres. Exemplos: Expresso Casa com Ondas? Onda Ondas Senadora? Senador Senadora [BFM]?ala ala Bala Fala Mala Asterisco Pode aparecer em qualquer quantidade. O curinga .* o tudo e o nada, qualquer coisa. Exemplos: 6*0 0, 60, 660, 6660, ..., 666666666660, ... bi*p bp, bip, biip, biiip, biiiip... b[ip]* b, bi, bip, biipp, bpipipi, biiiiip ... Mais Tem funcionamento idntico ao do asterisco, tudo o que vale para um, se aplica ao outro. A nica diferena que o mais (+) no opcional, ento a entidade anterior deve casar pelo menos uma vez, e pode ter vrias. Sua utilidade quando queremos no mnimo uma repetio. Exemplos: 6+0 60, 660, 6660, ..., 666666660, ... bi+p bip, biip, biiip, biiiip... b[ip]+ bi, bip, biipp, bpipipi, biiiiip, bppp, ... Chaves As chaves so a soluo para uma quanticao mais controlada, onde se pode especicar exatamente quantas repeties se quer da entidade anterior. Colocando um nmero entre chaves " ", indica-se uma quantidade de repeties do caractere (ou metacaractere) anterior. As chaves so precisas podendo especicar um nmero exato, um mnimo, um mximo, ou uma faixa numrica. Elas, inclusive, simulam o *, + e ?. Exemplos: n,m signica de n at m vezes, assim algo como 61,4 casa 6, 66, 666 e 6666. S, nada mais que isso. 0,1 zero ou 1 (igual ao opcional) 0, zero ou mais (igual ao asterisco) 1, um ou mais (igual ao mais) 3 exatamente

29

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

4.5 Metacaracteres tipo ncoraSo aqueles que no casam caracteres ou denem quantidades, ao invs disso eles marcam uma posio especca na linha. Assim, eles no podem ser quanticados, ento o mais, o asterisco e as chaves no tm inuncia sobre ncoras. So eles:

circunflexo - ^ cifro - \$ borda - /b

Explicando cada metacaractere

4.5.1

Circunexo

Este metacaractere (do tipo de posicionamento por representar uma posio especca da linha) simboliza o incio de uma linha. tambm o marcador de lista negada, mas apenas dentro da lista (e no comeo), fora dela ele a ncora que marca o incio de uma linha, veja:

^[0-9]signica que casa com uma linha comeando com qualquer algarismo. O inverso disso seria:

^[^0-9]

4.5.2

Cifro - o m

Este similar e complementar ao circunexo, pois representa o m de uma linha e s vlido no nal de uma expresso regular. Quando demos o comando: $ grep bash$ /etc/passwd signica que procuramos pela palavra "bash"no nal da linha, ou ainda, a palavra "bash"seguida de um m de linha. Esse cifro o mesmo caractere que utilizado para identicar as variveis do shell, como $PWD e $HOME. Para evitar possveis problemas com a expanso de variveis, preciso "proteger"a expresso regular passada ao grep. A proteo feita colocando-se a ER entre aspas simples fazendo: $ grep bash$ /etc/passwd Veja outros exemplos: 30

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

.

4.5.3

Borda - a limtrofe

A borda marca os limites de uma palavra, ou seja, onde ela comea e/ou termina. muito til para casar palavras exatas, e no partes de palavras. Palavra aqui um conceito que engloba apenas letras, nmeros e o sublinhado:

[A-Za-z0-9_]Veja os exemplos: Veja como se comportam as ERs nas palavras dia, diafragma, radial, melodia e bom-dia!: dia - - - dia, diafragma, radial, melodia, bom-dia! \bdia - - - dia, diafragma, bom-dia! dia\b - - - dia, melodia, bom-dia! \bdia\b dia, bom-dia!

4.6

Outros metacaracteres

Vamos ver outros metacaracteres, que tm funes especcas e no relacionadas entre si, portanto no podem ser agrupados em outra classe fora a tradicional "outros". Mas ateno, isso no quer dizer que eles so inferiores, pelo contrrio, o poder das ERs multiplicado com seu uso e um mundo de possibilidades novas se abre a sua frente. So eles: escape \ ou | grupo () retrovisor /n

4.7 Explicando-os melhor4.7.1 EscapeTemos duas formas de casar um metacaractere dentro de uma ER: Usando Listas: Lua[*] casa com Lua* 31

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

"Escapando"o Caractere: Lua\* casa com Lua* Isto , a contrabarra (\) "escapa"qualquer metacaractere, tirando todos os seus poderes. O escape to poderoso que pode escapar a si prprio! O \ casa uma barra invertida \ literal. Ento, agora que sabemos muito sobre ERs, que tal uma expresso para casar um nmero de RG? Lembre-se que ele tem o formato n.nnn.nnn-n, fcil! [0-9]\.[0-9]{3}\.[0-9]{3}-[0-9] O \* = [*] = asterisco literal Ironia -> O escape escapa o escape, escapando-se a si prprio, simultaneamente.

4.7.2 OuPara procurar por uma coisa ou outra, deve-se usar o pipe "|" e delimitar as opes com os parnteses "( )". muito comum em uma posio especca de nossa Expresso Regular (ER) termos mais de uma alternativa possvel, por exemplo, ao casar um cumprimento amistoso, podemos ter uma terminao diferente para cada parte do dia: boa-tarde|boa-noite O ou serve para esses casos em que precisamos dessas alternativas. Essa ER se l: "ou boa-tarde, ou boa-noite", ou seja "ou isso ou aquilo". Lembre que a lista tambm uma espcie de ou (|), mas apenas para uma letra, ento:

[gpr]ato o mesmo que gato|pato|ratoSo similares, embora nesse caso em que apenas uma letra muda entre as alternativas, a lista a melhor escolha. Em outro exemplo, o ou til tambm para casarmos um endereo de Internet, que pode ser uma pgina, ou um stio FTP http://|ftp://

4.7.3 GrupoAssim como artistas famosos e personalidades que conseguem arrastar multides, o grupo tem o dom de juntar vrios tipos de sujeitos em um mesmo local. Dentro de um grupo podemos ter um ou mais caracteres, metacarateres e inclusive outros grupos. Como em uma expresso matemtica, os parnteses denem um grupo e seu contedo pode ser visto como um bloco na expresso. Todos os metacaracteres quanticadores que vimos anteriormente podem ter seu poder ampliado pelo grupo, pois ele lhes d mais abrangncia. E o ou, pelo contrrio, tem sua abrangncia limitada pelo grupo, e pode parecer estranho, mas essa limitao que lhe d mais poder. Em um exemplo simples, (ai)+ agrupa a palavra ai e esse grupo est quanticado pelo mais (+). Isso quer dizer que casamos vrias repeties da palavra, como ai, aiai, aiaiai, ... E assim podemos agrupar tudo o 32

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

que quisermos, literais e metacaracteres, e quantic-los: (ha!)+ ha!, ha!ha!, ha!ha!ha!, ... (\.[0-9]){3} .0.6.2, .2.8.9, .6.6.6, ... (www )?zz\.com www.zz.com, zz.com E em especial, nosso amigo ou ganha limites ou seu poder cresce: boa-(tarde|noite) boa-tarde, boa-noite #(|n\.|nm) 6 # 6, n. 6, nm 6 (in|con)?certo incerto, concerto, certo Podemos criar subgrupos tambm, ento imagine que voc esteja procurando o nome de um supermercado em uma listagem e no sabe se este um mercado, supermercado ou um hipermercado. (super|hiper)mercado Consegue casar as duas ltimas possibilidades, mas note que nas alternativas super e hiper temos um trecho per comum aos dois, ento podamos "alternativizar"apenas as diferenas su e hi: (su|hi)permercado Precisamos tambm casar apenas o mercado sem os aumentativos, ento temos de agruplos e torn-los opcionais: ((su|hi)per)?mercado Ei! E se tivesse minimercado tambm? (mini|(su|hi)per)?mercado

4.7.4 Retrovisor(quero)- \1 Mas esse \1 no o tal do escape? Pois , lembra que o escape (\) servia para tirar os poderes do metacaractere seguinte. Ento, a essa denio agora inclumos: a no ser que este prximo caractere seja um nmero de 1 a 9, ento estamos lidando com um retrovisor. Notou o detalhe? Podemos ter no mximo 9 retrovisores por ER, ento \10 o retrovisor nmero 1 seguido de um zero. O verdadeiro poder do retrovisor quando no sabemos exatamente qual texto o grupo casar. Vamos estender o quero do exemplo anterior para "qualquer palavra": http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/custom-guide/rescuemode.html ([A33

CDTC Za-z]+)-\1

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Viu o poder dessa ER? Ela casa palavras repetidas separadas por um trao, como o prprio quero-quero, e mais: bate-bate, come-come, etc. Mas, e se tornssemos o trao opcional?

([A-Za-z]+)-?\1Com uma modicao pequena, fazemos um minicorretor ortogrco para procurar por palavras repetidas como estas em um texto:

([A-Za-z]+) \1Mas, lembre-se que procuramos por palavras inteiras e no apenas trechos delas, ento precisamos usar as bordas para completar nossa ER:

\b([A-Za-z]+) \1\bhttp://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/custom-guide/rescuemode.html Como j dito, podemos usar no mximo nove retrovisores. Vamos ver uns exemplos com mais de um de nossos amigos novos: (lenta)(mente) \2 \1 lentamente mente lenta ((band)eira)nte \1 \2a bandeirante bandeira banda in(d)ol(or) sem \1 \2 indolor sem dor ((((a)b)c)d)-1 = \1, \2, \3, \4 abcd-1 = abcd,abc,ab,a Repare que numeram-se retrovisores contando os grupos da esquerda para a direita. Ao usar um (grupo) qualquer, voc ganha um brinde, e muitas vezes nem sabe. O brinde o trecho de texto casado pela ER que est no grupo, que ca guardado em um cantinho especial e pode ser usado em outras partes da mesma ER. Ento, o retrovisor \1 uma referncia ao texto casado do primeiro grupo, nesse caso quero, cando, no m das contas, a expresso que queramos. O retrovisor pode ser lembrado tambm como um link ou um ladro, pois copia o texto do grupo. Como o nome diz, retrovisor porque ele "olha pra trs", para buscar um trecho j casado. Isso muito til para casar trechos repetidos em uma mesma linha. Veja bem, o texto, e no a ER. Como exemplo, em um texto, procuramos quero-quero. Podemos procurar literalmente por queroquero, mas assim no tem graa, vamos usar o grupo e o retrovisor para fazer isso.

34

Captulo 5

Parte I5.1 DilogoDilogo entre um Linuxer e um empurrador de mouse: - Quem o Bash? - O Bash o lho mais novo da famlia Shell. - P cara! Ests a m de me deixar maluco? Eu tinha uma dvida e voc me deixa com duas! No, 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 no tem domnio nenhum sobre o que est acontecendo no seu computador. Mas deixa isso pr l, vou te explicar o que Shell e os componentes de sua famlia e ao nal da explanao voc dir: "Meu Deus do Shell! Porque eu no optei pelo Linux antes?".

5.2 O ambiente LinuxPara voc entender o que e como funciona o Shell, primeiro ser mostrado como funciona o ambiente em camadas do Linux. D uma olhada no grco abaixo:

35

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

. Neste grco d para ver que a camada de hardware a mais profunda e formada pelos componentes fsicos do seu computador. Envolvendo esta, vem a camada do kernel que o cerne do Linux, seu ncleo, quem coloca o hardware para funcionar fazendo seu gerenciamento e controle. Os programas e comandos que envolvem o kernel, dele se utilizam para realizar as tarefas aplicativas para que foram desenvolvidos. Fechando tudo isso vem o Shell que leva este nome porque em ingls, Shell signica concha, carapaa, isto , ca entre o usurio e o sistema operacional, de forma que tudo que interage com o sistema operacional, tem que passar pelo seu crivo. http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/custom-guide/rescuemode.html

5.3 O ambiente ShellBom j que para chegar ao ncleo do Linux, no seu kernel que o que interessa a todo aplicativo, necessria a ltragem do Shell, vamos entender como ele funciona de forma a tirar o mximo proveito das inmeras facilidades que ele nos oferece. O Linux por denio um sistema multiusurio - no podemos nunca esquecer disto - e para permitir o acesso de determinados usurios e barrar a entrada de outros, existe um arquivo chamado /etc/passwd que alm de fornecer dados para esta funo de "leo-de-chcara"do Linux, tambm prov informaes para o login daqueles que passaram por esta primeira barreira. O ltimo campo de seus registros informa ao sistema qual Shell a pessoa receber ao se "logar"(ARGH!!!). Lembra que foi falado de Shell, famlia, irmo? Pois , vamos comear a entender isto: o Shell, que se vale da imagem de uma concha envolvendo o sistema operacional propriamente dito, o nome genrico para tratar os lhos desta idia que, ao longo dos anos de existncia do sistema operacional Unix foram aparecendo. Atualmente existem diversos sabores de Shell, dentre estes destacado o sh (Bourne Shell), o ksh (Korn Shell), bash (Bourne Again Shell) e o csh (C Shell).

5.4 Uma rpida passagem nos principais sabores de ShellBourne Shell (sh) Desenvolvido por Stephen Bourne da Bell Labs (da AT&T onde tambm foi desenvolvido o Unix), este foi durante muitos anos o Shell default do sistema operacional Unix. tambm chamado de Standard Shell por ter sido durante vrios anos o nico e at hoje o mais utilizado at porque ele foi portado para todos os ambientes Unix e distros Linux. Korn Shell (ksh) Desenvolvido por David Korn, tambm 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 usurios e programadores de Shell para este ambiente. Bourne Again Shell (bash) Este o Shell mais moderno e cujo nmero 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 instrues caractersticas do C Shell. C

36

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Shell (csh) Desenvolvido por Bill Joy da Berkley University o Shell mais utilizado em ambientes *BSD e Xenix. A estruturao de seus comandos bem similar da linguagem C. Seu grande pecado foi ignorar a compatibilidade com o sh, partindo por um caminho prprio. Alm destes Shells existem outros, mas, neste curso, ser abordado somente sobre os trs primeiros tratando-os genericamente por Shell e assinalando as especicidades de cada um que porventura hajam.

Ateno: Quando foi dito que o ltimo campo do /etc/passwd informa ao sistema qual o Shell que o usurio receber ao se "logar", para ser interpretado ao p-da-letra, isto , se neste campo do seu registro estiver prog, a pessoa ao acessar o sistema receber a tela de execuo do programa prog e ao terminar a sua execuo ganhar imediatamente um logout. Imagine o quanto se pode incrementar a segurana com este simples. artifcio.

5.5 Explicando o funcionamento do ShellO Shell o primeiro programa que voc ganha ao se "logar"no Linux. ele que resolver vrias coisas de forma a no onerar o kernel com tarefas repetitivas, aliviando-o para tratar assuntos mais nobres. Como cada usurio possui o seu prprio Shell interpondo-se entre ele e o Linux, o Shell quem interpreta os comandos que so teclados e examina as suas sintaxes, passando-os esmiuados para execuo. O Shell um interpretador (ou ser intrprete) que traz consigo uma poderosa linguagem com comandos de alto nvel, que permite construo de loops (laos), de tomadas de deciso e de armazenamento de valores em variveis, como ser mostrado. Ser explicado as principais tarefas que o Shell cumpre, na sua ordem de execuo. Preste ateno nesta ordem porque ela fundamental para o entendimento do resto do nosso bate papo.

Exame da Linha de ComandosNeste exame, o Shell identica os caracteres especiais (reservados) que tm signicado para interpretao da linha, logo aps verica se a linha passada um comando ou uma atribuio.

ComandoQuando uma linha digitada no prompt do Linux, ela dividida em pedaos separados por espao em branco: o primeiro pedao o nome do programa que ter sua existncia pesquisada; identica em seguida, nesta ordem, opes/parmetros, redirecionamentos e variveis. Quando o programa identicado existe, o Shell verica as permisses dos arquivos envolvidos (inclusive o prprio programa), dando um erro caso voc no esteja credenciado a executar esta tarefa.

AtribuioSe o Shell encontra dois campos separados por um sinal de igual ()= sem espaos em branco 37

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

entre eles, identica esta seqncia como uma atribuio. Exemplos: $ ls linux linux Neste exemplo, o Shell identicou o ls como um programa e o linux como um parmetro passado para o programa ls. $ valor=1000 Neste caso, por no haver espaos em branco (j d para notar que o branco um dos caracteres reservados) o Shell identicou uma atribuio e colocou 1000 na varivel valor. Jamais Faa: $ valor = 1000 bash: valor: not found Neste caso, o Bash achou a palavra valor isolada por brancos e julgou que voc estivesse mandando executar um programa chamado valor, para o qual estaria passando dois parmetros: = e 1000.

Resoluo de RedirecionamentosAps identicar os componentes da linha que voc teclou, o Shell parte para a resoluo de redirecionamentos. O Shell tem incorporado ao seu elenco de vantagens o que chamamos de redirecionamento, que pode ser de entrada (stdin), de sada (stdout) ou dos erros (stderr), conforme ser explicado a seguir.

Substituio de VariveisNeste ponto, o Shell verica se as eventuais variveis (parmetros comeados por $), encontradas no escopo do comando, esto denidas e as substitui por seus valores atuais.

Substituio de Meta CaracteresSe algum metacaractere (*, ? ou []) foi encontrado na linha de comando, neste ponto ele ser substitudo por seus possveis valores. Supondo que o nico arquivo no seu diretrio corrente comeado pela letra n seja um diretrio chamado "nomegrandeprachuchu", se voc zer: $ cd n*

Passa Linha de Comando para o kernelCompletadas as tarefas anteriores, o Shell monta a linha de comandos, j com todas as substituies feitas, chama o kernel para execut-la em um novo Shell (Shell lho), ganhando um nmero de processo (PID ou Process Identication) e permanece inativo durante a execuo do programa. Uma vez encerrado este processo (juntamente com o Shell lho), recebe novamente o controle e, exibindo um prompt, mostra que est pronto para executar outros comandos.

38

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

5.6 Caracteres para remoo do signicado isso mesmo, quando no se deseja que o Shell interprete um caractere especial, deve-se "escond-lo"dele. Isso pode ser feito de trs formas distintas:

Apstrofo ou plic ()Quando o Shell v uma cadeia de caracteres entre apstrofos ('), ele tira os apstrofos da cadeia e no interpreta seu contedo. $ ls linux* linuxmagazine $ ls linux* bash: linux* no such le or directory No primeiro caso, o Shell "expandiu"o asterisco e descobriu o arquivo linuxmagazine para listar. No segundo, os apstrofos inibiram a interpretao do Shell e veio a resposta que no existe o arquivo linux*.

Contrabarra ou Barra Invertida (\)Idntico aos apstrofos exceto que a barra invertida inibe a interpretao somente do caractere que a segue. Suponha que voc, acidentalmente, tenha criado um arquivo chamado * (asterisco) - que alguns sabores de Unix permitem - e deseja remov-lo. Se voc zesse: $ rm * Estaria cometendo um grande erro, pois o rm removeria todos os arquivos do diretrio corrente. A melhor forma de fazer o pretendido : $ rm \* Desta forma, o Shell no interpretaria o asterisco e em conseqncia no faria a sua expanso. Faa a seguinte experincia cientca: $ cd /etc $ echo * $ echo \* $ echo * Viu a diferena? Ento, no precisa explicar mais.

Aspas (")Exatamente igual ao apstrofo exceto que, se a cadeia entre aspas contiver um cifro ($), uma crase (`), ou uma barra invertida (\), estes caracteres sero interpretados pelo Shell. No precisa se preocupar, no foi dado exemplos do uso das aspas por que voc ainda no conhece o cifro($) nem a crase (`). Daqui para frente veremos com muita constncia o uso destes 39

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

caracteres especiais, o mais importante entender o signicado de cada um.

5.7 Caracteres de redirecionamento5.7.1 Caracteres de redirecionamentoA maioria dos comandos tem uma entrada, uma sada e pode gerar erros. Esta entrada chamada Entrada Padro ou stdin e seu default o teclado do terminal. Analogamente, a sada do comando chamada Sada Padro ou stdout e seu default a tela do terminal. Para a tela tambm so enviadas por default as mensagens de erro oriundas do comando que neste caso a chamada Sada de Erro Padro ou stderr. Veremos agora, como alterar este estado de coisas. Vamos fazer um programa gago. Para isto faa: $ cat O cat uma instruo que lista o contedo do arquivo especicado para a Sada Padro (stdout). Caso a entrada no seja denida, ele espera os dados da stdin. Como no foi especicada a entrada, ele est esperando-a pelo teclado (Entrada Padro) e como tambm no foi citada a sada, o que ser teclado ir para a tela (Sada Padro) fazendo desta forma, um programa gago. Experimente!

5.7.2 Redirecionamento da Sada PadroPara especicarmos a sada de um programa usamos o > (maior que) ou o (maior, maior) seguido do nome do arquivo para o qual se deseja mandar a sada. Vamos transformar o programa gago em um editor de textos. $ cat > Arq O cat continua sem ter a entrada especicada, portanto est aguardando que os dados sejam teclados, porm a sua sada est sendo desviada para o arquivo Arq. Assim sendo, tudo que esta sendo teclado esta indo para dentro de Arq, de forma que zemos o editor de textos mais curto e ruim do planeta. Se zermos, novamente: $ cat > Arq Os dados contidos em Arq sero perdidos, j que antes do redirecionamento o ShellArq estava vazio. Para colocar mais informaes no nal do arquivo, deveriamos ter feito: criar um $ cat Arq

Ateno: Como j haviamos lhe dito, o Shell resolve a linha e depois manda o comando para a execuo. Assim, se voc redirecionar a sada de um arquivo 40

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

para ele prprio, primeiramente o Shell "esvazia"este arquivo e depois manda o comando para execuo, desta forma voc acabou de perder o contedo do seu arquivo. Com isso d para notar que o (maior maior) serve para inserir texto no nal do arquivo.

5.7.3 Redirecionamento da Sada de erro PadroAssim como o default do Shell receber os dados do teclado e mandar as sadas para a tela, os erros tambm sero enviados para a tela se voc no especicar para onde devero ser enviados. Para redirecionar os erros use 2> SaidaDeErro. Note que entre o nmero 2 e o sinal de maior (>) no existe espao em branco. Ateno: No confunda com 2>. O primeiro anexa dados ao nal de um arquivo, e o segundo redireciona a Sada de Erro Padro (stderr) para um arquivo que est sendo designado. Isso importante. Suponha que durante a execuo de um script voc pode, ou no (dependendo do rumo tomado pela execuo do programa), ter criado um arquivo chamado /tmp/seraqueexiste$$. Para no car sujeira no seu disco, ao nal do script voc colocaria uma linha: $ rm /tmp/seraqueexiste$ $ (dois cifres juntos) Caso o arquivo no existisse seria enviado para a tela uma mensagem de erro. Para que isso no acontea, deve-se fazer: $ rm /tmp/seraqueexiste$ $ 2> /dev/null (dois cifres juntos) Sobre o exemplo visto, h duas dicas: Dica 1: O $ $ (dois cifres juntos) contm o PID, isto , o nmero do seu processo. Como o Linux multiusurio, bom anexar sempre o $ $ (dois cifres juntos) ao nome dos arquivos que sero usados por vrias pessoas para no haver problema de propriedade, isto , caso voc batizasse o seu arquivo simplesmente como seraqueexiste, o primeiro que o usasse (criando-o ento) seria o seu dono e todos os outros ganhariam um erro quando tentassem gravar algo nele. Para que voc teste a Sada de Erro Padro direto no prompt do seu Shell, vamos dar mais um exemplo. Faa: $ ls naoexiste bash: naoexiste no such le or directory $ ls naoexiste 2> arquivodeerros $ hspace*1cmtextbf$ cat arquivodeerros bash: naoexiste no such le or directory Neste exemplo, vimos que quando zemos um ls em naoexiste, ganhamos uma mensagem de erro. Aps, redirecionarmos a Sada de Erro Padro para arquivodeerros e executarmos o 41

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

mesmo comando, recebemos somente o prompt na tela. Quando listamos o contedo do arquivo para o qual foi redirecionada a Sada de Erro Padro, vimos que a mensagem de erro tinha sido armazenada nele. Faa este teste. 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 no nos interessava guardar a possvel mensagem de erro oriunda do comando rm, redirecionamosa para este arquivo. interessante notar que estes caracteres de redirecionamento so cumulativos, isto , se no exemplo anterior zssemos: $ ls naoexiste 2 arquivodeerros a mensagem de erro oriunda do ls seria anexada ao nal de arquivodeerros.

5.7.4 Redirecionamento da Entrada PadroPara fazermos o redirecionamento da Entrada Padro, usamos o < (menor que). - E para que serve isso? - voc ir perguntar. -Com esse exemplo voc entender: Suponha que voc queira mandar um email para o seu chefe. Ao invs de sair redigindo o email direto no prompt da tela de forma a tornar impossvel a correo de uma frase anterior onde, sem querer, escreveu um "ns vai", voc edita um arquivo com o contedo da mensagem e aps umas quinze vericaes sem constatar nenhum erro, decide envi-lo e para tal, faz: $ mail chefe < arquivocommailparaochefe O seu chefe, ento, receber o contedo do arquivocommailparaochefe. Um outro tipo de redirecionamento que o Shell te permite o chamado here document. Ele representado por (menor menor) e serve para indicar ao Shell que o escopo de um comando comea na linha seguinte e termina quando encontra uma linha cujo contedo seja unicamente o label que segue o sinal . Veja o fragmento de script a seguir, com uma rotina de ftp: $ ftp -ivn hostremoto mftp user $Usurio $Senha binary get arquivoremoto mftp Aqui, temos muitos detalhes interessantes: 1. As opes que foram usadas para o ftp (-ivn) servem para ele ir listando tudo que est acontecendo (-v de verbose), para no perguntar se voc tem certeza de que deseja transmitir 42

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

cada arquivo (-i de interactive), e nalmente a opo -n serve para dizer ao ftp para ele no solicitar o usurio e sua senha, pois esses sero informados pela instruo especca (user). 2. Quando foi usado o mftp, estava dizendo o seguinte para o intrprete: "Shell, no faa nada a partir daqui at encontrar o label mftp. Voc no entenderia nada, j que so instrues especcas do comando ftp e voc no entende nada de =ftp=". Se fosse s isso seria simples, mas pelo prprio exemplo d para ver que existem duas variveis ($Usurio e $Senha), que o Shell resolver antes do redirecionamento. Mas a grande vantagem desse tipo de construo que ela permite que comandos tambm sejam interpretados dentro do escopo do here document, o que tambm contraria o que foi dito. Depois ser explicado como isso funciona. Agora no d, pois est faltando ferramenta. 1. O comando user do repertrio de instrues do ftp e serve para passar o usurio e a senha que haviam sido lidos em uma rotina anterior a esse fragmento de cdigo e colocados, respectivamente, nas duas variveis: $Usurio e $Senha. 2. . O binary outra instruo do ftp, que serve para indicar que a transferncia de arquivoremoto ser feita em modo binrio, isto , o contedo do arquivo no ser interpretado para saber se est em ASCII, EBCDIC, ... 3. O get arquivoremoto diz ao ftp para pegar esse arquivo em hostremoto e traz-lo para o nosso host local. Se fosse para mandar o arquivo, usaramos o comando put. Ateno: Um erro muito freqente no uso de labels (como o mftp do exemplo anterior) causado pela presena de espaos em branco antes ou aps o mesmo. Fique muito atento quanto a isso, por que este tipo de erro cria problemas no programador, at que seja detectado. Lembre-se: um label que se preze tem que ter uma linha inteira s para ele.

5.8 Redirecionamento de ComandosOs redirecionamentos que falamos at aqui sempre se referiam a arquivos, isto mandavam para arquivo, recebiam de arquivo, simulavam arquivo local e etc. O que veremos a partir de agora redireciona a sada de um comando para a entrada de outro, muito utilizado e ajuda bastante. Seu nome pipe (que em ingls signica tubo, j que ele encana a sada de um comando para a entrada de outro) e sua representao uma barra vertical (|). http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/custom-guide/rescuemode.html ls | wc -l 21 O comando ls passou a lista de arquivos para o comando wc, que quando est com a opo -l conta a quantidade de linhas que recebeu. Desta forma, podemos armar categoricamente que no diretrio existiam 21 arquivos. $ cat /etc/passwd |sort | lp 43 $

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Esta linha de comandos manda a listagem do arquivo /etc/passwd para a entrada do comando sort. Este a classica e manda-a para o lp que o gerenciador do spool de impresso.

5.9 Caracteres de AmbienteNormalmente, ao priorizar uma expresso voc a coloca entre parnteses, por causa da aritmtica normal pensarmos desta forma. Mas em Shell o que prioriza mesmo so as crases (`) e no os parnteses. Vamos dar exemplos de uso das crases para voc entender melhor. Eu quero saber quantos usurios esto "logados"no computador que eu administro. Eu posso fazer: $ who | wc -l 8 O comando who passa a lista de usurios conectados para o comando wc -l que conta quantas linhas recebeu e lista a resposta na tela. Pois bem, mas ao invs de ter um oito solto na tela, o que quero que ele esteja no meio de uma frase. Para mandar frases para a tela, uso o comando echo, cando assim: $ echo "Existem who | wc -l usurios conectados" Existem who | wc -l usurios conectados No funcionou, e no foi por causa das aspas que eu coloquei, mas sim por que eu teria que ter executado o who | wc -l antes do echo. Para resolver este problema, tenho que priorizar esta segunda parte do comando com o uso de crases, fazendo assim: $ echo "Existem who | wc -l usurios conectados" Existem 8 usurios conectados Para eliminar esse monte de brancos antes do 8 que o wc -l produziu, basta tirar as aspas. Assim: $ echo Existem who | wc -l usurios conectados Existem 8 usurios conectados Como foi dito antes, as aspas protegem tudo que est dentro dos seus limites, da interpretao do Shell. Como para o Shell basta um espao em branco como separador, os vrios espaos sero trocado por um nico aps a retirada das aspas. Quando estiver no Shell, voc deve sempre dar um comando em cada linha. Para agrupar comandos em uma mesma linha, ter que separ-los por ponto-e-vrgula(;). Ento: http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/custom-guide/rescuemode.html $pwd ; cd /etc; pwd; cd -; pwd /home/meudir 44

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

/etc/ /home/meudir Neste exemplo, listamos o nome do diretrio corrente com o comando pwd, mudamos para o diretrio /etc, novamente listamos o nome do diretrio e, nalmente, voltamos para o diretrio onde estava anteriormente (cd -), listando seu nome. Repare que foi colocado o ponto-e-vrgula (;) de todas as formas possveis para mostrar que no importa se existem espaos em branco antes ou aps este caractere. Finalmente, vamos ver o caso dos parnteses. Veja s o caso a seguir, bem parecido com o exemplo anterior: $ (pwd ; cd /etc ; pwd;) /home/meudir /etc/ $ pwd /home/meudir - Quequeiiisso minha gente? Eu estava no /home/meudir, mudei para o /etc, constatei que estava neste diretrio com o pwd seguinte, e quando o agrupamento de comandos terminou, eu vi que continuava no /etc/meudir, como se eu nunca houvesse sado de l! - Ih! Ser que tem coisa de mgico a? - T me estranhando, rapaz? No nada disso! O interessante do uso de parnteses que ele invoca um novo Shell para executar os comandos que esto no seu interior. Desta forma, realmente fomos para o diretrio /etc, porm quando todos os comandos dentro dos parnteses foram executados, o novo Shell que estava no diretrio /etcShell anterior cujo diretrio corrente era /home/meudir. Faa outros testes usando cd, e ls para voc rmar o conceito. Agora que j conhecemos estes conceitos veja s este exemplo: $ mail suporte FIM http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/custom-guide/rescuemode.html >Ola suporte, hoje as date"+%hh:mm" >ocorreu novamente aquele problema >que eu havia reportado por >telefone. Conforme seu pedido >ai vai uma listagem dos arquivos >do diretorio: >ls -l >Abracos a todos. >FIM Finalmente, agora, temos conhecimento para mostrar o que havamos conversado sobre here document. Os comandos entre crases () sero priorizados e, portanto, o Shell os executar antes da instruo mail. Quando o suporte receber o e-mail, ver que os comandos date e ls foram executados imediatamente antes do comando mail, recebendo ento uma fotograa do ambiente no momento em que a correspondncia foi enviada.

45

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

O prompt primrio default do Shell, como vimos, o cifro ($), porm o Shell usa o conceito de prompt secundrio, ou de continuao de comando que enviado para a tela quando h uma quebra de linha e a instruo no terminou. Esse prompt, representado por um sinal de maior (>), que vemos precedendo a partir da 2 linha do exemplo. Para nalizar e bagunar tudo, devo dizer que existe uma construo mais moderna que vem sendo utilizada como forma de priorizao de execuo de comandos, tal qual as crases (). So as construes do tipo $(cmd), onde cmd um (ou vrios) comando que ser(o) executado(s) com prioridade em seu contexto. Assim sendo, o uso de crases () ou construes do tipo $(cmd) servem para o mesmo m, porm para quem trabalha com sistemas operacionais de diversos fornecedores (multiplataforma), aconselho o uso das crases j que o $(cmd) no foi portado para todos os sabores de Shell. Aqui dentro do Botequim, usarei ambas as formas, indistintamente. Vejamos novamente o exemplo dado para as crases sob esta nova tica: $ echo Existem $(who | grep wc -l) usurios conectados Existem 8 usurios conectados Veja s este caso: $ Arqs=ls $ echo $Arqs ls Neste exemplo, eu z uma atribuio (=) e executei uma instruo. O que eu queria era que a varivel $Arqs, recebesse a sada do comando ls. Como as instrues de um script so interpretadas de cima para baixo e da esquerda para a direita, a atribuio foi feita antes da execuo do ls. Para fazer o que desejamos necessrio que eu priorize a execuo deste comando em detrimento da atribuio e isto pode ser feito de qualquer uma das maneiras a seguir: $ Arqs=ls ou: $ Arqs=$(ls) Para encerrar este assunto, vamos ver s mais um exemplo. Digamos que eu queira colocar dentro da varivel $Arqs a listagem longa (ls -l) de todos os arquivos comeados por arq e seguidos de um nico caractere (?). Eu deveria fazer: $ Arqs=$(ls -l arq?) ou: $ Arqs=ls -l arq? Mas veja:

46

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

$ echo $Arqs -rw-rr 1 jneves jneves 19 May 24 19:41 arq1 -rw-rr 1 jneves jneves 23 May 24 19:43 arq2 -rw-rr 1 jneves jneves 1866 Jan 22 2003 arql - P, saiu tudo embolado! - Pois cara, como eu j te disse, se voc deixar o Shell "ver"os espaos em branco, sempre que houver diversos espaos juntos, eles sero trocados por apenas um. Para que a listagem saia bonitinha, necessrio proteger a varivel da interpretao do Shell, assim: $ echo "$Arqs" -rw-rr 1 jneves jneves 19 May 24 19:41 arq1 -rw-rr 1 jneves jneves 23 May 24 19:43 arq2 -rw-rr 1 jneves jneves 1866 Jan 22 2003 arql - Olhe, amigo, v treinando esses exemplos, porque, quando nos encontrarmos novamente, vou lhe explicar uma srie de instrues tpicas de programao Shell. Tchau! Ahh! S mais uma coisinha que eu ia esquecendo de lhe dizer. Em Shell, o "jogo da velha"(#) usado quando desejamos fazer um comentrio. $ exit # pede a conta ao garcon

47

Captulo 6

Parte II6.1 Dilogo- Garom! Traz um "chops"e dois "pastel". O meu amigo hoje no vai beber por que ele nalmente esta sendo apresentado a um verdadeiro sistema operacional e ainda tem muita coisa a aprender! - E ento, amigo, t entendendo tudo que te expliquei at agora? - Entendendo eu t, mas no vi nada prtico nisso... - Calma rapaz, o que te falei at agora, serve como base ao que h de vir daqui pra frente. Vamos usar estas ferramentas que vimos para montar programas estruturados, que o Shell permite. Voc ver porque at na TV j teve programa chamado "O Shell o Limite". - Para comear vamos falar dos comandos da famlia grep. - grep? No conheo nenhum termo em ingls com este nome... - claro, grep um acrnimo Global Regular Expression Print, que usa expresses regulares para pesquisar a ocorrncia de cadeias de caracteres na entrada denida (se bem que h uma lenda sobre como este comando foi nomeado: no editor de textos "ed", o av do "vim", o comando usado para buscas era g/_expressao regular_/p, ou no ingls g/_re_/p.). Por falar em expresses regulares (ou regexp), o Aurlio Marinho Jargas tem todas as dicas em sua pgina (inclusive tutorias) que abordam o tema. Se voc est mesmo a m de aprender a programar em Shell, Perl, Python, ... Acho bom voc ler estes artigos para te ajudar no que est para vir. Pergunta: O grep um aplicativo para linha de comando que faz buscas no contedo dos arquivos. Aceita expresses regulares e ao utiliz-las no grep recomendado utilizar escapes " para caracteres como "*"para que o bash no o entenda como um curinga para nomes de arquivos. A denio dada est correta?

6.2 Eu co com o grep, voc com a gripeEsse negcio de gripe brincadeira! s um pretexto para pedir umas caipirinhas. Mas voltando vaca fria, eu te falei que o grep procura cadeia de caracteres dentro de uma entrada denida, mas o que vem a ser uma "entrada denida"? Bem, existem vrias formas de denir a entrada do comando grep. Vejamos: Pesquisando em um arquivo: $ grep rafael /etc/passwd Pesquisando em vrios arquivos: $ grep grep *.sh 48

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Pesquisando na sada de comando: $ who | grep Pelegrino No 1 exemplo, o mais simples, procurei a palavra rafael em qualquer lugar do arquivo /etc/passwd. Se quisesse procur-la como um login name, isto , somente no incio dos registros deste arquivo, eu deveria fazer: $ grep '^rafael /etc/passwd E para que serve este circunexo e os apstrofos? O circunexo (^), se voc tivesse lido os artigos anteriores sobre expresses regulares que te falei, saberia que servem para limitar a pesquisa ao incio de cada linha, e os apstrofos () servem para o Shell no interpretar este circunexo, deixando-o passar inclume para o comando grep. O grep aceita como entrada, a sada de outro comando redirecionado por um pipe (isto muito comum em Shell e um tremendo acelerador de execuo de comando j que atua como se a sada de um programa fosse guardada em disco e o segundo programa lesse este arquivo gerado), desta forma, no 3 exemplo, o comando who listou as pessoas "logadas"na mesma mquina que voc (no se esquea jamais: o Linux multiusurio) e o grep foi usado para vericar se o Pelegrino estava trabalhando ou "coando".

6.3 A famlia grepEste comando grep muito conhecido, pois usado com muita freqncia, o que muitas pessoas desconhecem que existem trs comandos na famlia grep, que so: grep; egrep; fgrep. A principais caractersticas diferenciais entre os 3 so:

O grep pode ou no usar expresses regulares simples, porm no caso de no us-las, o fgrep melhor, por ser mais rpido; O egrep ("e"de extended, extendido) muito poderoso no uso de expresses regulares. Por ser o mais lento da famlia, s deve ser usado quando for necessria a elaborao de uma expresso regular no aceita pelo grep; O fgrep ("f"de fast, rpido, ou de "le", arquivo) como o nome diz o rapidinho da famlia, executa o servio de forma muito veloz (por vezes cerca de 30% mais veloz que o grep e 50% mais que o egrep), porm no permite o uso de expresses regulares na pesquisa. Ateno: Tudo que foi dito acima sobre velocidade, s se aplica famlia de comandos grep do Unix. No Linux o grep sempre mais veloz, j que os outros dois (fgrep e egrep) so scripts em Shell que chamam o primeiro. 49

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Agora que voc j conhece as diferenas entre os membros da famlia, me diga: o que voc acha dos trs exemplos que eu dei antes das explicaes? - Eu achei que o fgrep resolveria o teu problema de forma mais veloz do que o grep. - Perfeito! T vendo que voc est atento! Est entendendo tudo que estou te explicando! Ento vamos ver mais exemplos para clarear de vez as diferenas de uso dos membros da famlia.

6.4 Exemplos da famlia grepExemplos http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/custom-guide/rescuemode.html Eu sei que em um arquivo existe um texto falando sobre Linux s no tenho certeza se est escrito com L maisculo ou l minsculo. Posso fazer de duas formas: $ egrep (Linux | linux) arquivo.txt ou $ grep [Ll]inux arquivo.txt No primeiro caso, a expresso regular complexa "(Linux | linux)"usa os parnteses para agrupar as opes e a barra vertical (|) como um "ou"lgico, isto , estou procurando Linux ou linux. No segundo, a expresso regula