Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Servidores Mario Cavalcante Aula 4 Objetivos Conhecer e utilizar os comandos internos de um shell; Adquirir conhecimento para o desenvolvimento de scripts mais eficientes utilizando-se os comandos para escrever scripts shell 2 ‹nº› Um comando interno (ou builtin) é um comando contido dentro do shell. Comandos são construídos internamente ao shell por razões de desempenho ou por necessidades específicas de acesso direto à informações internas ao shell. 3 Comandos internos ‹nº› A maior parte dos comandos possui qualificadores, isto é, partículas que redefinem a execução default do comando. E cada comando possui detalhes específicos. Para facilitar podemos usar o help ou o man para buscar as possibilidades de um comando. 4 HELP e MAN ‹nº› Ao digitar: ls -- help temos: Uso: ls [OPÇÃO]... [ARQUIVO]... Argumentos obrigatórios para opções longas também o são para opções curtas. -a, --all não ignora entradas começando com . ... -d, --directory lista os diretório em vez de seu conteúdo, e não -g o mesmo que -l, mas não lista o dono 5 HELP e MAN ‹nº› O comando echo imprime na saída padrão uma expressão ou variável. Parâmetros -e trata caracteres de escape -n suprime o new line do final 6 Comandos de entrada e saída - echo ‹nº› O comando printf é uma melhoria do comando echo, fornecendo uma saída formata. Sua sintaxe é: printf formato parâmetros O formato segue o padrão do comando printf da linguagem C. 7 Comandos de entrada e saída - printf ‹nº› Lê um valor a partir de STDIN (por padrão o teclado) e o armazena em uma variável. Parâmetros: -s não mostrar os caracteres digitados -n N ler no máximo N caracteres -p "string" mostrar "string" antes da leitura 8 read –p “Digite o nome” nome Comandos de entrada e saída - read ‹nº› Lista os arquivos de um diretório ls /home 9 Comandos do sistema de arquivos - ls ‹nº› Muda o diretório de trabalho (diretório no qual o script irá atuar durante sua execução). cd /home 10 Comandos do sistema de arquivos - cd ‹nº› Retorna o diretório de trabalho corrente 11 Comandos do sistema de arquivos - pwd ‹nº› Cria um novo diretório mkdir /home/teste 12 Comandos do sistema de arquivos - mkdir ‹nº› Cria um novo diretório mkdir /home/teste 13 Comandos do sistema de arquivos - mkdir ‹nº› Remove um diretório rmdir /home/teste 14 Comandos do sistema de arquivos - rmdir ‹nº› Copia um arquivo Sintaxe: cp origem destino cp /etc/named.conf /home/teste No Linux um arquivo não necessita de uma extensão. Neste caso a cópia de “named.conf” será salva com nome “teste”. Ambos, origem e destino, continuam sendo arquivos texto 15 Comandos do sistema de arquivos - cp ‹nº› Move um arquivo para outro diretório, substitui o comando para renomear um arquivo Sintaxe: mv origem destino, mv /home/teste/arquivo1.txt /home/teste1/arquivonovo.sh 16 Comandos do sistema de arquivos - mv ‹nº› Exclui um arquivo ou diretório 17 Comandos do sistema de arquivos - rm ‹nº› Usados em complemento, usando pipe (|), a um comando para parar a execução e permitir a leitura de saídas longas. ls /etc | more Teste e descubra a diferença entre more e less. 18 Comandos do sistema de arquivos more e less ‹nº› Cria um novo arquivo touch novoarquivo Cria novoarquivo no diretório corrente. 19 Comandos do sistema de arquivos - touch ‹nº› Exibe o conteúdo de um arquivo texto cat /etc/named.conf São muitas opções, teste com: cat --help 20 Comandos do sistema de arquivos - cat ‹nº› Exibe o final de um arquivo texto. É muito usado com a opção –f , onde a exibição é automaticamente atualizada quando o arquivo de origem é modificado. Arquivos de log e de sistema são alterados automaticamente, assim é possível acompanhar algumas ações. tail /etc/named.conf 21 Comandos do sistema de arquivos - tail ‹nº› Abra 2 terminais, no primeiro, para exibir mensagens do sistema, digite: tail –f /var/log/messages No segundo digite: service network restart Observe no primeiro as mensagens do sistema 22 Exercício com tail ‹nº› Cria um link semelhante a um atalho do Windows. ln /home/aula/script1.sh programa 23 Comandos do sistema de arquivos - ln ‹nº› No Shell podemos ter dois tipos de links: Link simbólico fica quebrado quando o arquivo referenciado é movido; Hard Link o Link se mantém mesmo quando o arquivo é movido. Para criar um link simbólico use ln -s 24 Comandos do sistema de arquivos - ln ‹nº› Executa operações matemáticas sobre variáveis e expressões let soma=a+b 25 Comandos que atuam sobre variáveis - let ‹nº› set Altera o valor de variáveis internas do shell. O comando set sem parâmetros exibe as variáveis ativas (“setadas”) no sistema. unset Remove o valor de variáveis internas do shell. Na prática as coloca com valor null. 26 Comandos que atuam sobre variáveis - set ‹nº› export Torna a variável passada como parâmetro disponível para processos filho. readonly Torna uma variável disponível somente para leitura (a torna uma constante). Tentativas de alterar seu valor irão provocar uma mensagem de erro. 27 Comandos que atuam sobre variáveis - set ‹nº› source O comando source, que tem a mesma funcionalidade do comando ponto (.), importa os comandos do script passado como parâmetro e os executa localmente. exit Encerra a execução do script. 28 Comandos que afetam o comportamento do script ‹nº› exec Substitui o processo corrente pelo programa passado como parâmetro. 29 Comandos que afetam o comportamento do script ‹nº› jobs Lista os processos executando em segundo plano no shell, fornecendo o número do job. 30 Comandos para controle de jobs ‹nº› fg Traz para o primeiro plano um job que está executando em segundo plano. bg Coloca em execução em segundo plano um job cuja execução tenha sido suspensa. 31 Comandos para controle de jobs ‹nº› kill e killall Força o encerramento de um processo enviando ao processo um código de encerramento. ps e top Exibem processos ativos 32 Comandos para controle de jobs ‹nº› Script com erro (loop infinito) – script1.sh #!/bin/bash x=0 y=0 while [ $x -lt 5 ] do echo $y #let x=x+1 - incremento omitido para gerar o loop sem fim let y=y+1 done 33 Exercício sobre controle de jobs ‹nº› Abra 3 terminais: Execute o Script Digite: ps –ef | grep script1.sh 3.Depois de localizar interrompa o processo com kill -9 2233 (substitua pelo PID do seu script) 34 Exercício sobre controle de jobs ‹nº› true Sempre retorna um código de saída de sucesso (valor 0). false Sempre retorna um código de saída sem sucesso. help Fornece uma tela de ajuda sobre a utilização de comandos internos. 35 Outros Comandos ‹nº› Programação para Servidores Atividade Aula 4 Mario Cavalcante Copie cada arquivo com extensão .conf em /etc/ para /home/teste, renomeie cada arquivo de forma que o novo nome do arquivo se inicie por um número inteiro sequencial. 37 Atividade ‹nº› Na linha de comando: mkdir /home/teste cd /home /teste cp *.conf /home/teste Depois para cada arquivo copiado: mv arquivo.conf 1-arquivo.conf mv outro.conf 2-arquivo.conf 38 Solução ‹nº› #!/bin/bash rm -rf novo mkdir novo ls /etc/*.conf > /tmp/arquivo x=1 while read line do let x+=1 arq="${line:5}" echo "$x$arq" cp $line novo/$x$arq done < /tmp/arquivo 39 Solução ‹nº›
Compartilhar