Sie sind auf Seite 1von 214

CPqD - Campinas (SP).

e Pesquisa qualificada como


uma Organizao Social (OS),
sendo ligada ao Ministrio da
Cincia, Tecnologia e Inovao
(MCTI)

responsvel

pelo

Programa Interministerial RNP,

Introduo

Este curso destinado a usurios, especialistas de suporte e desenvolvedores de software que desejam aprender
a utilizar o Linux, um ambiente computacional moderno,
gil e com um sistema operacional extremamente estvel e verstil. O curso destina-se tambm aos administradores de sistemas Windows e aos profissionais que desejam iniciar os estudos para a certificao LPIC1, do Linux
Professional Institute.
Este livro inclui os roteiros das atividades prticas e o contedo dos slides apresentados em sala de aula, apoiando
profissionais na disseminao deste conhecimento em
suas organizaes ou localidades de origem.

Introduo ao Linux

Andreia Gentil Bonfante possui graduao em Bacharelado em Cincias


de Computao pela Universidade
Estadual de Londrina, mestrado e
doutorado em Cincias da Computao e Matemtica Computacional
pela Universidade de So Paulo. Atualmente professora/pesquisadora da Universidade Federal de Mato Grosso. Tem experincia na rea de Cincia
da Computao, com nfase em Inteligncia Artificial, atuando principalmente nos seguintes temas: Processamento
de Lngua Natural, Minerao de Textos e Aprendizado de
Mquina. Atua na Educao a Distncia como Coordenadora da Especializao em Informtica na Educao. Atuou
tambm como instrutora dos cursos de Introduo ao Linux
da Escola Superior de Redes na Unidade de Cuiab.

A RNP Rede Nacional de Ensino

LIVRO DE APOIO AO CURSO

Arthur Mendes Peixoto possui mais


de 26 anos de experincia na rea de
Redes de Comunicao de Dados e
Engenharia de Sistemas, com Dissertao de Mestrado em Anlise de Performance de Sistemas Distribudos, no
Instituto Militar de Engenharia - IME.
Participou do desenvolvimento e implantao das primeiras
redes com tecnologias ATM, Frame Relay, IP/ MPLS. Foi consultor de grandes projetos como o Backbone IP do Plano
Nacional de Banda Larga (PNBL) da Telebrs. Trabalhou por
22 anos no setor de Telecomunicaes da Embratel, atuando
na prospeco de novas tecnologias para as Redes de Nova
Gerao NGN. Participou de testes e verificaes de requisitos de RFPs, nos pases: EUA, Canad, Japo, Frana, Espanha e Mxico. Atuou no desenvolvimento de sistemas no

ao Linux

que conta com a participao dos


ministrios da Educao (MEC), da
Sade (MS) e da Cultura (MinC).
Pioneira no acesso Internet no
Brasil, a RNP planeja e mantm a
rede Ip, a rede ptica nacional
acadmica de alto desempenho.
Com Pontos de Presena nas
27 unidades da federao, a rede
tem mais de 800 instituies
conectadas. So aproximadamente
3,5 milhes de usurios usufruindo

Arthur Mendes Peixoto


Andreia Gentil Bonfante

de uma infraestrutura de redes


avanadas para comunicao,
computao e experimentao,
que contribui para a integrao
entre o sistema de Cincia e
Tecnologia, Educao Superior,
Sade e Cultura.

Ministrio da
Cultura
Ministrio da
Sade
Ministrio da
Educao
ISBN 978-85-63630-19-3

9 788563 630193

Ministrio da
Cincia, Tecnologia
e Inovao

A RNP Rede Nacional de Ensino


e Pesquisa qualificada como
uma Organizao Social (OS),
sendo ligada ao Ministrio da
Cincia, Tecnologia e Inovao
(MCTI)

responsvel

pelo

Programa Interministerial RNP,


que conta com a participao dos
ministrios da Educao (MEC), da
Sade (MS) e da Cultura (MinC).
Pioneira no acesso Internet no
Brasil, a RNP planeja e mantm a
rede Ip, a rede ptica nacional
acadmica de alto desempenho.
Com Pontos de Presena nas
27 unidades da federao, a rede
tem mais de 800 instituies
conectadas. So aproximadamente
3,5 milhes de usurios usufruindo
de uma infraestrutura de redes
avanadas para comunicao,
computao e experimentao,
que contribui para a integrao
entre o sistema de Cincia e
Tecnologia, Educao Superior,
Sade e Cultura.

Ministrio da
Cultura
Ministrio da
Sade
Ministrio da
Educao
Ministrio da
Cincia, Tecnologia
e Inovao

Introduo

ao Linux

Arthur Peixoto
Andreia Gentil Bonfante

Introduo

ao Linux

Arthur Peixoto
Andreia Gentil Bonfante

Rio de Janeiro
Escola Superior de Redes
2013

Copyright 2013 Rede Nacional de Ensino e Pesquisa RNP


Rua Lauro Mller, 116 sala 1103
22290-906 Rio de Janeiro, RJ
Diretor Geral

Nelson Simes
Diretor de Servios e Solues

Jos Luiz Ribeiro Filho

Escola Superior de Redes


Coordenao

Luiz Coelho
Edio

Pedro Sangirardi
Reviso Tcnica

Marcelo Castellan Braga


Coordenao Acadmica de Administrao de Sistemas

Sergio Alves de Souza

Equipe ESR (em ordem alfabtica)

Celia Maciel, Cristiane Oliveira, Derlina Miranda, Edson Kowask, Elimria Barbosa,
Lourdes Soncin, Luciana Batista, Luiz Carlos Lobato e Renato Duarte
Capa, projeto visual e diagramao

Tecnodesign
Verso

1.1.0

Este material didtico foi elaborado com fins educacionais. Solicitamos que qualquer erro encontrado ou dvida com relao ao material ou seu uso seja enviado para a equipe de elaborao de
contedo da Escola Superior de Redes, no e-mail info@esr.rnp.br. A Rede Nacional de Ensino e
Pesquisa e os autores no assumem qualquer responsabilidade por eventuais danos ou perdas, a
pessoas ou bens, originados do uso deste material.
As marcas registradas mencionadas neste material pertencem aos respectivos titulares.
Distribuio

Escola Superior de Redes

Rua Lauro Mller, 116 sala 1103


22290-906 Rio de Janeiro, RJ
http://esr.rnp.br
info@esr.rnp.br
Dados Internacionais de Catalogao na Publicao (CIP)
P377a
Peixoto, Arthur Mendes

Introduo ao Linux / Arthur Mendes Peixoto, Andreia Bonfante; Revisor: Marcelo Braga.

Rio de Janeiro: RNP/ESR, 2013.

210 p. : il. ; 28 cm.

Bibliografia: p. 193-194.
ISBN 978-85-63630-19-3


1. Linux (Sistema operacional de computador). 2. Sistema operacional (computadores).

3. UNIX Shell (Programa de computador). I. Bonfante, Andreia. II. Braga, Marcelo. III. Titulo.

CDD 005.40469

Sumrio
1. Histrico e instalao
O que um Sistema Operacional?1
Arquitetura do sistema operacional Unix2
Caractersticas principais3
Histrico do Unix5
Verses do Unix5
Similares Unix7
Distribuies Linux8
Exerccio de fixao 1 Entendendo as licenas Unix e GPL8
Red Hat Enterprise Linux8
CentOS9
Debian9
Ubuntu10
Mandriva Linux10
Slackware11
Exerccio de fixao 2 Conhecendo as distribuies Linux11
A escolha da distribuio Linux11
Razes para utilizar o Linux12
Hardwares suportados12
Lista de verificao de hardware13
Requisitos mnimos de hardware13
Instalando o Linux14
Criao da mquina virtual14
Programa de instalao do Linux15

iii

Roteiro de Atividades 119


Atividade 1.1 Conhecendo as distribuies Linux19
Atividade 1.2 Obtendo informaes para iniciar a instalao do Linux19
Atividade 1.3 Preparando o ambiente de instalao19
Atividade 1.4 Instalando o Linux20
Atividade 1.5 Inicializando o sistema pela primeira vez20

2. Utilizao do sistema
Configuraes iniciais21
Informaes da licena21
Criando uma conta de usurio21
Configurando data e hora21
Habilitao e configurao do Kdump22
Ambiente grfico22
Iniciando e finalizando o Servidor X22
Configurando o Servidor X23
Arquivo xorg.conf23
Abrindo uma sesso26
GNOME desktop26
Menu Aplicativos27
Menu Locais28
Menu Sistema28
Aplicaes28
Configurando o GNOME29
KDE desktop30
Lanador de aplicaes31
Aplicaes do KDE33
Configurando o KDE34
Documentao35
Roteiro de Atividades 237
Atividade 2.1 Conhecendo o ambiente grfico 37
Atividade 2.2 Conhecendo os gerenciadores de arquivos37
Atividade 2.3 Trabalhando com arquivos e diretrios37

iv

3. Organizao do Linux
Sistema de arquivos do Linux39
Exerccio de fixao 1 Conhecendo o sistema de arquivos40
Exerccio de fixao 2 Estrutura de diretrios40
Montando e desmontando um dispositivo41
Inode41
Tipos de arquivos42
Arquivo regular42
Diretrio42
Arquivos de dispositivos43
Named pipes44
Para que servem os links45
Exerccio de fixao 3 Links45
Sockets46
Atributos dos arquivos46
Permisses de arquivos47
Exerccio de fixao 4 Atributos e permisses de arquivos50
Operaes com arquivos e diretrios50
Exerccio de fixao 5 Criando arquivos52
Criando diretrios52
Exerccio de fixao 6 Criando diretrios53
Copiando arquivos e diretrios53
Removendo arquivos e diretrios54
Exerccio de fixao 7 Removendo arquivos54
Movendo arquivos e diretrios54
Exerccio de fixao 8 Renomeando arquivos55
Listando arquivos e diretrios55
Exerccio de fixao 9 Listando arquivos56
Procurando arquivos e diretrios56
Navegando pela rvore de diretrios57
Empacotando e compactando arquivos e diretrios58
Exerccio de fixao 10 Pgina de manuais60
Roteiro de Atividades 361
Atividade 3.1 Conhecendo os arquivos61
Atividade 3.2 Criando arquivos61
Atividade 3.3 Criando diretrios e copiando arquivos61
Atividade 3.4 Empacotando e compactando arquivos61
Atividade 3.5 Removendo arquivos e diretrios61
v

4. Desvendando o Linux
Entrada e sada padro de dados e sada padro de erros63
Redirecionamento de entrada e sada64
Pipe ou canalizao66
Exerccio de fixao 1 Comando sort68
Comandos para manipulao de arquivos68
Substituindo nomes de arquivos68
Visualizando o contedo de arquivos68
Exerccio de fixao 2 Visualizando contedo de arquivos69
Contabilizando o contedo de arquivos70
Exibindo o contedo inicial e final de arquivos70
Exerccio de fixao 3 Exibindo o contedo de arquivos71
Selecionando trechos de arquivos71
Comparao entre arquivos74
Ordenao em arquivos75
Roteiro de Atividades 477
Atividade 4.1 Pesquisando em arquivos77
Atividade 4.2 Contabilizando arquivos77
Atividade 4.3 Controlando a exibio do contedo de arquivos77
Atividade 4.4 Combinando comandos para criar novas funcionalidades77

5. Edio de texto
Processadores de texto79
Editores de texto79
Editor Vi80
Modos do editor Vi82
Exerccio de fixao 1 Primeiro arquivo com Vi87
Roteiro de Atividades 591
Atividade 5.1 Criando um texto no Vi91
Atividade 5.2 Usando recursos bsicos do Vi91
Atividade 5.3 Combinando recursos do Vi92
Atividade 5.4 Execuo de comandos diversos92
Atividade 5.5 Execuo de comandos avanados92

vi

6. Shell
Noes bsicas93
Gerenciamento de processos95
Criao de processos96
Processos em background e daemons98
Sinais do sistema99
Visualizao de processos101
Variveis de ambiente102
Uso de aspas simples, duplas e barra invertida 104
Exerccio de fixao 1 Visualizao de processos104
Exerccio de fixao 2 Visualizao de processos em tempo real105
Exerccio de fixao 3 Visualizao de rvore de processos105
Shell Script105
Exerccio de fixao 4 Criando um script simples107
Variveis do Shell Script 107
Escopo das variveis109
Expresses e testes110
Comando read113
Parmetros de linha de comando (variveis especiais)114
Roteiro de Atividades 6117
Atividade 6.1 Exibindo processos em estados especficos117
Atividade 6.2 Executando processos em background117
Atividade 6.3 Utilizando um daemon117
Atividade 6.4 Usando testes dentro dos scripts117
Atividade 6.6 Lendo variveis e usando expresses nos scripts117
Atividade 6.7 Utilizando parmetros118
Atividade 6.8 Utilizando parmetros e testes118
Atividade 6.9 Utilizando testes de diretrio118
Atividade 6.10 Listando arquivos passados por parmetro118

7. Shell Script
Estruturas de deciso119
Comando if119
Comando if tipos de condio121

vii

Comando if ... else121


Aninhando comandos if e else123
Exerccio de fixao 1 Estrutura de deciso124
Comando case124
Expresses regulares126
Operador =~129
Comando sed130
Comando tr130
Exerccio de fixao 2 Metacaracteres130
Roteiro de Atividades 7131
Atividade 7.1 Verificando a existncia de arquivos131
Atividade 7.2 Verificando a entrada de parmetros131
Atividade 7.3 Executando sequncias de comandos 131
Atividade 7.4 Combinando parmetros, leitura e execuo de comandos132
Atividade 7.5 Utilizando comando grep/egrep132
Atividade 7.6 Ainda usando grep/egrep133
Atividade 7.7 Combinando comandos 134
Atividade 7.8 Aninhando condicionais134
Atividade 7.9 Utilizando expresses regulares135
Atividade 7.10 Utilizando case135
Atividade 7.11 Utilizando case com menu de opes135
Atividade 7.12 Combinando if com case135
Atividade 7.13 Combinando if, case e comandos135

8. Shell Script
Estruturas de repetio137
Comando for137
Exerccio de fixao 1 Alterando o valor da varivel IFS 140
Comandos while e until140
Funes141
Exerccio de fixao 2 Etapas do script147
Arrays147
Roteiro de Atividades 8151
Atividade 8.1 Verificando permisso dos arquivos151
viii

Atividade 8.2 Verificando usurios e informaes 151


Atividade 8.3 Percorrendo um diretrio com o comando for e utilizando contadores151
Atividade 8.4 Ainda manipulando listas com o comando for e contadores151
Atividade 8.5 Manipulando sequncias com o comando for151
Atividade 8.6 Testando os diversos comandos de repetio151
Atividade 8.7 Utilizando o comando for como contador151
Atividade 8.8 Utilizando repetio condicionada151
Atividade 8.9 Criando uma agenda simples151
Atividade 8.10 Criando uma calculadora simples utilizando funes152

9. Instalao de aplicaes
Aplicaes no sistema operacional Linux153
Linguagens de programao 154
Instalando aplicaes a partir de seus cdigos-fontes156
Obteno dos arquivos-fontes156
Verificao do ambiente para a compilao156
Compilao157
Instalao157
Instalando aplicaes a partir de arquivos binrios158
Pacotes RPM159
Dependncias161
Exerccio de fixao 1 Gerenciador de pacotes RPM162
YUM163
Configurando o YUM163
Utilizando o YUM164
APT168
Configurando o APT168
Utilizando o APT168
Dicas sobre gerenciadores de pacotes170
Exerccio de fixao 2 Gerenciador de pacotes APT171
Roteiro de Atividades 9173
Atividade 9.1 Encontrando bibliotecas utilizadas por um programa173
Atividade 9.2 Instalando uma aplicao a partir do seu cdigo-fonte173
Atividade 9.3 Instalando uma aplicao a partir de um arquivo binrio173
Atividade 9.4 Instalando um pacote rpm173

ix

Atividade 9.5 Descobrindo a qual pacote pertence uma biblioteca173


Atividade 9.6 Descobrindo as dependncias dos pacotes173
Atividade 9.7 Atualizando o sistema com yum173
Atividade 9.8 Instalando pacotes com yum173

10. Configurao e utilizao de dispositivos de hardware


Introduo175
Exerccio de fixao 1 Verificando o kernel176
Arquivos de dispositivos176
Exerccio de fixao 2 Arquivos de dispositivos177
Mdulos177
Exerccio de fixao 3 Mdulos179
Initrd179
Gerenciando dispositivos179
Hotplug179
Udev180
Exerccio de fixao 4 Gerenciando dispositivos181
Identificando e configurando dispositivos181
Unidades de CD/DVD183
Dispositivos de armazenamento USB185
Interfaces de rede186
Placas SCSI188
Placas de vdeo188
Gerenciamento de energia190
Advanced Power Management (APM)190
Advanced Configuration and Power Interface (ACPI)190
Roteiro de Atividades 10191
Atividade 10.1 Descobrindo os dispositivos detectados pelo kernel191
Atividade 10.2 Verificando os mdulos carregados191
Atividade 10.3 Identificando os dispositivos PCI191
Atividade 10.4 Utilizando um pen drive191
Atividade 10.5 Verificando e identificando as placas de rede191
Atividade 10.6 Identificando a placa grfica e seu driver191

Bibliografia 193

Escola Superior de Redes


A Escola Superior de Redes (ESR) a unidade da Rede Nacional de Ensino e Pesquisa
(RNP) responsvel pela disseminao do conhecimento em Tecnologias da Informao
e Comunicao (TIC).
A ESR nasce com a proposta de ser a formadora e disseminadora de competncias em
TIC para o corpo tcnico-administrativo das universidades federais, escolas tcnicas e
unidades federais de pesquisa. Sua misso fundamental realizar a capacitao tcnica
do corpo funcional das organizaes usurias da RNP, para o exerccio de competncias
aplicveis ao uso eficaz e eficiente das TIC.
A ESR oferece dezenas de cursos distribudos nas reas temticas: Administrao e Projeto de Redes, Administrao de Sistemas, Segurana, Mdias de Suporte Colaborao
Digital e Governana de TI.
A ESR tambm participa de diversos projetos de interesse pblico, como a elaborao
e execuo de planos de capacitao para formao de multiplicadores para projetos
educacionais como: formao no uso da conferncia web para a Universidade Aberta do
Brasil (UAB), formao do suporte tcnico de laboratrios do Proinfo e criao de um conjunto de cartilhas sobre redes sem fio para o programa Um Computador por Aluno (UCA).

A metodologia da ESR
A filosofia pedaggica e a metodologia que orientam os cursos da ESR so baseadas na
aprendizagem como construo do conhecimento por meio da resoluo de problemas tpicos da realidade do profissional em formao. Os resultados obtidos nos cursos de natureza
terico-prtica so otimizados, pois o instrutor, auxiliado pelo material didtico, atua no
apenas como expositor de conceitos e informaes, mas principalmente como orientador do
aluno na execuo de atividades contextualizadas nas situaes do cotidiano profissional.
A aprendizagem entendida como a resposta do aluno ao desafio de situaes-problema
semelhantes s encontradas na prtica profissional, que so superadas por meio de anlise,
sntese, julgamento, pensamento crtico e construo de hipteses para a resoluo do problema, em abordagem orientada ao desenvolvimento de competncias.
Dessa forma, o instrutor tem participao ativa e dialgica como orientador do aluno para as
atividades em laboratrio. At mesmo a apresentao da teoria no incio da sesso de aprendizagem no considerada uma simples exposio de conceitos e informaes. O instrutor
busca incentivar a participao dos alunos continuamente.

xi

As sesses de aprendizagem onde se do a apresentao dos contedos e a realizao das


atividades prticas tm formato presencial e essencialmente prtico, utilizando tcnicas
de estudo dirigido individual, trabalho em equipe e prticas orientadas para o contexto de
atuao do futuro especialista que se pretende formar.
As sesses de aprendizagem desenvolvem-se em trs etapas, com predominncia de
tempo para as atividades prticas, conforme descrio a seguir:
Primeira etapa: apresentao da teoria e esclarecimento de dvidas (de 60 a 90 minutos).
O instrutor apresenta, de maneira sinttica, os conceitos tericos correspondentes ao tema
da sesso de aprendizagem, com auxlio de slides em formato PowerPoint. O instrutor
levanta questes sobre o contedo dos slides em vez de apenas apresent-los, convidando
a turma reflexo e participao. Isso evita que as apresentaes sejam montonas e que
o aluno se coloque em posio de passividade, o que reduziria a aprendizagem.
Segunda etapa: atividades prticas de aprendizagem (de 120 a 150 minutos).
Esta etapa a essncia dos cursos da ESR. A maioria das atividades dos cursos assncrona e realizada em duplas de alunos, que acompanham o ritmo do roteiro de atividades
proposto no livro de apoio. Instrutor e monitor circulam entre as duplas para solucionar
dvidas e oferecer explicaes complementares.
Terceira etapa: discusso das atividades realizadas (30 minutos).
O instrutor comenta cada atividade, apresentando uma das solues possveis para
resolv-la, devendo ater-se quelas que geram maior dificuldade e polmica. Os alunos so
convidados a comentar as solues encontradas e o instrutor retoma tpicos que tenham
gerado dvidas, estimulando a participao dos alunos. O instrutor sempre estimula os
alunos a encontrarem solues alternativas s sugeridas por ele e pelos colegas e, caso
existam, a coment-las.

Sobre o curso
Esse o curso introdutrio da trilha de Administrao de Sistemas. Seu objetivo introduzir o aluno ao mundo Linux. O sistema operacional (SO) utilizado o CentOS, que
baseado em RedHat, gratuito e extremamente estvel, alm de suportar todos os servios
necessrios a um ambiente web.
O curso composto de 10 captulos de embasamento terico e atividades correlatas para
aprendizado e fixao do conhecimento. O curso tem como objetivo apresentar as facilidades de administrao e gerenciamento, que sero exploradas com maior profundidade nos
demais cursos da rea de Administrao de Sistemas da Escola Superior de Redes da RNP.

A quem se destina
Este curso destinado a usurios, especialistas de suporte e desenvolvedores de software
que desejam aprender a utilizar o Linux, um ambiente computacional moderno, gil e com
um sistema operacional extremamente estvel e verstil.
O curso destina-se tambm aos administradores de sistemas Windows e aos profissionais
que desejam iniciar os estudos para a certificao LPIC1, do Linux Professional Institute.

xii

Convenes utilizadas neste livro


As seguintes convenes tipogrficas so usadas neste livro:
Itlico
Indica nomes de arquivos e referncias bibliogrficas relacionadas ao longo do texto.

Largura constante
Indica comandos e suas opes, variveis e atributos, contedo de arquivos e resultado da
sada de comandos. Comandos que sero digitados pelo usurio so grifados em negrito
e possuem o prefixo do ambiente em uso (no Linux normalmente # ou $, enquanto no
Windows C:\).

Contedo de slide
Indica o contedo dos slides referentes ao curso apresentados em sala de aula.

Smbolo
Indica referncia complementar disponvel em site ou pgina na internet.

Smbolo
Indica um documento como referncia complementar.

Smbolo
Indica um vdeo como referncia complementar.

Smbolo
Indica um arquivo de adio como referncia complementar.

Smbolo
Indica um aviso ou precauo a ser considerada.

Smbolo
Indica questionamentos que estimulam a reflexo ou apresenta contedo de apoio ao
entendimento do tema em questo.

Smbolo
Indica notas e informaes complementares como dicas, sugestes de leitura adicional ou
mesmo uma observao.

Permisses de uso
Todos os direitos reservados RNP.
Agradecemos sempre citar esta fonte quando incluir parte deste livro em outra obra.
Exemplo de citao: PEIXOTO, Arthur Mendes; BONFANTE, Andreia Gentil. Introduo ao
Linux. Rio de Janeiro: Escola Superior de Redes, 2013.

xiii

Comentrios e perguntas
Para enviar comentrios e perguntas sobre esta publicao:
Escola Superior de Redes RNP
Endereo: Av. Lauro Mller 116 sala 1103 Botafogo
Rio de Janeiro RJ 22290-906
E-mail: info@esr.rnp.br

Sobre os autores
Arthur Mendes Peixoto possui mais de 26 anos de experincia na rea de Redes de Comunicao de Dados e Engenharia de Sistemas, com Dissertao de Mestrado em Anlise de
Performance de Sistemas Distribudos, no Instituto Militar de Engenharia - IME. Participou
do desenvolvimento e implantao das primeiras redes com tecnologias ATM, Frame Relay,
IP/ MPLS. Foi consultor de grandes projetos como o Backbone IP do Plano Nacional de Banda
Larga (PNBL) da Telebrs. Trabalhou por 22 anos no setor de Telecomunicaes da Embratel,
atuando na prospeco de novas tecnologias para as Redes de Nova Gerao NGN. Participou de testes e verificaes de requisitos de RFPs, nos pases: EUA, Canad, Japo, Frana,
Espanha e Mxico. Atuou no desenvolvimento de sistemas no CPqD - Campinas (SP).
Andreia Gentil Bonfante possui graduao em Bacharelado em Cincias de Computao
pela Universidade Estadual de Londrina, mestrado e doutorado em Cincias da Computao e Matemtica Computacional pela Universidade de So Paulo. Atualmente professora/pesquisadora da Universidade Federal de Mato Grosso. Tem experincia na rea de
Cincia da Computao, com nfase em Inteligncia Artificial, atuando principalmente nos
seguintes temas: Processamento de Lngua Natural, Minerao de Textos e Aprendizado de
Mquina. Atua na Educao a Distncia como Coordenadora da Especializao em Informtica na Educao. Atuou tambm como instrutora dos cursos de Introduo ao Linux da
Escola Superior de Redes na Unidade de Cuiab.
Marcelo Castellan Braga possui graduao em Engenharia Eletrnica pelo CEFET-RJ,
ps-graduao em Anlise, Projeto e Gerncia de Sistemas pela PUC-RJ e mestrado em
informtica pela UNIRIO. Atualmente scio diretor da MCB Tech, empresa que presta consultoria em redes de computadores, servios de internet, segurana de dados e desenvolvimento de software. Atuou durante mais de 10 anos na rea de TI em empresas como Rede
Nacional de Ensino e Pesquisa (RNP) e Embratel.
Sergio Ricardo Alves de Souza possui mais de 35 anos de experincia na rea de Administrao e Suporte de Sistemas. Trabalhou em empresas como: Burroughs (UNISYS), ARSA
(Infraero), Cobra Computadores, LNCC e outras. Consultoria e treinamento em empresas
como: Fiocruz, Jardim Botnico, Museu Goeldi, Cefet-MG, IBM Brasil. Participou do desenvolvimento e implantao de cursos profissionalizantes em Informtica em Petrpolis FAETC. Participou do projeto de criao do Instituto Superior de Tecnologia em Cincia da
Computao de Petrpolis. Possui Notrio Saber em Informtica pelo LNCC.

xiv

1
Compreender o que um Sistema Operacional e estudar a arquitetura do sistema
operacional Unix.

conceitos

Histrico do Unix, hardwares suportados e instalao do Linux.

O que um Sistema Operacional?


Funes bsicas de um sistema operacional:

11 Gerenciar o uso da CPU.


11 Gerenciar o uso da memria RAM.
11 Gerenciar o armazenamento de dados.
11 Gerenciar os dispositivos de entrada e sada.
11 Interpretar comandos.
Um Sistema Operacional a interface de comunicao entre o usurio e o hardware. Para
desempenhar essa funo, o Sistema Operacional deve conhecer a linguagem do usurio e
a do hardware, e tambm controlar a troca de mensagens entre os dois. Alm disso, deve
interpretar as ordens do usurio e passar ao hardware as instrues para que sejam executadas. Principais funes desempenhadas por um Sistema Operacional:
11 Gerenciar o uso da CPU: o Sistema Operacional deve controlar a utilizao da CPU, dividindo
seu tempo de uso de modo que ela execute os processos dos usurios e do prprio Sistema
Operacional, um de cada vez, enquanto os outros aguardam na fila para serem processados.
11 Gerenciar o uso da memria: preciso manter a integridade dos dados e dos programas em execuo na memria RAM do computador.
11 Gerenciar os dispositivos de entrada e sada: funo do Sistema Operacional
gerenciar os acessos aos dispositivos de entrada e sada de dados (I/O), como: impressoras, monitores, teclados, scanners, microfones, caixas de som etc. Um subsistema, ou
subconjunto de programas, realiza essa funo especfica do sistema, que consiste entre
outras coisas na leitura e escrita de dados nesses perifricos.
11 Gerenciar o armazenamento de dados: funo do Sistema Operacional armazenar e
recuperar os dados nos dispositivos de armazenamento, como discos rgidos, pen drives,

Captulo 1 - Histrico e instalao

objetivos

Histrico e instalao

CDs, DVDs etc.


1

11 Interpretar comandos: necessrio que o sistema interaja com o usurio. O interpretador de comandos recebe os pedidos ou os comandos e compreende o que o usurio
deseja executar. Aps interpretar o comando, encaminha pedidos aos outros mdulos do
Sistema Operacional, especializados em atender esses pedidos.
Estas funes bsicas so as mnimas necessrias para o funcionamento de um computador. Veremos que um sistema operacional pode ter muitas outras funes que definem
sua especializao.
Dependendo do tipo de aplicao que um computador vai suportar, seu Sistema Operacional pode necessitar de executar funes especiais, alm das bsicas apresentadas anteriormente. Um Sistema Operacional que se destina a aplicaes pessoais deve ter interface
grfica bem desenvolvida para facilitar a utilizao por usurios leigos em sistemas. H
aqueles que se destinam a aplicaes em tempo real, ou seja, que so sensveis a retardos,
conforme ocorre com alguns controles de processos industriais. Existem computadores que
so compartilhados, atendendo a usurios de uma empresa ou departamento, que necessitam realizar diversas tarefas simultneas (multitarefa), ou que permitem vrios usurios
conectados simultaneamente (multiusurio). Esses computadores necessitam de Sistemas
Operacionais que realizem funes especiais, como:
11 Controle de acesso: administra o acesso de mltiplos usurios s informaes armazenadas e aos dados em memria, garantindo a confidencialidade dessas informaes.
funo do Sistema Operacional garantir o sigilo s informaes de cada usurio, restringindo o acesso a essas informaes a outros usurios que utilizem o mesmo sistema.
11 Gerncia de contabilizao: contabiliza todas as atividades do sistema, armazenando em
disco as informaes relativas s estatsticas de utilizao, para posterior emisso de relatrios.
Veremos que, desde o nascimento do Unix at os dias atuais, alm das funcionalidades
bsicas e especiais, vrias outras funes foram agregadas ao Sistema Operacional,
tornando-o um sistema de grande complexidade e aplicabilidade, ou seja, um Sistema
Operacional multi-purpose.

Arquitetura do sistema operacional Unix


11 Independncia do hardware.

11 Kernel faz a interface entre o hardware e o restante do sistema.


11 Gerenciador de processos faz parte do kernel.
O Unix foi projetado com arquitetura em camadas, o que permite maior independncia
do hardware utilizado. Para que isso seja possvel, apenas uma pequena parte do sistema
possui acesso direto ao hardware e se comunica com o restante do sistema.
Somente o kernel depende do hardware, permitindo que quase todo o sistema seja reaproveitado na migrao entre diferentes mquinas. O interpretador de comandos, chamado de
shell, no faz parte do kernel do sistema, e uma excelente linguagem de programao, que
Introduo ao Linux

torna o Unix um sistema bastante verstil.


O gerenciador de processos faz parte do kernel do Sistema Operacional e o responsvel
pelo gerenciamento dos processos em execuo e pela diviso do tempo de processamento
da CPU entre esses processos. Cada processo necessita de um perodo de tempo reservado
para que possa ser executado pela CPU. Depois que esse tempo se esgota, outro processo
passa a ser processado e o anterior passa a aguardar por um novo perodo de tempo para
ser novamente processado. A cada processo atribuda uma prioridade, que se altera
2

dinamicamente conforme a execuo de um algoritmo no kernel do Unix. O gerenciador de


processos tambm responsvel por gerenciar uma rea em disco que se constitui numa
extenso da memria RAM principal da mquina e que utilizada em casos de esgotamento
dessa memria. A rea chamada de rea de swap, para onde so copiadas temporariamente imagens dos processos, liberando, assim, parte de memria para permitir que outros
processos possam ser executados. A Figura 1.1 mostra como dividida a arquitetura do
Sistema Operacional Unix. Essa diviso proporciona a esse sistema diversas caractersticas,
que veremos a seguir.

Figura 1.1
Diviso do Sistema
Operacional Unix.

Caractersticas principais
11 Portabilidade.

11 Multiusurio.
11 Multiprocessamento.
11 Estrutura hierrquica de diretrios.
11 Interpretador de comandos (shell).
11 Pipelines.
11 Utilitrios.
11 Desenvolvimento de software.
11 Maturidade.
O Unix um Sistema Operacional muito flexvel, com grande nmero de funcionalidades.
Principais caractersticas:
11 Portabilidade: o Unix portvel, ou seja, pode ser adaptado facilmente para ser executado em diferentes arquiteturas de hardware. Sua adequao a um novo hardware
rpida e exige pequeno esforo de programao. Talvez essa seja a caracterstica mais
cantes diferentes. A portabilidade se estende, tambm, para os programas e pacotes de
software escritos para o Unix, o que promoveu grande desenvolvimento de aplicativos e
intensificou sua expanso no mercado.
11 Multiusurio: o Unix foi concebido para ser um sistema multiusurio, suportando conexes simultneas de diversos usurios. Com isso, possvel melhor utilizao da capacidade de processamento e da manipulao e armazenamento das informaes do sistema
de computao. Para isso, o Sistema Operacional possui ferramentas de segurana para
permitir o isolamento das atividades de cada usurio.

Captulo 1 - Histrico e instalao

importante desse Sistema Operacional, que permitiu sua adoo por centenas de fabri-

11 Multiprocessamento: a funcionalidade de multiprocessamento do Unix permite a um


usurio executar mltiplas tarefas simultaneamente. O sistema pode acessar um arquivo
ou imprimir um relatrio ao mesmo tempo em que o usurio pode editar um documento,
possibilitando melhor produtividade e reduzindo a ociosidade tanto do processador
quanto dos recursos de entrada e sada do sistema. A Figura 1.2 ilustra o conceito de
multiprocessamento.
Processos

Time slice

Swap

3
4

Figura 1.2
Multiprocessamento: execuo de
mltiplas tarefas ao
mesmo tempo.

4
Multi processamento

11 Estrutura hierrquica de diretrios: o sistema de armazenamento de informaes


possui estrutura hierrquica, como mostra a Figura 1.3. A estrutura hierrquica uma
forma de arquivamento natural, pois pode ser comparada, por exemplo, estrutura
organizacional hierrquica de uma empresa e, consequentemente, torna mais fcil a
localizao e a manipulao de informaes distribudas por essa estrutura.
/ (root)

Vendas

Compras

Leste

Folha de pagamento

Oeste

Arquivos
de contas
a pagar
Relatrios
de venda

Arquivos
de salrios

Arquivos
de cartes
de ponto

Relatrios
de vendas

Figura 1.3
Estrutura de hierarquia do sistema de
armazenamento de
informaes.

11 Interpretador de comandos (shell): a interao do usurio com o Sistema Operacional


Unix controlada por um poderoso interpretador de comandos, conhecido como shell. Esse
interpretador suporta vrias funcionalidades, como o redirecionamento de entrada e sada, a
manipulao de grupos de arquivos com apenas um comando, a execuo de sequncias de
comandos predefinidos, entre outras, facilitando a execuo de tarefas complexas.
11 Pipelines: o uso de pipelines ou pipes permite conectar a sada de um comando com a
entrada de outro, como mostra a Figura 1.4. Essa uma das mais famosas caractersticas do

Introduo ao Linux

Unix e utilizada para a execuo de funes mais complexas. Muitas vezes, novas tarefas
exigem apenas que programas j existentes e tambm utilitrios sejam combinados para a
execuo de uma nova funo, sem a necessidade de desenvolver um novo programa.
Entrada
padro

Comando 1

$ Comando1

Comando 2

| Comando2

Comando 3

| Comando3

Comando 4

Comando4

Sada
padro
Figura 1.4
Uso de pipelines
ou pipes.

11 Utilitrios: o Unix incorpora centenas de programas utilitrios para funes como: seleo
de dados, processamento de texto e busca de informaes. Essas facilidades formam um
conjunto de ferramentas que permitem a execuo de diversos tipos de tarefas.
11 Desenvolvimento de software: o Unix tambm conhecido como uma plataforma de
desenvolvimento de software, pois possui ferramentas que suportam todas as fases do
processo de desenvolvimento, desde a preparao at a depurao. Devido sua portabilidade, esses softwares podem ser utilizados em microcomputadores ou em computadores de grande porte.
11 Maturidade: o Unix um Sistema Operacional slido, testado e aprovado pelo mercado,
que vem sendo utilizado h mais de trs dcadas, tendo atingido o estado de maturidade. Dessa forma, alm de sua flexibilidade e inmeras funcionalidades, tem tambm
como caracterstica a confiabilidade, o que o torna, atualmente, o Sistema Operacional
preferido para sistemas que suportam aplicaes crticas.

Histrico do Unix
O Unix surgiu no Bell Laboratories em 1969, a partir do trabalho de Ken Thompson na
evoluo de outro Sistema Operacional, o Multics. No desenvolvimento do Unix, Thompson
sentiu a necessidade de escrev-lo para diferentes tipos de arquiteturas e decidiu fazer o
Unix independentemente da mquina em que fosse executado, criando a linguagem B. Essa
linguagem evoluiu para a linguagem C, desenvolvida por Dennis Ritchie, o que permitiu
reescrever o Unix e torn-lo portvel para diferentes arquiteturas. Devido caracterstica de
portabilidade do Unix, no incio da dcada de 1980 foram desenvolvidos diversos pacotes de
programas, que foram utilizados por diferentes fabricantes, tornando mundialmente conhecidos o Unix, a linguagem C e seus aplicativos.
O Unix se tornou um Sistema Operacional bastante conhecido, no somente no mundo acadmico, como tambm no meio comercial. Os sistemas Unix-based e similares ao Unix proliferaram, sendo oferecidos por diversos fabricantes de computadores, desde os pessoais at os
mainframes, sempre mantendo suas caractersticas bsicas, tornando-o um padro de fato.

Verses do Unix
11 Unix Sexta Edio.

11 PWB Unix.
11 Unix Verso 7.
11 Unix System III.
11 Unix System V.

As verses do Unix so aquelas licenciadas exclusivamente pela AT&T, que podem ostentar o
nome Unix. Uma variedade de verses, algumas mais famosas e outras menos foram desenvolvidas desde seu surgimento. Principais verses do Unix:
11 Unix Sexta Edio: a mais antiga verso licenciada, na maioria dos casos para instituies educacionais, no havendo nenhuma verso comercial dessa verso. Essa verso foi
lanada em 1975.
11 PWB Unix: verso especializada desenvolvida pelo Bell Labs, que inclui facilidades para
desenvolvimento de software por grandes equipes de programadores. Essa verso foi
lanada em 1977.

Captulo 1 - Histrico e instalao

11 Berkeley Unix (BSD).

11 Berkeley Unix: grande parte do desenvolvimento do Unix se deu na Universidade de Berkeley,


na Califrnia, que se tornou um centro de atividades nos anos 70, externo ao Bell Labs/AT&T.
As verses 4.1 BSD ou 4.2 BSD tinham seu prprio conjunto de utilitrios e incorporavam
suporte para superminicomputadores VAX, o editor de textos vi, e um shell especialmente
adaptado para programao em C, chamado C Shell (csh). Esse sistema foi muito utilizado no
somente nas universidades como tambm nas aplicaes cientficas e de engenharia. O System
V, da AT&T, incorporou muitos desaes melhoramentos. Essa verso foi lanada em 1977.
11 Unix Verso 7: primeira verso licenciada comercialmente pela AT&T, com maior nmero
de instalaes em microcomputadores. Essa verso foi lanada em 1979.
11 Unix System III: atualizao da verso 7, que incorporou as caractersticas da PWB. Foi
um grande sucesso nos anos 80, disponibilizado pela maioria dos fabricantes de microcomputadores. Essa verso foi lanada em 1982.
11 Unix System V: incorporou melhorias no desempenho e teve ampliada a comunicao
entre processos. Foi a primeira verso licenciada pela AT&T com suporte de software.
Essa verso foi lanada em 1983.
A AT&T licencia o software Unix, mas no a marca registrada Unix, que de uso exclusivo
da Bell Labs. Dessa forma, o fabricante adquire o cdigo-fonte do sistema, mas no pode
utilizar o nome Unix, tendo de atribuir um nome diferente, o que contribui para a proliferao de nomes, gerando confuso em relao s verses. Esses sistemas geralmente so
compatveis entre si, sendo chamados de sistemas Unix-based. Os principais so:
11 AIX: desenvolvido pela IBM em 1986, inicialmente para a plataforma IBM 6150. Atualmente suporta diversos tipos de arquitetura. Entre suas caractersticas podemos destacar sua ferramenta de gerenciamento do sistema, o SMIT.
11 Xenix: desenvolvido pela Microsoft e posteriormente disponibilizado para a Apple e para
o IBM PC, tendo sido uma das verses mais conhecidas do Unix.
11 HP-UX: desenvolvido em 1984 pela HP, um dos sistemas Unix mais utilizados atualmente. baseado na verso System V.
11 SunOS: desenvolvido pela Sun Microsystems em 1982. Inicialmente, o SunOS era baseado
no Unix BSD, mas a partir da verso 5.0 teve seu nome alterado para Solaris e passou a
ser baseado no System V Release 4.
Para o desenvolvimento desses sistemas Unix-based, os fabricantes de hardware devem
pagar uma taxa de licena para a AT&T, que pode chegar a milhares de dlares por sistema
vendido, dependendo do nmero de usurios que suportam, o que praticamente impossibilitou a utilizao do Unix para aplicaes pessoais e em empresas de pequeno porte.
Sistemas Unix-based:

11 Licenciados pela AT&T: cdigo-fonte do Unix com nome diferente:


22 AIX, Xenix, HP-UX, SunOS etc.
11 Verses livres baseadas no Unix BSD:

Introduo ao Linux

22 FreeBSD, NetBSD, OpenBSD etc.


Alm dessas, surgiram na dcada de 1990 verses livres de Unix como FreeBSD, NetBSD e
OpenBSD, todas baseadas na distribuio BSD. Em reao a essas restries, comearam
a surgir sistemas similares ao Unix que simulavam as caractersticas externas do sistema,
proporcionando aos usurios as mesmas facilidades e comandos, e permitindo executar os
mesmos programas. Esses sistemas no utilizam o cdigo-fonte do Unix e podem ser vendidos
sem pagar royalties AT&T. Alguns exemplos desses sistemas so: UNOS, Unetix e Coherent.
6

Alguns desses sistemas similares ao Unix mostraram grandes variaes nas interfaces grficas, protocolos de redes, utilitrios de gerenciamento, administrao de perifricos, entre
outras. O desenvolvimento de um cdigo-fonte novo, independente da AT&T, e que constitusse de fato um padro surgiu, ento, como uma necessidade.

Similares Unix
11 Desenvolvimento de um cdigo-fonte novo, independente da AT&T.

11 UNOS, Unetix e Coherent.


11 Grandes variaes nas interfaces grficas, protocolos de redes, utilitrios de gerenciamento e administrao de perifricos.
Andrew Tanenbaum, pesquisador na rea de redes de computadores e Sistemas Operacionais, desenvolveu um prottipo de Sistema Operacional baseado no Unix, chamado
de Minix, descrito em Operating System: Design and Implementation (1987). O Minix era
utilizado em cursos de cincia da computao em diversas universidades, entre elas, a Universidade de Helsinque, onde um estudante chamado Linus Torvalds decidiu escrever seu
prprio Sistema Operacional. Seu objetivo era fazer um Minix melhor que o Minix. Torvalds
desenvolveu ento os primeiros kernels do Linux, que j processavam alguns programas
de interesse geral, e abriu seu cdigo-fonte na internet, onde cada um poderia desenvolver
seus prprios recursos sobre um kernel de conhecimento comum. Essa a filosofia do software livre, a mesma que proporcionou o desenvolvimento acelerado da internet.
A adeso de estudantes, interessados, curiosos, profissionais e at hackers contribuiu para
que a primeira verso considerada estvel do Linux estivesse pronta para distribuio no
final de 1993. O projeto GNU, da Free Software Foundation, uma organizao que apoia
projetos de desenvolvimento de software livre, e os trabalhos da Universidade de Berkeley,
que produziram o BSD Unix, foram duas importantes fontes de desenvolvimento dos atuais
utilitrios e aplicativos do Linux.

Para pensar
Uma das vantagens de seu cdigo estar disponvel na internet ter vrios grupos
dedicados a aprimorar ferramentas e recursos para o sistema, fazendo com que
este esteja sempre atualizado, seguro, estvel e confivel, constituindo uma plataforma de desenvolvimento que se tornou um padro de fato.

O Linux est em franco crescimento no mercado, disponvel em diversos idiomas, inclusive em


portugus, com interfaces grficas, processadores de texto, sistemas gerenciadores de bancos
Na verdade, existem atualmente diversas distribuies do Linux, que veremos a seguir.
11 Linus Torvalds escreveu seu prprio Sistema Operacional. Seu objetivo era desenvolver um Minix melhor que o Minix.
11 Apoio do GNU e da Free Software Foundation.
11 Desenvolvimento do BSD Unix.
11 Adeso de estudantes, interessados, curiosos, profissionais, hackers etc.

Captulo 1 - Histrico e instalao

de dados, suporte a redes de excelente qualidade e uma infinidade de outras aplicaes.

Distribuies Linux
11 Como funciona a GPL?

11 A empresa obtm gratuitamente o ncleo do Linux, desenvolve pacotes


e comercializa-os.
11 Licenas de software tradicionais restringem o acesso ao cdigo-fonte dos programas. A GPL garante a liberdade de compartilhar e alterar o software livre, mantendo seu acesso a todos os usurios.
As verses do Linux so obtidas por meio das distribuies de software. As distribuies
de software do Linux so mecanismos de fornecimento de software, desenvolvidos pelo
projeto GNU da Free Software Foundation (FSF), que seguem a General Public License
(GPL). Enquanto as licenas de software tradicionais servem para restringir o acesso ao
cdigo-fonte dos programas, evitando o compartilhamento e a alterao destes, a GPL tem
como objetivo garantir a liberdade de compartilhar e alterar o software livre, fornecendo
acesso irrestrito ao seu cdigo fonte. Os fabricantes protegem seus softwares por intermdio do copyright. Para criar um contraste, o FSF criou um novo nome, que d a ideia
de um conceito oposto ao do direito autoral, o copyleft. Na verdade, o copyleft da FSF se
baseia no mesmo instrumento legal utilizado pelos proprietrios de software, o copyright,
mas a GPL inclui no copyright termos especiais de licenciamento que garantem a liberdade
de uso do software. Esses termos conferem a qualquer usurio o direito de utilizar, modificar e redistribuir o software livre ou qualquer software dele derivado.
Por exemplo: a GPL garante a uma empresa obter gratuitamente o kernel do Linux e trabalhar nele, de forma a melhorar os textos das mensagens do sistema ou traduzi-los para um
determinado idioma, e a fazer a documentao deste pacote e vend-lo como uma distribuio Linux.

A partir do copyleft, qualquer usurio pode usar, alterar e redistribuir o software livre.
Muitas distribuies Linux comerciais surgiram dessa maneira, acoplando ao kernel utilitrios, interfaces grficas, aplicaes matemticas e cientficas, sistemas gerenciadores de
bancos de dados, entre outros, que so colocados no mercado junto com a documentao e
as instrues para a instalao do sistema.
A seguir, so apresentadas algumas caractersticas das principais distribuies Linux.

Exerccio de fixao 1 e
Entendendo as licenas Unix e GPL
Quais as diferenas entre as licenas do Unix e da GPL do Linux? Tendo como base o
enfoque do usurio, dos desenvolvedores de aplicativos, dos fabricantes de hardware e dos

Introduo ao Linux

distribuidores de software livre:

11 Liste as vantagens da GPL.


11 Liste as vantagens dos sistemas Unix-based.

Red Hat Enterprise Linux


11 Interface grfica X-Window e o KDE desktop para gerenciamento de janelas.
11 Especializaes para verses cliente e servidor, e aplicativos como sutes de escritrio.

11 Gerenciadores de pacotes RPM e YUM automatizam o processo de instalao e atuali-

zao do sistema.
11 Verstil, aceita diversas opes de configurao de recursos do sistema.
11 Patrocnio do projeto Fedora.
A distribuio Red Hat Enterprise Linux incorpora facilidades, como programas de configurao
de recursos do sistema, interfaces grficas, especializaes para verses cliente e servidor e
aplicativos como sutes de escritrio. Com ela, fornecido o ambiente grfico X-Window, contendo o gerenciador de janelas KDE, desenvolvido por um projeto de software livre.
Uma grande vantagem dessa distribuio a facilidade de instalao, excelente para os
iniciantes em Linux. Funcionalidades como pacotes pr-compilados e gerenciadores de
pacotes como o RPM e o YUM, que automatizam todo o processo de instalao e a atuali-

w zao do sistema, facilitam o processo de administrao.


Para mais informaes,
acesse http://www.
redhat.com e http://
fedoraproject.org

A Red Hat est patrocinando o projeto Fedora juntamente com a comunidade formada por
desenvolvedores de software, que do suporte ao desenvolvimento de software livre.
O objetivo desse projeto da comunidade Linux manter um Sistema Operacional completo,
de aplicao geral, com o cdigo-fonte totalmente aberto e gratuito.

CentOS
11 Compatvel com Red Hat Enterprise Linux.

11 Instalao simples em modo grfico ou texto.


11 Suporte a vrios idiomas, inclusive o portugus.
11 Ambiente grfico KDE ou Gnome.
11 Rico em ferramentas administrativas e grficas.
11 Gerenciamento de pacotes com RPM e YUM.
11 Suporte comercial opcional por meio de revendedores.
A distribuio CentOS deriva da distribuio Red Hat Enterprise Linux (RHEL), de acordo
com as regras de redistribuio definidas pela Red Hat Enterprise, que so: remoo de
softwares proprietrios de terceiros, remoo de imagens, logotipos e textos referenciando

Visite http://www.
centos.org para saber
mais detalhes sobre a
distribuio CentOS.

tribudo sob a licena GNU/GPL para aplicaes com servidores de pequeno, mdio e grande
porte e mantido por uma ativa e crescente comunidade de usurios denominada CentOS
Project. Alm disso, possui diversas vantagens sobre outras distribuies: rpida correo
de bugs e vulnerabilidades, grande rede de repositrios para download, vrias opes de
suporte como chat, IRC, listas de e-mail, fruns e um FAQ dinmico e abrangente. Tambm
possvel obter suporte comercial oferecido por empresas parceiras.

Debian
11 Desenvolvido por um grupo diversificado de programadores.
11 Preferido pelos programadores mais experientes.
11 Pacotes pr-compilados no formato DEB.
11 Ferramentas de gerenciamento de pacotes: APT e Aptitude.

Captulo 1 - Histrico e instalao

a Red Hat, desde que no faam parte de notas de copyright, entre outras. O CentOS dis-

A distribuio Debian foi desenvolvida por um grupo de hackers e o preferido entre os


programadores mais experientes. Possui estrutura especial de pacotes de software

Acesse o endereo
http://www.debian.org
para saber mais
detalhes.

pr-compilados no formato DEB e ferramentas de gerenciamento de pacotes muito versteis, como o APT e o Aptitude.

Ubuntu
11 Desenvolvido com foco em segurana.

11 Edies para desktop e servidores.


11 Garantia de atualizaes de at 5 anos para as edies LTS e 18 meses para as demais.
11 Instalao simples.
11 Ferramentas de gerenciamento de pacotes: APT e Aptitude.
11 Suporte a vrios idiomas, inclusive o portugus.
A distribuio Ubuntu mantida por uma comunidade de usurios e baseada na distribuio Debian. O Ubuntu contm todas as ferramentas necessrias, desde processadores
de texto e leitores de e-mails a servidores web e ferramentas de desenvolvimento, alm de
utilizar os gerenciadores de pacotes APT e Aptitude.

w
Para mais detalhes,
acesse http://www.
ubuntu.com (pgina em
ingls).

O Ubuntu desenvolvido com foco em segurana, disponibilizando atualizaes de


segurana gratuitas por pelo menos 18 meses para desktops e servidores. Com a verso
Long-Term Support (LTS) adquire-se trs anos de suporte para desktops e cinco anos para
servidores. No cobrado nenhum valor pela verso LTS.

Mandriva Linux
11 Fuso da Mandrake com a Conectiva.

11 Foco no uso domstico.


11 Ambiente grfico avanado.
11 Compatvel com os perifricos nacionais, como monitores, teclados e impressoras.
11 Instalao muito simples.
11 Manuais e textos de apoio traduzidos para o portugus.
11 Baseada na distribuio Red Hat Enterprise Linux.
11 Suporte local e facilidades para a instalao do sistema.
uma distribuio franco-brasileira, mantida pela empresa Mandriva, formada por meio
da fuso da empresa francesa Mandrake e da brasileira Conectiva. Seu nome a fuso dos
nomes das duas empresas. Semelhante ao Windows em vrios aspectos, uma distribuio
voltada para desktops, tanto para uso domstico quanto corporativo. Possui vrias opes
de idioma para instalao, incluindo o portugus brasileiro.
O instalador do Mandriva um dos mais amigveis entre as distribuies Linux. As confi-

Introduo ao Linux

guraes podem ser realizadas tanto em modo grfico quanto em modo texto, e dispem

10

de alguns programas de manuteno de sistema chamados de Drakes, entre eles o


MouseDrake, para configurar o mouse, o DiskDrake, para configurar as parties de disco
rgido, e Drakconnect, para configurar conexes de rede.

w
Para mais detalhes,
acesse o site http://
www.mandriva.com.
No site, h um link para
a comunidade de
desenvolvedores.

Slackware
11 Uma das mais populares distribuies Linux.

11 timo desempenho e estabilidade, que o indicam para utilizao em servidores


de redes.
11 Permite trabalhar com pacotes nativos da distribuio Red Hat Enterprise Linux.
11 Ambiente grfico X-Window e gerenciador de janelas fvwm, com estilo similar
interface grfica do Microsoft Windows.
11 Pacotes de segurana avisam, via e-mail, sobre alteraes no sistema.
11 Instalao complexa.
A distribuio Slackware tambm uma das mais populares distribuies Linux, com boa
penetrao de mercado. Seus pontos fortes so o desempenho e a estabilidade, que a
indicam para utilizao em servidores. Alm disso, possui conversor que permite trabalhar
X-Window e o gerenciador de janelas fvwm, que possui design similar ao da interface do
Microsoft Windows.
Essa distribuio ainda conta com pacotes de segurana que permitem avisar, via e-mail,
que uma funo de inicializao do sistema ou um script foi alterado e que isso pode causar
transtornos ao sistema. Sua instalao bem mais complexa.

Exerccio de fixao 2 e
Conhecendo as distribuies Linux
Acesse o site das principais distribuies Linux, verifique o enfoque de cada distribuio
(uso em servidores, uso em estaes de trabalho, uso domstico etc.), verifique tambm se
as distribuies possuem suporte comercial, listas de discusso, suporte a mltiplos idiomas
e plataformas, e examine a forma de obt-las (via download, compra de CDs ou DVDs etc.).
11 Red Hat.
11 SlackWare.
11 CentOS.
11 Debian.
11 Mandriva.
11 Ubuntu.

A escolha da distribuio Linux


So muitas as distribuies Linux hoje, algumas com enfoque para uso em servidores visando
mais segurana e alta disponibilidade, outras para uso em estaes de trabalho visando
ambiente grfico amigvel, assim como para uso domstico, jogos, laptops ou outras finalidades. Alm disso, algumas fornecem suporte comercial e garantia de atualizaes. Antes de
escolher uma distribuio necessrio conhecer um pouco sobre cada uma delas (pelo menos
as principais) e ter em mente a finalidade da instalao. Para a nossa finalidade acadmica,
vamos escolher uma distribuio que possua algumas das seguintes caractersticas:
11 Suporte ao nosso idioma.
11 Estabilidade no mercado.
11 Ambiente grfico com assistente de instalao.

Captulo 1 - Histrico e instalao

w
Saiba mais sobre a
distribuio Slackware
no endereo http://
www.slackware.com.

com pacotes nativos da distribuio Red Hat Enterprise Linux. Vem com ambiente grfico

11

11 Deteco automtica de hardware.


11 Ambiente grfico.
11 Gerenciador de pacotes.
11 Programas utilitrios, como editores de texto, navegadores para a internet, editores de
imagens, reprodutores de udio e vdeo.
Para este curso, escolhemos a verso mais atual do CentOS por ser uma verso gratuita
baseada no Red Hat Enterprise Linux, que uma distribuio bastante slida no mercado.

Razes para utilizar o Linux


11 Software livre.

11 Flexibilidade para instalao e reinstalao.


11 Sem cdigos-chave de licenciamento.
11 Custo significativamente menor.
11 Tendncia de mercado.
11 Sistema Operacional da famlia Unix que mais cresce em nmero de usurios.
Existem diversas razes para a escolha do Linux como Sistema Operacional. Trata-se de um
software livre, com maior flexibilidade para instalao e reinstalao, sem a necessidade de
utilizao de cdigos-chave e licenas. No ambiente Linux, os softwares so normalmente
gratuitos, o que praticamente elimina o custo com instalaes de software. Outro bom
motivo estar atualizado com as tendncias do mercado, j que o Linux vem despontando
como o Sistema Operacional da famlia Unix que mais cresce em nmero de usurios. Instalar um Sistema Operacional to complexo quanto o Linux no uma tarefa simples, mas
sem dvida compensa o trabalho. A seguir sero apresentados os requisitos e os passos
necessrios para a instalao desse Sistema Operacional.

Hardwares suportados
Na URL http://www.linux-drivers.org podemos consultar a lista de hardwares compatveis
mantida pelas principais distribuies Linux. necessrio investigar a compatibilidade de
um hardware antes de compr-lo. Alguns distribuidores possuem uma classificao adicional, listando hardwares e softwares certificados, isto , que foram oficialmente testados
atravs de um programa de certificao que garante o funcionamento com o Linux.
Como encontrar hardware compatvel?
11 Acesse http://www.linux-drivers.org.
11 Linux Hardware Compatibility List & Drivers: ndice de lista de hardwares compatveis
mantida pelas principais distribuies Linux.
Classificaes:
11 Compatvel: suportado pelo kernel do Linux.
Introduo ao Linux

11 Certificado: garantia de funcionamento por algum distribuidor.

12

11 Driver em verso Alpha ou Beta: o kernel ainda no suporta, mas pode ser compilado
e adicionado como um mdulo. No h nenhuma garantia de funcionamento e no
recomendado em ambiente de produo.
11 No suportado: hardwares testados com funcionamento no confirmado.

Nem todo hardware suporta o Sistema Operacional Linux:


11 Projetos especiais de hardware para o Microsoft Windows.
11 Bibliotecas de drivers cujo cdigo-fonte no aberto.
11 Incompatibilidade acontece mesmo entre os Sistemas Operacionais da Microsoft.
11 Drivers de perifricos mais antigos precisam ser reescritos.
11 Vantagens do software livre, com a garantia de acesso aos cdigos-fonte.

Lista de verificao de hardware


A maior parte dos dispositivos de hardware detectada automaticamente durante o
processo de instalao. Os drivers desses dispositivos j esto includos nas mdias de
instalao, embora as distribuies Linux no incluam drivers para todos os dispositivos de
hardware. O ideal montar uma lista de verificao de hardware para o computador que
ser utilizado para a instalao, como a apresentada na tabela da Tabela 1.1.
Caractersticas

CPU

Tipo e velocidade.

Memria RAM

Capacidade.

Teclado

Marca e modelo.

Mouse

Protocolo, marca, modelo


e nmero de botes.

Discos rgidos

Marca, modelo e capacidade.

Drive de CD/DVD

Marca e tipo.

Placa de rede

Marca, modelo, tipo e velocidade.

Placa de vdeo

Marca, modelo e quantidade de


memria RAM.

Monitor

Marca e modelo.

Placa de som

Marca e modelo.

Dispositivos USB

Marca e modelo.

Dados coletados

Requisitos mnimos de hardware


Antes de instalar o Sistema Operacional Linux, devemos conhecer algumas informaes do
nosso hardware. Neste item conheceremos as configuraes mnimas de hardware requeridas para que se possa instalar o Linux. O computador deve atender a alguns requisitos
mnimos para poder executar o Sistema Operacional Linux.
11 Unidade de Processamento Central (UCP): mesmo sendo possvel instalar o Linux em
computadores com CPU Intel 80386 e verses anteriores, se for utilizado somente o modo
texto. Para suporte total, incluindo o ambiente grfico, recomendado o uso de processadores Pentium ou posteriores. O Linux tambm suporta processadores Intel de 64 bits, AMD
de 32 e 64 bits, IBM PowerPC e alguns processadores utilizados em computadores de grande
porte. O procedimento de instalao que ser visto aqui vlido para a famlia de processadores Intel e AMD de 32 ou 64 bits. Alm do modelo do processador, deve-se atender aos
requisitos de velocidade de processamento. Para que se obtenha desempenho satisfatrio,

Captulo 1 - Histrico e instalao

Tabela 1.1
Lista de verificao
de hardware.

Dispositivo

deve-se ter um processador com velocidade igual ou maior de um Pentium III de 700 MHz.
13

11 Memria: para instalar e utilizar o Sistema Operacional Linux necessrio somente 4 MB


de memria RAM, caso seja utilizado somente o modo texto, e 64 MB de memria RAM,
se usado o modo grfico. Mas o recomendado para atingir performance satisfatria de
pelo menos 512 MB de memria RAM.
11 Drives: para instalar e utilizar o Sistema Operacional Linux necessrio o mnimo de
2 GB de espao livre no disco rgido. possvel termos dois ou mais sistemas operacionais
instalados no mesmo disco rgido, porm, cada um necessita ter seu prprio esquema
de particionamento. Alm do disco rgido, conveniente ter um drive de CD/DVD para
facilitar a instalao do sistema.
Neste item veremos como importante documentar todas as informaes do sistema que
sero solicitadas durante o processo de instalao do Linux, e tambm as informaes
sobre as configuraes pr-existentes, no caso de migrao do Windows para o Linux.

Instalando o Linux
Neste item veremos como criar uma mquina virtual para instalarmos o Linux e o passo a
passo do programa de instalao.

Criao da mquina virtual


O software utilizado para a criao e gerenciamento de mquinas virtuais o Virtual Box.
A seguir so apresentados os passos para fazer a criao da mquina virtual que ser utilizada para a instalao do CentOS.
11 Nome da VM e Tipo de Sistema Operacional: no campo Nome, preencher com o valor
CentOS - ADS-001. No campo OS Type, selecionar Linux na opo Sistema Operacional e Red Hat (64 bit) na opo Verso.
11 Memria: selecionar 1 GB de memria RAM.
11 Disco Rgido Virtual: marcar as opes Disco de Boot e Criar novo disco rgido.
11 Assistente de criao de discos virtuais: marcar a opo VDI (VirtualBox Disk Image).
11 Detalhes do armazenamento de disco virtual: marcar a opo Dinamicamente alocado.
11 Localizao e tamanho do arquivo de disco virtual: no campo Localizao, preencher com
o valor CentOS - ADS-001 e, no campo Tamanho (S), selecionar 15,1 GB de espao em disco.
11 Sumrio: essa tela apresentar as opes selecionadas durante a criao do disco virtual.

Introduo ao Linux

Confirme se os dados esto corretos e em seguida clique no boto Criar.

14

Para iniciar a mquina virtual, basta selecion-la, como mostra a Figura 1.5, e clicar no boto
Iniciar. Na primeira vez que a mquina virtual iniciada, o assistente de primeira execuo
automaticamente executado. Esse assistente possibilita a seleo da mdia de instalao
do Sistema Operacional na mquina virtual. Nessa etapa deve ser selecionado o drive de
CD/DVD do hospedeiro. Aps a seleo do local onde est inserida a mdia de instalao,
exibida uma tela com os dados selecionados. Confirme se esto corretos e em seguida
clique no boto Iniciar.

Programa de instalao do Linux


Este item mostra passo a passo como instalar a distribuio CentOS. Com base nele, o aluno
ter condies de instalar qualquer outra distribuio, pois, de um modo geral, mesmo que
algumas etapas apaream em sequncia diferente, as informaes necessrias devero ser
as mesmas. Para iniciar a instalao do Linux utilizando um DVD, primeiramente necessrio reconfigurar o BIOS do PC para que o boot seja feito atravs do drive do DVD. Para
isso, devemos entrar na tela de configurao do BIOS e alterar a ordem de inicializao, de
modo que o drive de DVD seja o primeiro na ordem de prioridade de boot.
11 Teste de integridade da mdia de instalao: a primeira tela do programa de instalao apresenta a opo de testar a integridade da mdia de instalao. Geralmente no
necessrio executar esse teste. Para passar adiante sem fazer o teste de integridade,
selecione a opo Skip.
11 Iniciando a instalao: se o computador ou mquina virtual possurem pelo menos
640 MB de memria RAM, o ambiente grfico de instalao ser aberto por padro.
Caso contrrio, uma mensagem informar que a quantidade de memria existente
insuficiente para a instalao no modo grfico e iniciar a instalao no modo texto.

Captulo 1 - Histrico e instalao

Figura 1.5
Iniciando a
mquina virtual.

15

11 Seleo do idioma: essa tela mostra os idiomas disponveis para o processo de instalao. Escolha Portuguese (Brazilian) (Portugus (Brasil)).
11 Seleo do teclado: em seguida deve ser selecionado o modelo do teclado. Com base no
idioma selecionado antes, o instalador sugere o modelo mais apropriado, que neste caso
o Portugus Brasileiro (ABNT2).
11 Selecionando o tipo de dispositivo que ser utilizado na instalao: esta etapa
apresenta duas opes: Basic Storage Devices, que inclui discos IDE, SATA, SCSI etc. e
Specialized Storage Devices, que inclui dispositivos de armazenamento mais complexos
como Storage Area Networks (SANs). Selecione a opo Basic Storage Devices.
11 Inicializando o disco rgido: neste momento o instalador analisa o disco rgido e caso
no encontre nenhum sistema de arquivos, emitir um aviso solicitando a inicializao do
disco. Esse processo apagar todas as informaes existentes no disco. Se a instalao
estiver sendo feita em uma mquina virtual, no se preocupe, pois essa ao no apagar
nenhuma informao no hospedeiro. Clique no boto Sim, descarte qualquer dado.
11 Configurao da rede: nesta etapa podem ser utilizados dois tipos de configurao:
11 Configurao automtica via Dynamic Host Configuration Protocol (DHCP): essa
a opo padro, onde deve ser informado somente o nome da mquina. As outras
informaes necessrias para integrao rede e acesso internet, como endereo IP,
mscara de rede, gateway, servidores de DNS etc. so fornecidas automaticamente pelo
servidor DHCP da rede.
11 Configurao manual: para configurar a rede manualmente, preciso clicar no boto
Configure Network. Nesse caso, necessrio possuir um endereo IP, mscara de rede,
endereo IP do gateway e dos servidores de DNS para integrao rede e acesso internet.
11 Seleo do Fuso Horrio: nesta etapa definido o fuso horrio de acordo com a localizao fsica do sistema. Selecione a opo Amrica/So Paulo e deixe marcada a opo
O relgio do sistema utiliza o UTC.
11 Senha de Administrador (usurio root): o administrador do sistema possui plenos privilgios, podendo instalar, alterar ou remover qualquer programa, arquivo ou diretrio.
A escolha dessa senha deve ser criteriosa, pois caso algum a descubra, poder causar
srios danos ao sistema.
11 Tipo de particionamento: nesta etapa definido o tipo de particionamento que ser
utilizado. Selecione a opo Create Custom Layout.
11 Particionando o disco rgido: aps inicializar o disco, o programa de instalao abre o
gerenciador de parties. Caso o disco tenha sido inicializado anteriormente, ele ser
exibido sem nenhuma partio, mostrando todo o espao livre existente. Ao menos
duas parties so necessrias para o funcionamento do Linux: uma para o sistema e
outra para a rea de memria virtual (swap). As principais vantagens de se particionar
um disco so: segurana, devido ao isolamento de falhas, e independncia entre as
parties, evitando problemas no sistema caso a capacidade de alguma partio se

Introduo ao Linux

esgote. importante ressaltar que o dimensionamento das parties deve ser feito com

16

bastante critrio, para que no ocorram situaes onde o tamanho de uma partio se
esgote, enquanto outras parties ainda possuam bastante espao disponvel. Nesta
instalao sero criadas as seguintes parties:
11 /: essa partio a base de todo o sistema, sendo conhecida como partio raiz e simbolizada pela barra (/). Nesta instalao ser alocado 5 GB de espao em disco para a
partio raiz, que usar o tipo de sistema de arquivos ext4.

11 /boot: nessa partio que fica localizado o kernel do Linux. Essa partio precisa ser
primria, pois ser acessada pelo BIOS para fazer a carga do Sistema Operacional. Nesta
instalao ser alocado 100 MB de espao em disco para a partio /boot. Essa partio
utilizar o tipo de sistema de arquivos ext4.
11 /var: nessa partio que ficam arquivos de sistema, como arquivos de log, e-mail etc.
Nesta instalao ser alocado 3 GB de espao em disco para a partio /var. Essa partio utilizar o tipo de sistema de arquivos ext4.
11 /usr: nessa partio que os programas, manuais etc. so instalados. Nessa instalao
ser alocado 5 GB de espao em disco para a partio /usr. Essa partio utilizar o tipo
de sistema de arquivos ext4.
11 swap: essa partio utilizada como memria virtual e no possui ponto de montagem.
Seu tipo de sistema de arquivos swap e seu tamanho deve ser o dobro da quantidade
de memria RAM instalada no sistema. Nesta instalao sero alocados 2 GB de espao
em disco para a partio swap.
A Figura 1.6 mostra a tela onde selecionado o tipo de partio que ser criado. Nesta instalao sero utilizadas somente parties padro.

Figura 1.6
Escolha do tipo
de partio no
disco rgido.

Outras parties podem ser criadas dependendo do tipo de aplicao a que o servidor se
no esquema citado anteriormente em determinados casos.
importante ressaltar que o BIOS suporta apenas quatro parties primrias. Sendo assim,
se mais parties forem requeridas, trs parties devero ser criadas como primrias e a
quarta dever ser do tipo estendida, que pode ser subdividida em at 255 parties lgicas.
Uma partio estendida no pode conter dados, mas somente parties lgicas. Uma partio
lgica, por sua vez, no pode ser utilizada para iniciar a carga de um Sistema Operacional.
A Figura 1.7 mostra a tela de criao de parties, com suas opes. O campo Ponto de
montagem define o local da rvore de diretrios onde a partio ser montada.

Captulo 1 - Histrico e instalao

destina, assim como pode ser desnecessria a criao de algumas das parties utilizadas

17

O campo Tipo de sistema de arquivos define o tipo de sistema de arquivos que ser utilizado para formatar a partio. O campo Tamanho (MB) define o tamanho da partio em
megabytes. Alm desses campos bsicos, temos a opo de definir a partio como primria
e optar pela criptografia dos dados que sero armazenados.

Figura 1.7
Opes para
a criao de
parties.

11 Gerenciador de boot: nessa etapa definido o local do disco onde ser instalado o
gerenciador de boot (boot loader) ou mdulo inicializador do sistema. Os principais
gerenciadores de boot do Linux so o Grub e o Lilo. O CentOS utiliza por padro o Grub,
que pode ser instalado no MBR ou no setor de boot da partio ativa. Utilizaremos a
configurao sugerida pelo programa de instalao, que instala o Grub no MBR. Para
isso, basta deixar a opo Install boot loader on /dev/sda e clicar no boto Avanar.
Nessa tela tambm possvel adicionarmos outros sistemas operacionais que estejam
instalados no disco para serem carregados pelo Grub.
11 Pacotes de aplicaes: nessa etapa definida uma categoria de instalao. O instalador
pr-agrupa conjuntos de aplicaes classificando-as nas seguintes categorias: Desktop,
Minimal Desktop, Minimal, Basic Server, Database Server, Web Server, Virtual Host e
Software Development Workstation. Selecione a opo Desktop. Alm disso, tambm
so definidos os repositrios que sero utilizados para fazer o download dos pacotes.
Nesse caso no ser necessrio incluir nenhum repositrio extra.
11 Instalao dos pacotes: aps a formatao das parties, o instalador inicia o processo
de instalao dos pacotes, processo que pode demorar cerca de 15 a 30 minutos, dependendo da performance do computador utilizado e das aplicaes que sero instaladas.
Fim da instalao: terminada a instalao, o programa de instalao ejetar o DVD e dar
ao aluno os parabns por ter finalizado a instalao. preciso retirar o DVD e clicar no

Introduo ao Linux

boto Reinicializar.

18

Roteiro de Atividades 1
Atividade 1.1 Conhecendo as distribuies Linux
1. Qual das distribuies Linux utiliza o gerenciador de pacotes RPM ou YUM?
2. Qual das distribuies Linux vem com o gerenciador de janelas fvwm?
3. Qual das distribuies Linux possui pacotes de software pr-compilados no formato DEB?
4. Quais so as ferramentas de gerenciamento de pacotes utilizadas no Debian e no Ubuntu?
5. Cite dois sistemas baseados em Red Hat.

Atividade 1.2 Obtendo informaes para iniciar a instalao do Linux


Colete as informaes necessrias para a instalao do Linux se ele fosse ser instalado na
mquina de sala de aula e preencha a Tabela 1.1. O hardware dessa mquina compatvel?

Atividade 1.3 Preparando o ambiente de instalao


Esta atividade destinada a preparar a instalao do Linux em uma mquina virtual criada com
o software Virtual Box, instalado em um computador com o sistema operacional Windows.
Siga os seguintes passos:
1. Crie uma mquina virtual para posteriormente fazer a instalao do CentOS.

11 Nome da VM e Tipo de Sistema Operacional no campo Nome, preencha com o valor


CentOS - ADS-001. No campo OS Type, selecione Linux na opo Sistema Operacional e Red Hat (64 bit) na opo Verso.
11 Memria selecione 1 GB de memria RAM.
11 Disco virtual marque as opes Disco de Boot e Criar novo disco rgido.
11 Assistente de criao de discos virtuais marque a opo VDI (VirtualBox Disk Image).
11 Detalhes do armazenamento de disco virtual marque a opo Dinamicamente alocado.
11 Localizao e tamanho do arquivo de disco virtual no campo Localizao, preencha
com o valor CentOS - ADS-001 e no campo Tamanho (S), selecione 15,1 GB de espao
em disco.
11 Sumrio esta tela apresentar as opes selecionadas durante a criao do disco
Captulo 1 - Roteiro de Atividades

virtual. Confirme se os dados esto corretos e em seguida clique no boto Criar.

19

Atividade 1.4 Instalando o Linux


Faa a instalao do CentOS na mquina virtual criada na Atividade 1.3.
1. Clique com o boto direito na mquina virtual criada e Configuraes.
2. V em Armazenamento.
3. Em rvore de armazenamento, Controller IDE, Vazio, ao lado direito em atributos clique

no cone de um CD.
4. Escolha a opo Selecionar uma arquivo de CD/DVD virtual....
5. Escolha a imagem do CentOS no desktop e inicie a mquina virtual.
6. Execute o programa de instalao do CentOS.
7. Teste de integridade da mdia de instalao Skip.
8. Seleo do idioma Portuguese (Brazilian).
9. Seleo do modelo do teclado Portugus Brasileiro (ABNT2).
10. Seleo do tipo de dispositivo de armazenamento Basic Storage Devices.
11. Configurao da rede configurao automtica (padro); inserir somente o nome

da mquina.
12. Seleo do fuso horrio selecionar o fuso Amrica/So Paulo e deixar marcada a

opo O relgio do sistema utiliza o UTC.


13. Definio da senha de root definir a senha de root.
14. Seleo do tipo de particionamento Create Custom Layout.
15. Criao das parties; crie as seguintes parties:

22 /, com 5 GB de espao e tipo ext4.


22 /boot, com 100 MB de espao e tipo ext4 (definir como partio primria).
22 /var, com 3 GB de espao e tipo ext4.
22 /usr, com 5 GB de espao e tipo ext4.
22 swap, com 2 GB de espao.
16. Instalao do carregador de boot selecionar a opo Install boot loader on /dev/sda.
17. Seleo do tipo de instalao e dos repositrios selecione a opo Desktop. No

preciso adicionar nenhum repositrio.


18. Finalizao da instalao retire a mdia de instalao e clique no boto Reinicializar.

Atividade 1.5 Inicializando o sistema pela primeira vez

Introduo ao Linux

Inicialize o sistema pela primeira vez e faa login e logout nele utilizando a conta criada

20

na inicializao. Exercite tambm outras opes alm do logout, como reinicializao e


trmino do sistema.

2
objetivos

Utilizao do sistema
Conhecer as funcionalidades da interface grfica X-Window e dos ambientes de
desktop GNOME e KDE.

conceitos

Configuraes iniciais, ambiente grfico, GNOME desktop e KDE desktop.

Configuraes iniciais
Aps o trmino bem-sucedido da instalao do Linux e a reinicializao do sistema a partir
do disco rgido, o Sistema Operacional ser carregado pela primeira vez em sua mquina.
A primeira inicializao disponibiliza um servio de configurao do sistema, em que so
mostradas diversas janelas de configurao que sero descritas a seguir.

Informaes da licena
Nesta etapa so informadas as regras de licenciamento. preciso concordar com o acordo

Saiba mais
O NTP permite manter
o relgio de um computador com a hora
sempre certa e com
grande exatido. Originalmente idealizado
por David L. Mills, da
Universidade do Delaware, o NTP foi utilizado
pela primeira vez antes
de 1985, sendo ainda
hoje muito popular e
um dos mais antigos
protocolos da internet.

Criando uma conta de usurio


Assim como em outros Sistemas Operacionais multiusurio, as contas de usurio no Linux
servem para identificar e dar permisses aos usurios, limitando seus acessos e privilgios
para a utilizao do sistema. Deve-se utilizar a conta criada nesta etapa para acessar o
sistema. A conta root s deve ser utilizada quando for preciso realizar operaes administrativas. Essa medida evita modificaes acidentais no sistema, como a remoo inadvertida
de arquivos. Crie uma conta especificando: nome do usurio (username), nome completo do
usurio e senha.

Configurando data e hora


Permite a definio da data e da hora do sistema ou a definio de um servidor da rede
para atualizao e sincronizao do relgio do sistema atravs do protocolo Network Time
Protocol (NTP).

Captulo 2 - Utilizao do sistema

de licena para prosseguir.

21

Habilitao e configurao do Kdump


O Kdump um utilitrio que grava informaes que estavam na memria quando ocorrem
falhas no sistema. Ele pode ser til na deteco de falhas. Nesta etapa possvel habilit-lo
e configurar a quantidade de memria que ser alocada a ele.

Ambiente grfico
Servidor X (X Server):

11 X Window System, X-Window, X11 ou simplesmente X, um protocolo, e seu software


associado possibilita o emprego de uma interface grfica com o conceito de janelas.
Originalmente chamado de X, foi desenvolvido no MIT em 1984. Atualmente est na
verso 11 e por isso carrega no nome esse nmero.
11 X-Window o toolkit e o protocolo padro para interfaces grficas nos sistemas Unix
e assemelhados, como o Linux, embora existam verses para outros Sistemas Operacionais, como o MS Windows e o Mac OS, por exemplo.
11 um software cliente-servidor.
11 No CentOS o servidor X utilizado o X.Org. Outras distribuies utilizam o XFree86.
11 Permite acesso via rede, isto , de um computador possvel capturar a tela de outro
computador e trabalhar remotamente.
11 Pode ser iniciado automaticamente, ou atravs da linha de comandos utilizando, por
exemplo, o comando startx.
O servidor X o programa que prov a interface grfica do usurio. Tambm chamado de
X-Window, permite a execuo de programas e aplicaes grficas e compatvel com vrias
plataformas da famlia Unix. O X-Window pode funcionar em rede, permitindo executar um
programa em um computador e ver sua sada grfica na tela de outro computador conectado rede.
O X-Window responsvel pelos desenhos de seus objetos na tela e capta as entradas de
dados por meio do teclado e do mouse, relacionando-as com as telas grficas. Para organizar o desktop em objetos como janelas e menus, utiliza um componente chamado gerenciador de janelas, que integra as aplicaes ao ambiente grfico.
Muitos usurios Linux adotaram o XFree86 ou o X.Org, softwares livres compatveis
com o X-Window, disponveis nas distribuies Linux.

Iniciando e finalizando o Servidor X


O Servidor X pode ser automaticamente iniciado por intermdio do programa X Display
Manager (XDM). O XDM pode ser iniciado automaticamente durante o boot do sistema e
mantm o Servidor X rodando, abrindo telas de login e iniciando sesses de trabalho. O Servidor
Introduo ao Linux

X tambm pode ser iniciado manualmente pelo usurio atravs dos comandos xinit ou startx.
Em caso de mau funcionamento, podemos finalizar o Servidor X pressionando simultaneamente as teclas Crtl+Alt+Backspace, porm, isso no recomendvel durante a operao
normal do sistema, pois o trmino abrupto de aplicaes pode causar perda de dados.
A melhor forma de finalizar o Servidor X utilizando a opo de sada ou logout existente no
gerenciador de janelas, onde possvel escolher entre desligar o computador, reinici-lo ou
simplesmente fechar a sesso de trabalho.
22

Configurando o Servidor X
O Servidor X.Org suporta vrios mecanismos para suprir e obter configuraes e parmetros dinmicos do sistema. A ordem de precedncia dos mecanismos :
1. Opes passadas atravs da linha de comando.
2. Variveis de ambiente.
3. Opes definidas nos arquivos de configurao xorg.conf;.
4. Autodeteco.
5. Valores defaults do sistema.

Arquivo xorg.conf
O X.Org no possui um utilitrio de configurao. Em ves disso, ele mesmo tenta gerar
uma configurao vlida com base em uma srie de autodeteces. possvel executar o
comando XOrg configure para gerar um arquivo de configurao. O arquivo de configurao do X.Org, o xorg.conf, fica localizado no diretrio /etc/X11 e dividido em sesses, que
so descritas abaixo.
11 Files: possui os paths completos para arquivos que o servidor X necessita para funcionar,
como tipos de fontes.
11 ServerFlags: possui opes de configurao globais do servidor X.
11 Module: responsvel pelo carregamento dinmico de mdulos do servidor X.
11 InputDevice: possui configuraes de dispositivos de entrada de dados, como teclados e
mouses. Deve existir um bloco InputDevice para cada dispositivo de entrada.
11 Device: possui configuraes de dispositivos de vdeo. Deve existir pelo menos um dispositivo de vdeo instalado.
11 Monitor: possui configuraes de monitores de vdeo. Deve existir pelo menos um
monitor de vdeo instalado.
11 Modes: opcional e possui configuraes sobre modos de tela disponveis para o(s)
monitor(es).
11 Screen: possui configuraes de dispositivos e monitores de vdeo.
11 ServerLayout: agrega as sesses Screen e InputDevice.
11 DRI: opcional e possui informaes sobre a infraestrutura de renderizao direta (DRI).
11 Vendor: possui configuraes personalizadas para cada fabricante.

Section Files
FontPath

/usr/X11/lib/X11/fonts/75dpi/:unscaled

FontPath

/usr/X11/lib/X11/fonts/100dpi/:unscaled

FontPath

/usr/X11/lib/X11/fonts/freefont/

FontPath

/usr/X11/lib/X11/fonts/latin2/

FontPath

/usr/X11/lib/X11/fonts/local/

Captulo 2 - Utilizao do sistema

Sesso Files

23

FontPath

/usr/X11/lib/X11/fonts/sharefont/

FontPath

/usr/X11/lib/X11/fonts/TTF/

EndSection

Sesso Module
Section Module
Load

i2c

Load

bitmap

Load

dri

Load

extmod

Load

freetype

EndSection

Sesso InputDevice
Section InputDevice
Identifier

Generic Keyboard

Driver

kbd

Option

CoreKeyboard

Option

XkbRules

xorg

Option

XkbModel

abnt2

Option

XkbLayout

Option

XkbVariant

br
abnt2

EndSection
Section InputDevice
Identifier

Configured Mouse

Driver

mouse

Option

CorePointer

Option

Device

Option

Protocol

Introduo ao Linux

Option

24

EndSection

/dev/input/mice
auto

ZAxisMapping 4 5 6 7

Sesso Device
Section Device
Identifier

Placa de Vdeo Genrica

Driver

vesa

BusID

PCI:1:0:0

EndSection

Sesso Monitor
Section Monitor
Identifier

Monitor Genrico

Option

DPMS

HorizSync

28-64

VertRefresh

43-60

EndSection

Sesso ServerLayout
Section ServerLayout
Identifier

Default Layout

Screen

Default Screen

InputDevice

Generic Keyboard

InputDevice

Configured Mouse

EndSection

Sesso Screen
Section Screen
Identifier

Default Screen

Device

Placa de Vdeo Genrica

DefaultDepth

Monitor Genrico
24

SubSection Display
Depth

Modes

1024768

EndSubSection
SubSection Display
Depth

Captulo 2 - Utilizao do sistema

Monitor

8
25

Modes

1024768

EndSubSection
SubSection Display
Depth

15

Modes

1024768

EndSubSection
SubSection Display
Depth

16

Modes

1024768

EndSubSection
SubSection Display
Depth

24

Modes

1024768

EndSubSection
EndSection

Abrindo uma sesso


Para abrir uma sesso de trabalho ou fazer o login no sistema, preciso informar um nome
de usurio e senha vlidos. Na tela de login possvel selecionar o gerenciador de janelas e
o idioma a serem utilizados, como mostra a figura a seguir.
Figura 2.1
Fazendo o login
no sistema.

CentOS

Introduo ao Linux

GNOME desktop

26

Aps realizar o login no sistema, ser exibida a janela principal do gerenciador GNU Network
Object Model Environment (GNOME), que o gerenciador padro do CentOS. O GNOME
desktop composto da tela inteira, incluindo os cones e painis. A rea vazia da tela
chamada apenas de desktop ou rea de trabalho.

Distribuio Linux
de classe Enterprise
derivada de cdigos
fonte gratuitamente
distribudos pela
Red Hat Enterprise
Linux e mantida pelo
CentOS Project.

Figura 2.2
Janela principal
do gerenciador
GNOME.

11 Barra de menus: acesso a aplicativos, locais do computador e da rede e utilitrios de


personalizao do sistema.
11 Atalhos rpidos: acesso rpido a aplicativos. Os seguintes aplicativos vm por padro
com atalhos rpidos criados: o navegador Firefox, o cliente de e-mail Evolution e o aplicativo de notas rpidas.
11 Barra de status: exibe o status das conexes de rede, o nvel de volume do autofalante,
entre outros.
11 Calendrio: exibe o calendrio e a hora do sistema. Clicando sobre ele pode-se ajustar a
data e a hora do sistema.
11 Status da conta: possibilita a insero de informaes a respeito do usurio, como
telefones de contato, endereo, pgina pessoal, entre outros. Tambm possibilita travar a
tela, trocar de usurio ou encerrar a sesso de trabalho.
11 Lista de janelas: exibe as aplicaes que esto sendo executadas.
11 Atalhos da rea de trabalho: atalhos para aplicativos ou locais do computador ou da
rede. Por padro, os seguintes atalhos vm criados: Computador, Pasta pessoal e Lixeira.
11 Desktop: a rea de trabalho, onde so exibidas as janelas das aplicaes que esto em uso.
11 reas de trabalho: possibilita a utilizao de mais de um desktop na mesma sesso de
trabalho. possvel alternar entre os dois desktops disponveis, clicando sobre os eles.
11 Lixeira: acesso lista de arquivos que foram excludos pelo usurio por intermdio de
programas grficos de gerenciamento de arquivos.

Menu Aplicativos
Permite o acesso a diversos programas de forma rpida. Esse menu contm diversas categorias:
11 Acessrios: aplicaes como calculadora, captura de tela, dicionrio, entre outras.

11 Escritrio: aplicaes para o escritrio, como processador de texto, planilha eletrnica,


apresentao de slides etc.
11 Grficos: programas editores e visualizadores de imagens.
11 Internet: navegadores, clientes de e-mail, programas de bate-papo, entre outros.
11 Jogos: jogos dos mais variados estilos.
11 Multimdia: programas reprodutores de arquivos de udio e vdeo.
11 Sistema: utilitrios para anlise de discos, verificao de atualizaes, emulador de
terminal, monitor de recursos etc.

Captulo 2 - Utilizao do sistema

11 Desenvolvimento: aplicaes para desenvolvimento de software.

27

Menu Locais
Permite o acesso a locais pr-definidos e a alguns outros recursos do sistema.
11 Pasta pessoal: mostra os arquivos e pastas do diretrio home do usurio, usando o
gerenciador de arquivos Nautilus.
11 Mostrar rea de trabalho: exibe o contedo da rea de trabalho atravs do Nautilus.
11 Documentos: mostra a pasta documentos, localizada no diretrio home do usurio.
11 Msica: exibe a pasta msica, localizada no diretrio home do usurio.
11 Imagens: mostra a pasta imagens, localizada no diretrio home do usurio.
11 Vdeos: exibe a pasta vdeos, localizada no diretrio home do usurio.
11 Downloads: mostra a pasta downloads, localizada no diretrio home do usurio.
11 Computador: exibe os dispositivos de armazenamento do computador.
11 Rede: mostra os servidores disponveis na rede.
11 Conectar ao servidor: conecta a um servidor remoto, utilizando protocolos como FTP,
SSH, HTTP, entre outros.
11 Pesquisar por arquivos: procura por pastas e arquivos no computador.
11 Documentos recentes: exibe uma lista com os documentos abertos recentemente.

Menu Sistema
Permite o acesso a ferramentas para administrao e configurao do sistema e do
ambiente computacional.
11 Preferncias: acesso a diversos itens de configurao, como vdeo, teclado, gerenciamento de energia, entre outros.
11 Administrao: acesso a diversas ferramentas de administrao do sistema, como configurao de regras de firewall, atualizao de software, gerenciamento de servios, entre outros.
11 Ajuda: abre o aplicativo de ajuda do GNOME.
11 Sobre este computador: acesso a diversas informaes sobre o computador, como processos em execuo, monitoramento de recursos de hardware, entre outros.
11 Bloquear tela: bloqueia a sesso de trabalho atual. Para desbloque-la, o usurio deve
informar sua senha.
11 Encerrar sesso: finaliza a sesso de trabalho atual.
11 Desligar: desligar ou reiniciar o computador ou, ainda, entrar no modo de hibernao.

Aplicaes
Emulador de Terminal: xterm
Introduo ao Linux

O xterm um emulador de terminal de linha de comando. Ele executa funes do sistema

28

utilizando comandos sem sair do ambiente grfico. A Figura 2.4 mostra a tela do terminal do
xterm, que o emulador de terminal padro do GNOME.

Figura 2.3
Terminal do sistema
GNOME.

Navegador de arquivos
O navegador de arquivos possui um painel lateral e barras de ferramentas, localizao e
status, que podem ser habilitados ou desabilitados atravs do menu Ver. Possui tambm
trs modos de exibio: cones, lista e compacta. Com o navegador de arquivos possvel
apagar, mover, copiar ou renomear arquivos selecionados, clicando e arrastando ou escolhendo uma opo no menu. A Figura 2.4 mostra a tela do navegador de arquivos do GNOME.

Figura 2.4
Navegador de
arquivos do
GNOME.

Configurando o GNOME
Para adicionar um cone no painel do GNOME, basta clicar com o boto direito do mouse
sobre o painel e selecionar a opo Adicionar ao painel. A janela da Figura 2.5 apresenta os

Figura 2.5
Adicionando um
cone ao painel.

Captulo 2 - Utilizao do sistema

itens que podem ser adicionados ao painel.

29

Para configurar a aparncia do desktop e das aplicaes, basta clicar com o boto direito do
mouse sobre o desktop e selecionar a opo Alterar plano de fundo. A janela da Figura 2.6
ento exibida, possibilitando a alterao do tema atual, do plano de fundo e das fontes
utilizadas no desktop e nas aplicaes.

Figura 2.6
Preferncias de
aparncia.

KDE desktop
Como vimos anteriormente, antes de fazer o login, podemos escolher o gerenciador de
desktop que vamos utilizar. Os gerenciadores GNOME e KDE so bastante semelhantes,
tendo em vista que ambos se propem a realizar as mesmas funes e so manipulados de
forma bastante semelhante. Para utilizar o KDE, o usurio deve selecion-lo na tela de login.
O KDE desktop a tela inteira, incluindo os cones e painis. O espao na tela onde no h
cones ou painis chamado de desktop ou rea de trabalho.
O KDE possui facilidades de configurao semelhantes ao GNOME: podemos adicionar e
remover cones do painel do KDE da mesma forma
, novos painis podem ser criados e arrastados para qualquer canto da tela e novos cones podem ser adicionados da mesma forma
como no painel principal.

Tambm possvel configurar a aparncia do desktop e das aplicaes, utilizando a


opo Desktop Settings.
A Figura 2.7 mostra a tela inicial do KDE desktop e seus elementos, que sero descritos a

Introduo ao Linux

seguir, bem como suas principais funcionalidades.

30

Figura 2.7
KDE Desktop e
suas principais
informaes.

11 Notificador de dispositivos: gerencia dispositivos removveis como pen-drives, HDs


externos, entre outros.
11 Lista de janelas: exibe as aplicaes que esto sendo executadas.
11 Desktop: a rea de trabalho, onde so exibidas as janelas das aplicaes que esto em uso.
11 Gerenciador de widgets: adiciona rea de trabalho pequenos aplicativos conhecidos
como widgets. Tambm possibilita a configurao de elementos do desktop.
11 Lanador de aplicaes: acesso s aplicaes instaladas, arquivos do usurio e favoritos.
11 reas de trabalho: possibilita a utilizao de vrios desktops na mesma sesso de trabalho. possvel alternar entre os quatro desktops disponveis clicando em seus cones.
11 Barra de status: exibe o status das conexes de rede, o nvel de volume do autofalante,
entre outros.
11 Calendrio: exibe o calendrio e a hora do sistema. Clicando sobre ele pode-se ajustar a
data e a hora do sistema.

Lanador de aplicaes
O lanador de aplicaes facilita o acesso s aplicaes instaladas, arquivos do usurio e favo-

Figura 2.8
Lanador
de aplicaes.

Captulo 2 - Utilizao do sistema

ritos. A Figura 2.8 mostra o lanador de aplicaes e suas abas, que sero descritas a seguir.

31

Favoritos
A aba Favoritos contm as aplicaes e locais os favoritos do usurio. As aplicaes mais
utilizadas e os locais mais acessados passam a fazer parte automaticamente dos favoritos.
Para incluir uma aplicao aos favoritos, basta clicar sobre seu cone com o boto direito do
mouse e clicar na opo Adicionar aos favoritos. Por padro, a lista de favoritos contm o
navegador
Konqueror
, um atalho para as ferramentas de configurao do sistema e o gerenciador de arquivos dolphin.

Aplicativos
A aba Aplicativos possui diversas categorias de aplicaes que sero descritas a seguir:
11 Administrao: ferramentas de administrao do Sistema Operacional. Entre essas
ferramentas, podemos destacar: configurao do firewall, gerenciamento de servios,
gerenciamento de contas de usurios, entre outras.
11 Configuraes: diversos utilitrios de configurao, como: configurao de impressora,
teclado, mouse, rede, entre outros.
11 Desenvolvimento: aplicaes para desenvolvimento de software.
11 Escritrio: um conjunto de aplicaes para o escritrio, como processador de texto,
planilha eletrnica, apresentaes de slides, entre outras.
11 Grficos: contm editores e visualizadores de imagens.
11 Internet: contm navegadores, clientes de e-mail, programas de bate-papo, entre outros.
11 Jogos: contm possui jogos diversos.
11 Multimdia: possui reprodutores de arquivos de udio e vdeo.
11 Sistema: contm diversos utilitrios de configurao, como: ferramentas de configurao
de disco, gerenciador de arquivos, visualizadores de arquivos de log, emuladores de
terminal, entre outros.
11 Utilitrios: contm utilitrios, como alarmes, calculadora, editores de texto, entre outros.
11 Ajuda: exibe o aplicativo de ajuda do KDE.
11 Arquivos pessoais: abre o diretrio home do usurio no gerenciador de arquivos dolphin.
11 Procurar arquivos/pastas: buscas por arquivos e diretrios do sistema.

Computador
A aba Computador possibilita ao acesso s mdias de armazenamento instaladas no computador, locais e configuraes do sistema. A seguir, so descritas as opes presentes na
aba Computador.
11 Configuraes do sistema: ferramentas de configurao do sistema divididas em categorias, como rede e conectividade, administrao do computador, entre outras.

Introduo ao Linux

11 Informaes do sistema: informaes sobre o sistema, como taxa de utilizao de disco


e memria, status das conexes de rede, modelo e velocidade da CPU, entre outras.
11 Executar comando: execuo de comandos.
11 Pasta do usurio: exibe o contedo do diretrio home do usurio que est logado no sistema.
11 Rede: exibe conexes de rede, diretrios remotos etc.
11 Raiz: exibe o contedo do diretrio raiz (/).
11 Lixo: exibe o contedo da lixeira.
32

Usados recentemente
A aba Usados recentemente exibe as aplicaes e os documentos que foram abertos
recentemente pelo usurio.

Sair
A aba Sair possui opes para finalizao da sesso de trabalho e do computador.
11 Sair: finaliza a sesso de trabalho atual.
11 Bloquear: bloqueia a sesso. Para desbloque-la, o usurio deve informar sua senha.
11 Trocar usurio: mantm a sesso de trabalho aberta, mas permite que outro usurio
faa login no sistema.
11 Suspender para o disco: pausa o computador sem encerrar a sesso de trabalho atual.
11 Reiniciar: reinicia o computador.
11 Desligar: desliga o computador.

Aplicaes do KDE
Konqueror
O Konqueror possui funcionalidades de navegador web e gerenciador de arquivos. A Figura 2.9
mostra a funcionalidade de gerenciador de arquivos. Pode-se escolher entre vrias formas
de exibio de acordo com a preferncia do usurio. Os modos de exibio disponveis so:
cones, detalhes, colunas, emulador de terminal e visualizar o tamanho do arquivo. Pode-se
apagar, mover, copiar ou renomear arquivos e diretrios, selecionando-os, clicando e arras-

Figura 2.9
Konqueror: navegador web e gerenciador de arquivos.

Captulo 2 - Utilizao do sistema

tando ou escolhendo uma opo no menu.

33

Konsole
Assim como o GNOME, o KDE tambm possui um simulador de terminal de linha de
comando, que o Konsole. Ele executa funes do sistema utilizando comandos sem sair do
ambiente grfico. A Figura 2.10 mostra a tela do Konsole.

Configurando o KDE
Para configurar a aparncia do desktop, basta clicar com o boto direito do mouse sobre o
desktop e selecionar a opo Configuraes da rea de trabalho. A janela da Figura 2.11

Figura 2.10
Konsole: simulador
de terminal de linha
de comando.

ento exibida, possibilitando a alterao do tema atual e do papel de parede.

Figura 2.11
Configurando a aparncia do desktop.

O aplicativo Configuraes do sistema, exibido na Figura 2.12, possui diversas ferramentas


que podem ser utilizadas para configurar o sistema. Essas ferramentas so divididas em

Introduo ao Linux

categorias e podem configurar desde conexes de rede a aplicaes de acessibilidade.

34

Figura 2.12
Alterando configuraes do sistema.

Documentao
A seguir so disponibilizadas referncias sobre documentao do GNOME e do KDE.
Documentao on-line:
GNOME: http://library.gnome.org
KDE: http://www.kde.org/documentation
Para documentao local, utilize o comando atravs de um Xterm:

Captulo 2 - Utilizao do sistema

man <nome do comando>

35

36

Introduo ao Linux

Roteiro de Atividades 2
Atividade 2.1 Conhecendo o ambiente grfico
1. Identifique o ambiente grfico que est sendo utilizado.
2. Altere o plano de fundo.
3. Adicione um widget rea de trabalho.
4. Altere o idioma.
5. Adicione o xterm ao painel.
6. Altere as configuraes de gerenciamento de energia, de modo que o computador

hiberne aps 2 horas sem uso.


7. Desabilite o servio de firewall do computador.
8. Ative o outro ambiente grfico, e execute os passos 2 ao 7; observe a diferena.

Qual interface grfica voc achou mais amigvel?

Atividade 2.2 Conhecendo os gerenciadores de arquivos


Utilizando o navegador de arquivos do GNOME ou o Konqueror, crie alguns arquivos utilizando a parte grfica, navegue pelos diretrios e tente excluir arquivos que voc criou, para
simular uma situao de erro de operao. Antes disso, no se esquea de anotar os diretrios em que estes arquivos se encontram, e os nomes dos arquivos. Se no obtiver sucesso
na remoo de algum arquivo, tente explicar a razo. Aps finalizar a atividade, recupere os
arquivos excludos.

Atividade 2.3 Trabalhando com arquivos e diretrios


Exercitar algumas aes possveis com os gerenciadores de arquivos Nautilus e Konqueror,
com um conjunto de arquivos existentes, lembrando de retornar situao anterior:
1. Mova um arquivo para outro diretrio.
2. Copie um arquivo para outro diretrio.
3. Renomeie um arquivo.

5. Recuperar o arquivo da pasta Trash.

Captulo 2 - Roteiro de Atividades

4. Apagar um arquivo.

37

38

Introduo ao Linux

3
Entender os conceitos de sistemas de arquivos hierrquicos e as caractersticas do
sistema de arquivos do Linux; conhecer os tipos de arquivos, suas similaridades,
diferenas, atributos e facilidades de segurana.

conceitos

Sistema de arquivos do Linux, tipos e atributos dos arquivos, operaes com


arquivos e diretrios.

Sistema de arquivos do Linux


11 Estrutura hierrquica.

11 Arquivos sem estrutura.


11 Segurana.
11 Independncia de dispositivo.
O sistema de arquivos do Linux possui diversas caractersticas que o tornam seguro e eficients:
11 Estrutura hierrquica: o sistema de arquivos do Linux possui estrutura hierrquica de
diretrios em formato de rvore invertida. Os usurios podem armazenar seus dados
sem se preocupar comosesto dispostos fisicamente. O sistema pode ter diversos discos,
todos agrupados na mesma rvore de diretrios.
11 Arquivos sem estrutura: no h estrutura interna, ou seja, no h campos, registros,
delimitadores, espaos, cabealhos, nmero de colunas e linha, ou qualquer formato
pr-definido a ser seguido pelo usurio ao inserir ou criar o contedo do arquivo. O
usurio livre para estruturar e interpretar o contedo.
11 Segurana: os arquivos podem ser protegidos contra o uso no autorizado de diferentes
usurios que compartilham o Sistema Operacional.
11 Independncia de dispositivo: o Linux d tratamento idntico para arquivos e para
dispositivos de entrada e sada. Os mesmos procedimentos e programas utilizados para
processar informaes armazenadas em arquivos podem ser utilizados para leitura de
dados de um terminal, impresso e envio para a entrada de outro programa.
Principais diretrios do Linux e suas funes:
11 /: diretrio-raiz e origem da rvore hierrquica de diretrios.
11 /bin: binrios do sistema utilizado pelos usurios.

Captulo 3 - Organizao do Linux

objetivos

Organizao do Linux

39

11 /boot: arquivos especiais de inicializao do sistema.


11 /dev: arquivos especiais de dispositivos de entrada e sada.
11 /etc: arquivos de configurao, scripts de inicializao de servios, entre outros.
11 /home: diretrios pessoais dos usurios do sistema.
11 /lib: bibliotecas compartilhadas pelos programas e pelo sistema.
11 /mnt: diretrio utilizado como ponto de montagens para dispositivos removveis, como
pen-drives, CDs, DVD, etc.
11 /opt: diretrio utilizado para instalar pacotes opcionais, que no fazem parte da distribuio.
11 /proc: diretrio virtual que contm o sistema de arquivos do kernel.
11 /root: diretrio pessoal do usurio root.
11 /sbin: comandos de administrao do sistema, utilizados pelo usurio root.
11 /tmp: arquivos temporrios do sistema e de programas.
11 /usr: programas de uso geral do sistema.
11 /var: arquivos de tamanho varivel, como caixas postais de e-mail, cache, lo, etc.
A figura 3.1 representa a estrutura hierrquica de arquivos e diretrios do Linux.

bin

boot

dev

etc

home

lib

mnt

opt

proc

root

sbin

Exerccio de fixao 1 e
Conhecendo o sistema de arquivos
Desenhe a rvore do sistema de arquivos at o terceiro nvel hierrquico. No terceiro nvel,
basta listar no mximo trs diretrios, se houver. Considerar o ponto de partida, o diretrio
raiz ( / ), como o primeiro nvel hierrquico.

Exerccio de fixao 2 e
Estrutura de diretrios
O objetivo deste exerccio propor um melhor entendimento da estrutura bsica de diret-

Introduo ao Linux

rios do Linux. Relacione os diretrios com seus respectivos contedos:

40

1. - /

( ) Arquivos de configuraes locais da mquina.

2. - /bin

( ) Contm diretrios pessoais dos usurios.

3. - /boot

( ) Hierarquia secundria de diretrios.

4. - /dev

( ) Diretrio de arquivos temporrios.

5. - /etc

( ) Bibliotecas dinmicas.

6. - /home

( ) Kernel do Linux mais arquivos estticos do carregador de boot.

7. - /lib

( ) Ponto de montagem para sistemas de arquivos temporrios.

8. - /mnt

( ) Comandos executveis necessrios para completar o boot.

tmp

usr

var

Figura 3.1
Estrutura hierrquica de diretrios
do Linux.

9. - /sbin

( ) Diretrio de documentao de softwares instalados.

10. - /tmp

( ) Arquivos necessrios ao boot geralmente usados pelo root.

11. - /usr

( ) Arquivos de acesso comum.

12. - /usr/Bin

( ) Arquivos de tamanho varivel como spool e log.

13. - /usr/share/doc

( ) Diretrio raiz onde comea a estrutura de arquivos inteira.

14. - /var

( ) Arquivos de acesso a dispositivos do sistema.

Montando e desmontando um dispositivo


Para acessar um sistema de arquivos contido em um CD, DVD ou pen drive, preciso que
esses dispositivos estejam montados em alguma partio do disco rgido. Quando o dispositivo montado, seu estado informado ao Sistema Operacional. Os ambientes de desktop
GNU Network Object
Model Environment
um projeto de software
livre abrangendo o
ambiente de trabalho
GNOME, para os usurios, e a plataforma
de desenvolvimento
GNOME para os desenvolvedores. O projeto
d nfase usabilidade,
acessibilidade e internacionalizao.

do GNOME e do KDE montam automaticamente esses dispositivos quando so inseridos.


Antes de remover CDs e DVDs, que tm mdias removveis, devemos desmont-los para
que a gaveta da unidade possa ser aberta. O sistema no permitir que um dispositivo seja
desmontado caso esteja sendo acessado de alguma forma. As mdias removveis podem ser
desmontadas atravs da linha de comandos ou da interface grfica.
Quando o sistema reiniciado atravs do comando shutdown, os dispositivos so
automaticamente desmontados.

Inode
O inode identificado por um nmero nico, que atribudo a cada arquivo do sistema.
Assim, o arquivo de usurios e senhas do sistema pode ser identificado, por exemplo,
pelo nmero 2217, enquanto um arquivo-texto de um usurio pode ser identificado pelo
nmero 456. O Linux organiza os discos rgidos em sequncia de blocos. O contedo de um
arquivo pode ser armazenado em um ou mais blocos, que podem estar espalhados pelo
disco e no estarem dispostos de forma sequencial. O inode uma estrutura de dados,
com informaes que permitem encontrar os dez primeiros blocos desse arquivo. Alm da
lista de locais dos dez primeiros blocos, o inode guarda outras informaes importantes a
respeito de um arquivo, como: tipo, permisses associadas, proprietrio, grupo, tamanho,
ltima vez em que foi modificado etc. Quando o arquivo aberto, o inode fica disponvel
na memria principal, permitindo, com isso, que os primeiros dez blocos de um arquivo
possam ser encontrados rapidamente, pois o acesso memria bem mais rpido que ao
disco. Assim, o inode serve tambm para aumentar a eficincia de acesso ao contedo de
arquivos pequenos no Linux. Quando um arquivo maior do que dez blocos, o Linux passa
a utilizar tcnicas de acesso indireto, onde as posies do dcimo-primeiro bloco em diante
so armazenadas no mais no inode, mas em outro bloco no disco, chamado de bloco
indireto. As posies dos blocos indiretos ficam armazenadas no inode e, para acessar um
bloco indiretamente, passa a ser necessrio tanto um acesso ao inode quanto um acesso ao
bloco indireto no disco, o que obviamente aumenta o tempo de acesso ao contedo e reduz
a eficincia de acesso a arquivos grandes (maiores que 10 blocos). Mesmo o acesso indireto
limitado para arquivos muito extensos. Assim, pode ser utilizado o mtodo indireto duplo,
onde um bloco chamado de bloco indireto duplo contm as posies de outros blocos indiretos e estes, por sua vez, contm as localizaes dos blocos do arquivo. Os blocos indiretos
duplos tambm so armazenados no disco e tm suas posies guardadas no inode.

Captulo 3 - Organizao do Linux

GNOME

41

Para permitir tamanhos ilimitados de arquivos, esse processo pode ser expandido
atravs de uma hierarquia de blocos indiretos, com blocos indiretos nicos, duplos,
triplos e, dessa forma, aumentar sem limitaes o contedo dos arquivos.

Tipos de arquivos
No Linux todo objeto que manipulado pelo Sistema Operacional representado por um
arquivo, incluindo diretrios, dispositivos de hardware e conexes de rede. Para identificar
o tipo do arquivo, o Sistema Operacional consulta as informaes contidas em seu inode.
A seguir so apresentados os tipos de arquivos existentes no Linux.

l
Saiba mais

Arquivo regular
A estrutura bsica que o Linux utiliza para armazenar informaes o arquivo. Nos arquivos
so armazenados todos os tipos de dados, desde textos at instrues em cdigo de
mquina. Es
s
a a estrutura utilizada para armazenar todos os tipos de informaes necessrias para a operao do sistema. A identificao dos arquivos por nmeros utilizada
apenas internamente pelo sistema
,
j que, na prtica, alm de tediosa, a identificao numrica perde o sentido. Dessa forma, o sistema permite a identificao dos arquivos atravs de
nomes. O nome do arquivo pode ter qualquer sequncia de at 256 caracteres, mais do que
suficiente para descrever o contedo do arquivo, dando um sentido identificao. Para um
sistema com milhares de arquivos, pouco provvel que no sejam escolhidos nomes que j
estejam sendo utilizados por outros arquivos.

Caracteres curinga
Tm a funo de substituir outros caracteres, pois ao aparecerem numa determinada
posio, indicam que os nomes de arquivos que atendem condio solicitada podem ter
quaisquer caracteres naquela posio. O caractere curinga * (sem aspas) pode substituir um nome ou um conjunto de caracteres numa determinada posio de um nome de
arquivo. Por exemplo: P* significa que todos os nomes de arquivos que comeam com
P, seguidos de quaisquer conjuntos de caracteres at o tamanho mximo de 256 caracteres, atendem condio solicitada. O caractere curinga ? (sem aspas) pode substituir
uma letra, em determinada posio do nome, por qualquer caractere. Por exemplo: P??A
significa que todos os nomes de arquivos com quatro caracteres que comeam por P e
terminam com A atendem condio solicitada.

Diretrio
11 Conjunto de arquivos.

11 Listagem de arquivos com seus inodes correspondentes.


Para o Sistema Operacional, um diretrio apenas um arquivo especial que contm uma
Introduo ao Linux

listagem de nomes de arquivos e seus inodes correspondentes. O diretrio desempenha

42

exatamente a mesma funo de um catlogo de telefones: dado o nome de um arquivo, o


Sistema Operacional consulta seu diretrio e obtm o nmero do inode correspondente ao
arquivo. Com esse nmero, o sistema de arquivos pode examinar outras tabelas internas
para determinar onde est armazenado o arquivo e torn-lo acessvel ao usurio. A localizao de arquivos mostrada na Figura 3.2.

Pode-se utilizar uma


extenso para o nome
do arquivo, colocando
um segundo nvel de
nome, separado por
ponto. Essa medida facilita ao usurio encontrar arquivos, utilizando
as extenses dos
nomes juntamente com
referncias ambguas
ou caracteres curinga.

Diretrio
Disco rgido
Vendas

8014

Compras

0412

Salrios

5467

Relatrios

8015

Figura 3.2
Localizao
de arquivos no
disco rgido.

Arquivo
# 0412

Arquivo
# 8014

Arquivo
# 8015

Arquivo
# 5467

O Linux

permite organizar arquivos agrupando-os em diretrios. Um diretrio desempenha a mesma funo de uma gaveta de armrio para arquivamento, agrupando todos
os arquivos num lugar comum onde possam ser facilmente encontrados. Assim, o usurio
ganha flexibilidade para agrupar arquivos de forma lgica. Por exemplo, ao criar arquivos
com os resultados das vendas das filiais de uma empresa, ele pode agrupar esses arquivos
em diretrios com o mesmo nome do local da filial. Os diretrios tambm podem ter nomes
compostos por at 256 caracteres. recomendado tambm que o nome do diretrio faa
referncia ao seu contedo. Cada usurio do sistema tem seu diretrio pessoal, que geralmente possui o mesmo nome do usurio.

Arquivos de dispositivos
11 Os dispositivos no Linux so referenciados por arquivos.

11 Dispositivos orientados a caractere e a bloco de caracteres.


11 Os arquivos de dispositivos ficam agrupados no diretrio /dev.
O sistema de arquivos estende o conceito de arquivo para tratar os dispositivos de entrada e
sada, como impressoras, unidades de fitas e ainda outros tipos que podem ser instalados em
um
S
istema
O
peracional Linux

. Os dispositivos so tratados como arquivos especiais e manipulados como arquivos comuns do sistema. Os arquivos de dispositivos podem ser de dois tipos:
11 Arquivos de dispositivos orientados a caractere: realizam suas transferncias de
dados byte a byte e de modo sequencial. As portas seriais so exemplos de dispositivos
orientados a caractere. Esse tipo de arquivo representado pela letra c.
11 Arquivos de dispositivos orientados a blocos de caracteres: realizam suas transferncias de dados em blocos de tamanho que pode variar entre 512 bytes e 32 Kbytes, sendo
o acesso feito de modo aleatrio. Os discos rgidos e as unidades de fita so exemplos de

Alguns dispositivos s podem ser acessados no modo caractere, como terminais e impressoras, pois no tm recursos para o acesso bloco a bloco. Outros dispositivos permitem o
acesso bloco a bloco, como discos e fitas, mas podem, tambm, ser acessados caractere a
caractere, dependendo da operao efetuada. Por exemplo: na formatao de um disco,
os blocos ainda no existem, logo, o acesso inicial a esse dispositivo deve ser orientado a
caractere. Existem outras situaes em que os dispositivos orientados a blocos podem ser
acessados caractere a caractere como, por exemplo, para a execuo de cpias de segurana; entretanto, o contrrio no ocorre, ou seja, os dispositivos orientados a caractere no
podem ser acessados pelo modo bloco a bloco. Por conveno, todos os dispositivos de E/S
no Linux recebem nomes individuais de arquivo e so agrupados no diretrio /dev, que a

Captulo 3 - Organizao do Linux

dispositivos orientados a bloco. Esse tipo de arquivo representado pela letra b.

abreviatura de devices. Os dispositivos mais comuns so designados de forma padronizada:


43

11 /dev/lp: impressora do sistema.


11 /dev/tty: terminais ou linhas de comunicao.

Disco

Utilitrios
Unix

Impressoras

Sistema de
arquivos
Unix

Programas
do usurio

Fitas

Terminais

Linhas de
comunicao

Figura 3.3
Arquivos de
dispositivos.

As operaes de entrada e sada nesses dispositivos funcionam exatamente da mesma


forma que nos outros tipos de arquivos. Os programas de aplicao projetados para funcionar com arquivos podem assim funcionar, com todos os tipos de dispositivos de entra
e sada (E/S), sem a necessidade de modificaes, caracterstica conhecida como independncia de arquivos dispositivos (device files). A independncia de dispositivos permite que
os mesmos comandos utilizados para manipular arquivos normais possam ser utilizados
para executar funes semelhantes com arquivos de dispositivos, conforme o exemplo:
Cpia de um arquivo para outro:

# cp vendas relatrios
O mesmo comando pode ser utilizado para copiar o arquivo para a impressora:

# cp vendas /dev/lp

Os dispositivos de entrada e sada (E/S) so tratados como arquivos especiais e manipu-

lados como arquivos comuns do sistema. Podem ser de dois tipos:


11 Dispositivos orientados a caracteres: tipo de arquivo representado pela letra c.
11 Dispositivos orientados a blocos de caracteres: tipo de arquivo representado pela

Introduo ao Linux

letra b.

44

Named pipes
Permitem que dois processos possam trocar informaes por intermdio de um
canal bidirecional.
Pipes convencionais so os dados que entram em um extremo do canal saem no outro
extremo, definindo um sentido de comunicao.

O Linux prov uma funcionalidade de comunicao entre processos denominada named pipe.
O named pipe permite a comunicao bidirecional entre dois processos executados no mesmo
Sistema Operacional. Um named pipe referenciado pelos processos que conecta atravs de
seu nome e faz parte do sistema de arquivos. Quando criamos os named

pipes
, eles so associados a diretrios e a permissionamentos de acesso, assim como os arquivos regulares.

Os named pipes podem ser criados atravs dos comandos mkfifo ou mknod e removidos com o comando rm ou por meio da chamada de sistema unlink.

Alm do named pipe existe tambm o pipe convencional, representado pelo caractere
|, que utilizado em comunicaes unidirecionais, conectando a sada de um processo
entrada de outro. Os pipes funcionam da mesma forma que os descritores de arquivos
padro, apenas lendo a informao de entrada e escrevendo-a na sada, sem a preocupao
com o modo como ela ser tratada pelos processos envolvidos na comunicao. A diferena
entre o named pipe e o pipe convencional que, nesse ltimo, os processos conectados
devem possuir uma relao de pai para filho ou serem irmos. Alm disso, o named pipe
precisa ser explicitamente encerrado aps seu uso, ao contrrio do pipe convencional, que
encerrado automaticamente aps a execuo dos processos que ele conecta.
Entrada
Processo
envia dados

Sada
Canalizao

Processo
recebe dados

Para que servem os links


So ponteiros para outros arquivos, links simblicos ou soft links que funcionam como

ponteiros para determinados arquivo, e tm as caractersticas de um arquivo.


Vamos supor que o arquivo /usr/local/admin/vendasscontenha informaes de vendas de uma
empresa e toda a equipe de vendedores precise acessar este arquivo. Imagine o trabalho que
daria copiar este arquivo para o diretrio home de cada funcionrio e mant-los atualizados.
Com os links simblicos criamos um link em cada diretrio home, que aponta para o arquivo
original localizado no diretrios/usr/local/admin/vendas, reduzindo o trabalho e mantendo o
acesso s informaes sempre atualizadas. Cada usurio pode criar seus links com nomes
diferentes em seu diretrio home, apontando para o mesmo arquivo original. Outra vantagem
simplificar o acesso a arquivos que tenham um caminho (
path
) extenso, com vrios subdiretrios. Ao criar um arquivo do tipo link em seu diretrio home, o usurio evita a digitao de
todo o caminho do arquivo vendas, por exemplo, manipulando-o diretamente atravs de seu
diretrio home. O comando para a criao de um arquivo do tipo link possui a sintaxe:

ln -[opes] origem [destino]


Onde origem ou destino podem ter um nome de arquivo ou o caminho completo do arquivo
na estrutura hierrquica.

Exerccio de fixao 3 e
Links
Pesquise a diferena entre HardLink e SoftLink.

Captulo 3 - Organizao do Linux

Figura 3.4
Comunicao entre
processos utilizando pipes.

45

Sockets
Mecanismos para troca de dados entre processos.

Os processos podem estar sendo executados no mesmo computador ou em computadores diferentes conectados atravs da rede. Uma vez estabelecida a conexo, os dados
podem trafegar nos dois sentidos at uma das pontas encerrar a conexo.
Os sockets so utilizados para a comunicao bidirecional entre dois processos, que podem
ser executados no mesmo computador ou em computadores diferentes. Os principais tipos
de sockets utilizados no Linux so: Unix domain socket ou Inter Process Communication
socket (IPC socket), que utilizado para a comunicao entre processos executados em um
mesmo sistema operacional, e o socket de rede, que utilizado para a comunicao entre
processos executados em computadores diferentes, interligados por uma rede. Existem
casos em que os sockets de rede so criados para comunicao entre processos que so
executados no mesmo computador.

Entre os sockets de rede, podemos destacar o stream socket e o datagram socket.


Apesar de os arquivos sockets terem diversas funes especficas, so muito similares aos
arquivos comuns, sendo tratados da mesma forma pelo sistema de arquivos do Linux.
Um socket de rede tem um funcionamento parecido com o telefone, isto , cada arquivo
socket representa um ponto de conexo de uma linha de comunicao, sendo que, entre
esses pontos, existe a rede de comunicao de dados. Alm disso, tambm tm seu prprio
nmero de identificao na rede, assim como o telefone na rede telefnica. Para permitir
que se estabelea o contato entre dois sockets, o socket local e o remoto so identificados
por um par endereo IP e porta.
Um socket pode ser criado atravs da chamada de sistema socket e removido atravs do
comando rm ou da chamada de sistema close, quando ele no estiver mais sendo utilizado.
A maioria das aplicaes no Linux usa sockets.

Atributos dos arquivos


11 Nome: nome do arquivo.
11 Localizao: local de armazenamento do arquivo no disco.
11 Tamanho: tamanho do arquivo em bytes.
11 Ligaes: nomes pelos quais o arquivo conhecido.
11 Propriedade: usurio que o dono (owner) do arquivo.
11 Grupo: grupo de usurios que acessa ao arquivo.
11 Tipo: tipo do arquivo.
11 Criao: data e hora de criao do arquivo.

Introduo ao Linux

11 Modificao: data e hora da ltima modificao do arquivo.

46

11 Acesso: data e hora do ltimo acesso ao arquivo.


11 Permisses: permisses de acesso ao arquivo.

Os arquivos possuem diversos atributos, que so armazenados em seus


inodes
correspondentes. Entre esses atributos, podemos destacar:
11 Nome: nome do arquivo.
11 Localizao: local onde o arquivo est armazenado no disco.
11 Tamanho: tamanho do arquivo em bytes.
11 Ligaes: nomes pelos quais o arquivo conhecido.
11 Propriedade: usurio dono (owner) do arquivo.
11 Grupo: grupo de usurios que pode ter acesso ao arquivo.
11 Tipo: tipo do arquivo.
11 Criao: data de criao do arquivo.
11 Modificao: data de modificao do arquivo.
11 Acesso: data do ltimo acesso ao arquivo.
11 Permisso: permisses de acesso ao arquivo.
Todas essas informaes so automaticamente mantidas pelo sistema na medida em que
os arquivos so criados e utilizados. Os diversos utilitrios usam essas informaes para
processar arquivos seletivamente. Os utilitrios de backup do Linux, por exemplo, podem
preservar cpias apenas daqueles arquivos que foram modificados aps alguma data
especfica. A data da ltima modificao utilizada para selecionar os arquivos apropriados.
Ao listarmos arquivos e diretrios utilizando o comando ls com a opo l, visualizamos as
informaes mostradas na Figura 3.5.

drwxr-xr-x
-rw-r--r--

5 root
1 root

root
root

1024 dec 23 13:48


331 feb 11 10:19

GNUstep
Xrootenv.0

Nome do arquivo

Tipo do
arquivo

Dono do
arquivo
(owner)

Nmero
de links
do arquivo

Grupo de
usurios
(group)

Data da ltima
modicao
Tamanho
em bytes

Permisses de arquivos
O Linux um sistema projetado para ser multiusurio. Para suportar operaes em
ambientes com mltiplos usurios, o Linux dispe de mecanismos que restringem o acesso
a arquivos e diretrios, baseados na identificao do usurio que solicita o acesso, e ao
modo de acesso atribudo a cada arquivo e diretrio.
Todo arquivo e diretrio associado a um usurio que chamado de dono (owner).
O usurio que inicialmente cria o arquivo o dono do arquivo. Cada usurio pode pertencer a um ou mais conjuntos de usurios que so chamados de grupo. Cada arquivo
ou diretrio associado a um grupo, que atribudo ao arquivo quando este criado.
Da mesma forma, o usurio que inicialmente cria o arquivo ou diretrio determina o
grupo que pode acess-lo. Esse grupo associado ao novo arquivo ou diretrio o grupo
primrio do usurio que os criou. Tanto o dono como o grupo de um arquivo podem ser
alterados. As permisses de acesso, conhecidas como modos de acesso, determinam

Captulo 3 - Organizao do Linux

Figura 3.5
Sada do comando
ls com a opo l.

Permisses
de acesso
(access modes)

as operaes que um usurio pode realizar em um arquivo. A seguir esto os trs tipos
bsicos de permisso que podem ser aplicadas a um arquivo ou diretrio.
47

11 r (read): permite acesso apenas para leitura.


11 w (write): permite acesso para leitura e gravao.
11 x (execute): permite executar o arquivo.
Note que as permisses habilitam a execuo de aes diferentes em arquivos e diretrios.
Arquivos ou diretrios podem ter uma ou mais permisses: um arquivo que tenha as permisses rw pode ter seu contedo lido e alterado por um usurio com acesso a ele, mas no pode
ser executado por esse usurio, pois o arquivo no tem a permisso de execuo x. Os modos
de acesso a um arquivo ou diretrio consistem em trs conjuntos de permisses, com trs
caracteres cada um. O primeiro conjunto de permisses se refere ao usurio que o dono do
arquivo ou diretrio. O segundo conjunto se refere ao grupo de usurios que podem ter acesso
ao arquivo. O terceiro conjunto de permisses restringe o acesso a outros usurios (others),
exceto o dono ou o grupo associado ao arquivo. Para alterar o dono ou o grupo do arquivo, so
utilizados os comandos chown (change owner) e chgrp (change group), respectivamente:

# chown novodono arquivo


# chgrp novogrupo arquivo
O comando chown tambm permite alterar dono e grupo de uma s vez:

#chown novodono:novogrupo arquivo


As permisses de um arquivo tambm podem ser alteradas atravs do comando chmod
(change mode). Cada uma das nove permisses (ler, escrever e executar; para o dono, para o
grupo e para os outros) pode ser individualmente concedida ou negada com esse comando.
A seguir, so apresentados alguns exemplos de uso do comando chmod.

# chmod +r arquivo (concede acesso de leitura ao arquivo, ao dono,


ao grupo e aos outros.)
# chmod go-w arquivo (nega acesso de escrita aos membros do grupo
e aos outros.)
possvel utilizar uma sintaxe alternativa para o comando chmod, com uma codificao que
utiliza trs nmeros na base octal (de 0 a 7). Cada nmero octal corresponde a um conjunto
rwx, que de acordo com a sua posio pode representar as permisses do dono (primeiro
conjunto), do grupo (segundo conjunto) e dos outros (terceiro conjunto). Cada um desses
nmeros octais corresponde a trs bits, sendo o primeiro deles associado permisso de
leitura, o segundo permisso de escrita e o terceiro permisso de execuo. Se o bit tiver
o valor 0, indica ausncia de permisso e, se tiver o valor 1, indica a presena da permisso.

Introduo ao Linux

A codificao completa na base octal tem os seguintes significados:

48

Modo octal

Modo binrio

Tipo de permisso

000

Sem permisso.

001

Permisso de execuo.

010

Permisso de escrita.

011

Permisso de escrita e execuo.

100

Permisso de leitura.

101

Permisso de leitura e execuo.

Tabela 3.1
Sintaxes do
comando chmod.

Modo octal

Modo binrio

Tipo de permisso

110

Permisso de leitura e escrita.

111

Permisso total (leitura, escrita e execuo).

O exemplo a seguir mostra o comando chmod com a sintaxe que utiliza a base octal:

# chmod 764 arquivo


7: permite acesso leitura, gravao e execuo do arquivo pelo seu dono.
6: permite acesso leitura e gravao do arquivo pelo grupo.
4: permite somente leitura para os outros usurios.

Correspondentes binrios:
11 Cada dgito binrio corresponde a uma letra: r, w e x:
0: indica ausncia da permisso.
1: indica concesso da permisso.
11 So trs nmeros octais, correspondentes a trs dgitos binrios (0=000 a 7=111). Um
nmero para o dono, um para o grupo e um para outros. Exemplo:

# chmod 764 arquivo


22 Onde: 7 permite leitura, escrita e execuo (rwx) para o dono (u), 6 permite leitura
e escrita (rw) para o grupo (g) e 4 permite leitura (r) para os outros (o).
A Figura 3.6 mostra as sintaxes padro e octal, com seus respectivos correspondentes binrios.
6
110
Figura 3.6
Sintaxes do
comando chmod.

rwx rw- r-111


7

100
4

Caso haja uma tentativa de um usurio acessar um arquivo para realizar determinada ao,
mesmo ele pertencendo ao grupo ou sendo dono do arquivo, se ele no tiver permisso
para realizar a ao pretendida, receber a mensagem access denied (acesso negado).

Tabela 3.2
Permisses
de acesso para
arquivos
e diretrios.

Modo

Operao permitida em diretrio

Operao permitida em arquivo

Listar contedo do diretrio.

Ler o contedo do arquivo.

Criar ou remover diretrios e arquivos


dentro do diretrio.

Alterar o contedo do arquivo.

Acessar arquivos e subdiretrios


dentro do diretrio.

Executar o arquivo.

Permisses:
11 Dono (owner): proprietrio do arquivo.
11 Grupo (group): grupo primrio do dono do arquivo.
11 Outros (others): outros usurios que no so donos e que no fazem parte do grupo.

Captulo 3 - Organizao do Linux

A Tabela 3.2 mostra as permisses ou modos de acesso para arquivos e diretrios.

49

Comandos para manusear permisses:

# chown novodono arquivo (muda o dono do arquivo)


# chgrp novogrupo arquivo (muda o grupo do arquivo)
# chmod ugorwx arquivo (muda as permisses do arquivo)

Exerccio de fixao 4 e
Atributos e permisses de arquivos
Que permisso est sendo concedida ao dono, usurio e grupo em relao aos arquivos abaixo?
11 Chmod 750 atividade1
11 Chmod 000 atividade2
11 Chmod ug-x atividade3
11 Chmod o+x atividade4
11 Chmod 680 atividade5
Especifique os tipos de arquivos seguintes, suas permisses e sintaxes no padro octal:
11 brwxr-x-wx

root

aluno

arquivo1

11 c---rw---x

aluno

aluno

arquivo1

11 -------rwx

root

aluno

arquivo1

11 lrwxrwxrwx

root root arquivo1

11 drw-rw----

root

root

arquivo1

11 c---------

root

root

arquivo1

11 srwx----wx

root

root

arquivo1

11 pr-xr-xr-x

root

aluno

arquivo1

Operaes com arquivos e diretrios


Existem diversos comandos que so utilizados para trabalhar com arquivos e diretrios.
Esses comandos realizam funes de cpia, busca, remoo, entre outras. A seguir sero
apresentados os principais comandos de manipulao de arquivos e diretrios.
Para a criao de arquivos, existem diversas formas de se criar um arquivo no Linux.
Veremos algumas dessas formas.

Redirecionamento de entrada e sada


O Linux possui um dispositivo padro de entrada e outro de sada, que so

respectivamente o teclado e o monitor.


11 Os sinais < e > redirecionam a entrada e a sada padro para um novo arquivo.

Introduo ao Linux

11 O comando ls pode ter sua listagem redirecionada da sada padro (o monitor) para o

50

novo arquivo listadearquivos, criando o arquivo se ele no existir.

# ls > listadearquivos
Toda vez que executamos um comando, digitamos as opes e parmetros por intermdio
do teclado e ento recebemos sua resposta no monitor. O Linux possui um dispositivo
padro de entrada e outro de sada, que so respectivamente o teclado e o monitor.

Podemos redirecionar, ou seja, alterar a entrada ou a sada padro dos comandos utilizando os sinais < e >, respectivamente. Essa caracterstica do Linux conhecida como
redirecionamento de entrada e sada. Dessa forma, os dados provenientes da entrada
padro (o teclado) podem ser direcionados para outro tipo de sada, como um arquivo
existente ou um novo arquivo que ser criado. Podemos, por exemplo, criar um arquivo
que contenha a listagem de todos os arquivos do diretrio home do usurio. Para isso,
devemos executar o seguinte comando no diretrio home desse usurio:

# ls > listadearquivos
O comando ls lista todos os arquivos do diretrio, redirecionando essa listagem da sada
padro (o monitor) para o novo arquivo listadearquivos, criando o arquivo no diretrio home
do usurio. Na verdade, podemos criar arquivos utilizando diversos comandos, simplesmente
redirecionando a sada padro para um novo arquivo. Podemos utilizar o comando cat para
concatenar dois arquivos existentes e gerar um novo arquivo, como no exemplo:

# cat arquivo1 arquivo2 > arquivonovo


O comando criar o
arquivo
arquivonovo

, com o contedo do
arquivo1 seguido

do contedo do arquivo2. A maneira mais simples de criar um arquivo de texto redirecionar a


entrada do teclado para o arquivo, atravs do comando cat:

# cat > arquivo.txt


Aps o comando, todo o texto digitado ser armazenado no arquivo, pois como a entrada
no foi especificada, esta continua sendo a padro, ou seja, o teclado. Para encerrar a execuo do comando, basta finalizar a digitao e teclar Ctrl+D duas vezes ou teclar Enter e
Ctrl+D.
Podemos utilizar o comando cat para a concatenao de arquivos existentes, gerando

um novo arquivo:

# cat arquivo1 arquivo2 > arquivonovo


A maneira mais simples de criar um arquivo de texto redirecionar a entrada do teclado
para o arquivo, por meio do comando cat:

# cat > arquivo.txt


Para terminar a execuo do comando, tecle Ctrl+D duas vezes ou Enter e Ctrl+D.

Utilizando o comando touch


O comando touch utilizado para atualizar os horrios de acesso e de modificao de

um arquivo existente. Caso esse arquivo no exista, ser criado na data e hora especifi-

# touch [opes] arquivo


Se no forem especificadas a data e a hora, o sistema utilizar a data e a hora atuais.
Tambm possvel criar arquivos vazios atravs do comando touch, utilizado normalmente
para atualizar os horrios de acesso e de modificaes de um arquivo existente. Caso esse
arquivo no exista, ser criado na data e hora especificadas pelo comando:

# touch -[opes] arquivo


Se no forem especificadas a data e a hora, o sistema utilizar a data e hora atuais.

Captulo 3 - Organizao do Linux

cadas no comando, cuja sintaxe :

51

Exerccio de fixao 5 e
Criando arquivos
1. Qual a diferena entre os sinais > e >> utilizados no redirecionamento?
2. Qual a diferena entre os sinais < e >?
3. Qual a diferena entre os comandos touch e cat na criao de arquivos?

Utilizando editores de texto


Podemos criar arquivos ao editar um arquivo inexistente, por intermdio de editores de

texto do Linux como o vi e o Emacs.


Outra forma de criao de arquivos por meio da utilizao de editores de texto, como o vi
e o Emacs. Dessa forma, ao editar um arquivo inexistente, estaremos criando esse arquivo
e seu contedo, utilizando facilidades
de edio

providas pelos editores. Estudaremos detalhadamente esses editores de texto no Captulo 5.

Criando diretrios
11 Quando o usurio faz login no sistema, ele automaticamente direcionado ao seu

diretrio home, onde possui permisso para criar seus arquivos e diretrios.
11 A separao dos arquivos em seus diretrios home facilita aos usurios encontrarem
os seus arquivos e mant-los protegidos de outros usurios.
Para a criao de diretrios, utilizado o comando mkdir.
Quando o usurio faz login em um sistema Linux, ele automaticamente direcionado para
o seu diretrio home, onde tem permisso para criar arquivos e diretrios. Essa separao
dos arquivos de cada usurio em seus diretrios pessoais facilita o usurio a encontrar os
seus arquivos e mant-los reservados, protegidos dos demais usurios e de outros grupos
de usurios, ao qual ele no pertence. Para a criao de diretrios, utilizado o comando
mkdir, cuja sintaxe :

# mkdir -[opes] nome ou caminho completo do diretrio


Para criarmos uma pequena rvore de diretrios, como, por exemplo, os diretrios /home/
aluno/documentos e /home/aluno/documentos/planilhas, podemos trabalhar de duas formas.
A primeira criando um a um os diretrios da hierarquia, como mostra o exemplo:

# mkdir documentos
# cd documentos (direciona para o novo diretrio criado)
# mkdir planilhas
A segunda forma feita utilizando um nico comando. Para gerar a hierarquia dos diretrios
e subdiretrios, devemos digitar o nome do diretrio, incluindo os diretrios de hierarquia
Introduo ao Linux

superior utilizando a opo -p do comando mkdir, que cria os diretrios recursivamente,

52

como no exemplo:

# mkdir -p documentos/planilhas

Para criar um caminho na rvore de diretrios, podemos trabalhar de duas formas

diferentes. Criando um a um os diretrios, como no exemplo:

# mkdir documentos
# cd documentos (direciona para o novo diretrio criado)
# mkdir planilhas
Ou criando os diretrios recursivamente, utilizando um nico comando:

# mkdir -p documentos/planilhas

Exerccio de fixao 6 e
Criando diretrios
Qual a diferena entre os comandos mkdir e mkdir p?

Copiando arquivos e diretrios


A cpia de arquivos pode ser necessria por diversos motivos, como, por exemplo, para
transportar uma cpia de um arquivo para outro computador utilizando um pen drive ou
para fazer cpias de segurana dos arquivos de um diretrio, ao recomendvel para a
preveno contra problemas que possam ocorrer no disco rgido. A cpia de arquivos pode
ser feita com o comando cp, cuja sintaxe :

# cp -[opes] origem destino


A origem o caminho completo ou relativo (caso o arquivo esteja no diretrio corrente) do
arquivo
ou dos arquivos que sero copiados e o destino o caminho completo ou relativo do local para onde ser gerada a cpia do arquivo e o nome que este ter no destino.
Pode-se omitir o nome, se quisermos manter o mesmo nome da origem. Para copiar diretrios, deve ser utilizada a opo -r do comando cp, que faz cpias recursivas. A seguir so
apresentados alguns exemplos de uso do comando cp.

# cp /home/aluno/documento.txt /tmp
# cp /home/aluno/documento.txt /tmp/documento2.txt
# cp -r /home/aluno /tmp
Se o diretrio corrente for /home/aluno, o caminho relativo pode ser utilizado:

# cp documento.txt /tmp
Se, ao contrrio, estivermos localizados no diretrio de destino (/tmp), o comando pode ser

# cp ../home/aluno/documento.txt .
O comando de cpia exige que sempre sejam definidas a origem e o destino, mesmo de
forma simplificada. Caso contrrio, ser exibida uma mensagem de erro. Pode-se utilizar,
tambm, os caracteres curinga * e ? sem aspas. Dessa forma, todos os arquivos que
atenderem especificao mltipla sero copiados. O comando do exemplo abaixo copia
todos os arquivos que tm seus nomes comeando pela palavra planilha do diretrio
/home/aluno para o diretrio /tmp.

# cp /home/aluno/planilha* /tmp

Captulo 3 - Organizao do Linux

simplificado utilizando o caractere . (ponto), que significa o diretrio corrente:

53

A cpia de arquivos possui diversas utilidades, como transportar arquivos entre compu-

tadores utilizando uma mdia removvel, gerar cpias de segurana, entre outras. Sintaxe
do comando de cpia:

# cp [opes] origem destino


A origem e o destino devem ser obrigatoriamente informados. Caso contrrio, ser
exibida mensagem de erro.
Exemplos de uso:

# cp /home/aluno/documento.txt /tmp
# cp /home/aluno/documento.txt /tmp/documento2.txt
# cp -r /home/aluno /tmp
# cp ../home/aluno/documento.txt .
# cp /home/aluno/planilha* /tmp

Removendo arquivos e diretrios


11 O comando rm utilizado para remover arquivos do sistema

11 O nome do arquivo pode conter todo o caminho na estrutura hierrquica ou s o


nome do arquivo, se este estiver no diretrio corrente. Podem tambm ser utilizados
caracteres curinga.
11 Nem sempre ser solicitada, pelo sistema, a confirmao do usurio para a execuo
da remoo.
11 Para a remoo de diretrios, deve ser utilizada a opo -r do comando rm ou o
comando rmdir caso o diretrio esteja sem nenhum contedo.
O comando utilizado para remover arquivos o rm e as mesmas regras vistas para o
comando cp, se aplicam ao comando rm, cuja sintaxe :

# rm -[opes] arquivo
Onde o nome do arquivo pode conter os diretrios do caminho na estrutura hierrquica at
o local do arquivo, seguido do nome do arquivo. A remoo de arquivos deve ser feita com
ateno, pois nem sempre ser solicitada, pelo sistema, a confirmao do usurio para a
execuo da remoo. Da mesma forma que, para a cpia, a remoo de todos os arquivos,
inclusive os diretrios, pode ser feita utilizando o comando rm com a opo -r. Diretrios
sem contedo tambm podem ser removidos com o comando rmdir.

Exerccio de fixao 7 e
Removendo arquivos
11 O que faz o comando rm rif ?

Introduo ao Linux

11 Qual a diferena entre os comandos rmdir e rm rf ?

Movendo arquivos e diretrios


O comando mv pode ser utilizado de duas formas: para mover arquivos da origem
para o destino ou para renomear arquivos, trocando apenas seu nome, mantendo-o
no diretrio original.
Sintaxe do comando mv:

# mv [opes] origem destino


54

Exemplos de uso:

# mv /home/aluno/documento.txt /tmp
# mv /home/aluno/documento.txt /home/aluno/documento2.txt
O comando mv pode ser utilizado de duas formas: para mover arquivos da origem para
o destino ou para renomear arquivos, trocando apenas seu nome, mantendo-o no diretrio original. As mesmas regras vistas para os comandos cp e rm tambm se aplicam ao
comando mv, cuja sintaxe :

# mv -[opes] origem destino


Para mover o arquivo documento.txt do diretrio /home/aluno para o diretrio /tmp,
devemos executar o comando:

# mv /home/aluno/documento.txt /tmp
Para renomear o arquivo documento.txt para documento2.txt, devemos executar o
comando:

# mv /home/aluno/documento.txt /home/aluno/documento2.txt

Exerccio de fixao 8 e
Renomeando arquivos
O comando mv tambm serve para renomear arquivos?

Listando arquivos e diretrios


O comando ls utilizado para a visualizao de arquivos. As regras utilizadas nos

comandos anteriores tambm podem ser aplicadas ao comando ls. Sua sintaxe :
11 # ls [opes] arquivo
Uma das opes mais utilizadas pelo usurio a opo -l, para listar arquivos e diretrios no formato longo, com os seguintes detalhes:
11 Tipo do arquivo, permisses, nmero de links, dono do arquivo, grupo do arquivo,
tamanho em bytes, data da ltima alterao e nome.
22 Os comandos ll, dir e vdir tambm podem ser utilizados com pequenas diferenas
em relao ao comando ls.
O comando ls utilizado para listar arquivos e diretrios. Sua sintaxe :

Uma das opes mais utilizadas do comando ls a opo -l, que permite listar arquivos e
diretrios no formato longo, que exibe uma srie de informaes as respeito dos arquivos
listados, como: permisses de acesso, nmero de links, dono do arquivo, grupo do arquivo,
tamanho em bytes, data da ltima alterao e nome do arquivo. O comando ls tambm
pode utilizar as mesmas regras aplicadas aos comandos anteriores.
Existem variaes do comando ls que podem ser utilizadas com as mesmas funcionalidades.
Os comandos ll, dir e vdir tambm podem ser utilizados para listar arquivos. O comando ll
possui a mesma funo do comando ls com as opes -la. O comando dir possui a mesma
funo do comando ls utilizado sem opes. J o comando vdir possui a mesma funo

Captulo 3 - Organizao do Linux

# ls -[opes] [arquivo]

do comando ls utilizado com a opo -l. importante ressaltar que as mesmas opes do
comando ls podem ser utilizadas para os comandos ll, dir ou vdir.
55

Exerccio de fixao 9 e
Listando arquivos
O que significam as opes lat do comando ls?

Procurando arquivos e diretrios


O comando find procura o(s) arquivo(s) ou diretrio(s) desejado(s) no caminho fornecido

como parmetro. Sua sintaxe :


11 # find [caminho] [expresso]
11 O comando locate faz uma busca em um banco de dados que contm os arquivos
criados pelo usurio e lista aqueles que satisfaam ao padro desejado.
11 Esse comando permite acesso mais rpido a esses arquivos, contanto que no
tenham sido criados depois da ltima atualizao do banco de dados. Podemos forar
a atualizao desse banco de dados por meio do comando updatedb.
11 O comando locate tem sintaxe mais simples e procura o nome do arquivo isolado ou
como parte de um nome, como se houvesse caracteres-curinga antes e depois do
nome do arquivo. Para achar os arquivos books e school, podemos utilizar o comando:
11 # locate oo
O comando find utilizado para fazer buscas por arquivos e diretrios, fornecendo como
resultado o caminho completo para o(s) arquivo(s) e diretrio(s) encontrado(s). possvel,
tambm, utilizar caracteres-curinga para ampliar a pesquisa a um conjunto de nomes que
atendam a uma especificao mltipla. Formato do comando:

# find [caminho] [expresso]


Esse comando faz uma busca pela expresso definida como parmetro, em todos os
diretrios e subdiretrios especificados tambm como parmetros no campo caminho,
retornando os resultados da busca, caso existam. O comando find possui uma srie de funcionalidades: busca de arquivos sem dono, busca de arquivos com o bit SUID ativado, execuo de comandos sobre o resultado da busca, entre outros. Para mais detalhes a respeito
do comando find, sua pgina de manual pode ser consultada.
Podemos utilizar, ainda, o comando locate, que faz buscas por arquivos, consultando um
banco de dados que contm os arquivos criados pelo usurio. Esse comando permite acesso
mais rpido a esses arquivos, contanto que no tenham sido criados depois da ltima
atualizao do banco de dados. Para forar a atualizao desse banco de dados, utilizamos
o comando updatedb. O comando locate tem sintaxe mais simples e funciona como se houvesse caracteres antes e depois do nome do arquivo, isto , procura-se o nome do arquivo
isoladamente ou como parte de um nome. Por exemplo, para achar os arquivos books e
school, podemos utilizar o seguinte comando:

Introduo ao Linux

# locate oo

56

Navegando pela rvore de diretrios


O diretrio que fica no nvel hierrquico mais alto ou no topo da rvore de diretrios

o raiz /.
Cada caminho representado por uma sequncia nica de diretrios separados pelo caractere / (sem aspas), que o nome do caminho (path name). Existem dois tipos de caminhos:
11 Caminhos absolutos, iniciados no diretrio-raiz.
11 Caminhos relativos, iniciados no diretrio corrente (sem utilizar a barra inicial).
22 O Linux possui dois tipos especiais de nomes de diretrios: diretrio ponto ., que
significa o diretrio corrente, como vimos anteriormente, e diretrio dois pontos
.., que representa o diretrio um nvel acima do diretrio corrente. O diretrio
que fica num nvel imediatamente acima do corrente tambm chamado de
diretrio-pai (parent directory). Esses dois tipos especiais de diretrios so muito
utilizados para a navegao na estrutura de diretrios do Linux. Se o diretrio
corrente o /home/aluno, por exemplo, podemos fazer referncia ao diretrio /
home somente digitando ... Outro exemplo seria o caminho ../aluno/documentos,
que significaria o mesmo que /home/aluno/documentos.
Existem dois tipos especiais de nomes de diretrios utilizados para a navegao na
estrutura de diretrios do Linux:
11 Ponto (.), que representa o diretrio corrente.
11 Dois pontos (..), que representa o diretrio um nvel acima do diretrio corrente.
O caminho ../aluno/documentos significa o mesmo que /home/aluno/documentos.
O diretrio que fica um nvel imediatamente acima do diretrio corrente chamado de
diretrio-pai (parent directory).
Conforme vimos anteriormente, os diretrios do Linux so organizados hierarquicamente
numa estrutura do tipo rvore invertida. O diretrio que fica no nvel hierrquico mais alto
ou no topo da rvore de diretrios o diretrio-raiz, representado pela barra normal (/).
Essa forma de estrutura em rvore permite que possa haver arquivos ou diretrios com os
mesmos nomes, diferenciados pelo sistema como elementos distintos devido aos caminhos diferentes (paths) percorridos na estrutura. Cada caminho representado por uma
sequncia de diretrios separados pelo caractere / (sem aspas). Essa sequncia representa
o nome do caminho (path name) do arquivo ou diretrio.
Existem dois tipos de caminhos: os absolutos, que se iniciam sempre no diretrio-raiz, e os
relativos, que so baseados no diretrio corrente, em vez de se utilizar o diretrio-raiz como
incio do caminho. Diferentemente do caminho absoluto, sempre iniciado com /, o caminho
diretrio-raiz, passa a ser trabalhoso utilizar o caminho absoluto como identificador desse
diretrio. mais conveniente utilizar o caminho relativo.
Alm dessas facilidades, existem os comandos pwd e cd para a navegao nos diretrios.
O primeiro passo para navegar na estrutura saber o local onde estamos. O comando
pwd (print working directory) utilizado para mostrar o diretrio corrente, retornando o
caminho completo de identificao desse diretrio. O comando pwd um dos mais simples
do Linux, pois no tem opes nem entrada e s produz uma linha de sada. Outro comando
utilizado para navegao na rvore de diretrios o cd, que tem a funo de mudar a localizao do usurio para outro diretrio. No exemplo, o comando cd utilizado para navegar

Captulo 3 - Organizao do Linux

relativo nunca comea com /. Quando um subdiretrio est muitos nveis abaixo do

at o diretrio /home/aluno:
57

# cd /home/aluno

O comando pwd mostra o diretrio corrente e um dos mais simples, pois no tem

opes nem entrada e s produz uma linha de sada.


O comando cd utilizado para navegar pela rvore de diretrios. No exemplo abaixo, o
comando cd muda a localizao do usurio para o diretrio /home/aluno.

# cd /home/aluno

Empacotando e compactando arquivos e diretrios


O empacotamento de arquivos um recurso utilizado para fazer cpias de segurana
(backups) com mais rapidez, mas serve tambm para gerar pacotes de arquivos, transport-los entre dois computadores ou envi-los pela internet. O comando utilizado para
empacotar arquivos o tar, que pode empacotar um nmero praticamente ilimitado
de arquivos, gerando como resultado um nico arquivo cujo contedo o conjunto de
arquivos que foram empacotados. A sintaxe do comando tar mostrada a seguir:

# tar [-][opes] arquivo lista de arquivos


Onde arquivo o nome do arquivo tar, que ser criado, e lista de arquivos a lista de arquivos
e diretrios que sero empacotados. O comando tar tambm utilizado para desempacotar
arquivos. As opes -c e -x so utilizadas para empacotar e desempacotar arquivos, respectivamente. Se quisermos especificar o nome do arquivo que ser criado, devemos adicionalmente
utilizar a opo -f. O comando tar possui diversas opes, entre elas a opo -v, que faz com
que sejam listados os nomes dos arquivos que esto sendo empacotados ou desempacotados.
Os exemplos a seguir so as formas mais utilizadas do comando tar:

# tar -cvf backup.tar /home/aluno


(agrupa todos os arquivos do diretrio home do usurio aluno, empacotando-os no arquivo
backup.tar).

# tar -xvf backup.tar


(extrai todos os arquivos contidos no arquivo backup.tar para o diretrio corrente).
O comando tar utilizado para empacotar e desempacotar arquivos. Sua sintaxe :

# tar [][opes] arquivo lista de arquivos


O empacotamento de arquivos pode ser utilizado para fazer cpias de segurana
(backups), gerar pacotes de arquivos, transport-los entre computadores por intermdio
de mdias removveis ou envi-los pela internet.
Opes mais utilizadas do comando tar:
11 -c: empacotar arquivos.

Introduo ao Linux

11 -x: extrair os arquivos do arquivo compactado.

58

11 -f: especificar o nome do arquivo.


11 -v: listar o nome dos arquivos que esto sendo empacotados ou desempacotados.
Tambm possvel compactar os arquivos para transporte e armazenamento, gerando uma
cpia menor. Essa facilidade til, por exemplo, quando precisamos enviar o arquivo pela

internet. Os comandos gzip e bzip2 podem ser utilizados para compactar arquivos enquanto
os comandos gunzip e bunzip2 podem ser utilizados para descompactar arquivos. As sintaxes desses comandos:

# gzip [opes] [arquivo]


# bzip2 [opes] [arquivo]
# gunzip [opes] [arquivo]
# bunzip2 [opes] [arquivo]
O comando gzip gera um arquivo com o mesmo nome do arquivo original, incluindo a terminao .gz, enquanto o comando bzip2 inclui a terminao .bz2.
possvel utilizar os comandos gzip e bzip2 para descompactar arquivos, utilizando
a opod.

Uma opo muito utilizada empacotar e compactar arquivos simultaneamente, utilizando o


comando tar com a opo adicional -z (compactao com o comando gzip) ou com a opo -j
(compactao com o comando bzip2). Os exemplos a seguir mostram o uso do comando tar
fazendo compactao de dados utilizando os algoritmos dos comandos gzip e bzip2:

# tar -zcvf backup.tar.gz /home/aluno


# tar -jcvf backup.tar.bz2 /home/aluno

Existem dois comandos que podem ser utilizados para compresso de arquivos

(gzip e bzip2) e dois comandos que podem ser utilizados para descompresso de
arquivos (gunzip e bunzip2), com os formatos:

# gzip [opes] [arquivo]


# bzip2 [opes] [arquivo]
# gunzip [opes] [arquivo]
# bunzip2 [opes] [arquivo]
Os comandos gzip e bzip2 geram, como sada, arquivos com o mesmo nome do arquivo
original, incluindo respectivamente as terminaes .gz e .bzip2.
possvel ainda utilizar os comandos gzip e bzip2 para descompactar arquivos,
utilizando a opo d.

corrente. Se, no entanto, desejarmos transport-los para uma fita, supondo que seu
dispositivo esteja montado, deve-se especificar o caminho correspondente ao arquivo que
representa o dispositivo, como mostra o exemplo:

# tar -czvf /dev/st0 /home/aluno


Onde st0 o dispositivo correspondente unidade de fita.
Tambm possvel descompactar e desempacotar o arquivo simultaneamente, utilizando
as opes zxvf (compactao feita com o comando gzip) ou -jxv (compactao feita com o
comando bzip2) do comando tar, como os exemplos:

Captulo 3 - Organizao do Linux

Os arquivos gerados pela execuo dos comandos anteriores sero gerados no diretrio

59

# tar zxvf backup.tar.gz


# tar jxvf backup.tar.bz2

Para transportar o arquivo para uma fita, supondo que seu dispositivo esteja montado,

deve-se especificar o caminho correspondente ao arquivo que representa o dispositivo,


como mostra o exemplo:

# tar czvf /dev/st0 /home/aluno


Uma opo muito utilizada empacotar e compactar arquivos simultaneamente,
utilizando o comando tar com as opes -z(compactao utilizando o algoritmo do
comando gzip) ou -j (compactao utilizando o algoritmo do comando bzip2):

# tar zcvf backup.tar.gz /home/aluno


# tar jcvf backup.tar.bz2 /home/aluno

Exerccio de fixao 10 e
Pgina de manuais
Qual dos comandos a seguir podemos utilizar para localizar o diretrio no qual est armazenada a pgina de manual de um determinado comando no Linux?
a. which
b. w
c. slocate
d. whereis

Introduo ao Linux

e. man

60

Roteiro de Atividades 3
Atividade 3.1 Conhecendo os arquivos
Indique as letras que representam os seguintes tipos de arquivos:
Regular
Bloco
Socket
Pipe
Arquivos
Diretrios
Links simblicos

Atividade 3.2 Criando arquivos


1. Posicione-se em seu diretrio de trabalho e crie os arquivos exemplo1 e exemplo2 uti-

lizando comandos diferentes em cada caso. Ao criar um dos arquivos, entre com algumas
linhas de dados pelo teclado.
2. Faa com que o arquivo vazio fique igual ao arquivo com contedo.

Atividade 3.3 Criando diretrios e copiando arquivos


3. Crie o diretrio exemplos em um subdiretrio temp no seu diretrio home. Utilize

apenas um comando de criao para executar esta ao.


4. Mova os arquivos exemplo1 e exemplo 2 para o diretrio exemplos, deixando uma

cpia do segundo no diretrio de origem.

Atividade 3.4 Empacotando e compactando arquivos


5. Entre no diretrio temp/exemplos. Empacote e compacte os arquivos criados anteriormente

num arquivo chamado exemplos.tar.gz. Use um nico comando para efetuar esta operao.
6. Crie um diretrio chamado exemplos2 e mova o arquivo exemplos.tar.gz para o dire-

7. Entre no diretrio exemplos2, e com um nico comando, descompacte e desempacote

o arquivo exemplos.tar.gz.

Atividade 3.5 Removendo arquivos e diretrios


1. Aps o trmino das atividades, volte situao original e remova todos os elementos criados.

Captulo 3 - Roteiro de Atividades

trio exemplos2.

61

62

Introduo ao Linux

4
Utilizar o redirecionamento padro de arquivos de entrada, sada e erro, para arquivos
normais ou arquivos de dispositivos e criar funes a partir de uma sequncia de
comandos com a utilizao de canalizaes ou pipes.

conceitos

Entrada e sada padro de dados e sada padro de erros, pipes ou canalizaes e


comandos para manipulao de arquivos.

Entrada e sada padro de dados e sada padro de erros


11 Os programas utilitrios ou comandos do Linux desempenham funes simples e

bem definidas.
11 Os comandos obtm dados como entrada, executam o processamento desses dados
e fornecem resultados como sada.
11 No Linux, a entrada padro de dados o teclado, a sada padro de dados o monitor
e a sada padro de erros tambm o monitor.
Nesta sesso de aprendizagem veremos com mais detalhes alguns conceitos bsicos do
Linux, importantes para entendermos o funcionamento desse Sistema Operacional. Como
todos os elementos no Linux so representados por arquivos, necessitamos conhecer
tambm as formas de manipulao do contedo dos arquivos, assim como j vimos algumas
operaes no sistema de arquivos. A maior parte dos programas utilitrios do Linux desempenha uma funo simples e bem definida. Eles obtm dados como entrada, executam o
processamento desses dados e fornecem resultados como sada. Todo programa, quando
executado, possui uma entrada e uma sada de dados e uma sada de erros. No Linux, a
entrada padro de dados o teclado, a sada padro de dados o monitor e a sada padro
de erros tambm o monitor. A Figura 4.1 mostra a entrada e a sada padro de dados e a
sada padro de erros.

Captulo 4 - Desvendando o Linux

objetivos

Desvendando o Linux

63

Utilitrio
ou programa
do usurio

Entrada
padro

Sada
de erro
padro

Sada
padro

Figura 4.1
Entrada e sadas
padro.

Redirecionamento de entrada e sada


Para redirecionar arquivos padro, devemos usar combinaes de redirecionamentos

e descritores de arquivos. Os descritores de arquivos s so obrigatrios no redirecionamento de erros.


Os descritores de arquivo utilizados no redirecionamento so: 0 para o arquivo de
entrada padro, 1 para o arquivo de sada padro e 2 para o arquivo de erro padro.
Uma das facilidades que o Linux oferece a possibilidade de alterar a entrada e a sada
padro de dados, bem como a sada padro de erros. Essa caracterstica conhecida como
redirecionamento de entrada e sada. Por exemplo, suponhamos que um programa chamado
consulta solicite o nmero de um cliente como entrada e apresente seus dados como sada.
Normalmente, o programa receber a entrada de dados do teclado e exibir a sada na tela:

# consulta 12345
Cliente n:12345
Nome: Aluno1
Endereo: Av. Atlntica, 110
Cidade: Rio de Janeiro
Estado: RJ
O Linux oferece a possibilidade de alterar a entrada e a sada padro de dados, bem

como a sada padro de erros.


Exemplo: o programa consulta solicita o nmero de um cliente como entrada do teclado
e apresenta seus dados como sada na tela.
11 # consulta 12345

Introduo ao Linux

11 Cliente n.: 12345


11 Nome: Aluno1
11 Endereo: Av. Atlntica, 110
11 Cidade: Rio de Janeiro
11 Estado: RJ
Se o programa de consulta tiver de ser executado para uma lista de uma centena de clientes,
seria cansativo digitar os nmeros dos clientes um a um, como entrada do programa, o que
64

poderia, ainda, conduzir a erros de digitao. Alternativamente, a listagem dos nmeros dos
clientes pode ser colocada em um arquivo chamado nmeros, editando-o previamente, com
um dos utilitrios de edio de texto do Linux. Poderemos, ento, redirecionar a entrada padro
do comando consulta atravs do smbolo <, que significa a entrada padro do sistema:

# consulta < numeros


O caractere < instrui o interpretador de comandos (shell) a executar o programa consulta,
tornando sua entrada padro o arquivo nmeros, em vez do teclado, isto , redirecionando
a entrada do comando. Nesse caso, apareceria na tela uma lista com todos os dados de
todos os clientes, o que provavelmente encheria vrias telas ocasionando perda de informaes. Similarmente, em vez de utilizar a sada padro, podemos redirecionar os dados para
uma impressora utilizando o comando:

# consulta > /dev/lp


O caractere > instrui o shell a executar o programa consulta utilizando como sada padro
a impressora em vez do monitor de vdeo. Podemos, tambm, utilizar o redirecionamento
de entrada juntamente com o de sada:

# consulta < nmeros > clientes


A listagem dos nmeros dos clientes est no arquivo nmeros e a entrada-padro

do comando consulta ser redirecionada atravs do operador de redirecionamento


de entrada <:

# ./consulta < numeros


O caractere > instrui o interpretador de comandos (shell) a executar o programa
consulta utilizando como sada-padro a impressora, em vez do monitor de vdeo:

# ./consulta > /dev/lp


Podemos utilizar o redirecionamento de entrada juntamente com o de sada como
no exemplo:

# ./consulta < nmeros > clientes


A Figura 4.2 mostra como funciona o redirecionamento de entrada e sada. Os dados de
entrada so lidos do arquivo nmeros e os dados de sada so escritos no arquivo cliente.
Se o arquivo cliente no existir, ele ser criado com o comando do exemplo anterior. Caso
ele exista, seu contedo ser sobrescrito com os dados de sada do comando.

Entrada
padro

Figura 4.2
Redirecionamento
de entrada e sada.

Utilitrio
ou programa
do usurio
Sada
de erro
padro

Arquivo
clientes
Sada
padro

Captulo 4 - Desvendando o Linux

Arquivo
nmeros

65

Tambm possvel adicionar os dados de sada no final de um arquivo, acrescentando esses


dados ao contedo existente nesse arquivo. Para isso, devemos utilizar os caracteres >>. Para
o redirecionamento de entrada e sada de dados, podemos, opcionalmente, utilizar descritores
de arquivos, mas para o redirecionamento de sada de erro, o uso de descritores de arquivos
obrigatrio. Os descritores de arquivo utilizados no redirecionamento so: 0 para o arquivo de
entrada padro, 1 para o arquivo de sada padro e 2 para o arquivo de erro padro.

# comando < arquivo (redireciona a entrada padro lendo dados do arquivo.)


# comando 0< arquivo (redireciona a entrada padro lendo dados do arquivo.)
# comando > arquivo (redireciona a sada padro sobrescrevendo o arquivo.)
# comando 1> arquivo (redireciona a sada padro sobrescrevendo o arquivo.)
# comando >> arquivo (redireciona a sada padro anexando os dados no arquivo.)
# comando 2> arquivo (redireciona a sada de erro padro reescrevendo o arquivo.)
# comando 2>> arquivo (redireciona a sada de erro padro anexando os dados no arquivo.)
# comando > arquivo 2>&1 (envia a sada de erro padro reescrevendo o arquivo.)
# comando >> arquivo 2>&1 (envia a sada de erro padro anexando os dados no arquivo.)
No Captulo 3, vimos que uma das caractersticas do sistema de arquivos do Linux a
independncia de dispositivo e arquivo. Essa caracterstica, combinada com a capacidade de
redirecionamento de entrada e sada, cria uma ferramenta poderosa.

Pipe ou canalizao
Os utilitrios do Linux desempenham funes especficas. Tarefas mais complexas so

executadas pela combinao sequencial de utilitrios ou comandos.


Um pipe utilizado para executar uma sequncia de comandos, passando a sada de um
comando diretamente a outro comando, que a utilizar como entrada de dados.
Geralmente os utilitrios do Linux so desenvolvidos para desempenhar uma nica funo.
Tarefas mais complexas so executadas atravs da combinao sequencial de utilitrios,
com a sada de um servindo de entrada para o outro. Tal combinao possvel por meio da
facilidade de canalizao do Linux. Uma canalizao, mais conhecida como pipe, utilizada
para direcionar a sada de um comando para outro comando, que a utilizar como entrada
de dados. Essa funcionalidade especialmente til quando dois comandos so executados

Introduo ao Linux

em sequncia, como mostra a Figura 4.3.

Comando 1

Comando 2

Utilizando o exemplo anterior, vamos colocar os clientes em ordem numrica e mostrar suas
respectivas informaes por intermdio do programa consulta na tela do monitor.
Para executar estas duas funes, devemos executar os comandos:

66

Figura 4.3
Canalizao
ou pipe.

# sort numeros > temp (ordena os nmeros de identificao dos clientes em ordem crescente.)
# ./consulta < temp (lista os dados dos clientes, segundo a ordenao anterior.)
O mesmo resultado pode ser conseguido ao se utilizar uma canalizao ou pipe, que
representado pelo caractere |.

# sort nmeros | consulta


Exemplo: colocar os clientes em ordem numrica e mostrar suas informaes por meio

do programa consulta na tela do monitor. O comando sort utilizado para ordenar os


nmeros dos clientes em ordem crescente.

# sort numeros > temp


# ./consulta < temp
O mesmo resultado pode ser conseguido utilizando apenas uma linha de comando,
conectando os comandos atravs de um pipe:

# sort numeros | consulta


A Figura 4.4 mostra um diagrama funcional da linha de comando executada no exemplo
anterior. Com a funcionalidade
pipe
, o Linux permite que diversos comandos sejam conectados em uma sequncia conhecida como canalizao. Como no exemplo anterior, a sada
padro de cada comando canalizada para a entrada do prximo comando, exceto a ltima
que, nesse caso, mantida como a sada padro de forma que a listagem seja mostrada no
terminal de vdeo.

Redireciona
entrada
Sort

Consulta

O Linux manipula automaticamente o fluxo de dados de um programa para o outro, produzindo o mesmo efeito de uma execuo de um programa que contm vrias instrues.
Geralmente, os arquivos de sada intermedirios de uma canalizao no so utilizados fora
dela, pois os seus dados no so armazenados para serem utilizados por outros programas
ou pelo usurio. O sistema simplesmente descarta esses dados depois que a canalizao
terminou de ser executada. Para preservar a sada de um arquivo intermedirio no interior
de uma canalizao, para processamento posterior, podemos utilizar o comando tee como
parte da canalizao. O exemplo abaixo mostra como funciona o comando tee, que copia
cada linha do arquivo de entrada para o arquivo de sada, passando todos os dados que
recebe do comando sort para o programa consulta, mas tambm copia sua sada para o
arquivo especificado como parmetro, que neste exemplo o arquivo temp.

# sort numeros | tee temp | ./consulta

Captulo 4 - Desvendando o Linux

Figura 4.4
Combinao de
comandos utilizando pipes.

Sada
padro

67

Exerccio de fixao 1 e
Comando sort
1. Qual a utilidade do comando sort?
2. Atravs da pgina de manual do comando, encontre a opo que organiza o arquivo com

base nas colunas.


3. Pesquise trs opes do comando sort.

Comandos para manipulao de arquivos


Neste tpico veremos alguns comandos que trabalham com arquivos. Esses comandos realizam funes de exibio, contabilizao e filtragem de dados. A seguir sero apresentados
em detalhes esses comandos.

Substituindo nomes de arquivos


Vimos que o comando mv serve para mover o arquivo da origem para o destino; na
verdade uma cpia destrutiva, porque retira o arquivo de seu local original e faz uma cpia
dele no local de destino, eliminando o arquivo do local de origem. O comando mv tambm
pode ser utilizado para mudar o nome de arquivos, quando o usurio desejar gerar uma
nova verso de um arquivo ou um novo arquivo que tenha um nome que o diferencie do
anterior. importante lembrar que o arquivo original no ser mantido aps ser renomeado. A sintaxe do comando mv :

# mv [opes] arquivo novo_nome_do_arquivo


O comando rename pode ser utilizado exclusivamente para renomear arquivos, mas com a
funcionalidade adicional de trocar partes de nomes, sendo muito til quando utilizado com
caracteres-curinga. No exemplo abaixo, as terminaes de todos os arquivos do diretrio
corrente so trocadas de .htm para .html.

# rename .htm .html *.htm

O comando mv move o arquivo da origem para o destino, fazendo uma cpia no local

de destino e eliminando o arquivo do local de origem. O comando mv tambm pode ser


utilizado para mudar o nome de arquivos. importante lembrar que o arquivo original
no ser mantido aps ser renomeado.
A forma do comando mv :

# mv [opes] arquivo_origem arquivo_destino


O comando rename pode ser utilizado exclusivamente para trocar os nomes de
arquivos, mas com a funcionalidade adicional de trocar parte de nome do nome dos
arquivos. O comando abaixo pode ser utilizado parar trocar as terminaes de todos os

Introduo ao Linux

arquivos do diretrio corrente de .htm para .html.

# rename .htm .html *.htm

Visualizando o contedo de arquivos


Vimos que o comando cat pode ser utilizado para criar um arquivo, mesmo sendo sua
funo principal a de concatenar arquivos. Como a sua sada padro a tela do monitor, ao
executar o comando a seguir, o contedo do arquivo ser mostrado na tela:

68

# cat arquivo
O resultado da concatenao ser o prprio arquivo, pois no h nenhum outro arquivo
especificado no comando para ser concatenado. O problema do comando cat que, se o
tamanho do texto contido no arquivo ultrapassar o nmero de linhas da tela do monitor,
ele continuar mostrando o arquivo at o final, sem pausas, de forma que a tela s pare de
rolar quando todo o contedo do arquivo for exibido. Logo, s sero mostradas na tela as
ltimas linhas do arquivo, e no veremos as linhas anteriores, ou melhor, elas sero mostradas rapidamente na tela, no havendo tempo reservado para a sua leitura. Para evitar o
problema de visualizao de arquivos maiores que o nmero de linhas da tela, devemos utilizar os comandos more ou less, que listam o arquivo dando uma pausa na listagem quando
ela preenche toda a tela, permitindo que se controle a exibio do contedo. A sintaxe
desses comandos pode ser vista abaixo:

# more [opes] [-num] [+/padro] [+nmero_da_linha] [arquivo]


# less [opes] [arquivo]
Utilizando o comando more, se o contedo do arquivo for maior que a quantidade de linhas do
monitor, ser exibida no final da tela a expresso --more--(x%), onde x representa a porcentagem do arquivo que j foi exibida, indicando que h mais texto a ser visualizado. Se pressionarmos a tecla Enter, o comando more mostrar mais uma linha do texto rolando a primeira
linha para cima na tela. Se quisermos mostrar mais uma tela inteira com as linhas seguintes do
texto, devemos pressionar a barra de espao. Podemos, dessa forma, controlar a exibio do
texto, passando-o linha a linha na tela ou paginando-o tela a tela. Para sair do comando more
antes de chegar ao fim do arquivo, podemos utilizar as teclas Ctrl+C ou a tecla q.
O comando less possui praticamente as mesmas funcionalidades do comando more,
s que mais recursos.

O comando cat tem a funo principal de concatenar arquivos, mas pode ser utilizado

para mostrar o contedo de um arquivo:

# cat [opes] [arquivo]


O comando cat no controla a exibio na tela, deixando-a rolar at o final do arquivo e
dificultando a sua visualizao.
Devemos utilizar os comandos more ou less, que do uma pausa na listagem quando ela
preenche toda a tela.

# more [opes] [+/padro] [+numero_da_linha] [arquivo]

Exerccio de fixao 2 e
Visualizando contedo de arquivos
Quais recursos o comando less possui a mais que o comando more?

Captulo 4 - Desvendando o Linux

# less [opes] [arquivo]

69

Contabilizando o contedo de arquivos


Podemos contabilizar os elementos contidos em um arquivo texto, que so os caracteres, as
palavras e as linhas de texto desses arquivos. Para isso, existe um utilitrio chamado wc, que
conta e imprime o nmero de caracteres, de palavras ou de linhas de um arquivo. A sintaxe
do comando :

# wc [opes] arquivo
Caso no seja especificado nenhum arquivo, o comando wc l a entrada padro. O comando
do exemplo a seguir lista o contedo do diretrio corrente e direciona a sua sada para a
entrada do comando wc que, com a opo -l, conta o nmero de linhas listadas pelo comando
ls l e fornece, como resultado, o nmero de arquivos e diretrios contidos no diretrio /etc.

# ls -l /etc | wc -l
Como a primeira linha da sada do comando ls l no um arquivo ou diretrio, devemos
descont-la do resultado. Veremos, nos prximos itens, comandos mais complexos, que permitem obter resultados exatos para a contagem de contedos. O comando wc tambm pode
ser utilizado para determinar que dois arquivos no so idnticos, mostrando que no tm o
mesmo nmero de linhas, palavras ou caracteres. No entanto, se tiverem nmeros idnticos
de linhas, palavras e caracteres, existe uma grande probabilidade de que sejam idnticos,
mas no h garantia total.
O comando wc conta e imprime o nmero de caracteres, de palavras ou de linhas

de um arquivo:

# wc [opes] [arquivo]
Opes do comando wc:
11 -l: conta o nmero de linhas do arquivo.
11 -w: conta o nmero de palavras do arquivo.
11 -c: conta o nmero de caracteres do arquivo.
Caso no seja especificado nenhum arquivo, o comando wc l a entrada padro. Se no
for escolhida uma opo, o comando wc conta e retorna todas as opes anteriores.

Exibindo o contedo inicial e final de arquivos


Para exibir o contedo inicial e final de arquivos texto, existem dois comandos: o head e o
tail, respectivamente. O comando head permite que visualizemos as primeiras linhas de um
arquivo. Sua sintaxe :

# head [opes] [arquivo1 arquivo2 ...]


Caso no seja especificado nenhum arquivo, o comando head l a entrada padro. Caso seja
especificado mais de um arquivo, cada um deles ter suas 10 primeiras linhas exibidas na

Introduo ao Linux

tela e seu contedo ser precedido pelo nome do arquivo como mostra o exemplo:

70

==> arquivo <==


A principal opo desse comando a que especifica o nmero de linhas iniciais que sero
listadas, como mostra o exemplo abaixo, que exibe as cinco primeiras linhas do arquivo
relatrio.txt:

# head -5 relatorio.txt

Se no for informado o nmero de linhas, o comando retornar as 10 primeiras linhas por


padro. O inverso do comando head o comando tail, que mostra as ltimas linhas de um
arquivo. Sintaxe do comando tail:

# tail [opes] [arquivo1 arquivo2 ...]


Por exemplo, se quisermos exibir as ltimas 15 linhas do arquivo relatrio.txt, devemos
digitar o comando:

# tail -15 relatorio.txt


Se no for especificado o nmero de linhas a serem exibidas, o comando retornar as
ltimas 10 linhas, por padro.
11 Para exibir o incio e o final do contedo de um arquivo, so utilizados os comandos

head e tail, respectivamente.


11 O comando head permite que visualizemos as primeiras linhas de um arquivo.
O comando do exemplo abaixo exibe as cinco primeiras linhas do arquivo relatrio.txt.

# head -5 relatorio.txt
11 O comando tail mostra as ltimas linhas de um arquivo. O comando do exemplo
abaixo exibe as ltimas quinze linhas do arquivo relatrio.txt.

# tail -15 relatorio.txt


11 Se no forem especificados os nmeros de linhas a serem exibidas, os comandos
head e tail retornaro as primeiras ou ltimas dez linhas, respectivamente.

Exerccio de fixao 3 e
Exibindo o contedo de arquivos
Que sadas sero mostradas com os comandos abaixo?
11 Ls -la .
11 Ls l ..
11 Ls l /etc/resolv.conf | wc l
11 Ls /etc | wc -c

Selecionando trechos de arquivos


A pesquisa e seleo de contedos de arquivos no Linux uma operao muito comum,
e pode ser utilizada para encontrar uma determinada informao. Vamos supor que
tenhamos de encontrar no arquivo de clientes do primeiro exemplo todos os clientes que
Linux que realizam a pesquisa de contedo, embora alguns sejam muito sofisticados para o
escopo deste curso introdutrio. Estudaremos o mais utilizado e que atende a maior parte
das necessidades comuns do usurio. O comando grep um utilitrio de seleo e pesquisa
de arquivos. A Figura 4.5 mostra o funcionamento do comando grep.

Captulo 4 - Desvendando o Linux

residam no mesmo estado, na mesma cidade ou na mesma rua. Existem vrios utilitrios do

71

Linhas
rejeitadas
Texto
original

GREP

Arquivos
de entrada

Linhas
escolhidas
Arquivo
de sada

Figura 4.5
Funcionamento do
comando grep.

Padres
O usurio especifica um padro que ser utilizado pelo comando grep para fazer a pesquisa nos arquivos de entrada. Esse utilitrio examina as linhas do arquivo, verificando se
cada uma contm o padro especificado. Quando o padro encontrado, a linha copiada
para o arquivo de sada, ou para a tela do terminal, se for utilizada a sada padro. Se a
linha no contm o padro, rejeitada, isto , no copiada no arquivo de sada.
Quando o comando grep termina de pesquisar os arquivos de entrada, o arquivo de sada
vai conter todas as linhas que contm os padres desejados. A sintaxe do comando grep :

# grep [opes] padro [arquivo]


Caso no seja especificado nenhum arquivo, o comando grep l a entrada padro (teclado).
Um exemplo de uso do comando grep pode ser conferido a seguir, onde utilizado para
selecionar somente os clientes que moram no Distrito Federal:

# cat clientes
12341 Aluno1 Rua Gois, 25 Planaltina DF
12342 Aluno2 Av. Beira Rio, 1005 Vitria ES

12343 Aluno3 Rua Guarani Campinas SP


12344 Aluno4 SQS 205 F 306 Braslia DF

Saiba mais

12345 Aluno5 Av. Atlntica, 110 Rio de Janeiro RJ

O utilitrio grep
tambm funciona
como um filtro de
canalizao. Quando
utilizado em uma
canalizao, seleciona
algumas sadas do
programa ou comando
anterior e envia o resultado para a entrada do
programa seguinte que
ir process-las.

12346 Aluno6 Av. Castro Alves, 320 Salvador BA


12347 Aluno7 Rua da Praia, 215 Porto Alegre RS
12348 Aluno8 Rua das Laranjeiras,1020 Rio de Janeiro RJ
# grep DF clientes
12341 Aluno1 Rua Gois, 25 Planaltina DF
12344 Aluno4 SQS 205 F 306 Braslia DF
Os padres utilizados pelo comando grep so chamados de expresses regulares. Podemos

Introduo ao Linux

utilizar caracteres especiais que do maior flexibilidade ao comando grep:

72

11 O comando grep utilizado para seleo e pesquisa de arquivos, por meio de um


padro especificado pelo usurio.
11 Quando o padro encontrado, a linha copiada para o arquivo de sada. Se a linha
no contm o padro, rejeitada.

11 Quando o comando grep terminar de pesquisar os arquivos de entrada, o arquivo

de sada conter todas as linhas que contm os padres desejados:

# grep [opes] padro [arquivo]


22 Se no for especificado nenhum arquivo, o comando grep l a entrada padro.
11 O utilitrio grep funciona tambm como um filtro de canalizao, selecionando
algumas sadas do comando anterior e enviando o resultado para a entrada do
comando seguinte.
11 Podemos usar caracteres especiais que do maior flexibilidade ao comando grep.
11 O caractere ponto (.) um caractere especial que permite encontrar padres com
qualquer caractere na posio determinada pelo ponto.
11 Caracteres entre colchetes [xyz] permitem achar o conjunto especificado de caracteres
na posio determinada pelos colchetes.
11 O caractere asterisco (*) permite achar qualquer nmero (inclusive zero) de ocorrncias
do caractere que o precede. Por exemplo, a expresso grep abc* pode selecionar linhas
que contm ab, abc, abcc, abccc, abcccc etc.
11 O caractere ^ seleciona as linhas que comeam com o padro sucedido por ele.
Por exemplo, a expresso grep ^Linux seleciona as linhas de um arquivo que
comeam com a palavra Linux.
11 O caractere $ seleciona as linhas que terminam com o padro precedido por ele.
Por exemplo, a expresso grep Linux$ seleciona as linhas de um arquivo que terminam com a palavra Linux.
O comando egrep (extended grep), como o prprio nome diz, aceita expresses regulares mais
elaboradas do que o comando grep. Podemos utilizar os seguintes caracteres especiais adicionais:
11 Nmeros entre chaves {n,m}, que permitem encontrar padres com n a m ocorrncias do
caractere que precede as chaves. Por exemplo, a expresso egrep abc{0,2} arquivo pode
selecionar ab, abc ou abcc. Deve-se utilizar sempre aspas simples ou duplas na expresso.
11 O caractere + permite encontrar uma ou mais letras entre os colchetes que o precedem,
concatenando-as com os caracteres que o sucedem. Por exemplo, a expresso egrep
[a-z]+ove permite achar move, aprove, love etc.
11 O caractere ? permite encontrar zero ou uma ocorrncia da letra que o precede.
Por exemplo, a expresso lo?ve permite encontrar love ou lve.
11 O caractere | permite encontrar expresses iguais s que o antecedem e s que o
sucedem. Por exemplo, a expresso egrep love|hate permite encontrar expresses que
contm as palavras love ou hate.

encontrar as palavras lovable ou lovely.


Existe ainda o comando rgrep, que permite estender a pesquisa de um padro de caracteres
recursivamente, ou seja, no diretrio corrente e em seus subdiretrios, e exibe no s a
linha procurada como tambm o nome do arquivo que contm a linha. Utilizando as opes
r e n no comando grep, obtm-se o mesmo resultado.
Outra alternativa ao comando grep o comando fgrep (
fixed grep
ou fast

grep
), que funciona similarmente ao comando grep, mas no reconhece nenhum caractere especial em
expresses regulares. Todos os caracteres representam apenas a si mesmos, no havendo

Captulo 4 - Desvendando o Linux

11 Caracteres entre parnteses (xyz), como por exemplo egrep love(able|ly), permitem

significados metafricos.
73

Outros comandos alternativos ao grep:


11 O comando egrep (extended grep) permite usar caracteres especiais adicionais aos
caracteres do comando grep.
11 O comando rgrep permite estender a pesquisa de um padro de caracteres recursivamente, ou seja, no diretrio corrente e em seus subdiretrios, exibindo no s a
linha procurada como tambm o nome do arquivo que contm a linha. A opo r, do
comando grep, possui a mesma funcionalidade do comando rgrep.
11 O comando fgrep (fixed grep ou fast grep) funciona similarmente ao comando grep,
mas no reconhece nenhum caractere especial em expresses regulares. Todos os
caracteres representam apenas eles mesmos, no havendo significados metafricos.

Comparao entre arquivos


O comando cmp compara os arquivos e mostra a posio em que aparece a

primeira diferena.
O exemplo a seguir compara dois arquivos que tm um caractere diferente na posio
17 da linha 10:

# cmp arquivo1 arquivo2


arquivo1 arquivo2 differ: char 17, line 10
Podemos comparar o contedo de arquivos e determinar quais so as suas diferenas,
se no possurem contedos idnticos. Uma necessidade de comparao surge quando
o usurio faz uma cpia do arquivo e quer verificar se essa cpia foi bem-sucedida. Um
dos comandos utilizados para a comparao entre dois arquivos o cmp, que compara os
arquivos e mostra a posio em que aparece a primeira diferena. A Figura 4.6 mostra como
o funcionamento do comando cmp.

Arquivo 1
de entrada

CMP

Localizao
das diferenas

Arquivo 2
de entrada

Por exemplo, se compararmos dois arquivos que possuem o 17 caractere diferente,


estando este localizado na linha 10, teremos a resposta:

Introduo ao Linux

# cmp arquivo1 arquivo2

74

arquivo1 arquivo2 differ: byte 17, line 10

Figura 4.6
Funcionamento do
comando cmp.

Outro comando utilizado para comparar arquivos o diff, que exibe as diferenas entre eles,
gerando uma lista de procedimentos que podem ser aplicados ao arquivo original, usando o
utilitrio patch, para tornar os arquivos idnticos. O comando diff possui mais recursos que o
comando cmp. A sada do comando diff uma lista de aes a serem editadas que, quando aplicadas ao contedo do primeiro arquivo, geram o arquivo editado. As aes a serem editadas
incluem adio de uma linha, eliminao de uma linha ou, ento, mudana em uma linha.
11 O comando diff gera aes que incluem adio de uma linha, eliminao de uma linha

ou mudana de uma linha.


11 O comando patch utilizado para ler a lista de aes geradas pelo diff e fazer as
devidas alteraes no arquivo original para deix-lo igual ao arquivo editado.
11 O comando diff pode ser muito eficiente para guardar diferentes verses do mesmo
arquivo, armazenando apenas as diferenas entre eles e, com isso, economizando
espao em disco.

Ordenao em arquivos
O comando sort obtm as linhas de um ou mais arquivos de entrada e produz um

arquivo de sada com as linhas em ordem classificada. Sintaxe do comando sort:

# sort [opes] [arquivo]


Cada linha de um arquivo de entrada tratada como campos, separados uns dos outros
por espaos, como se fossem colunas.
O contedo de um arquivo pode ser ordenado antes de ser processado. O comando sort
obtm as linhas de um ou mais arquivos de entrada e a seguir as processa, produzindo um
arquivo de sada que contm as linhas em ordem classificada. Sintaxe do comando sort:

# sort [opes] [arquivo]


O comando sort trata cada linha de um arquivo de entrada como uma srie de um ou mais
campos, separados uns dos outros por espaos, como se fossem colunas. O exemplo a seguir
lista o arquivo de entrada clientes com o primeiro campo em ordem numrica decrescente.

# sort -nr clientes


12348 Aluno8 Rua das Laranjeiras,1020 Rio de Janeiro RJ
12347 Aluno7 Rua da Praia, 215 Porto Alegre RS
12346 Aluno6 Av. Castro Alves, 320 Salvador BA
12345 Aluno5 Av. Atlntica, 110 Rio de Janeiro RJ

12343 Aluno3 Rua Guarani, 510 Campinas SP


12342 Aluno2 Av. Beira Rio, 1005 Vitria ES
12341 Aluno1 Rua Gois, 25 Planaltina DF

Captulo 4 - Desvendando o Linux

12344 Aluno4 SQS 205 F 306 Braslia DF

75

Se quisermos ordenar o arquivo por estado, deveremos utilizar o comando a seguir, que
ordena alfabeticamente pelo nmero da coluna especificada na opo -k:

# sort -k5 clientes


12345 Aluno5 Av. Atlntica, 110 Rio de Janeiro RJ
12341 Aluno1 Rua Gois, 25 Planaltina DF
12343 Aluno3 Rua Guarani, 510 Campinas SP
12346 Aluno6 Av. Castro Alves, 320 Salvador BA
12344 Aluno4 SQS 205 F 306 Braslia DF
12348 Aluno8 Rua das Laranjeiras,1020 Rio de Janeiro RJ
12347 Aluno7 Rua da Praia, 215 Porto Alegre RS

Introduo ao Linux

12342 Aluno2 Av. Beira Rio, 1005 Vitria ES

76

Roteiro de Atividades 4
Atividade 4.1 Pesquisando em arquivos
1. Copie ou crie o arquivo atividade, contendo as seguintes linhas:

abcdefghijklmUnixnopqrstuvwxyz
abcdefghiUnixjklmnopqrstuvwxyzUnix
abcdefghijklmnopqrstuvwxyzLinux
abcdefghijklmnopqrstuUnixvwxyz
Unixabcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzUnix
abcdefghijklmnopLinuxqrstuvwxyz
abcdefghUnixijklmnopqrstuUnixvwxyz
Supondo que voc no conhea o contedo do arquivo, mas imagina que deveria haver a
palavra Unix em todas as suas linhas, utilize uma linha de comando para mostrar na tela as
linhas, com seus respectivos nmeros, nas quais est faltando a palavra Unix; salve esse
resultado no arquivo chamado atividade_temp.

Atividade 4.2 Contabilizando arquivos


Utilizando o comando grep, encontre mais de uma forma de mostrar na tela o nmero de linhas
em que a palavra Unix aparece pelo menos uma vez no arquivo atividade (no mostrar as linhas).

Atividade 4.3 Controlando a exibio do contedo de arquivos


Utilizando uma canalizao, liste na tela do monitor a terceira e a quarta linhas do
arquivo atividade.

Atividade 4.4 Combinando comandos para criar novas funcionalidades


Utilizando o arquivo clientes, crie um comando utilizando os conceitos de canalizao e
redirecionamento que execute passo a passo a mesma funo do comando abaixo:

12348

Aluno8

R. das Laranjeiras, 1.020

Rio de Janeiro

RJ

12347

Aluno7

Rua da Praia, 215

Porto Alegre

RS

12346

Aluno6

Av. Castro Alves, 320

Salvador

BA

12345

Aluno5

Av. Atlntica, 110

Rio de Janeiro

RJ

12344

Aluno4

SQS 205 F 306

Braslia

DF

12343

Aluno3

Rua Guarani

Campinas

SP

Captulo 4 - Roteiro de Atividades

# sort -n clientes

77

12342

Aluno2

Av. Beira Rio, 1.005

Vitria

ES

12341

Aluno1

Rua Gois, 25

Planaltina

DF

Passo a passo significa que, a cada execuo do comando, uma linha ser colocada

Introduo ao Linux

em ordem. Aps cada comando, verifique a ordenao no arquivo clientes.

78

5
Conhecer as formas de entrar e sair do editor Vi, bem como seus comandos de
movimentao, insero e remoo de texto; salvar as modificaes e procurar
por padres de caracteres e palavras no texto.

conceitos

Processadores de texto e editores de texto.

Processadores de texto
Os processadores de texto oferecem suporte criao, edio e formatao de documentos
que suportam incluso de textos, tabelas, equaes cientficas, entre outros, utilizando um
conjunto de funcionalidades prprias. O Linux oferece um conjunto de ferramentas para
processamento de texto, com destaque para o Writer, do pacote Open Office.
As primeiras aplicaes do Unix foram as de criao de documentos de texto e de desenvolvimento de software, que exigiram o desenvolvimento de ferramentas eficientes de processamento de texto. As ferramentas de processamento de texto do Linux so uma famlia de
utilitrios que atuam em todas as fases de preparao de um documento.
Nesta sesso de aprendizagem, no abordaremos o uso de processadores de texto, destacando apenas alguns editores de texto mais utilizados do Linux, com destaque para o editor
Vi, que ser visto em detalhes.

Editores de texto
Os editores de texto so utilizados para a edio de arquivos que contenham somente texto,
sem qualquer tipo de formatao. Eles permitem a entrada, remoo ou substituio de
texto, alm de oferecer diversas funcionalidades: busca, correo de erros, cpia e colagem
de texto, entre outros
. Os editores de texto podem ser divididos em duas categorias: os editores de tela que exibem o texto na tela inteira e os editores de linha que exibem o contedo
do arquivo linha a linha. Esta sesso de aprendizagem ser baseada no editor de textos Vi,
que ser visto no prximo tpico. Por isso, no entraremos em detalhes no modo de utilizao dos outros editores apresentados a seguir.
11 Emacs: um editor de texto de tela cheia que foi desenvolvido por Richard Stallman, guru
e fundador da Free Software Foundation. O Emacs um poderoso ambiente de edio de

Captulo 5 - Edio de texto

objetivos

Edio de texto

textos, que inclui funes adicionais chamadas de extenses. Entre essas funes esto
79

o envio de e-mails de dentro do editor, a converso de dados de arquivos em outros formatos e at mesmo a compilao de programas editados pelo Emacs. Para abrirmos um
arquivo utilizando o editor Emacs, devemos utilizar o comando emacs, seguido do nome
do arquivo. Se o arquivo especificado na linha de comando no existir, ele ser criado.
Caso contrrio, o arquivo existente ficar disponvel para edio. Se o Emacs for aberto
em um ambiente grfico, como o GNOME ou o KDE, ser aberta uma janela com uma
interface baseada em menus. Para ativar uma das opes do menu, basta posicionar o
cursor do mouse e clicar sobre a opo. Sero exibidas ento as opes de cada menu.
11 Pico: o Pine Composer um editor de texto de tela cheia desenvolvido pela Universidade
de Washington, que parte integrante do programa cliente de e-mail Pine. Apesar disso,
o Pico pode ser utilizado para editar arquivos texto independentemente do Pine. O Pico
possui vrias funcionalidades, como busca de texto e verificador de erros, entre outras.
Para abrirmos um arquivo utilizando o editor Pico, devemos utilizar o comando pico,
seguido do nome do arquivo. Se o arquivo especificado na linha de comando no existir,
ele ser criado. Caso contrrio, o arquivo existente ficar disponvel para edio.
11 JOE: o Joes Own Editor um editor de texto de tela cheia criado por Joseph H. Allen em
1991 e distribudo pela GPL. O JOE possui uma srie de funcionalidades: um sistema integrado de ajuda, busca de texto, emulao de funcionalidades de outros editores, entre
outras. Para abrirmos um arquivo utilizando o editor JOE, devemos utilizar o comando
joe, seguido do nome do arquivo. Se o arquivo especificado na linha de comando no
existir, ele ser criado. Caso contrrio, o arquivo existente ficar disponvel para edio.
11 Ed: um editor de texto de linha criado em 1971, pelo criador do Unix, Ken Thompson.
Para abrirmos um arquivo utilizando o editor Ed, devemos utilizar o comando ed, seguido
do nome do arquivo. Se o arquivo especificado na linha de comando no existir, ele ser
criado. Caso contrrio, o arquivo existente ficar disponvel para edio. Quando um
arquivo aberto pelo Ed, por padro, a ltima linha do arquivo exibida, permitindo a

w
Saiba mais sobre os
editores de texto
Emacs (http://www.gnu.
org/software/emacs),
Pico (http://www.
washington.edu/pine/
man/#pico), Joe (http://
joe-editor.sourceforge.
net) e Ed (http://www.
gnu.org/software/ed/
ed.html).

insero de texto aps ela. Os comandos do Ed s afetam a linha que est sendo exibida
na tela, a no ser que outra linha, ou mesmo um conjunto de linhas, seja especificado.

Editor Vi
Visual Editor (Vi) um dos mais antigos editores de texto para sistemas Unix-like. Desenvolvido em Berkeley, passou a ser incorporado por padro s diversas verses do sistema
operacional Unix. O Vi possui uma interface bastante simples, sem os requintados recursos
de edio oferecidos pelos processadores de textos para ambientes grficos. Apesar de sua
simplicidade, o Vi oferece vrios recursos de edio de texto, dos simples aos mais sofisticados e largamente utilizado por administradores de sistema e programadores. Por esse
motivo, ser o editor que detalharemos nesta sesso de aprendizagem.
O Vi copia o contedo do arquivo de texto que est sendo editado para um buffer de edio
na memria principal, utilizando a tela do monitor de vdeo como uma janela para visualizao
deste buffer. A tela pode ser movimentada para cima ou para baixo mostrando outras linhas

Introduo ao Linux

do texto armazenado no buffer, possibilitando ao usurio a navegar por todo o arquivo.

80

Na Figura 5.1 vemos como a tela do terminal mostra o contedo do buffer. Para editar o
texto, o usurio simplesmente move o cursor pela tela, utilizando comandos de um s caractere ou utilizando as setas do teclado. Outros comandos de edio de texto so utilizados
para inserir, modificar e remover texto. O comando especifica se a alterao a ser executada
em um caractere, em uma palavra ou em uma linha. Os resultados de cada comando so
refletidos imediatamente no vdeo.

l
Saiba mais
O buffer nada mais
do que um local na
memria RAM para
onde copiado o contedo de um arquivo
quando este est
sendo editado.

Buer de edio

Janela

Monitor de vdeo
Os comandos do Vi permitem fazer mudanas em massa no documento inteiro ou em
partes dele. As alteraes realizadas so refletidas imediatamente no texto aps a execuo
de um comando.
O Vi copia o contedo de um arquivo de texto para o buffer de edio na memria principal

e utiliza a tela do monitor de vdeo como uma janela para a visualizao do buffer. A tela
pode ser movimentada para cima ou para baixo mostrando as demais linhas do texto.
Quando o Vi salva as alteraes realizadas, ele copia o texto editado no buffer para o
arquivo armazenado de forma permanente, substituindo o contedo anterior. O comando
vi utilizado para executar o editor Vi e sua sintaxe :

# vi [opes] [arquivo]
Se o nome do arquivo for omitido, o Vi abrir um novo arquivo sem nome no buffer de
edio, que ficar vazio, aguardando o usurio digitar seu texto. Os caracteres ~ na coluna
da esquerda da tela indicam que no h texto no arquivo, nem mesmo espaos em branco.
Na ltima linha da tela mostrado o nome do arquivo e informado se ele novo ou se j
existia. Caso o arquivo j exista, mostrado o seu nome, o nmero de linhas e o nmero
de caracteres que ele possui. Para sair do Vi sem salvar o arquivo editado, deve-se digitar
a tecla Esc para sair do modo de insero, digitar o comando :q! e em seguida teclar Enter.
Dessa forma, a ltima verso do arquivo preservada e as alteraes feitas so descartadas. O Vi, por padro, no permite a sada do editor com o descarte das alteraes feitas
no buffer. O ponto de exclamao aps o comando :q permite sair do Vi, mesmo que o
buffer tenha sido modificado.
O nome do arquivo deve ser nico dentro do seu diretrio. Um nome de arquivo pode incluir
qualquer caractere, exceto alguns caracteres especiais como /, * e &, entre outros. possvel
incluir espaos em um nome de arquivo digitando uma barra invertida (\) antes do espao.
Durante a edio de um texto, possvel sair do editor a qualquer momento, salvando as
modificaes realizadas e retornando ao prompt do Linux. O comando para sair do editor,
salvando as modificaes realizadas, ZZ (em maisculas). Tambm possvel sair do editor,
salvando as modificaes feitas, utilizando os comandos w e q, simultaneamente (:wq).
O comando :w utilizado para salvar as modificaes sem sair do Vi e o comando :q utili-

Captulo 5 - Edio de texto

Figura 5.1
Exibio do contedo do buffer.

zado para sair do editor desde que no tenha sido feita nenhuma modificao.
81

O comando vi inicia o editor Vi e sua sintaxe :

# vi [opes] [arquivo]
Para fechar o arquivo, existem algumas opes:
11 ZZ: salva as alteraes e fecha o arquivo.
11 :wq: salva as alteraes e fecha o arquivo.
11 :q!: sair do arquivo descartando as alteraes feitas.

Modos do editor Vi
Existem trs formas bsicas ou modos de trabalhar com o editor Vi.
11 Modo comando: quando se abre um arquivo para edio, o Vi entra no modo de
comando. Os comandos realizam diversas funes, como rolar atravs do texto, fazer
buscas por trechos do texto, apagar caracteres, palavras ou linhas, entre outros. Para
facilitar a execuo de comandos no Vi, pode-se ativar a exibio dos nmeros das linhas
do arquivo, atravs do comando :set number.
11 Modo de insero: esse modo utilizado quando se deseja inserir texto em um arquivo.
A mudana do modo de comando para o modo de insero feita por intermdio de uma
das opes:
22 i: entra no modo de insero de texto, comeando na posio atual do cursor.
22 a: entra no modo de insero de texto, comeando um caractere depois da posio
do cursor.
22 A: entra no modo de insero de texto, comeando no fim da linha onde est o cursor.
22 o: entra no modo de insero de texto, comeando uma linha abaixo da posio
atual do cursor.
22 O: entra no modo de insero de texto, comeando na posio atual do cursor e passando a linha atual uma linha para baixo.
22 s: entra no modo de insero de texto, substituindo o caractere da posio
atual do cursor.
22 cw: entra no modo de insero de texto, substituindo uma palavra a partir do caractere onde o cursor est posicionado. Outras variaes do comando c tambm podem
ser utilizadas para entrar no modo de edio. Essas opes de comando sero vistas
no tpico Substituindo texto.
Para sair do modo de insero, basta teclar Esc.
11 Modo de execuo: esse modo uma variante do modo de comandos do Vi, que
tambm permite a execuo de comandos do Linux sem precisar sair do editor Vi.
Os comandos do modo de execuo sempre comeam com dois pontos (:). Vrios
comandos de edio de arquivos do Vi tambm podem ser executados nesse modo. Para

Introduo ao Linux

executar comandos do Linux, deve-se digitar no prompt do Vi os caracteres :!, seguidos

82

pelo comando. Por exemplo, para conhecer a localizao do arquivo que est sendo
editado, deve-se executar o seguinte comando:

:!pwd

11 Modo de comando: quando se abre um arquivo, o editor entra no modo de comando,

que permite realizar funes como rolar atravs do texto, buscar por palavras, apagar
caracteres especficos, palavras ou linhas de texto, entre outras.
11 Modo de insero: a mudana do modo de comando para o modo de insero
feita por meio dos comandos i, a, A, o, A, O, s ou cw no modo de comando. Esse modo
utilizado quando se deseja inserir texto em um arquivo. Para retornar ao modo de
comando, basta teclar Esc.
11 Modo de execuo: este modo tambm permite a execuo de comandos do Vi.
Alm disso, permite a execuo de comandos do Linux dentro do editor Vi.

Movimentando o cursor
Teclas de movimentao do cursor:

11 h: move o cursor uma posio esquerda.


11 j: move o cursor uma linha abaixo.
11 k: move o cursor uma linha acima.
11 l: move o cursor uma posio direita.
As setas tambm podem ser utilizadas para movimentar o cursor.
No modo de comando, possvel posicionar o cursor em qualquer lugar do arquivo, o que
necessrio para fazer as modificaes, remoes ou cpias de texto, a partir da posio do
cursor. Existem comandos no Vi para mover o cursor, que permitem subir, descer, ir para a
esquerda ou para a direita, caractere por caractere; ir para frente ou para trs de bloco em
bloco de texto, como palavras, frases ou pargrafos; ir para frente ou para trs de tela em
tela, em um arquivo, entre outras. Os comandos abaixo podem ser utilizados para realizar
movimentos simples do cursor:
11 h: um espao esquerda.
11 j: uma linha abaixo.
11 k: uma linha acima.
11 l: um espao direita.
possvel, tambm, utilizar as teclas de setas para movimentar o cursor. Apesar de mostrar
melhor a direo de movimento, as setas no so suportadas por todos os terminais. Com
o tempo e a experincia, o usurio do Vi ver que muito prtico movimentar o cursor utilizando as teclas h, j, k e l, mantendo os dedos nas posies corretas do teclado. Utilizando as
teclas h ou l pode-se movimentar o cursor do incio ao final da linha. Ao chegarmos ao incio
ou ao fim de uma linha o cursor para de se mover, no permitindo a mudana de linha e, se
tentarmos avanar o cursor, um bip emitido, indicando que a ao no pode ser executada. Para mover o cursor uma linha abaixo ou acima, necessrio utilizar as teclas j ou k,
tindo mover o cursor acima da primeira linha ou abaixo da ltima linha do arquivo. Podemos
utilizar nmeros combinados com os comandos de movimentao, multiplicando a sua
ao, como no exemplo da Figura 5.2, onde o comando 4l move o cursor quatro posies
para a direita, executando a mesma ao que utilizar a tecla l quatro vezes.

Captulo 5 - Edio de texto

que tambm esto limitadas a movimentar o cursor dentro das linhas do texto, no permi-

83

Figura 5.2
Movimentando o
cursor.

A Figura 5.3 mostra os movimentos do cursor, de sua posio original (caractere s na


dcima stima coluna da terceira linha) para as posies marcadas pelos crculos, utilizando
diversos comandos do Vi.

Figura 5.3
Comandos de
movimentao do
cursor.

Alguns comandos de movimentao do cursor:


11 0: move o cursor para o incio da linha.
11 $: move o cursor para o final da linha.
11 w: move o cursor de palavra em palavra para a direita, contando smbolos e pontuaes
equivalentes a palavras.
11 W: move o cursor de palavra em palavra para a direita, sem contar smbolos e pontuaes.
11 b: move o cursor de palavra em palavra para a esquerda, contando smbolos e pontuaes equivalentes a palavras.
11 B: move o cursor de palavra em palavra para a esquerda, sem contar smbolos e pontuaes.
Para mover o cursor por blocos de texto como palavras, frases ou pargrafos, utilizam-se

os comandos:
11 0: move o cursor para o incio da linha.
11 $: move o cursor para o final da linha.
11 w: move o cursor uma palavra para a direita.
11 W: move o cursor uma palavra para a direita sem contar smbolos e pontuaes.
11 b: move o cursor uma palavra para a esquerda.
11 B: move o cursor uma palavra para a esquerda sem contar smbolos e pontuaes.
Quando salvamos um arquivo, o Vi mostra na parte inferior esquerda da tela o nome e o
nmero de linhas e de caracteres desse arquivo. importante saber que uma linha no
necessariamente limitada ao tamanho visvel na tela do monitor. Para finalizarmos uma linha
utilizando o Vi, devemos utilizar a tecla Enter no modo de insero. Se digitarmos caracteres
Introduo ao Linux

indefinidamente em uma linha, sem teclar Enter, o Vi considerar que estes caracteres formam

84

uma nica linha, mesmo que ela seja mostrada na tela como se fossem vrias linhas.

Editando texto
Comandos para edio de texto:
11 i: inserir texto.
11 a: anexar texto.

11 c: alterar texto.

11 d: remover texto.
11 x: remover texto.
11 y: copiar texto.
11 p: colar texto copiado ou removido.
Ao editarmos um arquivo, necessitamos fazer diversas operaes como insero, remoo,
substituio, entre outras. Os comandos a seguir so utilizados para realizar algumas das
mais comuns alteraes em um arquivo texto.
11 i: inserir texto.
11 a: anexar texto.
11 c: alterar texto.
11 d: remover texto.
11 x: remover texto.
11 y: copiar texto.
11 p: colar texto copiado ou removido.
A Figura 5.4 mostra um texto com diversos erros e as correes necessrias. O Vi permite
fazer essas correes no texto utilizando teclas bsicas de edio:

Figura 5.4
Comandos de
edio.

Substituindo texto
O comando c permite fazer alteraes utilizando combinaes de comandos de movimentao do cursor como pode ser visto nos exemplos:
cw: substituir uma palavra ou parte de uma palavra onde o cursor estiver posicionado. Se
at o fim da palavra. Por exemplo: para trocar fazer por fazendo, devemos posicionar o
cursor na letra r, digitar o comando cw e inserir as letras ndo.
cc: substituir a linha inteira onde o cursor est posicionado. Para executar esse comando, o
cursor pode estar posicionado em qualquer local da linha que ser substituda.
cb: substituir uma palavra ou parte de uma palavra onde o cursor estiver posicionado. Se o
cursor estiver posicionado no meio da palavra, ela ser substituda da posio do cursor at
o incio da palavra. Por exemplo: para substituir a palavra fazendo pela palavra trazendo,

Captulo 5 - Edio de texto

o cursor estiver posicionado no meio da palavra, ela ser substituda da posio do cursor

devemos posicionar o cursor na letra z, digitar o comando cb e inserir as letras tra.


85

c$: altera o texto da posio do cursor at o fim da linha.


c0: altera o texto da posio do cursor at o incio da linha.
O comando c permite fazer alteraes no texto mediante combinaes de comandos de

movimentao do cursor, como:


11 cw: altera o texto da posio do cursor at o fim da palavra.
11 cb: altera o texto da posio do cursor at o incio da palavra.
11 cc: permite substituir a linha inteira onde o cursor est posicionado.
11 c$: altera o texto da posio do cursor at o fim da linha.
11 c0: altera o texto da posio do cursor at o incio da linha.
Aps digitar o comando de alterao, podemos inserir qualquer texto sem limite de caracteres. A insero ou modificao de texto tambm pode ser feita com os seguintes comandos:
r: substituir o caractere onde o cursor est posicionado, sem sair do modo de comando.
Esse comando pode ter seu efeito multiplicado se for precedido por algum nmero. Por
exemplo, para substituir as prximas trs letras a contar da posio do cursor, o comando
3r deve ser utilizado. muito til para corrigir erros de digitao no texto, evitando o uso de
cw, que obriga a digitao de parte da palavra novamente.
s: substituir o caractere onde o cursor est posicionado, entrando automaticamente no
modo de insero. Esse comando pode ter seu efeito multiplicado se for precedido por
algum nmero. Por exemplo, para substituir as prximas trs letras a contar da posio do
cursor, o comando 3s deve ser utilizado. A diferena desse comando para o anterior que
ele entra no modo de insero, enquanto o outro permanece no modo comando.
C: substituir o texto de uma linha a partir da posio do cursor at o final da linha, funcionando da mesma forma que o comando composto c$.
R: substituir texto, de forma que cada caractere digitado se sobrepe ao caractere original.
Esse modo de substituio altera no mximo uma linha, substituindo caractere por caractere.
S: alterar linhas inteiras, removendo a linha independentemente de onde o cursor estiver
posicionado. O nmero que preceder esse comando determina quantas linhas sero substitudas. Para retornar ao modo comando, deve-se teclar Esc aps terminar a substituio.
~: alterar o caractere onde o cursor est posicionado de minscula para maiscula e vice-versa.
possvel, tambm, utilizar nmeros multiplicadores precedentes ao comando de modo
que altere vrios caracteres.
A insero ou modificao de texto tambm pode ser feita com os seguintes comandos:
11 r: substituir caracteres sem entrar no modo de insero.
11 s: substituir caracteres entrando automaticamente no modo de insero.
11 C: substituir o texto de uma linha a partir da posio do cursor at o final da linha.

Introduo ao Linux

11 R: substituir o texto, de forma que cada caractere digitado se sobrepe ao caractere

86

original. S pode substituir caracteres da linha corrente.


11 S: alterar linhas inteiras, removendo a linha onde o cursor estiver posicionado.
11 ~: alterar o caractere onde o cursor est posicionado de minscula para maiscula
e vice-versa.

Exerccio de fixao 1 e
Primeiro arquivo com Vi
Acesse o terminal e crie no diretrio home do seu usurio o primeiro arquivo chamado
Arquivo-1.txt. Escreva o texto abaixo tentando utilizar os atalhos citados.

Qual o seu nome?


- Meu nome Aluno.
Acesse o manual do editor Vi atravs do comando # man vi.

Removendo texto
11 dl: remove o caractere onde o cursor est posicionado.

11 dd: remove a linha corrente.


11 dw: remove uma palavra da posio do cursor em diante.
11 db: remove uma palavra da posio do cursor para trs.
11 d0: remove os caracteres de uma linha da posio do cursor at o incio da linha.
11 d$: remove os caracteres de uma linha da posio do cursor at o final da linha.
Com o comando d podemos remover qualquer texto no arquivo editado. Assim como o
comando c, o comando d, de remoo, necessita ser acompanhado de uma tecla que definir a abrangncia do texto que ser removido. A seguir so vistas as opes que podem ser
utilizadas com o comando d.
dl: remove o caractere onde o cursor est posicionado. possvel, tambm, utilizar nmeros
multiplicadores precedentes ao comando de modo que ele remova diversas linhas.
dd: remove a linha corrente. possvel, tambm, utilizar nmeros multiplicadores precedentes ao comando de modo que ele remova diversas linhas.
dw: remove uma palavra. O comando dw, executado no meio de uma palavra, remove
apenas a parte final dessa palavra. importante notar que o espao em branco aps a
palavra tambm removido.
de: remove os caracteres de uma palavra, mantendo o(s) espao(s) em branco aps a palavra.
dE: remove os caracteres at o final da palavra incluindo a pontuao, se houver.
db: remove os caracteres de uma palavra da posio do cursor at o incio da palavra.
d0: remove os caracteres de uma linha da posio do cursor at o incio da linha.

Rolagem do arquivo
11 Ctrl+F: rola a tela inteira para a frente no texto.
11 Ctrl+B: rola a tela inteira para trs no texto.
11 Ctrl+D: rola a metade da tela para a frente no texto.
11 Ctrl+U: rola a metade da tela para trs no texto.
11 Ctrl+E: rola a tela uma linha para cima.
11 Ctrl+Y: rola a tela uma linha para baixo.
11 zEnter: rola a linha corrente para o topo da tela.

Captulo 5 - Edio de texto

d$: remove os caracteres de uma linha da posio do cursor at o final da linha.

87

11 gg: move o cursor para a primeira linha do arquivo.

11 G: move o cursor para a ltima linha do arquivo.


Durante a insero de texto, quando chegamos ao final da ltima linha da parte inferior da
tela, a primeira linha da parte superior deixa de ser mostrada, todas as linhas sobem na tela
e uma nova linha passa a ser mostrada na posio da linha inferior. Essa movimentao
chamada de scrolling ou rolagem de tela. Alguns comandos para rolamento de tela:
Ctrl+F: rola a tela inteira para a frente no texto.
Ctrl+B: rola a tela inteira para trs no texto.
Ctrl+D: rola a metade da tela para a frente no texto.
Ctrl+U: rola a metade da tela para trs no texto.
Ctrl+E: rola a tela uma linha para cima.
Ctrl+Y: rola a tela uma linha para baixo.
zEnter: rola a linha corrente para o topo da tela.
gg: move o cursor para a primeira linha do arquivo.
G: move o cursor para a ltima linha do arquivo.
O comando z pode ser precedido pelo nmero da linha que ser utilizada no lugar da linha
corrente. Por exemplo, o comando 200zEnter rola a linha 200 do texto para o topo da tela, e
no a linha corrente. Existem outros comandos de rolagem alm dos comandos acima, que
podem ser consultados em guias de referncia do Vi na internet.
Se abrirmos o Vi no ambiente grfico, utilizando o Xterm, a exibio do texto do arquivo ser
feita dentro da janela do Xterm, que pode ou no estar ocupando toda a tela do monitor.
Quando o nmero de linhas do texto for maior que o nmero de linhas configurado na
janela, aparecero no lado direito da janela botes de scrolling. Esses botes permitem o
rolamento do texto, utilizando-se um mouse.

Comando de busca
11 O comando de busca o caractere /, que mostra uma barra na linha inferior da tela,

onde deve ser digitado o texto que ser o padro a ser procurado.
11 Este padro de busca pode ser uma palavra ou qualquer sequncia de caracteres.
Os espaos em branco tambm so considerados parte do padro.
11 O Vi inicia a procura do padro na posio do cursor, seguindo adiante no arquivo, e ao
chegar ao final volta ao incio do arquivo e continua a procura at a posio do cursor.
11 O cursor movido para a posio da primeira ocorrncia do padro procurado. Se
no h nenhuma ocorrncia do padro, a mensagem Pattern not found mostrada

Introduo ao Linux

na parte inferior esquerda da tela.


O comando de busca o caractere / que, quando teclado, mostra uma barra na linha inferior
da tela onde deve ser digitado o texto que se quer procurar. Esse padro de busca pode
ser uma palavra ou qualquer sequncia de caracteres. Os espaos em branco tambm so
considerados como parte do padro. O Vi inicia a procura do padro na posio do cursor,
seguindo adiante no arquivo e, ao chegar ao final, volta ao incio do arquivo e continua
a procura at a posio do cursor. Se o padro for encontrado, o cursor movido para a
posio de sua primeira ocorrncia.
88

Se no h nenhuma ocorrncia do padro, a mensagem Pattern not found mostrada na


parte inferior esquerda da tela. Na verdade, essa mensagem pode variar dependendo da
verso do Vi ou do Linux, mas o significado ser o mesmo.
Para realizar a procura no sentido inverso, voltando sobre o texto, devemos utilizar o
comando ?. Nesse caso, a pesquisa feita at o incio do texto e reiniciada no final, at
chegar posio do cursor. Os comandos a seguir podem ser utilizados para repetio da
ltima busca com o ltimo padro utilizado. Isso evita a digitao de todo o padro novamente, o que til para encontrar diversas ocorrncias repetidas de um mesmo padro.
n: repete a busca na mesma direo.
N: repete a busca na direo oposta.
/Enter: repete a busca adiante no texto.
?Enter: repete a busca voltando no texto.
Os comandos de repetio de busca permitem achar padres, realizar alteraes e iniciar
novas buscas, facilitando substituies em todo o texto. Pode-se combinar simultaneamente
o comando de busca com o de substituio para alterar todas as ocorrncias de uma palavra
por outra. O comando abaixo faz uma busca partindo da primeira linha (1) at a ltima ($) e
substitui as ocorrncias da palavra umapalavra pela palavra novapalavra.

:1,$s/umapalavra/novapalavra
11 Para realizar a procura no sentido contrrio, voltando sobre o texto, devemos utilizar

o comando ?.
11 Comandos para repetio em buscas:
22 n: repete a busca na mesma direo.
22 N: repete a busca na direo oposta.
22 /Enter: repete a busca adiante no texto.
22 ?Enter: repete a busca voltando no texto.
11 Combinando o comando de busca com o de substituio podemos, por exemplo, alterar
todas as ocorrncias de uma palavra por outra em todo o texto como no exemplo:

:1,$s/umapalavra/novapalavra

Exerccio de fixao 2 e
Busca no arquivo com Vi
Acesse o arquivo criado no exerccio anterior e teste os comandos de busca utilizando todos

Comandos combinados
Conhecemos, nos itens anteriores, algumas combinaes de comandos, utilizando tambm
nmeros multiplicadores. Na Tabela 5.1 so mostrados exemplos de combinaes possveis
de comandos e suas aes correlatas.

Captulo 5 - Edio de texto

os recursos citados.

89

Alterao

Remoo

Cpia

Do cursor a ...

cH

dH

yH

primeira linha da tela

cL

dL

yL

ltima linha da tela

c+

d+

y+

prxima linha

c5I

d5I

y5I

coluna 5 da linha corrente

c/padro

d/padro

y/padro

padro

cn

dn

yn

prximo padro

cG

dG

yG

ltima linha do arquivo

c13G

d13G

y13G

linha 13 do arquivo

Vimos que o Vi um editor simples, porm muito poderoso, que nos oferece grande
flexibilidade para a edio de textos. Entendemos, agora, porque um dos editores

Introduo ao Linux

preferidos dos administradores de sistemas Unix-like.

90

Tabela 5.1
Comandos
combinados.

Roteiro de Atividades 5
Atividade 5.1 Criando um texto no Vi
Crie o arquivo atividades utilizando o Vi contendo o seguinte texto:
Braslia tem caso suspeito de parasitose do peixe cru
BRASLIA A Secretaria de Sade do Distrito Federal detectou o primeiro caso suspeito de
difilobotrase, parasitose intestinal transmitida pela ingesto de peixe cru ou mal cozido, que
j atingiu pelo menos 27 pessoas em So Paulo nos ltimos doze meses. A possvel vtima,
uma mulher de 25 anos, teria se contaminado em outro estado. A vigilncia sanitria local
prometeu reforar os cuidados nas operaes de fiscalizao a estabelecimentos comerciais, pretendendo centrar as atenes na forma de armazenamento dos peixes.
A suspeita de contaminao foi notificada pela Secretaria de Sade local no ltimo dia 6. O laudo
do laboratrio contratado pela Secretaria est sendo aguardado para os prximos dias, com a
confirmao da presena do parasita no organismo da vtima. O infectologista Alexandre Cunha,
que atendeu a paciente, afirmou que fez uma anlise morfolgica do parasita encontrado em
amostra das fezes da vtima e constatou tratar-se do causador da difilobotrase.
Ainda no temos certeza da contaminao. Esse tipo de parasita no comum no Brasil.
Mas o congelamento do peixe de forma adequada impede a transmisso, explicou a diretora de vigilncia epidemiolgica local, Disney Antezana.
A Agncia Nacional de Vigilncia Sanitria (Anvisa) recomenda que se evite o consumo de
peixes crus ou se certifiquem de que o produto esteve congelado em pelo menos 20 graus
negativos por, no mnimo, sete dias. Para matar o transmissor, tambm possvel manter o
peixe em 35 graus negativos por 15 horas.
Carolina Brgido, O Globo
Os caracteres acentuados podem ser digitados sem acento, caso o sistema operacional no possua suporte acentuao.

Atividade 5.2 Usando recursos bsicos do Vi


Utilize os comandos bsicos do Vi, para realizar funes simples de cada vez em sequncia, ou

a. Pesquise o nmero de ocorrncias da palavra que.


b. Apague as linhas da posio do cursor at o final do arquivo.
c. Movimente a linha 2 para o final do texto.
d. Coloque o nome Anvisa em maisculas.
e. Apague os 15 primeiros caracteres da linha 3. Como essa ao poderia ser feita utilizando

outro comando?
f. Volte ao prompt do Linux sem salvar as modificaes no texto.

Captulo 5 - Roteiro de Atividades

seja, movimentao, insero, remoo ou busca, para executar as seguintes edies no texto:

91

Atividade 5.3 Combinando recursos do Vi


a. Encontre e altere as ocorrncias da palavra que, colocando-as em maisculas, execu-

tando uma combinao de comandos que faa esta ao de uma s vez.


b. Remova do quinto caractere da linha 1 at o final desta linha.
c. Substitua todos os espaos em branco do texto pelo caractere _.
d. Sem sair do Vi, informe quantos bytes tem o arquivo que est sendo editado.
e. Apague as cinco primeiras palavras da linha 1.
f. Volte ao prompt do Linux sem salvar as modificaes no texto.

Atividade 5.4 Execuo de comandos diversos


a. Executando um comando de movimentao, v para a linha 3 e apague as linhas 3 e 4.
b. Mova as linhas da posio atual do cursor at a ltima linha para o incio do texto.
c. Desfaa as duas ltimas alteraes.
d. Refaa somente a ltima alterao.
e. Copie as duas primeiras linhas e cole-as no fim do arquivo.
f. Volte ao prompt do Linux sem salvar as modificaes no texto.

Atividade 5.5 Execuo de comandos avanados


a. Abra o arquivo atividades, de forma que o cursor fique posicionado na linha 3.
b. Utilize um nico comando para apagar todas as linhas do texto que no possuam

a palavra Anvisa.
c. Salve o arquivo com o mesmo nome no diretrio /tmp.
d. Remova todas as linhas que contenham a palavra peixe, utilizando um nico comando.
e. Sem sair do arquivo atividades, abra na mesma janela do Vi o arquivo /etc/profile.

Introduo ao Linux

f. Volte ao prompt do Linux salvando as modificaes feitas no arquivo atividades.

92

6
Conhecer o funcionamento do Shell e aprender a lidar com seus processos.

variveis e noes de Shell Script.

conceitos

Shell, gerenciamento, criao e execuo de processos, ambientes e suas

Noes bsicas
Shell um ambiente de interpretao de comandos. Ele a ponte entre o usurio e o
sistema operacional, ou seja, atravs dele que o usurio requisita aes ao sistema,
utilizando-se
de comandos. Podemos observar a atuao do Shell quando abrimos um terminal ou console e executamos comandos como ls, cat, touch, mkdir, cp, rm, mv etc.
A interao do usurio com o Shell adquire a forma de um dilogo. Primeiramente, o Shell
solicita uma entrada ao usurio, mostrando um prompt na tela do terminal. Assim que um
comando digitado, o Shell o executa. Este comando pode fazer parte de seus comandos
internos (built in) ou ser algum outro comando/programa do sistema operacional. Quando a
tarefa do comando foi completada, o Shell, uma vez mais, solicita nova entrada ao usurio,
mostrando novamente o cursor, de modo que se possa continuar digitando comandos
e interagindo com o Shell. A Figura 6.1 mostra a sequncia de passos em um dilogo do
usurio com o Shell:

Captulo 6 - Shell

objetivos

Shell

93

Login
(acesso)

Shell
pede um
comando

O usurio
digita o
comando

Shell faz
executar o
comando

O usurio
interage com
o utilitrio

Shell
pede novo
comando

O usurio
digita Ctrl-D

Figura 6.1
Dilogo do usurio
com o Shell.

Logout
(sada)

O Shell to poderoso que suporta vrias funcionalidades como:

11 Redirecionamento de entrada e sada de aplicaes, como por exemplo:

# ls /home > saida


11 Execuo de sequncias de comandos:

# cat /etc/passwd | grep root


11 Escrita na sada padro ou redirecionada.

# echo Este um curso de Introduo ao Linux.


11 Automatizao de sequncias de comandos (programao).
Ele possui ainda uma poderosa ferramenta de programao, permitindo a automatizao de
tarefas complexas por usurios ou administradores. A no ser que seja feito um redirecionamento, a entrada padro do Shell o teclado e a sada o monitor. Podemos fazer com que
o Shell escreva qualquer coisa na sada padro, ou sada redirecionada, atravs do comando
echo. Essa informao pode ser, por exemplo, um texto:

# echo Este um curso de Introduo ao Linux

O uso das aspas opcional. No entanto, convenciona-se us-las para indicar ao Shell
que no necessrio interpretar aquele contedo, basta mostr-lo na sada desejada. Essa conveno ser obrigatria em outras ocasies.
Cada conta de usurio, quando criada, recebe um Shell padro, atravs do qual aquele
usurio far a interao, em modo texto, com o Sistema Operacional. Para o Linux, so
vrios os Shells disponveis. Os mais comuns so os da famlia Bourne Shell, dentre eles o
Introduo ao Linux

Bourne Shell (sh) e o Bourne Again Shell (bash). O bash o mais usado nas distribuies Linux.

94

H ainda os da famlia C Shell, como o csh, que possui suporte computao numrica,
bastante deficitrio na famlia Bourne, mas com a desvantagem de ter uma sintaxe parecida
com a linguagem C, no muito fcil de ser utilizada. A diferena entre os diversos Shells existentes est basicamente nas funcionalidades incorporadas e na sintaxe dos comandos, que
podem ser simples ou mais complexas.

Para saber qual Shell est configurado para o seu usurio, basta verificar no arquivo
/etc/passwd. E para saber os Shells que esto disponveis no seu Linux, basta verificar
o arquivo /etc/shells. Este curso focado no Shell bash.

Gerenciamento de processos
O que um processo?

11 Um programa em execuo.
Durao de um processo:
11 Enquanto houver instrues para serem executadas.
Recursos e gerenciamento:
11 Os processos utilizam recursos como processador e memria, e so organizados e
gerenciados pelo Sistema Operacional.
Processo INIT:
11 Processo pai de todos os outros processos.
Escalonamento:
11 Baseado em time-sharing.
Um processo um programa em execuo. A vida de um processo comea no incio de um
programa e dura enquanto as instrues do programa continuarem a especificar novas operaes. Quando o programa chega ao final, isto , o sistema operacional termina a execuo
de suas instrues, o processo relativo a este programa morre.
O processo utiliza recursos do computador, como processador e memria, para realizar
suas tarefas. de responsabilidade do sistema operacional organizar e gerenciar todos os
processos. Quando o sistema iniciado, a funo start kernel cria o processo nmero zero,
que uma thread que gerar todos os demais processos. Esta funo chama a funo init,
que ser o processo nmero um. O processo INIT ser o pai de todos os processos e um dos
ltimos a morrer.

O conceito de thread est associado s mquinas multiprocessadores e atividades


concorrentes. Usualmente definido como um fluxo de controle no interior de um
processo. Quando dois processos compartilham as mesmas estruturas, eles atuam
como se fossem diferentes threads no interior de um nico processo. No Linux,
threads e processos so tratados da mesma forma.

O gerenciamento de processos permite a estruturao dos programas executados pelo


sistema. Quem decide que processo deve ser executado a cada momento o escalonador. Ele
faz isso de forma que no seja desperdiado tempo de hardware, garantindo a eficincia do
sistema. O escalonador do Linux baseado em time-sharing, ou seja, o tempo do processador
dividido em fatias de tempo (quantum) em que so alocados os processos. Se durante a exeatravs das regras de escalonamento, que se baseiam nas prioridades atribudas a cada
processo. Como o quantum bastante pequeno, tem-se a impresso de que o sistema operacional executa vrios processos ao mesmo tempo, caracterstica chamada de multitarefa.

Captulo 6 - Shell

cuo de um processo esgota-se o quantum, um novo processo selecionado para execuo,

95

Requisies feitas pelos processos ao Sistema Operacional:

11 Criar processos, gerenciar memria, ler e escrever arquivos etc.


11 Exemplos: fork, exec, exit, kill.
11 As chamadas de sistema alteram o ciclo normal de vida de um processo.
Como feito o controle de um processo?
11 Atravs de caractersticas como estado, prioridade de execuo, recursos de memria etc.
11 O processo identificado pelo PID e PPID (processo-pai que o criou).
11 # ps -f (visualiza essas informaes)
Existem diversas chamadas de sistema no Linux que alteram o ciclo normal de vida de um
processo. As chamadas de sistema so requisies feitas pelos processos ao sistema operacional por recursos aos quais ele no consegue acessar. As chamadas so usualmente para
criar processos, gerenciar memria, ler e escrever arquivos e fazer entrada e sada. Esto
entre as mais comuns: fork, exec, exit, kill.
O controle dos processos feito atravs de um conjunto de caractersticas como proprietrio do processo, seu estado (se est em espera, em execuo etc.), prioridade de execuo
e recursos de memria. Para que se viabilize o controle, cada processo identificado com
um nico nmero chamado de process identifier ou PID. Cada processo possui um processo-pai (exceto o processo init), que o PID do processo que o criou, chamado de parent
process identifier ou PPID. O comando # ps -f permite visualizar esses nmeros.
Permisses controladas pelo UID e GID:

11 Root UID = 0
11 Para usurio ter privilgios de root GID = 0
11 Visualizados no arquivo /etc/passwd.
22 Ex: root:x:0:0:root:/root:/bin/bash - os nmeros so UID e GID, respectivamente.
O controle das permisses dos processos funciona usando a mesma lgica. Os administradores do sistema atribuem nmeros para os usurios (user identifier ou UID) e para
grupos (group identifier ou GID), quando so criadas as contas de usurio. O sistema usa
o UID e o GID de um usurio para recuperar informaes de sua base de dados, relativas
aos privilgios permitidos para o usurio. O usurio de maior privilgio o root, tambm
conhecido como superusurio, que tem o UID igual a 0 (zero) em uma escala que vai alm de
65 mil, dependendo do sistema operacional. O usurio root usualmente o administrador
do sistema, possuindo plenos poderes. Cada processo pertence a um usurio e tambm
pertence ao seu grupo. Para fazer com que um usurio tenha os mesmos privilgios que o
root, necessrio que o GID dele seja 0. No arquivo /etc/passwd possvel visualizar o UID
(primeiro nmero que aparece) e o GID (segundo nmero) de cada usurio criado; se no for
especificado, o sistema operacional cria um grupo para cada usurio.

Introduo ao Linux

Criao de processos

96

Os processos so criados a partir de outros processos (processos-pai).


11 Processo inicial INIT.

A criao se d atravs de:


11 Duplicao de um processo j existente.
22 Operao fork-exec.
22 Execuo concorrente.
22 fork duplica o processo.
22 exec substitui o cdigo antigo pelo novo no processo criado.
No Linux, somente o processo INIT criado a partir do zero. Todos os demais processos so

criados a partir dele. A criao de um processo baseada em uma operao do tipo fork-exec,
na qual um processo j existente se duplica atravs de uma chamada de sistema chamada
fork, e em seguida substitui seu cdigo por outro, atravs da chamada de sistema exec, permitindo que o cdigo do filho seja executado sem que o cdigo dele seja prejudicado.
Isso acontece quando digitamos um comando no Shell. O bash, no nosso caso se duplica
usando fork e ento chama o exec para sobrepor sua memria com os contedos do
comando solicitado. Essa combinao permite que os processos gerados sejam concorrentes, ou seja, executem de forma independente uns dos outros. A Figura 6.2 ilustra
outro exemplo tpico, no qual um programa de menu oferece uma opo de trs telas
de entrada de dados. Quando o usurio faz uma seleo, o programa de menu bifurca
um processo-pai que executa o programa escolhido, e o programa de entrada de dados
roda at a sua concluso. Enquanto isso, o programa de menu pode ser usado para outra
opo, o que gera uma nova bifurcao.

Processo 1
executando
programa menu

EXEC

Processo 1
executando
programa menu

RK

FO

Figura 6.2
Execuo
concorrente.

Processo 2
executando
programa menu

EXEC

Processo 2
executando
a opo 1

No fork, o PID de cada um dos processos clonados diferente. No entanto o PPID igual
(observe a rvore hierrquica dos processos e seus PIDs via comando # pstree p). No exec, como
ele faz simplesmente uma sobreposio de contedo, os PIDs dos dois processos so iguais.
Existe ainda a funo clone, semelhante fork, mas com algumas caractersticas diferentes.
Da mesma forma, possvel executar processos de forma sequencial, sem que haja uma
bifurcao ou duplicao de cdigo. Atravs da chamada de sistema exec, o kernel carrega o
novo programa na memria e inicia a execuo do novo processo especificado pelo exec.
Este novo programa comea a execuo no mesmo ambiente do seu predecessor.
Os arquivos abertos pelo programa anterior permanecem abertos para o novo processo,
que tambm retm as identidades do usurio e do grupo de usurios. A Figura 6.3 mostra
executada usando-se exec.

Figura 6.3
Execuo sequencial.

Processo
imprime o
Relatrio 1

EXEC

Processo
imprime o
Relatrio 2

EXEC

Processo
imprime o
Relatrio nal

Captulo 6 - Shell

um exemplo simples de como a sequncia de programas de impresso de relatrio pode ser

97

O primeiro processo imprime o relatrio antes de exec executar o segundo programa de


impresso de relatrio. O segundo programa acrescenta seus relatrios, chama o terceiro
programa para imprimir o relatrio final e, finalmente, fecha os arquivos e termina o processo. As chamadas exec so usadas muito similarmente ao encadeamento de programas.
A funo exec faz com que o processo por ele chamado substitua o processo em
execuo. Assim, qualquer sequncia que houver neste processo aps o comando
exec no ser executada.

Processos em background e daemons


Daemon um processo executado em background.

11 Geralmente no tem tempo de vida definido.


Tarefas nas quais os daemons so usados:
11 Paginao de memria.
11 Solicitaes de login.
11 Manipulao de e-mails.
11 Transferncia de arquivos.
11 Coletas de estatsticas de operaes do sistema.
11 Solicitaes de impresso.
Quando um comando digitado pelo usurio por intermdio da entrada padro (o teclado),
o Shell solicita ao kernel do sistema operacional a execuo deste comando, aguarda pela
sua finalizao e exibe o resultado do comando na tela, voltando a aguardar a entrada de
novos comandos. Quando a entrada e sada padro so o teclado e o terminal de vdeo, o
usurio pode terminar a execuo de um comando digitando o caractere de interrupo,
por default Ctrl-C ou ^C. Este tipo de execuo de processo pelo Shell chamado de foreground ou em primeiro plano. Pode-se tambm executar o mesmo processo em background ou em segundo plano, de forma que o usurio no precisa ficar aguardando pela
finalizao do processo para entrar com um novo comando, pois o prompt automaticamente liberado para a entrada de novos comandos. Utiliza-se o caractere & para a execuo
de um comando em background. A sintaxe utilizada a seguinte:

# comando &
A execuo de um comando em background permite ao usurio executar outros comandos
simultaneamente. Estes comandos so executados imediata e independentemente de j
haver um processo em execuo. Outra vantagem utilizar a execuo em background para
realizar tarefas demoradas, como a impresso de arquivos extensos ou a execuo de sort
ou find em arquivos grandes, ou ainda programas que sero executados por algum tempo
como, por exemplo, um navegador web, um editor de textos etc.

Introduo ao Linux

Entretanto, deve-se tomar cuidado ao rodar scripts em background, pois a sada continua

98

a ser a padro, e podem aparecer resultados do programa na tela, atrapalhando a visualizao de outras tarefas do usurio. recomendvel que a sada do processo em background
seja redirecionada para um arquivo, usando a seguinte sintaxe:

comando >arquivo 2>&1 &

[1] pid

Desta forma, toda a sada-padro e a sada de erros sero redirecionadas para o arquivo.
O nmero do processo correspondente mostrado logo a seguir. Este nmero pode ser
usado para finalizar o processo ou monitor-lo. Quando o processo termina, uma mensagem mostrada assim que pressionamos uma tecla qualquer, geralmente a tecla Enter. A
mensagem tem a seguinte forma:

[1]+ Done comando

11 Cron: usado para programar tarefas.

11 Editando o crontab do usurio, possvel programar tarefas.

# crontab -e
11 Na ltima linha do arquivo programa-se o comando. Exemplo:

03 17 * * * cp /etc/passwd /home/USER/passwd
11 Onde 03 so os minutos e 17, a hora.
Um daemon um processo executado em background e normalmente no tem tempo de
vida definido, podendo ser executado por tempo indeterminado. O sistema operacional
Linux utiliza muitos daemons para realizar rotinas e tarefas, como a paginao da memria,
as solicitaes de login, a manipulao de e-mails, a transferncia de arquivos, a coleta de
estatsticas de operao do sistema e as solicitaes de impresso.
Um daemon interessante o cron. Ele acorda uma vez por minuto para ver se existe
algum trabalho a ser feito. Caso exista, ele o faz. Depois volta a dormir at o momento
da prxima verificao.
Para programar as tarefas que devem ser realizadas pelo cron, basta editar o crontab do
usurio atravs do comando:

# crontab e
E seguir a sintaxe especificada no prprio arquivo, agendando minutos, horas, dias, ms,
dia da semana e tarefa a ser executada (lembre-se de deixar uma linha em branco no final
do arquivo, para garantir que o ltimo comando seja lido). Assim, possvel automatizar
qualquer tarefa, como um backup, por exemplo.

Para ver as tarefas agendadas utilize o comando # crontab l. Se o agendamento no


funcionar, reinicie o cron com o comando # sudo restart cron.

Sinais do sistema
Um sinal uma notificao de software enviada por um processo ou pelo sistema opera-

11 ABRT: aborta o processo.


11 INT: sinal de Ctrl+C.
11 Outro processo pode usar o sinal para realizar alguma ao, se ele ativar seu manipulador de sinais.
Alguns sinais so gerados por comandos no Shell. Exemplo:

Captulo 6 - Shell

cional relativo a um evento ocorrido. Sinais so usados para passar informaes.

# kill -9 pid
99

11 Usado para terminar a execuo de um processo.

Para manter a execuo de um processo aps o logout:

# nohup arquivo
11 A sada do arquivo redirecionada para o arquivo nohup.out no diretrio home
do usurio.
Os processos concorrentes so de natureza assncrona, ou seja, no h uma ligao necessria entre a execuo destes processos. Alguns processos podem necessitar de informaes sobre o estado de outros processos que esto sendo executados simultaneamente.
Para passar informaes entre processos, so utilizados sinais; um sinal uma notificao
de software enviada por um determinado processo ou pelo sistema operacional, relativo a
um evento neles ocorrido. Outro processo pode utilizar este sinal para realizar uma ao.
O tempo de vida de um sinal o intervalo entre sua gerao e seu envio. Um sinal que foi
gerado, mas no foi enviado, um sinal pendente. Um determinado processo recebe um
sinal se tiver ativado um manipulador de sinais, quando o sinal for enviado. Um programa
ativa um manipulador de sinais atravs de uma chamada de sistema com o nome do
programa do usurio. Um processo pode temporariamente bloquear o recebimento de um
sinal, de forma que este sinal bloqueado no afete a execuo do processo, mesmo que seja
enviado. Bloquear um sinal diferente de ignorar um sinal. Quando um processo bloqueia
um sinal, o sistema operacional no envia o sinal at que o processo o desbloqueie. De outra
forma, um processo pode ignorar um sinal em vez de bloque-lo; neste caso, o processo
manipula o sinal recebido e o descarta, sem utiliz-lo. Na Tabela 6.1 so apresentados
alguns desses sinais.
Alguns sinais tambm so gerados por comandos no Shell, como o comando kill, utilizado
quando queremos terminar um processo. Ele utiliza o nmero associado ao processo para
termin-lo. A sintaxe do comando :

# kill pid
Aps a digitao, ao teclar Enter, a seguinte mensagem ser mostrada informando que o
processo foi terminado:

[1]+ Terminated process


Se nenhuma mensagem de indicao de finalizao do processo for mostrada, aguarde um
minuto, pois a terminao do processo pode estar sendo realizada. Caso haja demora excessiva, pode-se executar outra forma do comando kill:

# kill -9 pid
[1]+ Killed process
Este comando far com que a terminao do processo seja realizada de maneira imediata,

Introduo ao Linux

enquanto outros processos em background continuam a ser executados aps o logout.

100

Sinal

Exemplo

ABRT

Aborta o processo.

ALRM

Sinal do temporizador da chamada de sistema alarm.

CHLD

Termina, interrompe e continua o processo-filho.

CONT

Continua a execuo do processo interrompido.

Exemplo

FPE

Sinaliza erro em operao aritmtica, como a diviso por zero.

ILL

Indica instruo invlida.

INT

Sinal de Ctrl-C.

KILL

Indicao de processo terminado, que no pode ser ignorada.

PIPE

Sada de um pipe no recebida.

SEGV

Referncia de memria invlida.

STOP

Sinal de interrupo de processo de execuo.

TERM

Sinal de trmino de processo.

TSTP

Interrompe a digitao de caracteres no terminal.

TTIN

Processo em background aguardando entrada do terminal.

TTOU

Processo em background aguardando sada do terminal.

URG

Dados de alta prioridade disponveis em um socket.

Para manter a execuo de um processo aps o logout, deve ser usado o comando nohup:

# nohup arquivo
Este comando executa o arquivo de forma que no seja encerrado com a sada da sesso de
trabalho. A sada do arquivo redirecionada para o arquivo nohup.out no diretrio home do
usurio, o que muito til, por exemplo, quando se quer executar programas longos, e h
necessidade de se ausentar e terminar a sesso.

Visualizao de processos
Quando um processo est sendo executado, podemos usar o seu nmero de identifi-

cao para verificar o estado da sua execuo por meio do comando ps.

# ps
# ps aux
# ps l
11 Lista de informaes: UID, PID, PPID, PRI, STAT, TIME, COMM, CPU, TTY, INTPRI, SZ e
WCHAN.
11 Usado tambm em canalizaes para produo de filtros.

# ps aux | grep mozilla


Quando um processo est sendo executado, podemos usar o seu nmero de identificao
para verificar o estado da sua execuo por meio do comando ps. O comando ps sozinho,
sem argumentos, mostra apenas os processos associados ao usurio. J o comando ps aux
mostra todos os processos em execuo no sistema no momento, inclusive os daemons.
Outra opo o comando ps l, que retorna uma longa lista associada a cada processo,
incluindo as seguintes informaes:
11 UID identificador do usurio dono do processo.
11 PID identificador nico associado a cada processo.

Captulo 6 - Shell

Tabela 6.1
Sinais do sistema.

Sinal

101

11 PPID identificador nico associado ao processo-pai do processo em questo.


11 PRI prioridade do processo; programas de prioridade mais alta conseguem mais rapidamente a ateno da CPU.
11 STAT situao atual ou estado do processo, com as seguintes opes:
O no existente;
I processo intermedirio;
R executando (running);
S dormindo (sleeping);
W em espera (waiting);
Z processo terminado;
T processo parado (stopped).
11 TIME tempo decorrido, desde a emisso do comando que deu origem ao processo at o
momento de emisso do comando em minutos e segundos.
11 COMM nome do comando submetido pelo terminal especificado no parmetro TTY.
11 CPU porcentagem de utilizao da CPU pelo processo.
11 TTY terminal TTY ao qual foi submetido o comando que deu origem ao processo.
11 INTPRI prioridade do processo internamente ao kernel.
11 SZ tamanho em kilobytes (1.024 bytes) da imagem do processo no kernel.
11 WCHAN evento sob o qual o processo est aguardando, quando est nos estados de
espera (W) ou dormindo (S).
O comando ps tambm pode ser executado em canalizaes com o comando grep, o que
facilita encontrar as informaes sobre processos executados em background. Por exemplo:

# ps aux | grep mozilla


Permite mostrar apenas os dados do processo que est executando o navegador web Mozilla.

Variveis de ambiente
So utilizadas para manipular as posies de armazenamento na memria do computador.
possvel acessar essa posio, armazenando, lendo, modificando o dado l gravado.
11 Uma varivel tem um nome e um valor a ela associado.
11 Os contedos das variveis so preenchidos atravs do comando de atribuio (=).

# teste=10

# no deve haver espao entre os ele-

mentos de uma atribuio


11 Para visualizar o contedo de uma varivel

# echo $teste
Outros exemplos:

Introduo ao Linux

# X=1
# X=teste
# X=varias palavras
# X=varias palavras
# X=$Y unidades
da varivel Y)
102

#funciona
#funciona
#erro
#funciona
# o $Y (ser substitudo pelo valor

# X=$Y unidades

# $Y (no ser substitudo)

Quando fazemos login no sistema, vrias aes automticas so desencadeadas, tais como
leituras de arquivos, execuo de programas, etc. Estas aes acontecem para configurar
um ambiente no qual o usurio realizar suas tarefas. A configurao padro (default) do
ambiente definida previamente em alguns arquivos, por meio, entre outros, de variveis
de ambiente. Elas so usadas pelo Shell para armazenar informaes de usos especficos.
Na Tabela 6.2, so mostradas algumas dessas variveis.
Descrio

PATH

Contm uma lista de caminhos a serem pesquisados em busca de comandos.


Cada caminho separado por dois pontos (:) e definido no arquivo /etc/
profile (seja cuidadoso: a mudana neste arquivo afeta a todos os usurios).

HOME

Contm o diretrio do usurio atual, local padro destinado a armazenar


suas informaes. definido no arquivo /etc/passwd.

SHELL

Contm o tipo de Shell padro para aquele usurio especfico. Pode ser configurado no arquivo /etc/passwd.

PWD

Contm o diretrio de trabalho mais recente.

RANDOM

Gera um nmero inteiro entre 0 e 32.767.

IFS

Contm o separador usado para separar palavras no Shell (geralmente


espao, tab e nova linha).

As variveis de ambiente so sempre usadas com letras maisculas. O Shell por


caracterstica sensvel ao caso, ou seja, interpreta letras maisculas e minsculas
como sendo diferentes.
A visualizao do contedo das variveis de ambiente feita atravs do comando echo.
Para sabermos qual Shell est sendo usado para aquele usurio especfico basta executar
o comando:

# echo $SHELL
Devemos instruir o comando echo para mostrar o contedo da varivel de ambiente SHELL
e no a prpria palavra SHELL. Isso indicado com o uso do caractere $ antes do nome da
varivel de ambiente.
O comando set nos permite visualizar todas as variveis locais disponveis no Shell corrente.
Para visualizarmos as variveis de ambiente globais do Shell corrente, devemos usar o
comando env. O comando set tambm pode ser usado para definir o valor de uma varivel
de ambiente. possvel usar o comando unset para eliminar uma varivel, em vez de defini-la com o valor null. uma tarefa relativamente simples customizar o seu ambiente no
Linux. Voc pode visualizar como est configurado o seu ambiente digitando set. Uma das
principais variveis de ambiente a UID, utilizada pelo sistema para identificar os usurios
e suas permisses. Algumas variveis, no entanto, so do formato read-only, sendo necessrias permisses de administrador para alter-las. Desta forma, permanecem protegidas e
mantidas sem alteraes aps serem definidas. Para declararmos uma varivel de ambiente
como read-only, devemos usar o comando readonly ou o comando declare com a opo -r.
O administrador pode, se necessrio, tornar variveis de ambiente read-only no arquivo
/etc/profile. O objetivo fornecer uma viso do modo como o ambiente do usurio definido

Captulo 6 - Shell

Tabela 6.2
Algumas variveis
de ambiente
do Shell.

Varivel

por intermdio de variveis.


103

Uso de aspas simples, duplas e barra invertida


So usadas para proteger caracteres, para que no sejam interpretados pelo Shell.

11 A barra invertida \ protege o caractere que vem logo aps ela.

# touch meuarquivo\ >

### o nome do arquivo criado ser meuarquivo>

11 As aspas simples () protegem todos os caracteres que esto entre elas.

# echo Estamos estudando o uso das aspas.

# (protege as

aspas duplas)
# echo Estamos estudando o uso das aspas.

# (no protege a

si mesma)
As aspas duplas tambm so usadas para isso, mas no protegem $ e \.

# echo Estamos estudando o uso das aspas.


# echo Estamos estudando o \uso das aspas\.
# echo Contedo do diretrio home: $HOME
# echo Estamos estudando o uso das aspas. # (no protege a si mesma)
As aspas simples ( ) e duplas ( ) e a barra invertida (\) so usadas quando necessrio que os
caracteres por eles marcados fiquem protegidos, ou seja, no sejam interpretados pelo Shell.
Assim, temos:
11 A barra invertida (\) protege o caractere que vem logo aps ela. Por exemplo, para criar
um nome de um arquivo contendo o caractere > que sabemos ser de redirecionamento,
temos que proteg-lo:

# touch meuarquivo\ >


11 As aspas simples () protegem todos os caracteres que esto entre eles.

# echo Estamos estudando o uso das apas.

# protege as

aspas duplas
# echo Estamos estudando o uso das aspas.

# no protege a

sim mesma
11 As aspas duplas tambm so usadas para isso, mas no protegem $, e \

# echo Estamos estudando o uso das aspas.


# echo Estamos estudando o \uso das aspas\.
# echo Contedo do diretrio home: $HOME

Introduo ao Linux

# echo Estamos estudando o uso das aspas.

104

# no protege a

sim mesma

Exerccio de fixao 1 e
Visualizao de processos
Utilizando a pgina de manual do comando ps, descreva a diferena entre o comando
ps aux e ps ef. Em que sintaxe cada um deles visto?

Exerccio de fixao 2 e
Visualizao de processos em tempo real
Qual comando usado como um monitor do sistema que mostra a atividade do processador
em tempo real, exibindo as tarefas que esto sendo executadas na CPU e fornecendo uma
interface amigvel para o gerenciamento de processos?
FF grep
FF mkdir
FF os
FF top
FF egrep

Exerccio de fixao 3 e
Visualizao de rvore de processos
Qual comando usado para visualizar a rvore de processos?
FF apple
FF tree
FF pstree
FF bg
FF fg

Shell Script
Shell Script uma linguagem de programao baseada no conceito de interpretao, que

pode ser utilizada na linha de comando do Shell. Os programas escritos nessa linguagem
so chamados de scripts.
11 Com os comandos separados por ;:

# cd /home/andreia/backup/; tar cvf

bkk.tar /var/log/*.log

Ou pode ser utilizada para automatizar sequncias de comandos em arquivos


executveis especiais.
11 Com os comandos separados por ;ou colocados um em cada linha:

# file arquivo

# utilizado para ver se um arquivo script.

Com o objetivo de automatizar sequncias de tarefas que sero repetidas vrias vezes,
encapsulamo-nas em arquivos executveis especiais. Neles podemos escrever sequncias
de comandos do sistema operacional, tal como fazemos no Shell, adicionando tambm a
lgica de programao.
Por exemplo, uma das atividades rotineiras de um administrador de sistemas Linux
realizar operaes de backup, mantendo cpias de segurana dos arquivos importantes.
pasta /var/log/, e compacta-los, gerando um arquivo com extenso .tar , colocando-o em um
diretrio chamado backup, na rea de usurio. Uma sequncia possvel de comandos a ser
digitada no Shell seria a seguinte:

# cd /home/usuario/backup
# tar cvf

Captulo 6 - Shell

Supondo que vamos fazer um backup bem simples de, por exemplo, arquivos .log gerados

bk.tar /var/log/*.log
105

Supe-se aqui que o usurio atual seja chamado de usuario e que exista o diretrio
backup j previamente criado.
Se tal atividade for realizada periodicamente, interessante que seja criado um programa
para automatizar essa tarefa. No Shell, os programas so interpretados, e por essa caracterstica so chamados de scripts. Assim, os scripts nada mais so do que programas contendo sequncias de comandos que so interpretados pelo Shell, linha aps linha. O script
um arquivo executvel, com diretrizes na linha inicial que diz qual Shell dever interpretar
aquela sequncia de comandos quando o arquivo for executado. Essa linha deve ser a
primeira linha do script e comea com os caracteres #! (chamados de shebang) seguidos do
caminho na rvore de diretrios no qual o Shell ser encontrado e qual ser ele.
O sistema de arquivos do Linux identifica um script atravs do contedo dos seus dois primeiros bytes. No entanto, nem todos os arquivos so identificados atravs do contedo dos
seus dois primeiros bytes. Para verificar o tipo de um arquivo, pode-se utilizar o comando
file, cuja sintaxe a seguinte:

# file arquivo
Para indicar o Shell bash como o interpretador daquela sequncia de comandos contida no
arquivo, supondo que o interpretador bash esteja no diretrio /bin, devemos ter a primeira
linha como:

#!/bin/bash
Podemos ento, criar um arquivo chamando de, por exemplo, scriptBackup, e nele colocar
os comandos necessrios para realizar o backup dos arquivos:

#!/bin/bash
cd

/home/usuario/backup

# aqui voc coloca o

comentrio
tar cvf

bk.tar /var/log/*.log

Por padro, os comandos so colocados um em cada linha. Para coloc-los na mesma linha
basta separ-los com ;. Para colocar linhas que no devem ser interpretadas, ou seja,
acrescentar comentrios no script, basta introduzir o caractere # antes da frase.
Para executar a sequncia de comandos do script basta executar o arquivo na linha de
comando do Shell:

# ./scriptBackup
Lembre-se que o arquivo deve ser executvel. Para tanto, devemos dar a permisso
de x para o arquivo, usando, por exemplo, o comando # chmod +x scriptBackup.

Introduo ao Linux

Podemos ainda, incrementar o script, adicionando mensagens para que o usurio acompanhe o que est sendo feito e tambm, por exemplo, incrementar o nome do arquivo de
backup com a data, usando o comando date.

#!/bin/bash
echo Realizando o backup dos arquivos de Log
cd /home/usuario/backup

106

tar cvf

bk`date +%d%m%Y`.tar /var/log/*.log

echo Backup concludo


O comando date +%d%m%Y trar a data atual do sistema no formato dia, ms e ano em
quatro dgitos. Ele est entre crases para indicar ao Shell que ele deve ser interpretado
e o resultado dele deve ser colocado naquele ponto. Assim se a data atual do sistema for
08/02/2012, o nome do arquivo a ser criado ser bk08022012.tar.
Outro exemplo de script, cuja sequncia de comandos busca por informaes do usurio
atual, pode ser:

#!/bin/bash
echo Informaes do usurio atual
cat /etc/passwd | grep `whoami`
Temos, na linha 3, trs comandos que devem ser executados nesta ordem. O comando
cat listar o arquivo passwd que contm informaes sobre todos os usurios do sistema;
o resultado do comando servir de entrada para o comando grep, que tem por propsito
filtrar todas as linhas que contenham o padro do parmetro. No entanto este padro s
ser conhecido aps a execuo do comando whoami, que busca qual o usurio atual. Por
isso ele est entre crases.

Exerccio de fixao 4 e
Criando um script simples
Crie um script para remover todos os arquivos texto do diretrio /home do usurio.
Se necessrio, crie previamente alguns arquivos de texto no diretrio.

No se esquea de alterar o script para que ele se torne executvel (#chmod +x script).

Variveis do Shell Script


So utilizadas para manipular as posies de armazenamento na memria do compu-

tador. possvel acessar essa posio armazenando, lendo e modificando o dado nela
gravado. Uma varivel tem um nome e um valor associado a ela. Os contedos das variveis so preenchidos atravs do comando de atribuio =.
No deve haver espao entre os elementos de uma atribuio.

# teste=10

Para visualizar o contedo de uma varivel:

Captulo 6 - Shell

# echo $teste

107

Outros exemplos:

# X=1

#funciona

# X=teste
# X=varias palavras
# X=varias palavras

#funciona
#erro
#funciona

# X=$Y unidades

# o $Y (ser substitudo pelo

valor da varivel Y)
# X=$Y unidades

# $Y (no ser substitudo)

As variveis so usadas para manipular as posies de armazenamento na memria do computador. Assim, atravs da varivel possvel acessar essa posio, armazenando, lendo,
modificando o dado l gravado. Uma varivel tem um nome e um valor associado a ela.
Assim, por exemplo, podemos ter uma varivel de nome teste com o valor 10 como seu
dado ou contedo.
Os contedos das variveis so preenchidos de duas formas. Uma delas atravs de um
comando de atribuio (=). Por exemplo:

# teste=10

# no deve haver espao entre os elementos

de uma atribuio
Para visualizar o contedo de uma varivel, podemos usar o comando echo:

# echo $teste
Para indicar ao Shell que aquela letra ou sequncia de caracteres deve ser interpretada
como uma varivel, basta us-la ao longo do programa.
O nome de uma varivel atribudo pelo programador. Por padro, o nome deve ser
representativo do que ela vai armazenar. No entanto, no se pode nomear uma varivel
com nomes j usados em comandos ou itens da sintaxe da linguagem script. Os nomes de
variveis comeam sempre com uma letra e so seguidos de um ou mais nmeros e letras.
No so permitidos caracteres especiais para construir o nome de uma varivel, apenas o
caractere underline (_), como por exemplo, soma_total.
Apesar de no ser necessrio, por ser caracterstica prpria das linguagens scripts, as
variveis podem ser declaradas antes de serem usadas. Isso prtica em programas
grandes, com uma grande quantidade de variveis. A declarao se d com o comando
declare e acontece de praxe no incio do programa. Assim por exemplo podemos criar
uma varivel, atribuir um valor a ela e mandar mostrar na tela, como no exemplo abaixo:

#!/bin/bash
# este script declara uma varivel

Introduo ao Linux

declare curso

108

curso=shell script
echo Estamos estudando o contedo de $curso

Alguns outros exemplos de atribuies:

# X=1 #funciona
# X=teste #funciona
# X=varias palavras #erro
# X=varias palavras #funciona
# X=$Y unidades

# o $Y (ser substitudo pelo valor da

varivel Y)
# X=$Y unidades

# $Y (no ser substitudo)

Um recurso poderoso do bash tambm pode ser usado na atribuio a uma varivel: a utilizao da sada de um comando, que pode ser feita de duas formas, utilizando `<comando>`
(back ticks ou crases), ou a forma $(<comando>), conforme o exemplo:

# Y=$(date)
# Z=`uptime`
Um cuidado deve ser tomado com as formas citadas acima: o bash no preserva a formatao da sada destes comandos, eliminando, assim, tabulaes e quebras de linhas.

Escopo das variveis


chamado de escopo o espao na qual uma varivel visvel e pode ser utilizada.

Uma varivel criada dentro de um script s visvel e manipulvel dentro desse script.
11 Chamada de varivel local: todas as variveis criadas nos scripts.

# X=1
Outras variveis podem se tornar visveis dentro e fora de um script, visveis em todo o
ambiente de um Shell.
11 Chamadas de variveis de ambiente.
11 Criadas atravs do comando export:

# export X
# export Y=/home/usuario/teste
Chamamos de escopo de uma varivel o espao onde ela se torna visvel e pode ser
utilizada. Uma varivel criada dentro de um script s visvel e manipulvel dentro deste
script; outras variveis podem se tornar visveis dentro e fora de um script, visveis em todo
o ambiente de um Shell. Ao primeiro tipo de varivel chamamos de variveis locais e, ao
segundo, chamamos de variveis de ambiente. Para criar uma varivel local, basta lhe
atribuir um valor. Porm, para criar uma varivel de ambiente que ser utilizada no Shell corrente e em todos os scripts ou sub-shells lanados a partir do Shell atual, necessrio usar
global, ou para criar uma varivel local, conforme nos exemplos abaixo:

# X=1
# export X
# export Y=/home/usuario/teste

Captulo 6 - Shell

o comando export. Este comando pode ser utilizado para transformar uma varivel local em

109

Ao iniciar um Shell, provvel que muitas variveis de ambiente j estejam definidas. Para
list-las, pode-se utilizar os comandos env ou printenv. Para listar todas as variveis (locais e
de ambiente), utilize o comando set sem argumentos.

Expresses e testes

1 formato:

((expresso))
Usado quando ser avaliada uma operao aritmtica.
Por exemplo, para fazer com que uma varivel y receba o contedo da soma 5 + 6.

((y=5 + 6))
As expresses em Shell so usadas em trs formatos:

((expresso))
Usada quando ser avaliada uma operao aritmtica. Por exemplo, para fazer com que
uma varivel y receba o contedo da soma 5 + 6, fazemos:

((y=5 + 6))
Assim, so suportadas vrias operaes aritmticas, tal como mostrado na Tabela 6.3.
Operao

Sinal

Exemplo

Adio

res=$((1 + 1)) ou ((res= 1+1))

Subtrao

res=$((4 - 1)) ou

Multiplicao

res=$((3 * 6)) ou ((res=3*6))

Exponenciao

**

res=$((2**3)) ou ((res=2**3))

#resultado=8

Diviso de inteiros

res=$((5 / 2)) ou ((res=5/2)

#resultado=2

Resto

S=$((5 % 2))

Deslocamentos de
bits esquerda

<<

S=$((5 << 2))


resultado=20

#desloca 2 bits esquerda,

Deslocamentos de
bits direita

>>

S=$((4 >> 2))

#resultado=2

((res=4-1))

ou ((res=5%2))

# resultado=1

H ainda os operadores de incremento (++) e decremento (--), que somam, ou subtraem de


uma unidade. Assim, se tivermos uma varivel x com valor 2 e aplicarmos a operao ((x++)),
teremos x com valor 3.
As precedncias pelos operadores aritmticos seguem a ordem descendente:
11

++ --

** * / %

+ -

Introduo ao Linux

Por exemplo, na expresso ((r=3 2 * 4)) o operador * ser executado primeiro. Assim, o

110

valor de r ser -5. Se quisermos mudar a precedncia, basta utilizarmos parnteses:


((r=(3-2)*4)), cujo resultado ser 4.
So suportadas tambm operaes de comparao aritmtica:

Tabela 6.3
Operaes
aritmticas.

Tabela 6.4
Operaes de comparao aritmtica.

Operao

Sinal

Exemplo

Igualdade

==

(($X = = $Y))

Desigualdade

!=

(($X ! = $Y))

Maior que

>

((5 > 3))

Menor que

<

((2 < 3))

Maior ou igual

>=

(($X >= 3))

Menor ou igual

<=

(($Y <= 1))

Note que resultado de uma operao de comparao ser 0 (zero) ou 1 (um), dependendo
da comparao resultar em falso ou verdadeiro. Exemplo:

# echo $((5 ==5))

# resultado: 1

# echo $(( 5 > 10 ))

#resultado: 0

Com relao precedncia, os operadores de comparao aparecem aps os aritmticos,


na ordem:

<=

>=

<

>

==

! =

O bash suporta, ainda, as principais operaes lgicas, como E, OU e a negao. Estes


operadores tambm podem ser combinados na avaliao de condies com vrios termos.

Tabela 6.5
Principais operaes lgicas.

Operao

Sinal

Exemplo

E lgico

&&

(condio1) && (condio2)

OU lgico

||

(condio1) || (condio2)

Negao (NOT)

!(condio1)

Expresses e testes (2 formato):

[expresso] ou test expresso


Usados para fazer testes em nmeros, textos e arquivos.
Este tipo de formato tambm capaz de fazer testes em nmeros, textos e arquivos. Outra
forma de fazer isso usando o comando test. Algumas opes de parmetro para uso so

Tabela 6.6
Opes de
parmetro.

Operao

Sinal

Exemplo

Igualdade

- eq

[ 5 -eq 5 ]

Desigualdade

- ne

[ 5 -ne 4 ]

Maior que

- gt

[ 6 -gt 5 ]

Menor que

- lt

[ 5 -lt 6 ]

Maior ou igual

- ge

[ 6 -ge 5 ]

Menor ou igual

- le

[ 5 -le 6 ]

Captulo 6 - Shell

mostradas na Tabela 6.6:

111

Alm de ser usado com variveis/nmeros, o comando test tambm faz operaes com

arquivos. Por exemplo, para saber se o contedo da varivel de ambiente HOME um


diretrio, podemos usar o comando:

# test -d $HOME ; echo $?


O comando echo escreve o valor 0 como o contedo da varivel de status, pois o comando
foi bem-sucedido, ou seja, $HOME tem um diretrio como contedo. E combinaes:

# test $HOME != /usr


# [ $HOME != /usr

-a 5 -le 7; echo $?

-a 5 -le 7 ]; echo $?

forma alternativa
Expresses e testes (3 formato):

[[expresso]]
Esse formato usado para testar atributos de um arquivo ou diretrio, fazer comparaes com strings e algumas comparaes numricas. Exemplo:

[[ (-d $HOME) && (-w $HOME) ]] ; echo $?


Conforme vimos, uma sequncia de comandos pode vir na mesma linha desde que separada
por ;. No exemplo acima, usamos o comando echo para mostrar o contedo do parmetro
?, que guarda o status de execuo do ltimo comando executado; se zero, o comando foi
bem-sucedido; caso contrrio, no. Assim, como o contedo de HOME um diretrio, ou
seja, o comando foi bem-sucedido, o comando echo deve imprimir valor zero. Se usssemos
a opo f, que verifica se um arquivo, o resultado seria diferente de zero.
Outras opes podem ser observadas na Tabela 6.7.

Tabela 6.7
Outras opes.

Caracterstica

Caracterstica

-d

um diretrio

-f

um arquivo normal

-e

Se o arquivo existe (tambm usado -a)

-r

Tem permisso de leitura para meu usurio

-n

Se o arquivo no est vazio

-w

Tem permisso de leitura para meu usurio

-N

Foi modificado desde a ltima leitura

Para testes entre pares de arquivos:


Operaao
-nt

Testa se o arquivo 1 mais novo que o arquivo 2, considerando a data

-ot

Testa se arquivo 1 mais velho que arquivo 2, considerando a data

As opes a e o permitem combinar expresses com operadores lgicos E e OU, respecti-

Introduo ao Linux

vamente. Podemos inclusive combinar as opes:

# test $HOME != /usr


# [ $HOME != /usr

-a 5 -le 7; echo $?

-a 5 -le 7 ]; echo $?

# forma alternativa

Na qual temos uma sequncia de testes onde verifica-se se o contedo da varivel $HOME
diferente (!=) de /usr. No caso, sim. Ou seja, o resultado 0. O prximo teste : 5 menor
que (-le) 7? Sim, o resultado 0. O parmetro a, quando usado com expresses, significa
que deve ser feita uma operao lgica E entre o resultado do que vem antes dele com o

112

Tabela 6.8
Testes em pares
de arquivos.

resultado do que vem depois dele. A operao E s retorna verdadeiro se ambos forem verdadeiros. Com o resultado dos dois lados zero, o resultado da operao tambm ser zero,
ou seja, tudo verdade no teste.

[[ expresso ]]
Esse formato usado para testar atributos de um arquivo ou diretrio, fazer comparaes
com strings e algumas comparaes numricas. Por exemplo:

[[ (-d $HOME) && (-w $HOME) ]] ; echo $?


A varivel HOME contm um diretrio e este diretrio tem permisso de escrita, o resultado
ser zero no comando echo, ou seja, bem sucedido.

Comando read
11 L um valor da entrada padro e coloca o contedo na varivel indicada.

11 A utilizao do comando read outra forma de atribuir valor a uma varivel.


11 O comando read pode tambm acumular a funo que seria do comando echo, de
mostrar algo na tela.
11 Atravs do parmetro p possvel combinar sada e entrada no mesmo comando read.
Outra forma de atribuir valor a uma varivel atravs do comando read. Quando acionado o
comando read l um valor da entrada padro e o coloca como contedo da varivel indicada.
Por exemplo:

#!/bin/bash
echo Digite seu nome
read nome
echo Bom dia $nome
No exemplo acima, o comando echo solicita ao usurio que ele digite o nome. O comando
read fica a espera de que algo seja digitado e seja teclado enter. Quando isso acontece,
atribui aquele contedo varivel nome. O comando echo ento escreve esse contedo.
O comando read pode tambm acumular a funo que seria do comando echo, de mostrar

algo na tela. Atravs do parmetro p possvel combinar sada e entrada no mesmo


comando read. Podemos transformar a sequncia acima para esta, que faz a mesma ao:

#!/bin/bash
read -p Digite seu nome: nome
echo Bom dia $nome
Usado com o parmetro -s o comando read oculta a entrada dos caracteres. Isso serve

#!/bin/bash
read -p Usurio: usuario
read -p Senha: -s senha
echo e \n O seu usurio $usuario e sua senha $senha

Captulo 6 - Shell

para, por exemplo, manipular senha.

113

11 A opo e no comando echo faz com que seja interpretada a mudana de linha (\n).

11 Um mesmo comando read pode atribuir valores a diversas variveis. Qualquer


entrada separada por espao em branco caracteriza-se como diversos valores.

# read valor1 valor2


11 Podemos ainda adicionar testes para incrementar um pouco nosso script, usando
o comando test.

#!/bin/bash
echo Voc est entrando em uma rea segura. Deseja continuar?
[sn]
read resposta
test $resposta = n && exit
read -p Usurio: usuario
read -p Senha: -s senha
echo -e \n O seu usurio $usuario e sua senha $senha
Forma alternativa do comando:

test $resposta = n

[ $resposta = n ]

Neste exemplo, o comando test verifica se o valor da varivel resposta n; se for, aplica o
comando exit, que encerra a execuo do script; seno, continua a executar o script.
No exemplo acima podemos substituir o comando test $resposta = n por
[ $resposta = n ]. O resultado ser o mesmo.

Parmetros de linha de comando (variveis especiais)


11 Um parmetro um nome, nmero ou caractere especial que armazena um valor.

11 Parmetro de linha de comando chamado de parmetro posicional.


11 So usados para passar valores junto com o nome do programa na linha de comando.
Esses valores so armazenados nos parmetros especiais e podem ser usados
dentro do script.

# ./soma 3 9
Ao interpretar essa linha de comando, o Shell atribui os valores ali encontrados nos
parmetros posicionais, comeando do valor 0 e indo at o valor 9.
11 Parmetro 0 nome do programa.

Introduo ao Linux

11 Parmetro 1 o nmero 3.

114

11 Parmetro 2 o nmero 9.
Um parmetro um nome, nmero ou caractere especial que armazena um valor. Um parmetro de linha de comando chamado de parmetro posicional. So usados para passar
valores junto com o nome do programa na linha de comando. Esses valores so armazenados nos parmetros especiais e podem ser usados dentro do script. Assim, para elaborar

um script que se comporta como uma calculadora, somando quaisquer dois nmeros,
podemos deixar que o usurio de nosso script diga quais so esses dois nmeros quando
for executar o script:

# ./soma 3 9
11 Assim, soma seria o script, 3 e 9 seriam os nmeros a serem somados.
11 Ao interpretar essa linha de comando, o Shell atribui os valores ali encontrados nos parmetros posicionais, comeando do valor 0 e indo at o valor 9. Assim, o primeiro valor, que
o nome do programa armazenado no parmetro 0, o nmero 3, no parmetro 1 e o 9 no
parmetro 2. Para acessar o contedo de cada parmetro basta, por exemplo, usa-lo com o $.

#!/bin/bash
echo o nome do programa passado no parmetro 0 : $0
echo o parmetro 1 recebeu o valor: $1
echo o parmetro 2 recebeu o valor: $2
Para acessar o contedo de cada parmetro basta, por exemplo, us-lo com o $.

11 Apesar de existirem apenas 9 parmetros posicionais, possvel passar quantos


valores forem necessrios na linha de comando.
11 Esses valores ficam armazenados numa pilha. Os nove primeiros valores so alocados
nos parmetros.
11 Para acessar os valores que ficaram na pilha, basta usar o somando shift quantidade.
11 Assim, shift 1 diz ao shell para que seja ignorado o primeiro valor e que os demais
sejam deslocados em uma posio.
11 O parmetro 1 passa a ter o segundo valor, e o nono parmetro passa a ter o 10 valor.
Esse deslocamento pode ser de qualquer valor, ditado pelo comando shift.
11 Alguns parmetros especiais so tambm usados pelo Shell para nos mostrar
algumas informaes. Por exemplo, o parmetro # traz a quantidade de parmetros
recebidos em linha de comando. Se quisermos saber quantos parmetros basta
mandar escrever $#. H ainda o parmetro @ que contem uma lista de todos os parmetros recebidos. Observe no exemplo abaixo:

#!/bin/bash
echo o nome do programa passado no parmetro 0 : $0
echo o parmetro 1 recebeu o valor: $1
echo o parmetro 2 recebeu o valor: $2
$#

echo lista de todos os parmetros recebidos:

$@
Captulo 6 - Shell

echo o total de parmetros recebidos :

115

Introduo ao Linux

Outros parmetros tambm so usados pelo Shell e que podemos visualizar:

116

Parmetro

Descrio

Contm o status de sada do ltimo comando a ser executado no Shell.


Se o comando foi executado com sucesso, tem valor 0; se no, ter valor
diferente de 0.

Contm o PID do shell.

Contm o PID do ltimo processo executado em background.

Tabela 6.9
Parmetros
do Shell.

Roteiro de Atividades 6
Atividade 6.1 Exibindo processos em estados especficos
Pesquise as opes do comando ps e crie um comando para listar apenas os identificadores
e nomes dos processos que esto no estado R (running).
Verifique tambm o comando top, uma verso interativa do comando ps, atualizando a listagem de processos a cada n segundos e ordenando-os por uso de CPU e memria.

Atividade 6.2 Executando processos em background


A partir do Shell, execute um programa em background (por exemplo, o navegador web).
Observe a rvore hierrquica de processos e visualize as dependncias destes processos.
Observe ainda seu PID e PPID e compare aos do bash.
Verifique tambm o comando jobs. Ele mostra a situao de todos os processos que esto
em background naquele Shell.

Atividade 6.3 Utilizando um daemon


Utilize o daemon cron para realizar um backup daqui a cinco minutos dos arquivos .log da
pasta /var/log. O arquivo de backup deve ser compactado e colocado dentro de sua pasta.
Utilize crontab e para editar o arquivo e o comando tar zcvf destino origem para
fazer a compactao dos arquivos .log.

Atividade 6.4 Usando testes dentro dos scripts


Crie um script que mostra qual o usurio atual, qual o diretrio atual e o Shell que est usando.
Uma dica lembrar que no arquivo /etc/passwd encontram-se listados os usurios e seus shells.
Use o comando cut com a sintaxe:

cut -d DELIMITADOR -f NUMERO_DO_CAMPO


O comando cut corta somente o(s) campo(s) de nmero NUMERO_DO_CAMPO e utiliza o separador DELIMITADOR para delimitar cada campo. No caso do arquivo passwd, o delimitador :.

Complete o script que l trs nmeros, armazena-os em trs variveis (usando o comando
read) e escreve na tela a soma e a subtrao deles.
#!/bin/bash
echo Digite o primeiro nmero

echo Digite o segundo nmero

Captulo 6 - Roteiro de Atividades

Atividade 6.6 Lendo variveis e usando expresses nos scripts

117

echo Digite o terceiro nmero

echo A soma destes nmeros $soma


echo A subtrao destes nmeros $sub

Atividade 6.7 Utilizando parmetros


Crie um script que recebe 12 nmeros por parmetro e em seguida escreve na tela quais so
eles. Como so apenas 9 os parmetros mapeados ($1 at $9) voc dever usar o comando
shift 3 para deslocar os trs valores restantes.

Atividade 6.8 Utilizando parmetros e testes


Crie um script que verifica o nmero de parmetros recebidos na linha de comando. Para
esta atividade, voc deve verificar se existe apenas um parmetro. Use o comando test para
verificar e o comando exit para sair, se for nmero incorreto de parmetros. Lembre-se de
que o nmero de parmetros est na varivel $#.

Atividade 6.9 Utilizando testes de diretrio


Continue a atividade anterior para verificar se o parmetro um diretrio. Mande uma mensagem dizendo ao usurio se ou no.
Exemplo: ./testedir /home
Use o teste [[ (-d $1) ]] para verificar isso. Lembre-se que a varivel $? traz o status da
execuo; se zero, o comando foi bem-sucedido; se diferente de zero, o comando no foi
bem-sucedido; no caso, o parmetro recebido no o nome de um diretrio.

Atividade 6.10 Listando arquivos passados por parmetro


Continue a atividade anterior agora para receber dois parmetros: um nome de diretrio
(tal como na anterior) e uma letra. Se o parmetro 1 for um diretrio, o script deve listar
todos os arquivos que comeam com a letra recebida no parmetro 2.

Introduo ao Linux

Use o comando ls $2*.

118

7
Aprender a controlar o fluxo de execuo sequencial num script com o uso de
estruturas de deciso e a criar mscaras ou padres de pesquisas na busca por
informaes atravs de expresses regulares.

conceitos

Estruturas de deciso e expresses regulares.

Estruturas de deciso
11 So usadas para direcionar o fluxo de execuo do programa.

11 As aes s so tomadas aps a verificao de uma condio.


22 Para cada alternativa, um conjunto diferente de comandos executado.
Esse conceito implementado no Shell atravs de duas estruturas:
11 Com o comando if.
11 Ou com o comando case.
Uma deciso tomada a partir de possveis alternativas baseadas em alguma condio. Ou
seja, antes de executar uma ao, verificada uma condio. Este conceito implementado
no Shell atravs de duas estruturas: o comando if e o comando case.

Comando if
Sintaxe do comando:

if <condio>
then
<comandos>
fi
Semntica do comando:
11 Avalia-se a condio.
11 Se, aps avaliada a condio, o valor retornado for:
22 Verdadeiro: executam-se os comandos dentro do if.
22 Falso: no se executam os comandos.

Captulo 7 - Shell Script

objetivos

Shell Script

119

Durante a execuo de um script, pode ser necessrio executar um grupo de comandos


somente mediante a observao de um determinado cenrio ou condio. Caso no seja,
este grupo de comandos no dever ser executado. O bash suporta as operaes de execuo condicional por meio do comando if, que possui a seguinte forma:

if <condio>
then
<comandos>
fi
Se a condio, aps ser avaliada, retornar falso, os comandos do if no sero executados;
se a avaliao gera um valor verdadeiro, os comando dentro do if sero executados.
A condio pode ser o resultado de um comando:

#!/bin/bash
if ls /home
then
echo Este o contedo da pasta home
fi
11 No caso, a condio do if o retorno do comando ls /home.
11 Se existir a pasta home, ele a lista e retorna comando bem-sucedido, fazendo com que
a condio do if seja verdadeira. Assim, o comando echo executado.
A condio pode ser tambm o resultado de uma comparao aritmtica. Por exemplo:

#!/bin/bash
read -p Digite um nmero: a
read -p Digite outro nmero: b
if (( a + b > 3 ))
then
echo A soma dos dois valores maior que 3
fi
Neste script so lidos dois valores e, a partir da, executada a expresso da condio
(a + b > 3). Se a expresso for avaliada como verdadeira, o comando echo ser executado.
A condio pode ainda ser qualquer padro de expresso e teste, visto na unidade anterior. O exemplo abaixo testa se o arquivo bash existe no diretrio bin:

#!/bin/bash

Introduo ao Linux

if [ -a /bin/bash]

120

then
echo o arquivo existe
fi

Comando if tipos de condio


A condio do comando if pode ser o resultado de um comando.

#!/bin/bash
if ls /home
then
echo Este o contedo da pasta home
fi
A condio do if o retorno do comando ls /home.
11 Se existir a pasta home, ele a lista e retorna comando bem-sucedido, fazendo com que
a condio do if seja verdadeira e, por consequncia, executando o comando echo.

Comando if ... else


Sintaxe do comando:

if <condio>
then
<comandos

executados caso a condio seja verdadeira>

else
<comandos

executados caso a condio seja falsa>

fi
Semntica do comando:
11 Se a condio for avaliada como verdadeira: executam-se os comandos do if.
11 Se a condio for avaliada como falsa: executam-se os comandos do else.
A forma bsica do comando if permite a execuo de um grupo de comandos, caso uma
condio ou grupo de condies sejam verdadeiras. No entanto, bastante comum ser
necessrio executar um grupo de comandos quando uma condio for verdadeira e outro
grupo de comandos quando a condio for falsa. Para tanto, so utilizados os comandos
if ... else, com essa sintaxe:

if <condio>
then
<comandos

executados caso a condio seja verdadeira>

else
executados caso a condio seja falsa>

fi
Por exemplo:

#!/bin/bash
echo
read -p Digite um nmero: num

Captulo 7 - Shell Script

<comandos

121

if [ $num -lt 10 ]
then
echo O nmero $num menor que 10
else
echo O nmero $num maior ou igual a 10
fi
Neste script lido um nmero. Se esse nmero for menor que 10 (-lt), ou seja, a ava-

liao da condio retornar um valor verdadeiro, executa-se o primeiro comando echo.


Caso contrrio, executa-se o segundo comando echo, aquele que est sob o else.
Outra forma de utilizao do comando if quando se deseja aninhar outras comparaes:
caso uma condio seja falsa, executa-se outro if. Para tanto, utilizado o comando elif no
lugar do else, da seguinte forma:

if <condio>
then
<comandos executados caso a condio seja verdadeira>
elif <outra condio>
then
<comandos executados caso a outra condio seja verdadeira>
else
<comandos executados caso nenhuma opo seja verdadeira>
fi
Por exemplo:

#!/bin/bash
read -p Digite um nmero: num
if [ $num -lt 10 ]
then
echo O nmero $num menor que 10
elif [ $num -gt 10 ]

Introduo ao Linux

then

122

echo O nmero $num maior que 10


else
echo O nmero igual a 10
fi

Este script desmembra o script que de verificao anterior, agora apontando se o

nmero menor, maior ou igual ao nmero 10.


Exemplo:

#!/bin/bash
read -p Digite um nmero: num
if [ $num -lt 10 ]
then
echo O nmero $num menor que 10
else
echo O nmero $num maior ou igual a 10
fi
11 L-se um nmero (read).
11 Se esse nmero for menor que 10 (-lt), executa-se o primeiro comando echo.
11 Caso contrrio, executa-se o segundo comando echo, aquele que est sob o else.

Aninhando comandos if e else


Sintaxe do comando:

if <condio>
then
<comandos executados caso a condio seja verdadeira>
elif <outra condio>
then
<comandos executados caso a outra condio seja verdadeira>
else
<comandos executados caso nenhuma opo seja verdadeira>
fi
Semntica do comando:
11 Se a condio do if for verdadeira, executam-se os comandos dele.
11 Caso contrrio, avalia-se a condio do elif.
22 Se for verdadeira: executam-se os comandos dele.
22 Caso contrrio: executam-se os comandos do else.

#!/bin/bash
read -p Digite um nmero: num
if [ $num -lt 10 ]
then
echo O nmero $num menor que 10

Captulo 7 - Shell Script

Exemplo:

123

q
elif [ $num -gt 10 ]
then
echo O nmero $num maior que 10
else
echo O nmero igual a 10
fi
Esse script desmembra o script de verificao anterior, agora apontando se o nmero
menor, maior ou igual ao nmero 10.

Exerccio de fixao 1 e
Estrutura de deciso
Complete o script abaixo para que receba como parmetro dois nmeros e verifique qual o maior.
#!/bin/bash
[

>

echo O nmero $1 maior que o nmero $2

echo O nmero $2 maior que o nmero $1

Comando case
Sintaxe do comando:

case $variavel in
valor1) <comandos>
;;
valor2) <comandos>
;;
valor) <comandos>
;;
esac

Introduo ao Linux

Semntica do comando:

124

11 O contedo da varivel comparado aos valores valor1, valor2 e valor3.


22 So executados os comandos sob o valor que se encaixa (aquele que valida o teste).
Caracteres-Curinga:
11 *
22 Zero ou mais caracteres quaisquer.

11 ?

22 Um caractere qualquer.
Formam um padro de casamento.
Exemplo:
11 o padro st* casaria com valores tais como start, stop, st ou stabcd
11 J o padro k? casaria apenas com valores que iniciassem com a letra k e tivessem
exatamente mais um caractere, como, por exemplo, os valores k1 e kO.
No comando case, o * pode ser usado como forma de else ou valor default.
11 Se o valor da varivel no casou com nenhum outro padro anterior, casar com o *.
Exemplo:

case $valor in
start) echo iniciando
;;
stop) echo parando
;;
*)echo valor no encontrado, use apenas start ou stop
;;
esac
O comando case prov outra forma de execuo condicional, sendo apropriado quando for
necessrio executar um comando de acordo com uma opo (tipicamente, um valor contido
em uma varivel). A sintaxe do comando :

case $variavel in
valor1) <comandos>
;;
valor2) <comandos>
;;
valor) <comandos>
;;
esac

valores exatos como os usados no exemplo acima, podemos utilizar tambm caracteres curinga,
como o * e ? para formar um padro de casamento. Por exemplo, o padro st* casaria com
valores tais como start, stop, st ou stabcd ( * indica zero ou mais caracteres quaisquer).
J o padro k? casaria apenas com valores que iniciassem com a letra k e tivessem exatamente
mais um caractere como, por exemplo, os valores k1 e kO (? indica um caractere qualquer).

Captulo 7 - Shell Script

No exemplo, o contedo da varivel comparado aos valores valor1, valor2 e valor3. Alm de

125

Uma tcnica utilizada em blocos case colocar, como ltimo padro, o * como uma forma
de else, ou seja, se o valor da varivel no casou com nenhum outro padro anterior, casar
com o *, conforme mostra o exemplo abaixo:

case $valor in
start) echo iniciando
;;
stop) echo parando
;;
*)echo valor no encontrado, use apenas start ou stop
;;
esac

Lembre-se de que cada bloco de comandos separado do padro seguinte por ;; e


que o comando case encerrado com um esac.

Expresses regulares
As expresses regulares so usadas para descrever formalmente os padres de texto.

Com o seu uso possvel criar uma mscara ou padro de pesquisa para buscar informaes.
11 As pesquisas se tornam mais abrangentes e mais poderosas.
Os padres so descritos por meio de metacaracteres.
11 Se a pesquisa pelo padro gera um resultado positivo, diz-se que o texto casou com
a expresso.
11 Considerando um extrato do arquivo /etc/passwd.
11 Usando o comando egrep.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
couchdb:x:113:124:CouchAdministrator,,,:/var/lib/couchdb:/bin/bash
lightdm:x:114:125:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:115:126:comanagement daemon,,,:/var/lib/colord:/bin/false

Introduo ao Linux

usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash

126

usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash
As expresses regulares so usadas para descrever formalmente os padres de texto. Com
seu uso possvel criar uma mscara ou padro de pesquisa para buscar informaes.
Assim, as pesquisas se tornam mais abrangentes e mais poderosas.

Os padres so descritos atravs de metacaracteres. Se a pesquisa pelo padro gera um resultado positivo, diz-se que o texto casou com a expresso. Nas Tabelas 7.1 a 7.4 so abordados
alguns deles. Para exemplificar cada um desses elementos, tomamos como base o arquivo
/etc/passwd. Em um extrato feito como exemplo, consideraremos este conjunto de linhas:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
couchdb:x:113:124:CouchAdministrator,,,:/var/lib/couchdb:/bin/bash
lightdm:x:114:125:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:115:126:comanagement daemon,,,:/var/lib/colord:/bin/false
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash
No qual os campos, separados por :, so respectivamente: login de usurio, senha, UID,
GID, comentrios do usurio tal como nome, diretrio home e shell do usurio.
Tabela 7.1
Descrio de
padres por metacaracteres.

Para exemplificar cada um dos casos do uso das expresses, pegamos emprestado o
comando egrep, que tem suporte nativo para expresses regulares, recuperando linhas no
arquivo que seguem ou casam com aquele padro.

Metacaractere

Significado

Indica o comeo da linha

Indica o final da linha

Exemplo

Semntica do comando

# egrep ^u etc/passwd

# todas as linhas que comeam com a letra u


# resultado
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

# egrep bash$ etc/passwd

# todas as linhas que terminam com a palavra bash


# resultado
root:x:0:0:root:/root:/bin/bash
couchdb:x:113:124:CouchAdministrator,,,:/var/lib/couchdb:/bin/bash
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash

Listas

Significado

[abc]

Lista com trs padres: a, b ou c

[a-d]

Lista de intervalos: procura por padres no intervalo entre as letras, ou seja a,


b, c, d

[^abc]

Lista negada: procura por padres que no so a, b ou c

(joao|jose)

Procura por cadeias de caracteres joao ou (|) jose

Captulo 7 - Shell Script

usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

127

Exemplo

Semntica do comando

#egrep Jo[as] etc/passwd

# busca pelos padres que comeam com Jo e em seguida vem a ou s


# resultado
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

#egrep ^[a-e] etc/passwd

# busca pelos padres que comeam a linha com as letras a,b,c,d ou e


# resultado
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
couchdb:x:113:124:CouchAdministrator,,,:/var/lib/couchdb:/bin/bash
colord:x:115:126:comanagement daemon,,,:/var/lib/colord:/bin/false

#egrep ^[aeiou] etc/


passwd

# busca pelos padres que comeam a linha com as vogais


# resultado
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

#egrep ^[^aeiou] etc/


passwd

# busca pelos padres que comeam a linha com as consoantes


# resultado
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
couchdb:x:113:124:CouchAdministrator,,,:/var/lib/couchdb:/bin/bash
lightdm:x:114:125:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:115:126:comanagement daemon,,,:/var/lib/colord:/bin/false

#egrep (Joao|Jose) etc/


passwd

# busca pelos padres cujas linhas tenham a palavra Joao ou Jose


# resultado
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

Introduo ao Linux

Tabela 7.2
Descrio de
padres por metacaracteres.

128

Quantidade

Significado

a{2}

Procura pela letra a aparecendo 2 vezes

a{2,4}

Procura pela letra a aparecendo de 2 a 4 vezes

a{2, }

Procura pela letra a no mnimo 2 vezes

a?

Procura pela letra a aparecendo zero ou uma vez

a*

Procura pela letra a aparecendo zero ou mais vezes

a+

Procura pela letra a uma ou mais vezes

Exemplo

Semntica do comando

# egrep 0{2} /etc/passwd

# busca por linhas contenham dois zeros seguidos


# resultado
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

Exemplo

Semntica do comando

# egrep 0{1,4} /etc/passwd

# busca por linhas que contenham de um a quatro zeros


# resultado
root:x:0:0:root:/root:/bin/bash
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

# egrep 1+ /etc/passwd

# busca por linhas que contenham um ou mais 1s


# resultado
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
couchdb:x:113:124:CouchAdministrator,,,:/var/lib/couchdb:/bin/bash
lightdm:x:114:125:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:115:126:comanagement daemon,,,:/var/lib/colord:/bin/false
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

Tabela 7.3
Descrio de
padres por metacaracteres.

Curingas

Significado

Casa com um caractere qualquer

.*

Casa com qualquer quantidade de caracteres

Exemplo

Semntica do comando

# egrep usuario. /etc/passwd

# busca pelos padres cujas linhas tenham a palavra usurio seguida de


qualquer caractere
# resultado
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

# egrep Jo.* /etc/passwd

#busca pelos padres cujas linhas tenham Jo seguido de qualquer quantidade


de caracteres
# resultado
usuario1:x:1000:1000:Joao da Silva,,,:/home/joao:/bin/bash
usuario2:x:1001:1001:Jose da Silva,,,:/home/jose:/bin/bash

Operador =~
As expresses regulares podem ser combinadas da forma que for necessria para

cumprir-se a tarefa desejada. Podem inclusive ser usadas nos scripts que criamos; basta
que seja usado o operador de expresso regular: =~, como por exemplo:

#!/bin/bash
senha=shellscript
if [[

$senha =~ ^s.e.*t$

]]

then
echo $senha a senha correta
else
echo $senha no a senha correta
fi

Captulo 7 - Shell Script

Tabela 7.4
Descrio de
padres por
metacaracteres.

129

No cdigo acima, a condio do comando if verifica se o contedo da varivel senha

comea com s, seguido por um caractere qualquer (.), seguido da letra e, seguido de qualquer nmero de caracteres, terminando com t ( $senha =~ ^s.e.*t$ ). Este padro casa
com o valor shellscript da varivel, e portanto escreve dizendo que a senha correta.

Comando sed
O comando sed recebe como entrada o valor da varivel senha (atravs do pipe |) e subs-

titui as letras ll por LL, alm de colocar o resultado dentro da prpria varivel senha.
Outros tipos de expresses regulares so ainda usados, como por exemplo, nos casos
de substituio, com o uso de comando sed.

#!/bin/bash
senha=shellscript
echo senha antes: $senha
senha=`echo $senha | sed s/ll/LL/`
echo senha depois: $senha
O comando sed recebe um arquivo ou um valor de uma entrada padro e substitui nele o que
est escrito na expresso. No exemplo acima, o comando sed recebe como entrada o valor da
varivel senha (atravs do pipe |) e substitui as letras ll por LL e coloca o resultado dentro
da prpria varivel senha.

Comando tr
Sua funo receber dois conjuntos de caracteres e substituir as ocorrncias dos carac-

teres no primeiro conjunto pelos elementos correspondentes do segundo conjunto. Ele


usado para traduzir caracteres, como no exemplo:

#!/bin/bash
senha=shellscript
echo senha antes: $senha
senha=`echo $senha | tr a-z A-Z`
echo senha depois: $senha
No qual a varivel senha tem seus todas as suas letras traduzidas de minsculas para maisculas (tr a-z A-Z).

Exerccio de fixao 2 e
Metacaracteres
Acesse o arquivo /etc/passwd utilizando o comando egrep. Crie comandos que selecionem
Introduo ao Linux

apenas o que est sendo pedido:


11 Apenas as linhas do usurio root.
11 Linhas que comeam com vogal.
11 Linhas que tenham root ou www no incio.
11 Logins de 4 caracteres.
11 Linhas que no terminam com :.
11 Nmeros com no mnimo de 3 dgitos.
130

Roteiro de Atividades 7
Atividade 7.1 Verificando a existncia de arquivos
Crie um script que recebe como parmetro um nome de arquivo e verifica se este arquivo existe.

#!/bin/bash
if [

$1 ]

echo O arquivo $1 existe

echo Arquivo inexistente


fi

Atividade 7.2 Verificando a entrada de parmetros


Modifique o script da Atividade 7.1 de forma que ele teste se realmente recebeu um parmetro.

Atividade 7.3 Executando sequncias de comandos


Estenda o script da Atividade 7.2 para escrever o tamanho do arquivo, caso ele exista.
Utilize o comando ls -lh, que traz a informao do arquivo, combinado com o comando cut,
para trazer somente o campo do tamanho do arquivo.

#!/bin/bash
if [ $#

then
echo Script que verifica se um arquivo existe
arquivo

else
if [

then
echo Tamanho do arquivo $1: `
else
echo Arquivo inexistente

Captulo 7 - Roteiro de Atividades

echo Uso:

131

fi
fi

Atividade 7.4 Combinando parmetros, leitura e execuo de comandos


Crie um script que auxilie na criao de arquivos. Ele deve receber como parmetro um nome
e criar o arquivo no diretrio corrente, com a permisso de escrita. Em seguida, deve perguntar ao usurio se ele quer editar o arquivo ou no. Se sim, abrir um arquivo em um editor.
Verifique se o usurio passou o nmero correto de parmetros (1) e se o arquivo que ele
pediu para criar j existe.

#! /bin/bash
if [

then
[

echo este arquivo j existe!


else

chmod

$1

echo O arquivo
echo

foi criado

Deseja edita-lo agora (s/n)?

if [ $opcao =

vi
fi
fi

Atividade 7.5 Utilizando comando grep/egrep


Crie um script que solicita a informao de um nome de usurio e verifica se o nome informado de um usurio vlido no sistema (desconsiderando as diferenas entre maisculas e
minsculas).

Introduo ao Linux

#!/bin/bash

132

then
echo Script que verifica se um usurio vlido no sistema.
echo Uso: $0 nome_usurio

echo Voc deve passar o nome de um usurio

else

then

else

fi
fi

Atividade 7.6 Ainda usando grep/egrep


Crie um arquivo chamado agenda contendo nomes e telefones, no formato: nome sobrenome telefone. Crie um script que recebe como parmetro um nome e imprima as linhas do
arquivo agenda que o contenham. Verifique se realmente foi passado um parmetro.

#!/bin/bash

then

exit 1
else

then

grep
fi
fi

agenda

Captulo 7 - Roteiro de Atividades

echo recuperando informaes

133

Atividade 7.7 Combinando comandos


Crie um script que armazena em uma varivel a quantidade de arquivos do diretrio corrente
e em seguida escreve o valor dessa varivel. Utilize os comando pwd para ver o diretrio corrente, ls para lista-lo e wc para contar.

#!/bin/bash
dir =
quant =
if [

then
echo O diretrio corrente

tem

arquivos

else
echo No h arquivos no diretrio corrente

fi

Atividade 7.8 Aninhando condicionais


Crie um script que recebe trs nmeros como parmetros e exiba o maior deles. Verifique se
realmente foram passados trs parmetros.

#!/bin/bash

then
echo Script que verifica qual o maior entre 3 nmeros
echo Entre com os nmeros nos parmetros
echo Uso: $0 numero1 numero2 numero3
exit 1
else
if

&&

then
maior=
elif

Introduo ao Linux

then

134

maior=
else
maior=
fi

&

echo O nmero

o maior deles

fi

Atividade 7.9 Utilizando expresses regulares


1. Crie um script que recebe duas palavras como parmetro e verifica se a primeira est

contida na segunda.
2. Crie um script que recebe o nome de um arquivo texto como parmetro, verifica se o

usurio possui permisso de leitura deste arquivo e, caso tenha, exiba as seguintes informaes sobre o arquivo: nmero de caracteres, nmero de palavras e nmero de linhas
do arquivo (utilize o comando wc).

Atividade 7.10 Utilizando case


Crie um script que retorna o dia da semana por extenso, a partir do comando date. Exemplo:
hoje segunda-feira.

Atividade 7.11 Utilizando case com menu de opes


Crie um script que apresenta ao usurio um menu com as seguintes opes:
1. Exibir status da utilizao das parties do sistema (df -h);
2. Exibir relao de usurio logados (who);
3. Exibir data/hora (date);
4. Sair.

A partir da, receba a opo digitada pelo usurio e execute o comando respectivo. Informe
ao usurio caso ele esteja digitando uma opo fora das esperadas.

Atividade 7.12 Combinando if com case


Crie um script que realiza as operaes aritmticas bsicas (soma, subtrao, diviso e
multiplicao), recebendo a operao e os operandos como parmetros. Verifique se os
operandos so numricos, com sinal ou sem sinal.
Use o padro de comparao das expresses regulares para verificar se o parmetro
contm somente nmeros: [ $2 =~ ^[+-]?[0-9]*$ ]

Atividade 7.13 Combinando if, case e comandos


no exista, escreva a lista de arquivos de /home neste arquivo. Se o arquivo existir, exibe uma
mensagem dizendo o arquivo j existe; em seguida dar a opo de apagar o arquivo anterior,
substituindo seu contedo, ou a opo de adicionar no final do arquivo a nova informao.

Captulo 7 - Roteiro de Atividades

Crie um script que recebe o nome de um arquivo como parmetro e que, caso este arquivo

135

136

Introduo ao Linux

8
Aprender a controlar o fluxo de execuo dos scripts com o uso de repeties,
programar de forma modular e utilizar variveis compostas do tipo lista.

conceitos

Estruturas de repetio, funes e arrays.

Estruturas de repetio
As estruturas de repetio servem para executar uma sequncia de comandos vrias

vezes. Existem dois tipos de comandos de repetio:


11 Baseados em contadores:
22 Comando for.
11 Condicionais:
22 Comando while.
22 Comando until.
Cada repetio de comandos chamada de iterao.
Uma estrutura de repetio usada na programao quando se deseja que uma determinada sequncia de comandos seja executada vrias vezes. Existem dois tipos de comandos
de repetio: os baseados em contadores ( for) e os condicionais (while e until).

Comando for
11 Bastante utilizado em vrias linguagens de programao.

11 Forma mais comum utilizar contador com incremento/decremento e condio


de parada.
11 Sintaxe 1 do comando:

for ((expressao1; expresso2; expresso3))


do
<comandos>
done

Captulo 8 - Shell Script

objetivos

Shell Script

137

Semntica do comando:

11 A primeira expresso executada na inicializao do comando, e geralmente atribui


um valor inicial para uma varivel.
11 A segunda expresso avaliada a cada iterao do comando, e geralmente uma
comparao de uma varivel com uma condio de parada.
11 A terceira expresso executada e utilizada para incrementar ou decrementar a
varivel de controle do lao.
O comando for bastante utilizado em vrias linguagens de programao. Na sua forma
mais comum, um grupo de comandos executado com base no valor de uma varivel que
inicializada ao se iniciar o comando for. Ao final de cada loop (iterao) do comando a
varivel modificada; a partir da, verifica-se uma condio de parada, que se alcanada faz
parar o comando. Assim, o comando for pode ser expresso como:

for ((expressao1; expresso2; expresso3))


do
<comandos>
done
A primeira expresso executada na inicializao do comando, e pode servir para atribuir um valor inicial para uma varivel. A segunda expresso avaliada a cada iterao do
comando, e tipicamente utilizada a comparao de uma varivel com uma condio de
parada. Por fim, ao final de cada iterao, a terceira expresso executada e utilizada para
incrementar ou decrementar a varivel de controle do lao. O exemplo seguinte inicializa
uma varivel com o valor 1, compara o valor desta varivel com 10, executa o comando echo
e, por fim, incrementa o valor da varivel de controle x em uma unidade (x++):

#!/bin/bash
for (( x=1; x < 10 ; x++ ))
do
echo $x
done
O comando executado at que a varivel x atinja o valor 10.
11 Embora esta seja a forma comumente utilizada em outras linguagens de programao, no bash a forma mais comum de utilizar o comando for percorrendo os
valores de uma lista.
11 Essa lista pode ser de valores de uma varivel ou a sada de um comando.

Introduo ao Linux

for <variavel> in <lista>

138

do
<comando>
done

No prximo exemplo, o comando seq utilizado para gerar valores de 1 a 9. A varivel x


assume cada um destes valores a cada iterao do comando for:

#!/bin/bash
for x in `seq 1 9`
do
echo $x
done
11 O comando seq utilizado para gerar valores de 1 a 9.

11 A varivel x assume cada um destes valores a cada iterao do comando for.


11 Uma lista uma string na qual os elementos esto separados por caracteres especiais.
22 No bash usa-se a varivel especial IFS para definir o separador dos elementos
da lista.
33 O valor padro um sinal de tabulao, uma nova linha ou um espao em branco.
Para o bash, uma lista basicamente uma string na qual os elementos esto separados
por caracteres especiais. O bash utiliza o valor de uma varivel especial, chamada IFS, como
separador de elementos. O valor padro desta varivel considera um sinal de tabulao,
uma nova linha ou um espao em branco como separadores de elementos. O exemplo
abaixo demonstra isso:

#!/bin/bash
valores=a b c 1 2 3
for i in $valores
do
echo $i
done
11 O comando for percorre toda a lista escrevendo os valores um a um.

11 possvel modificar o valor da varivel IFS para que o bash utilize outro caractere
como separador de elementos de uma lista, tal como no exemplo abaixo:

#!/bin/bash
IFS=;

for i in $lista
do
echo elemento: $i
done

Captulo 8 - Shell Script

lista=a1;a2;a3;a4

139

Exerccio de fixao 1 e
Alterando o valor da varivel IFS
Modifique o valor da varivel IFS para que o bash utilize outro caractere como separador de
elementos de uma lista.

Comandos while e until


Os comandos while e until so utilizados para executar um bloco de comandos uma

ou mais vezes mediante uma condio de parada. Eles diferem entre si apenas na
forma de interpretao.
Comando while:
11 O comando while realiza iteraes enquanto a expresso da condio for avaliada
como verdadeira
Comando until:
11 O comando until realiza iteraes at que a expresso da condio seja avaliada
como verdadeira.
Os comandos while e until so utilizados para executar um bloco de comandos enquanto
uma determinada expresso for avaliada como verdadeira.
O comando while realiza iteraes enquanto a expresso for avaliada como verdadeira; j o
comando until funciona at que a condio seja avaliada como verdadeira.
Sintaxe do comando while:

while <condio>
do
<comandos>
done
Sintaxe do comando until:

until <expressao>
do
<comandos>

Introduo ao Linux

done

140

O exemplo seguinte escreve os valores de 1 a 9 utilizando o comando while:

#!/bin/bash
x=1
while ((x < 10 ))

do
echo $x
x=$((x+1))
done

Lembre-se de que utilizamos os duplos parnteses para avaliar expresses aritmticas.


O mesmo cdigo utilizando until seria:

#!/bin/bash
x=1
until ((x >= 10 ))
do
echo $x
x=$((x+1))
done

Funes
11 So usadas na programao para promover a organizao do cdigo em blocos

de funcionalidades.
11 Tambm so chamadas de mdulos, subprogramas ou sub-rotinas.
11 Permitem a reutilizao dos cdigos.
11 Capazes de aceitar valor e retornar resultados.
11 So implementadas dentro dos scripts e definidas por padro no incio deles.
11 O conjunto de comandos fica encapsulado dentro da funo.
11 Para executar os comandos basta invocar o nome da funo ao longo do script.
22 Quando isso acontece, o fluxo de execuo, que estava seguindo linha a linha, de
cima para baixo, deslocado para o contedo da funo.
As funes so usadas na programao para promover uma maior organizao do cdigo
em blocos de funcionalidades (chamados de mdulos), que o encapsula de forma autocontida. Assim, permite-se a reutilizao dos cdigos em outros cenrios.
Cada funo considerada como um subprograma, uma sub-rotina ou um mdulo, capaz de
por padro definidas no incio deles.
A sintaxe de uma funo :

function nome_da_funo ( ){
<comandos>
}

Captulo 8 - Shell Script

aceitar valor e retornar resultados. As funes so implementadas dentro dos scripts e so

141

Onde: Nome_da_funo um nome que o programador escolhe para representar aquela


sequncia de cdigo. Ele deve seguir a mesma lei de formao de variveis, comeando por
letra e seguido por letras e/ou dgitos, com o caractere _ permitido para ligar palavras.
Assim, o conjunto de comandos encapsulado e s executado quando o nome da funo
invocado ao longo do script. Quando isso acontece, o fluxo de execuo que estava seguindo
linha a linha, de cima para baixo, deslocado para o contedo da funo.
Vamos considerar o exemplo da repetio mostrado anteriormente, cuja funo escrever os
nmeros de 1 a 9. A sequncia de cdigo foi colocada dentro de uma funo chamada conta.

#!/bin/bash
x=1
function conta ( )
{
until ((x >= 10 ))
do
echo $x
x=$((x+1))
done
}

echo Realizando a contagem de 1 a 9


conta
echo Saindo do script
11 Funo conta escreve os nmeros de 1 a 9.

11 O cdigo da funo deve necessariamente ser descrito antes de a funo ser invocada.
No exemplo, o primeiro comando a ser executado o comando echo Realizando a contagem
de 1 a 9, pois ele est no fluxo normal da execuo. Aps ele ser executado, passa-se ento
para o prximo comando, que a invocao ou chamada da funo conta. Neste momento,
a execuo desviada para o contedo da funo, executando-se o comando until. Aps
serem feitas as iteraes necessrias dentro do comando de repetio e no havendo
mais comandos dentro da funo, a execuo retorna para o prximo comando depois da
chamada da funo, que a execuo do comando echo Saindo do script. Aps sua exe-

Introduo ao Linux

cuo, o script encerrado.

142

O cdigo da funo deve necessariamente ser descrito antes de a funo ser invocada. Por esse motivo que se aconselha que as funes sejam especificadas no
incio do script.

Ideia da modularizao e da reutilizao de uma funo:

11 Que elas no sejam dependentes de outras partes do script, ou seja, no utilizem de


valores de variveis definidas fora da funo.
Como conseguir isso?
11 A comunicao do resto do script com a funo pode ser feita atravs de parmetros,
da mesma forma que os parmetros posicionais so passados aos comandos.
Passagem de parmetros:
11 Permite a generalizao da funo simplesmente mudando o valor passado por parmetro.
Para garantir a modularizao e a reutilizao de uma funo em outro script qualquer, os dados
de que ela necessita no podem ser dependentes de outras partes do script. No exemplo anterior, a contagem comea no valor atribudo varivel x, que definida fora da funo. Assim, se
usarmos a funo conta em outro script, precisaramos da garantia de que haveria uma varivel
x tambm definida com valor 1 no outro script. Isso nem sempre possvel ou desejvel. A ideia
que o valor seja comunicado funo independente de existir a varivel x. Essa comunicao
feita atravs de parmetros. Da mesma forma que passamos parmetros aos comandos,
passamos tambm s funes, colocando os valores aps o nome da funo, quando vamos
cham-la. Da, a funo recebe os valores atravs dos parmetros posicionais.
Por exemplo:

#!/bin/bash

function conta ( ){
x=$1
until ((x >= 10 ))
do
echo $x
x=$((x+1))
done
}

echo Realizando a contagem de 1 a 9


conta 1

11 O valor 1 passado junto com o nome da funo conta, por parmetro.

11 Dentro dela a varivel x recebe esse valor.


No exemplo, temos que o valor 1 passado junto com o nome da funo conta. S dentro
dela que a varivel x recebe esse valor. Isso garante que essa sequncia de cdigo possa ser
usada em qualquer outro script, sem a necessidade de haver uma varivel x definida nele.

Captulo 8 - Shell Script

echo Saindo do script

143

Esta tcnica permite ainda que esse valor seja flexibilizado, ou seja, se for passado o valor 2
junto ao nome da funo, a contagem passa a ser feita a partir de 2 e no mais de 1.
Os parmetros so percorridos tambm como uma lista pelo comando de repetio for.
Por exemplo:

#!/bin/bash
function imprime_parametros ( ){
echo Esses so os parmetros recebidos pela funo
for i in $*
do
echo $i
done
}
imprime_parametros um dois tres quatro
O comando for percorre a lista de parmetros ($*) e o comando echo $i escreve cada

um deles.
Da mesma forma que funo recebe valores atravs dos parmetros, ela capaz de
retornar valor. Na verdade ela retorna o status de execuo. Esse valor retornado
atravs do comando return, como por exemplo:

#!/bin/bash
function impar ( ){
res=$(($1%2))
if [ $res -ne 0 ]
then
return 0
else
return 1
fi
}
impar 3
echo $?
11 Para o valor 3 passado por parmetro, a funo retorna 0.
Introduo ao Linux

11 Esse valor retornado na varivel $?

144

Assim, ao chamar a funo impar com o parmetro 3, verificado que o resto da diviso de
3 por 2 (res=$(($1%2))) diferente de zero, e portanto, mpar. Assim, executa-se o comando if,
retornando valor 0. Esse valor retornado na varivel $?.

Podemos usar esse conceito para retornar direto na condio do comando if.
Como por exemplo:

#!/bin/bash
function impar ( ){
res=$(($1%2))
if [ $res -ne 0 ]
then
return 0

#sucesso

return 1

#falha

else

fi
}
if impar 3
then
echo nmero mpar
else
echo nmero par
fi
Com o mesmo valor 3 passado por parmetro, e o retorno 0 da funo. A condio

estando com valor 0 implica sucesso do comando. Portanto, aciona o comando echo que
escreve nmero mpar.
Lembrando que para o bash, o valor 0 significa sucesso de execuo de um determinado
comando. Ao colocar a funo impar como condio do if e ela retornando 0, como no caso
do exemplo, significa para o comando que foi bem-sucedido, tornando assim a condio
verdadeira; portanto, ser executado o comando echo nmero mpar.
No entanto, permitido ao comando return retornar apenas valores numricos. Valores
diferentes de nmeros devem ser retornados atravs do comando echo, como por exemplo:

#!/bin/bash
function teste()

echo aqui retorna-se o valor no numrico da funo


return 23
}
valor=$(teste)
echo o status da funo retornou $?

Captulo 8 - Shell Script

echo retorno == $valor


145

A execuo do comando valor=$(teste) faz com a funo teste seja chamada e o retorno

dela seja atribudo varivel valor. Este retorno ditado pelo contedo expresso no
comando echo Aqui retorna-se o valor no numrico da funo. Ao invs de escrever na
tela, ele escreve na varivel.
A execuo do comando valor=$(teste) faz com que a funo teste seja chamada, e o
retorno dela seja atribudo varivel valor. No entanto, este retorno ditado pelo contedo
expresso no comando echo aqui retorna-se o valor no numrico da funo que, quando
usado desta forma na funo, capaz de retornar um valor no numrico. O exemplo
mostra ainda a combinao dos dois retornos, usando tambm o comando return para
retornar na varivel de status S? o valor 23.
Para aumentar ainda mais o conceito de encapsulamento, fazendo com que as funes se
comportem como mdulos independentes e possam ser portadas/reutilizadas em qualquer outro script, desejvel que qualquer varivel usada dentro da funo seja tambm
especfica dela. Esse efeito conseguido atravs do conceito de criao de variveis locais.
Elas tm esse nome porque so vistas somente dentro do escopo da funo a qual foram
declaradas. Por exemplo:

#!/bin/bash
x=20
function conta ( )
{
local x=1
until ((x >= 10 ))
do
echo $x
x=$((x+1))
done
echo imprimindo x dentro da funo: -$x-
}
echo Realizando a contagem de 1 a 9
conta
echo imprimindo x fora da funo: -$x-
echo Saindo do script

Introduo ao Linux

O valor de x local s visto/modificado dentro da funo.


Aqui existem duas instncias da varivel x. Uma criada fora da funo, com valor 20 e outra
declarada como local, com valor inicial 1. Quando a varivel criada como local, passa a ser
visvel somente dentro do escopo da funo onde foi declarada. Assim, a varivel x que est
fora da funo no sofre mudanas. O comando echo imprimindo x dentro da funo: -$x-
mostrar o valor 10 para a varivel x, valor que ela ter aps a iterao until de 1 a 9. J fora
da funo, o comando echo imprimindo x fora da funo: -$x- mostrar o valor 20 para a
varivel x, valor que no foi alterado pela funo conta.
146

Exerccio de fixao 2 e
Etapas do script
#!/bin/bash
x=20
function conta ( )
{
local x=1
until ((x >= 10 ))
do
echo $x
x=$((x+1))
done
echo imprimindo x dentro da funo: -$x-
}
echo Realizando a contagem de 1 a 9
conta
echo imprimindo x fora da funo: -$x-
echo Saindo do script

Arrays
11 Um array uma varivel que contm uma lista de elementos.

11 Esses elementos so tratados de maneira individual atravs de ndices.


11 Os ndices so valores numricos que comeam em 0 e vo at o nmero de elementos do array menos 1.
11 So usados para reunir informaes de natureza comum.
22 Exemplo: uma data no formato dia, ms e ano.
Um array uma varivel que contm uma lista de elementos. Esses elementos so tratados
de maneira individual atravs de ndices. Os ndices so valores numricos que comeam
em 0 e vo at o nmero de elementos do array menos 1. So usados para reunir informaes de natureza comum. Por exemplo, para armazenar uma data no formato dia, ms
juntas para facilitar o trabalho do programador.
Um array pode ser declarado atravs do comando:

declare -a nome_array
Os valores dentro do array so atribudos de duas formas:
11 Atravs de seus ndices individuais:

nome_array[indice]=valor

Captulo 8 - Shell Script

e ano, temos trs informaes que se relacionam. desejvel que estejam armazenadas

147

11 Ou da especificao completa da lista.

nome_array=(valor1 valor2 valor3.. valor N)


Por exemplo, o array data descrito acima poderia ter seus valores atribudos desta forma:

#!/bin/bash
declare -a data
data[0]=10
data[1]=2
data[2]=2012
Colocando-se o dia no campo de ndice 0 do array e ms e ano nos campos de ndice 1 e 2,
respectivamente. Ou ento, desta forma:

#!/bin/bash
declare -a data
data=(10 2 2012)
Preenchendo-se todos os valores ao mesmo tempo.
O acesso a cada valor tambm feito atravs dos ndices. Por exemplo, para mostrar a data
armazenada, podemos usar o comando echo desta forma:

#!/bin/bash
declare -a data

data[0]=10
data[1]=2
data[2]=2012

echo ${data[0]}
echo ${data[1]}
echo ${data[2]}
Ou ento atravs do comando for:

#!/bin/bash

Introduo ao Linux

declare -a data

148

data[0]=10
data[1]=2
data[2]=2012

for num in 0 1 2
do
echo ${data[num]}
done
As chaves so usadas no comando echo ${data[num]} para garantir que aquele ndice
especfico seja considerado.
O nmero de elementos de um array pode ser obtido atravs do comando:

${#nome_array[*]}
Assim, para garantirmos que todos os elementos do array sejam alcanados no comando for,
por exemplo, podemos utilizar este comando para definir o limite.

#!/bin/bash
declare -a data
data[0]=10
data[1]=2
data[2]=2012

tamanho=$((${#data[*]}-1));

for num in `seq 0 $tamanho`


do
echo ${data[num]}
done
O comando for lista todos os elementos do array:
11 tamanho = tamanho do vetor data (3) - 1;
11 seq varia de 0 at 2.
A varivel tamanho recebe o tamanho do vetor data, que trs menos 1, para que sirva de
contagem no comando seq, de 0 at 2, obedecendo aos ndices do array. Assim, sero recuperados cada um dos elementos e escritos atravs do comando echo ${data[num]}.

#!/bin/bash
declare -a lista

read -p Quantos elementos sero inseridos? total

Captulo 8 - Shell Script

Podemos tambm utilizar o comando read para armazenar valores no array:

149

for ((i=0; i < $total; i++))


do
read -p Entre com valor: lista[$i]
done

total=$(($total-1))
echo Estes foram os valores lidos:
for num in `seq 0 $total`
do
echo ${lista[num]}
done
11 No primeiro comando for so lidos os elementos e armazenados no array lista.

11 No segundo comando for so escritos todos eles.


O primeiro comando for acessa cada um dos ndices do array lista com a varivel i recebendo
valores de 0 at a quantidade de elementos total, armazenando os valores lidos atravs do

Introduo ao Linux

comando read. O segundo comando for apenas escreve todos eles.

150

Roteiro de Atividades 8
Atividade 8.1 Verificando permisso dos arquivos
Crie um script que exibe para o diretrio atual a lista de arquivos com permisso de execuo.

Atividade 8.2 Verificando usurios e informaes


Crie um script que apresenta na tela todos os usurios cadastrados no sistema e seus
respectivos diretrios home.

Atividade 8.3 Percorrendo um diretrio com o comando for e utilizando contadores


Crie um script que recebe como parmetro o caminho de um diretrio e lista seus arquivos
e diretrios um a um. Se for diretrio, deve escrever dir ao lado do diretrio. Numere cada
uma das linhas. Lembre-se de testar se realmente foi passado um parmetro.

Atividade 8.4 Ainda manipulando listas com o comando for e contadores


Crie um script que conta o nmero de palavras no contedo do diretrio passado por parmetro. Use repetio para fazer a contagem. Lembre-se de testar se realmente foi passado
um parmetro.

Atividade 8.5 Manipulando sequncias com o comando for


Crie um script que recebe um nmero como parmetro e exibe todos os nmeros de 1 at o
nmero recebido. Lembre-se de testar se realmente foi passado um parmetro.

Atividade 8.6 Testando os diversos comandos de repetio


Crie um script que recebe um nmero como parmetro e exibe todos os nmeros pares de 1
at o nmero recebido. Lembre-se de testar se realmente foi passado um parmetro. Faa
usando a repetio for e em seguida usando while ou until.

Atividade 8.7 Utilizando o comando for como contador


Crie um script que recebe dois nmeros passados por parmetro e escreve o primeiro
nmero a quantidade de vezes especificada no segundo parmetro. Lembre-se de testar se

Atividade 8.8 Utilizando repetio condicionada


Crie um script que l valores do teclado enquanto o valor digitado for diferente de 0.

Atividade 8.9 Criando uma agenda simples


Crie um script que constri uma agenda telefnica. Voc deve apresentar um menu ao
usurio contendo essas opes: 1 inserir; 2 listar; 3 sair. O script deve aceitar opes
at que seja digitada a opo de sair. Na opo 1, deve ler um nome e um telefone e armazenar nas prximas duas posies vazias de um array chamado agenda. Assim, se agenda

Captulo 8 - Roteiro de Atividades

realmente foram passados dois parmetros.

estiver vazio, o nome ser armazenado na posio 0 e o telefone na posio 1. Na opo 2, o


script deve listar todos os nomes com seus respectivos telefones registrados na agenda.
151

Atividade 8.10 Criando uma calculadora simples utilizando funes


Crie um script que realiza as operaes aritmticas bsicas. Ele deve apresentar o menu
(1soma; 2 subtrao; 3 diviso; 4 multiplicao; 5 sair) e fazer as operaes enquanto
no for digitada a opo 5. Use funes para cada uma das operaes. Verifique se os operandos so numricos, com sinal ou sem sinal.
Use o padro de comparao das expresses regulares para verificar se o parmetro

Introduo ao Linux

contm somente nmeros: [ $2 =~ ^[+-]?[0-9]*$ ].

152

9
Instalar aplicaes a partir de seus cdigos-fontes e de arquivos binrios.

Aplicaes no sistema operacional Linux.

conceitos

Aplicaes no sistema operacional Linux


Aplicaes so instaladas em um sistema por diversos motivos, como: necessidade dos usurios e mudanas nas funes desempenhadas pelo sistema, entre outros. Se uma aplicao
no estiver mais sendo utilizada, deve ser logo removida, pois pode se tornar uma porta de
entrada para invasores. Tambm importante que as aplicaes instaladas sejam sempre
atualizadas, seja para corrigir defeitos, incluir novas funcionalidades ou mesmo para corrigir
vulnerabilidades que possam afetar a segurana do sistema.
Saber como instalar, remover e atualizar uma aplicao corretamente uma habilidade fundamental para qualquer administrador de sistemas. Neste captulo, veremos como executar
essas tarefas. Mas antes disso, comearemos a entender como as aplicaes so desenvolvidas, quais so suas principais caractersticas e como so distribudas.
Antes que uma aplicao esteja pronta para uso, algum deve projet-la e escrev-la.
As aplicaes so escritas utilizando uma ou mais linguagens de programao, que nada
mais so do que linguagens intermedirias entre o que os humanos entendem (linguagem
natural) e o que o computador entende (linguagem de mquina).
Algumas linguagens de programao se aproximam mais da linguagem natural, pois se
servem de conceitos mais abstratos e, em geral so capazes de efetuar mais tarefas com
uma quantidade menor de comandos. Essas linguagens so conhecidas como linguagens de
alto nvel. Outras linguagens, conhecidas como linguagens de baixo nvel, se aproximam
mais da linguagem utilizada pela mquina e, em geral, apresentam melhor desempenho
ao custo de um esforo maior de programao, j que normalmente so necessrios muito
mais comandos para efetuar uma mesma tarefa.
Chamamos os arquivos que contm a aplicao escrita com uma linguagem de programao
de cdigo-fonte. Seja qual for o nvel da linguagem, o cdigo-fonte deve passar por um
processo de traduo para que seja entendido pelo computador. Esse processo pode ser
feito uma nica vez e o resultado pode ser armazenado em um ou mais arquivos contendo
o cdigo j traduzido para a linguagem de mquina ou, ainda, pode ser feito toda vez que a

Captulo 9 - Instalao de aplicaes

objetivos

Instalao de aplicaes

153

aplicao for executada. No primeiro caso, o processo de transformar o cdigo-fonte em um


arquivo contendo cdigo de mquina (arquivo binrio) chamado de compilao. Quando
esse processo de traduo acontece, sempre que a aplicao executada, chamado de
interpretao. No captulo anterior, quando foi vista a programao em shell script, vimos
que os programas criados so interpretados todas as vezes em que so executados por um
interpretador, que neste caso o prprio shell.

Linguagens de programao
11 Alto nvel C++, Java.

11 Baixo nvel Assembly.


11 Linguages compiladas C, C++, Pascal.
11 Linguagens interpretadas Bash, Perl, PHP.
No Linux, as linguagens mais utilizadas no desenvolvimento de programas so C e C++. A linguagem C considerada por alguns uma linguagem de mdio nvel, pois apesar de possuir
caractersticas de linguagens de alto nvel, tambm possui caractersticas de linguagens de
baixo nvel, como o acesso direto ao hardware. A linguagem C foi criada no incio da dcada
de 1970 e desde ento tornou-se a linguagem preferida para o desenvolvimento de sistemas
operacionais. O kernel do Linux escrito em C, assim como vrios de seus aplicativos e
bibliotecas de funes. A linguagem C++ uma linguagem criada a partir da linguagem C,
acrescentando a ela caractersticas de linguagens de alto nvel, como a orientao a objetos.
Um programa escrito em C precisa ser compilado antes de ser utilizado. Dependendo do seu
tamanho, o cdigo de um programa em C pode estar contido em diversos arquivos, cada um
contendo um mdulo ou parte do programa. A compilao de um programa feita com o
auxlio de programas como compiladores e ligadores (do ingls linkers). O processo de compilao pode ser simplificado atravs do uso do programa make, que l um arquivo chamado
Makefile, que contm as instrues de como compilar de maneira correta os arquivos-fontes
de uma aplicao. No Linux, o compilador C mais utilizado o GNU C Compiler, tambm
conhecido como gcc.
Uma das caractersticas dos sistemas Unix a modularidade. Seus comandos, em geral,
desempenham tarefas simples e as tarefas mais complexas so executadas utilizando dois ou
mais comandos. De forma anloga, programas complexos so criados atravs da combinao
de funes contidas em mdulos menores, tambm chamados de bibliotecas. Para entender
melhor este conceito, vamos utilizar um exemplo: imagine um programador que deseja
escrever um programa capaz de tocar arquivos mp3. O programa dever ser capaz de abrir
um arquivo mp3, decodificar o seu contedo e reproduzi-lo utilizando a placa de som, alm de
prover uma interface para o usurio que permita executar as aes de parar, iniciar, avanar
e retroceder a posio da msica. Ele poder escrever um cdigo capaz de fazer todas essas
funes, ou poder utilizar bibliotecas de funes criadas por outros programadores que
disponibilizem as funes descritas acima, facilitando o desenvolvimento do programa.

Introduo ao Linux

As funes de uma biblioteca podem ser utilizadas por um programa de duas maneiras:
estaticamente ou dinamicamente. No modo esttico, o cdigo da funo utilizada pelo programa embutido no binrio do programa. Desta forma, o programa pode ser executado
em um sistema sem que haja a necessidade deste possuir as bibliotecas com as funes
que o programa utiliza. Esta forma apresenta, como desvantagem, o tamanho dos arquivos
binrios dos programas, que passam a ser bem maiores. Por outro lado, um programa pode
utilizar uma biblioteca de funo de maneira dinmica. Neste caso, quando o programa
executado, ele procura no sistema as bibliotecas de que necessita e as carrega na memria.
154

A vantagem de utilizar esta forma que vrios programas podem utilizar a mesma biblioteca j carregada na memria, diminuindo assim o total de memria utilizada pelo sistema
como um todo. Alm disso, programas que utilizam bibliotecas carregadas dinamicamente
possuem arquivos binrios menores.
No Linux, os arquivos contendo bibliotecas dinmicas se localizam geralmente nos diretrios /lib e /usr/lib. Geralmente estes arquivos so nomeados utilizando o padro libXXX.
so[.z.y], onde XXX o nome ou sigla da biblioteca, .so a extenso que identifica bibliotecas
dinmicas e .z.y a verso da biblioteca, que pode ser opcional. Dado um arquivo binrio
qualquer, podemos identificar as bibliotecas que ele utiliza com o comando ldd. O exemplo a
seguir mostra a lista das bibliotecas que o shell bash utiliza:

# ldd /bin/bash
Linux-gate.so.1 => (0xffffe000)
libncurses.so.5 => /lib/libncurses.so.5 (0xb7f82000)
libdl.so.2 => /lib/tls/libdl.so.2 (0xb7f7e000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7e46000)
/lib/ld-Linux.so.2 (0xb7fd1000)
A sada do comando apresenta o nome das bibliotecas utilizadas, o caminho completo do
arquivo onde esto contidas e um nmero que identifica a posio de memria que ocupam.
Quando um programa necessita carregar uma biblioteca, ele utiliza um carregador em tempo
de execuo (do ingls run-time linker), conhecido como ld.so. Esse carregador, por sua vez,
precisa identificar os diretrios que contm as bibliotecas. Para isso, ele utiliza o arquivo /etc/
ld.so.cache, que gerado atravs da execuo do comando ldconfig. Este comando, quando
executado, l o arquivo /etc/ld.so.conf, que contm os diretrios do sistema onde os arquivos
de bibliotecas podem ser encontrados. Sempre que o arquivo /etc/ld.so.conf for alterado, o
comando ldconfig deve ser executado para atualizar o arquivo /etc/ld.so.cache.
Quando um programador decide distribuir sua aplicao, ele pode faz-lo de duas maneiras:
distribuir os arquivos-fontes ou a aplicao j compilada. Veremos, a seguir, como proceder para instalar aplicaes distribudas nas duas formas citadas. Vale lembrar que uma
aplicao no composta apenas pelo seu arquivo binrio. Em geral, uma aplicao possui
tambm arquivos de configurao, manuais de sistema e arquivos de documentao, alm
de exemplos. Chamamos esse conjunto de arquivos de pacote.
Reaproveitamento de cdigo:

22 Vantagens: tamanho dos programas fica reduzido e as bibliotecas podem ser compartilhadas com outros programas.
22 Desvantagens: a compilao e execuo do programa s possvel se a biblioteca
estiver instalada no sistema.
11 Em geral, arquivos de bibliotecas possuem o formato: libXXX.so[.z.y].
11 O comando ldd identifica as bibliotecas usadas por uma aplicao.

Captulo 9 - Instalao de aplicaes

11 Uso de bibliotecas estticas ou dinmicas.

155

Instalando aplicaes a partir de seus cdigos-fontes


O mtodo de instalao a partir de arquivos-fontes o mtodo que envolve mais trabalho
para quem vai instalar; porm, envolve menos trabalho para o programador, j que ele
deve apenas disponibilizar os arquivos-fontes. A grande maioria das aplicaes escritas
para sistemas Unix tem seu cdigo-fonte disponibilizado, possibilitando a todos o acesso
ao modo como o programa foi escrito. comum que programas licenciados pela General
Public License (GPL) ou por uma licena open source estejam disponveis nessa forma e que
programas proprietrios no estejam.
Embora esta seja a forma de instalao mais trabalhosa, este mtodo permite que o
programa seja modificado e personalizado. Em geral, possvel escolher onde o programa
dever ser instalado e onde procurar por arquivos de configurao. No entanto, o grau
de personalizao de um programa depende muito de sua funo e do seu programador.
Imagine um programa que funcione como um cadastro de telefones. Este programa poderia
armazenar suas informaes em um dos diversos Sistemas Gerenciadores de Bancos de
Dados (SGBDs) disponveis para Linux, ou poderia simplesmente armazenar as informaes
em arquivos textos. O programador que desenvolveu esse aplicativo poderia permitir que
o administrador escolhesse o modo de armazenamento dos dados gerados pelo programa
por meio de opes especiais utilizadas no processo de compilao. Ativando ou desativando essas opes, os requisitos para a instalao do programa e o seu tamanho se
alteram j que, por exemplo, ao desativar o suporte para armazenagem de dados em bancos
de dados, tal programa no iria requerer bibliotecas com funes de acesso a bancos de
dados. Usualmente, o processo de instalao de um programa a partir de um arquivo-fonte
composto de quatro passos, que sero descritos a seguir.

Obteno dos arquivos-fontes


A obteno dos arquivos-fontes pode se dar atravs de um DVD ou, mais comumente,
atravs de sites como o Sourceforge, que funciona como um imenso repositrio de projetos
de software livre e disponibiliza milhares de programas. Os cdigos-fontes geralmente so
distribudos em arquivos compactados no formato tar.gz ou tar.bz2. Os exemplos seguintes
mostram como descompactar arquivos nos formatos tar.gz e tar.bz2, respectivamente.

w
Visite o site do
desenvolvedor
Sourceforge: http://
www.sourceforge.net.

# tar xvfz programa.tar.gz


# tar xvfj programa.tar.bz2

Verificao do ambiente para a compilao


Configurando a aplicao:

11 Buscar documentao: arquivos INSTALL e README.


11 Script de configurao: ./configure.

Introduo ao Linux

Problema de dependncia:
11 Verificar se todas as bibliotecas necessrias esto instaladas.
Aps descompactar o arquivo, recomendvel ler o contedo de arquivos como INSTALL
e/ou README, caso estejam presentes, pois contm informaes sobre como compilar e
instalar o programa em questo. A verificao do ambiente, necessria para a compilao,
feita atravs de um script auxiliar chamado configure, presente na grande maioria dos
programas. Esse script verifica se todos os pr-requisitos necessrios para a compilao do
programa esto presentes e gera o arquivo Makefile. O script configure geralmente possui a
156

opo help, que lista todas as opes de configurao de um programa. O comando a


seguir executa o script configure:

# ./configure
Como vimos, os programadores escrevem programas utilizando funes presentes em
bibliotecas de funes. Mas s as bibliotecas no bastam na hora de compilar um programa,
sendo necessrio tambm que estejam presentes seus arquivos de cabealho (headers).
Nas linguagens C e C++, antes de uma funo ser utilizada, precisa ser definida, ou seja,
necessria uma espcie de descrio contendo o nome da funo, seu tipo e os parmetros
que aceita. Para que no seja necessrio manter no sistema vrios arquivos com todos os
cdigos de funes, os projetistas dessas linguagens pensaram num jeito de separar do seu
cdigo as declaraes das funes. Assim, ao compilar um programa, necessrio apenas
ter essas declaraes, que ficam contidas em arquivos com a extenso .h. Para satisfazer os
pr-requisitos para a compilao de um programa (os arquivos de cabealho e as bibliotecas
que o programa utiliza), ainda ser preciso instalar e compilar as bibliotecas necessrias, ou
instal-las por intermdio de pacotes da distribuio, como veremos adiante.

Compilao
Compilando e instalando a aplicao com Makefile:

11 make
11 make install
Uma vez configurados e satisfeitos os pr-requisitos para a compilao do programa,
podemos iniciar o processo de compilao utilizando o comando make, que na verdade no
um compilador, mas apenas l arquivos especiais (Makefiles), que contm regras para compilar o programa. Essas regras especificam os arquivos-fontes que devem ser compilados,
o compilador que deve ser utilizado, o modo como esses arquivos-fontes devem ser ligados
e os diretrios onde devem ser armazenados ao serem instalados, entre outros aspectos.
Sua utilizao bastante simples, bastando execut-lo no diretrio em que se encontra o
arquivo Makefile, como mostra o comando a seguir.

# make

Instalao
O processo de compilao tanto pode ser rpido, para programas simples, quanto pode
durar horas, dependendo do tamanho e da complexidade do cdigo-fonte e da velocidade
da mquina. Por fim, a instalao propriamente dita feita pelo programa make, usualmente
que faz com que o make copie os arquivos do programa j compilado para os diretrios onde
devero ser instalados no sistema. Para fazer a instalao, basta executar o comando abaixo:

# make install
Isso far com que o make copie os arquivos contendo o cdigo compilado, manuais e
arquivos de configurao para os diretrios adequados. Note que, embora os outros dois
passos possam ser executados com uma conta de usurio comum, este ltimo passo deve
ser feito utilizando a conta root.
Por conveno, os programas compilados pelo administrador so instalados nos diretrios
apropriados (bin, sbin, etc, var) dentro do diretrio /usr/local. Isso feito para que haja uma

Captulo 9 - Instalao de aplicaes

utilizando-se a opo install, que em geral especifica uma regra especial dentro do Makefile

separao dos programas instalados dessa forma dos programas instalados por meio de
157

pacotes da prpria distribuio. Vale observar que, ao contrrio destes ltimos, os programas
instalados atravs de cdigo-fonte no so registrados em uma base de dados e no podem
ser removidos e atualizados de forma automtica. Alguns programas podem ser removidos
por intermdio do comando make uninstall. A opo uninstall usualmente especifica uma
regra dentro do Makefile que contm os comandos para remover os arquivos instalados.
Embora essa seja uma prtica comum, no so todos os arquivos-fontes que apresentam essa
opo. Uma boa prtica, ao se instalar programas dessa forma, utilizar um programa auxiliar
como o checkinstall, que registre os arquivos que foram inseridos no sistema, facilitando,
assim, a sua remoo e atualizao no futuro. A instalao de programas utilizando o cdigo-fonte recomendada para os casos em que no exista um pacote binrio pronto na distribuio, ou em casos onde necessrio alterar o cdigo-fonte da aplicao. Para os outros
casos, prefira utilizar os pacotes disponibilizados pela distribuio.
Recomendaes:

11 Deixar os arquivos separados e organizados em /usr/local.


11 Lembrar dos arquivos e lugares onde foram instalados. Dica: checkinstall.
Para remover: make uninstall (caso exista esta opo no Makefile).

Instalando aplicaes a partir de arquivos binrios


Aplicaes que utilizam arquivos binrios:

11 Cuidados adicionais: dependncias, local dos arquivos.


11 Pacotes binrios de distribuies:
22 Debian/Ubuntu pacotes no formato deb.
22 Red Hat/Fedora/CentOS pacotes no formato rpm.
Nessa forma de instalao, as aplicaes so distribudas em arquivos que contm a aplicao na sua forma j compilada (por isso o nome arquivos binrios), necessitando apenas
de que sejam armazenadas nos diretrios adequados. Faremos aqui uma pequena distino
entre dois tipos de arquivos binrios: o primeiro tipo criado pelo desenvolvedor do programa, e o segundo um tipo especial de arquivo binrio criado exclusivamente para uma
determinada distribuio Linux. Veremos o primeiro tipo agora e o segundo mais adiante.
A instalao de uma aplicao a partir de arquivos binrios bem mais simples do que a
instalao a partir de arquivos-fontes. Geralmente, necessrio apenas obter o arquivo
contendo a aplicao, descompact-lo e copiar os arquivos para os diretrios corretos.
Esse ltimo passo pode ser feito por um script distribudo juntamente com a aplicao,
especificamente para esse fim. Neste tipo de instalao, no h como o desenvolvedor
garantir que o seu sistema contenha todos os pr-requisitos para que a aplicao funcione
adequadamente. Sendo assim, comum que ele adote uma das duas estratgias: desenvolver a aplicao de modo que ela requeira um conjunto mnimo de bibliotecas, deixando
por conta do usurio a instalao delas, ou incluir as bibliotecas estaticamente na apli-

Introduo ao Linux

cao, deixando ela pronta para uso, no necessitando de nenhuma biblioteca adicional.

158

A distribuio de aplicaes em arquivos binrios usualmente utilizada por empresas


que produzem programas proprietrios e que tm a necessidade de manter seus cdigos-fontes inacessveis para terceiros (a partir de um arquivo binrio, praticamente impossvel obter o cdigo-fonte original).
Para facilitar a disseminao, instalao e sobretudo a manuteno de um sistema, as
distribuies Linux criaram o que chamamos de pacotes. Um pacote um arquivo que

contm uma aplicao ou biblioteca, scripts de instalao e dados como sua descrio e
pr-requisitos. Os pacotes so manipulados por meio de programas especiais que, alm de
instalar, desinstalar ou atualizar um pacote, gravam informaes sobre eles em uma base de
dados no sistema. No Linux, os pacotes nos formatos rpm e deb so os dois tipos de pacotes
mais populares. O padro de pacotes rpm foi originalmente criado pela Red Hat e, posteriormente, adotado por outras distribuies como SUSE e Fedora. Os pacotes deb foram criados
pela distribuio Debian, e so utilizados tambm pelas distribuies derivadas e baseadas
nela, como a distribuio Ubuntu.
O funcionamento de ambos os tipos de pacotes bastante semelhante, mudando apenas as
ferramentas utilizadas para gerenci-los. Veremos a seguir como trabalhar com pacotes rpm.
Os pacotes rpm so nomeados na forma:

<nomedopacote>- <versao-release>.<arch>.rpm.
O campo <arch> indica para qual arquitetura de hardware o pacote foi compilado. As principais arquiteturas so vistas a seguir:
11 i386 pacotes para arquiteturas que utilizam processadores baseados na linha x86 da Intel;
11 PPC pacotes para arquiteturas que utilizam processadores PowerPC, utilizados pela Apple;
11 x86_64 pacotes para arquiteturas que utilizam processadores de 64 bits;
11 SRC pacotes que no contm binrios, mas sim o cdigo-fonte da aplicao, o que a
torna portvel para vrios tipos de arquiteturas.
Podemos ver, a seguir, um exemplo de nome de pacote:

bash-3.0-31.i386.rpm

Nome do pacote: bash


Verso: 3.0
Release: 31
Arquitetura: i386
Pacotes rpm

<nomedopacote>-<versao-release>.<arch>.rpm
Exemplo:

Nome do pacote: bash


Verso: 3.0
Release: 31
Arquitetura: i386

Pacotes RPM
O comando rpm a principal ferramenta utilizada para instalar, desinstalar, consultar e
atualizar pacotes no formato Red Hat Package Manager (RPM). A Tabela 9.1 apresenta as

Captulo 9 - Instalao de aplicaes

bash-3.0-31.i386.rpm

principais opes do comando rpm e as aes que elas executam:


159

Opo

Ao

Instala um pacote.

Remove um pacote.

Atualiza um pacote, caso j esteja instalado, ou instala o pacote, caso no esteja


instalado.

Atualiza um pacote apenas se o pacote j estiver instalado.

Habilita o modo verbose. O comando mostrar informaes adicionais


durante a sua execuo.

Habilita o modo hash. O comando mostrar uma espcie de barra de progresso


durante a instalao dos pacotes.

Usualmente, utilizamos as opes v e h combinadas com as opes i ou U ao instalar ou


atualizar um pacote. A sintaxe do comando rpm pode ser vista a seguir:

# rpm -<opo> pacote

Comando rpm
Ferramenta utilizada para instalar, desinstalar e atualizar pacotes. No resolve problemas
com dependncias entre pacotes.

# rpm -<opo> pacote


A seguir so apresentados alguns exemplos de utilizao do comando rpm.
Instalando um pacote:

# rpm -ivh chkconfig-1.3.20-1.i386.rpm


Atualizando um pacote:

# rpm -Uvh chkconfig-1.3.20-1.i386.rpm


Removendo um pacote:

# rpm -e finger
Observe que, para remover um pacote, s necessrio indicar o nome do pacote, ou
nome-verso, e no o nome completo do arquivo que contm o pacote. Ao instalar ou
remover um pacote, o comando rpm verifica se este possui dependncias e caso o pacote
a ser instalado necessite de algum pacote ainda no instalado ou o pacote a ser removido
seja uma dependncia de algum pacote ainda instalado, uma mensagem de erro ser
apresentada, como mostram os exemplos abaixo:

# rpm -ivh dvgrab-1.7-3.i386.rpm

Introduo ao Linux

error: Failed dependencies:

160

libavc1394.so.0 is needed by dvgrab-1.7-3.i386


libdv.so.4 is needed by dvgrab-1.7-3.i386
libraw1394.so.8 is needed by dvgrab-1.7-3.i386
librom1394.so.0 is needed by dvgrab-1.7-3.i386

Tabela 9.1
Opes bsicas do
comando rpm.

# rpm -ev bzip2


error: Failed dependencies:
bzip2 is needed by (installed) man-1.5p-4.i386
bzip2 is needed by (installed) system-configprinter0.6.131-1.i386
Repare que o comando rpm apenas indica a existncia de uma dependncia, que deve ser
instalada manualmente, caso necessrio. Veremos mais adiante uma ferramenta capaz de
resolver automaticamente problemas com dependncias.

Dependncias
Como vimos anteriormente, para funcionar adequadamente um programa pode necessitar de
uma biblioteca ou at mesmo de outro programa. Quando lidamos com pacotes, chamamos
esses pr-requisitos de dependncias. Assim, podemos dizer que o pacote A depende do
pacote B ou, ainda, que o pacote B uma dependncia do pacote A. Quando instalamos um
pacote, a ferramenta utilizada para instal-lo verifica, nas informaes contidas no pacote,
quais so suas dependncias. Em seguida, verifica se essas dependncias j esto instaladas
no sistema consultando a base de dados de pacotes instalados. Dependendo da ferramenta,
ela solicitar que as dependncias sejam instaladas, ou tentar instalar as dependncias automaticamente. De forma semelhante, ao tentar remover um pacote instalado no sistema, as
mesmas verificaes so efetuadas e a ferramenta indicar os outros pacotes que devem ser
desinstalados juntamente com o pacote desejado. Essas verificaes so feitas com o intuito
de deixar o sistema sempre num estado consistente, isto , garantindo que estejam instaladas
todas as dependncias de todos os pacotes instalados.

Consultando informaes sobre pacotes


O comando rpm possui opes que permitem listar ou consultar informaes de pacotes
j instalados no sistema, e de arquivos contendo pacotes ainda no instalados. Para fazer
consultas com o comando rpm, utilizamos a seguinte sintaxe:

# rpm -q<opes> <pacote | arquivo>


As opes de consulta devem ser sempre utilizadas em conjunto com a opo -q. A Tabela 9.2

Tabela 9.2
Opes de consulta
do comando rpm.

Opo

Ao

Lista todos os pacotes instalados no sistema.

f <arquivo>

Lista o pacote ao qual pertence o arquivo <arquivo>.

p <arquivo de
pacote>

Consulta o <arquivo de pacote>. Utilizada para consultar um arquivo


contendo um pacote ainda no instalado.

i <pacote>

Mostra informaes sobre o pacote: incluindo nome, verso e descrio.

l <pacote>

Lista os arquivos que pertencem a um pacote.

R <pacote>

Lista as dependncias de <pacote>.

Captulo 9 - Instalao de aplicaes

apresenta as principais opes de consulta utilizadas no comando rpm e suas aes:

161

A seguir, so apresentados alguns exemplos de consultas combinando as opes da Tabela 9.2.


O resultado no ser mostrado aqui, mas voc pode executar os comandos no seu sistema e
verificar suas respostas.
Listando todos os pacotes instalados no sistema:

11 # rpm -qa
Descobrindo a qual pacote pertence um arquivo:
11 # rpm -qf /etc/passwd
Mostrando informaes sobre um pacote instalado:
11 # rpm -qi bash
Mostrando informaes sobre um pacote ainda no instalado (arquivo de pacote):
11 # rpm -qpi dvgrab-1.7-3.i386.rpm
Listando todos os arquivos que pertencem a um pacote:
11 # rpm -ql bash
Conforme vimos, embora o comando rpm seja a principal ferramenta para instalar, atualizar, remover e consultar pacotes, faltam-lhe opes de como resolver automaticamente
problemas com dependncias ou de atualizar todo o sistema. Para resolver esse tipo de
problema, foram criadas ferramentas de mais alto nvel, como o Yellowdog Update Modifier
(YUM) da distribuio Red Hat e o Advanced Packaging Tool (APT) da distribuio Debian.
11 Como atualizar todos os pacotes do sistema com RPM?

11 Como resolver dependncias automaticamente com RPM?


11 Ferramentas criadas para resolver estes problemas:
YUM ,
11 APT.

Exerccio de fixao 1 e
Gerenciador de pacotes RPM
1. Para instalar um software qualquer, qual seria a opo a ser utilizada junto com o geren-

ciador RPM?
2. Para instalar um software qualquer e mostrar detalhes da instalao, qual seria a opo a

ser utilizada junto com o gerenciador RPM?


3. Para instalar um software qualquer exibindo #,

medida que os arquivos so descom-

pactados, qual seria a opo a ser utilizada junto com o gerenciador RPM?
4. Para atualizar um software, deve-se utilizar o comando RPM com que opes?
5. Para verificar se um pacote est instalado ou no, utiliza-se qual comando?

Introduo ao Linux

6. Para listar todos os pacotes instalados, qual comando devo utilizar?

162

7. Para remover um software, utiliza-se qual comando?

Este exerccio permite encontrar pacotes no repositrio do YUM, assim como proceder com
sua instalao.

YUM
O YUM utiliza o conceito de repositrio de pacotes, e por isso no h a necessidade de que
os arquivos de pacotes sejam obtidos manualmente. Um repositrio um site especialmente preparado contendo pacotes e arquivos de ndice, com informaes sobre esses
pacotes. O comando yum capaz de consultar um repositrio e automaticamente e baixar e
instalar pacotes, liberando o administrador de efetuar essas tarefas manualmente.
Os repositrios do YUM esto divididos em trs tipos bsicos:
11 Base nos repositrios base se localizam os pacotes que fazem parte da distribuio,
como os distribudos no DVD de instalao.
11 Updates nos repositrios update esto atualizaes para os pacotes do repositrio base
e pacotes que no fazem parte dos repositrios base nem suas atualizaes se encontram nos repositrios extra.
11 Extras um repositrio extra pode conter pacotes no suportados oficialmente
pela distribuio.

Configurando o YUM
YUM utiliza repositrios divididos em: base, update e extra.

11 Arquivo /etc/yum.conf:
22 Tentativas de acesso aos repositrios.
22 Arquivo de log.
22 Local para armazenar os pacotes baixados.
11 Arquivos .repo - /etc/yum.repos.d/<arquivo>.repo.
O YUM configurado por meio do arquivo /etc/yum.conf, que define opes como: nmero
de tentativas de acesso a um repositrio, arquivo de log, diretrio onde manter os pacotes
baixados, entre outras. J a localizao dos repositrios a serem consultados definida nos
arquivos que ficam armazenados no diretrio /etc/yum.repos.d. A configurao padro de
ambos suficiente para seu funcionamento correto.
Nesse captulo, veremos somente como adicionar novos repositrios. Cada repositrio
configurado mediante um arquivo com a extenso .repo, usualmente disponvel no website
do repositrio. Um nico repositrio pode ter vrios espelhos (mirrors), que funcionam
como cpias idnticas do repositrio original, mas ficam localizados em outros servidores,
permitindo que o administrador escolha aquele que est localizado mais prximo ou que
possua um link de maior capacidade.

jpackage, que contm pacotes relacionados ao Java:

[jpackage6-fc17]
name=JPackage 6.0 for Fedora Core 17
baseurl=http://mirrors.dotsrc.org/jpackage/6.0/fedora-17/free/
gpgcheck=1
Ao configurar um repositrio, preciso verificar a verso de sua distribuio, que no
exemplo acima o Fedora Core 4. Repositrios e pacotes de outras distribuies ou verses

Captulo 9 - Instalao de aplicaes

O exemplo abaixo mostra o contedo do arquivo jpackage.repo que configura o repositrio

podem no funcionar corretamente. Como medida de segurana, os pacotes rpm podem ser
163

assinados digitalmente. Dessa forma, possvel verificar se um pacote realmente veio de um


determinado repositrio e se no foi adulterado. Os pacotes rpm so assinados com a chave
GPG do repositrio ou do desenvolvedor e podem ser verificados utilizando-se sua chave
pblica. Para isso, necessrio importar essa chave pblica por intermdio do comando
rpm, conforme os exemplos abaixo:

# rpm --import GPG-PUB-KEY.asc


# rpm --import http://www.repositorio.com/GPG-PUB-KEY.asc
No primeiro exemplo, a chave pblica importada por meio de um arquivo que a contm, e
no segundo a chave importada diretamente do site.
Exemplo de arquivo de repositrio para pacotes relacionados ao Java:

[jpackage16-fc4]
name=JPackage 1.6 for Fedora Core 4
baseurl=http://mirrors.dotsrc.org/jpackage/1.6/fedora4/free/
gpgcheck=1
Cuidados:
11 Verificar a verso da distribuio.
11 Verificar a assinatura digital:

# rpm --import GPG-PUB-KEY.asc


# rpm --import http://www.repositorio.com/GPG-PUB-KEY.asc

Utilizando o YUM
11 Instalar, desinstalar e atualizar pacotes.

11 Instalar e remover grupos de pacotes.


11 Busca de pacotes (com expresses regulares).
11 Resoluo de problemas com dependncias entre pacotes.
11 Atualizao automtica de todos os pacotes instalados no sistema.
Assim como rpm, o comando yum tambm pode ser utilizado para instalar, desinstalar e
atualizar pacotes. Alm disso, permite a instalao e remoo de grupos de pacotes, a busca
de pacotes com expresses regulares, a resoluo de problemas com dependncias entre
pacotes e a atualizao automtica de todos os pacotes instalados no sistema. Veremos, a
seguir, como efetuar cada uma dessas operaes.

Instalando e removendo pacotes


Instalando e removendo pacotes com o yum:
Introduo ao Linux

164

yum install tcpdump

Instalando pacotes utilizando arquivos locais:

yum localinstall python-numeric-23.702.i386.rpm

Removendo um pacote:

yum remove tcpdump

Para instalar um pacote, basta executar o comando yum com a opo install seguida do
nome do pacote. O yum consulta ento os repositrios em busca da verso mais recente do
pacote e em seguida faz o download dele e de suas dependncias, caso necessrio. Aps
obter todos os pacotes necessrios, a instalao deles executada. O comando do exemplo
seguinte instala o pacote tcpdump e suas dependncias:

# yum install tcpdump


O yum tambm pode ser utilizado para instalar pacotes que j se encontram armazenados no
computador do usurio. Nestes casos, utiliza-se a opo localinstall, como mostra o exemplo:

# yum localinstall python-numeric-23.702.i386.rpm


Para remover um pacote e suas dependncias, basta utilizar a opo remove, como mostra
o exemplo:

# yum remove tcpdump


Sempre que o yum instala, atualiza ou remove um pacote, ele apresenta um sumrio do que
ser feito e pede a confirmao do administrador antes de executar as aes necessrias.
O comando do exemplo acima apresentar o seguinte sumrio:

Setting up Remove Process


Resolving Dependencies
--> Populating transaction set with selected packages.
Please wait.
---> Package tcpdump.i386 14:3.8.2-13.FC4 set to be erased
--> Running transaction check
Dependencies Resolved
Package Arch Version Repository Size
Removing:
tcpdump i386 14:3.8.2-13.FC4 installed 765 k
Transaction Summary
Install 0 Package(s)
Update 0 Package(s)

Total download size: 0


Is this ok [y/N]:

Instalando grupos de pacotes


Instalando grupos de pacotes:

yum groupinstall MySQL Database

Para listar grupos disponveis:

yum grouplist

Captulo 9 - Instalao de aplicaes

Remove 1 Package(s)

165

O yum prov uma forma simples de instalar um grupo de pacotes relacionados a um determinado servio ou perfil do sistema. Imagine que desejamos preparar um sistema para
que funcione como um servidor de banco de dados. Para tanto, precisaramos instalar um
aplicativo Sistema Gerenciador de Banco de Dados (SGBD) e, possivelmente, bibliotecas de
funes relacionadas. A opo groupinstall do yum pode nos auxiliar nesta tarefa. O exemplo
abaixo instalaria o SGBD Mysql, suas dependncias e programas relacionados:

# yum groupinstall MySQL Database


As aspas so utilizadas no exemplo acima porque o nome do grupo possui caracteres de
espao. Para obter uma lista dos grupos de pacotes conhecidos pelo yum, utilize a opo
grouplist, conforme no exemplo abaixo:

# yum grouplist
De maneira anloga, para remover um grupo de pacotes utilizamos a opo groupremove.

Atualizando o sistema
Atualizando o sistema:

yum update

Atualizando somente determinados pacotes:

yum update bash tcpdump

Listando pacotes que devem ser atualizados:

# yum check-update
O yum pode ser utilizado para atualizar apenas determinados pacotes ou para atualizar
todos os pacotes instalados no sistema. Quando utilizado com a opo update, o yum
compara as verses de todos os pacotes instalados com as verses destes mesmos pacotes
disponveis nos repositrios, efetuando em seguida a atualizao de todos os pacotes que
estejam desatualizados. Para atualizar todo o sistema, basta executar o comando seguinte:

# yum update
Para atualizar somente determinados pacotes, basta acrescentar os nomes dos pacotes ao
comando. Assim, para atualizar somente os pacotes bash e tcpdump, devemos executar o
comando abaixo:

# yum update bash tcpdump


Outra opo apenas listar os pacotes que devero ser atualizados, sem proceder com a
atualizao propriamente dita. Isso pode ser feito com a opo check-update, que retorna a
lista dos pacotes a serem atualizados, as novas verses disponveis e o tipo de repositrio
de onde ser baixado cada pacote.

Fazendo buscas e obtendo informaes sobre pacotes


Introduo ao Linux

Listando os pacotes instalados:

166

#yum list installed


Listando um pacote com detalhes:

#yum list bash


Listando pacotes instalados que casem com a expresso regular:

# yum list installed c*

Listando os pacotes desatualizados:

# yum list updates


possvel consultar a base de dados de pacotes instalados no sistema e os pacotes disponveis em um repositrio. Tambm possvel listar os pacotes que atendam a um determinado padro de busca, utilizando a opo list com alguns parmetros adicionais, que sero
vistos a seguir.
Listando os pacotes instalados:

# yum list installed


Listando informaes sobre o pacote bash:

# yum list bash


Listando os pacotes instalados que comecem com a letra c:

# yum list installed c*


Listando os pacotes desatualizados:

# yum list updates


O yum possui ainda um poderoso mecanismo de busca, capaz de procurar por palavras-chave,
nome do pacote e sumrio ou descrio do pacote. Isso bastante til quando precisamos
de um aplicativo que execute uma determinada funo, mas ainda no sabemos qual pacote
utilizar. Digamos que estamos a procura de um aplicativo que funcione como um servidor
web. Poderamos, ento, executar o yum com a opo search, como no exemplo abaixo:

# yum search webserver


Toda vez que o comando yum utilizado, ele faz uma verificao por atualizaes nos
arquivos de ndices dos repositrios. Para evitar a demora ocasionada por esta ao,
podemos dizer ao yum que procure nas informaes que j obteve desses repositrios sem
ter que consult-los novamente. Para isso, utilizamos a opo -C.
Para obter a descrio de um pacote, basta utilizar a opo info. O exemplo a seguir
mostra como obter informaes sobre o pacote bash:

# yum info bash


Busca por pacotes (usando palavra-chave):

# yum search webserver

Para obter a descrio de um pacote:

# yum info bash


Outra opo interessante a opo provides, que retorna o nome do pacote que oferece um
determinado servio ou a qual pacote pertence um determinado arquivo. Quando instalamos um programa a partir dos arquivos-fontes, podemos necessitar instalar pacotes para
atender a certos pr-requisitos deste programa. Por exemplo: um determinado programa
precisa de que a biblioteca libxyz esteja presente no sistema, mas no sabemos o pacote que
fornece essa biblioteca. Poderamos utilizar ento o yum da seguinte maneira:

Captulo 9 - Instalao de aplicaes

11 Opo -C serve para no buscar no repositrio.

# yum provides libxyz


167

Para buscar um pacote que oferece um determinado servio ou para descobrir a qual pacote
pertence um determinado arquivo:

# yum provides libxyz.so.1


O cache do yum pode excluir informaes manualmente:

# yum clean
# yum clean <headers|packages|all>

APT
Advanced Packaging Tool (APT) uma ferramenta de gerenciamento de pacotes utilizada
na distribuio Debian e suas variantes, que trata de forma automtica problemas com
dependncias entre pacotes. O APT possui um banco de dados que armazena informaes
sobre os pacotes instalados no sistema e utiliza essas informaes para poder realizar a
instalao, atualizao e remoo de pacotes de maneira correta.

Configurando o APT
O APT configurado por meio de diversos arquivos armazenados no diretrio /etc/apt/apt.
conf.d. Neste arquivos so definidas opes relativas configurao de proxy, tempo de
timeout para conexes com servidores, entre outras. Outro arquivo de configurao importante o /etc/apt/sources.list, onde so definidos os repositrios que sero utilizados para a
instalao e atualizao de pacotes.

Utilizando o APT
O APT utiliza o comando apt-get para realizar diversas tarefas, como instalar, atualizar e
remover pacotes. Veremos a seguir as principais funcionalidades deste comando.
Atualizando as lista de pacotes disponveis
Antes de fazer qualquer instalao, atualizao ou remoo de pacotes, preciso sincronizar o banco de dados do APT com a lista de pacotes disponveis nos repositrios. Esta ao
executada atravs do comando abaixo:

# apt-get update

Instalando pacotes
Para instalar um pacote, basta executar o comando apt-get com a opo install seguida do
nome do pacote. O APT consulta ento os repositrios definidos no arquivo sources.list
em busca da verso mais recente do pacote e em seguida faz o download dele e de suas
dependncias, caso necessrio. Aps obter todos os pacotes necessrios, a instalao deles
executada. O comando do exemplo seguinte instala o pacote bind9 e suas dependncias:

Introduo ao Linux

# apt-get install bind9

168

Sempre que utilizamos o apt-get para instalar, atualizar ou remover um pacote apresentado
um resumo das aes que sero executadas, solicitando a confirmao do administrador
antes de execut-las. O comando do exemplo anterior apresentar o seguinte resumo:

Reading package lists... Done


Building dependency tree

Reading state information... Done


The following extra packages will be installed:
bind9utils
Suggested packages:
bind9-doc resolvconf
The following NEW packages will be installed:
bind9 bind9utils
0 upgraded, 2 newly installed, 0 to remove and 23 not upgraded.
Need to get 466kB of archives.
After this operation, 1,413kB of additional disk space will be used.
Do you want to continue [Y/n]?
A opo install tambm pode ser utilizada para atualizar pacotes. A sintaxe do comando para
atualizar um pacote a mesma utilizada para a instalao de novos pacotes. Se o pacote
passado como parmetro no estiver desatualizado, uma mensagem ser mostrada informando que a verso instalada j a mais atual, como mostra o exemplo:

# apt-get install wget


Reading package lists... Done
Building dependency tree
Reading state information... Done
wget is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.

Removendo pacotes
Para remover um pacote e suas dependncias, basta utilizar a opo remove, como mostra
o exemplo:

# apt-get remove bind9


A opo remove s remove os pacotes, mantendo no sistema seus arquivos de configurao.

# apt-get remove bind9 --purge

Atualizando pacotes
Para atualizar todos os pacotes instalados no sistema, devemos utilizar a opo upgrade,
como mostra o exemplo:

# apt-get upgrade
Antes disso, no entanto, importante atualizar o banco de dados do APT com a opo update.

Captulo 9 - Instalao de aplicaes

Para remov-los tambm, preciso acrescentar a opo --purge, como mostra o exemplo:

169

Atualizando a distribuio
Para atualizar toda a distribuio de uma s vez, devemos utilizar a opo dist-upgrade,
como mostra o exemplo:

# apt-get dist-upgrade

Limpando o repositrio local


Quando instalamos um pacote atravs do comando apt-get, os arquivos necessrios so
baixados dos repositrios e armazenados em um repositrio local, que fica no diretrio
/var/cache/apt/archives. Os arquivos utilizados para instalar os pacotes no sistema podem
ser removidos com a opo clean, como mostra o exemplo abaixo:

# apt-get clean
Opes mais utilizadas do comando apt-get:

11 update adquire novas listas de pacotes.


11 install instala novos pacotes ou atualiza pacotes desatualizados.
11 remove remove um pacote.
11 upgrade faz uma atualizao.
11 dist-upgrade atualiza a distribuio.
11 clean apaga arquivos baixados para instalao.

Fazendo buscas e obtendo informaes sobre pacotes


possvel fazer buscas por pacotes, consultando a base de dados do APT atravs do
comando apt-cache com a opo search, como mostra o exemplo a seguir:

# apt-cache search dns


O comando anterior lista todos os pacotes cujo nome ou descrio casem com o padro
passado como parmetro na busca. A opo de busca til quando no sabemos o nome
exato de um pacote. De posse do nome correto do pacote, podemos utilizar a opo show do
comando apt-cache para exibir informaes sobre o pacote, como mostra o exemplo abaixo:

# apt-cache show dnsutils

Dicas sobre gerenciadores de pacotes


11 Prefira pacotes feitos para sua distribuio.

11 Tome cuidado com arquivos .rpm de outras distribuies.


11 Arquivos com headers esto em pacotes com sufixo -dev ou -devel:
22 libpng-devel

Introduo ao Linux

11 Mantenha o controle dos pacotes que foram instalados a partir do cdigo-fonte.


Prefira sempre instalar aplicativos a partir de pacotes feitos para sua distribuio/verso.
Em geral, foram preparados visando a integrao com o sistema e j vm com correes de
segurana aplicadas. Ao instalar aplicativos a partir de arquivos-fontes, procure satisfazer os
seus pr-requisitos por intermdio de pacotes da prpria distribuio. Se for necessrio utilize
os arquivos de headers das bibliotecas, que podem ser encontrados em pacotes especiais da
distribuio. Em geral, esses pacotes recebem o nome da biblioteca acrescido dos sufixos
-dev ou -devel. Procure manter o cdigo-fonte de aplicaes dentro do diretrio /usr/src.
170

aconselhvel manter um controle dos pacotes que foram instalados a partir do


cdigo-fonte ou de arquivos binrios, que devero ser atualizados manualmente sempre
que necessrio. Em alguns casos, possvel manter todos os arquivos de um aplicativo
instalado a partir do cdigo-fonte ou de um arquivo binrio sob um nico diretrio como,
por exemplo, /usr/local/<aplicativo>. Isso pode facilitar a remoo do aplicativo, quando ele
no for mais necessrio.

Exerccio de fixao 2 e
Gerenciador de pacotes APT
1. Qual a finalidade do comando apt-get install nome_pacote?
2. Qual a diferena entre apt-get upgrade e apt-get dist-upgrade?
3. Qual o gerenciador de pacotes da distribuio Debian?
4. O que faz o comando apt-cache?
5. O que faz o comando apt-cdrom?
6. Pesquise a diferena entre aptitude e apt-get.

Captulo 9 - Instalao de aplicaes

7. O que um Mirror?

171

172

Introduo ao Linux

Roteiro de Atividades 9
Atividade 9.1 Encontrando bibliotecas utilizadas por um programa
Escolha trs arquivos binrios de programas dentro do diretrio /usr/bin. Verifique quais
bibliotecas esses binrios utilizam.

Atividade 9.2 Instalando uma aplicao a partir do seu cdigo-fonte


Instale a ltima verso do aplicativo wget a partir do seu cdigo-fonte e configure-o para que
seja instalado dentro do diretrio /usr/local/curso/. Caso no seja possvel instalar, descreva
as dificuldades encontradas. Verifique o contedo de /usr/local/curso aps a instalao.
O cdigo-fonte do wget pode ser obtido na seguinte URL: http://ftp.gnu.org/gnu/wget.

Atividade 9.3 Instalando uma aplicao a partir de um arquivo binrio


Instale o plugin do flash a partir de seu arquivo binrio e descreva o que aconteceu na instalao.

Atividade 9.4 Instalando um pacote rpm


A partir do arquivo de instalao, localize o arquivo de pacote do programa tcpdump e o
instale ou atualize-o utilizando o comando rpm. Descreva o que voc fez para instalar o programa e justifique qualquer problema ocorrido.
Se o tcpdump j estiver instalado no sistema, o comando retornar a seguinte mensagem de
erro: o pacote tcpdump-14:4.0.0-3.20090921gitdf3cb4.1.el6.x86_64 j est instalado.

Atividade 9.5 Descobrindo a qual pacote pertence uma biblioteca


Descubra a que pacote pertencem as bibliotecas utilizadas por um dos binrios escolhidos
na Atividade 9.1.

Atividade 9.6 Descobrindo as dependncias dos pacotes


Utilizando o comando rpm, descubra algumas das dependncias do pacote utilizado na atividade anterior. Verifique a utilidade de cada dependncia.

Atividade 9.7 Atualizando o sistema com yum


Utilize o yum para descobrir se h algum pacote a ser atualizado no seu sistema. Se houver,

Atividade 9.8 Instalando pacotes com yum


Utilize o yum para instalar a biblioteca ncurses e os seus arquivos de headers.

Captulo 9 - Roteiro de Atividades

proceda com a atualizao.

173

174

Introduo ao Linux

10
Configurar e utilizar os principais tipos de dispositivos, como unidades de CD/DVD,
pen drives, placas de rede, controladoras SCSI e placas de vdeo.

conceitos

Arquivos de dispositivos, mdulos, gerenciamento e configurao de dispositivos


e gerenciamento de energia.

Introduo
Suporte a dispositivos no Linux:

11 Como um dispositivo interage com o sistema operacional Linux?


Um driver no Linux pode ser:
11 Embutido no kernel.
11 Um mdulo do kernel.
O Linux, assim como outros sistemas operacionais modernos, capaz de suportar um
grande nmero de dispositivos de hardware. Particularmente nos ltimos anos, grandes
mudanas foram feitas no sistema, permitindo um melhor suporte a uma srie de dispositivos, tornando-os progressivamente plug-and-play. Embora esteja cada vez mais fcil configurar e utilizar um dispositivo no Linux, seja de forma automtica ou com a ajuda de algum
aplicativo grfico, abordaremos alguns conceitos por trs dessas facilidades e, sempre que
possvel, demonstraremos como configurar e utilizar os principais dispositivos sem fazer uso
de aplicativos grficos. Assim, o aluno estar se preparando para situaes em que esses
aplicativos no estejam disponveis (como em um servidor, por exemplo) ou quando a configurao automtica eventualmente no funcionar. Veremos como funciona o suporte aos
dispositivos no Linux abordando o kernel e seus subsistemas. Em seguida, veremos como
configurar e utilizar algumas das classes de dispositivos mais comuns.
Para que um sistema operacional seja capaz de utilizar um dispositiv, necessrio um
pequeno programa capaz de se comunicar com o dispositivo em questo, traduzindo requisies do sistema para comandos deste dispositivo. Esse programa conhecido como driver
e, no Linux, est intimamente ligado ao kernel, podendo inclusive estar embutido nele. No
entanto, como o nmero de dispositivos suportados bastante grande e embutir todos os

Captulo 10 - Configurao e utilizao de dispositivos de hardware

objetivos

Configurao e utilizao de
dispositivos de hardware

drivers diretamente no kernel o tornaria grande demais, foi criado um mecanismo que torna
175

possvel separar os drivers em pequenos arquivos chamados de mdulos, que podem ser
carregados e utilizados pelo kernel sob demanda. Uma vez carregados, esses mdulos funcionam como se fossem uma parte do kernel, sendo executados com os mesmos privilgios
que ele, o que conhecido como kernel-space. Usualmente, o kernel compilado de forma a
ter suporte aos principais dispositivos, como teclados, mouses, placas de rede, discos rgido,
etc. Os drivers desses dispositivos so embutidos diretamente no kernel e os drivers dos
demais dispositivos so disponibilizados como mdulos.

Exerccio de fixao 1 e
Verificando o kernel
Qual comando voc pode utilizar para verificar a verso do kernel em seu sistema?

Arquivos de dispositivos

Arquivos de dispositivos:
11 Permitem operaes como: abrir, fechar, ler e escrever;
11 Localizados no diretrio /dev.
11 Criados atravs do comando mknod.
11 Nmeros Major e minor utilizados pelo kernel para identificar o tipo de dispositivo
e o dispositivo em si, respectivamente;
11 Podem ser orientados poa bloco ou caractere.

Os projetistas do sistema Unix, no qual o Linux se baseia, tinham como princpio de projeto
a mxima de que tudo no Unix um arquivo. Com isso, pretendiam simplificar o desenvolvimento de aplicaes, oferecendo aos programadores uma interface com o sistema
onde todos os seus recursos so tratados como arquivos, isto , suportando as operaes
de abrir, fechar, ler e escrever. A grande maioria dos dispositivos no Linux est associada a
um arquivo especial no diretrio /dev por meio do qual os programas podem se comunicar
com estes dispositivos. Por exemplo, se um programador deseja escrever um programa que
leia um determinado dado de uma porta serial, basta fazer com que esse programa abra o
arquivo /dev/ttyS0 e leia os seus dados. As mesmas permisses aplicadas a arquivos comuns
tambm so aplicadas a arquivos de dispositivos. Sendo assim, possvel controlar qual
usurio ou grupo de usurios tem acesso a um dispositivo. Cada arquivo de dispositivo
criado por intermdio do comando mknod, e est associado a dois nmeros chamados de
major e minor. Esses nmeros so utilizados pelo kernel para identificar a qual dispositivo
esto associados. Alm disso, cada dispositivo pode ser do tipo block (quando manipulam
dados em blocos de 512 bytes ou mltiplos) ou character (quando manipulam dados byte a
byte). O primeiro tipo permite a leitura e a escrita de maneira aleatria (pode-se especificar
de onde se quer ler ou escrever). J no segundo, a leitura e a escrita s podem ser feitas de
forma sequencial.

Introduo ao Linux

A Tabela 10.1 mostra alguns dispositivos do Linux, com suas descries e arquivos associados.

176

Arquivo

Dispositivo

Descrio

hda

Disco ou unidade de CD/DVD IDE.

Disco IDE master conectado controladora IDE primria.

hda1

Primeira partio primria do


disco IDE master conectado
controladora IDE primria.

Os arquivos hda1 at hda4 so as parties primrias de um disco. A partir de


hda5 so as parties estendida e lgicas.

Dispositivo

Descrio

hdb

Disco ou unidade de CD/DVD IDE.

Disco IDE slave conectado controladora


IDE primria.

hdc

Disco ou unidade de CD/DVD IDE.

Disco IDE master conectado controladora IDE secundria.

hdd

Disco ou unidade de CD/DVD IDE.

Disco IDE slave conectado controladora


IDE secundria.

ttySO

Primeira interface serial.

As interfaces seriais so identificadas por


ttyS0, ttyS1 etc.

dsp0

Primeira placa de som.

mixer

Dispositivo de controle da placa


de som.

sda

Disco ou unidade de CD/DVD


SCSI ou pen drive.

Assim como os discos IDE, os discos SCSI


so identificados por sda, sdb etc. e as
parties so identificadas como sda1,
sda2 etc.

scd0

Unidade de CD/DVD SCSI.

Primeira unidade de CD/DVD SCSI. Os


demais so identificados por scd1, scd2, etc.

input/
mice

Mouse.

Mouse PS2 ou USB.

input/
event0

Teclado.

Teclado PS2.

cdrom

Unidade de CD/DVD IDE.

Link para hda, hdb, hdc ou hdd, pois a


unidade de CD/DVD tratada como um
disco IDE.

Exerccio de fixao 2 e
Arquivos de dispositivos
Descreva o que seriam os dispositivos abaixo:
11 Sda3
11 Hda2
11 Cdrom
11 Scd2
11 Dsp2

Mdulos
Mdulos so pequenos arquivos que contm trechos de cdigos que implementam funcionalidades do kernel. Eles fornecem suporte a dispositivos de hardware ou a funcionalidades do sistema operacional.Os mdulos utilizados pelo kernel so especficos para cada
verso e se encontram no diretrio /lib/modules/<versao_kernel>. Por meio dos comandos
insmod, modprobe, rmmod e lsmod possvel carregar mdulos no kernel, remover e listar os
mdulos em uso. Veremos a seguir como efetuar cada uma dessas operaes.

Captulo 10 - Configurao e utilizao de dispositivos de hardware

Tabela 10.1
Principais dispositivos do Linux.

Arquivo

177

Para listar todos os mdulos carregados pelo kernel, basta utilizar o comando lsmod,
conforme o exemplo abaixo:

# lsmod
Module Size Used by
lp 12164 0
nfs 208324 1
lockd 62472 2 nfs
sunrpc 144452 3 nfs,lockd
parport_pc 41540 1
parport 38856 2 lp,parport_pc
A sada do comando lsmod apresenta o nome dos mdulos, o seu tamanho em bytes, o nmero
de instncias dos mdulos que esto carregadas e quais so os outros mdulos que os utilizam,
j que um mdulo pode prover funes necessrias para outro mdulo. Observe tambm que o
nome de um mdulo o nome do arquivo que contm esse mdulo sem sua extenso.
Para carregar um mdulo manualmente, podemos utilizar os comandos insmod ou
modprobe. O comando insmod insere apenas o mdulo especificado na linha de comando,
enquanto o comando modprobe capaz de inserir o mdulo especificado e ainda carregar
de forma automtica os mdulos adicionais utilizados pelo mdulo especificado. possvel, tambm por meio desses comandos, passar alguns parmetros para o mdulo que
est sendo carregado. A sintaxe desses comandos apresentada a seguir:

# insmod <nome_do_modulo> [parametros]


# modprobe <nome_do_modulo> [parametros]
Para obter mais informaes sobre um mdulo, como por exemplo saber os parmetros que
ele aceita, podemos utilizar o comando modinfo. O comando do exemplo abaixo mostra as
informaes relativas ao mdulo lp:

# modinfo lp
filename: /lib/modules/2.6.13.2/kernel/drivers/char/lp.ko
alias: char-major-6-*
license: GPL
vermagic: 2.6.13.2 SMP preempt PENTIUM4 gcc-4.0
depends: parport

Introduo ao Linux

parm: reset:bool

178

parm: parport:array of charp


Para descarregar um mdulo da memria, utilizamos o comando rmmod. Convm notar
que, caso o mdulo esteja sendo utilizado por outro mdulo, o sistema no ir remov-lo. O comando modprobe pode ser utilizado para remover tanto um determinado mdulo
quanto os mdulos que dependem desse mdulo utilizando-se a opo -r, como no
exemplo abaixo:

# modprobe -r lp
Mdulos so especficos para cada verso do kernel.

So encontrados no diretrio /lib/modules/<verso do kernel>.


Comandos relacionados:
11 lsmod lista os mdulos carregados na memria;
11 insmod carrega um modulo;
11 modprobe carrega um mdulo e seus mdulos dependentes;
11 modinfo exibe informaes sobre um mdulo;
11 rmmod descarrega um mdulo da memria. O comando modprobe pode ser utilizado com a opo -r para descarregar um mdulo e seus mdulos dependentes.

Exerccio de fixao 3 e
Mdulos
11 Liste alguns mdulos carregados na memria.
11 Carregue algum mdulo.
11 Exibir informaes sobre algum mdulo.
11 Descarregue o mdulo anteriormente carregado.

Initrd
Imagine que o sistema de arquivos em que se encontram os mdulos do kernel esteja armazenado em um disco conectado a uma controladora de discos que necessita de um mdulo
do kernel para poder ser utilizada pelo sistema operacional. Temos, ento, um impasse. Para
resolver este problema, os programadores do kernel criaram o initrd (initial RAM disk).
O initrd um sistema de arquivos temporrio, que carregado em memria RAM durante
o boot do sistema operacional, no qual esto presentes todos os mdulos que o kernel
de boot de segundo estgio.
Como ter acesso a um disco SCSI durante o boot se o driver para esse dispositivo est

em um mdulo do kernel?
O kernel precisa do mdulo para acessar o disco SCSI, mas esse mdulo est armazenado
no disco SCSI e o kernel ainda no carregou o mdulo da controladora de discos SCSI.
Soluo: sistema de arquivos simples, que o carregador de boot entende, contendo os
mdulos necessrios para o sistema inicializar.

Gerenciando dispositivos
O gerenciamento de dispositivos no Linux feito de forma automtica por programas que
sero descritos neste tpico.

Hotplug
Desde a introduo da srie 2.6 do kernel do Linux, este passou a contar com um subsistema conhecido como hotplug, cuja funo detectar e gerar eventos sempre que um novo
dispositivo conectado a um barramento USB, PCI, SCSI, PCMCIA ou firewire. O hotplug

Captulo 10 - Configurao e utilizao de dispositivos de hardware

precisa no momento do boot. O initrd carregado juntamente com o kernel pelo carregador

179

tambm capaz de identificar os dispositivos presentes durante o processo de boot do


sistema. Isto feito atravs de mensagens enviadas aos barramentos citados. Quando
algum dispositivo conectado, ele responde mensagem fornecendo ao kernel um identificador (ID). Com esse ID, o kernel pode consultar uma tabela para identificar o dispositivo e
executar em espao de usurio um programa tambm chamado de hotplug, que capaz de
carregar os mdulos de controle de um dispositivo e configur-lo automaticamente.
Alm disso, o hotplug tambm pode executar scripts localizados nos diretrios /etc/hotplug
e /etc/hotplug.d. Um script pode, por exemplo, criar um cone no desktop para acesso a um
pen drive, sempre que este for conectado ao computador. Neste mdulo, no veremos a
criao de scripts para atuar em conjunto com o hotplug.

Udev
Tradicionalmente, o contedo do diretrio /dev era esttico, ou seja, durante a instalao,
um script criava todos os arquivos de dispositivos, mesmo que seus dispositivos associados no estivessem instalados no sistema. Alm disso, se fosse instalado um novo tipo
de dispositivo para o qual no existisse um arquivo de dispositivo correspondente, era
necessrio criar esse arquivo manualmente. Para evitar essa situao, foi criado um sistema
de arquivos conhecido como devfs, capaz de criar esses dispositivos automaticamente. Posteriormente, esse sistema foi substitudo por outro, conhecido como udev, que inicialmente
foi concebido para trabalhar em conjunto com o hotplug. Assim, quando um dispositivo era
detectado, o kernel disparava um processo tambm chamado de hotplug, que, por sua vez,
acionava o udev para que ele criasse o arquivo de dispositivo dinamicamente. Em algumas
distribuies, o udev trabalha em conjunto com o hotplug, enquanto em outras substitui
completamente o hotplug, executando suas funes.
Uma caracterstica do udev que podemos definir arquivos de dispositivos fixos para cada
dispositivo de hardware utilizado. Isto facilita a criao de scripts utilizados pelo udev, pois
caso tenhamos dois dispositivos do mesmo tipo, como por exemplo duas impressoras, pode
acontecer de, a cada boot do sistema, elas serem associadas a arquivos de dispositivos diferentes, o que dificultaria a automatizao de tarefas associadas a cada uma das impressoras
nesses scripts. Por exemplo, ao invs de utilizarmos os arquivos de dispositivo padro para
impressoras, /dev/lp0 e /dev/lp1, podemos definir atravs do udev os arquivos /dev/hp e /dev/
epson. Assim, nos scripts disparados pelo udev, as aes executadas pela impressora HP
estariam sempre associadas ao arquivo de dispositivo /dev/hp.
Outra caracterstica importante do udev o uso de regras que permitem a execuo de
aes quando um dispositivo conectado ao sistema. As regras do udev ficam localizadas
em arquivos dentro do diretrio /etc/udev/rules.d e possuem uma sintaxe especfica. Um
exemplo de regra, pode ser abrir o gerenciador de arquivos konqueror, sempre que um pen
drive for conectado. A regra do exemplo abaixo executa o script connect_pendrive.sh sempre
que um pen drive for conectado ao computador.

Introduo ao Linux

BUS=usb, ACTION==add, KERNEL==sd??, NAME=%k, RUN+=/usr/

180

local/bin/connect_pendrive.sh
A sintaxe das regras do udev bem intuitiva, como pode ser visto no exemplo acima, mas
no ser apresentada neste mdulo.

11 Deteco de dispositivos no Linux.

11 Plug and Play.


11 O suporte dado pelo kernel por intermdio do hotplug:
22 ID do dispositivo;
22 Verifica o ID em uma tabela.
11 Mdulo pode ser carregado automaticamente com o auxlio do programa hotplug.
O diretrio /dev passou a ser criado em memria, contendo apenas os arquivos de dispositivos que realmente estavam conectados ao sistema. Nas verses do kernel posteriores
verso 2.6.15, o programa hotplug passou a ser substitudo por uma nova verso do udev,
capaz de fazer todas as funes anteriormente desempenhadas pelos dois programas, isto
, carregar mdulos, configurar o dispositivo e criar os arquivos de dispositivo.
O contedo do diretrio /dev esttico.

Desvantagens:
11 Centenas de arquivos de dispositivos eram criados, mas muitos jamais seriam utilizados.
11 Um novo tipo de dispositivo poderia necessitar que um arquivo de dispositivo fosse
criado manualmente.
Solues:
11 devfs
11 udev (evoluo do devfs, com suporte s facilidades do hotplug).

Exerccio de fixao 4 e
Gerenciando dispositivos
Descreva a diferena entre hotPlug e udev.

Identificando e configurando dispositivos


encarregam de fazer todo o trabalho de identificao e configurao de dispositivos.
No entanto, em alguns poucos casos, ainda necessria a interveno do administrador
para configurar determinados dispositivos. Na maioria dos casos, isto se deve ao fato de que
os mdulos necessrios para suportar estses dispositivos no esto disponveis no sistema.
Algumas ferramentas podem ser bastante teis nessa tarefa, como veremos a seguir.
Para identificar os dispositivos PCI conectados, podemos utilizar o comando lspci, que l
informaes de arquivos localizados no diretrio /proc e as apresenta em um formato mais
apropriado. O diretrio /proc um sistema de arquivos virtual criado pelo kernel durante o
boot, que armazena seus dados em memria RAM.
O comando lspci na sua forma mais bsica traz a posio do dispositivo no barramento,
seguida de sua descrio, como mostra o exemplo abaixo:

# lspci
0000:00:00.0 Host bridge: Silicon Integrated Systems [SiS]
740 Host (rev 01)
0000:00:01.0 PCI bridge: Silicon Integrated Systems [SiS]

Captulo 10 - Configurao e utilizao de dispositivos de hardware

Conforme foi visto, cada vez mais as novas verses de kernel e programas associados se

181

Virtual PCI-to-PCI bridge (AGP)


0000:00:02.5 IDE interface: Silicon Integrated Systems
[SiS] 5513 [IDE]
0000:00:02.7 Multimedia audio controller: Silicon
Integrated Systems [SiS] Sound Controller (rev a0)
0000:00:03.0 USB Controller: Silicon Integrated Systems
[SiS] USB 1.0 Controller (rev 0f)
0000:00:03.3 USB Controller: Silicon Integrated Systems
[SiS] USB 2.0 Controller
0000:00:04.0 Ethernet controller: Silicon Integrated
Systems [SiS] SiS900 PCI Fast Ethernet (rev 90)
0000:01:00.0 VGA compatible controller: Silicon Integrated
Systems [SiS] 65x/M650/740 PCI/AGP VGA Display Adapter
No exemplo acima, podemos ver que o comando lspci lista tambm um dispositivo AGP
(a placa de vdeo), os controladores USB e alguns subsistemas da placa-me, como o controlador IDE e o Host Bridge.
Apesar das facilidades do hotplug, algumas vezes necessrio que o administrador do

sistema identifique algum dispositivo manualmente.


Para listar os dispositivos conectados ao barramento PCI:
11 O comando lspci l dados do diretrio /proc/bus/pci e apresenta os dispositivos instalados.
Outros comandos teis para verificao de informaes sobre os dispositivos instalados so
listados a seguir:
11 lscpu exibe diversos parmetros da CPU, que so obtidos atravs do arquivo /proc/cpuinfo.
11 lshw exibe informaes detalhadas a respeito do hardware instalado no computador.
Entre as informaes exibidas, podemos destacar: dados sobre a placa-me, CPU,
memria, barramentos, interfaces, discos, entre outros.
11 lsusb exibe informaes sobre os barramentos USB disponveis no sistema e sobre os
dispositivos a eles conectados.
O diretrio /proc tambm uma fonte de informaes sobre o hardware instalado no computador. Nele temos diversos arquivos, entre os quais podemos destacar:
11 /proc/cpuinfo arquivo que exibe informaes sobre a CPU.

Introduo ao Linux

11 /proc/meminfo arquivo que exibe informaes sobre a memria.


11 /proc/devices arquivo que exibe informaes sobre dispositivos ativos no sistema.
11 /proc/filesystems arquivo que exibe a lista de sistemas de arquivos suportados
pelo kernel.
11 /proc/interrupts arquivo que exibe a lista de interrupes e seus respectivos dispositivos.
11 /proc/acpi diretrio que contm informaes sobre o sistema de gerenciamento de
energia Advanced Configuration and Power Interface (ACPI).
182

11 /proc/bus diretrio que contm informaes sobre dispositivos PCI, USB, entre outros.
11 /proc/net diretrio que contm informaes sobre os protocolos de rede disponveis
no sistema.
11 /proc/sys diretrio que, alm de fornecer informaes sobre o sistema, permite que
parmetros de configurao do kernel sejam alterados.
Alm de fornecer diversas informaes sobre o hardware do sistema, ainda possvel configurarmos diversos parmetros do kernel atravs do diretrio /proc. No entanto, neste curso
no veremos a parte de configurao do kernel.
O diretrio /proc contm diversas informaes sobre o sistema, com destaque para

os arquivos:
11 /proc/cpuinfo
11 /proc/meminfo
11 /proc/devices
11 /proc/filesystems
11 /proc/interrupts
11 /proc/acpi
11 /proc/bus
11 /proc/net
11 /proc/sys
Os kernels a partir da verso 2.6 apresentam tambm o diretrio /sys, que contm informaes
sobre dispositivos de maneira anloga ao diretrio /proc.

Unidades de CD/DVD
Unidades de CD/DVD IDE:

11 Barramento primrio:

22 Slave hdb
11 Barramento secundrio:
22 Master hdc
22 Slave hdd
Unidades de CD/DVD SCSI:
11 Primeiro dispositivo detectado: scd0
11 Segundo dispositivo detectado: scd1
O dispositivo configurado durante a instalao:
11 Arquivo /etc/fstab
Unidades de CD/DVD do tipo IDE so suportadas de maneira praticamente transparente
pelo kernel. Quando conectamos uma unidade de CD/DVD ao computador, esta associada
a um arquivo de dispositivo de acordo com a sua posio no barramento IDE. Se a unidade
estiver conectada ao barramento primrio, ser associada aos arquivos hda ou hdb, caso
esteja configurada como master ou slave, respectivamente. J se estiver conectada ao barramento secundrio, ser associada aos arquivos hdc ou hdd, caso esteja configurada como

Captulo 10 - Configurao e utilizao de dispositivos de hardware

22 Master hda

master ou slave, respectivamente.


183

Unidades de CD/DVD do tipo SCSI necessitam que a interface SCSI, onde esto conectados,
tenha sido corretamente reconhecida, e que o mdulo que suporta unidades de CD/DVD
SCSI tenha sido carregado, o que, normalmente, acontece de forma automtica. Uma vez
reconhecidas, as unidades de CD/DVD SCSI so associadas aos seus arquivos de dispositivos: scd0 para a primeira unidade, scd1 para a segunda e assim por diante.
Durante a instalao do Linux, o programa instalador identifica em que tipo de barramento
e em que posio a unidade de CD/DVD se encontra e configura o arquivo /etc/fstab de
acordo com essa localizao.
O programa instalador pode tambm criar o link /dev/cdrom, apontando para o arquivo real
correspondente unidade de CD/DVD. O arquivo /etc/fstab lido por alguns scripts de inicializao durante o boot, e pelos comandos mount e umount. Neste arquivo so relacionados os
arquivos de dispositivos, o seu ponto de montagem, o tipo de sistema de arquivos, as opes
de montagem, a opo de dump e a ordem de verificao do sistema de arquivos. Para obter
mais detalhes sobre o arquivo /etc/fstab, sua pgina de manual pode ser consultada.
Durante o boot, o kernel identifica os dispositivos conectados, listando-os um a um. Estas
informaes podem ser recuperadas com o comando dmesg. O exemplo abaixo mostra o
trecho que lista a unidade de CD/DVD IDE.

...
Probing IDE interface IDE0...
hdb: HL-DT-ST DVDRAM GSA-4163B, ATAPI CD/DVD-ROM drive
hdb: ATAPI 40X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache,
UDMA(33)
O arquivo de dispositivo pode ser um link:

11 /dev/cdrom
O comando dmesg pode ajudar a identificar qual o dispositivo correspondente unidade
de CD/DVD.

...
Probing IDE interface IDE0...
hdb: HL-DT-ST DVDRAM GSA-4163B, ATAPI CD/DVD-ROM drive
hdb: ATAPI 40X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache,
UDMA(33)
Observe que, no trecho acima, esto listados um disco IDE (hda) e suas parties, e o drive
de CD/DVD (hdb). Ao contrrio de discos IDE, CDs no apresentam parties, portanto,
so acessados por intermdio de seu arquivo raiz, que no exemplo acima seria /dev/hdb.
Assim como ocorre com discos IDE, para podermos ler o contedo de um CD ou DVD, temos
Introduo ao Linux

que mont-lo antes, utilizando o comando mount. Supondo que a unidade de CD/DVD

184

esteja associada ao arquivo /dev/hdb, poderamos mont-lo no diretrio /mnt/cdrom com o


seguinte comando:

# mount /dev/hdb /mnt/cdrom


Poderamos alterar o arquivo /etc/fstab, introduzindo a linha abaixo, para que a unidade de
CD/DVD seja montada automaticamente no boot.

/dev/hdb /mnt/cdrom iso9660 ro,user,noauto 0 0


Nesta linha, indicamos o dispositivo, o seu ponto de montagem, o tipo de sistema de
arquivos (CDs e DVDs utilizam sempre o tipo iso9660), seguido das opes de montagem. No
caso de CDs e DVDs, as opes mais utilizadas so: ro (read only), noauto (o dispositivo no
montado automaticamente durante o boot) e user (permite que qualquer usurio monte
o dispositivo e no apenas o usurio root). Com o arquivo /etc/fstab configurado adequadamente, um usurio do sistema poderia montar a unidade de CD/DVD indicando apenas o
ponto de montagem, como mostra o exemplo abaixo:

$ mount /mnt/cdrom
Para ejetarmos um CD ou DVD, devemos desmontar a unidade antes, utilizando o comando
umount, como mostra o exemplo abaixo:

$ umount /mnt/cdrom
importante ressaltar que o Linux no permite que um dispositivo seja desmontado se
algum arquivo contido nele estiver sendo utilizado por algum recurso do sistema. Assim, o
simples fato de existir um shell aberto com o diretrio corrente pertencente ao dispositivo
impede que o mesmo seja desmontado. Alm disso, o boto eject da unidade de CD/DVD
no funciona enquanto o dispositivo estiver montado.

Montando uma unidade de CD/DVD:

mount /dev/hdb /mnt/cdrom


Configurar o fstab para facilitar o uso:

/dev/hdb /mnt/cdrom iso9660 ro,user,noauto

Com isso, temos o uso simplificado por parte de qualquer usurio:

mount /mnt/cdrom
Aps o uso do CD ou DVD, a unidade deve ser desmontada com o comando abaixo:

umount /mnt/cdrom

fechados. Alm disso, no possvel utilizar o boto eject se o dispositivo estiver montado.

Dispositivos de armazenamento USB


O dispositivo de armazenamento USB suportado pelo kernel por meio do mdulo

usb-storage, que, por sua vez, utiliza subsistema SCSI.


Pen drives so tratados como discos SCSI:
11 /dev/sda1
11 /dev/sda2
Os dispositivos de armazenamento USB so suportados por meio do mdulo usb-storage
que, por sua vez, utiliza o subsistema SCSI. Assim, os dispositivos de armazenamento USB
como pen drives so tratados como se fossem discos SCSI, utilizando como arquivos de
dispositivos os tradicionais /dev/sdXY (onde X uma letra e Y um nmero). Ao conectarmos
um pen drive, o subsistema hotplug detecta este evento, identifica o dispositivo, carrega os
mdulos necessrios e monta o dispositivo. O processo de montagem semelhante ao de
unidades CD/DVD, mudando apenas o arquivo de dispositivo associado. Podemos verificar
se o sistema reconheceu o pen drive executando o comando dmesg. Em seguida, podemos

Captulo 10 - Configurao e utilizao de dispositivos de hardware

Para desmontar a unidade de CD/DVD, todos os arquivos do dispositivo devem estar

185

verificar qual arquivo de dispositivo foi designado para o pen drive, mediante as informaes obtidas no arquivo /proc/partitions. Este arquivo lista os discos e parties encontrados
no sistema, como mostra o exemplo abaixo:

# cat /proc/partitions
Major Minor Blocks Name
3 0 58605120 hda
3 1 25438896 hda1
3 2 594405 hda2
8 0 1993728 sda
8 1 1993724 sda1
No exemplo acima, podemos observar que a mquina possui um disco IDE com duas parties e um pen drive de 2 GB com uma partio.
Os pen drives geralmente utilizam o sistema de arquivos VFAT para manter a compatibilidade com sistemas Windows, mas nada nos impede de criar nelas um sistema de arquivos
do tipo ext3 ou ext4.
11 O hotplug pode carregar automaticamente os mdulos necessrios para o uso de

pen drives.
11 O comando dmesg pode informar se o sistema reconheceu o dispositivo.
11 O arquivo /proc/partitions mostra qual o arquivo de dispositivo est associado ao pen
drive.

# cat /proc/partitions
Major Minor Blocks
Name
3 0

58605120

hda

3 1

25438896

hda1

3 2

594405 hda2

8 0

1993728 sda

8 1

1993724 sda1

Interfaces de rede
11 Interfaces de rede possuem um bom suporte no Linux.

11 No possuem um arquivo de dispositivo associado no diretrio /dev.


11 O acesso a esses dispositivos se faz por meio de sockets.

Introduo ao Linux

11 Interfaces ethernet so usualmente identificadas pelo sistema como ethX.


11 Interfaces wireless so usualmente identificadas pelo sistema como wlanX.
Interfaces de rede so, provavelmente, um dos dispositivos mais bem suportados pelo Linux.
Desde o seu surgimento at hoje, a Internet o principal meio de comunicao entre os desenvolvedores do sistema, logo, natural que seja dada uma ateno especial para os dispositivos
de rede. Usualmente, as interfaces de rede so detectadas pelo subsistema hotplug/udev
durante o boot, e seus mdulos so automaticamente carregados. Ao contrrio de outros dispo186

sitivos, as interfaces de rede no possuem um arquivo de dispositivo a elas associado. O acesso


a este tipo de dispositivo acontece por outro mtodo, conhecido como sockets.
Usualmente, as interfaces de rede que utilizam o padro ethernet so nomeadas como
ethX, onde X um nmero inteiro. J as interfaces de rede sem fio so usualmente nomeadas como wlanX, embora tambm possam ser nomeadas utilizando o mesmo padro das
interfaces ethernet.

Exibindo as interfaces de rede do sistema


Para verificarmos as interfaces de rede disponveis no sistema, podemos listar contedo do
arquivo /proc/net/dev ou utilizar o comando ip, como mostra o exemplo abaixo:

# ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
link/ether 08:00:27:de:d1:99 brd ff:ff:ff:ff:ff:ff
Observe que so listados dois dispositivos de redes (lo e eth0). O dispositivo lo refere-se
interface de loopback, que um dispositivo virtual utilizado para comunicao local entre aplicaes. Logo, o sistema acima possui apenas uma placa de rede, identificada pelo nome eth0.
O comando acima mostra ainda o endereo fsico (MAC Address) das interfaces listadas.
Este e outros comandos de configurao de interfaces de rede sero vistos em detalhes em
outro mdulo. Veremos aqui apenas como fazer configuraes simples de rede.
11 O arquivo /proc/net/dev contm os dispositivos de redes disponveis no sistema.

11 O comando ip link list tambm retorna dados dos dispositivos de redes do sistema.

# ip link list

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00


2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:02:55:5d:07:c6 brd ff:ff:ff:ff:ff:ff

Gerenciando as interfaces de rede do sistema


O comando do exemplo abaixo ativa a interface de rede eth0, utilizando o endereo IP
192.168.0.1 e a mscara de rede 255.255.255.0:

# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up


Para desativarmos a interface eth0, podemos utilizar tambm o comando ifconfig como
mostra o exemplo abaixo:

# ifconfig eth0 down


Para tornar estas modificaes permanentes, devemos editar os arquivos de configurao
ifcfg-ethX dentro do diretrio /etc/sysconfig/network-scripts, o que pode ser feito manualmente ou com o auxlio de um programa de configurao grfico, tpico que tambm no

Captulo 10 - Configurao e utilizao de dispositivos de hardware

1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue

ser abordado neste mdulo.


187

O principal comando para ativar e modificar endereos de redes o ifconfig:

# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up


# ifconfig eth0 down
Configuraes permanentes:

/etc/sysconfig/network-scripts/ifcfg-ethX

Placas SCSI
11 O padro Small Computer System Interface (SCSI) estabelece um conjunto de inter-

faces e comandos para transferncia de dados entre dispositivos.


11 O Linux oferece suporte a vrios tipos de controladoras SCSI.
11 A ordem de deteco dada pelo ID do disco no barramento.
11 Discos SCSI tambm podem ser montados e utilizados da mesma maneira que discos IDE.
11 Eventualmente, torna-se necessrio o uso de initrd para carregar os mdulos SCSI da
controladora durante o processo de boot do sistema.
O padro SCSI estabelece um conjunto de interfaces e comandos para transferncia de
dados entre dispositivos. Este padro geralmente utilizado em servidores, que necessitam
de discos de alto desempenho. Alm disso, o preo de dispositivos SCSI no os torna atraentes para uso em desktops.
Para que um disco SCSI funcione, ele deve ser conectado a uma controladora de discos compatvel com o padro SCSI. O Linux suporta
vri
os tipos de placas controladoras SCSI e o subsistema hotplug capaz de detectar e carregar o mdulo apropriado para cada controladora.
Ao contrrio de discos IDE, em sistemas SCSI
no existe o conceito de
controladoras primria e secundria e discos master e slave. Um disco em um barramento SCSI nomeado
de acordo com a ordem na qual detectado. Assim, o primeiro disco SCSI associado ao
dispositivo /dev/sda; o segundo ao /dev/sdb, e assim por diante. A ordem de deteco dada
pelo ID do disco no barramento (uma configurao feita por meio de jumpers no disco).
Discos SCSI tambm podem ser montados e utilizados da mesma maneira que discos IDE.
A nica complicao que aparece fica por conta da situao em que temos o nosso sistema
de arquivos montado em um disco SCSI. Neste caso, pode ser necessrio acrescentar numa
imagem initrd os mdulos de suporte controladora SCSI. Este procedimento no ser descrito aqui, mas o aluno que desejar mais informaes pode comear consultando o manual
de sistema do comando mkinitrd.

Placas de vdeo
O Linux possui suporte a placas de vdeo em trs modos:

11 Modo texto (suporte nativo).

Introduo ao Linux

11 Modo framebuffer (o suporte deve ser habilitado no kernel).

188

11 Modo grfico (para suportar a interface grfica necessrio habilitar o servidor Xorg).
O Linux pode suportar placas de vdeo em trs modos distintos: texto, framebuffer e grfico.
O modo texto suporta apenas texto, podendo utilizar tambm algumas cores. neste modo
que utilizamos a interface de linha de comando. O suporte para o modo texto nativo no
kernel. O modo framebuffer uma espcie de melhoria do modo texto, onde os programas

acessam diretamente a memria de vdeo da placa, o que possibilita que apresentem imagens
e grficos no que seria apenas um terminal com suporte a texto. Usualmente, esse modo
utilizado pelos kernels das distribuies Linux para a criao de processos de boots grficos.
Esse modo exige o suporte no kernel para uma placa especfica ou um padro de vdeo conhecido como VESA. O modo grfico, ao qual daremos mais destaque, necessita que a placa de
vdeo seja configurada de modo adequado, para que seja suportada pelo servidor Xorg.
A princpio, o Xorg no necessita de nenhum mdulo do kernel, j que possui seus prprios
mdulos. Os mdulos do Xorg se encontram no diretrio /usr/X11R6/lib/modules/drivers ou
no diretrio /usr/lib/xorg/modules/drivers, e so nomeados utilizando o padro
<nome_do_mdulo>_drv.so. Os mdulos do Xorg so bastante genricos. O mdulo trident,
por exemplo, suporta vrias placas com chipsets da Trident. Para obter a lista de todas as
placas suportadas por um mdulo, basta consultar sua pgina de manual no sistema.
possvel utilizar o comando Xorg para gerar automaticamente um arquivo de configurao,
como mostra o exemplo abaixo:

# Xorg -configure
Este comando ir gerar um arquivo de configurao de exemplo, chamado xorg.conf.new
no diretrio /root, que depois dever ser copiado para o diretrio /etc/X11, com o nome de xorg.
conf. O mdulo configurado para a placa de vdeo detectada pode ser encontrado na seo
device do arquivo xorg.conf. Neste mdulo no veremos a parte de configurao do Xorg.
O Xorg possui os seus prprios mdulos:

11 /usr/X11R6/lib/modules/drivers
11 /usr/lib/xorg/modules/drivers
Nome dos arquivos de drivers:
11 <nome_do_mdulo>_drv.so
Um mdulo pode suportar diversos modelos de placas do mesmo fabricante.
Configurao automtica do Xorg:

A grande maioria das placas tambm funciona com o mdulo VESA, que possui suporte
a um conjunto mnimo de funcionalidades definidas pelo padro VESA. Algumas placas,
no entanto, necessitam de um suporte extra do kernel para que o sistema seja capaz de
utilizar algumas funcionalidades avanadas disponibilizadas pelo hardware, como acelerao de vdeo e funes 3D. Algumas placas com chipsets da ATI e da NVIDIA necessitam
ainda de um mdulo especial para o Xorg e outro para o kernel. Estes mdulos especiais so
disponibilizados pelo fabricante na forma de arquivos de instalao binrios.
Interface grfica Xorg tem funcionalidades avanadas de algumas placas dependem
do kernel:
11 Acelerao de vdeo.
11 Funes 3D.
Placas NVIDIA e ATI possuem um mdulo para o Xorg e outro para o kernel (este ltimo
geralmente disponibilizado pelo fabricante em modo binrio).

Captulo 10 - Configurao e utilizao de dispositivos de hardware

11 Xorg -configure

189

Gerenciamento de energia
Praticamente todos os componentes de hardware possuem funcionalidades que visam diminuir
o consumo de energia em situaes onde esto ociosos. Para que estas funcionalidades possam
ser utilizadas preciso que algum sistema de gerenciamento de energia seja utilizado. O Linux
utiliza basicamente dois padres de gerenciamento de energia, que sero descritos a seguir.

Advanced Power Management (APM)


11 API desenvolvida pela Intel e pela Microsoft, que possibilita ao sistema operacional

gerenciar o consumo de energia atravs de funcionalidades do BIOS.


11 Com o surgimento do padro ACPI, o APM foi descontinuado e o suporte no Linux s
foi mantido at a verso 2.6.39 do kernel.
O APM uma API (Application Program Interface) desenvolvida pela Intel e pela Microsoft,
que possibilita ao sistema operacional gerenciar o consumo de energia atravs de funcionalidades do BIOS. O principal objetivo do APM diminuir o consumo de energia do computador,
executando aes como reduo do clock da CPU, desativao de discos e do monitor de
vdeo, entre outras. O Linux implementa o APM atravs do daemon apmd, mas necessrio
tambm que o suporte ao APM seja habilitado no kernel. Com o surgimento do padro ACPI,
o APM foi descontinuado e o suporte no Linux s foi mantido at a verso 2.6.39 do kernel.

Advanced Configuration and Power Interface (ACPI)


11 Padro criado pela Intel, Microsoft e Toshiba, que permite gerenciar o consumo de

energia dos dispositivos de hardware de um computador.


11 Camada do sistema operacional que permite o controle de funcionalidades implementadas. nos dispositivos de hardware, visando controlar o consumo de energia de
forma racional.
11 configurado para executar aes quando ocorrem determinados eventos.
O ACPI um padro criado pela Intel, Microsoft e Toshiba, que permite gerenciar o consumo
de energia dos dispositivos de hardware de um computador. O ACPI implementado como
uma camada do sistema operacional, que permite o controle de funcionalidades implementadas nos dispositivos de hardware, visando controlar o consumo de energia de forma
racional. O ACPI, por possuir mais recursos e ser um padro mais novo que APM, deve ser
preferencialmente ativado no sistema, apesar de os dois poderem ser utilizados em conjunto.
O ACPI implementado no Linux pelo daemon acpid, que configurado para executar aes
quando ocorrem determinados eventos. As aes que so executadas pelo acpid so definidas
em arquivos dentro do diretrio /etc/acpi/actions e os eventos so definidos em arquivos
dentro do diretrio /etc/acpi/events. O exemplo abaixo mostra o contedo do arquivo
/etc/acpi/events/powerbtn, evento que disparado quando o boto de power pressionado.

Introduo ao Linux

event=button[ /]power

190

action=/etc/acpi/actions/powerbtn.sh
Como pode ser visto, o script /etc/acpi/actions/powerbtn.sh executado sempre que o evento
associado ao boto de power for detectado. O contedo deste script no ser exibido aqui
devido ao seu tamanho, mas sua funo desligar o sistema operacional de forma correta
para que dados em memria no sejam perdidos ou corrompidos.

Roteiro de Atividades 10
Atividade 10.1 Descobrindo os dispositivos detectados pelo kernel
Durante o boot de um sistema Linux, o kernel automaticamente detecta uma srie de dispositivos. Voc seria capaz, utilizando o comando dmesg, de identificar os discos IDE presentes
no seu sistema (HDs e unidades de CD/DVD)?

Atividade 10.2 Verificando os mdulos carregados


Verifique os mdulos carregados no sistema, selecione trs mdulos e obtenha mais informaes sobre eles.

Atividade 10.3 Identificando os dispositivos PCI


Identifique os dispositivos PCI conectados ao seu computador. Qual a placa de vdeo?
E a placa de rede?

Atividade 10.4 Utilizando um pen drive


Nesta atividade o aluno deve solicitar ao instrutor um pen drive.
1. Antes de inserir o pen drive, verifique o contedo do arquivo /proc/partitions.
2. Insira o pen drive e, utilizando o comando dmesg, verifique se o kernel o detectou oedispositivo.
3. Verifique novamente o contedo do arquivo /proc/partitions.
4. Monte o pen drive e acesse o seu contedo.
5. Desmonte o pen drive.

Atividade 10.5 Verificando e identificando as placas de rede


Verifique os dispositivos de rede instalados no seu sistema. Quantas placas Ethernet
o sistema possui?

Atividade 10.6 Identificando a placa grfica e seu driver


Esta atividade permite a deteco e a identificao da placa de vdeo e a verificao do driver
usado pelo ambiente grfico. Ela pode no funcionar corretamentemnum ambiente virtual.

srio reiniciar o computador utilizando o comando telinit 3. Como usurio root, execute o
comando X configure, que gerar um arquivo de configurao no diretrio /root. Identifique
na sesso Device o driver de vdeo que foi configurado.

Captulo 10 - Roteiro de Atividades

Certifique-se de que o ambiente grfico no est sendo executado. Talvez seja neces-

191

192

Introduo ao Linux

Bibliografia
11 MEADORS, Todd. Guide to Linux Shell Script Programing. Thompson Course
Technology. 2003.
11 TANEMBAUM, Andrew S. Sistemas Operacionais Modernos. 3a Edio.
Pearson. 2010.
11 JARGAS, Aurlio Marinho. Shell Script Profissional. Novatec. 2008.
11 GITE, Vivek G. Linux Shell Scripting Tutorial. A beginners handbook.
Disponvel em: <http://www.dis.uniroma1.it/~bordino/shell-tutorial.pdf>.
Acessado em abril 2012.
11 KOCHAN, Stephen G.; WOOD, Patrick H. Exploring the Unix System, SAMS.
Prentice Hall, 1996.
11 JANG, Michael. Dominando Red Hat Linux 9. Rio de Janeiro: Editora Cincia
Moderna, 2003.
11 PEEK, Jerry, et alli. Learning Unix Operating System. OReilly & Associates,
2002.
11 KDE Project.
http://www.kde.org/
11 Red Hat, Inc., Fedora Project.
http://fedora.redhat.com/
11 Red Hat, Inc., Red Hat Linux 9: Red Hat Linux Getting Started Guide.
http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/gettingstarted-guide/
11 Red Hat, Inc., Red Hat Linux 9: Red Hat Linux x86 Installation Guide.
http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/install-guide/
11 The XFree86 Project, Inc., XFree86(TM).
http://www.xfree86.org/
11 TLDP, The Linux Documentation Project.
11 Informaes em portugus sobre Linux.
http://br-linux.org/

Bibliografia

http://www.tldp.org/

193

11 ndice das mais diversas distribuies Linux.


http://www.linux.org/
11 Informaes em ingls sobre Linux.
http://www.linuxjournal.com/
http://www.linuxcentral.com/_v3/
11 ndice de listas de hardware compatvel.
http://www.linux-drivers.org/
11 Free Software Foundation.
http://www.fsf.org/
11 Desenvolvimento de software livre.
http://sourceforge.net/
11 ndice de atualizaes de software Unix/Linux.
http://freshmeat.net/
11 Comunidade/Frum brasileiro de Linux.
http://www.vivaolinux.com.br/
11 Sistema Operacional Livre GNU Unix Compatvel.
http://www.gnu.org/
11 Licena GPL Verso 3.
http://gplv3.fsf.org/
11 Fabricante do VMware.
http://www.vmware.com/
11 Home page do desktop KDE.
http://www.kde.org
11 Home page do desktop Gnome.
http://www.gnome.org
11 Documentao Linux em geral.
http://tldp.org/
11 The Gnu Operating System Repositrio de software livre.
http://www.gnu.org
11 Fabricante do flash player para o Mozilla.
http://www.adobe.com
11 Fabricante do navegador Mozilla.
http://www.mozilla.com
11 The Linux Documentation Projetc.
http://www.tldp.org/
11 X.Org Foundation.
Introduo ao Linux

http://www.x.org

194

Dbora
Arthur Mendes
ChristinaPeixoto
Muchaluat
possui
Saade
mais

professora
de 26 anosassociada
de experincia
do Departamento
na rea de
de
Redes
Cincia
de da
Comunicao
Computaode
da Dados
Universie
dade
Engenharia
FederaldeFluminense
Sistemas, com
(UFF).
Disserta engenheira
o de Mestrado
de computao
em Anlise
formada
de Perforpela
PUC-Rio
mance de
e possui
Sistemas
mestrado
Distribudos,
e doutorado
no
em
Instituto
informtica
Militar pela
de Engenharia
mesma universi- IME.
dade. bolsista
Participou
do desenvolvimento
de produtividade
e implantao
em Desenvolvimento
das primeiras
Tecnolgico
redes
come tecnologias
Extenso Inovadora
ATM, Framepelo
Relay,
CNPq
IP/ MPLS.
e foiFoi
Jovem
consultor
Cientista
dedo
grandes
Estadoprojetos
do Rio decomo
Janeiro
o Backbone
pela Faperj.IPSuas
do Plano
reas
Nacional
de pesquisa
de so
Banda
redes
Larga
de computadores,
(PNBL) da Telebrs.
redesTrabalhou
sem fio, sistepor
22
mas
anos
multimdia
no setorede
hipermdia,
Telecomunicaes
TV digital da
interativa
Embratel,
e telemediatuando
na
cina.
prospeco
J coordenou
de novas
diversos
tecnologias
projetos de
para
pesquisa
as Redes
financiados
de Nova
Gerao
pelo CNPq
NGN.
e Faperj
Participou
e foi coordenadora
de testes e do
verificaes
projeto piloto
de requiEdusitos
roam-br,
de RFPs,
financiado
nos pases:
pela RNP
EUA,e Canad,
realizadoJapo,
em parceria
Frana,com
Espaa
nha
UFMS,
e UFRJ
Mxico.
e diversas
Atuou outras
no desenvolvimento
instituies, implantando
de sistemas
o serno
CPqD
vio piloto
- Campinas
eduroam
(SP).
no Brasil.

Andreia Campanha
Ricardo
Gentil Bonfante
Carrano
possui
engegranheiro de
duao
emtelecomunicaes
Bacharelado em formado
Cincias
em Computao
de
1995 pela Universidade
pela Universidade
Federal
Fluminense.
Estadual
deEm
Londrina,
2008, obteve
mestrado
o ttulo
e
de Mestre em
doutorado
em Engenharia
Cincias da
deCompuTelecomunicaes
tao
e Matemtica
pela mesma
Computacional
instituio
e atualmente
pela
Universidade
cursadeo So
doutorado
Paulo. Atuem
almente
Computao,
professora/pesquisadora
tambm na UFF, ondeda
atua
Universidade
como Professor
Federal
do Departamento
de Mato Grosso.
de Tem
Engenharia
experincia
de Telecomunicaes.
na rea de Cincia
Foi
da
empresrio
Computao,
e participou
com nfase
da implantao
em Inteligncia
de provedores
Artificial, atude
ando
acessoprincipalmente
no incio da Internet
nos seguintes
comercial
temas:
no Brasil,
Processamento
em 1995.
de
Atuou
Lngua
como
Natural,
Engenheiro
Minerao
de Redes
de Textos
para ae ONG
Aprendizado
internaciode
Mquina.
nal One Laptop
Atua na
perEducao
Child (OLPC)
a Distncia
e j participou
como de
Coordenadiversos
dora
projetos
da Especializao
de pesquisa financiados
em Informtica
pela RNP,
na Educao.
pelo MEC Atuou
e por
tambm
empresascomo
privadas.
instrutora dos cursos de Introduo ao Linux
da Escola Superior de Redes na Unidade de Cuiab.
Edelberto Franco Silva se tornou
Bacharel em Sistemas de Informao
pela Faculdade Metodista Granbery
em 2006, e obteve o ttulo de Mestre
em Computao pela Universidade
Federal Fluminense em 2011. Atualmente Doutorando em Computao
pela Universidade Federal Fluminense. Participou de diversos projetos de pesquisa, possuindo experincia na rea
de Cincia da Computao, com nfase em redes, atuando
principalmente nos temas relacionados a redes sem fio,
Internet do Futuro e segurana.

CPqD - Campinas (SP).

e Pesquisa qualificada como


uma Organizao Social (OS),
sendo ligada ao Ministrio da
Cincia, Tecnologia e Inovao
(MCTI)

responsvel

pelo

Programa Interministerial RNP,

Introduo

Este curso destinado a usurios, especialistas de suporte e desenvolvedores de software que desejam aprender
a utilizar o Linux, um ambiente computacional moderno,
gil e com um sistema operacional extremamente estvel e verstil. O curso destina-se tambm aos administradores de sistemas Windows e aos profissionais que desejam iniciar os estudos para a certificao LPIC1, do Linux
Professional Institute.
Este livro inclui os roteiros das atividades prticas e o contedo dos slides apresentados em sala de aula, apoiando
profissionais na disseminao deste conhecimento em
suas organizaes ou localidades de origem.

Introduo ao Linux

Andreia Gentil Bonfante possui graduao em Bacharelado em Cincias


de Computao pela Universidade
Estadual de Londrina, mestrado e
doutorado em Cincias da Computao e Matemtica Computacional
pela Universidade de So Paulo. Atualmente professora/pesquisadora da Universidade Federal de Mato Grosso. Tem experincia na rea de Cincia
da Computao, com nfase em Inteligncia Artificial, atuando principalmente nos seguintes temas: Processamento
de Lngua Natural, Minerao de Textos e Aprendizado de
Mquina. Atua na Educao a Distncia como Coordenadora da Especializao em Informtica na Educao. Atuou
tambm como instrutora dos cursos de Introduo ao Linux
da Escola Superior de Redes na Unidade de Cuiab.

A RNP Rede Nacional de Ensino

LIVRO DE APOIO AO CURSO

Arthur Mendes Peixoto possui mais


de 26 anos de experincia na rea de
Redes de Comunicao de Dados e
Engenharia de Sistemas, com Dissertao de Mestrado em Anlise de Performance de Sistemas Distribudos, no
Instituto Militar de Engenharia - IME.
Participou do desenvolvimento e implantao das primeiras
redes com tecnologias ATM, Frame Relay, IP/ MPLS. Foi consultor de grandes projetos como o Backbone IP do Plano
Nacional de Banda Larga (PNBL) da Telebrs. Trabalhou por
22 anos no setor de Telecomunicaes da Embratel, atuando
na prospeco de novas tecnologias para as Redes de Nova
Gerao NGN. Participou de testes e verificaes de requisitos de RFPs, nos pases: EUA, Canad, Japo, Frana, Espanha e Mxico. Atuou no desenvolvimento de sistemas no

ao Linux

que conta com a participao dos


ministrios da Educao (MEC), da
Sade (MS) e da Cultura (MinC).
Pioneira no acesso Internet no
Brasil, a RNP planeja e mantm a
rede Ip, a rede ptica nacional
acadmica de alto desempenho.
Com Pontos de Presena nas
27 unidades da federao, a rede
tem mais de 800 instituies
conectadas. So aproximadamente
3,5 milhes de usurios usufruindo

Arthur Mendes Peixoto


Andreia Gentil Bonfante

de uma infraestrutura de redes


avanadas para comunicao,
computao e experimentao,
que contribui para a integrao
entre o sistema de Cincia e
Tecnologia, Educao Superior,
Sade e Cultura.

Ministrio da
Cultura
Ministrio da
Sade
Ministrio da
Educao
ISBN 978-85-63630-19-3

9 788563 630193

Ministrio da
Cincia, Tecnologia
e Inovao