111
Sistemas Operativos Prof. Paulo Marques [email protected] Universidade de Coimbra, Portugal 2006/200 7 Introdução ao UNIX do ponto de vista do Utilizador

Sistemas Operativos Prof. Paulo Marques [email protected] Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

Embed Size (px)

Citation preview

Page 1: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

Sistemas Operativos

Prof. Paulo [email protected]

Universidade de Coimbra, Portugal

2006

/200

7

Introdução ao UNIXdo ponto de vista do Utilizador

Page 2: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

2

Famílias de Sistemas Operativos

Para computadores “normais”, actualmente, existem duas grandes famílias de Sistemas Operativos: MS Windows (Windows XP, Windows Server 2003) Sistemas Unix (Linux, Solaris, FreeBSD, MacOS X)

Windows XP

Linux

Page 3: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

3

Sistema Linux

Criado por Linus Torvalds Filosofia “Open-Source”

Todo o código fonte está disponível É completamente gratuito Todas as pessoas podem contribuir

Extremamente poderoso, rápido e escalável Tipicamente utilizado em “máquinas servidor”

Por exemplo, o “google” corre Linux

Principais desvantagens... Não é tão “amigável” como o sistema operativo Windows

Linux é um tipo de UNIX Actualmente, o mais popular. No entanto, existem muitos

outros.

Page 4: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

4

Breve História do UNIX

Nos anos 70, Dennis Ritchie e Ken Thompson criam o sistema operativo UNIX Escrito na Linguagem C, criada de

propósito para tal. Capacidade de multitarefa Capacidade de múltiplos utilizadores Facilmente portável para outras

máquinas

O UNIX for criado nos Bell-Labs, nos Estados Unidos Inicialmente distribuído como código

fonte Tornou-se um sucesso enorme!

Page 5: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

5

Breve História do UNIX (2)

Devido ao sucesso do UNIX, a Bell-Labs resolve torná-lo num produto comercial (início dos anos 80) Licença restritiva e bastante cara Não acessível à maior parte das empresas nem

universidades Deixa de estar disponível o código fonte

Na Universidade de Berkley, Bill Joy trabalhanuma versão do UNIX chamada BSD (1977) Em 1980, a DARPA assina um contracto com Berkley

para melhorar o sistema e adicionar suporte para rede Problema do BSD (1980): os utilizadores têm de comprar

a licença do UNIX da AT&T Bell-labs! O sistema BSD (Berkley Software Distribution) ainda

é muito utilizado actualmente. Versão gratuita: FreeBSD Mais tarde, Bill Joy cria a Sun Microsystems e os sistemas

SunOS e Solaris

Page 6: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

6

Breve História do UNIX (3)

Em 1985, Richard Stallman cria o Projecto GNU (GNU is Not Unix) Objectivo: um sistema UNIX livre para todos Princípios do Open Source Actualmente, os utilitários dos sistemas UNIX

correspondem aos que foram desenvolvidos no projecto GNU

Em 1987, Andrew Tanenbaum cria o sistema MINIX O código fonte do UNIX não estava disponível

e as licenças eram extremamente caras Sistema operativo para ensinar na Universidade,

gratuito Sistema operativo para PCs

Page 7: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

7

Breve História do UNIX (4)

Em 1991, Linus Torvalds, um estudante universitário, está muito descontente com os sistemas operativos disponíveis para o seu PC O sistema MS-DOS é seriamente limitado (apenas permite

executar uma aplicação de cada vez). O sistema Windows é bastante primitivo e caro.

Os sistemas Unix para PC são caros Tanenbaum não quer alterar o MINIX para ser um sistema

operativo “genérico”, com muitos utilitários e aplicações. A filosofia do MINUX é ser um SO de ensino.

Resolve escrever o seu próprio sistema operativo! Assim nasce o LINUX Utilitários do projecto GNU

Page 8: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

8

Linux – Actualmente

Dos sistemas operativos mais utilizados no mundo inteiro Tipicamente em Sistemas SERVIDOR

Completamente gratuito! Como o sistema é baseado no kernel “Linux” e nos

utilitários “GNU”, é possível criar sistemas com diferentes utilitários e programas. Cada “empacotamento diferente” corresponde a uma “distribuição linux”. Existem MUITAS DISTRIBUIÇÕES por onde escolher!

Page 9: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

Sistemas Operativos

Prof. Paulo [email protected]

Universidade de Coimbra, Portugal

2006

/200

7

Utilização de UNIX (Linux)

Page 10: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

10

Sistema Multi-utilizador

O sistema UNIX é multi-utilizador

Existem dois tipos de utilizadores: “Normais”, com poderes “normais” “Super-Utilizador”, que pode fazer “tudo”

Aceder a todos os directórios, a todos os ficheiros, modificar configurações, etc.

O super-utilizador dos sistemasunix chama-se “root”.

Page 11: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

11

Entrar no sistema

Os sistemas Unix podem funcionar em dois tipos de ecrã: Modo Gráfico Modo de Janelas

O primeiro passo para utilizar estes sistemas é fazer o “login”. Isto é, introduzir o nome de utilizador e password.

Page 12: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

12

A Shell

