Your SlideShare is downloading. ×
0
Linux: Estudo de Casos Em Ciências da Terra Prof. George Sand  Monitor: Débora Matos Curso de Extensão: 2010
Programa <ul><li>(25/01) (14:00 as 17:30) Linux – Conceitos básicos </li></ul><ul><li>(26/01) (14:00 as 17:30) Linux – Int...
Aula 1: Conceitos Básicos do Linux <ul><li>O Linux é um sistema operacional multi-tarefa e multi-usuário, o que significa ...
Vamos começar! <ul><li>Clique duas vezes no ícone Terminal. </li></ul><ul><li>OBS: Linux considera a diferença entre a let...
O comando cd e pwd <ul><li>cd [diretório] </li></ul><ul><ul><li>Mudar o diretório de trabalho atual. </li></ul></ul><ul><u...
Comando mkdir e rmdir <ul><li>mkdir [opções] [caminho/diretório] </li></ul><ul><ul><li>Cria um novo diretório </li></ul></...
Manipulação do arquivos rm e cp <ul><li>rm [opções] [caminho/diretório] </li></ul><ul><ul><li>Remove os arquivos </li></ul...
Comandos mv <ul><li>mv [opções] [origem] [destino] </li></ul><ul><ul><li>Renomeia ou move arquivos e diretórios </li></ul>...
Comandos cat e more <ul><li>cat [opções] [diretório/arquivos1]... [diretório/arquivos] </li></ul><ul><ul><li>Usando para c...
Camandos head e tail  <ul><li>head [opções] [arquivo] </li></ul><ul><ul><li>Mostre as linhas iniciais de um arquivo texto....
Comando wc e sort <ul><li>wc [opções] [arquivo] </li></ul><ul><ul><li>Conta o número de palavras, bytes e linhas em um arq...
Comando Diff <ul><li>Diff [diretório/arquivo1] [diretório/arquivo2] [opções] </li></ul><ul><ul><li>Compara dois arquivos e...
Permissão de arquivos <ul><li>Linux permite que arquivos sejam compartilhados entre usuários e grupos de usuários.  </li><...
Modificando as permissões <ul><li>chmod {a,u,g,o}{+,-}{r,w,x}arquivos  </li></ul><ul><li>As primeiras letras indicam a que...
Comando de Busca <ul><li>grep [expressão] [arquivo] [opções] </li></ul><ul><ul><li>- A [número]    mostra o número de lin...
Redirecionamentos e pipes <ul><li>stdin    entrada padrão ( standard input ) </li></ul><ul><li>stdout    saída padrão (s...
Use o pipe  <ul><li>ls > lista </li></ul><ul><li>sort –r lista   </li></ul><ul><li>Gravou a saída do ls num arquivo lista,...
Tarefa em segundo plano, abortando tarefas, parando tarefas.   <ul><li>yes > lixo </li></ul><ul><li>Esse processo continua...
Editores <ul><li>Existem diversos editores </li></ul><ul><li>vi (editor) </li></ul><ul><li>emacs(editor) </li></ul><ul><li...
Introdução ao comando awk <ul><li>O nome é derivado das iniciais de seus três criadores, Aho, Kernighan, e Weinberger. Fun...
Vamos começar awk <ul><li>Use o comando cat para criar o arquivo terremoto.txt </li></ul><ul><li>2007/07/31 21:09:20.9000 ...
<ul><li>awk ‘$5 <= 100’ terremoto </li></ul><ul><li>____________________________ </li></ul><ul><li>o operador &&  -- “e” d...
<ul><li>END    similar ao BEGIN </li></ul><ul><li>awk ‘END {print NR, “eventos.”}’ terremoto </li></ul><ul><li>Usando o c...
Printf (awk) <ul><li>Controla a saída do print de acordo com formato.  </li></ul><ul><li>printf “formato do caractere” arg...
<ul><li>Até amanhã! </li></ul>
Aula 2: Shell Script <ul><li>Começando!!! </li></ul><ul><li>Por exemplo, se de tempos em tempos você quer saber informaçõe...
Primeiro Shell Script <ul><li>Escolher um nome para o script </li></ul><ul><ul><li>Já temos um nome: sistema. </li></ul></...
Melhorando Shell Script <ul><li>Executar os três comandos seguidos resulta num bolo de texto na tela, misturando as  infor...
Interagir com o Usuário <ul><li>Para o script ficar mais completo, vamos colocar uma interação mínima com o usuário, </li>...
Melhorar o Código do Script <ul><li>Com o tempo, o script vai crescer, mais comandos vão ser adicionados e quanto maior, m...
Fixando conceitos básicos <ul><li>As variáveis são a base de qualquer script. É dentro delas que os dados obtidos durante ...
O comando test <ul><li>O canivete suíço dos comandos do Shell é o &quot;test&quot;, que consegue fazer vários tipos de che...
Exemplo e Exercício <ul><li>Em todos as comandos que aceitam condições (ex. if, while) deve ser posto um comando nessa con...
Resposta <ul><li>testa-arquivos </li></ul><ul><li>#!/bin/bash </li></ul><ul><li>echo -n &quot;Digite o arquivo: &quot;; re...
Referências <ul><li>Manual do awk  ( http://www.inf.pucrs.br/~manssour/AWK/index.html ) </li></ul><ul><li>Practical guide ...
If, For e While <ul><li>Assim como qualquer outra linguagem de programação, o Shell também tem estruturas para se fazer co...
<ul><li>Há um atalho para o test , que é o comando [. Ambos são exatamente o mesmo comando, porém usar o [ deixa o if mais...
Condição while e for <ul><li>Já o while é um laço que é executado enquanto um comando retorna OK. Usaremos o test (ou o [)...
Condição For <ul><li>Uma ferramenta muito útil para usar com o for é o seq, que gera uma seqüência numérica. Para fazer o ...
Exercícios Vc também tem que aprender a se virar sozinho! <ul><li>relacao.sh -- > Recebe dois números como parâmetro e mos...
zerador.sh Recebe um número como parâmetro e o diminui até chegar a zero, mostrando na tela cada passo, numa mesma linha. ...
substring.sh Recebe duas palavras como parâmetro e checa se a primeira palavra está contida dentro da segunda. Só mostra m...
juntatudo.sh Mostra na tela &quot;grudados&quot; todos os parâmetros recebidos na linha de comando, como uma única palavra...
users.sh Do arquivo /etc/passwd, mostra o usuário e o nome completo de cada usuário do sistema (campos 1 e 5) separados po...
shells.sh Do arquivo /etc/passwd, mostra todos os shells (último campo) que os usuários usam. Não mostrar linhas repetidas...
parametros.sh Mostra na tela todos os parâmetros recebidos na linha de comando, contando−os. <ul><li>Exemplo: </li></ul><u...
Upcoming SlideShare
Loading in...5
×

SAC - Seismic Analyses Code

287

Published on

Aula de SAC

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
287
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • awk ‘NR == 2, NR == 4’ terremoto
  • Transcript of "SAC - Seismic Analyses Code"

    1. 1. Linux: Estudo de Casos Em Ciências da Terra Prof. George Sand Monitor: Débora Matos Curso de Extensão: 2010
    2. 2. Programa <ul><li>(25/01) (14:00 as 17:30) Linux – Conceitos básicos </li></ul><ul><li>(26/01) (14:00 as 17:30) Linux – Introdução aos scripts. </li></ul><ul><li>(27/01) (14:00 as 17:30) Seismic Analysis Code – Conceitos básicos </li></ul><ul><li>(28/01) (14:00 as 17:30)SAC – Macros e geração de imagens </li></ul>
    3. 3. Aula 1: Conceitos Básicos do Linux <ul><li>O Linux é um sistema operacional multi-tarefa e multi-usuário, o que significa que muitas pessoas podem rodar aplicações diferentes em um computador ao mesmo tempo. </li></ul><ul><li>Para se identificar, você deve “logar” no sistema. LOGIN e SENHA! Para o nosso curso o seu o login e a senha é aula </li></ul><ul><li>login:training </li></ul><ul><li>password: obsis123 </li></ul>
    4. 4. Vamos começar! <ul><li>Clique duas vezes no ícone Terminal. </li></ul><ul><li>OBS: Linux considera a diferença entre a letra maiúscula e minúscula. </li></ul><ul><li>Manipulação de Diretórios </li></ul><ul><ul><li>ls [opções] [caminho/arquivo] </li></ul></ul><ul><ul><ul><li>opções </li></ul></ul></ul><ul><ul><ul><ul><li>-a  lista todos os arquivos de um diretório </li></ul></ul></ul></ul><ul><ul><ul><ul><li>- l  lista as permissões, data de modificações, donos,...etc </li></ul></ul></ul></ul><ul><ul><ul><ul><li>- F  Insere um caractere após o arquivo executáveis (‘*’), diretórios(‘/’),.... </li></ul></ul></ul></ul><ul><ul><ul><ul><li>- r  Inverte a seqüência da ordenação </li></ul></ul></ul></ul><ul><ul><ul><ul><li>- X  ordena pela extensão </li></ul></ul></ul></ul><ul><li>Exemplo: </li></ul><ul><li>ls </li></ul><ul><li>lista os arquivos do diretório atual. </li></ul><ul><li>ls /bin /sbin </li></ul><ul><li>lista os arquivos do diretório /bin/sbin. </li></ul><ul><li>ls –la /bin </li></ul><ul><li>listagem detalhada e completa dos arquivos do diretório /bin. </li></ul><ul><li>EXERCÍCIO: </li></ul><ul><li>Teste outras opções e veja o que realmente mostra (use o seu diretório e o /bin). </li></ul>
    5. 5. O comando cd e pwd <ul><li>cd [diretório] </li></ul><ul><ul><li>Mudar o diretório de trabalho atual. </li></ul></ul><ul><ul><li>“ .” Se refere ao diretório corrente, “..” ao diretório inferior, e “~” é o diretório padrão do usuário. </li></ul></ul><ul><li>pwd </li></ul><ul><ul><li>Mostra o caminho do diretório atual </li></ul></ul><ul><li>Exemplos </li></ul><ul><li>cd / muda para o diretório raiz. </li></ul><ul><li>cd /etc muda para o diretório /etc. </li></ul><ul><li>cd - retorna ao diretório anteriormente acessado </li></ul><ul><li>pwd </li></ul><ul><li>EXERCÍCIO: </li></ul><ul><li>Após cada comando acima digite pwd e veja o caminho. </li></ul><ul><li>Qual o comando que leva você para o diretório /usr/local e depois retorna para o seu diretório </li></ul>
    6. 6. Comando mkdir e rmdir <ul><li>mkdir [opções] [caminho/diretório] </li></ul><ul><ul><li>Cria um novo diretório </li></ul></ul><ul><li>rmdir [caminho/diretório] </li></ul><ul><ul><li>Remove os diretórios </li></ul></ul><ul><ul><li>O diretório a ser removido deve estar vazio e você deve ter permissão para removê-lo. </li></ul></ul><ul><li>Exemplo </li></ul><ul><li>mkdir /home/training/teste cria o diretório teste em /home/aula </li></ul><ul><li>mkdir teste1 teste2 cria os diretórios teste1 e teste2. </li></ul><ul><li>rmdir /home/training/teste remove o diretório teste em /home/aula. </li></ul><ul><li>EXERCÍCIO </li></ul><ul><li>Crie um diretório com seu nome e mude para esse diretório. Mostre o caminho. </li></ul><ul><li>Remova os diretórios teste1 e teste2 </li></ul>
    7. 7. Manipulação do arquivos rm e cp <ul><li>rm [opções] [caminho/diretório] </li></ul><ul><ul><li>Remove os arquivos </li></ul></ul><ul><ul><li>- i  confirma antes de remover. </li></ul></ul><ul><ul><li>- f  remove os arquivos sem confirmação </li></ul></ul><ul><ul><li>- r  Usado para remover arquivos em sub-diretórios. </li></ul></ul><ul><li>cp [opções] [origem] [destino] </li></ul><ul><ul><li>Copia arquivos </li></ul></ul><ul><ul><li>- f , –i, -r  tem o mesmo significado do rm. </li></ul></ul><ul><ul><li>-u  copia somente se o arquivo de origem é mais novo que o arquivo de destino ou quando o arquivo de destino não existe. </li></ul></ul><ul><li>Exemplos: </li></ul><ul><li>echo ‘teste’ > lixo.txt </li></ul><ul><li>Não se preocupe com isso agora </li></ul><ul><li>echo ‘teste’ > lixo1.txt </li></ul><ul><li>rm lixo.txt </li></ul><ul><li>Remove o arquivo lixo.txt do diretório atual. </li></ul><ul><li>rm *.txt </li></ul><ul><li>Remove todos os arquivos que terminam com txt. </li></ul><ul><li>echo ‘teste’ > lixo.txt </li></ul><ul><li>cp lixo.txt lixo1.txt </li></ul><ul><li>copia o arquivo lixo.txt para lixo1.txt. </li></ul><ul><li>cp lixo.txt /tmp </li></ul><ul><li>copia o arquivo lixo.txt para o diretório tmp. </li></ul><ul><li>Exercícios </li></ul><ul><li>Remova o arquivo lixo.txt do diretório /tmp, copie o arquivo lixo1.txt para /tmp e liste o diretório tmp. </li></ul><ul><li>Qual o comando para confirmar copia antes de substituir o arquivo lixo1.txt? </li></ul>
    8. 8. Comandos mv <ul><li>mv [opções] [origem] [destino] </li></ul><ul><ul><li>Renomeia ou move arquivos e diretórios </li></ul></ul><ul><ul><li>Semelhante ao comando cp mas o arquivo de origem é apagado após o término da cópia. </li></ul></ul><ul><ul><li>-f  substituir o arquivo sem perguntar </li></ul></ul><ul><ul><li>-i  Pergunta antes de substituir. </li></ul></ul><ul><ul><li>-u  move somente arquivos novos </li></ul></ul><ul><li>Exemplo </li></ul><ul><li>mv lixo.txt lixo1.txt </li></ul><ul><li>muda o nome do arquivo lixo.txt lixo1.txt </li></ul><ul><li>mv lixo1.txt /tmp </li></ul><ul><li>move o arquivo lixo1.txt do diretório atual para /tmp. </li></ul><ul><li>EXERCÍCIO </li></ul><ul><li>mover o lixo1.txt do diretório /tmp para o diretório atual. </li></ul>
    9. 9. Comandos cat e more <ul><li>cat [opções] [diretório/arquivos1]... [diretório/arquivos] </li></ul><ul><ul><li>Usando para concatenar arquivos, mas também usado para mostrar o conteúdo completo de um arquivo por vez. </li></ul></ul><ul><ul><li>-n  mostra o número das linhas enquanto o conteúdo é mostrado. </li></ul></ul><ul><li>more [arquivo] </li></ul><ul><ul><li>Permite fazer a paginação de arquivos. </li></ul></ul><ul><ul><li>Para sair pressione q </li></ul></ul><ul><li>Exemplo </li></ul><ul><li>echo ‘lixo’ > lixo.txt </li></ul><ul><li>echo ‘lixo2’ >> lixo.txt </li></ul><ul><li>cat lixo.txt </li></ul><ul><li>more lixo.txt </li></ul><ul><li>cat /etc/passwd | more </li></ul><ul><li>Exercício </li></ul><ul><li>Crie os arquivos lixo1.txt e lixo.txt (pg 7) e concatene em novo lixo2.txt. </li></ul><ul><li>cat lixo1.txt lixo.txt </li></ul><ul><li>cat lixo1.txt lixo.txt > lixo2.txt </li></ul>
    10. 10. Camandos head e tail <ul><li>head [opções] [arquivo] </li></ul><ul><ul><li>Mostre as linhas iniciais de um arquivo texto. </li></ul></ul><ul><ul><li>- c  mostra o número de bytes do início do arquivo. </li></ul></ul><ul><ul><li>- [numero]  mostra o número de linhas do início do arquivo. Caso não seja especificado, mostra as 10 primeiras linhas. </li></ul></ul><ul><li>tail [opções] [arquivo] </li></ul><ul><ul><li>Mostra as linhas finais de um arquivo texto. </li></ul></ul><ul><ul><li>-c e – [número] </li></ul></ul><ul><li>Exemplo </li></ul><ul><li>head /etc/passwd </li></ul><ul><li>head -20 /etc/passwd </li></ul><ul><li>tail /etc/passwd </li></ul><ul><li>tail -20 /etc/passwd </li></ul><ul><li>history | head -15 </li></ul><ul><li>history | tail -15 </li></ul><ul><li>Exercício </li></ul><ul><li>Qual a diferença entre tail, more e head. </li></ul>
    11. 11. Comando wc e sort <ul><li>wc [opções] [arquivo] </li></ul><ul><ul><li>Conta o número de palavras, bytes e linhas em um arquivo. </li></ul></ul><ul><ul><li>-c  mostra os bytes </li></ul></ul><ul><ul><li>-w  mostra a quantidade de palavras </li></ul></ul><ul><ul><li>-l  mostra a quantidade de linhas </li></ul></ul><ul><li>sort [opções] [arquivo] </li></ul><ul><ul><li>-b  ignora linhas em branco </li></ul></ul><ul><ul><li>-d  Somente usa letras, dígitos e espaços durante a organização </li></ul></ul><ul><ul><li>-f  ignora a diferença entre maiúsculas e minúsculas. </li></ul></ul><ul><ul><li>-n  números serão organizados em ordem aritmética </li></ul></ul><ul><ul><li>-c  Verifica se o arquivo está organizado. </li></ul></ul><ul><ul><li>- t caractere  Usa caractare como delimitador durante a organização de linhas </li></ul></ul><ul><ul><li>+num1 –num2  Especifica qual o campo dentro da linha que será usado na organização. </li></ul></ul><ul><li>Exemplo </li></ul><ul><li>wc /etc/passwd </li></ul><ul><li>mostra linhas, palavras e letras </li></ul><ul><li>wc –w /etc/passwd </li></ul><ul><li>mostra a quantidade de palavras. </li></ul><ul><li>sort /etc/passwd </li></ul><ul><li>organiza em ordem crescente </li></ul><ul><li>sort –r /etc/passwd </li></ul><ul><li>organiza em ordem decrescente </li></ul><ul><li>sort –f /etc/passwd </li></ul><ul><li>ignora diferenças entre maiúsculas e minúsculas. </li></ul><ul><li>sort +1 -3 /etc/passwd </li></ul><ul><li>organiza o passwd usando como referência a segunda até quarta palavra. </li></ul><ul><li>EXERCÍCIO </li></ul><ul><li>Qual comando acima é o mesmo que </li></ul><ul><li>cat /etc/passwd | sort ? </li></ul>
    12. 12. Comando Diff <ul><li>Diff [diretório/arquivo1] [diretório/arquivo2] [opções] </li></ul><ul><ul><li>Compara dois arquivos e mostra as diferenças entre eles. </li></ul></ul><ul><ul><li>- a  compara como arquivo texto </li></ul></ul><ul><ul><li>- b  ignora espaços em branco como diferenças </li></ul></ul><ul><ul><li>-B  ignora linhas brancas inseridas ou apagadas nos arquivos </li></ul></ul><ul><ul><li>-I  ignora diferença entre maiúsculas e minúsculas. </li></ul></ul><ul><ul><li>- q  Mostra somente se os dois arquivos possuem diferenças. </li></ul></ul><ul><ul><li>- r  compara sub-diretórios existentes. </li></ul></ul><ul><ul><li>- s [nome]  inicia a comparação de diretórios pelo arquivo [nome]. </li></ul></ul><ul><li>Exemplo </li></ul><ul><li>diff lixo.txt /etc/passwd </li></ul><ul><li>compara o arquivo lixo.txt com o arquivo passwd </li></ul><ul><li>diff –r /usr/src/linux-headers-2.6.17-10 /usr/src/linux-headers-2.6.17-10-generic > patch.2.6.16.diff </li></ul><ul><li>compara o diretório e sub-diretórios linux-2.6 e grava as dferenças entre eles no arquivo patch.2.6.16.diff </li></ul><ul><li>EXERCÍCIO </li></ul><ul><li>Mostre na tela o arquivo patch.2.6.16.diff e compare com o arquivo /etc/passwd </li></ul>
    13. 13. Permissão de arquivos <ul><li>Linux permite que arquivos sejam compartilhados entre usuários e grupos de usuários. </li></ul><ul><li>Cada arquivo pertence a um usuário particular. Entretanto, arquivo pertence a um grupo, que definido de usuários do sistema. Cada usuário é colocado em pelo menos um grupo quando sua conta é criada. </li></ul><ul><li>Permissões são definidas em três tipos: leitura(r), escrita(w) e execução(x). </li></ul><ul><li>Essas permissões podem ser concedidas a três tipos de usuários: dono do arquivo, o grupo ao qual o arquivo pertence, e a todos usuários. </li></ul><ul><li>ls –l </li></ul><ul><li>drwxr-xr-- 12 aluno1 users 4096 2006-12-05 15:23 aluno1 </li></ul><ul><li>-rwxr-xr-- 12 marina users 4096 2006-11-08 17:12 aluno2 </li></ul><ul><li>1º. Caracter representa o tipo de arquivo “-” representa arquivo comum e “d” diretório. </li></ul><ul><li>Os próximos três caracteres (“rwx”) representam as permissões concedidas ao dono do arquivo, aluno1 ou marina. </li></ul><ul><li>Os próximos três caracteres (“r-x”) representam as permissões do grupo. O usuário pertencente ao grupo poderá ler e executar o arquivo. </li></ul><ul><li>Os próximos três caracteres (“r—”) representam as permissões para qualquer usuário do sistema. Outros usuários podem ler o arquivo, mas não escrever ou executar. </li></ul><ul><li>EXERCÍCIO </li></ul><ul><li>Descreva que tipo permissão é essa –rw--wx---? </li></ul>
    14. 14. Modificando as permissões <ul><li>chmod {a,u,g,o}{+,-}{r,w,x}arquivos </li></ul><ul><li>As primeiras letras indicam a quem você está concedendo ou retirando permissões </li></ul><ul><ul><li>a  “all” </li></ul></ul><ul><ul><li>u  usuário </li></ul></ul><ul><ul><li>g  grupos </li></ul></ul><ul><ul><li>o  outros </li></ul></ul><ul><li>Depois especifique se está adicionando (+) ou retirando(-) direitos. </li></ul><ul><li>E por fim, especifique o tipo de permissão: leitura ( r ead), escrita( w rite) e execução (e x ecute). </li></ul><ul><li>Exemplo </li></ul><ul><li>ls –l lixo.txt </li></ul><ul><li>chmod a+r lixo.txt </li></ul><ul><li>Dá permissão de leituras para todos usuários </li></ul><ul><li>chmod +r lixo.txt </li></ul><ul><li>é a mesma coisa. </li></ul><ul><li>chmod og-x lixo.txt </li></ul><ul><li>remove permissão de execução de usuários que não o próprio dono. </li></ul><ul><li>EXERCÍCIO </li></ul><ul><li>Permita que o dono leia, escreva e execute o arquivo lixo.txt </li></ul><ul><li>Remova as permissões de leitura para outros usuários que não sejam o dono ou usuários do grupo para o arquivo lixo.txt </li></ul>
    15. 15. Comando de Busca <ul><li>grep [expressão] [arquivo] [opções] </li></ul><ul><ul><li>- A [número]  mostra o número de linhas após a linha encontrada pelo grep </li></ul></ul><ul><ul><li>- B [número]  mostra o número de linhas antes a linha encontrada pelo grep </li></ul></ul><ul><ul><li>- f [arquivo]  Especifica que o texto que será localizado está no arquivo. </li></ul></ul><ul><ul><li>- i  ignora a diferença entre maiúscula e minúscula. </li></ul></ul><ul><ul><li>- n  mostra o nome de cada linha encontrada pelo grep </li></ul></ul><ul><ul><li>-U  trata o arquivo que será tratado como binário. </li></ul></ul><ul><li>Exemplo </li></ul><ul><li>grep “data” /etc/passwd </li></ul><ul><li>ps –aux | grep inetd </li></ul><ul><li>grep “data” /etc/passwd -A12 –B15 </li></ul><ul><li>grep -n “sh” /etc/passwd </li></ul><ul><li>Exercício </li></ul><ul><li>Qual a linha está o texto /bin/ no arquivo /etc/passwd? </li></ul>
    16. 16. Redirecionamentos e pipes <ul><li>stdin  entrada padrão ( standard input ) </li></ul><ul><li>stdout  saída padrão (standard out) </li></ul><ul><li>Quando não especifica o arquivo, por exemplo; o comando cat, vai ler dados stdin e mandar dados para stdout . </li></ul><ul><li>Exemplo </li></ul><ul><li>cat </li></ul><ul><li>Olá </li></ul><ul><li>Olá </li></ul><ul><li>Bye </li></ul><ul><li>Bye </li></ul><ul><li>{ctrl-D} </li></ul><ul><li>Agora você quer mudar a saída do sort para um arquivo, para gravar sua lista de compras no disco. A saída padrão é direcionada usando o simbolo”>” </li></ul><ul><li>sort > lista_de_eventos </li></ul><ul><li>Norte do Peru </li></ul><ul><li>João Câmara </li></ul><ul><li>Faixa Tocantins </li></ul><ul><li>{ctrl-D} </li></ul><ul><li>cat lista_de_eventos </li></ul><ul><li>Saida não-destrutiva </li></ul><ul><li>Exemplo </li></ul><ul><li>cat >> lista_de_eventos </li></ul><ul><li>Plataforma </li></ul><ul><li>San Juan </li></ul><ul><li>Santiago Del Estero </li></ul><ul><li>{ctrl-D} </li></ul>
    17. 17. Use o pipe <ul><li>ls > lista </li></ul><ul><li>sort –r lista </li></ul><ul><li>Gravou a saída do ls num arquivo lista, e então executou “sort –r”. Esse arquivo temporário não será usado. Existe outra maneira de fazer isso? </li></ul><ul><li>PIPES (|), o stdout do primeiro comando é enviada para o stdin do segundo comando. No caso acima, queremos mandar o stdout do ls para o stdin do sort. </li></ul><ul><li>ls | sort –r </li></ul><ul><li>EXERCÍCIO </li></ul><ul><li>Mostre a saída de uma lista de arquivos em /usr/bin, onde você poderá paginar. </li></ul><ul><li>Use mais pipes  adicione o comando “tail -1” no exemplo “ls | sort –r” e veja o que acontece </li></ul>
    18. 18. Tarefa em segundo plano, abortando tarefas, parando tarefas. <ul><li>yes > lixo </li></ul><ul><li>Esse processo continua infinitamente. Para matar o processo clique a tecla (Ctrl-C). </li></ul><ul><li>head lixo </li></ul><ul><li>Para colocar o processo em segundo plano é necessário usar o caractere “&”. </li></ul><ul><li>gedit lixo & </li></ul><ul><li>[1] 25273 </li></ul><ul><li>jobs </li></ul><ul><li>[1] + Running yes > lixo </li></ul><ul><li>O processo yes está rodando em segundo plano. Para matar a tarefa, use o comando kill e use como argumento um dos número acima. </li></ul><ul><li>kill %1 ou kill 25273 </li></ul><ul><li>Jobs </li></ul><ul><li>PARANDO TAREFAS </li></ul><ul><li>gedit lixo </li></ul><ul><li>{ctrl-Z} </li></ul><ul><li>[1] + gedit lixo > lixo </li></ul><ul><li>Crtl-Z pára temporariamente até que você reinicie. </li></ul><ul><li>Para reiniciar use o comando “fg” ( foreground ) </li></ul><ul><li>fg </li></ul><ul><li>A tarefa volta para o primeiro plano, Pare a tarefa novamente com ctrl-Z e use o comando bg para colocar a tarefa em segundo plano </li></ul><ul><li>{ctrl-z} </li></ul><ul><li>bg </li></ul><ul><li>[1] + yes > lixo. </li></ul>
    19. 19. Editores <ul><li>Existem diversos editores </li></ul><ul><li>vi (editor) </li></ul><ul><li>emacs(editor) </li></ul><ul><li>Open Office </li></ul><ul><li>nedit (editor) </li></ul><ul><li>gedit – Vamos usar esse no curso </li></ul><ul><li>gedit lixo & </li></ul>
    20. 20. Introdução ao comando awk <ul><li>O nome é derivado das iniciais de seus três criadores, Aho, Kernighan, e Weinberger. Funciona com pipes ou diretamente com arquivos. </li></ul><ul><li>Sua importância </li></ul><ul><ul><li>se for necessário fazer frequentemente alterações em vários arquivos texto, onde quer que seja que certos padrões apareçam; </li></ul></ul><ul><ul><li>se for necessário extrair dados de algumas linhas de um arquivo enquanto o resto é descartado. Ou seja, com awk é possível gerenciar tarefas simples de &quot;reformatar dados&quot; com apenas algumas linhas de código. </li></ul></ul><ul><li>Com awk é possível: gerenciar pequenos banco de dados pessoais; gerar relatórios; validar dados; produzir índices, e fazer outras tarefas de preparação de documentos; fazer experimentos com algoritmos que podem ser adaptados posteriormente a outras linguagens de programação. </li></ul><ul><li>  awk [ação] [Programa] [Arq1Entrada] [Arq2Entrada] </li></ul>
    21. 21. Vamos começar awk <ul><li>Use o comando cat para criar o arquivo terremoto.txt </li></ul><ul><li>2007/07/31 21:09:20.9000 -3.024 36.423 10 4.7 MB QED TANZANIA </li></ul><ul><li>2007/07/31 19:38:33.5000 -13.862 170.494 635 4.6 MB QED VANUATU ISLANDS </li></ul><ul><li>2007/07/31 15:07:36.1000 27.336 126.852 16 5.7 MS QED RYUKYU ISLAND </li></ul><ul><li>2007/07/31 12:58:29.1000 28.227 138.979 509 5.2 MB QED BONIN ISLANDS </li></ul><ul><li>2007/07/30 23:37:50.3000 -17.262 -178.777 560 5.1 MB QED FIJI ISLANDS </li></ul><ul><li>2007/07/30 10:38:37.6000 1.998 97.946 30 4.9 MB QED SUMATRA </li></ul><ul><li>2007/07/30 06:20:34.6000 46.857 152.623 10 4.8 MB QED KURIL ISLANDS </li></ul><ul><li>----------------------------------- Agora faça cada comando e veja o resultado. </li></ul><ul><li>awk ‘/MB/’ terremoto.txt  mostra somente as linhas que contem o texto MB </li></ul><ul><li>awk ‘{print $3, $4}’ terremoto.txt  mostra o campo 3 e 4 do arquivo terremoto.txt </li></ul><ul><li>awk ‘/MB/ {print $3, $4}’ terremoto.txt  O que esse comando faz? </li></ul><ul><li>awk ‘/S/’ terremoto.txt  mostra as linhas que contem o caractere S </li></ul><ul><li>awk ‘$1 ~ /1/’ terremoto.txt  o operador ~ mostra todas as linhas que contem o número 1 no primeiro campo </li></ul><ul><li>awk ‘$6 == 4.6 {print $2, $1, $6}’ terremoto.txt  compara o número do sexto campo com valor 4.6. </li></ul>
    22. 22. <ul><li>awk ‘$5 <= 100’ terremoto </li></ul><ul><li>____________________________ </li></ul><ul><li>o operador && -- “e” duas o mais condições. </li></ul><ul><li>awk ‘$5 >= 500 && $5 <600’ terremoto </li></ul><ul><li>O operador “,” seleciona o grupo de linhas. </li></ul><ul><li>awk ‘/TANZANIA/,/SUMATRA/’ terremoto.txt </li></ul><ul><li>Use o gedit para criar o arquivo pre_inicio com o texto </li></ul><ul><li>BEGIN {print “Data hora Lat Lon Prof Mag Regiao”} </li></ul><ul><li>{print} </li></ul><ul><li>Para inserir comandos em arquivo usa-se a opção –f antes do nome contendo o programa em awk. </li></ul><ul><li>Usando BEGIN . O programa pre_inicio usa BEGIN para inseri cabeçario. </li></ul><ul><li>awk –f pre_inicio terremoto </li></ul><ul><li>Função length sem argumento mostra o número de caracteres na linha, incluindo os espaços. A variável $0 imprime toda a linha. </li></ul><ul><li>awk ‘{print length, $0}’ terremoto | sort </li></ul><ul><li>NR – referente o número de linha </li></ul><ul><li>NF – referente o número de campos </li></ul><ul><li>FS – insere um espaço </li></ul><ul><li>RS – insere uma nova linha </li></ul><ul><li>EXERCÍCIO </li></ul><ul><li>Veja o que o comando awk ‘length > 40 {print NR}’ terremoto </li></ul><ul><li>Mostre do arquivo somente as linhas três quatro e cinco do arquivo terremoto. </li></ul>
    23. 23. <ul><li>END  similar ao BEGIN </li></ul><ul><li>awk ‘END {print NR, “eventos.”}’ terremoto </li></ul><ul><li>Usando o comando “if” para mudar o tipo de magnitude. </li></ul><ul><li>Edite o programa awk  altera_mag (use gedit ou cat) </li></ul><ul><li>{ </li></ul><ul><li>if ($7 ~ /MB/) $7 = “MS” </li></ul><ul><li>if ($7 ~ /MS/) $7 = “MB” </li></ul><ul><li>print </li></ul><ul><li>} </li></ul><ul><li>awk –f altera_mag terremoto </li></ul>
    24. 24. Printf (awk) <ul><li>Controla a saída do print de acordo com formato. </li></ul><ul><li>printf “formato do caractere” arg1, arg2,...,argn. </li></ul><ul><li>n  nova linha </li></ul><ul><li>t  </li></ul><ul><li>[-][-x.[y]]conv </li></ul><ul><li>x é extensão mínima do campo, e o .y o número de caracteres a direita do ponto decimal. Conv é a letra que especifica o formato. </li></ul><ul><li>conv </li></ul><ul><li>d  decimal </li></ul><ul><li>e  notação científica </li></ul><ul><li>f  específica de formato variável </li></ul><ul><li>s  caracteres. </li></ul><ul><li>Exemplo:Edite o texto abaixo no arquivo printf_demo </li></ul><ul><li>BEGIN {print “Data hora Lat Lon Prof Mag Regiao”} </li></ul><ul><li>{print </li></ul><ul><li>“ ----------------------------------------------------------------------”} </li></ul><ul><li>{ </li></ul><ul><li>if ($7 ~ /MB/) $7 = “MS” </li></ul><ul><li>printf “%2.1f t %10s t %11s t %8.3f t %8.3f t %3d magnitude n”, $1, $2, $3, $4, $5, $6 </li></ul><ul><li>} </li></ul><ul><li>awk –f print_demo terremoto. </li></ul>tab
    25. 25. <ul><li>Até amanhã! </li></ul>
    26. 26. Aula 2: Shell Script <ul><li>Começando!!! </li></ul><ul><li>Por exemplo, se de tempos em tempos você quer saber informações do sistema como </li></ul><ul><li>horário, ocupação do disco e os usuários que estão logados, é preciso digitar três </li></ul><ul><li>comandos: </li></ul><ul><li>date </li></ul><ul><li>df </li></ul><ul><li>w </li></ul><ul><li>É melhor fazer um script chamado &quot;sistema&quot; e colocar estes comandos nele. O conteúdo do arquivo &quot;sistema&quot; seria o seguinte: </li></ul><ul><li>#!/bin/bash </li></ul><ul><li>date </li></ul><ul><li>df </li></ul><ul><li>w </li></ul><ul><li>E para chamar este script, basta agora executar apenas um comando: </li></ul><ul><li>./sistema (não esqueça do comando “chmod”, veja se está executável, se torne-o) </li></ul><ul><li>Isso é um Shell Script . Um arquivo de texto que contém comandos do sistema e pode ser executado pelo usuário </li></ul>
    27. 27. Primeiro Shell Script <ul><li>Escolher um nome para o script </li></ul><ul><ul><li>Já temos um nome: sistema. </li></ul></ul><ul><li>Use apenas letras minúsculas e evite acentos, símbolos e espaço em branco </li></ul><ul><li>Escolher o diretório onde colocar o script </li></ul><ul><li>Para que o script possa ser executado de qualquer parte do sistema, mova−o para um diretório que esteja no seu PATH. </li></ul><ul><li>O que o PATH? É o local onde está todos os arquivos executáveis. </li></ul><ul><li>cat > .bashrc </li></ul><ul><li>export PATH=$PATH:/home/aula/bin.  /usr/local/sac/bin </li></ul><ul><li>{ctrl-d} </li></ul><ul><li>source .bashrc </li></ul><ul><li>Crie no seu HOME o diretório bin e dentro do diretório bin mova o arquivo sistema </li></ul><ul><li>echo $PATH </li></ul><ul><li>Colocar a chamada do Shell na primeira linha - A primeira linha do script deve ser: </li></ul><ul><li>#!/bin/bash </li></ul><ul><li>Para que ao ser executado, o sistema saiba que é o Shell quem irá interpretar estes </li></ul><ul><li>comandos. </li></ul><ul><li>Tornar o script um arquivo executável </li></ul><ul><ul><li>Use o seguinte comando para que seu script seja reconhecido pelo sistema como um comando executável: </li></ul></ul>
    28. 28. Melhorando Shell Script <ul><li>Executar os três comandos seguidos resulta num bolo de texto na tela, misturando as informações e dificultando o entendimento. </li></ul><ul><li>O comando &quot;echo&quot; serve para mostrar mensagens na tela. Que tal anunciar cada comando antes de executá-lo? </li></ul><ul><li>#!/bin/bash (Vc poderá usar #!/bin/csh) </li></ul><ul><li>echo &quot;Data e Horário:&quot; </li></ul><ul><li>date </li></ul><ul><li>echo </li></ul><ul><li>echo &quot;Uso do disco:&quot; </li></ul><ul><li>df </li></ul><ul><li>echo </li></ul><ul><li>echo &quot;Usuarios conectados:&quot; </li></ul><ul><li>w </li></ul><ul><li>Para usar o echo, basta colocar o texto entre &quot;aspas&quot;. Se nenhum texto for colocado, uma linha em branco mostrada. </li></ul>
    29. 29. Interagir com o Usuário <ul><li>Para o script ficar mais completo, vamos colocar uma interação mínima com o usuário, </li></ul><ul><li>pedindo uma confirmação antes de executar os comandos. </li></ul><ul><li>O comando &quot;read&quot; leu o que o usuário digitou e guardou na variável RESPOSTA. Logo em seguida, o comando &quot;test&quot; checou se o conteúdo dessa variável era &quot;n&quot;. Se afirmativo, o comando &quot;exit&quot; foi chamado e o script foi finalizado. Nessa linha há vários detalhes importantes: </li></ul><ul><ul><li>O conteúdo da variável é acessado colocando−se um cifrão &quot;$&quot; na frente </li></ul></ul><ul><ul><li>O comando test é muito útil para fazer vários tipos de checagens em textos e arquivos </li></ul></ul><ul><ul><li>O operador lógico E &quot;&&&quot;, só executa o segundo comando caso o primeiro tenha sido OK. O operador OU é o &quot;||&quot; </li></ul></ul><ul><li>#!/bin/bash </li></ul><ul><li>echo &quot;Vou buscar os dados do sistema. Posso continuar? [sn] &quot; </li></ul><ul><li>read RESPOSTA </li></ul><ul><li>test &quot;$RESPOSTA&quot; = &quot;n&quot; && exit </li></ul><ul><li>echo &quot;Data e Horário:&quot; </li></ul><ul><li>date </li></ul><ul><li>echo </li></ul><ul><li>echo &quot;Uso do disco:&quot; </li></ul><ul><li>df </li></ul><ul><li>echo </li></ul><ul><li>echo &quot;Usuários conectados:&quot; </li></ul><ul><li>w </li></ul>
    30. 30. Melhorar o Código do Script <ul><li>Com o tempo, o script vai crescer, mais comandos vão ser adicionados e quanto maior, mais difícil encontrar o ponto certo onde fazer a alteração ou corrigir algum erro. Para poupar horas de estresse, e facilitar as manutenções futuras, é preciso deixar o código visualmente mais agradável e espaçado, e colocar comentários esclarecedores. </li></ul><ul><li>Basta iniciar a linha com um &quot;#&quot; e escrever o texto do comentário em seguida. Estas linhas são ignoradas pelo Shell durante a execução. O cabeçalho com informações sobre o script e seu autor também é importante para se ter uma visão geral do que o script faz, sem precisar decifrar seu código. </li></ul><ul><li>Também é possível colocar comentários no meio da linha # como este </li></ul><ul><li>#!/bin/bash </li></ul><ul><li># sistema − script que mostra informações sobre o sistema </li></ul><ul><li># Autor: Fulano da Silva </li></ul><ul><li># Pede uma confirmação do usuário antes de executar </li></ul><ul><li>echo &quot;Vou buscar os dados do sistema. Posso continuar? [sn] &quot; </li></ul><ul><li>read RESPOSTA </li></ul><ul><li># Se ele digitou 'n', vamos interromper o script </li></ul><ul><li>test &quot;$RESPOSTA&quot; = &quot;n&quot; && exit </li></ul><ul><li># O date mostra a data e a hora correntes </li></ul><ul><li>echo &quot;Data e Horário:&quot; </li></ul><ul><li>date </li></ul><ul><li>echo </li></ul><ul><li># O df mostra as partições e quanto cada uma ocupa no disco </li></ul><ul><li>echo &quot;Uso do disco:&quot; </li></ul><ul><li>df </li></ul><ul><li>echo </li></ul><ul><li># O w mostra os usuários que estão conectados nesta máquina </li></ul><ul><li>echo &quot;Usuários conectados:&quot; </li></ul><ul><li>w </li></ul>
    31. 31. Fixando conceitos básicos <ul><li>As variáveis são a base de qualquer script. É dentro delas que os dados obtidos durante a </li></ul><ul><li>execução do script serão armazenados. Para definir uma variável, basta usar o sinal de </li></ul><ul><li>igual &quot;=&quot; e para ver seu valor, usa−se o &quot;echo&quot;: </li></ul><ul><li>Não podem haver espaços ao redor do igual &quot;=“ </li></ul><ul><li>Exemplo: </li></ul><ul><li>VARIAVEL=&quot;um dois tres“ </li></ul><ul><li>echo $VARIAVEL </li></ul><ul><li>um dois tres </li></ul><ul><li>echo $VARIAVEL $VARIAVEL </li></ul><ul><li>um dois tres um dois tres </li></ul><ul><li>Ainda é possível armazenar a saída de um comando dentro de uma variável. Ao invés de </li></ul><ul><li>aspas, o comando deve ser colocado entre &quot;$(...)&quot;, veja: </li></ul><ul><li>HOJE=$(date) </li></ul><ul><li>echo &quot;Hoje é: $HOJE&quot; </li></ul><ul><li>Hoje é: Sáb Abr 24 18:40:00 BRT 2004 </li></ul><ul><li>unset HOJE </li></ul><ul><li>echo $HOJE </li></ul><ul><li>&quot;unset&quot; apaga uma variável. </li></ul>
    32. 32. O comando test <ul><li>O canivete suíço dos comandos do Shell é o &quot;test&quot;, que consegue fazer vários tipos de checagens, em números, textos e arquivos. Ele possui várias opções para indicar que tipo de teste será feito, algumas delas: </li></ul>
    33. 33. Exemplo e Exercício <ul><li>Em todos as comandos que aceitam condições (ex. if, while) deve ser posto um comando nessa condição, sendo avaliado o valor devolvido por esse comando. </li></ul><ul><li>if ls &quot;$1&quot; > /dev/null 2>&1; </li></ul><ul><li>then </li></ul><ul><li>echo true </li></ul><ul><li>else </li></ul><ul><li>echo false </li></ul><ul><li>fi </li></ul><ul><li>Se o comando ls devolver true (0) o código relativo ao then é executado, se devolver false (1) é executado o código relativo ao else. </li></ul><ul><li>o comando test pode ser simplificado na sua escrita para [ e fecha o comando ]. </li></ul><ul><li>read arq </li></ul><ul><li>sistema </li></ul><ul><li>[ -f “$arq” ] && echo “$arq é um arquivo” </li></ul><ul><li>Fazer o script &quot;testa−arquivos&quot;, que pede ao usuário para digitar um arquivo e testa se este arquivo existe. Se sim, diz se é um arquivo ou um diretório. </li></ul><ul><li>Exemplo de uso: </li></ul><ul><li>testa−arquivos </li></ul><ul><li>Digite o arquivo: /naoexiste </li></ul><ul><li>O arquivo '/naoexiste' não foi encontrado </li></ul><ul><li>testa−arquivos </li></ul><ul><li>Digite o arquivo: /tmp </li></ul><ul><li>/tmp é um diretório </li></ul><ul><li>testa−arquivos </li></ul><ul><li>Digite o arquivo: /etc/passwd </li></ul><ul><li>/etc/passwd é um arquivo </li></ul>
    34. 34. Resposta <ul><li>testa-arquivos </li></ul><ul><li>#!/bin/bash </li></ul><ul><li>echo -n &quot;Digite o arquivo: &quot;; read ARQUIVO </li></ul><ul><li>[ -d &quot;$ARQUIVO&quot; ] && echo &quot;$ARQUIVO é um diretorio&quot; </li></ul><ul><li>[ -f &quot;$ARQUIVO&quot; ] && echo &quot;$ARQUIVO é um arquivo&quot; </li></ul><ul><li>[ -f &quot;$ARQUIVO&quot; -o -d &quot;$ARQUIVO&quot; ] || </li></ul><ul><li>echo &quot;O arquivo '$ARQUIVO' nao foi encontrado&quot; </li></ul><ul><li>echo </li></ul>
    35. 35. Referências <ul><li>Manual do awk ( http://www.inf.pucrs.br/~manssour/AWK/index.html ) </li></ul><ul><li>Practical guide to the Unix system - M.K. Sobell Third Edition. </li></ul><ul><li>Apostila do Aurélio (http://aurelio.net/shell/apostila/) </li></ul>
    36. 36. If, For e While <ul><li>Assim como qualquer outra linguagem de programação, o Shell também tem estruturas para se fazer condicionais e loop. As mais usadas são if, for e while. </li></ul><ul><li>for VAR in LISTA </li></ul><ul><li>do </li></ul><ul><li>comandos </li></ul><ul><li>done </li></ul>if COMANDO then comandos else comandos fi No caso c shell é outro estrutura mais vamos nos fixar no C shell (endif) while do comandos done
    37. 37. <ul><li>Há um atalho para o test , que é o comando [. Ambos são exatamente o mesmo comando, porém usar o [ deixa o if mais parecido com o formato tradicional de outras linguagens: </li></ul><ul><li>#!/bin/bash </li></ul><ul><li>echo &quot;Digite o número: &quot;; read VARIAVEL </li></ul><ul><li>if [ &quot;$VARIAVEL&quot; −gt 10 ] </li></ul><ul><li>then </li></ul><ul><li>echo &quot;é maior que 10&quot; </li></ul><ul><li>else </li></ul><ul><li>echo &quot;é menor que 10&quot; </li></ul><ul><li>fi </li></ul><ul><li>o if testa um comando e não uma condição. Porém como já conhecemos qual o comando do Shell que testa condições, é só usá−lo em conjunto com o if. Por exemplo, para saber se uma variável é maior ou menor do que 10 e mostrar uma mensagem na tela informando: </li></ul><ul><li>if test &quot;$VARIAVEL&quot; −gt 10 </li></ul><ul><li>then </li></ul><ul><li>echo &quot;é maior que 10&quot; </li></ul><ul><li>else </li></ul><ul><li>echo &quot;é menor que 10&quot; </li></ul><ul><li>fi </li></ul>Condição if
    38. 38. Condição while e for <ul><li>Já o while é um laço que é executado enquanto um comando retorna OK. Usaremos o test (ou o [). Por exemplo, para segurar o processamento do script enquanto um arquivo de lock não é removido: </li></ul><ul><li>while test −f /tmp/lock </li></ul><ul><li>do </li></ul><ul><li>sleep 1 </li></ul><ul><li>done </li></ul><ul><li>o for percorre uma lista de palavras, pegando uma por vez: </li></ul><ul><li>for numero in um dois três quatro cinco </li></ul><ul><li>do </li></ul><ul><li>echo &quot;Contando: $numero&quot; </li></ul><ul><li>done </li></ul>
    39. 39. Condição For <ul><li>Uma ferramenta muito útil para usar com o for é o seq, que gera uma seqüência numérica. Para fazer o loop andar 10 passos, pode−se fazer: </li></ul><ul><li>seq [opções] [primeiro] [incremento] [último] </li></ul><ul><li>Primeiro  Número inicial da seqüência. </li></ul><ul><li>Incremento  Número utilizado para avançar na seqüência. </li></ul><ul><li>Último  Número final da seqüência. </li></ul><ul><li>opções </li></ul><ul><li>-f, -Formato de saída dos números da seqüência. Utilize o estilo do printf para ponto flutuante. </li></ul><ul><li>-s, Usa [string] para separar a seqüência de números . </li></ul><ul><li>-w, zeros na frente dos números mantendo a seqüência alinhada. </li></ul><ul><li>seq 0 2 10 </li></ul><ul><li>seq -w 0 10 </li></ul><ul><li>seq -f%f 0 10 </li></ul><ul><li>seq -s&quot;, &quot; 0 10 </li></ul><ul><li>----------- </li></ul><ul><li>for passo in $(seq 10) </li></ul><ul><li>O mesmo passo anterior pode ser feito com o while, usando um contador: </li></ul><ul><li>i=0 </li></ul><ul><li>while test $i −le 10 </li></ul><ul><li>do </li></ul><ul><li>i=$((i+1)) </li></ul><ul><li>echo &quot;Contando: $i&quot; </li></ul><ul><li>done </li></ul><ul><li>E temos ainda o loop infinito, com condicional de saída usando o &quot;break¨: </li></ul><ul><li>while : </li></ul><ul><li>do </li></ul><ul><li>if test −f /tmp/lock </li></ul><ul><li>then </li></ul><ul><li>echo &quot;Aguardando liberação do lock...“ </li></ul><ul><li>sleep 1 </li></ul><ul><li>else </li></ul><ul><li>break </li></ul><ul><li>fi </li></ul><ul><li>done </li></ul>
    40. 40. Exercícios Vc também tem que aprender a se virar sozinho! <ul><li>relacao.sh -- > Recebe dois números como parâmetro e mostra a relação entre eles. Exemplo: </li></ul><ul><li>$ ./relacao.sh 3 5 </li></ul><ul><li>3 é menor 5 </li></ul><ul><li>$ ./relacao.sh 5 3 </li></ul><ul><li>5 é maior 3 </li></ul><ul><li>$ ./relacao.sh 5 5 </li></ul><ul><li>5 é igual 5 </li></ul><ul><li>Reposta </li></ul><ul><li>#!/bin/sh </li></ul><ul><li>if [ $1 −eq $2 ] then </li></ul><ul><li>echo &quot;$1 é igual $2&quot; </li></ul><ul><li>if [ $1 −lt $2 ] then </li></ul><ul><li>echo &quot;$1 é menor $2&quot; </li></ul><ul><li>else </li></ul><ul><li>echo &quot;$1 é maior $2&quot; </li></ul><ul><li>fi </li></ul><ul><li>_ </li></ul><ul><li>#!/bin/bash </li></ul><ul><li>echo “digite o primeiro numero’ </li></ul><ul><li>read prim </li></ul><ul><li>echo ‘digie o segundo numero’ </li></ul><ul><li>read seg </li></ul><ul><li>If [ $prim –eq $seg ]; </li></ul><ul><li>then </li></ul><ul><li>echo “$prim é igual $seg“ </li></ul><ul><li>fi </li></ul><ul><li>If [ $prim –lt $seg ]; </li></ul><ul><li>then </li></ul><ul><li>echo “$prim é menor $seg” </li></ul><ul><li>fi </li></ul><ul><li>If [ $prim –gt $seg ]; </li></ul><ul><li>then </li></ul><ul><li>echo “$prim é maior $sef” </li></ul><ul><li>fi </li></ul>
    41. 41. zerador.sh Recebe um número como parâmetro e o diminui até chegar a zero, mostrando na tela cada passo, numa mesma linha. <ul><li>Exemplo: </li></ul><ul><li>$ ./zerador.sh 5 </li></ul><ul><li>5 4 3 2 1 0 </li></ul><ul><li>$ ./zerador.sh 10 </li></ul><ul><li>10 9 8 7 6 5 4 3 2 1 0 </li></ul><ul><li>Resposta </li></ul><ul><li>#!/bin/bash </li></ul><ul><li>i=$1 </li></ul><ul><li>while [ $i −ge 0 ]; do </li></ul><ul><li>echo −n &quot;$i &quot; </li></ul><ul><li>i=$((i−1)) </li></ul><ul><li>done </li></ul><ul><li>echo </li></ul>
    42. 42. substring.sh Recebe duas palavras como parâmetro e checa se a primeira palavra está contida dentro da segunda. Só mostra mensagem informativa em caso de sucesso, do contrário não mostra nada. <ul><li>Exemplo: </li></ul><ul><li>$ ./substring.sh ana banana </li></ul><ul><li>ana está contida em banana </li></ul><ul><li>$ ./substring.sh banana maria </li></ul><ul><li>$ ./substring.sh banana </li></ul><ul><li>$ ./substring.sh </li></ul><ul><li>$ </li></ul><ul><li>Dica: Veja se o comando grep é útil! </li></ul><ul><li>#!/bin/sh </li></ul><ul><li>[ $# −ne 2 ] && exit </li></ul><ul><li>echo $2 | grep −qs $1 && echo &quot;$1 está contida em $2&quot; </li></ul>
    43. 43. juntatudo.sh Mostra na tela &quot;grudados&quot; todos os parâmetros recebidos na linha de comando, como uma única palavra. <ul><li>Exemplo: </li></ul><ul><li>$ ./juntatudo.sh a b c d e f verde azul </li></ul><ul><li>abcdefverdeazul </li></ul><ul><li>Pesquise sobre o comando tr </li></ul><ul><li>man tr </li></ul><ul><li>#!/bin/sh </li></ul><ul><li>echo $* | tr −d ' ' </li></ul>
    44. 44. users.sh Do arquivo /etc/passwd, mostra o usuário e o nome completo de cada usuário do sistema (campos 1 e 5) separados por um TAB. <ul><li>Exemplo: </li></ul><ul><li>$ ./users.sh </li></ul><ul><li>ftp FTP User </li></ul><ul><li>nobody Nobody </li></ul><ul><li>named Domain name server </li></ul><ul><li>xfs X Font Server </li></ul><ul><li>mysql MySQL server </li></ul><ul><li>aula aula </li></ul><ul><li>Use os comandos cut e tr </li></ul><ul><li>#!/bin/sh </li></ul><ul><li>cat /etc/passwd | cut −d : −f 1,5 | tr : 't' </li></ul>
    45. 45. shells.sh Do arquivo /etc/passwd, mostra todos os shells (último campo) que os usuários usam. Não mostrar linhas repetidas. <ul><li>Exemplo: </li></ul><ul><li>$ ./shells.sh </li></ul><ul><li>/bin/bash </li></ul><ul><li>/bin/false </li></ul><ul><li>/bin/sync </li></ul><ul><li>/sbin/halt </li></ul><ul><li>/sbin/shutdown </li></ul><ul><li>Pesquise sobre o comando uniq </li></ul><ul><li>#!/bin/sh </li></ul><ul><li>cat /etc/passwd | cut −d : −f 7 | sort | uniq </li></ul>
    46. 46. parametros.sh Mostra na tela todos os parâmetros recebidos na linha de comando, contando−os. <ul><li>Exemplo: </li></ul><ul><li>$ ./parametros.sh a b c d e f </li></ul><ul><li>Parâmetro 1: a </li></ul><ul><li>Parâmetro 2: b </li></ul><ul><li>Parâmetro 3: c </li></ul><ul><li>Parâmetro 4: d </li></ul><ul><li>Parâmetro 5: e </li></ul><ul><li>Parâmetro 6: f </li></ul><ul><li>Pesquise sobre o comando shift </li></ul><ul><li>#!/bin/bash </li></ul><ul><li>i=0 </li></ul><ul><li>while [ &quot;$1&quot; ] ; do </li></ul><ul><li>i=$((i+1)) </li></ul><ul><li>echo &quot;Parâmetro $i: $1&quot; </li></ul><ul><li>shift </li></ul><ul><li>done </li></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×