introdução ao unix - faculdade de engenharia da ...ssn/disciplinas/crc/unix.pdf · • a primeira...

31
Introdução ao UNIX Computadores e Redes de Comunicação Mestrado em Gestão de Informação, FEUP 2004/07 Sérgio Nunes mail: [email protected] web: www.fe.up.pt/~ssn

Upload: others

Post on 30-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Introdução ao UNIX

Computadores e Redes de ComunicaçãoMestrado em Gestão de Informação, FEUP 2004/07

Sérgio Nunesmail: [email protected]: www.fe.up.pt/~ssn

Sérgio Nunes Comunicações e Redes de Computadores 2

Sumário

• História• Estrutura• Interpretador de comandos• Comandos essenciais• Sistema de ficheiros• Shell Scripts• Referências

Sérgio Nunes Comunicações e Redes de Computadores 3

História

• A primeira versão do UNIX foi desenvolvida em 1969 por Ken Thompson e Dennis Ritchie nos Laboratórios Bell.

• A Versão 6, lançada em 1976, foi a primeira com uma utilização significativa fora dos laboratórios Bell e de algumas universidades.

• Durante os anos 80 e 90 foram desenvolvidas várias versões comerciais do UNIX.

• Em 1991, Linus Torvalds desenvolve o Linux – UNIX nos computadores pessoais.

Sérgio Nunes Comunicações e Redes de Computadores 4

História

Imagem: “Operating System Concepts”, A. Silberschatz e P. B. Galvin, Addison-Wesley, 1994

Sérgio Nunes Comunicações e Redes de Computadores 5

EstruturaUtilizador

Gestor de Janelas

Hardware

Kernel

Aplicações Comandos

Interpretador deComandos (Shell)

Sérgio Nunes Comunicações e Redes de Computadores 6

Características Principais

• Desenhado para utilização partilhada (multi-utilizador).

• Execução simultânea de múltiplos programas (multi-programação).

• Sistema de ficheiros hierárquico com número arbitrário de níveis.

• Portabilidade – apenas o kernel (<10%) é escrito em linguagem máquina.

Sérgio Nunes Comunicações e Redes de Computadores 7

Interacção com o Utilizador

• A interacção com o utilizador é feita através de sessões.• As sessões podem ser locais ou remotas, em modo texto ou em

modo gráfico.

Sérgio Nunes Comunicações e Redes de Computadores 8

Exemplo de uma Sessãologin: ssnPassword: ******

Last login: Fri Oct 1 17:29:12 2004 from ssn.vpn.fe.up.ptLinux 2.4.27.ssn@gnomo:~> lspublic_html/ssn@gnomo:~> cd public_htmlssn@gnomo:~/public_html> ls –latotal 35drwxr-xr-x 4 ssn man 8192 Sep 30 15:40 ./drwx-----x 4 ssn man 8192 Oct 1 18:00 ../-rw------- 1 ssn man 1273 Sep 30 14:00 .historydrwxr-xr-x 2 ssn man 8192 Sep 24 17:18 homepage/-rw-r--r-- 1 ssn man 12 Sep 30 15:40 index.htmldrwxr-xr-x 3 ssn man 8192 Oct 1 18:00 sandbox/ssn@gnomo:~/public_html> logout

Sérgio Nunes Comunicações e Redes de Computadores 9

Interpretador de Comandos• O interpretador de comandos (shell) traduz as linhas, com

comandos, introduzidas pelo utilizador, em instruções ao sistema operativo.

• Existem vários programas interpretadores de comandos: C-Shell (csh), Korn Shell (ksh), Bourne Shell (sh), Bourne Again Shell (bash).

• Funções: interface para o sistema, interpretação dos comandos, execução de aplicações, navegação no sistema de ficheiros, indicações ao utilizador.

Sérgio Nunes Comunicações e Redes de Computadores 10

Interpretador de Comandos• O interpretador de comandos expande os meta-caracteres

usados pelo utilizador.• Exemplo:

– ls notas*.txt ls notas03.txt, notas04.txt, notas05.txt

• Meta-caracteres de expansão (wildcards)– * (asterisco) – zero ou mais ocorrências de qualquer