Os comandos são introduzidos numa janela, chamada “shell” Podem-se realizar todos os comandos normalmente

disponíveis num sistema de janelas (copiar ficheiros, criá-los, apagá-los, etc.)

Principal vantagem: FLEXIBILIDADE!

Page 13: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

13

Para sair do sistema...

Em modo gráfico utilizam-se os menus

Em modo consola utiliza-se o comando “logout”

Page 14: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

14

Como obter ajuda?

Todos os comandos estão documentados nas páginas de manual (man pages) Para consultar fazer: “man comando” (tipicamente em

inglês) Para avançar de página carregar em ESPAÇO.

Para sair, carregar em ‘q’

man ls

Page 15: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

15

Comandos básicos – “ls”

O comando “ls” permite listar os ficheiros num directório ‘-l’: Listagem “longa” ‘-a’: Listagem completa, incluindo de ficheiros ocultos ‘-R’: Listagem recursiva (inclui os subdirectórios) ‘-d’: Listagem apenas do conteúdo do directório

Page 16: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

16

Comandos básicos – “ls” (2)

As opções também podem ser combinadas...

ls -la

Page 17: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

17

Como ler o resultado do comando “ls”

Indica se é ficheiro ou directório (‘-’ ou ‘d’)

Permissões do ficheiro

Número de “ligações” ao ficheiro

“Dono do ficheiro”

Grupo de trabalho

Tamanho do ficheiro (bytes)

Data/hora de modificação

Nome do ficheiro

Page 18: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

18

“Wildcards”

Quando se manipulam ficheiros, não é necessário fazer sempre exactamente o nome destes. Existem caracteres especiais que podem representar uma ou mais letras.

* representa uma ou mais letras? representa exactamente uma letra[Aa] representa exactamente uma letra, das contidas entre []

Exemplos: ls *.txt lista todos os ficheiros terminados em “.txt” ls imagem* lista todos os ficheiros começados por “imagem” ls *paulo* lista todos os ficheiros que contém “paulo” no

nome ls [Ii]* lista todos os ficheiros começados por ‘I’ ou ‘i’

Page 19: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

19

Exemplos de wildcards

Page 20: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

20

Árvore de directórios Unix

Em UNIX, todo o sistema de ficheiros é uma árvore

/

homebin etc usr var (...)

carlos miguel sandra (...)

Page 21: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

21

Árvore de directórios Unix (2)

Navegação na árvore de directórios A “raíz” da árvore representa-se por “/” Todos os directórios partem a partir da raíz, utilizando

barras para a frente. Por exemplo, o directório do utilizador “joao” encontra-se em “/home/joao”

Alguns ficheiros especiais: O directório corrente é representado pelo ficheiro “.” O directório acima do corrente é representado pelo

ficheiro “..” Os ficheiros escondidos começam por ponto (ex:

“.profile”)

Page 22: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

22

Alguns directórios importantes

Page 23: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

23

Navegação em directórios

Para mudar de directório utiliza-se o comando “cd” cd docs Vai para o directório docs cd /home/joao Vai para o directório /home/joao cd .. Vai para o directório acima do corrente cd ../.. Sobe dois directórios cd ../casa Sobe um directório e desce para o

‘casa’ cd ~ Vai para o directório do utilizador corrente cd Vai para o directório do utilizador corrente cd ~/docs Vai para o directório docs do utilizador

corrente

Para verificar qual o directório corrente, utiliza-se o comando “pwd”

Page 24: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

24

Exemplo de navegação

Page 25: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

25

Ver o conteúdo de ficheiros

Para ver o conteúdo de um ficheiro, utiliza-se o comando “cat”.

O comando “less” também permite listar um ficheiro, mas fazendo uma pausa em cada ecrã.

Para controlar a utilização do “less” utilizam-se os seguintes comandos: ‘q’ Termina a visualização ‘u’ Anda para o ecrã anterior ESPAÇO Avança um ecrã ‘:123’ Vai para a linha 123 ‘/casa’ Procura a palavra ‘casa’

O comando “more” permitevisualizar um ficheiro páginaa página, não permitindo noentanto navegar no mesmo

Page 26: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

26

Ver o conteúdo de ficheiros (2)

Existem ainda dois comandos bastante úteis: “head -n” permite listar as n primeiras linhas de um

ficheiro “tail -n” permite listar as n últimas linhas de um ficheiro “tail +n” permite listar o ficheiro a partir da linha n

Page 27: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

27

Permissões dos Ficheiros e Directórios

Em UNIX, todos os ficheiros e directórios têm um conjunto de permissões: Permissões para o dono do ficheiro (user) Permissões para o grupo de trabalho (group) Permissões para os restantes utilizadores (others)

Para cada conjunto de utilizadores, as permissões podem ser de: Leitura (read) Escrita (write) Execução (execute)

No caso dos directórios, “leitura” significa listaros ficheiros desta; “escrita” significa criar ficheiros;“executar” significa entrar nela.

Page 28: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

28

Visualização das permissões de ficheiros

As permissões são... O ficheiro “exame.doc” apenas pode ser lido e escrito por

“pmarques” O ficheiro “pauta.txt” pode ser lido e escrito por “pmarques” e

