Baixe o app para aproveitar ainda mais
Prévia do material em texto
23/09/2014 1 CCT0042 Programação para Servidores Programação Script Adaptado do Prof. Paulo Estevam Prof. Márcio Rodrigo Semestre Letivo: 2014.2 pág. � Toda linha de comentário deverá ser precedida do caractere #. Exemplos: #Meu primeiro script #Data: 11/11/11 #Este script deverá ser executado apenas hoje 3 23/09/2014 2 pág. Comentário da “primeira linha” � As linha iniciadas com o caractere # serão “ignoradas” pelo interpretador shell, exceção à primeira linha iniciada com #!, a qual indicará o interpretador a ser usado. A combinação “#!” também é conhecida como “shebang” ou “hashbang” (contração de sharp bang). Exemplos: ◦ #!/bin/sh ◦ #!/bin/bash ◦ #!/usr/bin/perl ◦ #!/usr/bin/tcl ◦ #!/bin/sed –f ◦ #!/usr/awk -f 4 pág. Observações: � � � Lembre-se que um script é executado em um outro shell (subshell) com interpretador especificado na primeira linha. Quando um script é executado, o seu arquivo é passado como parâmetro para o interpretador. Um comando que aceite um arquivo como parâmetro, poderá ser um interpretador. Exemplo de script tendo o comando “cat” como interpretador: 5 23/09/2014 3 pág. � � � Um script shell é um arquivo texto, padrão ASCII. Para criar um script, usar um editor de texto ou um editor de script da sua preferência (nano, mcedit, gedit). Exemplos: ou ou Nomodo gráfico: gedit Sintaxe: gedit ou gedit nome_arquivo gedit nome_arquivo & Nomodo texto: nano Sintaxe: nano ou nano nome_arquivo nano nome_arquivo & (e acessar os processos com jobs, fg número_job, bg número_job) 6 pág. � Nano 7 Omenu de teclas de atalho fica localizado no rodapé. No atalho, ^ = tecla control, ou seja: CTRL-X - Sai do editor. Irá perguntar se quer salvar seu trabalho (Y/N). CTRL-R - Ler e adiciona o texto de um arquivo no texto atual. CTRL-C - Mostra a posição atual do cursor. CTRL-K - 'Recorta' o texto. CTRL-U - 'Cola' o texto. CTRL-U - 'Cola' o texto. CTRL S - Salva o arquivo e continua editando. CTRL-T - verifica a ortografia do seu texto. CTRL-W - Faz uma busca no texto. CTRL-A- Leva o cursor para o início da linha. CTRL-E - Leva o cursor para o fim da linha. CTRL-G - Exibe a ajuda do Nano. 23/09/2014 4 pág. Passos: 1. 2. 3. 4. 5. 6. 7. Criar o arquivo; Digitar os comandos (algoritmo do script); Salvar o arquivo (e fechá-lo*); Testar o script (bash nome_arquivo); Conceder permissão de execução (chmod); Disponibilizar no PATH (jogar na pasta bin do usuário). Executar o script de qualquer lugar. *Caso, por exemplo, não tenha aberto de forma assíncrona com o gedit (gedit nome_arquivo &). 8 pág. 1. Criar o arquivo; Exemplos: gedit ou gedit script1 2. Digitar os comandos (algoritmo do script); 9 23/09/2014 5 pág. 3. Salvar o arquivo (e fechá-lo*); Salvá-lo com o nome “script1”. Observações: 1) Normalmente os scripts possuem extensão “.sh”. 2) Não salvar o arquivo com omesmo nome de uma palavra-chave ou comando do Bash. 4. Testar o script (bash nome_arquivo); Usar o interpretador para testar. Exemplo: bash script1 10 pág. 5. Conceder permissão de execução (chmod); Usar o comando chmod com a opção de execução (podendo ser também no modo octal). Exemplos: 11 23/09/2014 6 pág. Testando execução sem explicitar o interpretador Observações: 1) A sintaxe “./nome_arquivo” executa um programa ou script no diretório corrente. 2) A sintaxe com ponto-espaço, “. /nome_arquivo”, executa um programa ou script tendo como referência de busca o diretório raiz. Neste caso o ponto não referencia o diretório atual, mas sim, o raiz. 12 pág. 6. Disponibilizar no PATH (jogar na pasta bin do usuário). Observação: A maioria das distribuições Linux incentiva a prática em que cada usuário tenha um diretório específico para os seus programas de uso pessoal. Este diretório é chamado de “bin” e é um subdiretório do seu diretório home. Verifique se ele existe, se não tiver, crie-o e mova o arquivo para ele: 13 23/09/2014 7 pág. 7. Executar o script de qualquer lugar. Observação: A execução, de qualquer lugar, tornou-se possível graças ao script de inicialização “.bash_profile” que previamente exporta a variável de ambiente “PATH” com diretório pessoal “bin” do usuário. 14 pág. Definição de variável � Para que os scripts manipulem os dados, estes devem ser armazenados em variáveis, assim sendo, variáveis pode ser definida como sendo: � Local da “memória”, referenciado por um nome idenficador, onde são armazenados valores a seremmanipulados pelo script. 15 23/09/2014 8 pág. Regras para nomes identificadores de variáveis 1. 2. 3. 4. O primeiro caracter deve ser uma letra ou sublinhado (“_”). Os demais caracteres podem pertencer ao seguinte conjunto: {_,a,b,c,...,z, A,B,C,...,Z,0,1,2,...,9}, e sem limite de quantidade. Não possuir espaços em branco nem conter caracteres de pontuação ou especiais, tais como $, #,&,*,!,., etc. Não usar palavras reservadas do Bash. 16 pág. � Os nomes devem ser significativos, explicitando o seu conteúdo ou finalidade. Exemplos: ◦ DIR_BACKUP ◦ _diretorio_backup ◦ Data_proc_01 ◦ arqlog777 17 23/09/2014 9 Declaração � Não existe declaração formal de variável em um scritp shell. Uma variável pode ser criada e imediatamente usada em qualquer lugar do script. � � � Para criar uma variável, digite o nome da mesma seguido imediatamente por um sinal de igual ("="). Não são permitidos espaços em ambos os lados do sinal de igual. Após o sinal de igual, atribuir a informação que você deseja armazenar. Exemplos: _NomeScript=Teste finalidade_do_script=Nenhuma prioridade=10 AUTOR=“Deckster dos Anjos” pág. 18 pág. � � � � O operador de atribuição de valor a uma variável é o símbolo “=” (igual). O conteúdo de uma variável é sempre armazenado como sendo uma string (literal). Não há limite para a quantidade de caracteres que a variável pode armazenar. Para limpar o valor de uma variável faz-se uma atribuição nula (vazia). Exemplo: nome_dir= 19 23/09/2014 10 pág. Destruição de uma variável � Para se destruir uma variável deve-se utilizar o comando unset. Exemplos: unset _NomeScript unset finalidade_do_script unset prioridade 20 pág. � � � Para se referenciar, ou seja, para se obter (extrair) o valor de uma variável, utiliza-se o nome da variável precedido do caractere $. ($nome_variável) Este mecanismo é conhecido como substituição ou expansão de uma variável. Sempre que o shell vê uma palavra que começa com um “$”, ele tenta descobrir o que foi atribuído à variável e efetuar a substituição (troca). Exemplo: mensagem=“Olá mundo.” criação de variável echo $mensagem impressão na tela do conteúdo complemento=Voilá! criação de variável saida=$mensagem atribuição de valor de uma variável à outra echo $saida $complemento impressão na tela do conteúdo 21 23/09/2014 11 pág. Exemplo: mensagem=“Olá mundo.” echo $mensagem complemento=Voilá! criação de variável impressão na tela do conteúdo criação de variável saida2=“$mensagem $complemento” concatenação echo $saida2 impressão na tela do conteúdo 22 pág. � � � � � � As “variáveis de ambiente” armazenam valores que são utilizados para fins configuração do ambiente do usuário. As variáveis de ambiente são consideradas como sendo variáveis globais para o shell, isto é, disponíveis para os scripts executados naquele shell. O shell e os programas são executados em um ambiente configurado por estas variáveis. Estes valores ficam disponíveis a partir do instante em que o usuário faz o login. As “variáveis deambiente” são geralmente consideradas constantes, uma vez que raramente são alteradas. Por convenção, variáveis de ambiente são escritas com os nomes em letras maiúsculas. 23 23/09/2014 12 pág. � � As variáveis de ambiente são atualizadas através dos scripts de inicialização, os quais são executados toda vez que o usuário faz o login. O ambiente configurado do usuário contém variáveis que guardam valores tais como path, nome do usuário, seu diretório home, local de e-mails, diretório atual, etc. 24 pág. Comandos para configurar ou criar variáveis de ambiente � export Cria e/ou modifica o valor de uma variável de ambiente. � readonly Torna a variável de ambiente somente leitura. Exemplo: 25 23/09/2014 13 pág. Comandos para visualizar variáveis de ambiente � env (ou printenv ou export): Exibe apenas as variáveis que foram exportadas pelos scritps de inicialização ou diretamente (manualmente) no shell pelo usuário. � set Mostra todas as variáveis de ambiente do usuário, inclusive as que foram criadas diretamente (manualmente) no shell, mas não foram exportadas. 26 pág. Exemplos: � � � � � � � � � $HOME : Mostra o diretório home do usuário. $PWD : mostra o diretório atual de trabalho do usuário. $OLDPWD : Mostra o diretório anterior de trabalho do usuário. $HISTFILE : Mostra o nome do arquivo que armazena as linhas de comando digitadas pelo usuário (no shell bash o arquivo padrão é o .bash_history). $HISTSIZE : Mostra o número de linhas de comando digitadas pelo usuário que são memorizadas pelo sistema. $LOGNAME : Mostra o nome de acesso do usuário. $USER : mostra o nome do usuário atual. $UID : mostra o número de identificação do usuário. $MAIL : Mostra o diretório que contém as mensagens de correio eletrônicas recebidas pelo usuário. 27 23/09/2014 14 pág. � � � � � � � $SHELL : mostra o nome do shell atualmente em uso. $SHLVL : mostra o número de shells atualmente em execução na conta do usuário. $OSTYPE : Mostra o sistema operacional em uso. $TERM : mostra o tipo de terminal em uso. $PPID : mostra o número de identificação do processo que inicializou o shell do usuário. Existe um diretório em /proc com este número e que contém informações sobre o processo em questão. $PS1 : mostra a definição do prompt da linha de comando. $PS2 : mostra a definição do prompt secundário da linha de comando. O caractere $ se refere à substituição da variável, assim sendo, por exemplo, em $HOME, HOME é o nome da variável. 28 pág. Arquivos de inicialização do ambiente do usuário � 1. 2. 3. � 1. O bash, quando é carregado através de um shell que requer login (nome e senha), procura os arquivos de scripts abaixo, em seqüência, os comandos neles contidos, caso existam: /etc/profile ~/.bash_profile ~/.profile Caso o bash seja carregado através de um shell que não requer login (janela de terminal), o seguinte arquivo é executado: ~/.bashrc 29 23/09/2014 15 pág. Sobre os arquivos � � � /etc/profile� Contém as variáveis de ambiente do sistema que são disponibilizadas para todos os usuários do sistema no momento do login. Somente o usuário root tem permissão para alterar este arquivo. Ele é lido antes do arquivo de configuração pessoal de cada usuário (.profile(root) e .bash_profile). ~/.bash_profile � Este arquivo reside no diretório pessoal de cada usuário. É executado por shells que usam autenticação (nome e senha). O .bash_profile contém comandos que são executados para o usuário no momento do login no sistema, após o /etc/profile. Note que este é um arquivo oculto pois tem um "." no inicio do nome. Ele aponta para o arquivo ./bashrc. ~/.bashrc � Contém funções e aliases de comandos definidos pelo usuário. Possui as mesmas características do .bash_profile mas é executado por shells que não requerem autenticação (janela de terminal). Ele aponta para o arquivo /etc/bashrc. 30 pág. Arquivo executado no processo de logout 1. ~/.bash_logout � contém os comandos a serem executados pelo sistema no fechamento da sessão pelo usuário. O diretório dos arquivos modelos (templates) 1. /etc/skel � Este diretório contém os modelos de arquivos “.bash_profile” e “.bashrc” que serão copiados para o diretório pessoal dos usuários no momento que for criada uma conta no sistema. Desta forma você não precisará configurar estes arquivos separadamente para cada usuário. O arquivo de histórico dos comandos 1. ~/.bash_history � contém a lista dos 1000 últimos comandos digitados pelo usuário. 31
Compartilhar