carater.– ? (interrogação) – qualquer caracter.– [abc] (conjunto) – um dos caracteres presentes no

conjunto(a, b ou c).

– [x-z] (intervalo) – um dos caracteres presentes no intervalo

(x, y ou z).

Sérgio Nunes Comunicações e Redes de Computadores 11

Interpretador de Comandos

• Exemplos:

– Tendo: prog1.c prog1.o prog2.c prog2.o temp temp1 temp2

– *.o prog1.o prog2.o

– temp* temp temp1 temp2

– temp? temp1 temp2

– [a-r]* prog1.c prog1.o prog2.c prog2.o

– prog[12].c prog1.c prog2.c

– *1*

Sérgio Nunes Comunicações e Redes de Computadores 12

Interpretador de Comandos• Por omissão, a entrada de dados é feita via teclado e a saída é para o

ecrã.• É possível redireccionar a entrada e saída dos comandos usando

meta-caracteres:

– > Redireccionar saída. Ex: ls > resultado.txt– >> Redirecciona saída, mas acrescenta ao ficheiro em vez de criar

de um novo.– < Redireccionar entrada. Ex: programa < dados.txt– | (pipe) Combinar vários programas. O resultado de um programa é usado

como entrada de outro. Ex: ls | sort

• Exemplos:– programa < entrada.txt > saida.txt– ls | sort > listagem_ordenada.txt– find | grep meudocumento.txt– ls –la | more

Sérgio Nunes Comunicações e Redes de Computadores 13

Interpretador de Comandos• Alguns comandos normalmente usados como filtros:

– head Imprime apenas as X primeiras linhas.– tail Imprime apenas as X últimas linhas.– wc Conta o número de palavras.– sort Ordena linhas de texto.– uniq Remove as linhas duplicadas adjacentes.– grep Filtra as linhas de acordo com uma expressão

regular.

• Exemplos:– cat dados.txt | head –n10 Lista apenas as primeiras 10 linhas

de um ficheiro de texto.– cat dados.txt | wc Apresenta o número de palavras

num ficheiro de texto.– finger | grep mgi Lista apenas os alunos do MGI que

estão ligados no sistema.

Sérgio Nunes Comunicações e Redes de Computadores 14

Interpretador de Comandos

• Filosofia de encadeamento e filtragem (pipe and filter)

Comando Complexo

Comando A Comando B Comando C

Sérgio Nunes Comunicações e Redes de Computadores 15

Comandos em UNIX• Sintaxe de um comando UNIX:

– comando [opções] [argumentos]

• Alguns aspectos importantes:– Os comandos são sensíveis à caixa usada. A maioria é em caixa baixa.– Opções e argumentos são opcionais.– A generalidade dos comandos permite a utilização de várias opções em

simultâneo.– As opções são precedidas de um traço (–).

• Exemplos:– ls –la– ls /etc– grep -i padrao ficheiro.txt– write joao

Sérgio Nunes Comunicações e Redes de Computadores 16

Exemplo de Comandos• login Estabelecer uma nova sessão num sistema. Permite definir o utilizador

e o sistema. Exemplo: login ssn –h gnomo.fe.up.pt

• logout Terminar a sessão.

• passwd Actualizar a palavra-chave de um utilizador.

• whoami Apresenta o nome associado ao utilizador actual.

• echo Apresenta uma linha de texto. Exemplo: echo “Um teste.”

• who Apresenta os utilizadores ligados no sistema.

• uptime Apresenta informações sobre o tempo de actividade do sistema.

• write Enviar uma mensagem a outro utilizador.Exemplo: write ssn

• talk Estabelece uma sessão de conversação com outro utilizador.

Sérgio Nunes Comunicações e Redes de Computadores 17

Exemplo de Comandos• finger Obter informações sobre outro utilizador. Exemplo: finger ssn

• more Pagina texto, um ecrã de cada vez. Exemplo: ls | more

• date Apresenta ou altera a data do sistema.

• history Apresenta uma listagens dos últimos comandos executados peloutilizador.

• ps Apresenta o estado dos processos no sistema.

• quota Apresenta informação sobre a utilização do disco e limites actuais.