pelos utilizadores do grupo “profs” O ficheiro “poema.txt” pode ser lido e escrito por “pmarques”, e

apenas lido pelo grupo “profs” e pelos “outros”

- - - - - - - - - -

tipo de ficheiro r w x r x x r w x

user group others

Page 29: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

29

Alteração das permissões de um ficheiro

Para alterar as permissões de um ficheiro utiliza-se o comando chmod. Dois modos de utilização: “amigável” e “máscara binária”

No modo amigável: chmod u+rw t.txt dá permissões ‘r/w’ ao dono

do ficheiro chmod o-rwx t.txt retira todas as permissões aos

“outros” chmod a+rw t.txt dá permissões ‘r/w’ a todos

(ugo) chmod go-r t.txt retira a permissão ‘r’ ao grupo

e outros

No modo amigável, as permissões dos grupos não especificados são mantidas.

Page 30: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

30

Alteração das permissões de um ficheiro (2)

No modo máscara binária, as permissões de um ficheiro são especificadas directamente utilizando um número de três algarimos. Este número está na base octal (8)

O primeiro dígito representa o dono do ficheiro (u) O segundo dígito representa o grupo (g) O terceiro dígito representa os outros (o)

As permissões são especificadas para cada grupo, somando as permissões necessárias:

4 = Leitura (r) 2 = Escrita (w) 1 = Execução (x)

Exemplos: chmod 600 t.txt permissões ‘rw-------’ chmod 744 t.txt permissões ‘rwxr--r--’

Page 31: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

31

Manipulação de ficheiros e directórios

Para criar um directório: mkdir nome mkdir docs cria um directório chamado docs

Para remover um directório: rmdir nome rmdir docs remove um directório chamado docs

Para copiar ficheiros : cp origem destino cp * ~/tmp copia todos os ficheiros do directório actual

