Lab I
Laboratórios de Informática
Sebenta Prática 2013/2014
Departamento de Electrónica, Telecomunicações e Informática Universidade de Aveiro
João Paulo Barraca <[email protected]>,
André Zúquete <[email protected]>, Diogo Gomes <[email protected]>
4 de Julho de 2014
Conteúdo
1 Máquinas Virtuais em Ambiente Linux 1
1.1 Introdução . . . . 1
1.2 Instalação de sistemas operativos . . . . 2
1.3 Instalação do uma máquina virtual . . . . 3
1.4 Duplicação de máquinas virtuais . . . . 18
1.5 Para aprofundar o tema . . . . 19
2 Introdução ao Ambiente Linux 21 2.1 Introdução . . . . 21
2.2 A Linha de Comandos UNIX . . . . 24
2.3 Sistema de Ficheiros . . . . 30
2.4 Edição de ficheiros de texto . . . . 36
2.5 Gestão de utilizadores . . . . 39
2.6 Gestão de Aplicações . . . . 42
2.7 Pontos de Montagem . . . . 43
2.8 Processos . . . . 47
2.9 Para aprofundar o tema . . . . 49
3 Redes de Comunicações 51 3.1 Introdução . . . . 52
3.2 Configuração de rede de um PC . . . . 52
3.3 Tabela de Endereços Físicos . . . . 54
3.4 Tradução de nomes em endereços IP . . . . 55
3.5 Conectividade e rotas . . . . 57
3.6 Identificação da entidade responsável por uma máquina . . . . 59
3.7 Transmissão de informação em redes:ping. . . . 59
3.8 Transmissão de informação em redes: conteúdo HTTP . . . . 60
3.9 Acesso Remoto . . . . 61
3.10 Para aprofundar o tema . . . . 66
4 Produção de documentos com LATEX 69 4.1 Introdução . . . . 70
4.2 Ações de preparação . . . . 70
4.3 Compilação de documentos LATEX . . . . 70
4.4 Estrutura obrigatória de um documento . . . . 72
4.5 Caracteres especiais do LATEX . . . . 73
4.6 Funcionalidades adicionais . . . . 76
4.7 Dimensão das letras . . . . 77
4.8 Elementos estruturais de documentos . . . . 78
4.9 Índices de conteúdos, de figuras e de tabelas . . . . 90
4.10 Referências bibliográficas . . . . 91
4.11 Visão global da geração de documentos LATEX . . . . 95
4.12 Para aprofundar . . . . 97
5 Colaboração em Projetos 99 5.1 Introdução . . . 100
5.2 A plataformaCodeUA. . . 100
5.3 Gestão de Tarefas . . . 104
5.4 Repositórios de informação . . . 109
5.5 Para aprofundar . . . 123
6 Ferramentas de Automação 125 6.1 Automação em Projetos . . . 126
6.2 GNU make . . . 127
6.3 GNU Automake e Autoconf . . . 134
7 Conceitos elementares de HTML 143 7.1 Protocolo HTTP . . . 144
7.2 Documentos HTML . . . 146
7.3 Utilização de um servidor HTTP . . . 158
7.4 Para aprofundar . . . 159
8 Conceitos elementares de CSS 161 8.1 Introdução . . . 162
8.2 Sintaxe e aplicação de estilos . . . 162
8.3 Seletores, Identificadores e Classes . . . 167
8.4 Margens, Bordas e Espaçamentos . . . 172
8.5 Texto . . . 175
8.6 Pacote de estilosTwitter Bootstrap . . . 179
8.7 Para aprofundar . . . 184
9 Conceitos elementares de JavaScript 185 9.1 Javascript . . . 186
9.2 Inclusão numa página . . . 186
9.3 Sintaxe . . . 187
9.4 Interação com o DOM . . . 193
9.5 Temporizadores . . . 199
9.6 Para aprofundar . . . 202
10 Integração de componentes em páginasWeb 203 10.1 Páginas Web . . . 204
10.2 Componentes . . . 205
10.3 Gráficos . . . 210
10.4 Mapas . . . 213
10.5 Comentários . . . 218
10.6 Para aprofundar . . . 219
11 Programação em Python 221
11.1 Linguagem Python . . . 222
11.2 Características Básicas . . . 222
11.3 Ficheiros . . . 237
11.4 Para aprofundar o tema . . . 239
12 Criptografia em Python 241 12.1 Introdução . . . 242
12.2 Funções de síntese . . . 242
12.3 Bibliotecapycrypto . . . 244
12.4 Cifras simétricas . . . 247
12.5 Cifras Assimétricas . . . 253
13 Testes e Depuração 257 13.1 Introdução . . . 258
13.2 Testes . . . 258
13.3 Testes Unitários . . . 259
13.4 Testes Funcionais . . . 263
13.5 Depuração . . . 264
13.6 Para Aprofundar . . . 269
14 Comunicação entre aplicações 271 14.1 Introdução . . . 272
14.2 Conceitos de comunicação . . . 272
14.3 Sockets não orientados à ligação (UDP) . . . 275
14.4 Sockets orientados à ligação (TCP) . . . 278
14.5 Servidor de Mensagens Instantâneas . . . 282
14.6 Para Aprofundar . . . 284
15 Documentos 285 15.1 Introdução . . . 286
15.2 CSV . . . 287
15.3 JSON . . . 290
15.4 XML . . . 292
15.5 Para Aprofundar . . . 299
16 Aplicações e Serviços Web 301 16.1 Introdução . . . 302
16.2 ServidoresWeb . . . 302
16.3 Serviços Web . . . 309
16.4 Para Aprofundar . . . 311
17 Bases de Dados 313 17.1 Bases de Dados . . . 314
17.2 Acesso Programático . . . 320
17.3 Para Aprofundar . . . 325
18 Representação de Som 327 18.1 Representação de informação sonora . . . 328
18.2 Operações sobre som . . . 336
18.3 Para aprofundar . . . 345
19 Aplicações Móveis Web 347 19.1 Introdução . . . 348
19.2 Uma aplicação simples . . . 349
19.3 Localização . . . 350
19.4 Comunicação com serviços externos . . . 351
19.5 Acesso a imagens . . . 354
20 Representação de Informação Visual 359 20.1 Introdução . . . 360
20.2 Imagens . . . 360
20.3 Formatos de ficheiros . . . 363
20.4 Representação de cor . . . 365
20.5 Efeitos sobre imagens . . . 367
20.6 Marcação de imagens . . . 378
Lista de Figuras
2.1 Pedido de entrada de credenciaisLinux . . . . 24
2.2 Promptapresentado pelabash. . . . 27
2.3 Indicação de erro pelabash. . . . 27
2.4 Estrutura do sistema de ficheirosLinux . . . . 31
2.5 Resultado dos comandoslsepwd . . . . 32
2.6 Listagem completa dos ficheiro na área pessoal . . . . 33
2.7 Resultado da execução do comandowhoami. . . . 40
2.8 Resultado da execução do comandosudo, inspeccionando qual o utilizador em uso. 41 2.9 Resultado da execução do comandoid, inspeccionando qual o utilizador em uso. . 41
2.10 Processo de instalação da aplicaçãocowsay . . . . 44
2.11 Resultado da execução do comandomount. . . . 45
2.12 Resultado da execução do comandomountpara montar os documentos partilhados. 46 2.13 Resultado da execução do comandops Tupara montar os processos associados com a sessão actual. . . . 47
3.1 Resultado do comando codearp -an. . . . 55
3.2 Resultado do comandotraceroute www.google.pt. . . . 58
4.1 Legenda da figura . . . . 83
4.2 Logotipo novo da Universidade de Aveiro . . . . 89
4.3 Logotipo novo da Universidade de Aveiro: a) na dimensão real, b) com 3cm de altura, c) com 20mm de largura, d) com altura e largura reduzidas a 1/2 e simultaneamente rodado 90º e e) com uma modificação anamórfica da altura e da largura. . . . 90
4.4 Exemplo de ficheiro de registos BibTeX contendo dois registos. . . . 92
4.5 Exemplo do aspeto final da bibliografia consoante o estilo usado. O indexador de cada registo é exatamente igual ao que aparecerá ao longo do texto, no local onde for feita a respetiva referência. . . . 94
4.6 Ficheiros e comandos envolvidos na geração de um documento Portable Document Format (PDF) a partir de fontes em LATEX e BibTeX . . . . 96
5.1 Página de entrada da plataformaCodeUA. . . 101
5.2 Página de introdução de uma notícia. . . 104
5.3 Página de apresentação das notícias. . . 105
5.4 Página de criação de uma nova tarefa. . . 106
5.5 Página de listagem das tarefas . . . 107
5.6 Diagrama de Gantt para o primeiro trabalho de aprofundamento de conhecimentos. 108 7.1 Organização comum de uma páginaWeb. . . 155
7.2 Utilização de uma divisão para implementar umpopup. . . 157
8.1 Simples cabeçalho<h1>com um estilo. . . 164
8.2 Exemplo de uma tabela com séries de temperatura de vários anos . . . 168
8.3 Exemplo de uma tabela com um elemento estilizado de forma individual. . . 169
8.4 Exemplo de uma tabela com um elemento estilizado por classes. . . 171
8.5 Modelo de caixas em CSS . . . 172
8.6 Modelo de caixas em CSS com Paddign . . . 174
8.7 Modelo de caixas em CSS sem Paddign . . . 174
8.8 Exemplo de escolha de tipos de letra. . . 176
8.9 Exemplo de utilização de um tipo de letra externo. . . 178
8.10 Exemplo de utilização do Twitter Bootstrap. . . 180
8.11 Botões emTwitter Bootstrap. . . 182
8.12 Paineis emTwitter Bootstrap. . . 183
9.1 Estrutura hierárquica do DOM . . . 194
10.1 Barra de navegação . . . 207
10.2 Popup . . . 209
10.3 Gráfico de linhas . . . 211
10.4 Mapa utilizandoLeaftLet JS . . . 214
13.1 Fluxo de processos na metodologia TDD. . . 259
14.1 Modelo Cliente-Servidor . . . 273
14.2 Vários pontos de comunicação com um navegadorWeb. . . 274
14.3 Sequência de primitivas utilizadas numSocketUDP. . . 276
14.4 Sequência de primitivas utilizadas numSocketTCP. . . 280
18.1 Várias notas de um piano . . . 328
18.2 Processo de aquisição de um som por um sistema digital. . . 330
18.3 Estrutura de umaFramenum ficheiro WAVE . . . 331
18.4 Número de telefone codificado em DTMF . . . 335
18.5 Exemplo deFade IneFade Out. . . 339
20.1 Geometria de uma imagem. . . 361
20.2 Compressão com JPG. . . 364
20.3 Valores RGB do logo da UA . . . 365
20.4 Figura original em RGB e com os canais R e G trocados . . . 368
20.5 Figura original em RGB e em tons de cinza (L) . . . 370
20.6 Figura com intensidade aumentada (f=1.5) ou diminuída (f=0.5). . . 371
20.7 Correção de gama para um CRT (Fonte Wikimedia Foundation) . . . 372
20.8 Figura com gama de 2.2 ou de 0.5. . . 372
20.9 Figura com saturação aumentada por 1.5 ou reduzida para 0.5. . . 373
20.10 Figura convertida para tons Sépia ou Lomo . . . 375
20.11 Bordas detectadas numa imagem. . . 375
20.12 Vignette comum (esquerda) e deslocado para a direita (direita) . . . 377
20.13 Fotografia da UA com o símbolo em marca de água. . . 379
20.14 Imagem com marca de água usando técnicas de estanografia e marca de água recupe- rada. . . 380
Introdução
Esta sebenta engloba os guiões para cada aula Teórico-Prática de Laboratórios de Informá- tica. O objetivo destes guiões é o de fomentar a aprendizagem de várias matérias, focadas na descoberta do mundo da informática, através de experiências práticas. Durante as mesmas os alunos devem aplicar o seu raciocínio crítico e, desejavelmente, ir mais além na exploração de tópicos relacionados com os de cada tema.
Os temas estão divididas em dois blocos principais. O primeiro foca-se em questões mais genéricas, tais como ferramentas, escrita técnica e automação de tarefas. O segundo bloco foca-se em questões específicas do mundo informático, utilizando a linguagem Python como ferramenta para a exploração.
TEMA 1
Máquinas Virtuais em Ambiente Linux
Objetivos:
- Instalação de uma máquina virtual.
- Noção de distribuiçãolivede um sistema operativo.
- Instalação de um sistema operativo Linux.
- Configuração dohardwarede uma máquina virtual.
- Análise do Hardware de uma máquina virtual.
1.1 Introdução
As máquinas virtuais são hoje em dia um instrumento que permite explorar a mesma máquina para executar vários sistemas operativos, como se de várias máquinas se tratasse.
É uma ferramenta muito importante para os sistemas atuais, sendo também relevante para o restante curso. Torna-se possível criar ambientes virtuais isolados para trabalhos específicos ou disciplinas específicas sem modificar o sistema operativo que se utiliza no día a dia.
Por exemplo, permite ter o ambienteLinuxutilizado nas aulas de programação, sem modificar o sistema Windows que tipicamente vem no portátil. Nestas aulas em con- creto, vai permitir que os alunos tenham uma máquina que podem controlar totalmente (instalar aplicações, configurar, etc...), algo que seria impossível nos computadores de utilização geral da universidade.
O objetivo deste guião é o de mostrar como se pode instalar uma máquina virtual e como se pode configurar o seuhardware.
A execução das máquinas virtuais é realizada por umsoftwaredesignado por vir- tualizador. Este componente cria uma versão virtual de um computador, no nosso computador real. Existem vários virtualizadores, sendo que neste trabalho usaremos o virtualizador gratuitoVirtualBox1, distribuído pela Oracle.
1.2 Instalação de sistemas operativos
O processo normal de instalação de um sistema operativo é feito do seguinte modo:
1. O sistema instalador é disponibilizado num suporte móvel (Compact Disk (CD), Digital Versatile Disk (DVD), memóriaflash, etc.), total ou parcialmente. Quando é disponibilizado parcialmente, a parte em falta é obtida de repositórios da Internet.
2. O sistema instalador é executado logo após o arranque da máquina, sendo ativado pelo sistema de controlo do arranque da máquina (boot loader).
3. O sistema instalador escolhe um disco rígido da máquina, ou um conjunto de partições de discos da máquina, para aí criar os sistemas de ficheiros que irão ser usados pelo sistema operativo que irá ser instalado. Normalmente usam-se duas partições diferentes, uma com os ficheiros que normalmente vemos no sistema de ficheiros, outra designada comoswapque serve para apoio à gestão da memória virtual. Esta última partição pode ser substituída por um ficheiro.
4. Após a instalação do sistema operativo no disco rígido, a partição de arranque dessa instalação é marcada como sendo de arranque (boot) e o sistema está pronto para ser reiniciado. Por vezes no arranque de um sistema instalado é iniciado primeiro um sistema de controlo dos sistema operativos a iniciar, de que é exemplo oGrub: arranque da BIOS→seleção do dispositivo de arranque→carregamento do módulo de arranque do dispositivo→seleção do sistema operativo a arrancar (opcional)→arranque do sistema operativo escolhido.
Sistemalive
Há, contudo, variantes a este processo base. Um deles consiste no arranque dos sistemas ditoslive(ou distribuiçõeslive). Os sistema livesão sistemas que arrancam como os demais mas não alteram nada na máquina de forma definitiva. Em particular, não usam qualquer repositório persistente da máquina (v.g. discos rígidos) para guardar qualquer informação. Portanto, estes sistemas podem-se executar em máquinas sem disco rígido.
Uma distribuiçãolive, de que há inúmeros exemplos para Linux2, é uma imagem de CD (ficheiro ISO) que pode ser usada para arrancar um sistemalivenuma máquina, a partir do seu leitor de CD.
1https://www.virtualbox.org/
2http://en.wikipedia.org/wiki/List_of_live_CDs
Atualmente muitas das distribuiçõeslivepossuem uma funcionalidade 2-em-1: permi- tem o arranque de uma versãolivenormal, mas essa permite depois criar uma instalação no disco rígido da máquina. Será esta a faceta que iremos explorar neste trabalho.
DistribuiçãoSliTaz
Neste guião usaremos uma distribuição deLinuxpouco habitual, por não pertencer a nenhuma das grandes linhas base das distribuições Linux (Debian, Red Hat, Slackware, Gentoo, Arch, Ubuntu, etc.): aSliTaz. ASliTazé interessante para este trabalho porque:
1. O seuliveCD tem uma dimensão reduzida (cerca de 35 Mibi Bytes (MiBs)).
2. O sistema base instalado num disco rígido não tem mais de 350 MiBs.
Estas dimensões são interessantes para diminuir os custos de descarga da imagem do CD, de arranque do sistemalivee de instalação do sistema numa máquina virtual. No entanto, muito embora esta seja uma distribuição perfeitamente funcional doLinux, ela não é uma distribuição usual e, por isso, não deverá ser considerada como regra para usar no futuro. Para isto recomenda-se uma das distribuições no topo do ranking mantido pelo sitehttp://distrowatch.com.
O ficheiro Imagem de Arquivo de CD (ISO) com a imagem de um CD de arranque da distribuiçãolivedoSliTazestá disponível na página da Unidade Curricular3. Deverá descarregá-lo e guardá-lo no seu Computador Pessoal (PC) antes de prosseguir para a instalação de uma máquina virtual.
1.3 Instalação do uma máquina virtual
O primeiro passo para instalar uma máquina virtual consiste na instalação do virtualiza- dor. Os PC dos laboratórios dispõe da versão 4.2 doVirtualBox. Os alunos que usarem a sua própria máquina poderão usar este ou outro virtualizador, mas este guião apenas contemplará explicações paraVirtualBox.
Criação de uma máquina virtual
Os passos para criar uma máquina virtual vão ser seguidamente indicados, acompanha- dos de capturas de ecrãs exemplificativas:
3http://elearning.ua.pt/course/view.php?id=3470
Inicie a execução doVirtualBox. Deverá surgir no ecrã uma janela como a indicada à direita. An- tes de instalar qualquer máquina virtual altere a definição que o VirtualBoxpossui quanto ao local onde guarda dados relativos s máquinas virtuais. Para tal, selecioneFicheiroe no menu selecionePreferências....
Considere apenas as definições associadas à classe Geral. Se estiver a trabalhar num PC do laboratório altere a definição de Pasta pré-definida das Máquinaspara /tmp; se es- tiver a trabalhar no seu PC, altere para o local que considerar mais conveniente. Feita a altera- ção, feche a janela das definições.
Selecione o botãoNovopara indicar que deseja criar uma nova máquina virtual. Na janela se- guinte selecione o botãoAvançar(ouNext).
Escolha um nome para identificar a máquina vir- tual na lista de máquinas virtuais conhecidas localmente peloVirtualBox. quanto ao tipo de sistema operativo, escolhaLinuxe versão 2.6 (ver- são do núcleo, oukernel4).
Indique a quantidade de memória Random Ac- cess Memory (RAM) de que disporá a máquina virtual. Não escolha mais do que 256 MiB, por- que não será necessário e porque quanto mais escolher, menos memória terá o sistema hospe- deiro. Esta configuração poderá ser alterada mais tarde, não é irreversível.
Indique que pretende arrancar de um disco rí- gido e que pretende criar um disco rígido (vir- tual) para instalar o sistema.
Escolha um disco virtual do tipo VirtualBox Disk Image (VDI).
Indique que pretende o disco virtual com tama- nho dinâmico, para evitar que o disco virtual (um ficheiro) ocupe o seu tamanho máximo à partida. Desta forma, ele terá apenas o tamanho suficiente para guardar o sistema de ficheiros da máquina virtual, sem nunca ultrapassar o má- ximo indicado.
Indique a localização do disco virtual (como foi dito atrás, será um ficheiro do sistema de fi- cheiros do sistema hospedeiro) e a sua dimen- são. Nesta instalação indique apenas 1 Gibi Byte (GiB). É normal os virtualizadores permitirem mais tarde aumentar o tamanho dos discos vir- tuais, mas tal não será necessário neste trabalho.
Neste momento já foi recolhida toda a informa- ção necessária para criar um disco virtual para a máquina virtual e o mesmo pode ser criado em conformidade.
Neste momento já foi recolhida toda a informa- ção necessária para criar a máquina virtual com um disco virtual de suporte, muito embora no mesmo ainda não exista qualquer sistema opera- tivo (ainda não foi instalado; isso será feito mais adiante). Para já avançamos com a criação da máquina virtual (similar a uma montagem de uma máquina física).
O aspeto do gestor de máquinas virtuais doVir- tualBoxapós a criação de uma máquina virtual é o indicado à direita. Na caixa à esquerda é indi- cado nome (SliTaz 1) e tipo (Linux 2.6), bem como o estado da máquina (desligada). O passo seguinte consiste em configurar o sistema que vai arrancar na máquina, o que é feito selecionando o botãoDefinições.
Na caixa da esquerda da janela das definições da máquina virtual selecioneArmazenamento(para gerir os dispositivos de armazenamento de da- dos) e constate que tem dois: um CD/DVD não definido (Vazio) associado a um controlador IDE, e um disco rígido definido (ficheiroSliTaz 1.vdi) associado a um controlador Serial ATA (SATA). O passo seguinte consistirá em definir um CD para a máquina virtual.
Selecione o CD indicado comoVazio, à direita surgirão informações (atributos) sobre o dispo- sitivo ainda não definido (nomeadamente, que estará associado a um controlador de IDE se- cundário). Selecione o ícone com um disco que surge à direita e escolha a opçãoEscolher um ficheiro de CD/DVD virtual.... Aqui de- verá selecionar o ficheiroSliTaz-4.0.isoque descarregou no secção 1.2.
Neste momento a configuração de instalação da máquina virtual está completa, o seuhardware está definido e no leitor de CD está acessível um CD virtual (a sua imagem ISO) que permitirá o arranque da distribuiçãolivedoSliTaz. Podemos terminar a alteração das definições e iniciar a máquina virtual.
Arranque de uma máquina virtual
O arranque de uma máquina virtual é em tudo semelhante a uma máquina real, há uma passagem por um ponto onde é executada uma BIOS (virtual), onde se seleciona um dispositivo virtual de arranque (neste caso vai ser o CD) e se carrega o mesmo para executar.
Os dispositivos de interface humana (teclado, rato) do sistema hospedeiro (host) vão ser partilhados com a máquina virtual, também designado por sistema convidado (guest).
Para dar a ilusão de que se está a mudar de máquina é normal criar uma associação da
entrada de dados de interface com a máquina virtual (focagem) quando se pretende trabalhar na mesma e terminar essa associação, voltando ao sistema hospedeiro, quando não mais for necessária. A focagem faz-se selecionando a janela da máquina virtual com o rato ou simplesmente deslocando o rato para cima dessa janela (quando a interface da máquina virtual possui um rato). Quando a focagem está ativa, na barra inferior da janela o ícone mais à direita, que possui uma seta para baixo, apresenta a cor verde.
Quando a focagem está inativa, o que se consegue fazer retirando o rato da janela ou carregando na teclaCtrlda direita do teclado, a seta fica preta.
O arranque da distribuiçãolivedoSliTaz4.0 possui os seguintes passos:
Após o arranque é mostrado um menu com vá- rias opções quanto ao sistema que efetivamente se quer executar a partir do CD. Vamos escolher a primeira opção (SliTaz Live). Caso nada seja feito, ao fim de alguns segundos esta opção é selecionada por omissão.
O passo seguinte consiste na escolha da língua por omissão do sistema. Escolha a que mais lhe convier.
O passo seguinte consiste na indicação do te- clado que está a usar. O normal, em Portugal, é usar teclados Portugueses, pelo que deve esco- lher a opçãopt-latin1.
Feitas as duas configurações anteriores, o sistema progride sem qualquer intervenção humana até atingir a plena funcionalidade, altura em que apresenta o aspeto à direita. Neste ponto pode explorar os menus da interface gráfica usando o rato.
Instalação doSliTazno disco rígido virtual
Feita o arranque da distribuiçãolive, vamos usar a mesma para criar uma instalação similar no disco rígido virtual, o que permitirá posteriormente arrancar o sistema desse dispositivo, dispensando o CD CD. A vantagem dessa opção é que posteriores alterações do sistema irão ficar gravadas para utilização futura, enquanto que alterações ao sistema realizadas em execuçõesliveperdem-se após desligar a máquina virtual.
Para fazer a instalação usa-se a aplicaçãoSliTaz Paneldo modo que seguidamente se descreve:
Selecione a aplicaçãoSliTaz Panelnos ícones que se encontram no canto superior esquerdo da interface (ícone do meio).
Esta operação está reservada para o administra- dor, que é designado emLinuxporroot. Use esse nome na caixa de textousername. Use igual- mente esse nome como senha (como indicado na janela de interface).
A janela doTazPanelmostra agora a sua inter- face normal. Na barra de menu superior vamos escolher a opçãoInstalle, no menu indicado, Install SliTaz.
Neste passo o TazPanelmostra uma interface bastante explicativa, destinada a elucidar o utente sobre o que significa o particionamento de discos e que partições são usadas peloSliTaz.
Deslocando a janela para baixo aparece o botão Execute Gparted, que irá criar as partições no disco virtual.
A aplicação GPartedmostra um disco não alo- cado (i.e., sem estar a uso). Para o usar é pre- ciso primeiro criar uma tabela de partições no mesmo; só após isso se podem definir parti- ções dentro desse disco. Escolha a opçãoDevice da barra superior e a opçãoCreate Partition Table.... A mensagem de aviso indica que irá apagar toda a informação presente no disco, mas tal não é um problema, porque o disco virtual está vazio.
O passo seguinte consiste na criação de uma par- tição no disco virtual para aí instalar o sistema operativo. Para isso, selecione a área sombreada com o rato e selecione o íconeNew.
Na janela que surge, que indica a ocupação total do disco virtual por uma partição do tipoext2, mantenha os valores indicados e selecione o bo- tãoAdd.
Após a definição da partição é preciso registá- la na tabela de partições. Para isto seleciona-se com o botão direito do rato a linha com a ordem de criação da partição que aparece na caixa infe- rior doGPartede escolhe-se a opçãoAplly All Operations. A mensagem de aviso avisa uma vez mais do facto de se perderem informações presentes no disco virtual, mas, como já se viu antes, o disco está vazio.
Uma vez criada a partição, o aspeto da aplicação GPartedé o apresentado à direita. Podemos ter- minar a aplicação selecionando o opçãoGParted da barra superior e escolhendo a opçãoQuit.
Vamos agora selecionar o botão Continue installationpara instalar o sistema operativo na partição recém criada.
Neste passo a primeira ação fundamental a re- alizar consiste na indicação da partição onde o sistema operativo irá ser instalado, que irá ser a partição antes criada (/dev/sda1).
O segundo passo fundamental a realizar consiste na especificação da senha do utilizador tux, o utilizador inicial da máquina (este nome pode ser alterado). Não se esqueça de colocar exata- mente a mesma senha na caixa de confirmação.
Nas caixas acima também pode ser mudada a senha do utilizador root, o administrador do Linux.
O último passo fundamental a realizar consiste na indicação da instalação do carregador de ar- ranqueGrub.
Uma vez feitas estas configurações pode-se pros- seguir para a instalação do sistema operativo e do sistema de arranqueGrubno disco rígido vir- tual.
Os passos realizados durante a instalação vão sendo mostrados à medida que ela ocorre, até ser indicada a terminação da instalação. O sistema agora está pronto para arrancar do disco rígido virtual.
Terminada a instalação, vamos selecionar o botão Instalation complete. You can now restart (reboot)para reiniciar o sistema. En- tretanto o CD virtual foi desligado da máquina virtual.
Após o reinício surge a interface doGrubapenas com uma opção: a do sistema que acabou de ser instalado. Se nada for feito ele arrancará por omissão ao fim de alguns segundos.
Depois do arranque apresentará as interfaces já antes vistas de configuração da língua local e do teclado, após o que se iniciará até ser apresentada a interface gráfica delogin.
Instalação de software adicional
O sistema operativo anteriormente instalado é minimalista, pelo que precisaremos de instalar algumas componentes adicionais. Para isso usaremos a ferramenta de gestão de pacotestazpkga partir do interpretador de comandos. Para esse fim, depois de fazer login, inicie uma consola com o interpretador de comandos (ícone no canto superior esquerdo) e execute a seguinte sequência de comandos.
Mude o utilizador para o administrador (root) porque iremos administrar a máquina. A
senha que o comando pedirá é a deroot(será igualmente “root” se não a mudou no processo de instalação).
su -
Carregue a lista de pacotes disponíveis para o seu sistema operativo:
tazpkg recharge
Procure na lista de pacotes algum que possua uma versão mais avançada do editorvi (nomeadamente, o editorvim):
tazpkg search vim
Instale um dos pacotes listados (ovim, por exemplo):
tazpkg get-install vim
É normal que o sistema instalado a partir da versãolivetenha algumas componentes desatualizadas. Para as atualizar execute o seguinte comando:
tazpkg upgrade
Módulos especiais para o sistema operativo
É normal os virtualizadores disponibilizarem módulos especiais para os sistemas convi- dados usufruírem de funcionalidades especiais dos hospedeiros. Uma dessas funcio- nalidades é a capacidade de usar diretorias do hospedeiro a partir da máquina virtual.
O resultado é que dentro da máquina virtual irá aparecer um directório que corres- ponde a um outro directório existente no hospedeiro. Ficheiros que estejam dentro deste directório serão partilhados.
A instalação dos módulos especiais faz-se através de um CD virtual disponibilizado pelo próprio virtualizador. No caso doVirtualBox, isso consegue-se da seguinte forma:
numa máquina virtual ativa, selecionar a opçãoDispositivosda barra superior da janela e escolher a opçãoInstalar Adições de Convidado....
Após o passo anterior, o CD virtual ficará acessível numa subdiretoria de/mediaapós a sua montagem, manual pelo utilizador, ou automática por ferramentas de navegação pelo sistema de ficheiros.
A instalação dos módulos adicionais segue então os seguintes passos, sempre atuando comoroot, como antes. Em primeiro lugar é preciso instalar algumas ferramentas e ficheiros de desenvolvimento que serão necessários para produzir os módulos especiais:
tazpkg get-install bzip2 tazpkg get-install gcc tazpkg get-install make
tazpkg get-install linux-module-headers
Feito isto, monta-se o CD no sistema de ficheiros:
mount /media/cdrom
Mudando para a diretoria raiz do CD, executa-se a aplicação de instalação dos módulos especiais:
cd /media/cdrom
./VBoxLinuxAdditions.run
No final deste comando, que durante a sua execução pode apresentar alguns erros não graves, os módulos especiais foram criados e alguns estão já instalados (os seus nomes começam porvbox):
lsmod
Uma deles, o módulovboxsf, é o que permite aceder a diretorias do sistema de ficheiros do hospedeiro.
Vamos agora definir uma partilha de uma diretoria do hospedeiro para uma máquina virtual e aceder a essa diretoria através da máquina virtual. Na janela da máquina virtual selecione a opçãoDispositivosda barra superior da janela e escolha a opçãoPastas Partilhadas.... Selecione o botão à direita que possui o sinal ’+’, indique a localização da diretoria (pasta) e o nome que lhe quer dar para efeitos de partilha (vamos assumir que escolhe o nomeXPTO). Finalmente, antes de terminar indique se quer apenas permitir ler da diretoria partilhada (para a proteger de escritas involuntárias ou maliciosas), e se quer tornar permanente a partilha (i.e., se a partilha continuará ativa em execuções futuras da máquina virtual).
Feita esta configuração, feche as janelas da mesma e volte ao interpretador de coman- dos da máquina virtual, onde deverá executar o seguinte comando:
mount -t vboxsf XPTO /mnt
Este comando indica que a diretoria exportada pelo hospedeiro através do módulovboxsf e com o nomeXPTO deverá ser montada (i.e., estar acessível a partir de) da diretoria /mnt. Após a execução deste comando poderá constatar que tem acesso à diretoria do hospedeiro mudando para a mesma e listando ou listando o seu conteúdo:
cd /mnt ls -la
Esta funcionalidade de partilha é muito útil para desenvolvimento de componentes que precisam de ser vistas por diversas máquinas. Por exemplo, podemos ter uma aplicação em rede, com um cliente a correr numa máquina e um servidor noutra, e ambos podem ser máquinas virtuais na mesma máquina hospedeira, e as aplicações cliente e servidor podem ser desenvolvidas no hospedeiro e exportadas através destes sistemas de ficheiros tanto para o cliente como para o servidor.
1.4 Duplicação de máquinas virtuais
A duplicação de máquinas virtuais é uma tarefa trivial, uma vez que não requerhardware adicional. Como as máquinas virtuais se executam sobrehardwarevirtual, e a “criação”
deste último não tem limites, é possível duplicar as máquinas e, dessa forma, criar rapidamente um conjunto de máquinas homogéneas e com um sistema à partida igual (depois cada um pode evoluir separadamente).
Uma máquina virtual como a que criámos anteriormente é completamente descrita por dois ficheiros:
· Ficheiro.vbox. Este ficheiro possui fundamentalmente uma descrição textual do hardwarevirtual da máquina virtual.
· Ficheiro.vdi. Este ficheiro é o disco virtual usado pela máquina virtual.
Para duplicar uma máquina virtual basta duplicar estes dois ficheiros e registar a nova máquina na lista de máquinas conhecida pelo gestor de máquinas virtuais doVirtualBox.
Este processo manual pode ser transparentemente realizado através de própria interface deste gestor, que permite clonar máquinas virtuais.
Exercício 1.1
Usando a interface do gestor de máquinas virtuais doVirtualBoxclone a máquina virtual antes criada. A clonagem inclui várias perguntas, tente perceber o que é perguntado e responder da forma que considerar mais acertada. Depois de clonar a máquina virtual observe o que de novo apareceu na diretoria onde se guardaram os dados da máquina virtual anterior.
1.5 Para aprofundar o tema
Exercício 1.2
Instale o software VirtualBox no seu computador pessoal e depois instale uma máquina virtual com o sistema Ubuntu, disponibilizado no site . Poderá utilizar esta máquina virtual em várias outras disciplinas, nomeadamente Laboratórios de Informática e Programação 1. Se tiver espaço disponível, não configure a máquina, crie um clone e utilize-o. A máquina original ficará sempre disponível para quando necessitar de criar um novo clone. Isto tem a vantagem de não necessitar de instalar sempre uma nova máquina.
Exercício 1.3
Porquê ter apenas uma máquina virtual? Pode clonar a mesma máquina múlti- plas vezes e ter várias a executar simultaneamente. Qual o número máximo que consegue ter? Que recursos do seu computador limitam a criação de mais má- quinas virtuais? Também poderá colocar máquinas virtuais dentro de máquinas virtuais.
Exercício 1.4
Compare a performance que se pode obter no sistema real e dentro da máquina virtual. Pode utilizar um programa como oPhoronix Test Suite(http://www.
phoronix-test-suite.com). Para executar esta aplicação, necessita de obter a Phoronix Test Suite, instalar o pacotephpe definir a variável de ambiente PHP_BIN. Os comandos necessários serão:
cd /tmp
tazpkg recharge tazpkg get-install php
wget http://www.phoronix-test-suite.com/download.php?file=phoronix-test-suite-4.8.2 \ -O phoronix-test-suite-4.8.2.tar.gz
tar -zxvf phoronix-test-suite-4.8.2.tar.gz export PHP_BIN=/usr/bin/php-cgi
cd phoronix-test-suite ./install-sh
phoronix-test-suite
A partir deste momento o software de testes estará instalado e poderá avaliar a performance da máquina virtual. Este software também pode ser instalado no hospedeiro de forma efectuar testes comparativos.
TEMA 2
Introdução ao Ambiente Linux
Objetivos:
- Introdução ao Linux - Interpretador de comandos - Sistema de ficheiros
- Utilizadores
- Gestão de aplicações - Processos
- Acesso Remoto - Bash Scripting
2.1 Introdução
Distribuição Lubuntu
Neste tema será utilizado uma distribuição denominada porLubuntu. Tal como referido em [1]: OLubuntué uma variedade da distribuiçãoUbuntu, utilizando o ambiente de trabalho Lightweight X11 Desktop Environment (LXDE)[2] como o seu ambiente princi- pal. O objectivo é fornecer uma distribuição muito leve, mantendo todas as vantagens do mundoUbuntu(repositórios, suporte, etc.). OLubuntotem como alvo utilizadores de computadores pessoais “normais” e portáteis com hardware de baixos recursos. Es- tes utilizadores podem não saber utilizar a linha de comandos, e na maioria dos casos simplesmente não têm recursos suficientes para todos os efeitos da distribuição completa.
Neste caso, ela será utilizada pois utiliza a mesma estrutura da distribuiçãoUbuntu, mas com requisitos de recursos compatíveis com o ambiente disponível nas aulas.
De forma a acelerar a utilização, é fornecida uma imagem virtual com oLubuntupré- instalado, que pode ser encontrada na página da disciplina.
Criação de uma máquina virtual
Os passos para criar uma máquina virtual vão ser seguidamente indicados, acompanha- dos de capturas de ecrãs exemplificativas:
Inicie a execução doVirtualBox. Deverá surgir no ecrã uma janela como a indicada à direita. Antes de criar qualquer máquina virtual altere a de- finição que oVirtualBoxpossui quanto ao local onde guarda dados relativos s máquinas virtuais.
Para tal, selecioneFicheiroe no menu selecione Preferências.... Este menu encontra-se dispo- nível se aproximar o ponteiro do rato do canto superior esquerdo do ecrã.
Considere apenas as definições associadas à classe Geral. Se estiver a trabalhar num PC do laboratório altere a definição de Pasta pré-definida das Máquinaspara /tmp; se es- tiver a trabalhar no seu PC, altere para o local que considerar mais conveniente.
Devido a um problema com esta versão espe- cífica doVirtualBox, terá de ir às definições de proxy, activar a configuração, escrever algo para os 2 campos pedidos, e seguidamente desactivar a configuração de proxy.
Feita a alteração, feche a janela das definições.
Selecione o botãoNovopara indicar que deseja criar uma nova máquina virtual. Na janela se- guinte selecione o botãoAvançar(ouNext).
Escolha um nome para identificar a máquina vir- tual na lista de máquinas virtuais conhecidas localmente pelo VirtualBox (ex, labi). quanto ao tipo de sistema operativo, escolha Linux e Ubuntu (distribuição).
Indique a quantidade de memória RAM de que disporá a máquina virtual. Escolha 512 MiB. Não escolha mais porque não será necessário e por- que quanto mais escolher, menos memória terá o sistema hospedeiro. Esta configuração poderá ser alterada mais tarde, não é irreversível.
Indique que pretende arrancar de um disco rígido e que pretende utilizar um disco rí- gido (virtual) existente. Se estiver no do laboratório, escolha o disco que existe em /usr/local/labi/Labi.vdi. Se estiver em casa, obtenha o disco a partir da página da disciplina, e utilize-o.
Neste momento já foi recolhida toda a informação necessária para criar a máquina virtual com um disco virtual de suporte. Ao contrário da aula anterior, este disco já contem uma instalação deLinuxpronta a utilizar. Deve-se salientar que, por motivos de desempenho das aulas, a quantidade de aplicações pré instalada é muito reduzida.
Arranque de uma máquina virtual
O arranque de uma máquina virtual é em tudo semelhante a uma máquina real, há uma passagem por um ponto onde é executada uma BIOS (virtual), onde se selecciona um dispositivo virtual de arranque (neste caso vai ser o Disco Virtual) e se carrega o mesmo para executar.
Após iniciar a máquina que acabou de criar, deverá ser-lhe apresentado uma janela a pedir as credenciais de acesso, tal como mostrado na Figura 2.1. A palavra passe élinux.
Figura 2.1:Pedido de entrada de credenciaisLinux
O processo deverá depois prosseguir para um ambiente de trabalho com um menu de aplicações ao fundo do ecrã. No canto inferior esquerdo pode aceder às aplicações existentes. Não são muitas, mas poderá explorar algumas e verificar que são em tudo semelhantes a aplicações que conhece noutros sistemas operativos.
Este guião irá focar-se na utilização da consola. Não porque seja a única maneira de interagir com o sistemas, mas porque é o mais poderoso, permitindo aceder e manipular praticamente toda a informação existente no sistema.
2.2 A Linha de Comandos UNIX
Quando o sistemaUNIXfoi concebido, os computadores eram controlados essencial- mente através deconsolasouterminaisde texto: dispositivos dotados de um teclado e
de um ecrã onde se podia visualizar somente texto. A interação com o sistema fazia-se tipicamente através da introdução de comandos escritos no teclado e da observação da resposta produzida no ecrã pelos programas executados.
Atualmente existem ambientes gráficos que correm sobre oUNIX/Linuxe permitem visualizar informação de texto e gráfica, e interagir por manipulação virtual de obje- tos gráficos recorrendo a um rato e ao teclado. É o caso do Sistema de JanelasX, ou simplesmenteX5, que está instalado nos PCs das salas de aula.
Apesar das novas formas de interação proporcionadas pelos ambientes gráficos, continua a ser possível e em certos casos preferível usar a interface delinha de comandos para muitas operações. NoX, isto pode fazer-se usando umemulador de terminal, um programa que abre uma janela onde se podem introduzir comandos linha-a-linha e observar as respostas geradas tal como num terminal de texto à moda antiga.
Interfaces de texto e gráficas
Os sistemasLinux(tipicamente) simulam um ambiente de trabalho formado por 6 interfa- ces de texto (consolas) e 2 interfaces gráficas. Na prática todas estas interfaces coexistem sobre os mesmos equipamentos de interface com os utilizadores: ecrã, teclado, rato, etc.
Muito embora estas interfaces estejam sempre ativas, elas não estão sempre visíveis: só uma delas está visível em cada instante.
Na maior parte dos casos os sistemasLinuxapresentam uma interface gráfica quando iniciam, ou após a terminação da sessão de um utilizador. A comutação entre interfaces faz-se através das seguintes combinações de teclas:
interface gráfica→consola : Ctrl + Alt + Fn, onde Fné uma das teclas F1, F2,· · ·, F6. O valor denindica o número da consola que se pretende usar (F1 para a consola 1, etc.).
consola→interface gráfica : Alt + F7 (para a interface gráfica por omissão) ou Alt + F8 (para a interface gráfica secundária, normalmente inativa).
consola→consola : Alt + Fn, onde Fné uma vez mais F1, F2,· · ·, F6.
Importante!Se executar este guião num anfitriãoLinux, esta sequência de teclas irá alternar as sessões no anfitrião e não no convidado!
Após o arranque doLinux, cada consola apresenta uma interface muito simples de login, na qual são apresentadas algumas características do sistema (sistema operativo, nome da máquina, nome da interface (ttyn), e o que se pretende que o utilizador introduza:
onome-de-utilizadore asenha. Após umloginbem sucedido, o utilizador pode continuar a trabalhar na linha de comandos que lhe é apresentada. Para terminar a sua sessão, o
5http://www.x.org
utilizador deverá fazerlogoutusando o comandoexit. Após este comando, a consola voltará a apresentar a interface deloginantes observada.
Exercício 2.5
Mude para uma consola de texto, façalogin na mesma, execute o comando whoami, e execute em seguida o comandoexit. Repita o processo delogine faça desta vezlogoutcarregando na conjunto de teclas Ctrl + D. Este conjunto de teclas é designado porEOF(End-Of-File).
Uma das consolas terá o ambiente gráfico ao qual pode voltar.
Interpretador de comandos
A maioria das distribuiçõesLinuxfornece uma Command Line Interface (CLI) através do programabash 6. Como não poderia deixar de ser, existem alternativas, tais como:
ksh,tcsh,zsh,dashoufish.
Todos estes programas fornecem um CLI ao utilizador, mas possuem funcionalidades ligeiramente diferentes.
Quando se utiliza um ambiente gráfico existem programas denominados poremula- dores de terminal, responsáveis por na realidade apresentarem uma janela de interacção com o utilizador, enviando teclas para aShelle apresentando o conteúdo ao utilizador.
Existem vários emuladores de terminal, sendo que as distribuições fornecem sempre vários para escolha, tais como: xterm, konsole,gnome-terminal oulxterminal. No sistema instalado, o emulador de terminal chama-selxterminale pode ser encontrado na secçãoAcessóriosdo menu de aplicações.
6O nome advém do facto de o programabashser uma versão melhorada do programaBourne shell, desenvolvido por Steve Bourne.
Exercício 2.6
Procure o programalxterminale execute-o.
Um dos emuladores referidos anteriormente também está instalado, mas noutra secção. Encontre-o e execute-o.
Verifique que embora o texto apresentado seja semelhante, os emuladores apresentam aspectos diferentes para interacção.
Execute o comandoecho $SHELLe verifique qual aShellem utilização.
Ao executar o emulador de terminal, pode reparar que o interface é bastante simples, sempre apresentada apenas uma pequena informação tal representado na Figura 2.2.
Figura 2.2:Promptapresentado pelabash.
O formato utilizado nestePrompté o deutilizador@nome da maquina:directorio actual$. Ou seja, neste caso em particular, utilizadorlinux, máquinalinux, directório actual∼. Mais à frente, na Seção 2.3 iremos ver o que representa o∼.
Se escrever qualquer coisa aleatória, exemplosdgt234rsfd, seguido deENTER, verá que abashlhe indica uma situação de erro, tornando a pedir um comando válido.
Figura 2.3:Indicação de erro pelabash.
Como pode notar, por muitos comandos errados que introduza, abashirá sempre pedir de novo um comando, sem que isso traga algum prejuízo para o sistema.
Observe também a resposta foi impressa imediatamente a seguir à linha do comando, de forma concisa, sem distrações nem grandes explicações. Este comportamento é usual em muitos comandosUNIXe é típico de um certo estilo defendido pelos criadores deste
sistema.
Simples, mas eficaz.
Exercício 2.7
Execute o comandodatee observe o resultado.
Exercício 2.8
Execute o comandocale observe o resultado. Descubra em que dia da semana nasceu, passando o mês e o ano comoargumentosao comandocal, por exemplo:
cal jan 1981.
Formato dos comandos
Os comandos emUNIXtêm sempre a forma:
comando argumento1 argumento2 ...
ondecomandoé o nome do programa a executar e os argumentos são cadeias de caracteres, que podem ser incluídas ou não, de acordo com a sintaxe esperada por esse programa.
Os argumentos podem ainda modificar o comportamento base do programa, designando- se nesse caso por opções (ou, por vezes, porflagsem inglês, por pretenderem sinalizar algo de especial). Tipicamente as opções são indicadas de duas formas:
-x , ondexrepresenta uma letra, maiúscula ou minúscula, ou um algarismo.
--nome-da-opção , ondenome-da-opçãoé um bloco de texto, sem espaços em branco, com a designação da opção.
Exercício 2.9
Execute o comandodate -upara ver a hora atual no fuso horário UTC e observe o resultado. Execute o comandodate --utcpara obter o mesmo resultado.
Na linha de comandos é possível recuperar um comando indicado anteriormente usando as teclas de direção↑e↓. É possível depois editá-lo (alterá-lo) para produzir um novo comando (com argumentos diferentes, por exemplo). Outra funcionalidade muito
útil é a possibilidade de o sistema completar automaticamente comandos ou argumentos parcialmente escritos usando a teclaTab.
Um interpretador de comandos também mantém uma lista numerada com todos os comandos executados durante a sua execução. Esta lista pode ser consultada através do comandohistory. O resultado produzido por este comando é uma listagem, numerada, dos comandos executados pela ordem cronológica da sua execução. Os interpretadores de comandos permitem usar os números usados nessa listagem para recuperar (e executar novamente) os respetivos comandos, através do comando!n, onden é o número de ordem do comando que se pretende recuperar. A recuperação e execução rápida do comando exatamente anterior pode ser feita com o comando!!.
Exercício 2.10
Execute o comandohistorye observe o resultado.
Exercício 2.11
Execute o comando!!e observe o resultado. E se executar!2?
Exercício 2.12
Recupere um comando anterior usando as teclas de direção, edite-o e execute-o.
Exercício 2.13
Obtenha o número de ordem de um comando anterior e re-execute-o usando o comando que permite a indexação de um comando anterior (!numero).
Uma linha pode ser editada de forma elementar ou sofisticada. A forma elementar consiste em deslocar o cursor ao longo da linha, para trás ou para a frente, usando as teclas de direção←e→, adicionar novo texto à linha e apagar texto da linha, atrás do cursor, com a teclaDELETE.
Ajuda dos comandos
O funcionamento dos comandos, as suas condicionantes e qual a sintaxe dos seus argu- mentos não é algo que se memorize de forma sistemática. Apenas os comandos mais utilizados, e os argumentos mais utilizados são possíveis de memorizar por um utiliza- dor médio ou avançado. Desta forma, foi adoptada uma uniformização deste aspecto, resumindo-se aos seguintes pontos:
1. Todos os comandos podem ser executados utilizandonome-do-comando help (ex.,date --help), o que não irá produzir nenhuma acção além de mostrar uma breve ajuda.
2. Os programas normalmente aceitam opções de funcionamento nos formatos longos (ex.,--utc) e curtos (-u).
3. Existe uma base de dados com a ajuda para todos os comandos disponíveis, aces- sível através do comandoman seguido do nome do comando que se pretende consultar (ex,man date).
Exercício 2.14
1. Considerando o comando date que vimos anteriormente, verifique o resultado dedate -uedate -utc.
2. Aceda à ajuda do comandodateatravés dos métodos descritos.
3. Aplique este método a outros comandos tais comoecho,true,false.
Exercício 2.15
Verifique a utilidade do comandoapropos. Pode usar como guia o parâmetro successfullye correlacionar o seu resultado com o comandoman.
2.3 Sistema de Ficheiros
Os ficheiros e directórios são organizados seguindo o príncipio de uma árvore com uma raíz (/) e directórios por baixo dessa raíz. Isto é semelhante ao utilizado no sistema operativoWindows, com a grande diferença que, em quanto oWindowsconsidera que cada
dispositivo (ex, Disco Rígido, CD) é uma unidade distinta, emLinuxtal como na maioria dos restantes sistemas operativos, os diversos dispositivos encontram-se mapeados em directórios da mesma raíz. A Figura 2.4 demonstra a estrutura do sistema de ficheiros se pode encontrar na máquina virtual fornecida, e típica de um qualquerLinux.
Figura 2.4:Estrutura do sistema de ficheirosLinux
Embora oLinuxnão obrigue a existência de uma estrutura específica, tipicamente o mesmo modelo é sempre utilizado. A Tabela 2.1 descreve o propósito de alguns destes directórios.
Cada utilizador possui um diretório próprio nesta árvore, a partir do qual pode (e deve) criar e gerir toda a sua sub-árvore de diretórios e ficheiros: é o chamadodiretório do utilizadorouhome directory. Após a operação delogino sistema coloca-se nesse diretório.
Portanto neste momento deve ser esse odiretório atual(current directory). Tipicamente este directório é representado pelo caractere∼.
Para saber qual é o diretório atual execute o comandopwd7. Deve surgir um nome como indicado na Figura 2.5, que indica que está no diretóriolinuxque é um subdiretório dehomeque é um subdiretório direto da raiz/.
7Acrónimo deprint working directory.
Tabela 2.1:Principais directórios típicos doLinux Directório Descrição
/ Raiz do sistema de ficheiros /bin Executáveis essenciais do sistema.
/boot Contem okernelpara iniciar o sistema.
/etc Configurações.
/home Áreas dos utilizadores.
/mnt Pontos de montagem temporários.
/media Pontos de montagem de unidades como os CDs.
/lib Bibliotecas essenciais e módulos dokernel.
/usr Bibliotecas e aplicações tipicamente usadas por utilizadores.
/sbin Programas tipicamente utilizados pelo super-utilizador.
/tmp Ficheiros temporários.
/var Ficheiros frequentemente modificados (bases de dados, impressões).
Para listar o conteúdo do diretório atual execute o comandols8. Deve ver uma lista dos ficheiros (e subdiretórios) contidos no seu diretório neste momento, tal como referido na Figura 2.5.
Figura 2.5:Resultado dos comandoslsepwd
Dependendo da configuração do sistema, os nomes nesta listagem poderão aparecer com cores diferentes e/ou com uns caracteres especiais (/,@,*) no final, que servem para indicar o tipo de ficheiro mas de facto não fazem parte do seu nome.
(Num ambiente gráfico a mesma informação está disponível numa representação mais visual. Experimente, por exemplo, escolherÁrvores de directórios/linuxpara ver o conteúdo do seu diretório pessoal.)
Ficheiros cujos nomes começam por “.” não são listados por omissão, são ficheiros escondidos, usados geralmente para guardar informações de configuração de diversos programas. Para listar todos os ficheiros de um diretório, incluindo os escondidos, deve executar a variantels -a9
8Abreviatura delist.
9A opção-aindica que se devem listar todos (all) os elementos do diretório.
Por vezes é necessário listar alguns atributos dos ficheiros para além do nome. Pode fazê-lo executando as variantes ls -lou ls -la, sendo que o resultado deverá ser semelhante ao apresentado na Figura 2.6.
Figura 2.6:Listagem completa dos ficheiro na área pessoal
Os principais atributos mostrados nestas listagens longas são:
Tipo de ficheiro identificado pelo primeiro carácter à esquerda, sendodpara diretório, -para ficheiro normal,lparasoft link, etc.
Permissões representadas por 3 conjuntos de 3 caracteres. Indicam as permissões de leiturar, escritawe execução/pesquisaxrelativamente ao dono do ficheiro, aos outros elementos do mesmo grupo e aos restantes utilizadores da máquina.
Propriedade indica a que utilizador e a que grupo pertence o ficheiro.
Tamanho em número de bytes.
Data e hora da última modificação.
Nome do ficheiro.
Normalmente existe umalias10llequivalente ao comandols -l.
Além dolse variantes, existem outros comandos importantes para a observação e manipulação de diretórios, por exemplo:
cd --- o diretório atual passa a ser o diretório do utilizador.
cd nome-do-dir --- o diretório atual passa a ser o diretóriodir. mkdir nome-do-dir --- cria um novo diretório chamadodir.
rmdir nome-do-dir --- remove o diretóriodir, desde que esteja vazio.
O argumentodirpode ser dado de uma forma absoluta ou relativa. Na forma absoluta, diridentifica o caminho (path) para o diretório pretendido a partir da raiz de todo o sistema de ficheiros; tem a forma /subdir1/.../subdirN. Na forma relativa,dir indica o caminho para o diretório pretendido a partir do diretório atual; tem a forma subdir1/.../subdirN.
Há dois nomes especiais para diretórios: “.” e “..” que representam respetivamente o diretório atual e o diretório pai, ou seja, o diretório ao qual o atual pertence.
Exercício 2.16
Execute os comandos seguintes e interprete os resultados:
cd / pwd cd /usr cd ~ pwd
cd /usr/sbin pwd
cd - pwd
Exercício 2.17
Experimente utilizar o programa gráfico gestor de ficheiros para navegar pelos mesmos diretórios que no exercício anterior:/,/usr,/usr/local/src, etc.
Acessível no menuAcessórios/Gestor de ficheiros PcManFM.
10Umaliasé um nome alternativo usado em representação de um determinado comando. São criados usando o comando internoalias.
Importante: Nos PCs dos laboratórios, o subdiretórioarcanão é um diretório lo- cal do PC onde está a trabalhar; é na verdade a sua área privada de armazenamento no Arquivo Central de Dados (ARCA11), um servidor de ficheiros da Universidade de Aveiro. Esta área também é acessível a partir do ambiente Windows e através da Web, É neste diretório que deve gravar os ficheiros e diretórios que criar no decurso das aulas práticas. Os computadores das salas de aulas foram programados para apagarem o dire- tório de utilizador (e.g./homermt/a1245/) sempre que são reiniciados. Só o conteúdo do subdiretórioarcaé salvaguardado. É portanto aí que deve colocar todo o seu trabalho.
Exercício 2.18
Também pode executar estes comandos no computador da aula. Experimente mudar o diretório atual para o seu subdiretórioarca. Liste o seu conteúdo.
Reconhece algum dos ficheiros?
Exercício 2.19
No PC da aula (e não na máquina virtual), crie, no diretórioarca, um subdi- retório chamadolabie, dentro desse, um diretório chamadoaula02. Guarde neste diretório este guião.
Manipulação de ficheiros
O Linux dispõe de diversos comandos de manipulação de ficheiros. Eis alguns:
cat fic --- imprime no dispositivo de saídastandard(por omissão o ecrã) o conteúdo do ficheirofic. O nome deste comando é uma abreviatura deconcatenate, porque permite concatenar o conteúdo de vários ficheiros num só.
rm fic --- remove (apaga) o ficheirofic.
mv fic1 fic2 --- muda o nome do ficheirofic1parafic2. mv fic dir --- move o ficheiroficpara dentro do diretóriodir. cp fic1 fic2 --- cria uma cópia do ficheirofic1chamadafic2. cp fic dir --- cria uma cópia do ficheiroficdentro do diretóriodir.
11https://arca.ua.pt
head fic --- mostra as primeiras linhas do ficheiro (de texto)fic. tail fic --- mostra as últimas linhas do ficheiro (de texto)fic.
more fic --- imprime no dispositivo de saída padrão (por omissão o ecrã), página a página, o conteúdo do ficheirofic.
less fic --- comando similar aomore, mas que permite uma navegação mais sofisticada para trás e para diante nas linhas apresentadas.
grep padrão fic --- seleciona as linhas do ficheiro (de texto) ficque satisfazem o critério de seleçãopadrão.
wc fic --- conta o número de linhas, palavras e caracteres do ficheirofic. O nome deste comando é um acrónimo deword count
sort fic --- ordena as linhas do ficheiroficde acordo com um critério (alfanumérica crescente, por omissão).
find dir -name fic --- procura um ficheiro com o nomefica partir do diretóriodir. Todos estes comandos podem ser invocados usando argumentos opcionais que confi- guram o seu modo de funcionamento.
Exercício 2.20
Utilizando a consola, crie um directório chamadoaula02no seu Ambiente de Trabalho e copie o ficheiro/etc/passwdpara este directório. Imprima o seu conteúdo no ecrã.
Experimente outros comandos da lista acima.
2.4 Edição de ficheiros de texto
Importante!- Antes de iniciar esta secção, instale a aplicaçãovimusando os comandos sudo apt-get updatee depoissudo apt-get install vim
Um ficheiro de texto é um ficheiro constituído por octetos (bytes) que representam carac- teres alfanuméricos, sinais de pontuação, espaços em branco e caracteres invisíveis de mudança de linha. O editor primordial do Linux para ficheiros de texto é ovi, ou a sua