Shell Script Prof. Rafael Paoliello Guimarães FAESA.

Slides:



Advertisements
Apresentações semelhantes
Curso Basico de Linux Marcela Santos
Advertisements

Prática de Software e Hardware Básico
Python: Entrada e Saída
Estruturas de Controle
Administração de sistemas operacionais
Administração de sistemas operacionais
Entrada e Saída Introdução.
Shell Script Professor: João Paulo
Prof. João Paulo de Brito Gonçalves Sistema de Arquivos - COMANDOS DE VISUALIZAÇÃO, BUSCA E LOCALIZAÇÃO Campus - Cachoeiro Curso Técnico de Informática.
Processos no Unix e Linux
Conceitos Básicos sobre o S.O.
Claudio Esperança Python: Comandos Básicos. Primeiros passos em programação Até agora só vimos como computar algumas expressões simples Expressões são.
Linguagem C Estruturas de Controle de Fluxos
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Colégio Técnico Vila Branca
Programação Bash Mauro César Lopes. Shells bash csh sh tcsh ksh.
Administração de Sistemas Operacionais
Revisão da Linguagem C.
Comandos para navegação no Sistema de Arquivos
Prof. André Leon S. Gradvohl, Dr.
Manipulando Shell Script
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Sistema Operativo de Rede Prof. António dos Anjos
FTIN Formação Técnica em Informática
CADEIA DE CARACTERES (Strings)
Apresentação Shell Script
DAVID ANDERSON CARDOSO DANTAS
Aula Prática 12 Operações com Arquivos Monitoria
Linguagem de Programação JAVA
Programação em shell Instituição:Faculdade SENAC Pelotas
Permissões e Propriedades de Arquivos
C APÍTULO II Armazenando e recuperando dados. A RMAZENANDO E RECUPERANDO DADOS Agenda Salvar dados Abrir um arquivo Criar e gravar Fechar Ler Bloquear.
Sistemas Operacionais
Algoritmo e Programação
Sistemas Operacionais c Prof. Victor Guimarães
Sistema Operacional DOS 6.22 PROF. PAULO LORINI NAJAR
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
Professor Cristiano Mariotti
Linux Prof. Fabio Santos, D.Sc
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Sistemas Operacionais II O Shell Bash. Objetivos Conhecer a sintaxe dos comandos; Trabalhar com funções; Trabalhar com variáveis; Expressões aritméticas;
09/04/2017 Linux Comandos básicos.
Tópicos em Sistemas Operacionais (LINUX) Prof:. Msc. Arimatéia Junior Fortaleza-2011.
Usuários e Grupos Usuário: alguém que possui conta, internamente é tratado como um número (UID) que é a identificação do usuário (USER ID). Cada usuário.
Operações com Arquivos Monitoria A estrutura FILE  É como um tipo de dado, mas não é um tipo propriamente dito  Definido no arquivo cabeçalho.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 10: Interface de Sistemas de Arquivos.
Sistemas Operacionais PLATAFORMALINUX PLATAFORMALINUX Jean Morais 3ºSINA/07.
Introdução ao MATLAB 5.3 para Hidrólogos
Prof. Msc Roberta Andrade
Comando CASE Desvio por seleção múltipla
MatLab (Matrix Laboratory)
Primeiros passos em Shell Script
Iº Workshop Linux da Unijorge
Desenvolvimento WEB Prof. Renato de Oliveira Bastos
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Shell Script Parte 2.
Tópicos em Sistemas Operacionais (LINUX) Prof:. Msc. Arimatéia Junior Fortaleza-2011.
Profº Cláudio Barbosa VBScript Introdução  Visual Basic - Linguagem de uso geral da Microsoft.  VBScript (Visual Basic.
Permissões de Acesso No Linux há três modelos de controle de acesso básicos: Read, Write e Execution. Veja um exemplo de permissão básica na figura.
SICII (Sistemas Operacionais) – Prof. Alberto  Comandos de console (Linux)
Introdução ao Linux (Comandos básicos) Agosto/2013
Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação Linux – Prática Regiane Kawasaki
Evoluindo em comandos Unix / Linux Cid Rodrigues de Andrade No site acima encontram-se dados sobre licenciamento e forma.
JavaScript Introdução ao JavaScript 1. Objetivos Introdução Sintaxe Básica Arquivo (script) externo Script no HEAD da página Script no BODY da página.
Sistemas Operacionais de Redes Introdução ao Linux IGOR ALVES.
Comandos Básicos do Linux Prof. Alberto Felipe. Os Sistemas Operacionais de hoje, incluindo o Linux, são todos baseados em interface gráfica, com o uso.
Expressões Regulares Junho, Expressões Regulares Uma Expressão Regular (ER), aka REGEX, é um método formal de se especificar um padrão de texto.
Sistemas Operacionais de Redes Introdução ao Linux IGOR ALVES.
Programação em Shell Script
Transcrição da apresentação:

Shell Script Prof. Rafael Paoliello Guimarães FAESA

O que é o shell? Interpretador de comandos Interface entre o usuário e o kernel Pode ser programado Shell Script – Arquivo texto com seqüência de comandos a serem interpretados

Principais shells Bourne Shell (sh) – Shell padrão do UNIX Korn Shell (ksh) – É um upgrade do Bourne Shell C Shell (csh) – É o shell mais utilizado em ambientes BSD – A estrutura de sua linguagem é parecida com o C Bourne-Again Shell (bash) – Shell padrão do Linux – Quase 100% compatível com Bourne Shell Inclui as implementações do Korn Shell e inúmeros comandos do C Shell

Variáveis Identificadas pelo caracter $ Variáveis de ambiente são disponibilizadas pelo próprio sistema operacional – echo $PATH – echo $USER – echo $UID Para criar variáveis, basta atribuir um valor – NOME=“Rafael” – echo “Meu nome é ${NOME}” – DIR=`pwd` – echo “O diretório atual é ${DIR}” Sem espaços antes e depois do sinal de igualdade Uso opcional de chaves

Aspas e afins Aspas duplas – Imprime todo o conteúdo, interpretando variáveis echo “O usuário atual é $USER” – Se quisesse imprimir o caracter especial $ (ou qualquer outro caracter especial, precedê-lo por barra invertida ( \ ) echo “A variável que contém o usuário é \$USER” Aspas simples – Imprime todo o conteúdo, sem interpretar nada echo ´O usuário atual é $USER´ Acento grave ( ` ) – Executa o comando entre os acentos graves e imprime o resultado echo “O diretório atual é `pwd`” OBS OBS: Se o acento grave estiver entre aspas simples, o comando não é executado!

Redirecionamento Redirecionamento de saída Redirecionamento de entrada Redirecionamentos especiais <Obtém a entrada padrão a partir de um certo arquivo <<O chamado here document. Veremos mais tarde. |Redireciona a saída de um comando p/ entrada de outro teeCaptura a saída de um comando com pipe, copiando o que está entrando para a saída padrão e um arquivo >Redireciona saída para novo arquivo >>Redireciona saída, anexando a fim de arquivo existente 2>Redireciona erros gerados para um novo arquivo

Wildcards Asterisco ( * ) – Substitui por qualquer seqüência de caracteres ls arquivo* Interrogação ( ? ) – Substitui por qualquer caractere (apenas um) ls arquivo?.txt Colchetes ( [] ) – Substitui por qualquer caractere do conjunto ls arquivo[0-9].txt Chaves ( {} ) – Substitui por qualquer seqüência do conjunto ls arquivo-{jan,fever}eiro.txt

Um script shell Primeira linha deve indicar o shell que será utilizado para interpretar este script – Lista o conteúdo do diretório /tmp #!/bin/bash cd /tmp ls cd – – Salvar em um arquivo texto e dar permissão de execução chmod +x teste.sh Extensão geralmente utilizada para indicar que se trata de um script shell

Algumas variáveis em scripts $$ – Obtém o número do processo atual (geralmente utilizado para gerar um arquivo temporário) $0 $1 $2 $3... $9 ${10} ${11}... – Obtém parâmetros passados ao script por linha de comando $0 é o nome do script, $1 em diante são os parâmetros $* – Obtém todos os parâmetros passados ao script (sem $0) $# – Obtém o número de parâmetros passados (sem contar $0) $? – Obtém o retorno do último comando executado

GREP Global Regular Expression Print – Localiza cadeias de caracteres em uma entrada definida Ex: Verifica dados do usuário rsl grep rsl /etc/passwd grep rsl /etc/* Ex: Verifica processos do usuário rsl ps aux |grep rsl Ex: Listar apenas os subdiretórios do diretório atual ls –la |grep “^d” Ex: Verifica usuários que utilizam o bash grep “bash$” /etc/passwd

Exemplos Script que dado o nome de um usuário, exibe quantos processos este usuário está executando #!/bin/bash QTDE=`ps aux |grep “^$1” |wc -l` echo “O usuário $1 possui $QTDE processos ativos” Script que exibe o nome do usuário que se conectou por último e a lista dos processos ativos para este usuário #!/bin/bash USUARIO=`last |head -1 |cut –d´ ´ -f1` echo “Lista de processos do usuário $USUARIO:” ps aux |grep “^$USUARIO”

Exercício Crie um script que dado um usuário passado como parâmetro, exiba o seu UID (user ID), nome do seu grupo e seu GID (group ID). Cada um destes valores deve ser armazenado em uma variável e no final, deve-se imprimir a seguinte mensagem: – O UID do usuário XXX é 999. Ele faz parte do grupo YYY que tem como GID o número 000. id – OBS: Verifique como obter o UID, GID e grupo verificando a ajuda do comando id

Alguns outros comandos úteis cut – Parâmetros -f, -d e –c Awk (apenas como alternativa ao cut) – awk ´{print $1}´ head, tail – Parâmetro que indica número de linhas tr – [:alnum:], [:alpha:],[:blank:], [:cntrl:], [:digit:] – [:lower:], [:upper:], [:punct:] – \\, \b, \n, \r, \t – Parâmetro –d uniq

Expressões numéricas expr – expr – expr 2 – 7 – expr 2 \* 7 – expr 2 / 7 – expr 2 % 7 bc – echo “(2 + 3) * 5” |bc – echo “ * 3” |bc – echo “scale=2; 100/3” |bc – echo “3^2” |bc

Condicionais if – Testa se o retorno do comando teve sucesso $? = 0 if then else fi if then elif then else fi

Comando de teste test if test “$USER” != “root” then echo “Este script so pode ser executado por root” exit 1 fi ls -l /root Equivalente mais elegante: [ ] if [ “$USER” != “root” ] then echo “Este script so pode ser executado por root” exit 1 fi ls -l /root

Teste de arquivos -r arquivoVerifica se tem permissão de leitura -w arquivoVerifica se tem permissão de escrita -x arquivoVerifica se tem permissão de execução -f arquivoVerifica se o arquivo existe -d arquivoVerifica se é um diretório -u arquivoVerifica se o set UID está ativo -g arquivoVerifica se o set GID está ativo -k arquivoVerifica se o sticky bit está ativo -s arquivoVerifica se o tamanho do arquivo é maior do que zero Exemplo: if [ -f “$1” ] then echo “O arquivo $1 existe!” if [ -x “$1” ] ; then echo “E é executável!” fi

Comparações -eqVerifica se são iguais -neVerifica se são diferentes -gtVerifica se o 1º é maior que o 2º -geVerifica se 1º é maior ou igual a 2º -ltVerifica se o 1º é menor que o 2º -leVerifica se 1º é menor ou igual a 2º Exemplo: – Coloca dois parâmetros passados em ordem e se forem iguais, diz que são if [ $# -ne 2 ] ; then echo “Parametros insuficientes” else if [ $1 -gt $2 ] ; then echo “O primeiro é maior que o segundo” elif [ $1 –eq $2 ] ; then echo “O primeiro é igual ao segundo” else echo “O primeiro é menor que o segundo” fi

Negação e composição Negação de testes – Ex: Verificar se um arquivo não existe if [ ! -f “$1” ] ; then echo “Arquivo $1 não existe” fi Composição de testes – Ex: Verificar se duas condições são verdadeiras if [ -r “$1” -a -w “$1” ] ; then echo “O arquivo $1 possui permissão de leitura e escrita” fi – Ex: Verificar se pelo menos uma de duas condições é verdadeira if [ -r “$1” -o -w “$1” ] ; then echo “O arquivo $1 possui permissão de leitura ou de escrita” fi

Alternativas ao if Outra forma de composição de testes – && (equivalente ao -a) ou || (equivalente a -o) if [ -r “$1” ] && [ -w “$1” ] ; then echo “O arquivo $1 possui permissão de leitura e escrita” fi if [ -r “$1” ] || [ -w “$1” ] ; then echo “O arquivo $1 possui permissão de leitura ou de escrita” fi Uso de && e II como alternativa ao if [ -r “$1” ] && [ -w “$1” ] && echo “O arquivo $1 possui permissão de leitura e escrita” [ -r “$1” ] ||echo “O arquivo $1 não possui permissão de leitura”

O case Quando houver mais de três ifs (if... elif... elif... fi), o case se torna mais eficiente e mais estruturado case valor in padr1) ;; padr2) ;; esac

O case Exemplo – Dado um caracter recebido como parâmetro, verifica o seu tipo #!/bin/bash ERRO=0 # Verifica se só há um parametro if [ $# –ne 1 ] ; then echo “Erro! Uso correto: $0 caractere” ERRO=1 fi # Verifica se parâmetro só tem um caractere case $1 in ?) ;; *) echo “Erro! Parametro passado so pode ter um caractere” ERRO=2 ;; esac # Sai se houve algum erro if [ $ERRO –ne 0 ] ; then exit $ERRO fi # Verifica tipo do caractere de entrada case $1 in [a-z]) echo “Letra minúscula” ;; [A-Z]) echo “Letra maiúscula” ;; [0-9]) echo “Número” ;; *) echo “Caractere especial ;; esac

Exercício Escreva um script que dê bom dia, boa tarde ou boa noite de acordo com a hora apresentada pelo comando date – Dica: Dê um man date para ver como obter apenas a hora utilizando este comando

Loops com for Executa um laço, em cada execução assume um valor da seqüência for var in valor1 valor2 valor3... valorN do done – Exemplo: Gera múltiplos de 11 de 11 até 99: for i in do echo $i$i done for (( i=1 ; i<=9 ; i++)) ; do echo $i$i done for i in `seq 9` do echo $i$i done EQUIVALENTE

Outro exemplo com for Obtendo seqüência de outros comandos for ARQ in `ls` ; do # Obtém nome do arquivo em minúsculas ARQMIN=`echo $ARQ |tr [A-Z] [a-z]` # Verifica se arquivo em minúsculas já existe if [ -f “$ARQMIN” ] ; then echo “Arquivo $ARQ não renomeado: $ARQMIN já existia!” else mv $ARQ $ARQMIN > /dev/null if [ $? -ne 0 ]; then echo “Arquivo $ARQ não renomeado: erro no mv!” fi done

Exercício Escreva um script que liste apenas os arquivos executáveis de um certo diretório passado como parâmetro