para a directório tmp do utilizador cp /tmp/* . copia todos os ficheiros em /tmp para o

directório actual

Mover ficheiros de um directório para outro: mv origem dest mv * /home/pmarques move os ficheiros para

/home/pmarques mv xpto docs move xpto para docs

xpto pode ser um ficheiro ou directório docs pode ser um ficheiro ou directório

Page 32: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

32

Manipulação de ficheiros e directórios (2)

Para apagar ficheiro: rm fich rm xpto apaga o ficheiro xpto rm * apaga todos os ficheiros do directório

actual rm *.tmp apaga todos os ficheiros terminados

em “.tmp”

Para remover um directório e todo o seu conteúdo: rm -rf docs Apaga directório docs e seu conteúdo

Para editar um ficheiros... Os utilitários tradicionais são o vi e o emacs Em Linux: gedit e pico

Page 33: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

33

Redireccionamento de Entrada/Saída

Muitas vezes é útil guardar o resultado da execução de um comando num ficheiro

Para isso utiliza-se redireccionamento de entrada/saída ‘>’ redirecciona a saída de um comando para um ficheiro.

Caso este já exista é apagado antes do resultado lá ser colocado.

‘>>’ redirecciona a saída de um comando para um ficheiro.Caso este já exista, o resultado é-lhe acrescentado.

Page 34: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

34

Redireccionamento de Entrada/Saída

Também é possível redireccionar a entrada: < cat <teste.txt Imprime o conteúdo de

“teste.txt” cat <<. >texto.txt Lê do teclado até encontrar uma

linha com um ponto e escreve o

resultado em “texto.txt”

Em determinadas ocasiões é útil redireccionar a “saída de erro” para um ficheiro: 2> find / -name passwd 2> erros.txt Este comando encontra o ficheiro “passwd”. Todos os

directórios que o utilizador não tenha permissão para ver são escritos em erros.txt

Para redireccionar a “saída normal” e a “saída de erro” utiliza-se &>

Page 35: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

35

Exemplo de redireccionamento

Page 36: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

36

Contar palavras num ficheiro

Para contar o número de linhas, palavras e bytes de um ficheiro utiliza-se o comando “wc” A opção ‘-l’ permite contar apenas o número de linhas

(útil!)

Page 37: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

37

Encontrar palavras num ficheiro

Para mostrar as linhas de um ficheiro que contêm determinada palavra utiliza-se o comando “grep” grep palavra ficheiro Encontra ‘palavra’ em ‘ficheiro’ grep palavra * Encontra ‘palavra’ nos

ficheiros do directório

Sempre que é necessáriopassar uma frase comoparâmetro utilizam-se aspas.

Page 38: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

38

Expressões Regulares

O programa egrep supporta EXPRESSÕES REGULARES Uma expressão regular é algo semelhante a uma wildcard, mas

mais poderosa. Numa expressão regular, cada carácter, em geral, vale por si

próprio. No entanto, podem-se marcar os carácter com os seguintes

classificadores:* Carácter/expressão anterior 0 ou mais vezes+ Carácter/expressão anterior 1 ou mais vezes? Carácter/expressão anterior 0 ou uma vezes{N} Carácter/expressão N vezes{N,} Carácter/expressão anterior N ou mais vezes{N,M} Carácter/expressão anterior entre N e M vezes

O carácter ‘.’ significa qualquer carácter Os caracteres colocados entre [] funcionam como opção. Por

exemplo [Aa] quer dizer o carácter ‘A’ ou o ‘a’. Podem-se utilizar intervalos, por exemplo: [a-zA-Z]. Colocando um ^ dentro de parênteses rectos, tal representa uma

negação. Por exemplo: [^0-9] quer dizer nenhum carácter que seja um algarismo.

Page 39: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

39

Expressões Regulares (2)

Uma expressão regular é algo semelhante a uma wildcard, mas mais poderosa... As expressões mais complexas podem ser agrupadas dentro de

(), valendo como conjunto O carácter ‘|’ significa alternativa

Exemplos: egrep ‘Paulo Marques’ doc.txt

Encontra todas as linhas com o nome “Paulo Marques” egrep ‘[Pp]aulo [Mm]arques’ doc.txt

Encontra todas as linhas com o nome “Paulo Marques”, estando “Paulo” e “Marques” capitalizado ou não

egrep ’72[0-9]{5}’ doc.txtEncontra todos os números de telefone de Timor no ficheiro (começam por 72 e têm cinco dígitos)

egrep ‘Carlos .* Miguel’ doc.txtEncontra todos os nomes começados em Carlos e terminados em Miguel

egrep ‘(Carlos)|(Miguel)’ doc.txtEncontra todas as linhas que contém ou Carlos ou Miguel

Page 40: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

40

Encontrar um ficheiro

Para procurar um ficheiro utiliza-se o comando find

find DIR -name FIC Encontra todos os ficheiros chamados FIC começando a

procurar em DIR

find DIR -name FIC -exec COMANDO \; Encontra todos os ficheiros chamados FIC começando a

procurar em DIR. Por cada ficheiro encontrado executa o comando COMANDO. No comando, o nome do ficheiro é representar por {}.

Exemplo: find . -name ‘*.txt’ -exec cat {} \;Encontra todos os ficheiros com a extensão ‘.txt’ do directório corrente e subdirectórios imprimindo o seu conteúdo para o ecrã.

Page 41: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

41

Encontrar um ficheiro (2)

Existe um ficheiro especial chamado /dev/null para onde se pode enviar todo o output que não se necessita

Exemplo: Encontrar todos os ficheiros chamados ‘passwd’, ignorando todos os ficheiros/directórios cujo utilizador não tenha permissões para ler. find / -name passwd 2>/dev/null

Page 42: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

42

Ordenar as linhas de um ficheiro

O comando sort permite ordenar as linhas de um ficheiro Por omissão, faz uma comparação ‘letra a letra’ Para especificar uma comparação ‘numérica’ usa-se ‘-n’

Nota: os resultado da ordenação não é guardado!Como o faria?

Page 43: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

43

Outras formas de ordenação

O comando sort é capaz de processar várias colunas, separadas por um carácter delimitador. Para indicar a coluna utiliza-se a opção -k Para indicar o delimitador utiliza-se a opção -t

O delimitador, por omissão, são “um ou mais espaços em branco”

Ordena por nomes (texto)

Ordena por número de aluno (numérico)

Page 44: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

44

Extrair colunas de ficheiros

É muito comum os ficheiros conterem pequenas bases-de-dados separadas por caracteres especiais.

O comando “cut” permite extrair determinadas colunas de um ficheiro. -d’|’ indica que o carácter delimitador é o | -fN indica que se quer extrair a coluna N

Nomes(coluna 1)

Número de aluno(coluna 2)

Page 45: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

45

Comunicação Entre Processos – Pipes

Uma das razões pela qual o UNIX é tão poderoso é devido a ter muitos pequenos utilitários que podem ser combinados.

Para encadear dois comandos em que o resultado da execução do primeiro é passado para a entrada do segundo utiliza-se um pipe (barra vertical |).

Page 46: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

46

Pipes – Alguns Exemplos

cat notas_es.txt | grep 17 | sort Encontra todos os alunos que tiveram 17 e ordena-os por

nome.

grep ‘Carlos Manuel’ alunos.txt | cut -d’|’ -f2 Imprime o número de aluno de ‘Carlos Manuel’

Page 47: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

47

Sequência de comandos

Também é possível mandar executar uma sequência de comandos, sem que a saída de um comando entre no seguinte.

Para isso, utiliza-se ‘;’

Exemplo: $ ls -l >listagem.txt

$ sort -k5 -n listagem.txt >ordenada.txt$ head -5 ordenada.txt >maiores.txt$ tail -5 ordenada.txt >menores.txt

$ ls -l | sort -k5 -n >ordenada.txt$ head -5 ordenada.txt >maiores.txt ; tail -5 ordenada.txt >menores.txt

É o mesmo que...

Page 48: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

48

Ligações simbólicos (links simbólicos)

É possível criar ficheiros especiais que representam “atalhos” para o ficheiro original.

Todas as modificações feitas sobre o “atalho” afecta directamente o ficheiro original.

Comando ln -s ficheiro_original nome_link

Existem também “ligações físicas” ou“hard links”, que são criados sem aopção ‘-s’. No entanto, hoje em dia,não são muito utilizados.

Page 49: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

49

Exemplo de ligações simbólicas

As alterações feitas sobre o link simbólicosão visíveis no ficheiro original e vice-versa.

Page 50: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

50

Verificar o espaço ocupado

Para ver o espaço que um conjunto de ficheiros está a ocupar utiliza-se o comando “du” (disk usage). ‘-h’ Formato ‘humano’ (KB, MB, GB)

Page 51: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

51

Verificar sistemas de ficheiros montados e espaço livre

Para verificar que sistemas de ficheiros se encontram “montados” e em que locais da árvore de directórios utiliza-se o comando mount Este comando também permite adicionar novos sistemas

de ficheiros à árvore de directórios disponíveis. No entanto, normalmente só o administrador o faz.

Os ficheiros especiais /dev/hda, /dev/hdb, etc., representam os discos IDE do computador. Caso tenham um dígito à frente (exemplo: /dev/hda1) então representam uma partição.

/dev/sda, /dev/sdb, etc., representam discos/dispositivos SCSI

Para verificar o espaço livre nos vários discos/sistemas de ficheiros utiliza-se o comando “df -h”

Page 52: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

52

Exemplo de utilização do “df” e “mount”

Page 53: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

53

Backup e Compressão

Muitas vezes é útil poder guardar todo o conteúdo de um directório num único ficheiro Por exemplo, para realizar cópias de salvaguarda

Para colocar o conteúdo de um directório num ficheiro utiliza-se o comando “tar”. Por exemplo: tar -cvf documentos.tar docs/*

Para restaurar o conteúdo de um desses ficheiros utilizam-se opções diferentes: tar -xvf documentos.tar

Normalmente estes ficheiros são comprimidos para guardar espaço: gzip documentos.tar comprime

documentos.tar gzip -d documentos.tar.gz descomprime

documentos.tar.gz

Page 54: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

54

Backup e Compressão (2)

Backup eCompressão

Descomprimir eRestaurar

Page 55: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

55

Visualizar quais os processos em execução

Para ver quais os processos em execução utiliza-se o comando ps. “ps” mostra apenas os processos do utilizador corrente “ps aux” mostra uma listagem completa

Page 56: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

56

Comandos em Background

Quando existem tarefas que demoram muito tempo, é possível colocá-las a executar, ficando o sistemas imediatamente disponível para realizar outras tarefas. Essas tarefas dizem-se em “background”

Para colocar uma tarefa em background basta colocar um & após o comando. Exemplos:

cat *.txt >textos.doc &Cria um ficheiro ‘textos.doc’ com todos os ficheiros ‘.txt’ do directório corrente

find / –name ‘*.mp3’ -exec mv {} /tmp/mp3 \; &Encontra todos os ficheiros ‘.mp3’ no disco e coloca-os em /tmp/mp3

Page 57: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

57

Comandos em Background (2)

É possível interromper a execução de uma aplicação que se encontra a executar. Para isso carrega-se em Ctrl-Z

Para continuar a sua execução utiliza-se o comando fg

Para continuar a sua execução em background utiliza-se o comando bg

Para listar quais os comandos em background utiliza-se o comando jobs

Para colocar um comando em background como sendo o “comando de topo” utiliza-se fg NUMERO_JOB

Page 58: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

58

Exemplo de utilização

Page 59: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

59

Calendário e Cálculos

Calendário: cal [ano]

Calculadora: bc -l

Page 60: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

60

Outros comandos úteis

clear limpar o ecrã whoami saber qual é o utilizador actual ssh máquina abrir uma ligação para outra máquina w ver quais os utilizadores que estão na

máquina last ver os últimos utilizadores que se ligaram top ver quais os processos a executar (gráfico) ps [aux] ver quais os processos a executar su - ganhar permissões de super-utilizador wall enviar uma mensagem para todos os

utilizadores uname -a ver informações sobre a máquina free ver qual a memória disponível da máquina uptime ver qual a carga da máquina date ver a hora actual sleep N interrompe o processamento durante N segundos touch ficheiro actualiza a data de um ficheiro (criando-o se

nec.) diff fich1 fich2 ver as diferenças entre dois ficheiros passwd alterar a password chfn alterar a informação do utilizador kill -9 pid matar o programa c/ o identificador pid

Page 61: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

61

Algumas teclas úteis

CTRL-Z Coloca um processo em background CTRL-C Termina a execução CTRL-D Fim de ficheiro (ou logout) CTRL-A Vai para o início da linha CTRL-E Vai para o final da linha CTRL-S Bloqueia a apresentação de resultados CTRL-Q Continua a apresentação de

resultados SHIFT-PGUP Anda um ecrã para cima SHIFT-PGDN Anda um ecrã para baixo TAB Completa um comando/nome ficheiro TAB TAB Vê quais as opções possíveis para

completar Último comando introduzido Próximo comando (dos introduzidos)

Page 62: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

62

Ficheiro /etc/passwd

O ficheiro /etc/passwd contém os utilizadores do sistema

O seu formato é “separado por :”, contendo os seguintes campos: Login Password Encriptada (caso não esteja em /etc/shadow) UID (User ID) GID (Group ID) Nome do utilizador Directório de trabalho Shell a utilizar

Page 63: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

63

Ficheiro /etc/passwd (2)

Page 64: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

64

Ficheiro /etc/shadow

Hoje em dia as passwords são guardadas encriptadas no ficheiro /etc/shadow Apenas o utilizador root o pode ler e manipular

Contém a seguinte informação: Login Password Encriptada Dias desde 01/01/1970 desde que a password foi alterada Número de dias até que a password possa ser alterada Número de dias após os quais a password tem de ser

alterada Dias de aviso até que a password expire Dias após a password expirar até que a conta seja

desabilitada Dias desde 01/01/1970 desde que a conta foi desabilitada Campo reservado

Page 65: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

65

Ficheiro /etc/shadow (2)

Page 66: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

66

Grupos

Os ficheiros /etc/group e /etc/group- funcionam de forma semelhante ao /etc/passwd e /etc/shadow, mas para grupos de trabalho

Page 67: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

67

Processo de autenticação

Quando é adicionado um novo utilizador ao sistema, ou quando a sua password é alterada: A password é encriptada de forma irreversível. Tal garante que um agente malicioso que consiga ter

acesso ao ficheiro não consegue recuperar a password para aceder a outros sistemas em nome do utilizador.

Sempre que o utilizador entra no sistema e introduz a sua password: A password introduzida é encriptada usando o mesmo

algoritmo A password encriptada é comparada com a que se

encontra em /etc/shadow Caso ambas as passwords sejam idênticas, o utilizador

está autenticado e pode ter acesso ao sistema.

Page 68: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

Sistemas Operativos

Prof. Paulo [email protected]

Universidade de Coimbra, Portugal

2006

/200

7

Introdução à Programação em Shell

Page 69: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

69

Programação em Shell

Até agora, apenas aprendemos comandos isolados.

Muitas vezes é útil poder ter um ficheiro contendo diversos comandos que realizam funções mais complexas A estes ficheiros chamam-se “shell scripts” Na verdade, existe toda uma linguagem de programação

que se pode utilizar nestes ficheiros. Suporte para: Variáveis Testes (if-else) Ciclos (for, while, until, etc.) etc.

Existem MUITAS shells.Nós iremos utilizar a bash!

Page 70: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

70

Aspecto de um programa em shell script

Para executar um shell script, este tem de ser: legível executável

Para executar o script, basta fazer “./nome_do_script”: $ ./hello.sh

Primeira linha: indicaa shell a utilizar

Comentários começam com #

Atribuição a uma variável

Ciclo ‘for’ com um comando

hello.sh

$ chmod u+rx hello.sh

Page 71: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

71

Execução do script

Page 72: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

72

Variáveis

As variáveis não têm de ser declaradas, basta fazer uma atribuição directa. Atenção: Entre o nome da variável, o sinal de igual, e o valor,

não podem existir espaços. nome="Paulo Marques"

Para se utilizar a variável, basta colocar $nome_da_variável echo $nome

É possível colocar numa variável o resultado da execução de um comando ficheiros=$(ls)

É possível realizar cálculos quando se faz atribuição de variável e/ou sempre que se utiliza uma referência com $. segundos_num_ano=$((365 * 24 * 60 * 60)) pessoas=10

total=$((pessoas * 4))

Page 73: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

73

Tipos de Aspas: Plicas ' '

Até agora, temos sempre utilizado plicas (' ') quando é necessário imprimir ou encontrar algo. $ echo 'Olá Mundo!' $ find / -name '*.txt'

As plicas significam que caso existam variáveis ou strings contendo wildcards, estas não são expandidas $ valor=10

$ echo '$valor sera???'

Page 74: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

74

Tipos de Aspas: Aspas Reais " "

Quando se utilizam aspas reais (" "): As variáveis são expandidas (calculadas) $ valor=10

$ echo "$valor sera???"

$ echo "Existem $(ls -l | wc -l) ficheiros neste directório."

Page 75: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

75

Tipos de Aspas: Plicas para atrás ` `

As “plicas para trás” são semelhantes a $() Permitem executar comandos

Exemplos:

Page 76: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

76

O último exemplo num shell script

lista.sh

Page 77: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

77

Dois pormenores importantes

Nota: sempre que é necessário identificar um carácter especial tem de se utilizar \ Por exemplo, para escrever um cifrão tem de se colocar \$. preco=10

echo "Os cartões de telefone custam \$$preco"

Em determinadas situações é necessário marcar o nome das variáveis utilizando ${variavel} em vez de $variavel. Exemplo: suponhamos que queremos alterar o nome de

um ficheiro acrescentando-lhe “_proibido”: ficheiro="video.avi"

mv $ficheiro $ficheiro_proibido

ficheiro="video.avi"mv ${ficheiro} ${ficheiro}_proibido

Incorrecto!

Correcto!

Page 78: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

78

Variáveis Especiais

Num shell script, as seguintes variáveis estão pré-definidas:

$# Número de parâmetros que foram passados

$* Todos os parâmetros $1 Primeiro parâmetro $2 Segundo parâmetro $3 Terceiro parâmetro ... $9 Nono parâmetro ${n} A partir do décimo parâmetro

Page 79: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

79

Exemplo

Page 80: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

80

Condições

Mas, como garantir que o programa foi executado com três parâmetros???

Utiliza-se as construções: if comando

thencomando1comando2...

fi

if comandothen

comando1comando2...

elsecomandoAcomandoB...

if

comando pode ser qualquer comando habitual. Os comandos retornam sempre um valor

(código de retorno). O código de retorno é armazenado na

variável especial #? É esse valor que é verificado na condição,

em que 0 significa “bem sucedido.

Normalmente, o comando utilizado chama-se “test”. Esse comando pode ser abreviado utilizando []

No caso de operações com números é habitual utilizar-se (())

Page 81: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

81

Agenda revisitada

Page 82: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

82

Operadores

Quando se utiliza (()) numa condição, os operadores “normais”, com sintaxe do C, são suportados.

Exemplos: if ((x>=10 && x<=20)) ... if ((x<10 || x>20)) ... if ((x != 15)) ... etc.

Atenção, como vamos ver a seguir,o comando “test” não suporta estesoperadores! É importante não confundir((expresão)) com [ expressão ]

Page 83: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

83

Testes utilizando Strings

Quando é necessário testar igualdade ou diferença de strings, utilizam-se [ ] directamente. [ expressão ] corresponde ao comando “test expressão” Atenção aos espaços Colocar espaços depois de [ e de ] Ver a página do manual de “test”

Exemplo:# lê do teclado para a variável utilizador read utilizador

# Vê se é o "grande chefe" ou nãoif [ "$utilizador" == "root" ]then

echo "Bem-vindo grande chefe!"else

echo "Bem-vindo mero mortal..."fi

Page 84: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

84

Verificar se o utilizador já está introduzido...

Page 85: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

85

Ou de uma forma mais eficiente...

Se o grep encontrar uma linha, retorna 0, o que quer dizer que foi bem sucedido. Comonão queremos que a linha apareça no ecrã, tanto o output como o erro é enviado para /dev/null. Atenção: “valor de retorno” é diferente do que os programas escrevem no ecrã!!!

Page 86: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

86

O resultado...

Operações com strings: [ string1 == string2 ] Se string1 e string2 são idênticas [ string1 != string2 ] Se string1 e string2 são diferentes [ string1 ] Se string1 não é NULL ("") [ -n string1 ] Se string1 não é NULL ("") [ -z string1 ] Se string1 é NULL

Page 87: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

87

Testes com ficheiros

[ -f file ] Testa se file é um ficheiro normal [ -d file ] Testa se file é um directório [ -L file ] Testa se file é um link simbólico [ -e file ] Testa se file existe [ -s file ] Testa se file não está vazio [ -r file ] Testa se pode ler de file [ -w file ] Testa se pode escrever em file [ -x file ] Testa se pode executar file

Exemplo:find / -name '*.txt' 2>erros.logif [ -s "erros.log" ]then echo "Ocorreram erros ao procurar os ficheiros:" cat erros.logfi

Page 88: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

88

Múltiplas condições

Infelizmente, o comando test não utiliza a notação “normal” para os operadores E e OU. E -a (de AND) OU -o (de OR)

A negação de uma condição é feita com !

Exemplos: if [ "$utilizador" == "root" -o "$utilizador" == "admin" ]

Se o utilizador for “root” OU o utilizador for o “admin”... if [ -e "$filename" -a -r "$filename" ]

Se o ficheiro em $filename existe E é legível... if [ ! -e "$filename" ]

Se o ficheiro em $filename não existe...

É no entanto possível utilizar os operadores || e && em vários comandos test: if [ "$utilizador" == "root" ] || [ "$utilizador" == "admin" ] if [ -e "$filename" ] && [ -r "$filename" ]

Page 89: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

89

Agenda revisitada...

Page 90: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

90

A execução...

Page 91: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

91

Várias condições – if/elif/else/fi

Por vezes é necessário testar diversas condições. Embora se possa colocar diversos if’s encadeados, tal é pouco prático. Para testar múltiplas condições mutuamente exclusivas

utiliza-se if/elif/elif/elif/.../else/fi.

Exemplo:

Page 92: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

92

Várias condições – case

Para testar se uma variável corresponde a um valor, utiliza-se um case O case é terminado com esac Sempre que uma correspondência é encontrada, são executados

todos os comandos até se encontrar ;; * no final serve de “condição não cumprida”.

Exemplo:

Page 93: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

93

Ciclos

Existem 3 tipos de ciclos em shell programming:

Ciclos FOR:Executam um conjunto de comandos um determinado número de vezes.

Ciclos WHILEExecutam um conjunto de comandos enquanto uma condição é verdadeira.

Ciclos UNTILExecutam um conjunto de comandos até que uma condição se torne verdadeira (i.e. enquanto a condição é falsa).

Page 94: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

94

Ciclos – for

for var in listado

comando1comando2comando3...

done

lista corresponde a um conjunto de palavras separadas por espaços

var toma sucessivamente os valores presentes em lista Dentro do corpo dos ciclos pode-se utilizar:

break para abortar a execução do ciclo continue para continuar para a próxima iteração do

ciclo

Page 95: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

95

Ciclos – for (Exemplo 1)

Page 96: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

96

Ciclos – for (Exemplo 2)

Como se pode ver, é possível utilizar wildcards num ciclo for! *.sh retorna uma lista com

todos os ficheiros que têm a terminação “.sh”

Page 97: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

97

Ciclos – for (Exemplo 3)

Caso não se coloque nenhum argumento num ciclo for, omitindo a palavra in, ele processa automaticamente os argumentos do programa.

Page 98: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

98

Ciclos – while

while comandodo

comando1comando2...

done

Executa o ciclo enquanto comando for executado com sucesso. Ou seja, retorne 0.

Normalmente, em comando utiliza-se o programa test (ver apontamentos do if)

Tal como nos ciclos for, pode-se utilizar break para terminar o ciclo continue para passar para a próxima iteração

Page 99: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

99

Ciclos – while (Exemplo 1)

Page 100: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

100

Ciclos – while (Exemplo 2)

Page 101: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

101

Ciclos until

Funcionam de forma semelhante aos while com a diferença que são executados até que se verifique uma condição.

Page 102: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

102

Ciclos infinitos

Existem dois comandos especiais chamados true e false. Estes comandos são utilizados conjuntamente com os ciclos.

Exemplo:

Page 103: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

103

Variáveis

Até agora, apenas vimos variáveis locais As variáveis locais desaparecem depois de uma shell

terminar. Mas... existem outras!

Variáveis de Ambiente São variáveis que os programas (e outros scripts) examinam

quando estão a executar de forma a funcionarem correctamente.

Algumas das variáveis que o utilizador define localmente são normalmente exportadas para o ambiente. Exemplos:

PATH=/usr/bin:/bin; export PATH export PATH=/usr/bin:/bin

Variáveis de Shell São variáveis que a própria shell utiliza para funcionar

correctamente mas que o programador também pode utilizar. Exemplo:

echo $PWD

Page 104: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

104

Variáveis

Para verificar quais as variáveis que estão definidas, utiliza-se o comando set

Para eliminar uma variável, utiliza-se o comando unset

Para verificar quais as variáveis que estão a ser exportadas utiliza-se o comando export

Page 105: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

105

Variáveis de Ambiente

Certos programas verificam algumas variáveis para executarem correctamente. Exemplo, o programa o programa date utiliza a variável

TZ para saber em que local do mundo está, realizando os cálculos horários correctamente.

TZ não influencia o programa date pois é “apenas” uma variável local. Oprograma date não a consegue “ver”!

Após TZ ser “exportada” para o ambiente, torna-se visível para o programa date, influenciando o seu funcionamento. Torna-se uma variável de ambiente.

Page 106: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

106

Variáveis da Shell

Algumas variáveis são automaticamente configuradas pela shell e podem ser utilizadas na linha de comandos ou em scripts. Por exemplo, a variável PWD contém sempre o directório

de trabalho actual!

Page 107: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

107

Algumas variáveis importantes

PATHConjunto de directórios que a shell procura para executar um certo programa

HOME Directório de trabalho do utilizador

PS1 e PS2Prompt que aparece na shell quando esta está disponível para um novo comando (PS1) ou quando o utilizador necessita de introduzir uma segunda linha (PS2)

TERMTerminal que o utilizador está a utilizar

HOSTNAMENome da máquina onde está a executar

USERNAME e USERUtilizador corrente

SHELLA shell que está a ser utilizada

Page 108: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

108

Exemplo usando PS1

Page 109: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

109

Opções de PS1 e PS2

man bash

Page 110: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

110

Ficheiros Importantes

Na bash, são utilizados os seguintes ficheiros de configuração:

“Shells Interactivas de Login” /etc/profile

Ficheiro de inicialização comum a todos os utilizadores ~/.bash_profile, ~/.bash_login, ~/.profile

Ficheiros “pessoais” de inicialização da shell. A bash procura estes ficheiros por ordem, executando o primeiro que existir (e for legível)

~/.bash_logout Ficheiro executado quando a shell termina (pessoal)

“Shells Interactivas Não de Login” /etc/bash.bashrc

Ficheiro de inicialização comum a todos os utilizadores ~/.bashrc

Ficheiro “pessoal” de inicialização da shell

Page 111: Sistemas Operativos Prof. Paulo Marques pmarques@dei.uc.pt Universidade de Coimbra, Portugal 2006/2007 Introdução ao UNIX do ponto de vista do Utilizador

111

IMPORTANT NOTICE

YOU ARE FREE TO USE THIS MATERIAL FOR YOUR PERSONAL LERNING OR REFERENCE, DISTRIBUTE IT AMONG COLLEGUES OR EVEN USE IT FOR TEACHING CLASSES. YOU MAY EVEN MODIFY IT, INCLUDING MORE INFORMATION OR CORRECTING STANDING ERRORS.

THIS RIGHT IS GIVEN TO YOU AS LONG AS YOU KEEP THIS NOTICE AND GIVE PROPER CREDIT TO THE AUTHOR. YOU CANNOT REMOVE THE REFERENCES TO THE AUTHOR OR TO THE INFORMATICS ENGINEERING DEPARTMENT OF THE UNIVERSITY OF COIMBRA.

(c) 2006 – Paulo Marques, [email protected]