introdução ao unix - faculdade de engenharia da ...ssn/disciplinas/crc/unix.pdf · • a primeira...
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/