Sérgio Nunes Comunicações e Redes de Computadores 18

Ajuda• Os sistemas UNIX disponibilizam um mecanismo de ajuda em

linha.

• O comando man (manual) permite aceder a este sistema.

– man nome-do-comando

• Este sistema fornece informação detalhada sobre os comandos: descrição, opções, exemplos e referências.

• O comando apropos permite pesquisar uma palavra-chave entre as descrições dos diversos comandos.

– apropos palavra-chave

Sérgio Nunes Comunicações e Redes de Computadores 19

Ajuda – Exemplo$ apropos quotaconvertquota (8) - convert quota from old file format to

newone

edquota (8) - edit user quotasquota (1) - display disk usage and limitsquotacheck (8) - scan a filesystem for disk usage,

createcheck and repair quota files

quotactl (2) - manipulate disk quotasquotaoff [quotaon] (8) - turn filesystem quotas on

and offquotaon (8) - turn filesystem quotas on and offrepquota (8) - summarize quotas for a filesystemrpc.rquotad [rquotad] (8) - remote quota serverrquota (3) - implement quotas on remote machinesrquotad (8) - remote quota serversetquota (8) - set disk quotaswarnquota (8) - send mail to users over quotA

Sérgio Nunes Comunicações e Redes de Computadores 20

Sistema de Ficheiros• Estrutura hierárquica em árvore com número arbitrário de níveis.

– <directório>/<directório>/<directório>

• Em UNIX, tudo é um ficheiro: directórios, dispositivos, dados, programas.

• Cada utilizador tem um directório base (home).– /usr/local/joao– ~ – directório do utilizador actual– ~maria – directório do utilizador maria.

• Alguns directórios importantes:– . (ponto) – directório actual.– .. – directório anterior.– / – raiz da árvore de directórios.– /usr/bin – programas básicos.– /var – ficheiros do sistema.

• Atenção: não existe “recycle bin”.

/

usr var etc dev

local

joao

bin

Sérgio Nunes Comunicações e Redes de Computadores 21

Sistema de Ficheiros• O UNIX distingue os termos em função da caixa usada.

Exemplo: Ficheiro.TXT ≠ ficheiro.txt

• Os nome dos ficheiros e directórios podem conter apenas letras, números, – (traço), _ (traço baixo) ou . (ponto).

• Ficheiros cujo nome começa por . (ponto) são ficheiros escondidos, não visíveis nas listagens normais.

• As extensões não são obrigatórias (ao contrário do Windows) mas são uma boa prática. Servem para designar o tipo de ficheiro. Algumas convenções:– .txt – texto.– .c – programa em c.– .gz – ficheiro comprimido.– .html – ficheiro HTML.

Sérgio Nunes Comunicações e Redes de Computadores 22

Sistema de Ficheiros

• Alguns comandos para a manipulação de ficheiros:

– touch Cria um ficheiro de texto vazio.– cat Concatena e apresenta o conteúdo de ficheiros.– more Pagina texto, um ecrã de cada vez.– cp Copia ficheiros ou directórios.

Exemplo: cp origem destino– mv Move (renomeia) ficheiros.

Exemplo: mv origem destino– rm Remover ficheiros ou directórios.– file Determina o tipo de um ficheiro.

Sérgio Nunes Comunicações e Redes de Computadores 23

Sistema de Ficheiros

• Alguns comandos para a manipulação de directórios:

– pwd Apresenta o directório actual.– cd Alterar directório actual.– ls Listar o conteúdo de um directório.

• -a Listar todos os ficheiros, incluindo ficheiros escondidos.• -l Apresentar detalhes.

– mkdir Criar directório.– rmdir Remover directório.– cp Copia ficheiros ou directórios.– mv Move (renomeia) ficheiros ou directórios.– tree Apresenta os conteúdos de um directório num

formato de árvore.

Sérgio Nunes Comunicações e Redes de Computadores 24

Sistema de Ficheirosgnomo>tree -d.|-- Desktop| `-- Trash|-- bin|-- mail`-- public_html

