Introdução ao UNIX
Computadores e Redes de Comunicação
Mestrado em Gestão de Informação, FEUP 2004/07
Sumário
• História
• Estrutura
• Interpretador de comandos
• Comandos essenciais
• Sistema de ficheiros
• Shell Scripts
• Referências
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.
História
Imagem: “Operating System
Concepts”, A. Silberschatz e P.
B. Galvin, Addison-Wesley, 1994
Estrutura
Utilizador
Gestor de Janelas
Kernel
Aplicações
Comandos
Interpretador de
Comandos (Shell)
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.
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.
Exemplo de uma Sessão
login: ssn
Password: ******
Last login: Fri Oct 1 17:29:12 2004 from ssn.vpn.fe.up.pt Linux 2.4.27. ssn@gnomo:~> ls public_html/ ssn@gnomo:~> cd public_html ssn@gnomo:~/public_html> ls –la total 35 drwxr-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 .history drwxr-xr-x 2 ssn man 8192 Sep 24 17:18 homepage/ -rw-r--r-- 1 ssn man 12 Sep 30 15:40 index.html drwxr-xr-x 3 ssn man 8192 Oct 1 18:00 sandbox/ ssn@gnomo:~/public_html> logout
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 C-Shell (ksh), Bourne C-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.
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
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
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 criarde um novo.
–
<
Redireccionar entrada. Ex: programa < dados.txt–
|
(pipe)
Combinar vários programas. O resultado de um programa é usadocomo entrada de outro. Ex: ls | sort
•
Exemplos:
– programa < entrada.txt > saida.txt – ls | sort > listagem_ordenada.txt – find | grep meudocumento.txt
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.
Interpretador de Comandos
• Filosofia de encadeamento e filtragem (pipe and
filter
)
Comando Complexo
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:
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
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 pelo utilizador.
• ps Apresenta o estado dos processos no sistema.
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.
Ajuda – Exemplo
$ apropos quota
convertquota (8) - convert quota from old file format to new
one
edquota (8) - edit user quotas
quota (1) - display disk usage and limits
quotacheck (8) - scan a filesystem for disk usage, create
check and repair quota files quotactl (2) - manipulate disk quotas
quotaoff [quotaon] (8) - turn filesystem quotas on and off
quotaon (8) - turn filesystem quotas on and off repquota (8) - summarize quotas for a filesystem rpc.rquotad [rquotad] (8) - remote quota server
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
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.
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.
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.
Sistema de Ficheiros
gnomo>tree -d . |-- Desktop | `-- Trash |-- bin |-- mail `-- public_html |-- adad |-- ari |-- asi | `-- _notes |-- gi |-- goii | |-- ciie | |-- ciie2 | `-- exame | `-- 3c |-- images | |-- full | `-- thumb |-- is `-- psiSistema 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
Número de ligações para este ficheiro
Dono
Grupo a que pertence
Tamanho em bytes
Data da última modificação
nome
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 univ0102
cs1 os 0203
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.
utilizador grupo outros
---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