|-- adad|-- ari|-- asi| `-- _notes|-- gi|-- goii| |-- ciie| |-- ciie2| `-- exame| `-- 3c|-- images| |-- full| `-- thumb|-- is`-- psi

Sérgio Nunes Comunicações e Redes de Computadores 25

Sistema de Ficheiros-rwxr--r-- 1 joao alunos 22334 sep 9 08:09 .profile-rwxr--r-- 2 joao alunos 2300 oct 2 11:23 imagem.gif-rwx------ 1 joao alunos 10 oct 1 20:00 texto.txt

Tipo de ficheiro (directório = d, ficheiro = -)

Protecções do ficheiro (dono, grupo, outros)

Número de ligações para este ficheiro

Dono

Grupo a que pertence

Tamanho em bytes

Data da última modificação

nome

Sérgio Nunes Comunicações e Redes de Computadores 26

Sistema de Ficheiros$cd /$cd /usr$cd$cd docs$cd univ/0203/os$cd ../..$cd ..$cd ../mail$cd .$cd univ$cd ../docs/house/../univ/0102$cd ../0203/cs1$cd$cd ~maria

/usr/local/pedro

docs mail music

work house univ

0102

cs1 os

0203

Sérgio Nunes Comunicações e Redes de Computadores 27

Sistema de Ficheiros• O UNIX é um sistema multi-utilizador com um sistema de ficheiros partilhado.

Assim, é necessário implementar mecanismos que permitam controlar as operações sobre os ficheiros. Mecanismos de protecção.

• Os ficheiros e directórios têm associados um conjunto de especificações de protecção.

• A protecção de um ficheiro ou directório está dividida em 3 partes: utilizador (u), grupo (g) e outros (o).

• Podem ser controladas 3 operações: r (leitura), w (escrita) e x (execução).

• Comandos:– chmod – alterar protecções.– chown – alterar dono.– chgrp – alterar grupo.

utilizador grupo outrosrwx rw- ---

O dono pode ler, escrever e executar o ficheiro; Membros do grupo podem ler e escrever o ficheiro; Outros utilizadores não têm acesso.

Sérgio Nunes Comunicações e Redes de Computadores 28

Sistema de Ficheiros

– chmod g-rw directorio1– chmod u+x ficheiroA– chmod g-rwx ficheiroA– chmod o-rwx ficheiroA– chown joao ficheiroB– chgrp alunos ficheiroB

drwxrw---- joao alunos [...] directorio1-rw-rw-rw- joao alunos [...] ficheiroA-rw-r--r-- pedro docentes [...] ficheiroB

drwx------ joao alunos [...] directorio1-rwx------ joao alunos [...] ficheiroA-rw-r--r-- joao alunos [...] ficheiroB

Atenção: apenas o administrador do sistema poderia executar estes comandos.

Sérgio Nunes Comunicações e Redes de Computadores 29

Shell Scripts

• Ficheiros com comandos UNIX.• Permitem armazenar uma determinada sequência de

comandos.– Útil para sequências de uso frequente.– Útil para construção de sequências complexas.

• Permitem o uso de variáveis e estruturas de controlo– $nome=pedro

– if/then/else; for; case; while

• Os ficheiros devem ter as permissões de execução.

Sérgio Nunes Comunicações e Redes de Computadores 30

Shell Scripts - Exemplos

• Listagem personalizada:

#!/bin/bashls –lah –color

• Informações compiladas:

#!/bin/bash

echo “=Nome=”

whoami

echo “=Localizacao=”

pwd

echo “=Data=”

date

Sérgio Nunes Comunicações e Redes de Computadores 31

Referências sobre UNIX• Livros

– Daniel Gilly – UNIX in a Nutshell. O’Reilly.– Deborah S. Ray, Eric J. Ray – UNIX: Visual QuickStart Guide.

Peachpit Press.– Eric S. Raymond – The Art of Unix Programming. Addison-Wesley.

http://www.catb.org/~esr/writings/taoup/html/

• WWW– WebReference.com – UNIX Tutorials.

http://webreference.com/programming/unix/– Éric Lévénez – UNIX History. http://www.levenez.com/unix/– UNIXguide.net. http://www.unixguide.net/– UNIX Tutorial for Beginners.

http://www.ee.surrey.ac.uk/Teaching/Unix/