Você está na página 1de 286

Os Sistemas Operacionais da família Unix estabelecem mundialmente uma cons i-

derável base operacional. Esta base tem aumentado de forma significativa nos úl-
timos cinco anos, impulsionada principalmente pelo crescente sucesso dos sistemas
de livre distribuição como o Linux.

Inicialmente concebidos como sistemas para servidores de médio e alto desempe-


nho computacional, os sistemas padrão Unix predominaram nas décadas de 70 e 80
nas empresas que precisavam de alternativas aos caros sistemas computacionais
dedicados (IBM, Unisys, DEC, Fujitsu, etc.) e que raramente ofereciam compatibi-
lidade com outros sistemas abertos.

No mercado de trabalho atual, o técnico que pretende firmar-se profissionalmente


conquistando principalmente um salário melhor, deve dominar esta tecnologia. O
mercado já não aceita com facilidade um técnico que não tenha domínio dos siste-
mas Unix.

Do seu surgimento até o atual estágio de desenvolvimento, a tecnologia Unix é


muito rica, interessante e define as bases operacionais da informática corporativa
moderna.

Neste livro concentraremos as atenções no Sistema Operacional Linux, que vem se


consolidando como alternativa de Sistema Operacional para computação pessoal e
corporativa e é um Unix muito bem resolvido do ponto de vista técnico.
VI Linux: Sistema Operacional II

Pode-se encontrar aqui um roteiro diferenciado, comum a todos os sistemas Linux,


concentrando as atenções em seus aspectos de instalação, configuração, segurança
e principais aplicativos.

Para aquele que nada ou muito pouco conhece de Linux ou Unix e acha que isto é
mais uma palavra esquisita utilizada em informática, este livro serve como uma
introdução leve, segura e simples a esta tecnologia, sem traumas, medos nem de-
sesperos.

Para aquele que já é usuário ocasional do Linux, este livro funciona como um "sal-
va vidas" em meio ao mar de coisas que se escreve sobre ele de maneira invaria-
velmente confusa e sem direção.

Para aquele que já se considera "fera" em tecnologia Unix , é só sentar-se à frente


de seu micro e repassar conceitos, práticas e aplicações que com certeza já utiliza,
mas certamente encontrará aqui novas maneiras de utilizá-las ainda melhor, poden-
do aprender algumas novas dicas e práticas interessantes.

Não posso deixar de citar as incursões que faremos pelo universo gráfico oferecido
pelo Linux e seu aplicativo mais difundido como o StarOffice, um verdadeiro sis-
tema de automação de escritórios, (já apresentado em detalhes no livro Automação
de Escritórios com StartOffice 5.1a) e as principais ferramentas gráficas de admi-
nistração e produtividade com o ambiente gráfico KDE.
A Deus, pois Ele me concedeu...

O dom para escrever,

A inteligência para aprender as coisas sobre as quais escrevo,

Os meus maravilhosos pais (Lauro e Eunice) que me formaram para a vida,

Minha esposa (Vera) e meus filhos (Marcus e Rodrigo) que me apóiam,

Uma editora (Brasport) que acredita em meus projetos,

E fundamentalmente uma vida maravilhosa.


Utilização do Linux e deste livro
Linux é um sistema operacional interativo que permite a utilização de interface grá-
fica a partir da qual os usuários (leigos ou não) podem obter resultados práticos
sem muita dificuldade.

No início da década de 90 o Linux foi visto com desconfiança pela maioria dos
usuários de computadores. Naquela época o sistema era visto como uma ferramenta
hacker, ou seja, seria usado por pessoas que tinham na computação e nas suas
ferramentas uma diversão e acima de tudo um desafio.

É importante frisar que o Linux foi desenvolvido com único intuito de permitir ao
seu usuário uma condição fácil de utilização, sem a necessidade de qualquer inves-
timento, pois ele é gratuito.

É claro que sistemas operacionais modernos são baseados em interface que facilita
a operação dos aplicativos, que precisam ser de baixo custo, geralmente gratuitos, e
que de uma maneira geral atendem a todas as necessidades não deixando de lado a
integração em ambiente de rede local.

Uma consideração importante a se fazer em relação a este sistema operacional é a


necessidade de treinamento específico aos usuários corporativos; esta categoria de

1
2 Linux: Sistema Operacional II

usuários demanda o acompanhamento de suas necessidades operacionais, in di-


cando os melhores caminhos para obtenção de produtividade em curto espaço de
tempo.

Analisando do ponto de vista técnico, o sistema Linux oferece todas as condições


ao desenvolvimento de aplicativos, sistemas de conectividade, servidores de banco
de dados, aplicações gráficas de alta capacidade, servidores dedicados para funções
de fax, impressão, segurança, e-mail e outras, tudo isto de forma relativamente fá-
cil.

Quando os usuários optam por novas ferramentas a sua principal preocupação diz
respeito àquilo que ele consegue mensurar, ou seja: “Quanto tempo é necessário
para aprender isto?”.

Esta limitação dos usuários é proporcionada pela dificuldade que ele sente em de-
senvolver de forma pessoal as suas necessidades, ou seja, quanto mais tempo ele
gastar para aprender a utilizar a ferramenta da qual ele dispõe, pior será a avaliação
que ele fará da ferramenta de trabalho em relação às suas necessidades.

A principal avaliação que deve ser considerada pelo técnico está ligada à alta qua-
lidade do trabalho que o usuário conseguirá desenvolver com um mínimo de trei-
namento que ele venha a receber. Este critério pode não ser o melhor, porém cons i-
dero sempre que é melhor este do que critério algum, sabendo que os usuários de
uma maneira geral, necessitam de um bom instrumento de produtividade e conside-
rando que esse instrumento deve ser fácil de usar, simples de manter, não sujeito a
erros, fraudes e outros acidentes e sabendo ainda que os usuários geralmente não
estão dispostos a aprender uma nova ferramenta por si só.

Para iniciar a interface do usuário, o técnico deverá estar preparado para configurar
o Shell com todas as tarefas necessárias ao início do ambiente de trabalho que o
usuário utilizará.

A configuração do Shell requer alguns comandos que serão estudados neste livro.
Nossa ênfase será em comandos internos e externos:

• Comandos de criação e navegação de pastas.


• Comandos de criação e edição de arquivos.
• Reconhecimento dos arquivos de configuração no formato texto.
• Utilização de editor de textos.
• Criação de contas de acesso.
• Criação de configurações personalizadas.
Observações Gerais 3

• Operação da interface gráfica KDE.


• Comandos do shell bash.
• Criação de shell scripts.

Visão geral sobre instalação do


Linux
Instalar o Linux não consiste em um processo terrivelmente complicado, contanto
que você tenha um sistema computacional bastante genérico. Caso contrário, a
complexidade de instalação pode variar de “levemente incômodo” a “moderada-
mente problemática”.

Neste momento serão abordadas as etapas necessárias para a instalação e a config u-


ração do Linux em seu computador. Trata-se de uma versão simplificada das ins-
truções de instalação; se você quiser um guia completo, recomenda-se uma consul-
ta a um livro específico sobre o assunto ou ao próprio manual do sistema.

Parte -se aqui do pressuposto de que algumas técnicas devem ser dominadas por
você para que o computador possa ser preparado para receber o sistema operacio-
nal Linux.

As instruções contidas aqui podem variar de computador para computador, de sis-


tema para sistema, e ainda depender das condições da rede de computadores que
estejam disponíveis, se é que elas existem em seu ambiente. A grande quantidade
de distribuições existente para o Linux gera também uma grande quantidade de
formas possíveis de instalação. O técnico deve considerar primordialmente, a ne-
cessidade operacional do seu ambiente e deve considerar também a quantidade de
aplicativos que serão instalados e o tipo de usuário que irá operar o sistema.

Não adianta dizer que não existe complexidade no processo de instalação e mesmo
de uso do Linux, pois não quero enganar o leitor com afirmações sobre uma facili-
dade que de fato não existe. Cada distribuição de Linux, e existem dezenas delas,
oferece suas próprias facilidades de instalação e operação. Escolher uma ou outra
dependerá de um conhecimento prévio do que é oferecido por cada versão.

Posso destacar quatro processos fundamentais utilizados na instalação do Linux:

Primeiro: Criar discos de boot e root.


Segundo: Preparar o disco rígido para instalação do sistema.
4 Linux: Sistema Operacional II

Terceiro: Iniciar o sistema já com Linux a partir dos discos de instalação.


Quarto: Instalar o Linux a partir do CD.

Nas etapas seguintes, iremos considerar apenas os processos que são comuns e que
geram menos confusão durante a instalação. Considere que o seu computador po-
derá ter instalado um sistema DOS ou um sistema Windows. Em qualquer dos ca-
sos será necessário preservar os dados e o próprio sistema operacional existente,
procedendo ao particionamento do seu disco rígido.
Uma situação ideal é ter à disposição um disco rígido que possa ser integralmente
formatado com o novo sistema. Independente da sua situação, e considerando prin-
cipalmente a primeira, não deixe de efetuar cópias de segurança de todos os dados
que você possui gravados neste disco.

A distribuição do Lin ux é feita em CD-ROM com capacidade de carga do sistema


operacional. Se o seu equipamento permitir a configuração do processo de iniciali-
zação, permitindo que o CD-ROM seja o dispositivo de boot, altere esta configura-
ção e faça um reset no sistema.
Em virtude da grande quantidade de distribuições e versões existentes, farei uma
descrição geral do sistema de instalação do Linux, apelando mais para o entendi-
mento destas rotinas por parte do técnico do que os passos propriamente.

O que acontece na instalação


A carga do micro kernel, que consiste em uma pequena parte do sistema operacio-
nal necessária e suficiente ao processo de instalação, pode ser dada de três manei-
ras básicas:

1. Pelo comando autoboot.bat que usa o utilitário loadlin para carregar o sistema.
Executado direto do prompt do DOS/Windows.
2. Através dos discos boot e root gerados com o utilitário rawrite.
3. Boot direto pelo CD-ROM de distribuição. Requer ajustes na BIOS e suporte
para boot em CD.

Este micro kernel permitirá ao usuário executar as funções necessárias ao processo de


instalação e também as rotinas para a criação de contas de usuários e ajustes no ambi-
entes de rede. Os ajustes e opção da instalação poderão ser feitos posteriormente.
A terminologia “imagem de disco”, diz respeito a cada parte do kernel especial-
mente preparada para ser utilizada com um certo tipo de equipamento ou confi-
guração comum, considerando primordialmente sua configuração.
Observações Gerais 5

Vários arquivos terminados com a letra i estão disponíveis para a criação do disco
de boot. Outros tantos arquivos terminados com a letra s, contêm as imagens do
root.

As distribuições do Linux são acompanhadas de um arquivo executável (rawri-


te.exe) cuja função é copiar de forma adequada os arquivos com extensão i e com
extensões s, tornando-os passíveis de carga (boot image) do sistema Linux com o
micro kernel.

A carga do sistema operaciona l permitirá que a instalação possa prosseguir e que o


usuário possa definir quais serão os pacotes a serem instalados. Dentre os pacotes
disponíveis na distribuição do Linux, aquele que ma is chama atenção refere-se às
linguagens de programação, interface gráfica, opções de conectividade, suporte a
idiomas e aplicativos para escritório. Os pacotes do Linux são distribuídos em um
formato especial chamados container. Um container nada mais é do que um grande
arquivo compactado dentro do qual estão todos os pedaços necessários à instalação
de um aplicativo.

As principais linguagens de programação disponíveis na distribuição do Linux são:


pascal, C, C++, PHP e PERL, mas existem dezenas delas que podem ser conse-
guidas gratuitamente sob os termos da GNU General Public License, pela Internet.

A interface gráfica disponível no momento da instalação permite que o usuário faça


a escolha de qual tipo de interface está disponível. A interface mais conhecida é o
KDE. Outras, como a interface Gnome, podem ser instaladas posteriormente.

Por ser voltado ao ambiente web, o Linux traz linguagens script tradicionais nos
ambientes Unix. Desenvolver aplicativos ou rotinas corriqueiras em linguagem
script é muito facilitado pela existência de editores de texto que mais lembram o
antigo Wordstar. Para os usuários mais avançados o editor ‘vi’ está disponível
juntamente com o edlin, ambos muito conhecidos de usuários Unix.

Como todo sistema Unix que se preze, o Linux oferece compatibilidade para cone-
xão com praticamente qua lquer tipo de sistema. A conexão mais utilizada é para
redes locais baseadas no padrão ethernet.

Ainda não temos um sistema Linux totalmente convertido e traduzido para o portu-
guês do Brasil, porém a distribuição Console Linux traz a maioria dos manuais e
ajudas de comandos já traduzidos para o português do Brasil o que facilita bastante
o trabalho dos usuários que têm pouca ou nenhuma intimidade com o inglês.
6 Linux: Sistema Operacional II

O que este livro aborda


Este livro aborda da instalação à operação básica do KDE, passando por detalhes
do shell incluindo programação, início rápido para usuários DOS/Win, comandos
principais e mais utilizados, diversos exemplos de comandos e scripts que auxiliam
e melhoram o trabalho diário, administração de usuários, grupos e acessos.

A diversidade de interfaces gráficas disponíveis para o Linux obrigou o autor a to-


mar uma decisão: como esgotar as interfaces gráficas falando sobre elas tudo que é
possível seria trabalho hercúleo, entediante e de resultados práticos questionáveis,
escolheu-se o KDE por ser o mais acessível e amigável.
Como os sistemas Unix estão fundamentados em interface texto, nada mais natural do
que fazer o foco das atenções serem os comandos e técnicas utilizadas no shell (bash).
O melhor desta decisão é que este livro poderá ser utilizado para o entendimento
não apenas do Linux, mas também de qualquer sistema Unix compatível.

O leitor deve considerar ainda que a operação de sistemas Linux e Unix compatí-
vel, pode variar de versão para versão obrigando que, para sua operação, sejam
consultados manuais e dicas de operação, principalmente para aqueles serviços que
não seguem o padrão Unix.

Então para quem serve este livro?


Ao final do livro o leitor deverá ser capaz de preparar, instalar, configurar e operar
sistemas Linux, tratar de segurança de usuários, desenvolver scripts, depurar
scripts, efetuar backup e instalação de aplicativos, utilizar os comandos internos e
externos, combinar estes comandos em expressões regulares, encontrar ajuda no
sistema e fora dele, resolver problemas de configuração pela edição de arquivos de
configuração, instalar, configurar e operar a interface gráfica KDE e seus aplica-
tivos e utilitários, utilizar compiladores e preparar o ambiente para ser operacional
além de conhecer a história, o desenvolvimento e as tendências futuras dos siste-
mas Linux em suas diversas distribuições.
É óbvio que este grau de aproveitamento, só será possível de se atingir se for exe-
cutado um estudo criterioso e cuidadoso dos testes e exemplos apresentados, além
de seguir as recomendações propostas pelo autor.

A grande maioria do material que você encontrará neste livro pode também ser en-
contrada na Internet em dezenas de sites nos mais diversos idiomas e com os mais
Observações Gerais 7

variados graus de profundidade. Os comandos descritos aqui nada mais são do que
uma compilação livre, porém com enfoque prático, de documentos disponíveis
quer seja na Internet, quer seja nos sistemas de Help on-line do próprio Linux ou
em News Internet afora.
A parte referente ao editor ‘vi’ por exemplo, resume os principais comandos deste
poderoso editor, porém, com ajuda do help instalado em seu computador você po-
derá verificar não apenas os comandos citados neste livro mais todos os comandos
existentes para o ‘vi’.

A parte do KDE concentra-se na sua utilização e configuração operacional básicas.


O grande diferencial neste livro é que o leitor tem um roteiro a ser seguido e ao
concluir este roteiro ele poderá dizer: “Eu entendo o Linux” e seguir adiante.

Instruções para a utilização deste


livro
Para estudar e aprender a usar um sistema operacional é necessário praticar. Para
que a prática seja desempenhada com sucesso, o usuário que pretende utilizar este
livro para aprender os segredos de um sistema operacional como o Linux, deve
possuir um computador que possa receber uma instalação mínima do Linux. Estu-
dar o sistema operacional simplesmente lendo o livro poderá ajudar apenas na parte
conceitual e nada mais do que isso. O aprendizado se dará de fato, se ele for prati-
cado diretamente em um computador.

Algumas atividades que serão solicitadas ao longo do livro podem requerer que o
leitor possua uma conexão com Internet e eventualmente um segundo computador
interligado em uma rede local. Quando isto não for possível você conseguirá ape-
nas atingir o primeiro objetivo, ou seja, entender a parte conceitual.

Por que o Console Linux?


A distribuição do Linux escolhida para servir de base para este livro é a Console
Linux 1.0. Por que esta distribuição? Porque é baseada na versão mais estável das
versões existentes, o Red Hat 6.2 que é utilizado como base de outras distribuições
entre elas o Mandrake. Já temos o Red Hat versão 7.x disponível para download
diretamente pelo site www.redhat.com mas ainda não é considerada uma versão
estável, e como nosso foco é estudar os comandos e técnicas básicas do Linux, a
distribuição Console Linux 1.0 se mostra como excelente opção.
8 Linux: Sistema Operacional II

Por que um Linux em português?


Ter escolhido uma versão em português também tem seu motivo. Apesar do co-
nhecimento do inglês técnico utilizado em sistemas Unix ser imprescindível a to-
dos aqueles que pretendem aprender e se desenvolver nesta tecnologia, ter uma
ajudinha nos primeiros passos é importante para não ficar desestimulado com as
dificuldades naturais que se apresentarão. É findo o tempo onde saber clicar sobre
ícones fazia do profissional um entendido em informática; acredito mais no enten-
dimento do que está por trás do clique do que no clique em si.

Conheci muitos “técnicos” que não sabiam inicar uma tarefa, nem aquelas mais
simples, se não através de um software assistente (wizards) ou partindo de um mo-
delo pronto “mastigado”. Em última análise “saber se virar” demanda no mínimo:
1) saber inglês técnico, 2) procurar a raiz funcional dos softwares e 3) não intimi-
dar-se com mensagens do tipo “command zxkwy not found”. São estas pequenas
coisas que farão a grande diferença no final do mês quando você receber o seu sa-
lário, ou pelo menos deveriam fazer.

O CD que acompanha este livro


Incluimos a versão completa do Console Linux 1.0 Versão Servidor, com instala-
ção e utilitários de configuração traduzidos para o português e ainda alguns deles
desenvolvidos especialmente para a distribuição Console Linux. O CD-ROM está
preparado para ser inicializável, o que permite o boot direto pelo CD, em máquinas
que suportem esta configuração, trazendo todos os aplicativos necessários ao nosso
uso neste livro.

Convenções utilizadas neste livro


Como estaremos tratando principalmente de comandos que serão estudados dire-
tamente no prompt do Shell, a quantidade de figuras e diagramas é mínima na parte
inicial deste livro e algumas convenções tipográficas devem ser observadas:

[root@Console /root]# Prompt


df –v Comandos digitados diretamente no prompt
127.0.0.1 Console localhost Resultado de comandos
Nos ambientes Unix a interface orientada a caractere reina absoluta entre os técni-
cos e usuários avançados e por mais que estejam com o ambiente gráfico ativado,
as configurações são feitas diretamente no prompt do Shell.

Vocabulário básico
Antes de iniciar o assunto propriamente dito, é necessário estabelecer um vocabulá-
rio básico sem o qual o entendimento de alguns textos pode ficar prejudicado.

Sistema Operacional (SO) – é um tipo especial de software cujas funções básicas


podem ser assim resumidas:
• Garantir uma comunicação eficaz entre o usuário e o computador.
• Permitir o desenvolvimento e a utilização de programas aplicativos de
qualquer tipo.
• Viabilizar a troca de dados (comunicação) com outros computadores, inde-
pendente do SO que ele utilize.

Interface – é a forma que a comunicação entre o usuário e o computador é viabili-


zada. Os dispositivos utilizados para esta comunicação dependem da interface. Se
ela for gráfica, utiliza-se o teclado e o mouse; caso ela seja somente texto, utiliza-se
o teclado.

9
10 Linux: Sistema Operacional II

Programação – é a criação de novos programas para computadores, chamados


genericamente de software, utilizando uma linguagem de programação (C, Delphi,
C++, Kylix, COBOL, VB, etc.).
Protocolo – é um padrão de comunicação entre os computadores que permite o
envio e o recebimento de dados entre eles, como acontece ao conectar o micro à
Internet.

Kernel – é a parte central (núcleo) de um SO. Geralmente pequeno, se comparado


a todas as facilidades oferecidas por um SO, o Kernel precisa ser rápido, seguro e
robusto (não pode apresentar erros).
Desktop – ou área de trabalho é a área da tela que o usuário utiliza para organizar
os programas e visualizar os resultados do processamento.
Ícone – é um pequeno desenho que representa um objeto com o qual o usuário po-
de interagir utilizando o mouse.

Prompt – ou sinal de pronto, indica ao usuário que o SO está pronto para ser utili-
zado. Nos sistemas Unix o prompt pode ser um $ ou #.
Cursor – é um pequeno sinal que pisca de forma intermitente após o prompt e ser-
ve para indicar a posição onde aparecerá o próximo caractere digitado.

Área de trabalho
O Linux apresenta-se ao usuário com uma tela principal denominada ‘tela de login’
ou ‘issue screen’. Nela o usuário deve digitar sua identificação (login) e senha de
acesso (password).
Depois de validar login e password, o Linux apresenta um sinal de prontidão
(prompt) que pode ser $ (dólar), # (jogo da velha) ou outro, dependendo da confi-
guração inicial de cada usuário.

Como o Linux trabalha


• O Linux possui proteção entre processos (crash protection). Desta forma se
um comando falhar, ele não afetará o funcionamento do computador, mas
apenas do programa que falhou.
• Carregamento por demanda. As bibliotecas do sistema são carregadas e
descarregadas o tempo todo de e para a memória a partir do HD. Como e-
Interface 11

las são de pequeno tamanho, o sistema mantém elevada performance e só


gasta memória com o que é necessário.
• Redes TCP/IP . Protocolo padrão para conectividade em ambientes de rede
local e remota.
• Nomes de arquivos com até 255 caracteres.
• Multitarefa real. Quem comanda o tempo do processador é o kernel e não
as aplicações que rodam sobre ele.
• Suporte a UNICODE.
• Bibliotecas compartilhadas – shared libraries. Reduz o tamanho final dos
pacotes de aplicação.
• Memória virtual. Quando acontecer sobrecarga na utilização de memória, o
sistema pode fazer swap em disco. Isto degrada o sistema, mas é um recur-
so importante, principalmente em estações de trabalho.
• E mais uma porção de facilidades inerentes aos sistemas Unix. Por seguir o
padrão POSIX, Linux mantém a compatibilidade funcional com outros
Unix do mercado.

Qual micro aceita o Linux?


Para que um micro suporte Linux, ele precisa de um processador 386 ou superior,
com no mínimo 2MB RAM e 100MB de HD. O micro ideal para Linux é aquele
que estiver à mão, pois ele roda em qualquer PC. Como é bom ser otimista!

Se você tiver um Pentium (qualquer um!) com 32MB RAM, 1.2 GB de HD, unida-
de de disquetes de CD, você terá uma plataforma considerada “padrão” para insta-
lar e rodar bem o Linux.

Minha máquina é um Pentium 150 MHz “bala” montado numa placa Soyo 5y (a-
quela baby AT) com 64MB de EDORAM –70 “a jato”, HD Caviar de 2.5GB, Pla-
ca de vídeo PCI Diamond S3 “bala” com 4MB, Monitor Asaki de 14” com Kde
rodando em 1024 X 768 X 8bits sem flicking, Placa ethernet 3COM ISA COMBO
de 10Mbits, Mouse Genius 3 botões, Teclado Five Star US, CD IDE Creative quad
speed “bala”, Placa Sound Blaster ISA 16, conjunto este que chamo carinhosamen-
te de “FrankPCstain”, e faço com ele coisas que até eu duvido... e numa velocida-
de!!! que deixa muito PIII 600 de 256MB com HD SCSI rodando Windows 2000
Server “comendo poeira”.

No meu FrankPCstain eu rodo Mail Server com antivírus, Web Server Apache,
MySQL, PHP, Perl, gcc, COBOL, StarOffice, Netscape, Samba, KDE desktop,
Sniffer e ainda “sobra muita máquina”.
12 Linux: Sistema Operacional II

Sabe quantas vezes o Linux travou no meu FrankPCstain? Nenhuma. Sabe quantas
vezes eu perdi dados porque um aplicativo travou? Nenhuma. Sabe desde quando
ele está rodando ininterruptamente 24h/dia, 7 dias/semana (descontando as duas
vezes em que faltou energia, uma outra quando tropecei no fio de energia e uma
quarta que meu filho apertou o reset quando eu estava salvando este arquivo)?
Desde 21 de março de 2000 às 15:37 quando comecei a escrever este livro, por-
tanto quase um ano SEM ESQUENTAR MINHA CABEÇA COM SISTEMA
OPERACIONAL, fazendo testes, experiências, instalando e desinstalando softwa-
res, lin guagens e “outros bichos”!!!

Preparando o micro para receber o


Linux
O CD que acompanha este livro possui o Console Linux 1.0, que é uma versão es-
tável, fácil de instalar e que oferece um acesso fácil ao trabalho com Linux. A ins-
talação do Console Linux pode ser feita utilizando interface gráfica ou texto. Os
passos em ambas são idênticos.

Instalando o Console Linux 1.0


Etapas para instalação com interface
gráfica
No CD do Console Linux 1.0 encontra-se um diretório dosutils dentro do qual es-
tão as ferramentas básicas para preparar a instalação desta distribuição.

Iniciando a instalação com autoboot, direto


pelo DOS
Para os usuários que possuírem um disco de boot com acesso ao CD-ROM (um
disquete desses pode facilmente ser gerado pelo componente Adicionar e Remo-
ver Programas no Painel de Controle do Windows), bastará efetuar o boot com
suporte ao CD-ROM e rodar direto o batch file aotoboot.bat que se encontra na-
quele diretório. Depois do boot direto pelo CD, esta é a melhor forma de iniciar a
instalação.
Interface 13

Configurando o BIOS para fazer o boot pelo CD


Para fazer o boot pelo CD é preciso configurar o BIOS do seu PC para que o com-
putador possa ser ‘inicializado’ com o CD. Para fazer isto:

• Depois de ligar o computador, pressione a tecla ‘Delete’ para ter acesso ao


BIOS.
• Vá até a opção: BIOS FEATURES SETUP
• Isto significa algo como “Configurar as ‘feições’ do BIOS”, ou seja, como
o BIOS deve funcionar, ou se comportar, em seu computador.
• Localize a opção: BOOT SEQUENCE
• Ela determina a seqüência de boot (ordem de procura pelo dispositivo de
onde será feita a carga do sistema operacional). Utilizando as setas, posi-
cione a barra sobre ele e pressione F1. Uma janela deve aparecer mostran-
do as seqüências válidas de dispositivo de carga disponíveis. Pressione
ESC para retornar e escolha pressionando Pg Up ou Pg Dn, aquela na qual
o CDROM aparece em primeiro lugar, algo como: CDROM, C, A
• Não altere as demais opções. Pressione ESC para retornar ao menu princ i-
pal e localize a opção: SAVE & EXIT SETUP
• Uma janela de confirmação é exibida: SAVE to CMOS and EXIT (Y/N)? y
• Gravar as alterações e sair? Responda y(es) e pressione Enter e esta opção
gravará as alterações feitas por você e sairá do programa Setup reiniciando
o computador.
• Mantenha o CD com o Console Linux no leitor de CD do seu PC e aguarde
o boot. Este processo pode demorar 5 minutos ou mais, dependendo da ve-
locidade o leitor de CD, da memória RAM e da CPU de sua máquina.
• A tela Bem-vindo do Console Linux é exibida. Esta tela é na verdade um
menu que lhe dá opção de escolher o caminho a seguir. Note que na janela
à esquerda estará sendo exibida uma ajuda permanente sobre o processo de
instalação e o significado das opções disponíveis, portanto não iremos nos
ater a muitos detalhes desta etapa em função disto.
• Escolha o idioma a ser utilizado na instalação, Inglês ou Português (de-
fault) e clique no botão Avançar.

Seleção do Teclado
• Escolha do leiaute do seu teclado. Cuidado para não selecionar o leiaute
incorreto. Se o seu teclado for padrão ABNT (aquele com Ç) não se preo-
cupe, não existem comandos com Ç ou acentuação em Unix. Se seu tecla-
14 Linux: Sistema Operacional II

do não tiver este símbolo será preciso ativar as teclas mortas (acentos e
combinações para gerar o Ç), necessárias ao digitar textos a serem impres-
sos ou enviados pela Internet.

Escolha o Mouse
• Qual é o modelo de mouse conectado ao seu computador?
• Uma lista é exibida com vários modelos pelo programa de instalação. Você
deve escolher aquele que melhor indica o equipamento que você possui.
Possivelmente a sugestão feita pelo programa de instalação deva ser a me-
lhor indicação para o seu caso. Fique atento para o tipo de interface que se-
rá utilizada: serial ou PS/2.
• A opção de emular três botões em equipamentos que possuam dois botões
geralmente não funciona adequadamente, portanto, desmarque esta opção.
• Qual é o dispositivo ao qual o mouse está conectado?
• O programa de instalação o sugere /dev/ttyS0 (COM1 under DOS), que re-
solve 99% dos casos.
• Se o mouse do seu computador estiver em outro endereço (COM2, COM3
ou COM4), escolha um na lista exibida.

Bem-vindo ao Console Linux!


• O aviso diz: “Este processo de instalação é explicado em detalhes no Guia
Oficial e Instalação do Console Linux disponibilizado pela Console Linux.
Se você tiver acesso a este manual, você deve ler a seção instalação antes
de continuar”.
• E continua: “Se você comprou uma distribuição Oficial da Console Linux, tenha
certeza de registrar sua compra através do site http://www.console .com.br”
• O manual do Console Linux é distribuído para o usuário que comprar o
produto “na caixa”. Além dos CDs de instalação, o usuário recebe o manu-
al de instalação do produto e o direito de efetuar o registro de sua cópia, o
que garantirá atendimento direto para sanar dúvidas operacionais, de insta-
lação e atendimento a outros problemas ou dificuldades enfrentadas pelo
usuário durante os primeiros 90 dias da aquisição.

Tipo de Instalação
• Qual é o tipo de sistema que você gostaria de instalar? Workstation (Gno-
me ou KDE), Dos/Windows (mantém intacta a FAT atual com Windows),
Servidor ou Atualização?
Interface 15

• Se for escolhida Workstation ou Servidor, todo o HD será formatado e uma


nova interface muito utilizada por programadores Linux será instalada
(Gnome ou Kde). Tida como interface preferida por profissionais envolv i-
dos no projeto do Linux, o Gnome foi criado pelos programadores como
alternativa à interface KDE, que não tinha o seu código aberto à comuni-
dade de desenvolvedores.
• Se escolher a opção KDE, uma interface bastante amigável e que foi inic i-
almente criada como solução definitiva de ambiente gráfico para o Linux,
lhe dará acesso a uma série de utilitários e ainda a um ambiente muito pa-
recido com o do Windows e com aplicativos e utilitários muito interessan-
tes para edição de textos (KWord), planilha eletrônica (KSpread), gerador
de apresentações, gerador de diagramas, desenho vetorial (Kilustrator) e
gerenciador de ambiente pessoal (Koffice).
• Se você escolher a opção Server, todos os aplicativos e config urações ne-
cessárias para a operação de um servidor serão automaticamente instaladas,
porém sem interface gráfica.
• Escolha a Servidor. Selecione todos os pacotes (1,5GB). Utilizando esta
opção, todas as config urações necessárias ao Console Linux como servidor
serão instaladas, permitindo explorarmos características avançadas no am-
biente do Shell.

Configuração de Rede
• Um hostname é o nome que o computador terá e pelo qual ele será reco-
nhecido em um ambiente de rede. Se ele não estiver em um ambiente de
rede, ainda assim este será o nome associado ao seu computador.
• Importante: Não utilize caracteres especiais (símbolos e letras acentuadas)
e evite a utilização de espaços em branco ao definir o nome do computa-
dor.
• Se o seu computador tiver uma placa de rede instalada, ela pode ser conf i-
gurada automaticamente utilizando uma técnica conhecida por bootp/dhcp,
e que consiste na leitura das configurações necessárias diretamente de um
arquivo previamente criado. A outra opção seria informar o endereço dire-
tamente no espaço disponível para isto.
• O endereço IP deve ser válido respeitando as classes de endereçamento de-
terminadas por este protocolo. Para maiores informações, consulte o livro
Internet Intranet e Redes Corporativas , deste mesmo autor e editora.
• Dê preferência pelas classes B ou C de endereçamento. Veja um bom
exemplo de endereço para ser utilizado nesta configuração:
192.168.0.1
16 Linux: Sistema Operacional II

• Quaisquer deles que você venha a escolher permitirão que seu computador
trabalhe sem conflitos de endereço tanto em uma rede local como em co-
nexões com a Internet. É sempre importante, contudo, se a instalação esti-
ver acontecendo em um ambiente de rede empresarial, que se consulte o
administrador de rede responsável pela distribuiç ão dos endereços IP váli-
dos neste ambiente.
• Informe então o endereço IP, por exemplo, 192.168.0.1 e prossiga com Tab
até o campo OK. Observe que a máscara (Netmask), Default gateway e
Primary nameserver, são automaticamente preenchidas pelo programa de
instalação. Para ter certeza destes valores, não deixe de verificar os valores
válidos com o administrador de redes da empresa ou consulte o livro já ci-
tado antes.
• Caso o micro que receberá o Linux esteja participando de uma rede local
ethernet pode-se ativar a busca automática de endereços pelo DNS ativo e
ativar também o default gateway. Estes parâmetros simplificam a conexão
de uma máquina Linux com a Internet e demais recursos da rede.
• Se isto aconteceu com sua instalação e você ficou com dúvidas, peça ajuda
ao administrador da sua rede para informar-lhe o endereço do servidor
DNS e o default gateway de saída para Internet.

Fuso horário

Qual é o fuso horário (time zone)?

Aponte no mapa o fuso horário que corresponde à sua região. O mapa que é exibi-
do é interessante. Conforme aproxima-se o ponteiro do mouse da localidade dese-
jada, uma seta aponta a cidade correta, e ao clicar, o fuso horário e a localidade são
estabelecidos.

Senha do root (e outras contas)


• Escolha uma senha para o superusuário root.
• Ela deve ser digitada duas vezes.
• Esta senha não pode ser esquecida.
• Ela deve ter pelo menos seis caracteres.
• É imprescindível que ela seja apenas do seu conhecimento.
• Adicione agora pelo menos mais um usuário utilizando Adicionar usuário.
Deve-se usar esta conta normal de usuário para acionar e ter acesso ao sis-
tema. Adicione um ‘usuário comum’ para trabalhos corriqueiros e deixe a
conta do superusuário apenas para configurações avançadas. Crie então o
Interface 17

usuário com o seu nome. Para efeito de exemplo, o usuário normal durante
todo o livro será Garcia.

Dependência não resolvidas

• Durante a instalação pode acontecer de algum pacote selecionado depender


de outro pacote que não foi selecionado. O Console Linux verifica isto e
aponta sugestões para ajustar esta questão que geralmente é instalar o que
está faltando. Aceite as recomendações e prossiga.

Particionamento automático

• O particionamento do HD é uma etapa crucial na instalação do Linux. Nes-


ta fase define-se o local físico onde o Linux deve ser instalado e uma deci-
são precisa ser tomada: deixar o HD todo ser particionado pelo Linux de
forma automática ou fazer isto manualmente.
• Se você não tem um HD novo ou se os dados gravados atualmente pude-
rem ser perdidos então escolha deixe o Console Linux fazer isto por vo-
cê, caso contrário escolha utilizar fdisk.
• Antes de continuarmos com o particionamento, é preciso entender um pou-
co a forma como os sistemas Unix o utilizam. Cada ‘pedaço’ do HD, cha-
mada partição é vista pelo Linux como um mount point ou ponto de
montagem. Cada mount point recebe arquivos e funções bem distintas
(veja tabela a seguir). Uma vez definidos, os mount point podem ser asso-
ciados a uma ou mais partições do HD e isto dá ao Unix uma grande flexi-
bilidade para aumentar o espaço útil sempre que for necessário, pois basta
instalar um novo HD, criar as partições e associá -las ao mount point dese-
jado.
• Se você utilizar o particionamento manual não é necessário fazer toda esta
divisão, a única partição realmente obrigatória é a / (root partition) cujo
mount point também é o / pois é a partir dela que o sistema conseguirá a-
cesso a todas as demais.

Utilizando particionamento automático

• O instalador do Console Linux irá particionar o HD conforme sua capaci-


dade total em pelo menos cinco espaços:
18 Linux: Sistema Operacional II

Mount point Objetivo


/ Partição raiz. Dá acesso a todas as outras partições e traz ainda as
pastas /etc onde são mantidos os arquivos com as configurações do
sistema, a /lib onde ficam as bibliotecas do sistema operacional e
outras pastas como /opt, /sbin, /bin, /dev, /lost+found, /mnt, /root e
/tmp.
/boot Partição de carga do kernel do Sistema Operacional.
/home Partição para arquivos dos usuários.
/usr Partição com aplicativos e bibliotecas compartilhadas.
/var Área temporária e de bibliotecas exclusivas de outros aplicativos.

Utilizando particionamento manual

• O instalador do Console Linux mostrará o utilitário de particionamento


bastante interativo que mostra na parte inferior da tela os discos HD detec-
tados e na parte superior as partições existentes e a qual sistema operacio-
nal elas pertencem.
• Note que o HD não é mais chamado de C:/ mas sim de /dev/hda (Master
HD ou disco primário) e /dev/hdb (Slave HD ou disco escravo quando
houver). Acostume-se com esta nova nomenclatura. Todo dispositivo peri-
férico interno ou externo que será reconhecido pelo sistema operacional
deve ter uma entrada em /dev.
• Em se tratando de HD, cada partição criada é dividida em números que in-
dicam o número da partição.
• Só pode existir uma partição primária e uma partição estendida por disco,
desta forma a primeira partição do HD primário será /dev/hda1 e a primeira
unidade lógica da partição estendida será /dev/hda5, a segunda unidade ló-
gica da partição estendida será /dev/hda6 e assim sucessivamente.
• Para ilustrar mais um pouco, consideremos um HD de 2.5GB no qual fo-
ram criadas quatro partições: uma primária com 1.0GB e três estendidas
com 0.5GB cada uma e um segundo HD de 4.5GB no qual foram criadas
duas partições: uma primária com 1.5GB e uma estendida com 2.0GB. Es-
quematicamente teremos:
Interface 19

Disco Partição Tipo Tamanho


/dev/hda /dev/hda1 Primária 1.0GB
/dev/hda2 Estendida 1.5GB
/dev/hda5 Lógica 0.5GB
/dev/hda6 Lógica 0.5GB
/dev/hda7 Lógica 0.5GB
/dev/hdb /dev/hdb1 Primária 1.5GB
/dev/hdb2 Estendida 3.0GB
/dev/hdb5 Lógica 2.0GB

• Note que cada partição estendida recebe sempre o número 2 e as partições


lógicas dentro dela começam sempre em 5. Note ainda que se somarmos as
partições lógicas, estas não podem ultrapassar o tamanho definido na parti-
ção estendida, podendo, contudo, serem menores que aquela. Isto ocorreu
com o segundo disco deste nosso exemplo. A partição estendida foi defin i-
da com 3.0GB mais apenas 2.0GB foram definidos e, portanto neste caso,
o segundo HD ficará com 1.0GB livre.
• Ao escolher o particionamento manual, você deve ficar atento para a cria-
ção de uma partição de troca (Linux swap), sem a qual a operação do Li-
nux ficará bastante prejudicada em relação à sua performance. Lembre-se
ainda de definir o ponto de montagem para partição criada. Este ponto de
montagem deve ser o raiz (/).
• Uma dica importante é que a partição de troca (Linux swap) tenha o do-
bro do tamanho da memória RAM total do seu computador, desta forma, se
você tiver 64 MB de RAM, crie uma partição de troca com 128 MB.
• Depois de definir as partições, o programa de instalação pergunta se as par-
tições devem ou não devem ser formatadas. Existe uma opção de solicita-
ção para verificação de blocos danificados do disco enquanto a formatação
acontece.
• Recomenda-se que as partições sejam formatadas e que também sejam ve-
rificados os blocos ruins durante este processo.

Instalação vai começar

• O programa de instalação avisa que uma descrição completa do serviço de


instalação será criada no endereço /tmp/install.log depois que o sistema for
iniciado pela 1ª vez. Você deve manter este arquivo em seu sistema para
20 Linux: Sistema Operacional II

futuras referências e soluções de problemas que possam acontecer. Em si-


tuações normais de instalação, o /tmp/install.log possui apenas uma lista-
gem com a seqüência de instalação dos pacotes. A partir deste momento, o
programa de instalação dará início:
– A formatação do sistema de arquivos que você escolheu.
– Fará a verificação de erros que possam existir em seu disco rígido.
– Fará a cópia dos arquivos que atendem à opção de servidor, escolhida
para esta instalação.

• Essa etapa pode demorar cerca de meia hora (no meu FrankPCstain demo-
rou 17 minutos) até mais de duas horas (dependendo do conjunto de paco-
tes escolhidos), podendo demorar mais dependendo da configuração do seu
computador (velocidade do HD, total de memória RAM, tipo da CPU).

Bootdisk

• Se apenas o Linux estiver instalado no computador esta etapa não é im-


prescindível, porém, se você fez a instalação em outra partição para ter o
Linux e o Windows também instalado, então é importante o disco de boot.
Este disco permitirá o acesso ao Linux caso aconteça algum problema com
a instalação do lilo (Linux Loader) que é o responsável pela carga do sis-
tema operacional no momento do boot em discos com dois ou mais siste-
mas operacionais instalados.
• O lilo é instalado na área de carga do sistema operacional (boot area) e
permite a escolha de qual sistema operacional será carregado a cada vez
que o computador é ligado. Se apenas o Linux estiver instalado, então o li-
lo já foi instalado e automaticamente configurado, porém se o Linux esti-
ver junto com o Windows, então deve-se indicar a partição do disco onde
está o Windows e qual será seu nome. Depois de confirmar a partição e seu
nome o lilo é instalado e quando o computador for iniciado será possível
escolher qual sistema operacional será carregado, digitando no prompt do
lilo o nome que foi dado para cada uma das imagens de boot.
• Por padrão no prompt do lilo ao teclar Tab são exibidos os nomes das i-
magens de carga de sistema operacional instalados. Para escolher digite o
nome desejado, por exemplo, linux para carregar Console Linux 1.0 ou
dos para carregar o dos/windows.
Interface 21

Completado

• O programa de instalação informa que a instalação foi completada, solicita


que as mídias de instalação sejam removidas (CD-ROM ou disquete) e ao
teclar <ENTER> o sistema será reiniciado.

Reboot

• Depois de reiniciar o computador, um prompt deve aparecer informando


LILO boot: Tecle Tab e verifique os nomes que são exibidos. Digite linux
e tecle <ENTER> para iniciar a carga do Console Linux 1.0.
• Observe que, enquanto acontece a carga do Linux, algumas mensagens são
exibidas informando sobre a situação desta carga. Qualquer problema que
ocorra será reportado aqui. Somente na primeira vez que a carga é feita, a
janela de Hardware Added será exibida automaticamente.

Primeiro boot

• O mouse é detectado e uma tela é mostrada para que o device seja configu-
rado. Escolha a opção Configure e aguarde. Confirme a escolha do mouse
que foi feita no processo de instalação e aguarde que o restante da carga
termine. Uma tela similar a esta (chamada issue – divulgar) deve ser exib i-
da. Pequena variação pode ocorrer caso o nome dado a sua instalação seja
diferente de Console Linux:
Console Linux 1.0 (Spike)
Kernel 2.2.17-21mdk
console login:

Algumas telas do KDE

Uma visão geral do Console Linux com algumas janelas sobrepostas. A semelhan-
ça com o Windows é grande: desde o botão K (Iniciar) até a barra com data, hora e
janelas na barra de tarefas; com apenas uma inversão no controle das janelas colo-
cando o botão fechar (x) no canto superior esquerdo.

O KDE vem equipado com um conjunto de ferramentas para automação de escritó-


rios que lembram muito o pacote integrado da Microsoft.

O Koffice possui esta tela integradora chamada koshell e dentro da qual as demais
aplicações são abertas.
22 Linux: Sistema Operacional II

Figura 2.1

Figura 2.2

A planilha eletrônica chama a atenção por possui facilidades para montagem de


fórmulas e manipulação de matrizes.
Interface 23

Figura 2.3

O editor de textos é simples de operar e possui os elementos básicos para criação


de textos formatados.

Figura 2.4
24 Linux: Sistema Operacional II

O software para criação de apresentações é muito parecido com o Powerpoint.

Figura 2.5

O aplicativo para trabalhar com desenhos vetoriais possui o mínimo indispensável


para tratar este tipo de atividade, mas é rápido mesmo em máquinas com processa-
dores pequenos.

O aplicativo para criação de gráficos é simples de usar e trabalha integrado com a


planilha.
Interface 25

Figura 2.6

Figura 2.7
26 Linux: Sistema Operacional II

Primeiro login

O cursor que é exibido está aguardando que seja informado o nome de um usuário.
Informe então o usuário root.
console login: root
Password: [informe sua senha]

Uma vez que você tenha informado usuário e a senha correta, deve ser exibida na
tela o prompt do Linux.
[root@console /root]#

Parabéns! Você efetuou o primeiro acesso ao sistema instalado em seu computador.


O que você vê é chamado prompt do Shell. O Shell é o ambiente no qual o Linux
pode ser utilizado. Este prompt pode ser ligeiramente diferente em função do nome
que você atribuiu à sua máquina durante a instalação (aquela etapa do host name ,
lembra?). Desta forma, se o seu host name escolhido foi MeuLinux, então o prompt
será exibido assim:

[root@MeuLinux /root]#

A palavra root que precede o host name refere-se ao usuário que se logou ao siste-
ma. Se você se logar com outro nome de usuário, por exemplo, Garcia, em uma
máquina chamada MeuLinux, então o prompt aparecerá assim:
[Garcia@MeuLinux /Garcia]$

A string /Garcia exibida depois do login name e do host name é o diretório (pasta)
onde o foco do Shell está no momento. Neste caso você está na pasta Garcia imedi-
atamente abaixo do diretório de trabalho do usuário, portanto /home/Garcia.

Fechando uma sessão login

Fechar uma sessão login corresponde ao processo de desconexão do usuário. Isto


interrompe a utilização do ambiente operacional (Shell) evitando que outros usuá-
rios acessem o sistema.

Para fechar uma sessão utilize o comando exit ou tecle CTRL + D. Note que a tela
issue é novamente exibida.

Mas não é só isto! Ao fechar o login, seu computador não pode ser desligado sim-
plesmente. Os sistemas modernos ativam diversos processos que o usuário não vê,
Interface 27

mas eles estão lá, funcionando e fazendo o Sistema Computacional trabalhar. É


comum que muitos destes processos mantenham arquivos abertos e se eles não fo-
rem corretamente encerrados, então os arquivos podem ser corrompidos causando a
perda de dados.

Para visualizar estes processos, utilize o comando ps -ef:


[root@console /root]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:05 ? 00:00:04 init
root 2 1 0 17:05 ? 00:00:02 [kflushd]
root 3 1 0 17:05 ? 00:00:00 [kupdate]
root 4 1 0 17:05 ? 00:00:13 [kswapd]
root 5 1 0 17:05 ? 00:00:00 [mdrecoveryd]
bin 324 1 0 17:06 ? 00:00:00 [portmap]
root 339 1 0 17:06 ? 00:00:00 [lockd]
root 340 339 0 17:06 ? 00:00:00 [rpciod]
root 349 1 0 17:06 ? 00:00:00 [rpc.statd]
root 402 1 0 17:06 ? 00:00:00 syslogd -m 0
root 411 1 0 17:06 ? 00:00:01 klogd
nobody 425 1 0 17:06 ? 00:00:00 [identd]
nobody 428 425 0 17:06 ? 00:00:00 [identd]

A lista que será exibida é composta por dezenas de processos, estando aqui ilustra-
dos apenas os primeiros.

Sabendo então que existem diversos processos em execução, os mesmos devem ser
encerrados evitando desta forma uma eventual perda de dados.

Desligando corretamente o Console Linux

O comando utilizado para encerrar corretamente os processos é o shutdown. Este


comando respeita a sintaxe:

shutdown [–opções] [-t segundos] [mensagem de aviso]


28 Linux: Sistema Operacional II

Principais opções:

-k Apenas emite um aviso.


-r Faz o reboot após o shutdown.
-h Pára o sistema após o shutdown.
-f Faz um reboot rápido, pulando o fsck.
-F Força a execução do fsck.
-c Cancela um shutdown.
-t Intervalo entre o aviso e o início do shutdown.

O parâmetro –t aceita a diretiva now (agora) sendo esta imperativa e efetuando o


shutdown de forma imediata.

Acompanhe um teste de shutdown com opção –k:

[root@console /root]# shutdown -k now Isto eh soh um teste


Broadcast message from root (pts/2) Thu May 3 20:48:35 2001...
Isto eh soh um teste

The system is going down to maintenance mode NOW !!


Shutdown cancelled.
[root@console /root]#

Para desligar o sistema, a opção mais utilizada é:

[root@console /root]# shutdown -h now Encerrando


Broadcast message from root (pts/2) Thu May 3 20:50:10 2001...
Encerrando
The system is going down for system halt NOW !!
[root@console /root]#

Observe que na tela aparecerão diversas mensagens indicando o encerramento dos


processos e ao final a última mensagem será Seu computador ja pode ser desli-
gado com segurança.

O que é a mensagem Broadcast message from root. Em sistemas multiusuá-


rios, uma mesma máquina pode ser utilizada simultaneamente por diversos usuá-
Interface 29

rios através de terminais ou sistemas emuladores. Quando uma sessão remota é


aberta, vários processos são iniciados para atender a conexão daquele usuário.
Quando o shutdown é iniciado, uma mensagem é enviada a todos os usuários co-
nectados (broadcast) alertando para o fato de que o sistema ficará indisponível. Se
o shutdown for radical como o shutdown –t now, o usuário saberá do fato mas não
terá tempo de fechar seus trabalhos e fazer a desconexão, por isso prefira utilizar o
shutdown –t. Assim, um aviso será emitido em broadcast informando que o usuário
tem um minuto para fechar sua sessão.

Regras gerais para ambientes Unix


Caixa alta X caixa baixa (case sensitive )
Letras maiúsculas e minúsculas são tratadas como caracteres diferentes pelos sis-
temas Unix, isto é chamado de case sensitive. Portanto, ao emitir comandos e suas
opções, flags ou diretivas, fique atento quanto às letras serem minúsculas ou mai-
úsculas. Por exemplo, um comando para limpar os caracteres da tela deve ser:
clear

Se for digitado algo diferente veja o que ocorre:


Clear
bash: Clear: command not found

O Shell avisa que Clear é um comando não encontrado.

Poderes do root
A conta do usuário root, também chamado superusuário, é poderosa o suficiente
para danificar uma instalação Linux a partir de um único comando. Sistemas Unix
partem do pressuposto de que o usuário root sabe o que está fazendo e nem sempre
avisa ou impede ações executadas por ele que possam causar danos ao sistema.
Portanto cuidado!

Configurações
Se você está acostumado a operar apenas com cliques de mouse, sentirá o Shell do
Linux um pouco hostil no início de sua utilização. Todas as configurações necessá-
rias são armazenadas em simples arquivos do tipo texto que estão em sua maioria
no /etc. Portanto, começaremos nosso estudo fazendo um passeio pelos diretórios
(pastas) disponíveis de forma a conhecer melhor onde estão os arquivos mais im-
portantes do sistema.
As configurações dos sistemas Unix são geralmente mantidas em arquivos texto
dentro do /etc. Faça o login como superusuário e execute os comandos:
[root@Console /root]# cd /etc

O comando cd (change dir), seguido do caminho (path) leva o prompt para outro diretório,
neste caso /etc.
[root@Console /etc]# ls *.conf

O comando ls (list structure), seguido do parâmetro adequado lista o conteúdo de um dire -


tório, neste caso *.conf, força a filtragem do conteúdo, exibindo apenas arquivos que te-
nham a extensão conf.

O resultado obtido consiste na listagem dos arquivos que atendem o filtro *.conf.
[root@Console /etc]#

Os mais de 20 arquivos listados servem de configuração para diversos serviços do


Linux. Vamos verificar o conteúdo de apenas um deles. Execute o comando:

30
Configuração do Linux 31

[root@Console /etc]# cat lilo.conf

O comando cat (catalog) seguido de um nome de arquivo faz exibir o conteúdo deste arquivo.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda1

Note que o conteúdo do arquivo lilo.conf é somente texto composto por parâmetros e seus
valores.
[root@Console /etc]#

O que cada arquivo configura


Utilize a listagem documentada aqui como referência para identificar em qual ar-
quivo procurar os ajustes necessários ao ambiente do Linux.

Arquivo Descrição
cdrecord.conf Configuração para gravador de CD informando modelo,
velocidade de gravação. Contém os padrões utilizados na linha
de comando se nenhum parâmetro for informado.
inetd.conf Este arquivo descreve os serviços que estão disponíveis através
do servidor INETD TCP/IP. Para configurar e executar o
INETD edite este arquivo e envie um sinal SIGHUP para
reiniciar os serviços.
initlog.conf Define como será o arquivo com a log (histórico) da
inicialização do Linux. As configurações deste arquivo têm
precedência aos comandos emitidos no prompt.
32 Linux: Sistema Operacional II

Arquivo Descrição
lilo.conf Configura a carga do sistema operacional.
logrotate.conf Define uma rotatividade para a log do sistema e controla os
parâmetros funcionais desta log (mensagens de erro, utilização
de compactação, etc).
mtools.conf Define as atribuições para as unidades de disco utilizadas em
ambiente de alguns emuladores.
named.conf Estabelece os padrão do servidor de nomes named.
nscd.conf Configura o cache do servidor de nomes (Name Service Cache).
nsswitch.conf Name Service Switch. Este arquivo deve ser classif icado pelos
serviços mais utilizados no começo do mesmo.
A entrada '[NOTFOUND=return]' significa que a procura por
uma entrada deve parar se a procura por uma entrada anterior
não retornar nada.
pbm2ppa.conf Exemplos de configuração para impressoras HP.
phhttpd.conf Cabeçalho exemplo para tags xml.
pine.conf Configura o leitor de mail e news estabelecendo todos seus
aspectos funcionais.
pnm2ppa.conf Outro exemplo de configuração para impressoras HP.
rpmfind.conf Configuração dos locais onde os pacotes RPM podem obter
dados e como eles devem rodar no ambiente Linux.
smb.conf Principal arquivo para configuração do samba, que permite o
compartilhamento de recursos do Linux para uma rede ponto a
ponto.
sysctl.conf Controla o funcionamento de envio de pacotes em uma rede
local, habilitando ou não opções de rote amento.
syslog.conf Define como e onde as mensagens emitidas pelo kernel serão
registradas no sistema.
yp.conf Configura o funcionamento do NISDOMAIN.
ypserv.conf Configura as principais funções do NIS server.
Configuração do Linux 33

Arquivo /etc/passwd
Outros tipos de arquivos de configuração do ambiente Linux que estão no /etc
guardam um dos segredos mais preciosos deste sistema. Trata-se do arquivo
passwd. Este arquivo concentra todos os nomes de usuários válidos para acesso ao
Linux. Vamos verificar a estrutura deste arquivo:
[root@Console /etc]# cat passwd

Estamos utilizando novamente o comando cat para exibir o conteúdo de um arquivo, o


passwd.

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:
operator:x:11:0:operator:/root:
games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/home/ftp:
nobody:x:99:99:Nobody:/:
xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false
gdm:x:42:42::/home/gdm:/bin/bash
Garcia:x:500:500:Marcus Garcia:/home/Garcia:/bin/bash

Note a especificação da estrutura do nosso arquivo pelo nosso usuário exemplo Garcia:

Garcia:x:500:500:Marcus Garcia:/home/Garcia:/bin/bash
1

2
3

7
34 Linux: Sistema Operacional II

1: indica o nome do usuário.


2: indica que esta conta possui uma senha e a mesma está criptografada.
3: indica o código deste usuário (user id).
4: indica o código do grupo deste usuário (group id).
5: nome completo (full name) do usuário.
6: caminho completo (path) da pasta do usuário. Também chamada de home directory.
7: shell que será carregado após o login.

named:x:25:25:Named:/var/named:/bin/false
piranha:x:60:60::/home/httpd/html/piranha:/dev/null
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
pvm:x:24:24::/usr/share/pvm3:/bin/bash
squid:x:23:23::/var/spool/squid:/dev/null
[root@Console /etc]#

Arquivo /etc/group
[root@Console /etc]# cat group

Vemos agora o conteúdo do arquivo group do /etc. No arquivo passwd vimos referência ao
grupo ao qual o usuário pertence. Os grupos estão referenciados e descritos no arquivo group.

root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:
wheel:x:10:root

wheel:x:10:root
1

2
3

4
Configuração do Linux 35

1. indica o nome do grupo


2: indica que este grupo possui uma senha criptografada.
3: indica o código deste grupo (group id).
4: nome dos usuários que pertencem ao grupo.

mail:x:12:mail
news:x:13:news
uucp:x:14:uucp
man:x:15:
games:x:20:
gopher:x:30:
dip:x:40:
ftp:x:50:
nobody:x:99:
users:x:100:
floppy:x:19:
utmp:x:22:
xfs:x:43:
console:x:31:
gdm:x:42:
pppusers:x:44:
popusers:x:45:
slipusers:x:46:
slocate:x:21:
Garcia:x:500:
named:x:25:
piranha:x:60:
postgres:x:26:
pvm:x:24:
squid:x:23:
[root@Console /etc]#

Configurações para acesso remoto


Entender sistemas Unix e o Linux em particular, implica em entender o conjunto de
protocolos TCP/IP. Todas as operações de conectividade se dão, apesar de não ex-
clusivamente, através destes protocolos. Podemos ter uma máquina Linux comuni-
36 Linux: Sistema Operacional II

cando-se com sistemas Windows e Netware nos protocolos NetBEUI e IPX sem
qualquer problema, mas isto não é comum. Vamos então verificar alguns arquivos
do /etc que definem configurações de alguns aspectos do ftp que faz parte do
TCP/IP.

Arquivo /etc/ftpaccess
Arquivo Descrição
ftpaccess Configura o comportamento do servidor FTP no Linux. Que
classes de usuários podem acessar, quantas tentativas de
conexão, mensagens de boas vindas e de aviso são alguns dos
parâmetros configuráveis aqui.
[root@Console /etc]# cat ftpaccess
1 class all real,guest,anonymous *
2 email root@localhost
3 loginfails 5
4 readme README* login
5 readme README* cwd=*
6 message /welcome.msg login
7 message .message cwd=*
8 compress yes all
9 tar yes all
10 chmod no guest,anonymous
11 delete no guest,anonymous
12 overwrite no guest,anonymous
13 rename no guest,anonymous
14 log transfers anonymous,real inbound,outbound
15 shutdown /etc/shutmsg
16 passwd-check rfc822 warn
[root@Console /etc]#

Existem diversos aspectos interessantes neste arquivo de configuração que podem


ser testados diretamente em seu computador com o Linux.

Qualquer alteração que seja feita neste arquivo de configuração passa a valer ime-
diatamente após ser salva.
Configuração do Linux 37

Para alterar as configurações deve-se utilizar um editor de textos. Em nosso exem-


plo utilizaremos o pico, muito mais fácil que o vi e mais interativo também, ideal
para interface texto.

A numeração de linhas exibida à esquerda não existe no arquivo original. Ela foi utilizada
aqui apenas para facilitar a explicação das configurações.

Utilizando o editor de textos pico

Digite o comando a seguir para carregar o pico:


[root@Console /etc]# pico ftpaccess

A interface do pico é simples de entender:

Utilize as setas para movimentar o cursor e faça a digitação direta como em qual-
quer editor de textos.

Os comandos são acionados com a tecla Ctrl combinada com letras. Por exemplo,
Ctrl + X encerra o pico salvando as alterações, Ctrl + G exibe uma tela de ajuda,
Ctrl + V avança uma página e Ctrl + Y retorna uma página e assim por diante.
Verifique todos os comandos disponíveis acionando o help com a combinação de
teclas Ctrl + G.

Figura 3.1
38 Linux: Sistema Operacional II

Ao abrir o arquivo, sua interface fica dividida nas três partes indicadas na figura
3.1 e a seguir descritas:

1 – Nome e versão do editor e o arquivo que está carregado.


2 – O conteúdo do arquivo que está carregado.
3 – Um help rápido com os principais comandos.

Entendendo cada linha do /etc/ftpaccess

Agora que você já conhece um pouco do pico, carregue o arquivo ftpaccess e va-
mos verificar o que suas configurações indicam.

Linha Descrição
1 Todas as classes de usuários que pertencerem aos grupos indicados po-
dem acessar o serviço de ftp.
2 Ocorrências serão enviadas para o e-mail indicado aqui.
3 Quantidade de logins mal sucedidos no ftp até que a conexão seja encer-
rada. Um login mal sucedido pode ser causado por um usuário inexistente
(não registrado no sistema) ou por uma senha incorreta.
4–7 Arquivos e tipos das mensagens que serão enviadas ao usuário que utiliza
o serviço de ftp.
8 – 13 Funções e comandos do sistema operacional que estão disponíveis e
quem pode utilizar cada um.
14 Local onde a descrição das ocorrências com a conexão ftp são armazena-
das. Isto permite uma auditoria rápida do que está ocorrendo com o ser-
vidor.
15 Arquivo com a mensagem a ser exibida em caso de problemas com o ser-
viço ftp e outras ocorrências.
16 Como a senha é verificada e que aviso deve ser emitido ao usuário.

Alterando e testando /etc/ftpaccess

Verifique se o serviço ftp está ativado:


[root@Console Garcia]# ftp localhost

ftp localhost aciona o serviço ftp no computador Linux local.


Configuração do Linux 39

Connected to Console.
220 Console FTP server (Version wu-2.6.0(1) Mon Feb 28 10:30:36 EST 2000) ready.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type

Informe o nome do usuário criado no processo da instalação. Não utilize superusuário


(root), o sistema não permitirá acesso ftp com este usuário.

Name (localhost:Garcia): Garcia


331 Password required for Garcia.
Password:
230 User Garcia logged in.
Remote system type is UNIX.
Using binary mode to transfer files.

O prompt indica que você está conectado. Digite o comando quit do ftp para voltar ao Shell.

ftp>quit
[root@Console Garcia]#

A seqüência anterior estabelece a conexão com o usuário padrão criado em seu sis-
tema.

Utilizando o pico edite o arquivo ftpaccess do /etc .


[root@Console /etc]# pico ftpaccess

Delete na primeira linha a palavra real e salve o arquivo. Ao emitir o comando Ctrl
+ X para sair, o pico pergunta:
Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?

Salvar as alterações efetuadas? (Respondendo No as mudanças serão perdidas).


Responda Yes para salvar. O pico perguntará o nome do arquivo. Simplesmente
tecle ENTER.

A palavra chave real habilita o ftp a aceitar usuários efetivamente cadastrados no


Linux e que não sejam o superusuário. A sua exclusão deverá impedir que usuários
cadastrados façam conexão FTP.

Agora tente novamente efetuar a conexão com aquele usuário.


40 Linux: Sistema Operacional II

[root@Console /etc]# ftp localhost


Connected to Console.
220 Console FTP server (Version wu-2.6.0(1) Mon Feb 28 10:30:36 EST 2000) ready.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:Garcia): Garcia
331 Password required for Garcia.

O processo evolui normalmente até o momento da conexão. Neste ponto, porém o Linux a
rejeita, pois agora o ftpaccess estabelece que apenas usuários guest e anonymous poderão
se conectar.

Password:
530 Login incorrect.
Login failed.
ftp> quit
221 Goodbye.
[root@Console /etc]#

Tente agora um ftp através do usuário anonymous. Este usuário não existe efeti-
vamente no Linux. É apenas uma identificação especial para acesso restrito ao Li-
nux via ftp.
[root@Console /etc]# ftp localhost
Connected to Console.
220 Console FTP server (Version wu-2.6.0(1) Mon Feb 28 10:30:36 EST 2000) ready.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:Garcia): anonymous
331 Guest login ok, send your complete e-mail address as password.

O ftp avisa que a senha para o convidado é o seu e-mail completo.

Password:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
Configuração do Linux 41

Depois de encerrar o ftp ele avisa quantos bytes foram transferidos durante a sessão.

221-You have transferred 0 bytes in 0 files.


221-Total traffic for this session was 403 bytes in 0 transfers.
221-Thank you for using the FTP service on Console.
221 Goodbye.
[root@Console /etc]#

O número que precede cada mensagem emitida pelo ftp é padronizado. Todo servi-
dor ftp envia ao cliente estes números.

Edite novamente o arquivo ftpaccess e insira novamente a palavra real. Salve as


alterações.
[root@Console /etc]# pico ftpaccess

Arquivo /etc/ftpusers
Este arquivo contém uma lista dos usuários que NÃO podem acessar o sistema via
ftp. O seu conteúdo padrão envolve os usuários: root, bin, daemon, adm, lp, sync,
shutdown, halt, mail, news, uucp, operator, games e nobody.

Utilizando a mesma técnica anterior (/etc/ftpaccess) faça o seguinte teste com o seu
usuário criado na instalação. Inclua este usuário na lista do /etc/ftpuser e tente aces-
sar o ftp com este usuário. Observe que a mensagem emitida pelo Linux será:

530 Login incorrect.


Login failed.
Navegar pelas pastas requer o entendimento de como o sistema de arquivos do Li-
nux é organizado.

Durante o processo da instalação, verificamos que um device pode conter um ou


mais pontos de montagem (mount point) e que o principal mount point é o /, tam-
bém chamado de raiz , pois é a partir dele que o acesso a todos os arquivos existen-
tes é possível. Diferente dos pontos de montagem, que associam uma estrutura de
pastas a um device, a estrutura que os usuários podem criar dentro de cada mount
point é completamente livre.

Para trabalhar com a criação de novas pastas e fazer a navegação por elas existem
os comandos que veremos a seguir.

Organizando dados e programas


A hierarquia das pastas permite organizar adequadamente os arquivos e programas
dentro do sistema de arquivos do Linux. Uma organização padrão é criada quando
da instalação do Linux, conforme já verificamos durante o processo de instalação.

42
Comandos de Navegação pelas Pastas 43

Figura 4.1 – Organização padrão das pastas no Linux

O usuário poderá organizar seus dados e programas partindo do seu diretório que
está localizado no /home/[nome do usuário]. Desta forma o usuário Garcia teria seu
diretório localizado em /home/Garcia. O diretório do usuário é chamado simple s-
mente de home.

Observe pela figura 4.2 que este usuário tem abaixo de sua pasta uma pasta chama-
da .kde e outra chamada Desktop.

Partindo do diretório home do seu usuário padrão, vamos navegar pelas pastas. Fa-
ça o login com o seu usuário e note que utilizaremos a conta comum e não a de su-
perusuário.

[Garcia@Console Garcia]$ cd

O comando cd (change dir) emitido sem parâmetros posiciona o foco do Shell no diretório
home do usuário.
[Garcia@Console Garcia]$ pwd
44 Linux: Sistema Operacional II

Figura 4.2 – Diretório home do usuário Garcia

O comando pwd (print which directory) simplesmente imprime o caminho completo (full
path) da pasta na qual o Shell está com o foco.

/home/Garcia
[Garcia@Console Garcia]$

Para alternar de pastas pode-se utilizar o caminho absoluto (full path) ou o caminho
relativo, que parte da pasta onde está o foco atualmente. Por exemplo, consideran-
do que o foco do Shell é /home/Garcia, para navegar até o /home/ftp existem duas
formas: utilizando o caminho absoluto ou utilizando o caminho relativo.

Utilizando o caminho absoluto


[Garcia@Console Garcia]$ pwd
/home/Garcia
[Garcia@Console Garcia]$ cd /home/ftp

Aqui foi utilizado o full path.


Comandos de Navegação pelas Pastas 45

[Garcia@Console ftp]$ pwd


/home/ftp
[Garcia@Console ftp]$
[Garcia@Console ftp]$ cd
[Garcia@Console Garcia]$ pwd
/home/Garcia

Utilizando o caminho relativo


[Garcia@Console Garcia]$ pwd
/home/Garcia
[Garcia@Console Garcia]$ cd ../ftp

Aqui foi utilizado o caminho relativo.

[Garcia@Console ftp]$ pwd


/home/ftp
[Garcia@Console ftp]$

Criando uma nova pasta


Para criar uma nova pasta utiliza-se o comando mkdir (make dir). Posicione o foco
do Shell no diretório home do seu usuário e faça:
[Garcia@Console Garcia]$ pwd
/home/Garcia
[Garcia@Console Garcia]$ mkdir documentos
[Garcia@Console Garcia]$ mkdir planilhas

O mkdir utilizado para criar os diretórios documentos e planilhas a partir do diretório Gar-
cia.
[Garcia@Console Garcia]$ ls

Comando ls (list structure) mostra os diretórios criados com mkdir.

documentos planilhas
[Garcia@Console Garcia]$
46 Linux: Sistema Operacional II

Continuando deste ponto navegue para documentos .

[Garcia@Console Garcia]$ pwd


/home/Garcia
[Garcia@Console Garcia]$ cd documentos

Novamente utilizando o caminho relativo. O foco já está em /home/Garcia, portanto basta


informar com o comando cd a pasta deste nível que deseja acessar. Note que a indicação do
prompt refere-se sempre à pasta de último nível, neste caso documentos.

[Garcia@Console documentos]$ pwd


/home/Garcia/documentos
[Garcia@Console documentos]$

Removendo uma pasta


Similar ao apagamento de um arquivo, a remoção de diretórios utiliza apenas um
comando específico para isto: rmdir (remove dir). Veja a seqüência de comandos:
[Garcia@Console Garcia]$ pwd
/home/Garcia
[Garcia@Console Garcia]$ ls
documentos planilhas
[Garcia@Console Garcia]$ rmdir documentos
[Garcia@Console Garcia]$ ls
planilhas
[Garcia@Console Garcia]$

A pasta documentos foi removida da estrutura de pastas do /home/Garcia.

Removendo uma pasta recursivamente


Este é um daqueles comandos perigosos. Freqüentemente é necessário remover não
apenas uma pasta, mas também todo o seu conteúdo, seja ela outra pasta ou arqui-
vo. O comando rm com o parâmetro adequado permite isto com bastante conforto,
pois pode com um único comando apagar a pasta e tudo que estiver dentro dela.

Vamos verificar esta facilidade utilizando a pasta planilhas criada no item anterior.
Vamos copiar para esta pasta alguns arquivos e depois vamos fazer comandos de
remoção para constatar seu funcionamento.
Comandos de Navegação pelas Pastas 47

Copiando arquivos para uma pasta


Faça o login como superusuário, posicione o Shell no diretório home do seu usuá-
rio padrão e depois para a pasta planilhas:
[root@Console /root]# cd /home/Garcia
[root@Console Garcia]# cd planilhas
[root@Console planilhas]# pwd
/home/Garcia/planilhas
[root@Console planilhas]#

Agora vamos copiar do /etc todos os arquivos que tenham a extensão .conf:

[root@Console planilhas]# cp /etc/*.conf .

Utilizamos o comando cp (copy) informando o full path e o diretório destino indicado


simplesmente pelo ponto. Neste contexto o ponto representa o diretório atual
(/home/Garcia/planilhas) que será o destino da cópia dos arquivos.
[root@Console planilhas]# ls

O comando ls nos permite confirmar que a cópia foi efetuada com sucesso ao exibir a lista
dos arquivos copiados.

amd.conf isapnp.conf mtftpd.conf phhttpd.conf


sysctl.conf cdrecord.conf krb5.conf mtools.conf
pine.conf syslog.conf esd.conf ld.so.conf
named.conf pnm2ppa.conf up2date.conf gpm-root.conf
ldap.conf nscd.conf pwdb.conf yp.conf
host.conf lilo.conf nsswitch.conf pxe.conf
ypserv.conf identd.conf logrotate.conf ntp.conf
resolv.conf inetd.conf ltrace.conf nwserv.conf
rpmfind.conf initlog.conf mesa.conf pbm2ppa.conf
smb.conf
[root@Console planilhas]#
48 Linux: Sistema Operacional II

Tentando remover com rm


Posicione agora o foco de Shell para o home do seu usuário padrão e vamos verif i-
car os comandos rm:
[root@Console planilhas]# pwd
/home/Garcia/planilhas
[root@Console planilhas]# cd ..

O comando cd com o caminho relativo .. (ponto ponto) indica o nível imediatamente acima
do atual.

[root@Console Garcia]# pwd


/home/Garcia
[root@Console Garcia]# rm planilhas

Emitimos o comando rm informando o nome do diretório que desejamos remover. O Shell


responde informando que planilhas é um diretório e nada acontece. Esta é uma segurança!

rm: planilhas: is a directory


[root@Console Garcia]#

Removendo com rm –r
Vamos utilizar um parâmetro adicional no comando rm:
[root@Console Garcia]# rm -r planilhas

O parâmetro -r (recursive), indica a intenção do usuário. O Shell pedirá a confirmação para


cada arquivo ou pasta que estiver na pasta planilhas.

rm: descend into directory ‘planilhas’? y

Confirme todos eles respondendo y (yes) em cada um.

rm: remove `planilhas/amd.conf'? y


rm: remove `planilhas/cdrecord.conf'? y
rm: remove `planilhas/esd.conf'? y
rm: remove `planilhas/gpm-root.conf'?
...
Comandos de Navegação pelas Pastas 49

rm: remove `planilhas/syslog.conf'? y


rm: remove `planilhas/up2date.conf'? y
rm: remove `planilhas/yp.conf'? y
rm: remove `planilhas/ypserv.conf'? y
rm: remove directory `planilhas'? y

Note agora que somente depois de remover todo o conteúdo de planilhas é que o rm pede a
confirmação para remover o próprio diretório planilhas.
[root@Console Garcia]#

Removendo com –r –f
Confirmar individualmente será muito demorado se a pasta contiver centenas de
arquivos. Para evitar isto utilizamos o parâmetro adicional –f. Vamos então criar
novamente a pasta planilhas, copiar os arquivos para lá e testar este comando com
o novo parâmetro. Agora CUIDADO! Este parâmetro inibe a segurança e ao teclar
<ENTER> tudo é imediatamente removido sem que nenhuma confirmação seja
solicitada:
[root@Console Garcia]# pwd

Verifique que o foco do Shell esteja no home do seu usuário padrão.

/home/Garcia
[root@Console Garcia]# mkdir planilhas

Criando a pasta com mkdir.


[root@Console Garcia]# cd planilhas

Navegando para a pasta com cd utilizando o caminho relativo.


[root@Console planilhas]# cp /etc/*.conf .

Copiando os arquivos com cp. Note o caminho absoluto para a origem dos arquivos do /etc
e o caminho relativo para o destino . (ponto).

[root@Console planilhas]# ls
amd.conf isapnp.conf mtftpd.conf phhttpd.conf
sysctl.conf cdrecord.conf krb5.conf mtools.conf
50 Linux: Sistema Operacional II

pine.conf syslog.conf esd.conf ld.so.conf


named.conf pnm2ppa.conf up2date.conf gpm-root.conf
ldap.conf nscd.conf pwdb.conf yp.conf
host.conf lilo.conf nsswitch.conf pxe.conf
ypse rv.conf identd.conf logrotate.conf ntp.conf
resolv.conf inetd.conf ltrace.conf nwserv.conf
rpmfind.conf initlog.conf mesa.conf pbm2ppa.conf
smb.conf
[root@Console planilhas]# cd ..

Navegando para o nível acima.


[root@Console Garcia]# rm -r -f planilhas

Emitindo o comando rm com os parâmetros –r (recursive) e –f (force).


[root@Console Garcia]# ls

Verificando agora o que sobrou no home.


[root@Console Garcia]#

O diretório está vazio. A pasta planilhas e todo seu conteúdo foram removidos sem que
nenhum aviso ou pedido de confirmação fosse emitido pelo Shell.

Verificando conteúdo da pasta


Já utilizamos o ls para verificar o conteúdo das pastas. Vamos conhecer outros as-
pectos deste comando com alguns parâmetros.

ls

Listagem simples do conteúdo da pasta.


[root@Console Garcia]# mkdir planilhas
[root@Console Garcia]# mkdir Desktop
[root@Console Garcia]# ls
Desktop planilhas
[root@Console Garcia]#
Comandos de Navegação pelas Pastas 51

ls – l

Lista longa do conteúdo da pasta, exibindo detalhes como permissões, dono, grupo,
espaço que ocupa, data e hora da criação e nome.
[root@Console Garcia]# ls -l
total 8
drwxr-xr-x 5 Garcia Garcia 4096 Aug 3 17:22 Desktop
drwxrwxr-x 2 root root 4096 Aug 3 17:22 planilhas
[root@Console Garcia]#

ls –la

[root@Console Garcia]# ls –la

O parâmetro l faz uma listagem longa (long) e o parâmetro a exibe todos os arquivos (all),
não ocultando os que começam com ponto.

A numeração que aparece à esquerda não é gerada pelo comando ls e foi inserida para faci-
litar a explicação.
52 Linux: Sistema Operacional II

Linha Descrição
1 Total de ligações listadas
2 Diretório atual (/home/Garcia)
3 Diretório acima (/home)
4 – 14 Arquivos iniciados por ponto
15 Diretório Desktop
16 Diretório planilhas
17 Arquivo x

[root@Console Garcia]#

Analisando a composição da listagem longa


Várias informações estão associadas a uma listagem longa. Vamos interpretar:
1

1 – Permissões no formato drwxr-xr-x – indicando ser um diretório


2 – Nome do dono deste diretório
3 – Nome do grupo do qual o dono do arquivo faz parte
4 – Tamanho da entrada em bytes
5 – Data e hora da criação do arquivo
6 – Nome do diretório

1 – Estrutura das permissões

A estrutura de permissões para os sistemas Unix é muito interessante. Com ela o


sistema tem total controle sobre o acesso a cada arquivo armazenado. Vamos ver
como isto funciona.

Cada um dos arquivos e diretórios Unix tem sua estrutura básica assim composta:
Comandos de Navegação pelas Pastas 53

d rwx rwx rwx

0 421 421 421

A letra d na posição 0 indica que se trata de um diretório. Quando for um arquivo


aparece um traço – e quando for link aparece a letra l.

Nas posições 4, 2 e 1 de cada conjunto de permissões, estarão sempre as letras r, w


e x ou simplesmente traços em seu lugar. Estas letras ou o traço indicam se
determinado arquivo tem permissão para ser lido (read), escrito (write) ou
executado (execute) ou não (quando ao invés da letra aparece um traço em seu
lugar).

O primeiro conjunto controla estas características para o dono do arquivo, as pos i-


ções no segundo conjunto fazem o mesmo para o grupo de usuários que participam
do mesmo grupo do dono e o terceiro para outros usuários (que não pertençam ao
grupo nem sejam o dono do arquivo).

d rwx rwx rwx

0 421 421 421

-
dono grupo outros
d
(owner) (group) (other)
l

Os valores atribuídos para cada posição dos conjuntos dono, grupo e outros, permi-
tem formar um valor para cada posição que, depois de combinadas, definem uma
seqüência numérica única para qualquer permissão que se deseje aplicar. Observe
este exemplo:

Criar um diretório de nome documentos que possa ser integralmente manipulado


pelo seu dono, somente lido pelos usuários do mesmo grupo de seu dono e que ou-
tros usuários não tenham acesso algum.

drwxr----- 5 Garcia Garcia 4096 Aug 3 19:14 documentos

Fazendo a combinação numérica descrita teremos:


54 Linux: Sistema Operacional II

d rwx r-- ---

dono grupo outros


dir
(owner) (group) (other)

0 4+2+1 4+0+0 0+0+0

0 7 4 0

Como será um diretório, a primeira letra será d.

Como o dono terá acesso total, as três letras rwx devem estar “ligadas”, portanto as
suas posições terão os valores 4, 2 e 1.

Como os usuários do grupo poderão apenas ler, então apenas o r estará “ligado”,
portanto as suas posições terão os valores 4, 0 e 0.

Finalmente outros usuários não terão acesso e, portanto, as suas posições r, w e x


estão “desligadas” e terão os valores 0, 0 e 0.

Combinando os valores teremos uma permissão numericamente representada por


740.

Alterando permissões

Acompanhe na listagem a seguir a seqüência de comandos para aplicar este exe mplo.
Primeiro faça o login e posicione-se no diretório home.

A partir deste ponto sempre que for necessário conectar-se ao Shell do Linux e fazer o login
com o usuário ordinário (nos exemplos aqui do livro aparecem como Garcia) criado no
processo de instalação do Console Linux 1.0 visto na Unidade 1 deste livro, isto será refe-
renciado apenas desta forma.
Comandos de Navegação pelas Pastas 55

Utilize os comandos cd e pwd para posicionar o foco e verificar o diretório home


além do diretório documentos e sua descrição.

Utilize o comando chmod (change mode), alterar modo, para mudar as permissões.
[root@console Garcia]# pwd
/home/Garcia
[root@console Garcia]# mkdir documentos
[root@console Garcia]# ls -l
total 12
drwxr-xr-x 5 Garcia Garcia 4096 abr 29 11:07 Desktop
drwxrwxr-x 2 root root 4096 mai 3 21:04 documentos
-rw-r--r-- 1 Garcia Garcia 737 mai 3 17:19 smb.conf
[root@console Garcia]# chmod 740 documentos
[root@console Garcia]# ls -l
total 12
drwxr-xr-x 5 Garcia Garcia 4096 abr 29 11:07 Desktop
drwxr----- 2 root root 4096 mai 3 21:04 documentos
-rw-r--r-- 1 Garcia Garcia 737 mai 3 17:19 smb.conf
[root@console Garcia]#

A listagem final confirma as permissões atribuídas ao diretório documentos.

Note que depois do comando chmod com o parâmetro 740, a permissão de docu-
mentos foi modificada para drwxr- – - – -.

2 – Total de links e nome do dono do arquivo

Um link é uma ligação simbólica que os sistemas Unix implementam para indicar a
posição lógica de um arquivo dentro do sistema de arquivos.

• Um arquivo tem pelo menos um link que aponta para o diretório onde ele
está.
• Um diretório tem pelo menos dois links, aquele que aponta para o diretório
onde ele está e aquele que aponta para um nível abaixo dele.

O nome do dono de um arquivo diz respeito ao usuário que o criou. Na listagem


abaixo o diretório documentos foi criado pelo usuário Garcia.
[root@Console Garcia]# ls -l
56 Linux: Sistema Operacional II

total 12
drwxr----- 2 root root 4096 mai 3 21:04 documentos
[root@Console Garcia]#

Alterando o dono

Para alterar o dono de um arquivo ou diretório utilize o comando chown (change


owner), mudar dono.

Na seqüência de comandos a seguir apresentada faz-se a verificação do dono com a


listagem do ls –l e a seguir altera-se o dono com chown. Para confirmar, uma nova
listagem é feita com o ls -l.
[root@console Garcia]# chown Garcia documentos
[root@console Garcia]# ls -l
total 12
drwxr-xr-x 5 Garcia Garcia 4096 abr 29 11:07 Desktop
drwxr----- 2 Garcia root 4096 mai 3 21:04 documentos
-rw-r--r-- 1 Garcia Garcia 737 mai 3 17:19 smb.conf
[root@console Garcia]#

3 – Nome do grupo deste arquivo

O nome do grupo de um arquivo diz respeito ao grupo ao qual pertence o usuário


que o criou. Na próxima listagem o diretório documentos foi criado por um usuá-
rio do grupo Garcia.
[root@Console Garcia]# ls -l
total 12
drwxr----- 2 Garcia root 4096 mai 3 21:04 documentos
[root@Console Garcia]#

Alterando grupo

Para alterar o grupo de um arquivo ou diretório utilize o comando chgrp (change


group), mudar grupo.

Na seqüência de comandos a seguir apresentada faz-se a verificação do grupo com


a listagem do ls –l e a seguir altera-se o grupo com chgrp. Para confirmar uma no-
va listagem é feita com o ls -l.
Comandos de Navegação pelas Pastas 57

[root@console Garcia]# chgrp Garcia documentos


[root@console Garcia]# ls -l
total 12
drwxr-xr-x 5 Garcia Garcia 4096 abr 29 11:07 Desktop
drwxr----- 2 Garcia Garcia 4096 mai 3 21:04 documentos
-rw-r--r-- 1 Garcia Garcia 737 mai 3 17:19 smb.conf
[root@console Garcia]#

4 – Total de bytes alocados para o arquivo

Ao criar um diretório, o Linux reservará para ele pelo menos 4096 bytes que é o
tamanho padrão de uma unidade de alocação de dados. Para um arquivo o espaço
alocado será igual ao seu conteúdo. Desta forma, se na listagem aparecerem 15
bytes alocados para um arquivo, é este o espaço efetivamente ocupado por ele.

5 – Data e hora de sua criação

Marca o momento exato no qual o arquivo ou diretório foi criado. Esta informação
é derivada do relógio da máquina, se o mesmo estiver errado, a informação gravada
também estará.

Na próxima seqüência de comandos o foco do Shell é posicionado no diretório do-


cumentos e seu conteúdo verificado. O comando date é utilizado para mostrar data
e hora do sistema. Um arquivo é então criado utilizando o comando cat > teste
com o conteúdo 0123456789 e gravado com Ctrl+ D. Um novo ls mostra o arqui-
vo de 11 bytes criado em 3 de maio as 21:13.
[root@console Garcia]# cd documentos
[root@console documentos]# date
qui mai 3 21:12:27 BRT 2001
[root@console documentos]# ls -l
total 0
[root@console documentos]# cat > teste
0123456789
[root@console documentos]# ls -l
total 4
-rw-rw-r-- 1 root root 11 mai 3 21:13 teste
[root@console documentos]#
58 Linux: Sistema Operacional II

Talvez você esteja se perguntando: Porque 11 bytes se foram digitados apenas 10


caracteres? Por que o caractere especial de marcação de fim de arquivo, chamado
EOF (End Of File), apesar de não ser exibido, está lá, indicando onde o arquivo
termina.

Alterando data e hora no Linux

Sendo necessário efetuar ajuste na data e hora do Linux, o mesmo comando date
pode ser utilizado, porém informando os parâmetros MMDDHHMM, ou seja, mês,
dia, hora e minutos. Acompanhe os comandos e verifique o resultado:
[root@Console Garcia]# date
Fri Aug 4 16:25:01 AMT 2000
[root@Console Garcia]# date 12311435

A data é alterada para 31 de dezembro às 14:35

Sun Dec 31 14:35:00 AMT 2000


[root@Console Garcia]#

Retorne agora a data e hora para os valores corretos.

6 – Nome do arquivo
• O nome do arquivo permite o acesso a ele e suas referências.
• Deve-se utilizar apenas letras e números na formação de nomes de arqui-
vos e diretórios.
• Caracteres acentuados e de controle devem ser evitados.
• Nomes longos (com mais de oito caracteres) podem ser utilizados, mas o
espaço em branco não é permitido. Para contornar isto, se utiliza ponto ou
sublinhado para compor o nome longo, por exemplo, nome_do_arquivo ou
nome.do.arquivo pode ser utilizado sem problemas.
Pode-se dizer que o Linux é um Unix. Por ser um Unix ele segue o padrão POSIX
e seguindo este padrão ele é funcionalmente compatível com todos os Unix que
existem e vice-versa.

Veja o artigo detalhado sobre Sistemas Operacionais no seguinte endereço:


http://www.console.com.br/?doc=/editorial/ntvsunix/.

Compatibilidade funcional
Isto não quer dizer que um programa escrito para rodar em Linux vai funcionar exa-
tamente como está se for instalado no SCO Unix (Unix para plataforma x86 produzi-
do pela Santa Cruz Operations) ou no AIX (Unix da IBM). Para isto ele deve ser re-
compilado para aquela plataforma, pois não existe compatibilidade binária.

Compatibilidade binária
Este tipo de compatibilidade se verifica quando um programa puder ser instalado
em vários sistemas sem qualquer alteração. É o que ocorre com alguns programas
escritos para rodar em Windows 98 e que também funcionam bem no Windows NT
ou no Windows 2000.

59
60 Linux: Sistema Operacional II

Mas então o que é Linux?


É o núcleo de um sistema operacional Unix , multiusuário, multitarefa e multipro-
cessado, de livre distribuição (pode ser copiado sem qualquer restrição), disponível
para equipamentos x86 (Intel e compatíveis), Motorola 68000, Digital Alpha,
Sparc, Mips e PowerPC que adota o padrão POSIX – (Portable Operating System
Interface), seguindo desta forma as indicações e recomendações do IEEE (The Ins-
titute of Electrical and Electronics Engineers, Inc. que ajuda no avanço global pela
promoção de processos de engenharia para criação, desenvolvimento, integração,
compartilhamento e aplicação de conhecimentos sobre eletricidade e informações
tecnológicas e científicas para o benefício da humanidade e da profissão).

O kernel do Linux não utiliza código proprietário (aquele tipo de programa escrito
para funcionar apenas sob determinados processadores), sendo a maior parte de seu
desenvolvimento feito sob o projeto GNU da Free Software Foundation, tornando
obrigatório distribuir o código fonte.

Onde REALMENTE está o Linux?


Muitos usuários de computador utilizam uma versão modificada do sistema GNU
todos os dias, sem perceberem. Através de uma peculiar reviravolta dos fatos, a
versão do GNU que é largamente utilizada hoje é mais conhecida como Linux, e
muitos usuários não sabem de sua conexão com o Projeto GNU.

O kernel
Há realmente um Linux e ele é o núcleo (kernel), e todos o estão utilizando. Mas
não é possível usar um núcleo sozinho; um núcleo só é útil como parte de todo um
sistema operacional. Linux é normalmente utilizado em combinação com o sistema
operacional GNU: o sistema é basicamente GNU, com Linux funcionando como
núcleo.

Os usuários em geral não estão totalmente inteirados da diferença entre o núcleo,


que é o Linux, e todo o sistema operacional, que também é genericamente chamado
Linux. O uso ambíguo desse nome não promove o entendimento.

Os programadores geralmente sabem que Linux é o núcleo. Mas desde que eles
também já ouviram todo o sistema ser chamado Linux, muitas vezes visualizam
uma história que corresponde ao nome. Por exemplo, muitos acreditam que, assim
Universo Unix e o Projeto GNU 61

que Linus Torvalds terminou de escrever o núcleo, seus amigos procuraram por
outros programas livres e, por nenhuma razão em particular, praticamente tudo ne-
cessário para criar um sistema similar ao Unix já estava disponível.

GNU e as partes do todo


O que eles acharam não foi nenhum acidente – foi o sistema GNU. O software livre
disponível compôs um sistema completo porque o Projeto GNU já estava traba-
lhando desde 1984 para criar um. O Manifesto GNU definiu o objetivo de criar um
sistema livre similar ao Unix , chamado GNU. O Anúncio Oficial do sistema GNU
também ressalta alguns dos planos originais para o sistema GNU. Quando o Linux
foi escrito, o sistema já estava quase acabado.

GNU's Not Unix!

Os grandes colaboradores
A maioria dos projetos de software livre tem por objetivo desenvolver um progra-
ma em particular para uma tarefa em particular. Por exemplo, Linus Torvalds es-
creveu um núcleo similar ao Unix (Linux); Donald Knuth escreveu um formata-
dor de textos (TeX); Bob Scheifler escreveu um sistema de janelas (X Windows).
É natural medir a contribuição deste tipo de projeto pelos programas específicos
que vieram daquele projeto.

Se tentássemos medir a contribuição do projeto GNU dessa forma, o que concluirí-


amos? Um distribuidor de CD-ROM percebeu que em sua distribuição Linux, o
software GNU era o maior contingente único, por volta de 28% de todo o código
fonte, e isso incluía alguns dos componentes essencia is sem os quais não poderia
haver sistema. O Linux representava por volta de 3%. Assim, se você for escolher
um nome para o sistema baseado em quem escreveu os programas no sistema, a
escolha simples mais apropriada seria GNU.
62 Linux: Sistema Operacional II

Mas não existe concordância de que esta é a maneira correta de considerar a ques-
tão. O projeto GNU não foi e não é um projeto para desenvolver pacotes específi-
cos de software. Não foi um projeto para desenvolver um compilador C, apesar de
também ter feito isto. Não foi também um projeto para desenvolver um editor de
textos, apesar de vários deles terem sido desenvolvidos. O objetivo do Projeto
GNU era desenvolver um Sistema Operacional Livre similar ao Unix.

O que foi e continua sendo feito

Muitos fizeram grandes contribuições para o software livre no sistema GNU, e to-
dos eles merecem crédito. Mas a razão pela qual temos um sistema conhecido ge-
nericamente por Linux – e não somente uma coleção de programas úteis – é porque
o Projeto GNU se definiu para fazer um. Criou-se uma lista de programas necessá-
rios para compor um sistema livre completo, e este foi sistematicamente sendo
encontrado e escrito, ou encontraram-se pessoas para escrever tudo que a lista con-
tinha. A equipe GNU e seus cola boradores escreveram componentes principais,
essenciais, mas não excitantes como o montador (assembler) e o editor de ligação
(linker), porque não é possível ter um sistema operacional sem eles. Um sistema
completo necessita mais do que simplesmente ferramentas de programação; o
Bourne Again Shell (bash), o interpretador PostScript Ghostscript e a biblioteca
GNU C são igualmente importantes.

O kernel GNU Hurd

Por volta do início dos anos 90 todo o sistema à parte do núcleo foi agrupado (e
ainda está-se trabalhando em um kernel, o GNU Hurd). Desenvolver esse núcleo
tem sido bem mais difícil do que se esperava, e ainda há muito trabalho para sua
finalização.

Felizmente, você não precisa esperar por ele, porque o Linux está funcionando ago-
ra. Quando Linus Torvalds escreveu o Linux, ele completou a última grande lacu-
na. Pessoas puderam então colocar o Linux junto com o sistema GNU para compor
um sistema livre completo: um sistema GNU baseado em Linux (ou sistema
GNU/Linux, para simplificar).

Colocar os dois componentes juntos parece simples, mas não foi uma tarefa trivial.
A biblioteca GNU C (chamada glibc para simplificar) precisou de mudanças subs-
tanciais. Integrar um sistema completo como uma distribuição que funcionasse fora
da caixa (disponível na Internet para download) foi também um trabalh o grande.
Isto exigiu resolver o problema de como instalar e iniciar o sistema (boot) – um
problema que ainda não foi resolvido, porque ainda não se chegou lá. As pessoas e
Universo Unix e o Projeto GNU 63

empresas que desenvolveram as várias distribuições de sistema (Red Hat, Mandra-


ke, Suse, Conectiva, Corel, etc.) deram uma contribuição substancial.

À parte do GNU, um outro projeto desenvolveu um sistema livre similar ao UNIX.


Este sistema é conhecido como free BSD, e foi desenvolvido na Universidade da
Califórnia em Berkeley. Os desenvolvedores do BSD foram inspirados a fazer seu
trabalho como software livre seguindo o exemplo do Projeto GNU, e ocasiona l-
mente encorajaram os ativistas do GNU, mas seu trabalho real teve pouca relação
com o GNU. Sistemas BSD hoje utilizam algum software GNU, assim como o sis-
tema GNU e suas variantes utilizam algum software BSD, mas, olhando-os como
um todo, eles são dois sistemas diferentes que evoluíram separadamente. Um sis-
tema operacional livre que existe hoje é quase com certeza ou uma variante do sis-
tema GNU ou um tipo de sistema BSD.

O Projeto GNU suporta os sistemas GNU/Linux assim como o sistema GNU –


mesmo com contribuição financeira. O GNU financiou a reescrita das extensões da
biblioteca GNU C relacionadas ao Linux, para que agora elas estejam bem integra-
das, e os novos sistemas GNU/Linux usam a versão corrente da biblioteca sem mo-
dificações. A GNU também financiou um estágio inicial do desenvolvimento do
Debian GNU/Linux.

A confusão
Todos nós (usuários, desenvolvedores, empresas) utilizamos sistemas GNU basea-
dos em Linux hoje para a maioria do nosso trabalho, e espera-se que você também
os use. Mas definitivamente não confunda o usuário utilizando o nome Linux de
forma ambígua. Linux é o núcleo, um dos principais componentes essenciais do
sistema. O sistema como um todo é mais ou menos o sistema GNU.

Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc., 59 Temple Place –
Suite 330, Boston, MA 02111, USA
Várias companhias vendem computadores com sistemas GNU/Linux totalmente
grátis pré-instalados.

Existem muitos colaboradores pessoais, universidades, empresas de softwares e


distribuidores em todo o mundo trabalhando no desenvolvimento e constante apri-
moramento do GNU/Linux. Isso traz vantagens como o contato direto com os de-
senvolvedores e a atualização e correção rápida de softwares.

Por ser o próprio Linux e também milhares de aplicações desenvolvidas em diver-


sos locais, surgiram empresas especializadas em compilar, testar e suportar o Linux
64 Linux: Sistema Operacional II

e seus principais aplicativos, além é claro de implementarem melhorias voltadas


para o seu mercado de atuação e também atuarem como elementos fomentadores
da disseminação do sistema.

Surgiram então distribuições como Debia n, Slackware, Conectiva, Red Hat, SUSE,
Mandrake, Open Linux, Corel Linux, etc., cada uma com as suas próprias caracte-
rísticas, mas tendo em comum interface melhorada de instalação, muitas delas to-
talmente gráficas como é o caso do Console Linux 1.0, além de aplicativos gratui-
tos, atualizações permanentes e manuais.

Por que o pingüim?


Foi idéia do criador do kernel Linux, Linus Torvalds.

Ele pensou em alguma coisa que pudesse representar de maneira muito poética a
satisfação que sente uma pessoa após se fartar com chocolate. Ela apenas senta-se e
então fica sentindo o prazer daquelas delícias.

Quem melhor do que o pingüim que depois de comer um monte de peixe senta-se e
fica esperando a hora da próxima refeição? Fica simplesmente ali: calmo, firme,
decidido, auto-suficiente sabendo que a qualquer momento ele pode ir em busca de
mais e mais até se fartar novamente e depois sabe que sentirá o mesmo prazer de
novo ou mesmo algo maior e melhor.

Esta é a idéia que o pingüim nos transmite: liberdade, auto-suficiência e prazer. É


isto que a GNU Free Software Fundation defende e é por isto que o software livre
existe.
Operar o ambiente do Shell é o nosso ponto focal neste livro. É com ele que tudo
acontece e é por onde tudo pode ser feito no GNU/Linux. O nosso objetivo princ i-
pal é conhecer e dominar estas ferramentas.

Bourne Again Shell, o bash. Pelo seu prompt o usuário pode ter acesso a tudo que
o GNU/Linux oferece, codificar e executar programas utilizando os recursos nati-
vos deste ambiente e avançar nos segredos do sistema.

O que é um Shell
Basicamente um Shell é simplesmente um processador de macros (conjuntos orde-
nados de comandos) que executa comandos. Um Shell de Unix funciona como um
interpretador de comandos que provê uma interface ao usuário, trazendo um con-
junto completo de comandos Unix e ainda uma linguagem de programação que
permite combinar estes comandos.

Com o Shell podem-se criar arquivos que contêm comandos que passarão a funcio-
nar como se fossem novos comandos. Estes comandos novos têm a mesma usabili-
dade dos comandos embutidos do sistema, permitindo aos usuários ou grupos de
trabalho estabelecerem ambientes mais amigáveis. Para usuários acostumados ao
MS-DOS, por exemplo, pode-se criar um comando cls ou dir.

65
66 Linux: Sistema Operacional II

O Shell permite execução de comandos de Unix síncronos ou assíncronos . Quan-


do um comando síncrono é emitido, o Shell espera que eles terminem sua tarefa
antes de aceitar novos comandos (por exemplo, ls e find); comandos assíncronos
são executados em paralelo com o Shell enquanto ele aceita e executa comandos
adicionais.

Com a estrutura redirection obtém-se um controle preciso da entrada e saída


daqueles comandos assíncronos e o Shell permite controle sobre o conteúdo deles.
O Shell Unix também oferece um pequeno conjunto de comandos embutidos
(built-in commands ) implementando funcionalidades impossíveis de se obter
(como por exemplo, cd, break, continue , e exec), ou inconvenientes de se
manter (history , getopts , kill ou pwd , por exemplo) em utilitários em separado.
O Shell pode ser utilizado de maneira interativa ou não interativa, ou seja, ele
pode aceitar entradas digitadas diretamente pelo teclado ou a partir de um arquivo.
Todas as facilidades embutidas no Shell são descritas mais adiante.

Resumindo
• O Shell é um processador de macros que traz uma linguagem de pro-
gramação embutida.
• Macros são conjuntos de comandos processados seqüencialmente.
• Comandos podem ser síncronos ou assíncronos .
• Em um comando síncrono , o Shell espera seu término antes de aceitar no-
vos comandos.
• Em um comando assíncrono, o Shell aceita novos comandos enquanto o
comando inicial é executado.
• Com o redirection podem-se controlar com precisão as entradas e as saí-
das dos comandos.
• O Shell possui diversos comandos embutidos.
• O Shell pode ser utilizado de maneira interativa ou não interativa.
• No modo interativo as entradas para os comandos (parâmetros, opções e
flags) são digitadas.
• No modo não interativo as entradas são lidas de um arquivo.

Enquanto a execução de comandos é essencial, o maior poder (e complexidade) do


Shell é trazer embutido uma linguagem de programação. Por ser uma linguagem de
alto nível, o Shell provê ao usuário:
• Variáveis
• Controle de fluxo
O Bash 67

• Construtores
• Comentários
• Funções

O ambiente do Shell oferece características especificamente projetadas para um uso


mais interativo em lugar de aumentar o poder da linguagem de programação que
traz embutida. Estas características interativas incluem:
• Controle de trabalho
• Edição da linha de comando
• Histórico dos comandos
• Aliases (apelidos)

Operação do Shell
Ler uma entrada diretamente de um arquivo (Shell script). Esta opção torna o Shell
ilimitado em opções. O usuário pode criar menus interativos que executem várias
operações que seriam complexas, demoradas ou sujeitas a muitos erros se fossem
executadas diretamente na linha de comando.

O redirection funciona aqui permitindo ao comando ler as entradas que normal-


mente seriam digitadas pelo usuário, diretamente de um arquivo.

O comando dc, por exemplo, permite a execução de cálculos simples diretamente pelo
prompt. As entradas para este comando devem ser entradas diretamente pelo teclado.
[root@console documentos]# dc
25
25
+
p
50
[root@console documentos]#

No exemplo, ao digitar dc, o prompt desaparece e o comando passa a aceitar as


entradas, sempre em pares, a operação desejada (soma neste caso) e o comando
para imprimir o resultado (p).

Usando o redirection para entrada < (sinal de menor), a mesma seqüência pode ser
lida de um arquivo. Desta forma, se criarmos um arquivo que tenha a seqüência
correta de parâmetros, o dc poderá ler e exibir o resultado.
68 Linux: Sistema Operacional II

Comando dc

Os parâmetros do comando dc são:


+ adição
- subtração
/ divisão
* multiplicação
~ retorna 0 se a divisão for exata e 1 se não for
v exibe a porção inteira da raiz quadrada do valor entrado
Os operadores do comando dc são:
p imprime o resultado da operação
P zera a entrada

Vamos então criar um arquivo chamado parms com a seqüência correta para cal-
cular raiz quadrada de 144. Este arquivo deve ter a seqüência:
144
v
p

Utilize o pico e crie o arquivo parms com o conteúdo correto. Verifique o conteú-
do com cat e execute o dc usando o redirecionador de entrada.
[root@console documentos]# cat parms
144
v
p

[root@console documentos]# dc < parms


12
[root@console documentos]#

Note que ao fazer dc < parms , o Shell exibe o resultado esperado. O que o Shell
fez foi ler os dados do arquivo texto parms e executar o seu conteúdo como fosse
uma entrada digitada pelo usuário.
O Bash 69

Parâmetros para scripts


O comando dc é interativo, ou seja, depois de executado exige que o usuário entre
com os valores, seja digitando, seja lendo de um arquivo. Outros comandos exigem
que um parâmetro seja informado diretamente na linha de comando, como é o caso
do cat que requer um nome de arquivo para funcionar.

Quando criamos scripts, estes podem funcionar recebendo parâmetros diretamente


pelo Shell na linha de comando. Para que o script identifique os parâmetros, eles
são aceitos de forma posicional, ou seja, a seqüência na qual eles são digitados in-
dica em qual parâmetro o valor estará. Até nove parâmetros podem ser entrados
para um script e eles serão identificados internamente através de sua posição numé-
rica precedida pelo símbolo $.

Criando um simples localizador de arquivos


Por exemplo, para efetuar a procura de um arquivo em determinado local da estru-
tura de arquivos, o usuário pode ter um Shell script que aceite o comando:

localizar [arquivo a localizar] [iniciando na pasta]

Utilizando o pico, crie no /bin um arquivo chamado localizar que tenha o conteúdo
listado a seguir. Não digite a numeração das linhas. Os dois parâmetros utilizados
neste exemplo serão identificados dentro do script como $1 e $2.

O comando Shell que faz a localização de arquivos é o find e ele utiliza vários pa-
râmetros. Criando o localizar isto é simplificado para apenas dois parâmetros, in-
cluindo ainda mais algumas facilidades utilizando os redirection para saída ( > ) e
append ( >> ).

Ao ser executado, este novo comando apresentaria o seguinte resultado:


70 Linux: Sistema Operacional II

Depois de localizar os arquivos solicitados, ele faz uma listagem mostrando as o-


corrências gravadas em um arquivo (arquivos encontrados) e a ordem na qual fo-
ram encontradas. Este script armazena ainda os resultados da localização anterior
no arquivo encontrados.hist, mantendo assim um histórico das procuras.

Analisando este script linha a linha:

Linha Descrição
1 Executa o script cls.
2 Exibe a mensagem.
3 Insere ao final do arquivo encontrados.hist a data e hora.
4 Insere ao final do arquivo encontrados.hist a mensagem sendo $1 e $2
substituídos pelos valores digitados na linha de comando.
5 Insere ao final do arquivo encontrados.hist o tracejado.
6 Exibe na tela o que está sendo localizado e em qual diretório iniciará.
7 Exibe na tela um tracejado.
8 Exibe na tela a mensagem Aguarde...
9 Executa o comando find que fará a localização efetivamente. O
resultado da localização é gravado no arquivo encontrados.
10 Insere ao final do arquivo encontrados.hist o resultado da localização
concluída.
11 Exibe na tela o resultado da localização, precedendo cada uma o seu
número de seqüência.
O Bash 71

Um pequeno script com estrutura de decisões

Estruturas de decisão também podem ser implementadas utilizando o bash. Veja


este exemplo. A numeração das linhas não deve ser digitada. Crie o arquivo no di-
retório /bin com o nome animal utilizando para isto o editor pico.

Neste exemplo a entrada é interativa e não por parâmetros. Utilizamos então o co-
mando read que interrompe a execução do script até que uma entrada seja feita
pelo teclado.

Para executar o script altere suas permissões para 755 e digite seu nome.

Linha Comentários
1–3 Simples comentários.
4 Exibe a mensagem entre aspas mantendo o cursor na mesma linha (-n).
5 Espera uma entrada pelo teclado e armazena na variável ANIMAL.
6 Exibe a mensagem entre aspas, resolvendo o conteúdo da variável
$ANIMAL.
7 – 12 Estrutura de decisão case com a impressão da resposta correta.
13 Exibe o ponto e pula linha.

Para rodar o programa:


[root@Console Garcia]# ./animal
72 Linux: Sistema Operacional II

Digite o nome de um animal: cavalo


O animal informado (cavalo) tem quatro patas.
[root@Console Garcia]#

O ponto barra (./) antes do nome do arquivo (animal) indica que o bash deve pro-
curar o arquivo executável no diretório atual.

Só para que você não esqueça: Para que estes exemplos (localizar e animal)
possam ser executados:
• Crie os arquivos com o editor pico [nome do arquivo].
• Depois de criados torne-os executáveis com chmod 755 [nome do arquivo].

Neste tipo de script é possível utilizar a técnicas de redirection de entrada ( < ) co-
locando o nome do animal em um arquivo e fazendo com que ele seja lido: ani-
mal < arquivo como fizemos com o dc.

Comandos acessíveis pelo Shell


As próximas páginas são dedicadas a uma referência rápida dos principais coman-
dos disponíveis no bash. Utilize-as sempre que tiver dúvidas em como utilizar este
ou aquele comando, mas lembre-se de que aqui está apenas uma referência rápida.
Detalhes de cada comando podem (e devem) ser consultados diretamente no
prompt do Shell com o comando info ou man.

arch
Nome
arch – exibe a arquitetura da máquina

Resumo
arch

Descrição

O comando arch é equivalente ao comando uname -m.

Em sistemas Linux, arch exibe coisas como "i386", "i486", "i586", "alpha",
"sparc", "arm", "m68k", "mips", "ppc".
O Bash 73

Veja também
uname(1), uname(2)

Exemplo

[root@Console /root]# arch


i586
[root@Console /root]#
A resposta obtida aqui indica que o processador é um Pentium compatível
(i586).

ash
Nome
ash – um Shell

Resumo
ash [ -efIijnsxz ] [ +efIijnsxz ] [ -c command ] [ arg ]

Copyright
Copyright 1989 por Kenneth Almquist.

Descrição
O ash é uma versão do Shell com facilidades similares àquelas encontradas em
sistemas Unix compatíveis com System V.

Chamadas
Se a opção -c for informada, então o Shell executa o comando especificado. O flag
-s flag faz o Shell ler o comando da entrada padrão (depois de executar os
comandos especificados com a opção –c). Se as opções –s ou –c forem informadas
o primeiro argumento é trazido como o nome de um arquivo a partir do qual serão
lidos comandos. Se isto for impossível pela inexistência de argumentos, então o –s
fará a leitura dos comandos pela entrada padrão.

O Shell fixa o valor inicial dos parâmetros posicionais a partir dos argumentos
restantes depois que qualquer argumento usado como o nome de um arquivo de
comandos é apagado.
74 Linux: Sistema Operacional II

Os flags devem ser precedidos pelo sinal de menos “-” ou de mais “+”. Verifique o
conjunto de comandos embutidos para uma lista de flags. Se nenhum valor for
especificado para o flag –i, o flag –s passa a valer e a entrada e saída padrão do
Shell são direcionadas para o terminal.

Se nenhum valor é especificado para o flag –j o flag que vale será o –i.

Quando o Shell é carregado com a opção –c é sempre bom incluir a opção –i se os


comandos serão digitados interativamente pelo usuário.

Por questões de compatibilidade com o System V a opção –i deve vir após a opção
–c.

Se nenhum caractere for informado antes do sinal de “-” (menos) o Shell assume
que está acontecendo um login e então os arquivos /etc/profile e .profile serão
lidos se existirem.

Se a variável de ambiente SHINIT for definida ao entrar no Shell os comandos


SHINIT serão analisados e executados normalmente.

SHINIT não será examinado se o Shell identificar que está ocorrendo um processo
de login.

O Shell será tratado como um simples procedimento se as opções –s e –c não


forem informadas.

Estruturas de controle

Uma lista é uma seqüência de nenhum ou mais comandos separados por quebra de
linha, ponto e vírgula ou barra invertida ou opcionalmente terminada por um destes
três caracteres. Isto difere um pouco do System V que abriga uma lista contendo
pelo menos um comando na maioria dos casos.

Os comandos na lista serão executados na ordem em que foram escritos. Se os


comandos forem seguidos por ponto e vírgula, o Shell iniciará imediatamente no
comando seguinte ou aguardará que o comando termine antes de ir para o próximo.

“&&” e “||” são operadores binários. “&&” executa o primeiro comando e então
executará o segundo comando se o resultado do primeiro comando for zero.

“||” é similar, mas executará o segundo comando apenas se o resultado do primeiro


comando for diferente de zero.
O Bash 75

“&&” e “||” tem a mesma prioridade.

“|” é um operador binário que alimenta a saída padrão do primeiro comando como
entrada padrão para o segundo comando.

O operador “|” pode ser combinado várias vezes e tem precedência sobre “&&” e “||”.

Exemplo if...fi

Utilizando o que vimos até agora é possível criar um script interativo que
chamaremos de ash1. Trata-se de uma calculadora interativa criada com
redirection de entrada ( < ) de saída ( > ) e de append ( >> ).

Crie o arquivo no diretório /bin com o nome ash1 utilizando para isto o editor pico.

Para executar o script altere as permissões para 755 e digite ash1.


76 Linux: Sistema Operacional II

Linha Comentários
1 Limpa a tela.
2–4 Exibe as mensagens entre aspas mantendo o cursor na mesma linha (-n).
5 Espera uma entrada pelo teclado e armazena na variável A.
6 Exibe a mensagem entre aspas.
7 Espera uma entrada pelo teclado e armazena na variável OPERADOR.
8 Exibe a mensagem entre aspas.
9 Espera uma entrada pelo teclado e armazena na variável B.
10 Cria um arquivo x com o valor de A.
11 Adiciona ao arquivo x o valor de B.
12 – 17 Testa se o operador é multiplicação (x) e substitui pelo caractere
apropriado (*) senão preserva o caractere digitado pelo usuário,
adicionando o operador ao arquivo x.
18 Adiciona ao arquivo x o caractere p.
19 Utiliza o comando dc para calcular a expressão e armazena o resultado
no arquivo y.
20 – 22 Exibe o resultado da expressão.

Redirecionando entrada e saída de comandos


O stdout (saída padrão) para comandos Linux é o terminal (monitor) e o stdin
(entrada padrão) é o teclado. Utilizando os redirecionadores de entrada ( < ),
saída ( > ) e inclusão ou append ( >> ), é possível flexibilizar bastante os scripts
deixando-os mais poderosos e interativos.

No exemplo ash1 as linhas 10 e 19 usam o redirecionador de saída ( > ) para criar


arquivos auxiliares x e y respectivamente. Nas linhas 11, 14, 16 e 18 utiliza-se o
append ( >> ) e na linha 19 está um redirecionador de entrada ( < ).

O redirecionamento de entrada equivale ao usuário digitar o que estiver no arquivo.


Desta forma, no exemplo ash1, o script gera um arquivo chamado x que conterá a
seqüência necessária à execuç ão dos cálculos.
O Bash 77

O comando dc

Veja neste exemplo que depois de digitar o comando dc o prompt passa a receber
parâmetros. Os dois primeiros são os valores (10 e 2), o terceiro é a operação a ser
executada (multiplicação) e finalmente um comando (p) que imprime o resultado
da operação, neste caso 10 x 2 = 20.

cat
Nome
cat – concatena arquivos e imprime no stdout (saída padrão).

Resumo
cat [OPÇÕES] [ARQUIVO]...

Descrição

Concatena ARQUIVO(s), ou entrada padrão, para saída padrão.

-b, --mostra a numeração das linhas ignorando as que estão em branco.


-E, --Mostra finais das linhas pela indicação do símbolo $ ao final de cada
linha.
-n, --numera todas as linhas na saída padrão.
-T, --mostra TAB como ^I.
--help mostra o help e sai
--version mostra informações sobre versão e sai.
Quando ARQUIVO não é informado, faz leitura da entrada padrão.

Copyright
Copyright © 1999 Free Software Foundation, Inc.
78 Linux: Sistema Operacional II

Exemplo

Note no exemplo a utilização direta do comando e sua combinação com a opção –e.

chgrp
Nome
chgrp – muda referência ao nome do grupo.

Resumo
chgrp [OPÇÕES]... GROUP ARQUIVO...

Descrição

Muda a referência ao grupo de cada arquivo para o grupo especificado.

-c, --change – A referência ao grupo para cada arquivo exibindo a execução.


-R, --recursivo – Estende a troca para todos os diretórios abaixo do foco atu-
al do Shell.
-v, --verbose – Exibe um diagnóstico de cada alteração feita nos arquivos.
--help – Exibe o help e sai.
--version – Exibe a versão e sai.
O Bash 79

Autor
Programa escrito por David MacKenzie.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

Exemplo

Mudando as referências para os grupos de todos os arquivos em um diretório exi-


bindo a operação com –v.

Verificando os grupos atuais com ll (equivalente a ls –l).

Fazendo a alteração utilizando o comando chgrp.

Verificando o resultado com ll.


80 Linux: Sistema Operacional II

chown
Nome
chown – muda dono do arquivo.

Resumo
chown [OPTION]... .GROUP FILE...

Descrição

Troca o dono de cada arquivo.

-c, --change – A referência ao grupo para cada arquivo exibindo a execução.


-R, --recursivo – Estende a troca para todos os diretórios abaixo do local do foco.
-v, --verbose – Exibe um diagnóstico de cada alteração feita nos arquivos.
--help – Exibe o help e sai.
--version – Exibe a versão e sai.

Autor
Programa escrito por David MacKenzie.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

Exemplo

Mudando as referências para os donos de todos os arquivos em um diretório exi-


bindo a operação com –v.

Verificando os grupos atuais com ll (equivalente a ls –l).


O Bash 81

Fazendo a alteração utilizando o comando chown.

Verificando o resultado com ll.

clear
Nome
clear – limpa a tela.

Resumo
clear

Descrição
Limpa a tela se isto for possível. A verificação é feita na variável de ambie nte
TERM e o tipo de terminal no banco de dados terminfo.

cp
Nome
cp – copia arquivos e diretórios.

Resumo

cp [OPÇÃO]... ORIGEM DESTINO


82 Linux: Sistema Operacional II

cp [OPÇÃO]... ORIGEM... DIRETORIO

Descrição

Copia a ORIGEM para o DESTINO, ou múltiplas ORIGENS para um diretório.

-d, --no-dereference – Preserva links.


-f, --force – Sobrescreve os arquivos existentes no destino sem pedir confir-
mação.
-i, --interactive – Pergunta antes de sobrescrever.
-l, --link – Faz link dos arquivos ao invés de copiar.
-p, --preserve – Mantém os atributos do arquivo se possível.
-P, --parents – Apenda (concatena) o caminho origem ao DIRETORIO.
-r, recursively – Copia recursivamente arquivos e diretórios, mas não cria di-
retório.
-R, --recursive – Copia diretórios e todo seu conteúdo recursivamente.
-s, --symbolic-link – Cria um link simbólico ao invés de copiar.
-u, --update – Copia apenas quando o arquivo ORIGEM tem a data mais re-
cente do que o destino ou quando o arquivo destino não existe.
-v, --verbose – Mostra detalhes do processo da cópia.
--help – Exibe a ajuda e sai.
--version – Exibe a versão e sai.
Por default, raramente os arquivos ORIGEM são detectados como inválidos na
comparação heurística que determina sua correspondência com o arquivo destino.
Para evitar enganos neste contexto, utilize --sparse=auto. Esta opção criará um
arquivo que contém uma seqüência de zeros inibindo a destruição do mesmo.

Autor
Programa escrito por Torbjorn Granlund, David MacKenzie e Jim Meyering.

Copyright
Copyright © 1999 Free Software Foundation, Inc.
O Bash 83

Exemplo
Neste exemplo foram exibidos utilizando ls –R (listagem recursiva de diretório)
todos os arquivos e diretórios existentes na pasta /home/Garcia.

Agora vamos criar no diretório /root o subdiretório /teste e utilizando o comando


de cópia recursiva (cp –R) vamos copiar toda a estrutura do /home/Garcia para
/root/teste e verificar o resultado da cópia novamente com ls –R.
84 Linux: Sistema Operacional II

Note que a estrutura do /home/Garcia, seus diretórios, subdiretórios e arquivos


foram copiados para o novo local /root/teste.

cpio
Nome
cpio – copia arquivos gerando seqüências de backup.

Resumo

Descrição
O comando cpio copia arquivo para dentro de um device (fita, disco) onde ficarão
todos os arquivos da origem e ainda a sua estrutura de armazenamento (diretórios).
Além disto, cpio armazena para cada arquivo seu nome, dono, timestamps e
permissões de acesso.

O arquivo pode estar em qualquer mídia magnética (disco, fita ou equipamento da


rede).
O Bash 85

No processo de cópia, cpio copia arquivos para dentro de um container, chamado


também archive. Ele lê a lista dos nomes dos arquivos, um por linha, a partir da
entrada padrão, e escreve o arquivo para dentro da saída padrão.

Uma forma típica para gerar uma lista de nomes de arquivos é com o comando find
com a opção -depth.

No modo de cópia, cpio copia os arquivos para fora do container ou simplesmente


lista os arquivos ali contidos.

Ele lê os arquivos da entrada padrão. Qualquer argumento de linha de comando é


utilizado conforme o padrão do Shell.

Apenas os arquivos cujos nomes forem coincidentes a estes padrões serão copiados
para o container.

Ao contrário do Shell, onde o caractere inicial . (ponto) nos nomes de arquivo


representam arquivos ocultos e o / (barra) representa arquivos localizados a partir
do raiz, no cpio . (ponto) representa todos os arquivos no diretório atual e / (barra)
todos os arquivos a partir de onde o foco do Shell está.

Quando nenhum padrão for informado, todos os arquivos serão extraídos do


container.

No modo copy-pass, cpio copiará os arquivos a partir da árvores de diretórios de


origem para o destino, combinando os passos de copy-out e copy-in sem atualizar o
container. Ele lê a lista de arquivos a serem copiados a partir da entrada padrão; o
diretório que receberá as cópias não requer argumentos.

O cpio suporta os seguintes formatos de arquivo:


• binary
• old ASCII
• new ASCII
• crc
• HPUX binary
• HPUX old ASCII
• old tar
• POSIX.1 tar
86 Linux: Sistema Operacional II

O formato binary é obsoleto porque incorpora informações sobre os arquivos de


modo que eles perdem a portabilidade entre máquinas de diferentes arquiteturas.

O formato old ASCII é portável entre diferentes arquiteturas de computadores,


mas não deve ser usado em um file system com mais de 65536 i-nodes.

O formato new ASCII é portável entre as diferentes arquiteturas de máquinas e


pode ser utilizado para qualquer tamanho de file system, mas não é suportado por
todas as versões de cpio. Atualmente é suportado apenas pelo GNU e Unix System
V R4.

O formato crc é como o new ASCII, mas também contém um checksum para cada
arquivo que o cpio calcula quando está criando o arquivo dentro do container e
verifica quando o arquivo é extraído do container.

Os formatos HPUX são colocados para manter compatibilidade com o cpio


daquele SO quando se faz cópias cruzadas.

O formato tar é colocado para compatibilidade com o programa tar. Ele não pode
ser usado com nomes de arquivos com mais de 100 caracteres e não aceitam modos
especiais de archive (blocos ou dispositivo caractere).

O formato POSIX.1 tar não pode ser usado para gerar archives de arquivos com
nomes maiores do que 255 caracteres (a menos que eles tenham uma / (barra) no
último caractere da direita.

Por default o cpio cria um arquivo no formato binary, para manter a


compatibilidade com outras versões mais antigas do cpio. Quando arquivos forem
extraídos, cpio automaticamente reconhece qual tipo de archive e faz então a
leitura dos archives gerados em outras máquinas com outros sabores e versões de
Unix.

Algumas opções do cpio aplicam-se apenas para determinados modos operacionais.


Consulte o Resumo para verificar a lista de opções permitidas em cada modo.

Opções

-0, --null – Nos modos copy-out e copy-pass, faz a leitura da lista de arqui-
vos terminados por um caractere null em vez de uma nova linha. Portanto,
aqueles arquivos cujos nomes contiverem um caractere new-lines poderão
ser colocados no archive. GNU utilizou este caminho para produzir uma lista
de arquivos terminada por null.
O Bash 87

-a, --reset-access-time – Reseta o tempo de acesso dos arquivos depois de lê -


los. Desta forma não fará a leitura de arquivos que acabaram de ser lidos.
-A, --append – Acrescenta mais arquivos a um archive existente. Funciona
apenas com o modo copy-out. O archive deve ser um disco especificado com
as opções -O ou -F (--file).
-b, --swap – No modo copy-in, esta opção converte inteiros de 32-bit entre
máquinas de arquiteturas diferentes.
-B – Seta o tamanho do bloco para 5120 bytes. Inicialmente cada bloco tem
512 bytes.
--block-size =BLOCK-SIZE – Seta o tamanho do bloco para BLOCK-SIZE
* 512 bytes, ou seja, o número de blocos multiplicado por 512 bytes por blo-
co.
-c – Usa o formato old ASCII archive.
-C IO-SIZE, --io-size=IO-SIZE – Seta o tamanho do bloco para IO-SIZE bytes.
-d, --make-directories – Cria o caminho completo da lista do archive quando
necessário.
-E FILE, --pattern-file=FILE – No modo copy-in, lê padrões adicionais es-
pecificando nomes de arquivos para extrair ou uma lista a partir do FILE. As
linhas do FILE são tratadas como se nenhum argumento tivesse sido passado
ao cpio.
-f, --nonmatching – Copia apenas os arquivos que se encaixarem no padrão
estabelecido.
-F, --file=archive – Utiliza o nome do archive como se fosse a entrada ou a
saída padrão. Para utilizar unidade de fita em outra máquina com este archi-
ve, utilize o nome do archive para iniciar com 'HOSTNAME:'. O nome do
host pode ser precedido por um nome de usuário (username) e por uma @
para acessar um unidade de fita remota como este usuário, se este usuário ti-
ver permissão para isto.
-H FORMAT, --format=FORMAT – Utiliza o formato archive especificado
em FORMAT. Os formatos válidos estão listados a seguir; os mesmos no-
mes também serão reconhecidos em maiúsculas. O default para o modo
copy-in mode é detectar automaticamente o formato, e no modo copy-out é
"bin".
• bin Binário absoluto.
• odc Old POSIX.1 portável.
88 Linux: Sistema Operacional II

• newc New SVR4 portável, com suporte a file system com mais
de 65536 i-nodes.
• crc New SVR4 portável com o checksum.
• tar Old tar.
• ustar POSIX.1 tar. Também reconhecido pelo GNU tar archives,
são similares mas não idênticos.
• hpbin Binary absoluto utilizado pelo cpio do HPUX, para cópias
cruzadas na mesma máquina.
• hpodc Portável usado pelo cpio do HPUX, para cópias cruzadas
em máquinas diferentes.
-i, --extract – Roda no modo copy-in.
-I archive – Utilizar o nome do archive ao invés da entrada padrão. Para uti-
lizar uma fita em outra máquina neste modo, use o nome do arquivo iniciado
com HOSTNAME:. O hostname pode ser precedido por um nome de usuá-
rio e uma @ para acessar uma unidade de fita remotamente, desde que o
usuário tenha permissão para isto.
-k – Ignorado. Opção mantida apenas para compatibilidade com versões an-
tigas do cpio.
-l, --link – Faz link dos arquivos ao invés de copiá-los, quando possível.
-L, --dereference – Os arquivos assinalados por links são efetivamente copi-
ados, e não apenas seus links.
-m, --preserve -modification-time – Mantém a hora anterior de modificação
quando cria arquivos.
-M MESSAGE, --message=MESSAGE – Imprime a MESSAGE quando o
final da cópia ocorre. Quando o espaço no volume esgota (fita ou disquete),
um prompt é exibido solicitando para que uma nova fita seja inserida (insert
a new volume). Se MESSAGE contiver a string "%d", ela será substituída
pelo número do volume que inicia em 1, permitindo o controle de qual fita
deve ser inserida.
-n, --numeric-uid-gid – Na tabela de conteúdos são exibidos o UID e GID ao
invés de transformá-los em nomes.
--no-absolute-filenames – No modo copy-in, cria todos os arquivos relati-
vos ao diretório atual, deixando-os iguais ao nome absoluto do arquivo que
será criado em archive.
--no-preserve -owner – Nos modos copy-in e copy-pass, não troca o nome
do dono do arquivo; quando os arquivos forem extraídos, o do original é
O Bash 89

mantido. Esta é uma opção default para usuário não root, impedindo que u-
suários do System V percam acesso aos arquivos de sua propriedade.
-o, --create – Roda o cpio no modo copy-out.
-O archive – Gera um archive ao invés de colocar na saída padrão. Idem -F.
--only-verify-crc – Quando ler um archive no formato CRC no modo copy-
in, somente verifica o CRC para cada arquivo dentro do archive, não extra-
indo arquivo algum.
-p, --pass-through – Roda no modo copy-pass.
--quiet – Não imprime o número de blocos copiados.
-r, --rename – Troca o nome dos arquivos interativamente.
-R [user][:.][group], --owner [user][:.][group] – Nos modos copy-out e
copy-pass, seta o dono de todos os arquivos criados para um usuário especí-
fico e/ou grupo. O usuário, o grupo ou ambos devem existir (estarem defin i-
dos para o sistema que receberá o archive).
--sparse – Nos modos copy-out e copy-pass, escreve os arquivos com gran-
des blocos de zeros como arquivos espalhados.
-s, --swap-bytes – No modo copy-in, troca os bytes de cada palavra (par de
bytes) nos arquivos.
-S, --swap-halfwords – No modo copy-in, troca as palavras de 4 bytes nos
arquivos.
-t, --list – Imprime uma tabela de conteúdos da entrada.
-u, --unconditional – Substitui todos os arquivos, sem pedir conformação pa-
ra substituição aos arquivos que serão sobrescritos.
-v, --verbose – Lista todos os arquivos processados, ou com -t, exibe ao esti-
lo de um ls -l.
-V --dot – Imprime um . (ponto) para cada arquivo processado.
--version – Imprime a versão do programa cpio e sai.

Exemplo
Copiando arquivos para o disquete
Acompanhe na seqüência a seguir. Verificando o posicionamento do foco do Shell
no diretório /home/Garcia, criou-se ali um diretório chamado diretorio para dentro
do qual foram copiados alguns arquivos conf do /etc.
90 Linux: Sistema Operacional II

Agora os arquivos serão copiados para um disquete utilizando o comando


cpio.

Note que nesta etapa foi utilizada a técnica documentada aqui do comando
find gerando a lista de nomes a serem incluídas no archive. A técnica é sim-
ples: o find gera uma lista de nomes de arquivos que são redirecionados via |
(pipe) para o comando cpio. O cpio recebe os parâmetros ocvB.
o – indicando o modo copy-out (geração de archive).
c – usar o formato old ASCII.
v – exibe uma lista dos arquivos processados.
B – seta o bloco para 5120 bytes.

As diretivas complementares do comando são o redirecionamento de saída


( > ) e o nome do archive, que neste caso é o dispositivo que representa a u-
nidade de disquete /dev/fd0H1440.

Depois de concluído, o cpio informa que utilizou quatro blocos de 5120 by-
tes para gravar os arquivos listados.
O Bash 91

Verificando arquivos gravados no disquete

Para verificar o que foi gravado naquele archive basta fazer o processo inverso.

Note que agora o find não é mais necessário. O comando cpio recebe os parâmetros
itv.

i – indicando o modo copy-in (leitura do archive).


t – apenas lista o archive, mas não restaura.
v – exibe uma lista dos arquivos processados.

As diretivas complementares do comando são o redirecionamento de entrada ( < ) e


o nome do archive, que neste caso é o dispositivo que representa a unidade de
disquete /dev/fd0H1440.

Depois de concluído, o cpio informa que os arquivos listados ocuparão trinta e três
blocos de 512 bytes se restaurados no file system do Linux.

Se a intenção for realmente restaurar os arquivos para o HD, basta retirar o


parâmetro t.

date
Nome
date – imprime ou ajusta a data e a hora do sistema.

Resumo
date [OPÇÃO]... [+FORMATO]
date [OPÇÃO] [MMDDhhmm[[CC]YY][.ss]]
92 Linux: Sistema Operacional II

Descrição

Mostra a data e a hora atual do sistema utilizando o FORMATO, ou ajusta a data e


a hora do sistema.

-r, --reference=ARQUIVO – exibe a ultima modificação do ARQUIVO.


-R, --rfc-822 – exibe a data e a hora utilizando o formato RFC-822 (em rela-
ção à hora do meridiano).
-u, --utc, --universal – exibe ou ajusta data e hora segundo as Coordenadas
da Hora Universal.
--help – exibe o help e sai.
--version – exibe a versão e sai.
O FORMATO controla a saída. São válidas apenas para as especificações
utc.
%a – Exibe o dia da semana de forma abreviada (Sun..Sat).
%A – Exibe o dia da semana por extenso (Sunday..Saturday).
%b – Exibe o mês abreviado (Jan..Dec).
%B –Exibe o mês por extenso (January..December).
%c – Exibe data e hora (Wed 27 Sep 2000 11:22:28 PM BRT).
%d – Exibe o dia do mês (01..31).
%D –Exibe a data no formato (mm/dd/yy).
%e – Exibe o dia do mês com branco para zero à esquerda ( 1..31).
%h – O mesmo que %b.
%H – Exibe a hora (00..23).
%I – Exibe a hora (01..12).
%j – Exibe o dia do ano (001..366).
%k – Exibe a hora com branco para zero à esquerda ( 0..23).
%l – Exibe a hora com branco para zero à esquerda ( 1..12).
%m – Exibe o mês (01..12).
%M – Exibe os minutos (00..59).
%n – Pula uma linha.
O Bash 93

%p – Informa AM ou PM.
%r – Exibe hora no formato 12 horas (hh:mm:ss [AP]M).
%s – Segundos passados desde a meia noite de 1 de janeiro de 1970 (esta é
uma extensão da GNU).
%S – Exibe segundos (00..60).
%t – Faz uma tabulação.
%T – Exibe a hora no formato 24 horas (hh:mm:ss).
%U – Número de semanas do ano considerando domingo como pr imeiro dia
da semana (00..53).
%V – Número de semanas do ano considerando a segunda-feira como pr i-
meiro dia da semana (01..52).
%w – Dia da semana (0..6); 0 representa domingo.
%W – Número de semanas do ano considerando segunda-feira como prime i-
ro dia da semana (00..53).
%x – Representação da data configurada (mm/dd/aa).
%X – Representação da hora configurada (%H:%M:%S).
%y – Exibe apenas os dois últimos dígitos do ano (00..99).
%Y – Exibe o ano (1970...).
%z – Representação no estilo RFC-822 (-0500)
%aZ – Indica a zona configurada (por exemplo, BRT), ou nada se nenhuma
foi configurada.
Por default, os campos numéricos da data são preenchidos com zeros. A data no
sistema GNU/Linux reconhece as seguintes modificações entre '%' e uma diretiva
numérica: '-' (hífen), nenhum preenchimento '_' (sublinhado).

Copyright
Copyright © 1999 Free Software Foundation, Inc.

Exemplo
Para exibir a data no formato tradicional brasileiro podemos utilizar:
[root@Console /root]# date +%d/%m/%y
27/09/00
94 Linux: Sistema Operacional II

Através de scripts pode se fazer uso interessante destes diversos parâmetros para o
comando date.

dd
Nome
dd – converte interativamente um arquivo.

Resumo
dd [OPÇÕES]...

Descrição
Converte e formata interativamente de acordo com as opções.

bs =BYTES – Força ibs=BYTES e obs=BYTES.


cbs =BYTES – Converte o total de BYTES informados de cada vez.
conv=KEYWORDS – Converte o arquivo considerando os parâmetros
(KEYWORDS) separados por vírgulas.
count=BLOCKS – Copia apenas a quantidade de blocos específica em
BLOCKS.
ibs =BYTES – Lê o total de bytes especificado em BYTES.
if=FILE – Lê o arquivo especificado em FILE ao invés de fazê-lo pela entra-
da padrão (teclado).
obs =BYTES – Escreve a quantidade de bytes especificada em BYTES.
of=FILE – Escreve para o arquivo especificado em FILE ao invés da saída
padrão.
seek=BLOCKS – Localiza o total de BLOCKS especificado no parâmetro
obs=BYTES, iniciando a partir deste ponto a saída.
skip=BLOCKS – Pula o total de blocos especificado em BLOCKS no parâ-
metro ibs=BYTES iniciando a entrada.
--help – Exibe a ajuda e sai.
--version – Exibe a versão e sai.
O parâmetro BYTES especificado pode utilizar os seguintes sufixos mult i-
plicadores:
O Bash 95

c 1 = 1 byte
w 2 = 2 bytes
b 512 = 512 bytes
kD 1000 = 1000 bytes
k 1024 = 210 bytes
MD 1.000.000 = 106 bytes
M 1.048.576 = 220 bytes
GD 1.000.000.000 = 109 bytes
G 1.073.741.824 = 230 bytes
TD 1.000.000.000.000 = 1012 bytes
T 1.099.511.627.776 = 240 bytes
PD 1.000.000.000.000.000 = 1015 bytes
P 1.125.899.906.842.624 = 250 bytes
ED 1.000.000.000.000.000.000 = 1018 bytes
E 1.152.921.504.606.846.976 = 260 bytes

O parâmetro KEYWORD pode receber as seguintes palavras:


ascii – de EBCDIC para ASCII.
ebcdic – de ASCII para EBCDIC.
ibm – de ASCII para EBCDIC alternativo.
block – para cada terminador de linha insere brancos segundo parâmetro
cbs=BYTES.
unblock – substitui o preenchimento de espaços especificados no parâmetro
cbs=BYTES com quebra de linha.
lcase – troca todas as letras maiúsculas por minúsculas.
notrunc – não trunca do arquivo de saída os caracteres adicionais.
ucase – troca todas as letras minúsculas para maiúsculas.
swab – troca cada par de bytes entrados.
noerror – continua mesmo depois de encontrar erros.
sync – preenche cada bloco de entrada com nulos segundo o parâmetro
ibs=BYTES.

Autor
Programa escrito por Paul Rubin, David MacKenzie e Stuart Kemp.
96 Linux: Sistema Operacional II

Copyright
Copyright © 1999 Free Software Foundation, Inc.

Exemplo

Neste exemplo utiliza-se o editor de textos pico para criar um arquivo simples
chamado teste.

Utilizando agora a técnica para redirecionamento de entrada e o parâmetro


adequado do comando dd, faz-se a conversão de todos os caracteres que estão em
letras maiúsculas (ucase), para minúsculas (lcase).

df
Nome
df – informa o espaço em disco utilizado por um filesystem.

Resumo
df [OPÇÕES]... [ARQUIVO]...
O Bash 97

Descrição

O comando df exibe a quantidade de espaço disponível para cada filesystem


montado (mounted). O espaço é exibido em blocos de 1K por default ao invés de
512 bytes, a menos que a variável de ambiente POSIXLY_CORRECT esteja
definida.

Esta versão do df não exibe informações sobre filesystems que não estejam
montados, porque na maioria das vezes os sistemas fazem referência a estruturas de
filesystem não suportados.

Opções

Mostrar informações sobre o filesystem no qual cada ARQUIVO reside, ou de todo


o filesystem por default.

-a, --all – Inclui filesystems que tenham zero bloco.


--block-size =SIZE – Utiliza blocos de SIZE-byte.
-h, --human-readable – Exibe tamanhos fáceis de ler (1K, 234M, 2G).
-H, --si – O mesmo que -H, mas utiliza potências de 1000 e não de 1024.
-i, --inodes – Lista informações sobre inode ao invés de blocos.
-k, --kilobytes – Equivalente a --block-size=1024.
-l, --local – Limita a listagem aos filesystems locais.
-m, --megabytes – Equivalente a --block-size=1048576.
--no-sync – Não faz o sync antes de exibir as informações (default).
-P, --portability – Usa o padrão POSIX de saída.
--sync – Faz o sync antes de exibir as informações.
-t, --type=TYPE – Limita a exibição aos filesystems especificados em TY-
PE.
-x, --exclude-type=TYPE – Limita a exibição aos filesystems não especifi-
cados por TYPE.
-v – (ignored).
--help – Exibe o help e sai.
--version – Exibe a versão do df e sai.

Autor
Programa escrito por Torbjorn Granlund, David MacKenzie, Larry McVoy e
Paul Eggert.
98 Linux: Sistema Operacional II

Copyright
Copyright © 1999 Free Software Foundation, Inc.

Exemplos

Utilizando o parâmetro –h o df informa o espaço dos filesystem montados


utilizando uma nomenclatura de leitura direta. No /dev/hda1, por exemplo, temos
uma partição de 1.8GB montada dos quais 951MB estão livres.

Utilizando o parâmetro –k o df informa utilizando quantidades de blocos de 1k


tornando a leitura um pouco mais difícil.

Nos sistemas System V a informação é dada em blocos de 512 bytes.

dmesg
Nome
dmesg – exibe informações de configuração do kernel.

Resumo
dmesg [ -c ] [ -n level ] [ -s bufsize ].

Descrição
O dmesg é usado para examinar ou controlar o anel central do kernel. O programa
ajuda o usuário a exibir as mensagens dadas no momento do boot.
O Bash 99

Opções

-c – Limpa o conteúdo do buffer depois de imprimir.


-sbufsize – Utiliza um tamanho de buffer para recuperar as informações que
estão no buffer do kernel. O default é de 8196 bytes, mas pode variar em ca-
da versão do kernel.
-nlevel – Define o nível no qual o processo de login deve enviar mensagens
para a console. Por exemplo, -n 1 evita o envio de todas as mensagens.

Autor
Programa escrito por Theodore Ts'o.

Exemplo

Ao emitir o comando dmesg, a log do processo de inicialização do Linux que fora


gravada em sua última inicialização é exibida ao usuário.

Linux version 2.2.14-5.0 (root@porky.devel.console.com) (gcc version egcs -2.91.66


19990314/Linux (egcs-1.1.2 release)) #1 Tue Mar 7 20:53:41 EST 2000
Detected 150642089 Hz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 60.01 BogoMIPS
Memory: 63008k/65536k available (1084k kernel code, 412k reserved, 968k data, 64k init,
0k bigmem)
Dentry hash table entries: 262144 (order 9, 2048k)
Buffer cache hash table entries: 65536 (order 6, 256k)
Page cache hash table entries: 16384 (order 4, 64k)
VFS: Diskquotas version dquot_6.4.0 initialized
CPU: Intel Pentium 75 – 200 stepping 0c
Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
Checking 'hlt' instruction... OK.
Intel Pentium with F0 0F bug – workaround enabled.
POSIX conformance testing by UNIFIX
PCI: PCI BIOS revision 2.10 entry at 0xfb0d0
PCI: Using configuration type 1
PCI: Probing PCI hardware
Linux NET4.0 for Linux 2.2
100 Linux: Sistema Operacional II

Based upon Swansea University Computer Society NET3.039


NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
TCP: Hash tables configured (ehash 65536 bhash 65536)
Initializing RT netlink socket
Starting kswapd v 1.5
Detected PS/2 Mouse Port.
Serial driver version 4.27 with MANY_PORTS MULTIPORT SHARE_IRQ enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
pty: 256 Unix98 ptys configured
apm: BIOS not found.
Real Time Clock Driver v1.09
RAM disk driver initialized: 16 RAM disks of 4096K size
PIIX: IDE controller on PCI bus 00 dev 38
PIIX: not 100% native mode: will probe irqs later
PIIX: neither IDE port enabled (BIOS)
PIIX: IDE controller on PCI bus 00 dev 39
PIIX: not 100% native mode: will probe irqs later
ide0: BM -DMA at 0x3000-0x3007, BIOS settings: hda:pio, hdb:pio
ide1: BM -DMA at 0x3008-0x300f, BIOS settings: hdc:pio, hdd:pio
hda: QUANTUM Pioneer SG 2.1A, ATA DISK drive
hdb: HITACHI CDR-7730, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: QUANTUM Pioneer SG 2.1A, 2014MB w/40kB Cache, CHS=1023/64/63
hdb: ATAPI 4X CD-ROM drive, 128kB Cache
Uniform CDROM driver Revision: 2.56
Floppy drive(s): fd0 is 1.44M
FDC 0 is an 8272A
md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12
raid5: measuring checksumming speed
8regs : 150.495 MB/sec
32regs : 111.252 MB/sec
using fastest function: 8regs (150.495 MB/sec)
scsi : 0 hosts.
O Bash 101

scsi : detected total.


md.c: sizeof(mdp_super_t) = 4096
Partition check:
hda: hda1 hda2 < hda5 >
autodetecting RAID arrays
autorun ...
... autorun DONE.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 64k freed
Adding Swap: 133016k swap-space (priority -1)
ne2k-pci.c:vpre-1.00e 5/27/99 D. Becker/P. Gortmaker
http://cesdis.gsfc.nasa.gov/linux/drivers/ne2k-pci.html
ne2k-pci.c: PCI NE2000 clone 'RealTek RTL-8029' at I/O 0x6000, IRQ 10.
eth0: RealTek RTL-8029 found at 0x6000, IRQ 10, 00:C0:DF:AA:3B:38.

dnsdomainname
Ver hostname.

doexec
Nome
doexec – roda um programa executável com um argumento argv[0].

Resumo
doexec /path/to/executable argv[0] [argv[1-n]].

Descrição
O comando doexec simplesmente roda um executável com uma lista de
argumentos. Isto permite que seja especificado um argv[0] outro nome de um
executável.

Opções
Todas as opções são passadas dentro da lista executável argv que começa a
ser executada.
102 Linux: Sistema Operacional II

domainname
Ver hostname.

echo
Nome
echo – exibe uma linha de texto.

Resumo
echo [OPTION]... [STRING]...

Descrição
Exibe a STRING para a saída padrão (standard output).
--help – Exibe o help e sai.
--version – Exibe a versão e sai.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

ed
Nome
ed, red – editor de textos.

Resumo
ed [-] [-Gs] [-p string] [file]
red [-] [-Gs] [-p string] [file]

Descrição

O ed é um editor orientado a linha. Ele é usado para criar, exibir, modificar e outras
manipulações em arquivo texto. O editor red segue a mesma diretriz sendo um
pouco mais restrito. O red só edita arquivos do diretório atual e não executa
comandos Shell.
O Bash 103

Se for chamado como argumento na linha de comando um nome de arquivo, o


arquivo será carregado para o buffer. As mudanças que forem efetuadas não
atingem diretamente o arquivo, mas apenas o buffer. O encerramento do ed sem o
parâmetro para gravação 'w' causará a perda do que foi editado.

As edições podem ser feitas de duas formas distintas: comandos e entrada direta.
Quando um comando é invocado, o ed lê da entrada padrão os comandos que
permitem manipular o buffer. Um formato típico de comando é o seguinte:
s/antigo/novo/g, que substituirá todas as ocorrências da string antigo pela string
novo.

Quando um comando de entrada como o 'a' (append), 'i' (insert) ou 'c' (change), é
informado, o ed entra em modo de entrada. Este é o principal modo de adicionar
texto a um arquivo. Neste modo nenhum comando está disponível; ao invés disto,
a entrada padrão é escrita diretamente para o buffer do editor. Linhas consistem de
texto que estão sendo incluídos como o caractere newline. O modo de entrada é
encerrado ao entrar um simples ponto (.) numa linha.

Todos os comandos do ed são operados diretamente na linha e afetam esta linha ou


um intervalo especificado dela. Por exemplo, o comando 'd' deleta linhas, o
comando 'm' move linhas, e assim por diante. Com o ed é possível modificar
apenas uma parte da linha através da substituição como explicado anteriormente.
Todavia o comando 's' aplica ajustes a todas as linhas do arquivo de uma vez.

Geralmente os comandos do ed consistem de nenhum ou mais endereços de linha,


seguidos por um caractere de comando e possivelmente parâmetros adicionais. Por
exemplo, a estrutura geral dos comandos é:
[address [,address]]command[parameters]

Os endereços (address) indicam a linha ou intervalo delas, que serão afetadas pelo
comando. Se forem dados menos endereços do que o comando aceita, então o
endereço default é ignorado.

Opções

-G – Força compatibilidade. Afeta os comandos 'G', 'V', 'f', 'l', 'm', 't', e '!!'.
-s – Não faz interpretação. Deve ser utilizado se for entrado a partir de um
script.
-p string – Especifica o prompt de comando. Ele deve ser sozinho e sem o
comando 'P'.
104 Linux: Sistema Operacional II

file – Especifica o nome do arquivo que será lido. Se o nome de arquivo for
precedido por uma exclamação, então ele será interpretado como um coman-
do Shell. Neste caso, o que for lido pela saída padrão do arquivo será execu-
tado via Shell.
Para ler um arquivo que comece com exclamação, utilize o prefixo barra in-
vertida (backslash).

Endereçando Linhas

Um endereço representa o número da linha no buffer do ed. O ed mantém o


endereço atual, o qual é geralmente provido pelo comando como um endereço
default quando nada mais é especificado. Quando um arquivo é lido, o endereço da
linha default aponta para a última linha do arquivo.

Um endereço de linha é acessado por um dos seguintes controles que combinam


dígitos e operadores. Por exemplo: +, -, ^ e espaço em branco. Os endereços são
lidos da esquerda para a direita e os valores são computados relativamente.

Um endereço é um intervalo entre duas linhas separado por uma vírgula ou ponto e
vírgula. O valor do primeiro endereço em um intervalo não pode exceder o valor
do segundo.

Se apenas um endereço for dado no intervalo, então o segundo endereço é setado


para o endereço dado. Se um par de endereços for maior que 2, então o intervalo
correspondente é determinado pelo último dos dois endereços do par. Se apenas um
endereço for esperado, então o último endereço será usado.

Cada endereço delimitado por vírgulas será interpretado relativamente ao endereço


atual. Quando o delimitador for ponto e vírgula, o primeiro endereço é usado para
setar o endereço atual e o segundo endereço é interpretado relativo ao primeiro.

Símbolos reconhecidos para endereços:

. – A linha atual no buffer.


$ – A última linha do buffer.
n – A enésima linha no buffer, onde n é um número entre 0 e $.
- ^ – A linha anterior. Equivalente a -1 podendo ser repetida de forma cumu-
lativa.
-n ^n – A enésima linha anterior, onde n é um número positivo.
O Bash 105

+ – A próxima linha. Equivale a +1 e pode ser repetido de forma cumulativa.


+n – A enésima próxima linha, onde n é um número positivo.
, % – Equivalente ao endereço 1,$.
; – Equivalente a .,$.
/re/ – A próxima linha que contenha a expressão re. // repe te a última procu-
ra.
?re? – A linha anterior à atual que contenha a expressão re. ?? repete a últi-
ma procura.
´lc – A linha previamente marcada por um comando 'k', onde lc é uma letra
minúscula.

Expressões Regulares

Expressões regulares são padrões utilizados para selecionar texto. Por exemplo, o
comando ed g/string/ imprime todas as linhas que contêm a string. Expressões
regulares também podem ser utilizadas pelo comando 's' para selecionar textos a
serem substituídos.

Os seguintes símbolos são usados em uma Expressão Regular:

c – Qualquer caractere não listado, incluindo '{', '}', '(', ')', '<' and '>'.
\c – Uma barra invertida permite indicar os caracteres '{', '}', '(', ')', '<', '>', 'b',
'B', 'w', 'W', '+', e '?'.

Para encontrar qualquer outro caractere


[char-class] – Encontra caracteres listados em char-class. Para incluir um ']' no
char-class, ele deve ser o primeiro caractere. Um intervalo de caracteres pode ser
especificado separando-se os caracteres do intervalo com um '-', por exemplo, 'a-z'
especifica todas as letras minúsculas entre a e z. As literais a seguir podem ser um
char-class:

[:alnum:] [:cntrl:] [:lower:] [:space:]


[:alpha:] [:digit:] [:print:] [:upper:]
[:blank:] [:graph:] [:punct:] [:xdigit:]

Se '-' aparecer como o primeiro ou o último caractere da char-class, então ele


encontrará o próprio '-'.
106 Linux: Sistema Operacional II

[^char-class] – Encontra um caractere que não a linha do char-class.


^ – Se '^' for o primeiro caractere da expressão, então ele encontrará ele mesmo.
$ – Se '$' for o primeiro caractere da expressão, então ele encontrará ele mesmo.
\(re\) – Define uma subexpressão re. Subexpressões podem ser aninhadas.

* – Encontra um caractere qualquer. Se '*' for o primeiro caractere da expressão,


então ele encontrará ele mesmo. Este operador pode ser usado para encontrar, por
exemplo, todas as palavras que comecem por b 'b*'.

\{n,m\}
\{n,\}
\{n\} – Encontra um simples caractere em uma subexpressão. Por exemplo, a ex-
pressão '\{2\}' encontra a string '{2}'.

Comandos

Todos os comandos ed são caracteres simples, sendo que alguns requerem


parâmetros adicionais. Se um comando possui um parâmetro que o extende para
diversas linhas, então cada linha, exceto a última, deve ser terminada por uma barra
invertida (\).

Geralmente os comandos são simples, todavia muitos comandos aceitam sufixo


para impressão 'p' (print), 'l' (list), ou 'n' (enumerate), para imprimir a última linha
afetada pelo comando.

Para interromper um comando usa-se o (^C) Control + C, que abortará o comando


atual e retornará para a linha de comando do editor.
(.)a Appends – Insere texto após a linha atual.
(.,.)c Changes – Muda linhas no buffer.
(.,.)d Deletes – Apaga a linha do buffer.
e file Edita o arquivo e seta como arquivo default.
e !command Edita a saída padrão de um '!command'.
(1,$)g/re/command-list – Aplica a lista de comandos command-list para cada
endereço encontrado.
(1,$)G/re/ – Edita interativamente.
O Bash 107

H Imprime os erros em detalhes ao invés de apenas uma ?.


H Mostra detalhes do último erro.
(.)i Insere no buffer antes do endereço atual.
(.,.+1)j Faz uma junção entre os endereços.
(.)klc Marca uma linha com um letra minúscula lc.
(.,.)l Imprime o endereço.
(.,.)m(.) Mode linha do buffer.
(.,.)n Imprime as linha do endereço n.
(.,.)p Imprime o endereço da linha.
P Mostra / oculta o prompt de comando (*).
Q Sai do ed.
Q Sai do ed sem salvar.
($)r file Lê o arquivo após a linha atual no buffer.
($)r !command Lei para depois do endereço o resultado do comando
'!command'.
(.,.)s/re/replacement/
(.,.)s/re/replacement/g
(.,.)s/re/replacement/n Localiza e substitui.
(.,.)s Repete a última substituição.
(.,.)t(.) Copia a linha atual para o endereço.
u Desfaz o último comando.
(1,$)v/re/command-list Aplica a lista de comandos para cada endereço da
lista.
(1,$)V/re/ O mesmo interativamente.
(1,$)w file Escreve o resultado para file.
(1,$)wq file Escreve o resutado para file e sai do ed.
(.)x Copia o conteúdo do buffer.
!command Executa o comando via shell.
($)= Imprime o número da linha.
108 Linux: Sistema Operacional II

egrep
Nome
grep, egrep, fgrep – exibe as linhas onde determinada string foi encontrada.

Resumo
grep [-[ABC] NUM] [-EFGHLUVZabchilnqrsuvwxyz] [-e PATTERN | -f
FILE] [-d ACTION] [--directories=ACTION] [--extended- regexp][--fixed-
strings] [--basic-regexp] [--regexp=PATTERN] [--file=FILE] [--ignore-
case] [--word-regexp] [--line-regexp] [--line-regexp] [--no-messages] [-
-invert match] [--version] [--help] [--byte-offset] [--line-number] [--with-
filename] [--no-filename] [--quiet] [--silent] [--text] [--files-without-
match] [--files-with-matches] [--count] [--before-context=NUM] [--after-
context=NUM] [--context[=NUM]] [--binary] [--unix-byte-off-sets] [--
mmap] [--null] [--recursive] [file...]

Descrição

Grep procura pela string informada pela entrada padrão, no arquivo ou lista de
ocorrências passada como parâmetro, retornando as linhas onde a string for
encontrada. São três as principais formas de utilizar o grep:
-G, --basic-regexp – Interpreta o padrão como uma expressão regular (de-
fault).
-E, --extended-regexp – Interpreta o padrão como uma expressão estendida
(veja adiante).
-F, --fixed-strings – Interpreta o padrão como uma lista de strings fixas, se-
paradas por newlines, qualquer que seja o padrão.

Adicionalmente, duas variações do programa grep (egrep e fgrep) estão dis-


poníveis. Egrep é o mesmo que grep com o parâmetro -E. Fgrep é o mesmo
que grep com o parâmetro -F.

Todas as variações do grep aceitam as seguintes opções:


-A NUM , --after-context=NUM – Imprime as linhas onde a string foi encon-
trada e NUM linhas após.
-B NUM , --before-context=NUM – Imprime as linhas onde a string foi en-
contrada e NUM linhas antes.
O Bash 109

-V, --version – Imprime a versão do programa grep.


-b, --byte-offset – Imprime o número do byte do arquivo ou lista onde a
string foi encontrada, antes da linha.
-c, --count – Imprime somente a quantidade de linhas nas quais a string foi
encontrada.
-f FILE, --file=FILE = – Obtém a string que será procurada a partir de um
arquivo ao invés da entrada padrão.
-H, --with-filename – Simplesmente imprime a entrada padrão antes de cada
linha da ocorrência encontrada.
-h, --no-filename – Imprime somente cada linha com a string encontrada.
-i, --ignore-case – Não faz distinção entre letras maiúsculas e minúsculas.
-n, --line-number – Imprime o número da linha na qual a string foi encontra-
da.
-s, --no-messages – Suprime mensagens de erro.
-a, --text – Não suprime mensagens de erro no caso de ler arquivos binários.
-v, --invert-match – Imprime as linhas que não possuem a string informada.
-y – Obsoleto, trocado por -i.
-U, --binary – Trata os arquivos como binário. Por default, sob MS-DOS e
MS-Windows, grep automaticamente "percebe" o tipo do arquivo e verifica
seu conteúdo nos primeiros 32KB lidos do arquivo. Se o grep determinar que
o arquivo é do tipo texto, ele retira os caracteres CR do arquivo original (pa-
ra tratar corretamente expressões regulares com ^ e $). Detalhando, o parâ-
metro -U anula o que ele mesmo determinou, fazendo com que todos os ar-
quivos sejam lidos e passados para o mecanismo de procura textualmente
(palavra por palavra); se o arquivo for do tipo texto com pares marcadores de
CR/LF ao final de cada linha, isto fará com que a expressão regular falhe.

Expressões Regulares

Uma Expressão Regular é um padrão que descreve um conjuntos de string. São


construídas de forma análoga a expressões aritméticas, sendo possível utilizar
vários operadores e combinar pequenas expressões.

Grep entende duas diferentes versões para sintaxe de expressões regulares: "basic"
e "extended". No GNU grep, não há diferença entre estas duas expressões que
estão disponíveis com a mesma funcionalidade. Em outras implementações, uma
110 Linux: Sistema Operacional II

expressão regular básica pode ser menos poderosa. A descrição seguinte se aplica a
expressões regulares estendidas.

Um bloco fundamental de construção para expressões regulares é composto de


caracteres simples. A maioria dos caracteres, incluindo todas as letras e dígitos, são
expressões regulares para encontrar elas mesmas. Qualquer metacaractere com
significado especial pode ser colocado por procedência à barra invertida.

Uma lista de caracteres entre colchetes combina-se com os demais que estejam fora
da lista; se o primeiro caractere da lista for ^ então será encontrado qualquer
caractere, que combinado com os demais, não esteja na lista. Por exemplo, a
expressão regular [0123456789] encontrará qualquer um dos dígitos. Um intervalo
de caracteres ASCII pode ser especificado informando-se o primeiro e o último
separando-os por um hífen. Finalmente certos nomes de classes de caracteres são
predefinidos. Seu conteúdo é auto-explicativo, e são os seguintes:

[:alnum:]
[:alpha:]
[:cntrl:]
[:digit:]
[:graph:]
[:lower:]
[:print:]
[:punct:]
[:space:]
[:upper:]
[:xdigit:]

Por exemplo, [[:alnum:]] significa [0-9A-Za-z], excetuando-se as letras que


necessitem de codificação e não sejam portáveis (ç e vogais acentuadas). (Observe
que ao utilizar expressões predefinidas os nomes simbólicos devem estar entre dois
pontos. Alguns metacaracteres perdem o seu significado especial dentro da lista.
Para incluir o literal ] (fecha colchetes) coloque-o como primeiro da lista. Da
mesma forma, para procurar o caractere ^ (cincunflexo) e – (hífen). Para encontrar
o . (ponto) proceda como qualquer outro caractere.

O símbolo \w é sinônimo para [[:alnum:]] e \W é sinônimo para [^[:alnum]].

Os caracteres ^ (circunflexo) e $ (dólar) são metacaracteres que encontram


respectivamente uma string vazia no começo e no fim de uma linha.
O Bash 111

Os simbolos \< e \> respectivamente encontram uma string vazia no começo e no


final de uma palavra. O símbolo \b encontra uma string vazia na extremidade de
uma palavra.

Uma expressão regular pode utilizar os seguintes operadores:

? – Substitui qualquer caractere mas apenas uma vez.


* – O item precedente será encontrado nenhuma ou mais vezes.
+ – O item precedente será encontrado uma ou mais vezes.
{n} – O item precedente é procurado exatamente n vezes.
{n,} – O item precedente é procurado n ou mais vezes.
{n,m} – O item precedente é procurado pelo menos n, mas não mais do que
m vezes.

Duas expressões regulares podem ser concatenadas; o resultado da procura por


uma expressão regular será formada por uma expressão regular, concatenada com
as duas substrings onde respectivamente os resultados ocorrem.

Duas expressões regulares podem ser juntadas pelo operador |; o resultado desta
expressão será uma expressão regular que encontra qualquer string na subex-
pressão.

Repetição tem precedência sobre a concatenação, que tem precedência sobre a


alternação. Um conjunto de subexpressões podem ser colocadas entre parênteses
para mudar estas regras de precedência.

O break \n, onde o n é apenas um simples dígito, encontrará a enésima substring


precedida por parênteses numa subexpressão.

Na expressões regulares os metacaracteres ?, +, {, |, (, e ) perdem o seu


significado especial quando combinados com o sinal de barra invertida: \?, \+, \{, \|,
\(, e \).

Tradicionalmente o egrep não suporta o metacaractere {, e algumas implemen-


tações do egrep implementam suporte \{. Desta forma, para criar scripts que sejam
portáveis deve-se evitar o uso de { nos padrões egrep patterns e deve-se utilizar [{]
para encontrar um literal {.

O GNU egrep tenta suportar o uso tradicional ao assumir que { não é um caractere
especial se for colocado no início de uma especificação de intervalo válido. Por
exemplo, o comando emitido no shell egrep '{1' procurará por dois caracteres {1
112 Linux: Sistema Operacional II

ao invés de reportar um erro de sintaxe na expressão regular. Scripts portáveis (que


devam funcionar em qualquer Unix) devem evitar este tipo de combinação em
expressões regulares.

Diagnóstico

Normalmente, o status de saída é 0 se ocorrências forem encontradas e 1 se


nenhuma ocorrência for encontrada. A opção -v inverte isto para o status de saída.
O status de saída é 2 se algum erro de sintaxe for encontrado no padrão de busca,
se o arquivo de busca estiver inacessível ou se algum outro erro de sintaxe for
encontrado.

ex / view
Nome
vim – Vi IMproved (vi aperfeiçoado), um editor de textos.

Resumo
ex
view

Descrição

Vim é um editor de textos compatível funcionalmente ao vi. Ele pode ser utilizado
para editar qualquer arquivo texto ASCII sendo especialmente útil para editar
programas.

Vim oferece uma série de avanços sobre o vi: múltiplos níveis de desfazer (undo),
múltiplas janelas e buffers, realce de sintaxe, edição de linha de comando,
detalhamento sobre o arquivo (nome completo, linhas colunas), help on-line,
seleção de visual, etc. Veja no arquivo ":help vi_diff.txt" um resumo com as
diferenças entre Vim e Vi.

Vim oferece um help que pode procurar por comandos enquanto edita-se um ou
mais arquivos, retornando seu significado e utilização além do conjunto de
comandos. Utilize ":help command".

A maneira mais simples de utilizar o vim é para editar um arquivo texto: vim
arquivo
O Bash 113

Pode também ser utilizado com vim [opções] [lista de arquivos]

Se a lista de arquivos for ilegal o editor é iniciado com o buffer vazio. Umas das
quatro maneiras podem ser utilizadas para escolher um ou mais arquivos a serem
editados.

arquivo ... – Uma lista de nomes de arquivo. O primerio arquivo da lista será lido
para o buffer e o cursor posicionado na primeira linha. Para pegar o próximo
arquivo utilize o comando ":next" e o comando ":prev" para pegar o anterior.

Um arquivo editado a partir da entrada padrão (stdin).

-t {tag} – O arquivo a ser editado e a posição do cursor dependem da "tag". A


{tag} é examinada com os arquivos de tag. A associação de arquivos com tags
ocorre no arquivo atual ou quando o comando é executado. Geralmente isto é
usado por programadores C, em que uma case {tag} pode ser o nome de uma
função. O efeito do arquivo que contém as funções torna-se o arquivo atual e o
cursor é posicionado no início da função. Veja mais em ":help tag-commands".

-q [errorfile] – Inicia o editor em modo quickFix. O arquivo [errorfile] é lido e o


primeiro erro é exibido. Se [errorfile] for omitido, o arquivo é obtido da opção
defaults "errors.vim". Os erros podem ser pulados com o comando ":cn". Veja
mais em ":help quickfix".

Vim age de forma diferente dependendo do argumetno informado:

Vim – É a forma "normal" de ativação, sendo o default.

ex ou –e – Inicia em "Ex mode". Para mudar para o modo "normal" utilize o


comando ":vi" command.

view ou –R – Inicia em modo "read-only", protegendo desta forma o arquivo


contra alterações acidentais.

gvim gview ou vim –g – Versões GUI do vim. Abre uma nova janela no desktop
(KDE, por exemplo).

rvim rview rgvim rgview ou vim –Z – Da mesma forma que o anterior, porém com
restrições. Não é possível “startar” comandos shell ou suspender o vim.
114 Linux: Sistema Operacional II

Opções

As opções podem ser colocadas em qualquer ordem antes ou depois do nome do


arquivo. Opções sem argumento podem ser combinadas depois do dash.

+[num] – Para o primeiro arquivo de uma lista, o cursor será posicionado na linha
"num". Se "num" não existir, o cursor será posicionado na última linha do arquivo.

+/{padrão} – Para o primeiro arquivo o cursor será posicionado na primeira


ocorrência do {padrão}. Veja ":help search-pattern" para outros padrões
diponíveis.

+{command} -c {command} – {command} será executado depois do pr imeiro


arquivo ser lido, sendo interpretado como um comando Ex.: Se {command}
contiver espaços ele deve estar entre aspas duplas (isto depende do shell que você
usa). Por exemplo: Vim "+set si" main.c

Até 10 comandos "+" ou "-c" podem ser utilizados.

-b – Modo binário. Torna possível editar arquivos executáveis.

-C – Compatível. Ativa o vim para que seja mais compatível com o vi. O arquivo
.vimrc deve existir.

-m – Modificação de arquivos é desabilitada.

-N – Modo não compatível. Reseta a opção 'compatible'. Fará com que vim se
comporte de forma parecida com o vi, mesmo que o arquivo .vimrc não exista.

-n – Desliga o swap. Torna a recuperação após um crash impossível. Conveniente


se estiver editando um arquivo residente em uma mídia lenta como o disquete.
Pode também ser utilizado o argumento ":set uc=0".

-o[N] – Abre N janelas. Quando N é omitido, abre uma janela para cada arquivo.

-R – Abre no mode Read-only. Com esta opção é possível editar o buffer, mas
quando for salvar, um aviso será emitido que o arquivo é read-only. Se você quiser
sobrescrever o arquivo, uma exclamação deve ser inserida antes do comando
w(rite) ":w!". Para mais informações veja ":help 'readonly'".

-r – Lista os arquivos de swap criados durante a edição com as informações para


recovery dos mesmos.
O Bash 115

-r {arquivo} – Modo recovery. O arquivo de swap é usado para recuperação em


caso de crash durante uma sessão de edição. Os arquivos de swap do vim possuem
o mesmo nome do arquivo com a extensão ".swp". Para mais informações veja
":help recovery".

-V – Verbose. Emite mensagens sobre quais arquivos são criados, lidos e escritos
durante o início da edição.

Help on-line
Digite ":help" no prompt do Vim para obter instruções. Para obter o help de um
tópico específico digite ":help tópico". Por exemplo: ":help append" para obter o
help sobre o comando "append". Para completar os comandos utilize <Tab> na
linha do help e ele completará o nome do comando existente. Pressione <Tab>
novamente e os comandos com as iniciais informadas serão completados. Veja
":help cmdline-completion".

Arquivos
/usr/share/vim/vim56/doc/*.txt
Para obter a lista completa use ":help doc-file -list".

/usr/share/vim/vim56/doc/tags
Lista de tags utilizadas para encontrar informações nos arquivos de docu-
mentação.

/usr/share/vim/vim56/syntax/*.vim
Sistema de inicialização de destaques de sintaxe em várias linguagens.

/usr/share/vim/vim56/filetype.vim
Script para detectar o tipo de arquivo pelo seu nome. Veja ":help 'filetype'"
para mais informação.

Autor
A maior parte do Vim foi feita por Bram Moolenaar, com a ajuda de outros. Veja
":help credits" para detalhes dos colaboradores e em que cada um ajudou. Vim é
baseado no Stevie, desenvolvido por: Tim Thompson, Tony Andrews e G.R. (Fred)
Walter. Apesar de ser pouco provável, algum código original pode ter ficado
remanescente e estar em uso na atual versão do Vim.
116 Linux: Sistema Operacional II

Bugs
Provavelmente. Veja ":help todo" para obter uma lista de bugs conhecidos.

false
Nome
false – não faz nada, sem êxito.
Resumo
false [linha de comando ignorada]
false OPÇÃO

Descrição

Sai com um código de status indicando uma falha.

Estas opções não podem ser abreviadas.

--help – Mostra o help e sai


--version – Mostra a versão e sai.

Veja também
Para documentação completa digite o comando: info false.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

exit
Comando Tcl embutido

Nome
exit – Finaliza a aplicação.

Resumo
exit ?returnCode?
O Bash 117

Descrição

Termina o processo retornando o returnCode para o sistema como status de saída.

Se o returnCode não for especificado, então será usado o default 0.

find
Nome
find – procura por arquivos na estrutura de diretórios.

Resumo
find [caminho...] [expressão]

Descrição

Esta descrição abrange a versão GNU do find. find localiza arquivos e diretórios a
partir de um ponto da estrutura de arquivos, segundo parâmetros e argumentos
próprios que são avaliados da esquerda para a direita de acordo com suas regras de
precedência.
O primeiro argumento do find deve começar com "-", "(" , ")", "," ou "!"; Qualquer
argumento antes disto são caminhos de procura e qualquer argumento depois disto
são o resto da expressão. Se nenhum caminho for informado, o diretório corrente é
assumido e se nenhuma expressão for informada a expressão -print é utilizada.

Expressões
A expressão é feita com opções (as quais afetam todas as operações antes de processar o
arquivo específico e sempre retornam o valor verdadeiro), testes (que retornam
verdadeiro ou falso), e ações (que têm efeito complementar e retornam valor verdadeiro
ou falso), todos separados por operadores. -and será assumido se nenhum operador for
informado. Se a expressão não contiver nenhuma outra ação, -prune é assumido, -print
será feito para todos os arquivos para os quais a expressão for verdadeira.

Opções
Todas as opções sempre retornam verdadeiro. Elas sempre causam efeito, antes de
serem processadas, apenas quando seu lugar na expressão for atingido. Portanto,
para ficar claro, o melhor lugar para colocar uma opção é no começo da expressão.
118 Linux: Sistema Operacional II

-daystart – Mede tempos (-amin, -atime, -cmin, -ctime, -mmin, and -


mtime) a partir do início do today até 24 horas atrás.
-depth – Processa o conteúdo de cada diretório antes do próprio diretório.
-follow – Desliga as referência para links simbólicos. Implica -noleaf.
-help, --help – Imprime um sumário com as linhas de comando mais utiliza-
das pelo find e sai.
-maxdepth levels – Precede a maioria do níveis (o parâmetro deve ser um
inteiro não negativo), indicando os níveis de diretórios a serem afetados pe-
los argumentos da linha de comando. "-maxdepth 0" significa que somente
um teste será feito e que as ações não se aplicam aos argumentos informa-
dos.
-mindepth levels – Não se aplica qualquer teste ou ação aos níveis (o parâ-
metro deve ser um inteiro não negativo). "-mindepth 1" significa processar
todos os arquivos exceto os argumentos da linha de comando.
-mount – Não precede diretórios de outro filesystem. Um nome alternativo
-xdev é aceito para manter compatibilidade com outras versões do find.
-noleaf – Otimiza ao assumir que o diretório contém pelo menos 2 subdire-
tórios a menos do que os links físicos indicam. Esta opção é necessária
quando a procura no filesystem não seguir as convenções de link do Unix ,
como um filesystem de CD-ROM, MS-DOS ou volume NFS. Cada diretório
de um sistema Unix normal tem pelo menos 2 links físicos: seu próprio no-
me (.) e da estrutura pai (..). Quando o find examina o diretório, depois de
constatar as duas entradas padrão, ele sabe que as demais entradas são dire-
tórios ou arquivos na árvore de diretórios. Se apenas os nomes de arquivo se-
rão examinados, não há necessidade de considerar aqueles dois então; isto dá
um significativo incremento na velocidade de procura.
-version, --version – Imprime a versão do find e sai.
-xdev – Evita que o find desça aos diretórios de outro filesystem.

Testes
Argumentos numéricos podem ser especificados como:
+n – maior do que n,
-n – menor do que n,
n – igual a n.
-amin n – Arquivo foi acessado há n minutos atrás.
O Bash 119

-anewer file – Arquivo foi acessado mais recentemente do que o arquivo foi
modificado. -anewer é afetado por -follow apenas se -follow aparecer antes
de -anewer na linha de comando.
-atime n – Arquivo foi acessado há n*24 horas atrás.
-cmin n – O status do arquivo foi modificado há n minutos atrás.
-cnewer file – O status do arquivo foi alterado mais recentemente do que o
arquivo foi modificado. -anewer é afetado por -follow apenas se -follow apa-
recer antes de -anewer na linha de comando.
-ctime n – O status do arquivo foi modificado há n*24 horas atrás.
-empty – Arquivo está vazio ou é um diretório.
-false – Sempre falso.
-fstype type – Arquivo está em um filesystem do tipo especificado em type.
Os tipos válidos de filesystem variam muito com as diferentes versões de
Unix; uma lista incompleta de tipos de filesystem aceitos na maioria dos U-
nix inclui entre outros: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Pode-se uti-
lizar -printf com o parâmetro %F para ver os tipos de filesystems que exis-
tem em seu Unix.
-gid n – Arquivos cujo valor do group ID seja n.
-group gname – Arquivos que pertencem ao grupo gname (valores numéri-
cos de group ID são permitidos).
-ilname pattern – O mesmo que -lname, mas a procura é case insensitive.
-iname pattern – O mesmo que -name, mas a procura é case insensitive. Por
exemplo, o padrão 'fo*' e 'F??' localiza arquivos cujos nomes sejam 'Foo',
'FOO', 'foo', 'fOo', etc.
-inum n – Arquivos cujo número do inode seja n.
-ipath pattern – O mesmo que -path, mas a procura é case insensitive.
-iregex pattern – O mesmo que -regex, mas a procura é case insensitive.
-links n – Arquivos que tenham n links.
-lname pattern – Arquivo é um link simbólico. Os metacaracteres '/' e espe-
cialmente '.' não são aceitos.
-mmin n – Os dados do arquivo foram modificados há n minutos atrás.
-mtime n – Os dados do arquivo foram modificados há n*24 horas atrás.
120 Linux: Sistema Operacional II

-newer file – Arquivo foi recentemente modificado. -newer é afetado por -


follow somente se -follow aparecer antes de -newer na linha de comando.
-nouser – Somente arquivos cujo usuário não corresponda a nenhum user ID
numérico válido.
-nogroup – Somente arquivos cujo grupo não corresponda a nenhum group
ID válido.
-path pattern – Arquivos encontrados no padrão informado. Os metacarateres
'/' ou '.' não serão tratados; então, por exemplo:

find . -path './sr*sc'

Esta expressão trará uma entrada para um diretório chamado './src/misc' (se
algum existir).

Para ignorar a totalidade dos diretórios da árvore, utilize -prune antes de


checar cada arquivo na árvore. Por exemplo, para ignorar o diretório
'src/emacs' e todos os arquivos e diretórios abaixo dele e imprimir os nomes
dos outros arquivos encontrados, faça apenas isto:
find . -path './src/emacs' -prune -o -print

-regex pattern – Arquivos encontrados pela expressão regular informada no


padrão. Por exemplo, para encontrar um arquivo chamado './teste3', você po-
de utilizar a expressão regular '.*ste.' ou '.*t.*3', mas não pode usar 't.*e3'.

-size n[bckw] – Arquivos utilizam n unidades de espaço. As unidades são


blocos de 512 bytes por default ou se 'b' suceder n. Bytes se 'c' suceder n. Ki-
lobytes se 'k' suceder n. Palavras de 2-byte se 'w' suceder n. O -size não faz
contagem indireta de blocos, mas efetua a contagem de blocos em arquivos
esparsos que não estão atualmente alocados.

-true – Sempre true.

-type c – Arquivo é do tipo c:


b bloco (buferizado) especial
c caractere (não buferizado) especial
d diretório
p named pipe (FIFO)
f arquivo comum file
O Bash 121

l link simbólico
s socket
-uid n – Arquivos cujo user ID seja n.
-used n – Arquivo teve o último acesso n dias depois que o seu status foi
modificado.
-user uname – Arquivo é do usuário informado em uname (user ID numé-
rico é permitido).

Ações

-exec command – Executa um comando; True é retornado se a execução ti-


ver status 0.

-fls file – Retorna true; da mesma forma que -ls mas escreve para um arqui-
vo como -fprint.

-fprint file – Retorna true; imprime o nome completo do arquivo dentro do


file especificado. Se o arquivo não existir, ele será criado. Se já existir, o ar-
quivo será sobrescrito.

-fprint0 file – Retorna true; da mesma forma que -print0 mas escreve no ar-
quivo como -fprint.

-printf format – Retorna true; imprime no formato indicado para a saída


padrão sendo '\' o caractere de escape e '%' as diretivas do comando. A largu-
ra dos campos e a precisão dos mesmos podem ser especificadas da mesma
forma que a função 'printf' da linguagem C.

Ao contrário do -print, -printf não insere uma nova linha ao final da string.

As diretivas são:
\b Backspace.
\c Pára a impressão no formato e joga para a saída.
\f Form feed.
\n Newline.
\r Carriage return.
\t Tab horizontal.
\v Tab vertical.
\\ Um literal barra invertida ('\').
122 Linux: Sistema Operacional II

%% O literal %.
%a Último acesso ao arquivo.

Campos de tempo
H hora (00..23)
I hora (01..12)
k hora ( 0..23)
l hora ( 1..12)
M minuto (00..59)
p acrescenta AM ou PM
r tempo em 12 horas (hh:mm:ss [AP]M)
S segundos (00..61)
T tempo em 24 horas (hh:mm:ss)
X hora no formato (H:M:S)
Z utiliza Time Zone

Campos de data
a nome abreviado do dia da semana (Sun..Sat)
A nome completo do dia da semana (Sunday..Saturday)
b nome abreviado do mês (Jan..Dec)
B nome completo do mês (January..December)
c data e hora no formato (Sat Nov 04 12:02:33 EST 1989)
d dia do mês (01..31)
D data no formato (mm/dd/aa)
h mesmo que b
j dia do ano (001..366)
m número do mês (01..12)
w número do dia da semana (0..6)
W número da semana do ano sendo Segunda-feira o primeiro dia da
semana (00..53)
O Bash 123

x data no formato (mm/dd/aa)


y últimos dois dígitos do ano (00..99)
Y ano completo (1970...)

Operadores

Em ordem de precedência:
( expr ), Force precedência.
! expr, Retorna true se expr for false.
-not expr, O mesmo que ! expr.
expr1 expr2, E lógico; expr2 não é considerada se expr1 for falsa.
expr1 -a expr2, O mesmo que expr1 expr2.
expr1 -and expr2, O mesmo que expr1 expr2.
expr1 -o expr2, Ou lógico; expr2 não é executada se expr1 for true.
expr1 -or expr2, O mesmo que expr1 -o expr2.
expr1 , expr2, Lista; expr1 e expr2 são sempre avaliadas.

O valor da expr1 é descartado; o valor da lista é o valor da expr2.

finger
Nome
finger – Exibe as informações dos usuários conectados ao sistema.

Resumo
finger [-lmsp] [user ...] [user@host ...]

Descrição
O finger exibe informações sobre os usuários do sistema.

Opções

-s – O finger exibe nome de login do usuário, nome real, nome do terminal e


escreve o status (com um "*" após o nome do terminal se houver problemas
124 Linux: Sistema Operacional II

de permissão), tempo de inatividade, tempo de login, localização do escritó-


rio e número do telefone.

O tempo de login é exibido como mês, dia, hora e minuto, a menos que o
tempo seja maior do que seis meses, caso em que o ano é exibido antes das
horas e minutos.

Dispositivos desconhecidos assim como os inexistentes, em espera (idle) e


tempos de login, são exibidos como asteriscos.

-l – Gera uma exibição em formato multi-line com todas as informações des-


critas pela opção –s, assim como o diretório home dos usuários e outras in-
formações que tenham sido inseridas no momento da criação de uma conta
de login. (telefone residencial, nome do login, situação do e-mail além dos
conteúdos do arquivos ".plan", ".project" e ".forward" do diretório home).

Números de telefone registrados com onze dígitos são exibidos como "+N-
NNNNNN-NNNN''. Telefones especificados com sete ou dez dígitos são e-
xibidos de maneira apropriada respeitando a string. Telefones especificados
com cinco dígitos são exibidos como "xN-NNNN" e com quatro dígitos
"xNNNN".

Se a permissão de escrita estiver restrita no device acessado, a mensagem "(mes-


sages off)" é adicionada à linha que contém o nome deste device. Uma entrada
por usuário é exibida com a opção -l; se o usuário estivar logado em múltiplos
terminais ou conexões, estas informações são repetidas para cada login.

A situação do e-mail é exibida como "No Mail." se nenhum e-mail estiver na


caixa de entrada do usuário, além de informações sobre o acesso aos e-mails
efetuados pelo usuário no formato:

"Mail last read DDD MMM ## HH:MM YYYY (TZ)"

Se o usuário travou a sua caixa postal desde o recebimento de um novo e-


mail, as mensagens "New mail received ...", "Unread since ..." podem ser e-
xibidas.

-p – Evita que a opção -l do finger venha exibir o conteúdos dos arquivos


".plan" e ".project".

-m – Evita a procura de nomes de usuário. O usuário é geralmente um nome


de login; todavia se algum deles utilizar o nome real como nome de login a
O Bash 125

opção -m é automaticamente considerada. Todos os nomes localizados pelo


finger são case insensitive.

Se nenhuma opção for especificada, o finger adota o default -l se operandos


forem inseridos, caso contrário o estilo -s será utilizado. Note que os mes-
mos campos podem ser encontrados em qualquer dos formatos se a informa-
ção não estiver disponível para eles.

Caso nenhum argumento seja especificado, finger imprimirá uma entrada pa-
ra cada usuário logado no sistema.

Finger pode ser utilizado para verificar os usuários de máquinas remotas. O


formato para especificar este usuário é "user@host" ou "@host", onde o
formato default de saída para o comando é o -l, e o formato default é o estilo
-s. A opção -l é a única opção para verificação de usuário de máquinas remo-
tas.

Se a saída padrão for socket, finger emitirá um carriage return (^M) antes de
cada linefeed (^J).

História
O finger apareceu na versão 3.0 do FreeBSD.

free
Nome
free – Exibe a quantidade de memória livre e utilizada no sistema.

Resumo
free [-b | -k | -m] [-o] [-s delay ] [-t] [-V]

Descrição

free exibe a quantidade total de memória física livre e utilizada, além da memória
de swap do sistema como também a memória compartilhada e buffers utilizados
pelo kernel.

Opções

-b – Exibe as informações em bytes.


126 Linux: Sistema Operacional II

-k – Exibe as informações em kbytes (default).


-m – Exibe as informações em megabytes.
-t – Totaliza as informações de cada tipo de memória.
-s – Ativa um monitor contínuo que atualizará as informações a cada s se-
gundos.
-V – Exibe a versão e sai.

Arquivos

/proc/meminfo, informações gerais sobre memória em bytes.

Autor
Programa desenvolvido por Brian Edmonds.

gzip
Nome
gzip, gunzip – comprime ou expande arquivos

Resumo
gzip [ -acdfhlLnNrtvV19 ] [-S suffix] [ name ... ]
gunzip [ -acfhlLnNrtvV ] [-S suffix] [ name ... ]
zcat [ -fhLV ] [ name ... ]
O Bash 127

Descrição

Reduz o tamanho do arquivo utilizando o algoritmo Lempel-Ziv (LZ77).

Sempre que possível, cada arquivo especificado na lista é renomeado para um que
tenha o mesmo nome mas com a extensão .gz, mantendo-se todavia o dono, grupo
e permissões do arquivo original.

Exemplo:

Na seqüência, o arquivo teste, originalmente com 2924 bytes, foi compactado (gzip
teste) na listagem seguinte o arquivo original teste foi movido para teste.gz agora
com o tamanho de 1673 bytes.

Opções

-a --ascii – Ascii text mode: converte os terminadores de fim de linha utili-


zando convenções para cada sistema de arquivos.

Esta opção é suportada apenas em alguns sistemas não Unix. Para MSDOS,
CR LF é convertido para LF quando compactado, e LF é convertido para CR
LF quando descompactado.

-c --stdout --to-stdout – Escreve na saída padrão; deixando o arquivo original


intacto.

Se diversos arquivos de entrada forem informados, a saída consistirá numa


seqüência única de membros compactados. Para obter a melhor compacta-
ção, concatene todos os arquivos antes de compactá-los.
128 Linux: Sistema Operacional II

Atenção: Depois de concatenados e compactados a separação dos arquivos


em suas unidades individuais não é possível. Utilize a opção -c apenas quan-
do o arquivo a ser compactado for único.

Exemplo:

Na seqüência, o arquivo teste, originalmente com 2924 bytes, foi compacta-


do com a opção –c (gzip –c teste) e a saída do comando foi redirecionada pa-
ra um arquivo chamado compactado.gz 1673 bytes. Note que o arquivo or i-
ginal permaneceu inalterado com seus 2924 bytes.

-d --decompress --uncompress – Descompacta o arquivo.

Exemplo:
Partindo agora do arquivo compactado.gz utilizamos o comando gzip –d
compactado e o arquivo é descompactado para o seu nome após compacta-
ção. Isto acabou gerando dois arquivos idênticos, teste e compactado, ambos
com 2924 bytes.
O Bash 129

-f –force – Força a compactação ou descompactação mesmo que o arquivo


tenha múltiplos links ou que os arquivos correspondentes após compactados
já existam.

Exemplo:

O arquivo teste foi compactado com a opção –c (gzip –c teste > teste.gz) o
que manteve o arquivo original intacto. Na seqüência a compactação com –f
(gzip –f teste) sobrescreveu o arquivo existente teste.gz.

-h --help – Exibe a tela de ajuda e sai.


-l --list – Para cada arquivo compactado lista os seguintes campos:
compressed size: tamanho do arquivo descompactado.
uncompressed size: tamanho do arquivo descompactado.
ratio: taxa de compactação (0.0% se desconhecido).
uncompressed_name: nome do arquivo descompactado.

Exemplo:

Partindo do arquivo compactado teste.gz a opção –l exibe informações sobre


o arquivo.
130 Linux: Sistema Operacional II

-r --recursive – Percorre recursivamente a estrutura de diretórios. Qualquer


arquivo especificado na linha de comando que esteja em qualquer dos diretó-
rios a partir do local especificado será compactado.

-t –test – Test. Verifica a integridade do arquivo compactado. Se houver


qualquer problema de integridade, exibe a seguinte mensagem:

gzip: [nome_do_arquivo].gz: not in gzip format

Exemplo:

Forcei uma situação de erro editando e alterando em apenas um byte o con-


teúdo do arquivo teste.gz. Ao testar o arquivo, o erro é acusado. Se o arquivo
estiver íntegro, nenhuma mensagem será exibida.

-v --verbose – Exibe o nome e o percentual de redução de cada arquivo


compactado ou descompactado.

-V --version – Exibe a versão do gzip e sai.

hostname
Nome
hostname – Mostra ou define o nome do sistema.
domainname – Mostra ou define o nome do domínio.
dnsdomainname – Mostra o nome DNS do sistema.
nisdomainname – Mostra ou define o nome NIS do domínio.
O Bash 131

ypdomainname – Mostra ou define o nome NIS/YP do domínio.


nodename – Mostra ou define o DECnet node name do sistema.

Resumo
hostname [-v] [-a] [--alias] [-d] [--domain] [-f] [--fqdn]
[-i] [--ip-address] [--long] [-s] [--short] [-y] [--yp]
[--nis] [-n] [--node]
hostname [-v] [-F filename] [--file filename] [hostname]
domainname [-v] [-F filename] [--file filename] [name]
nodename [-v] [-F filename] [--file filename] [name]
hostname [-v] [-h] [--help] [-V] [--version]
dnsdomainname [-v]
nisdomainname [-v]
ypdomainname [-v]

Descrição

Hostname é um programa usado para definir ou exibir o nome do host atual.

Estes nomes são usados por muitos programas de rede para identificar a máquina
na rede.

Obtendo o nome

Quando executado sem argumentos, o programa exibe o nome atualmente


definido.

Exemplo:

Definindo o nome

Quando executado com um argumento, os comandos definem o nome do


host.
132 Linux: Sistema Operacional II

Ações

-a, --alias – Exibe o alias do host (se utilizado).


-d, --domain – Exibe o nome do domínio DNS. Não utilize o comando do-
mainname para obter o DNS pois ele mostrará o nome NIS e não o DNS.
-h, --help – Exibe a ajuda e sai.
-i, --ip-address – Exibe o endereço IP do host.
-V, --version – Exibe a versão do programa e sai.

Arquivos

/etc/hosts

Autores
Programa desenvolvido por Peter Tobias, <tobias@et-inf.fho-emden.de>
Bernd Eckenfels, <net-tools@lina.inka.de> (NIS and manpage). Steve
Whitehouse, <SteveW@ACM.org> (DECnet support and manpage).

kill
Nome
kill – termina um processo

Resumo
kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]

Descrição

Os sistemas multitarefa (e o Linux é um deles) são baseados em processos que são


executados quando um serviço é iniciado. Para cada serviço podem existir diversos
processos que ficam carregados na memória e permanecem executando até
terminarem naturalmente. Quando um processo ficar “preso” e não puder ser
liberado naturalmente, o operador deve entrar em ação identificando e eliminado os
processos. Para identificar os processos utiliza-se o comando ps e para eliminar
processos “presos” utiliza-se o comando kill.
O Bash 133

O kill envia um sinal específico para o processo. Se nenhum sinal for especificado
o sinal TERM é enviado.
O sinal TERM irá matar o processo que capturá-lo. Para outros processos, pode ser
necessário utilizar o sinal 9. Desde que este sinal possa ser capturado o processo
será terminado imediatamente.
A maioria dos shell modernos trazem o kill embutido.

Opções
pid ... – Especifica uma lista de processos a serem terminados.
-s – Especifica o sinal a ser enviado.
-p – Especifica que o kill deve apenas imprimir o id do processo (pid) mas
não deve enviar o sinal.
-l – Exibe uma lista de nomes de sinais. Eles podem ser encontrados em
/usr/include/linux/signal.h

Exemplo:

O comando os lista os processos bash (que é o shell) e o próprio os que foi


emitido pelo usuário. Ao emitir kill e o número do processo (kill –9 677) o
processo do bash será finalizado e, por conseqüência disto, a sessão em cur-
so será encerrada pois ela sepende do bash.

last
Nome
last, lastb – mostra uma listagem dos últimos logins efetuados pelo usuário,
sua origem e duração em horas:minutos.

Descrição
Last procura as entradas anteriores no arquivo /var/log/wtmp (ou o arquivo
especificado pelo flag -f) e exibe a lista de todas as vezes em que o usuário
esteve logado no sistema desde que o arquivo foi criado.
134 Linux: Sistema Operacional II

Nota
O arquivo wtmp poderá não ser encontrado. A log de acesso somente será
informada caso o arquivo seja encontrado.

Arquivos
/var/log/wtmp
/var/log/btmp

Autor do Programa
Miquel van Smoorenburg.

ln
Nome
ln – faz links entre arquivos.

Resumo
ln [OPTION]... TARGET [LINK_NAME]
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... --target-directory=DIRECTORY TARGET...

Descrição

Cria um link para um TARGET especificado utilizando opcionalmente um


LINK_NAME.

Se o LINK_NAME for omitido, um link com o mesmo nome do arquivo TARGET


é criado no diretório atual.

Quando for um link físico, a única pista de que o arquivo possui um link é a
quantidade de ligações obtida com a listagem longa (ls -l).

Exemplo

Quando for um link simbólico, isto é claramente especificado ao solicitar a


listagem longa (ls -l).
O Bash 135

Exemplo:

O comando ln teste lteste.lnk criou um link físico para o arquivo teste. Note que a
quantidade de links para o arquivo mudou de 1 para 2.

No segundo exemplo foi criado um link simbólico com o comando ln –s teste


teste.lnk. Neste caso, ao listar o arquivo, nota-se claramente a especific ação com a
letra l indicando tratar-se de um link simbólico e o nome do link “apontando” para
o arquivo original.

Opções

-b, --backup[=CONTROL] – Faz um backup de cada arquivo existente no


destino.
-d, -F, --directory – Link físico de diretórios (apenas super-user).
136 Linux: Sistema Operacional II

-f, --force – Remove arquivos existentes no destino.


-i, --interactive – Pergunta se deve demover os destinos.
-s, --symbolic – Faz link simbólico ao invés de link físico.
--target-directory=DIRECTORY – Especifica o DIRECTORY no qual o
link será criado.
-v, --verbose – Exibe o nome de cada arquivo antes de fazer o link.
--help – Exibe a ajuda e sai.
--version – Exibe informações sobre a versão e sai.

Autor
Programa escrito por Mike Parker e David MacKenzie.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

login
Nome
login – acessa o sistema

Resumo
login [ name ]
login -p
login -h hostname
login -f name

Descrição

O login é usado quando o usuário já conectado precisar estabelecer uma nova


sessão ao sistema sem fazer a desconexão. A cada login efetuado um novo shell é
ativado.

Se nenhum argumento for informado ao sistema, login solicita a digitação do nome


do usuário.
O Bash 137

Se o arquivo /etc/nologin existir, o conteúdo deste arquivo será impresso na tela e o


login será terminado. Isto previne logins quando o sistema está sendo desligado.

Se alguma restrição especial de acesso para os usuários estiver especificada no


arquivo /etc/usertty, uma log de acesso negado será gerada em arquivo.

Se o usuário for o root, então o login deve ocorrer em um dos terminais ou


conexões indicadas no arquivo /etc/securetty. Falhas serão registradas.

Após estas condições terem sido verificadas, a senha será requisitada e também
verificada (se a senha for requerida para aquele usuário). Dez tentativas são
permitidas antes do login ser encerrado. Depois das três primeiras tentativas a
resposta do login ficará mais lenta. Falhas de login são reportadas via syslog. Esta
facilidade é também utilizada para reportar qualquer login de sucesso efetuado pelo
usuário root.

Se o arquivo .hushlogin existir, então um "quiet" login será executado, ou seja, ele
desabilitará a verificação de mail e as informações de último login não são
exibidas. Por outro lado se /var/log/lastlog existir, a data, hora e origem do último
login serão exibidos e os dados do login atual são atualizados.

Opções

-p – Usado pelo getty(8) para informar que o login não deve destruir as vari-
áveis de ambiente.
-f – Utilizado para pular a segunda autenticação de login. Especialmente pa-
ra o root, esta opção não gera efeito algum.
-h – Usado para acesso a outros servidores.

Restrições especiais de acesso

O arquivo /etc/securetty lista os nomes dos terminais a partir dos quais o usuário
root poderá estabelecer conexão.

Arquivos relacionados ao login

/var/run/utmp
/var/log/wtmp
/var/log/lastlog
138 Linux: Sistema Operacional II

/usr/spool/mail/*
/etc/motd
/etc/passwd
/etc/nologin
/etc/usertty
.hushlogin

Autores
Programa derivado do BSD login 5.40 (5/9/89) por Michael Glad
(glad@daimi.dk) para HP-UX. Portado para o Linux por Peter Orbaek
(poe@daimi.aau.dk).

ls
Nome
ls – lista o conteúdo do diretório

Resumo
ls [OPTION]... [FILE]...

Descrição
Lista informações sobre os arquivos existentes no diretório atual onde está o
foco do shell.

Opções

-a, --all – Não oculta arquivos que começam por . (ponto).


-A, --almost-all – Não lista as entradas . (foco) e .. (diretório pai).
-b, --escape – Imprime octal escapes para caracteres não gráficos.
--block-size =SIZE – Utiliza blocos de SIZE-byte.
-B, --ignore-backups – Não lista arquivos que terminem por ~ (backup).
-d, --directory – Lista as entradas do diretório ao invés do conteúdo.
--full-time – Lista data e hora detalhada.
O Bash 139

-h, --human-readable – Imprime os tamanhos dos arquivos de forma mais


legível (1K 234M 2G).
-i, --inode – Imprime o índice numérico para cada linha.
-k, --kilobytes – O mesmo que --block-size=1024.
-l – Utiliza formato de listagem longa.
-m – Separa os nomes dos arquivos por vírgulas.
-R, --recursive – Lista os subdiretórios recursivamente.
-s, --size – Imprime o tamanho de cada arquivo em blocos.
-S – Classifica os arquivos por tamanho.
-t – Classifica os arquivos por hora de alteração.
-X – Classifica os arquivos pela sua extensão.

Autores
Programa escrito por Richard Stallman e David MacKenzie.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

mkdir
Nome
mkdir – cria diretórios

Resumo
mkdir [OPTION] DIRECTORY...

Descrição
Cria um diretório se ele ainda não existir.
Opções

-m, --mode=MODE – Estabelece as permissões (como no chmod), utilizan-


do umask.
-p, --parents – Nenhum erro se existente, faz um diretório pai se necessário.
140 Linux: Sistema Operacional II

--verbose – Imprime uma mensagem para cada diretório criado.


--help – Exibe a ajuda e sai.
--version – Exibe a versão e sai.

Autor
Programa escrito por David MacKenzie.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

more
Nome
more – permite uma leitura na tela de um arquivo longo.

Resumo
more [-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...]

Descrição
More é um filtro de páginas que exibe uma tela completa de texto de cada vez.

Opções

-num – Especifica o tamanho da tela em linhas.


-d – Exibe ajuda interativa ao usuário: "[Press space to continue, 'q' to quit.]"
e exibe "[Press 'h' for instructions.]" ao invés de simplesmente informar que
uma tecla ilegal foi pressionada.
-p – Não faz scroll da tela, ao invés disto limpa a tela e exibe uma nova com
as próximas n linhas de texto.
-c – Não faz scroll, ao invés disto exibe o conteúdo a partir do topo da tela
substituindo o conteúdo atual pelo novo.
/ – Abre prompt para localização de string oculta no buffer.
O Bash 141

Comandos

São teclas interativas baseadas na funcionalidade do vi.


h or ? – Help: Exibe um resumo dos comandos.
SPACE – (barra de espaço) – Exibe as n próximas linhas. O valor default pa-
ra n é o tamanho da tela.
RETURN – Exibe a próxima linha de texto.
q ou Q – Interrompe o more.
b or ^B – Retorna uma tela cheia.
= – Exibe o número da linha atual.
/padrão – Localiza a enésima ocorrência de uma string. O default é 1.
^L – Faz um redraw da tela.
. – Repete o último comando.

Ambiente
More utiliza as seguintes variáveis de ambiente se existirem:
MORE – Pode ser definida com a opção preferida do more.
SHELL – Shell atualmente em uso. Geralmente é shell do login.
TERM – Especifica o tipo do terminal.

Autores
Programa criado por Eric Shienbrood, UC Berkeley e complementado por
Geoff Peck, UCB e por John Foderaro para o acréscimo de facilidades.

Histórico
O comando more apareceu inicialmente na versão 3.0 do BSD. A última versão
antes desta do Linux foi a 5.19 (Berkeley 6/29/88), na qual a do Linux é baseada.

mount
Nome
mount – monta um file system
142 Linux: Sistema Operacional II

Resumo
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir

Descrição
Todos os arquivos acessíveis nos ambientes Unix e compatíveis estão em uma
grande árvore cuja hierarquia é determinada pelo ponto raiz. Os arquivos que são
ali exibidos podem estar em diversos disposit ivos e até máquinas diferentes. O
comando mount serve para atachar o sistema de arquivos encontrado em um
dispositivo ao device que mantém a grande árvore de arquivos tornando-a visível e
acessível a partir de um único ponto conhecido por raiz, root directory ou
simplesmente / (barra).

O padrão para utilização do comando é: mount -t type device dir

Este domando diz ao kernel para anexar o file system encontrado no device ao
diretório informado, liberando o acesso aos seus arquivos.

Opções
-h – Exibe um resumo das opções.
-V – Exibe a versão do mount.
mount – Lista todos os file systems montados e disponíveis.
-a – Monta todos os file systems.
-r – Monta o file system read-only.
-w – Monta o file system read/write. Opção default.
-t vfstype – Especifica o tipo de file system que deve ser montado sendo que
os mais comuns são: adfs, affs, autofs, coda, coherent, devpts, efs, ext, ext2,
hfs, hpfs, iso9660, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, romfs, smbfs,
sysv, udf, ufs, umsdos, vfat, xenix, xiafs.

Arquivos
/etc/fstab – tabela do file system
O Bash 143

/etc/mtab – tabela dos file systems montados


/etc/mtab~ – arquivos travados
/etc/mtab.tmp – arquivo temporário

mv
Nome
mv – move (renomeia) arquivos

Resumo
mv [OPTION]... SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... --target-directory=DIRECTORY SOURCE...

Descrição
Renomeia SOURCE patra DEST, ou move SOURCE para DIRECTORY.
-b, --backup[=CONTROL] – Faz backup antes de remover.
-f, --force – Remove destinos que já existam sem perguntar.
-i, --interactive – Pergunta antes de sobrescrever.
--help – Exibe o help e sai.
--version – Exibe informações sobre versão e sai.

Autores
Programa escrito por Mike Parker, David MacKenzie e Jim Meyering.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

netstat
Nome
netstat – exibe as conexões da rede, tabela de rotas, estatística das interfaces,
conexões mascaradas, mensagens de rede e conexões ativas.
144 Linux: Sistema Operacional II

Resumo
netstat [-venaocs] [--tcp|-t] [--udp|-u] [--raw|-w] [--groups|-g] [--unix|-
x] [--inet|--ip] [--ax25] [--ipx] [--netrom]
netstat [-venc] [--inet] [--ipx] [--netrom] [--ddp] [--ax25] {--route|-r}
netstat [-venpac] {--interfaces|-i} [iface]
netstat [-enc] {--masquerade|-M}
netstat [-cn] {--netlink|-L}
netstat {-V|--version} {-h|--help}

Descrição
Netstat exibe informações do subsistema de rede do Linux.

(sem opções) – Você pode ver a situação das conexões da rede pela listagem
dos sockets abertos. Esta é a operação default: se não for especificada ne-
nhuma família de endereços, então os sockets de todos os endereços configu-
rados serão exibidos. Uma família de endereços inet exibirá simplesmente
sockets udp e tcp.

-a, --all – Exibe informações sobre todos os sockets, incluindo o listening


server.

-l, --listening – Exibe informações apenas sobre o listening server.

-r, --route – Exibe a tabela de rotas no mesmo formato obtido com route -e.

-n, --numeric – Mostra o endereço numérico ao invés de determinar o nome


simbólico do host.

Netstat possue várias opções e arquivos complementares. Para saber mais


consulte o manual on-line.

passwd
Nome
passwd – atualiza a autenticação do usuário.
O Bash 145

Descrição
Passwd é usado para atualizar a autenticação do usuário (senha).

Essencialmente o comando passwd verifica, autentica, criptografa e armazena os


dados de senha de cada usuário do sistema.

Opções

-l – Utilizada para bloquear uma conta dexando-a disponível apenas para o


usuário root.
-d – Desabilita a senha para uma conta. Apenas o root pode utilizar esta op-
ção.

Proteja sua senha

Jamais escreva sua senha, memorize-a. Em particular não escreva e deixe-a em


qualquer lugar e não a coloque em um arquivo criptografado. Use senhas não
relacionadas ao controle do sistema em empresas diferentes. Não divulgue ou
compartilhe sua senha especialmente para efeito de envio do computador a
terceiros para quaisquer serviços.

Não deixe outras pessoas digitarem sua senha. Não digite sua senha em um
computador que você não confie ou conheça. Use sua senha por tempo limitado
trocando-a periodicamente.

Escolha a senha certa

Previna-se contra a escolha de uma senha realmente ruim, mas não seja bobo, crie
sua senha com sabedoria. Não use qualquer coisa que você encontrou em um
dicionário (se for linguagem ou jargão).

Não use um nome (incluindo da esposa, pais, filhos, cachorro, apelidos, pessoas
famosas e locais) ou qualquer variação do seu próprio nome ou nome de usuário.
Não use informções acessíveis sobre você (como número do telefone, placas do
carro, CPF, RG) ou do seu meio. Não use sua data de aniversário ou combinações
de padrões (como a data invertida, seguida ou precedida por um dígito). Ao invés
disso, utilize uma mistura de caracteres em letras maiúsculas e minúsculas assim
como números e símbolos de pontuação. Quando escolher uma nova senha, tenha
certeza de que ela não está relacionada a nenhuma senha anteriormente utilizada.
Utilize senhas longas com pelo menos oito caracteres. Pode-se utilizar um par de
146 Linux: Sistema Operacional II

palavras com pontuação inserida, uma frase falsa (combinação sem sentido de uma
seqüência de palavras) ou as letras iniciais de cada palavra de uma frase sem
sentido.

Estes princípios são parcialmente reforçados pelo sistema, mas apenas


parcialmente. Vigie e faça a sua parte para que o seu sistema seja mais seguro.

Autor do programa
Cristian Gafton <gafton@console.com>

ping
Nome
ping – envia um pacote ICMP ECHO_REQUEST para um host da rede.

Resumo
ping [-dfnqrvR] [-c count] [-i wait] [-l preload] [-p pattern] [-s packetsize]
Changed options: -I <device name> pode ser utilizado para definir a interfa-
ce de saída.

Novas opções

-T [ping only]: envia timestamp.


-T tsonly --- only timesamps
-T tsandaddr --- timestamps & addresses
-T tsprespec host1 [host2 [host3 [host 4]]]
--- timestamp prespecified hops

Melhorias

- compreende as mensagens de erro icmp e reage a elas corretamente.


- verifica a integridade do pacote icmp e reage ao pacote corretamente.
- executa corretamente o ping no loopback.
etc.
O Bash 147

Descrição

Ping utiliza o protocolo ICMP com datagrama ECHO_REQUEST para obter um


ICMP ECHO_RESPONSE a partir de um host ou gateway. Datagramas
ECHO_REQUEST ("pings") possuem um cabeçalho IP e um ICMP, seguidos por
uma "struct timeval" e então um número arbitrário de "pad" bytes são usados para
preencher o pacote de saída.

-c count – Interrompe o ping após enviar (e receber) count pacotes


ECHO_RESPONSE.

-s packetsize – Especifica o número de bytes a ser enviado. O default é 56,


equivalente a um total de 64 ICMP data bytes quando combinados aos 8 bytes
necessários ao header ICMP.

Comentários adicionais sobre ping podem ser obtidos na documentação on-line.

pwd
Nome
pwd – imprime o nome do diretório atual

Resumo
pwd [OPTION]

Descrição
Imprime o caminho completo do diretório de trabalho atual.
--help – Exibe o help e sai.
--version – Exibe a versão e sai.

rm
Nome
rm – remove arquivos ou diretórios.

Resumo
rm [OPTION]... FILE...
148 Linux: Sistema Operacional II

Descrição

O rm remove cada arquivo especificado. Por default ele não remove diretórios.

Se o arquivo estiver protegido contra escrita, a opção -f ou --force pode ser usada,
rm perguntará se o arquivo deve ser removido. Se a reposta não começar por y ou
Y, o arquivo não é apagado.

Opções
-d, --directory – Remove um diretório mesmo que ele não esteja vazio. Ape-
nas super-user.
-f, --force – Remove sem pedir confirmação.
-i, --interactive – Pergunta antes de remover.
-r, -R, --recursive – Remove o conteúdo de diretórios recursivamente.
-v, --verbose – Exibe o que está sendo feito.
--help – Exibe ajuda e sai.
--version – Exibe a versão e sai.

Autores
Programa escrito por Paul Rubin, David MacKenzie, Richard Stallman e Jim
Meyering.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

rmdir
Nome
rmdir – Remove diretórios vazios

Resumo
rmdir [OPTION]... DIRECTORY...
O Bash 149

Descrição
Remove um diretório se este estiver vazio.
--ignore -fail-on-non-empty – Ignora cada falha se o diretório não estiver
vazio.
-p, --parents – Remove DIRECTORY, então tenta remover cada subdiretório
(se estes estiverem vazios).
Por exemplo: "rmdir -p a/b/c" é o mesmo que "rmdir a/b/c a/b a.
--verbose – Exibe um diagnóstico para cada diretório processado.
--help – Exibe a ajuda e sai.
--version – Exibe a versão e sai.

Autor
Programa escrito por David MacKenzie.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

rpm
Nome
rpm – gerenciador de pacotes da Red Hat.

Resumo
rpm [options]

Descrição
O rpm é um poderoso gerenciador de pacotes, que pode ser utilizado para montar,
instalar, verificar, atualizar e desinstalar pacotes de software.
Um pacote consiste de um conjunto de arquivos e suas respectivas informações,
incluindo nome, versão e descrição.
Uma das seguintes formas podem ser utilizadas para operar pacotes rpm:
Initialize Database, Rebuild Database, Build Package, Recompile Package, Build
Package from Tarball, Query, Show Querytags, Install, Freshen, Uninstall, Verify,
150 Linux: Sistema Operacional II

Signature Check, Resign, Add Signature, definir donos e grupos e Show


Configuration.

Database maintenance
rpm -i [--initdb]
rpm -i [--rebuilddb]

Building
rpm [-b|t] [package_spec]+
rpm [--rebuild] [sourcerpm]+
rpm [--tarbuild] [tarredsource]+

Querying
rpm [--query] [queryoptions]
rpm [--querytags]

Maintaining installed packages


rpm [--install] [installoptions] [package_file]+
rpm [--freshen|-F] [installoptions] [package_file]+
rpm [--uninstall|-e] [uninstalloptions] [package]+
rpm [--verify|-V] [verifyoptions] [package]+

Signatures
rpm [--verify|-V] [verifyoptions] [package]+
rpm [--resign] [package_file]+
rpm [--addsign] [package_file]+

Miscellaneous
rpm [--showrc]
rpm [--setperms] [package]+
rpm [--setgids] [package]+
O Bash 151

As opções e documentação detalhadas podem ser conseguidas emitindo o


comando rpm --help.

Arquivos Associados

/usr/lib/rpm/rpmrc
/etc/rpmrc
~/.rpmrc
/usr/lib/rpm/macros
/etc/rpm/macros
~/.rpmmacros
/var/lib/rpm/conflictsindex.rpm
/var/lib/rpm/fileindex.rpm
/var/lib/rpm/groupindex.rpm
/var/lib/rpm/nameindex.rpm
/var/lib/rpm/packages.rpm
/var/lib/rpm/providesindex.rpm
/var/lib/rpm/requiredby.rpm
/var/lib/rpm/triggerindex.rpm
/tmp/rpm*

Autores
Marc Ewing <marc@console.com>
Jeff Johnson <jbj@console.com>
Erik Troan <ewt@console.com>

sed
Nome
sed – Um Stream EDitor
152 Linux: Sistema Operacional II

Resumo
sed [-n] [-V] [--quiet] [--silent] [--version] [--help]
[-e script] [--expression=script]
[-f script-file] [--file=script-file]
[script-if-no-other-script]
[file...]

Descrição
Sed é um stream editor. Um stream editor é utilizado para realizar transformações
básicas de uma stream de entrada (que pode ser um arquivo ou uma entrada a partir
de um pipeline). Enquanto em algumas formas de utilização ele é parecido com um
editor que permite a edição de scrips (como o ed), sed trabalha apenas na
composição de etapas a partir das entradas, sendo desta forma mais eficiente. Mas
a principal habilidade do sed é a de filtragem de textos entrados por um pipeline o
que o distingue particulamente de outros tipos de editores.

Opções

Sed pode ser invocado com as seguintes opções:


-V – --version – Imprime a versão e o copyright e sai.
-h – --help – Imprime o help e sai.
-n – --quiet – --silent – Por default, sed irá exibir um padrão de saída com
espaços até o final de cada ciclo através do script. Estas opções desabilitam a
impressão automática e o sed irá produzir saídas explícitas via o comando p.
-e script – --expression=script – Adiciona um comando ao script para ser se-
tado enquanto as entradas vão sendo processadas.
-f script-file – --file=script-file – Adiciona comandos contidos em um script-
file para serem definidos como comandos processados enquanto as entradas
são recebidas.

Caso nenhuma expressão -e,-f,--expression, ou --file opção seja informada


na linha de comando, então o primeiro argumento na linha de comando será
considerado um script e executado.

Qualquer parâmetro da linha de comando restante após o processamento será


interpretado como um nome de arquivo a ser processado. Um nome de ar-
O Bash 153

quivo com – refere-se à entrada padrão de um stream. A entrada padrão será


então processada se nenhum nome de arquivo for especificado.

Os comandos do sed podem ser conseguidos com man sed no prompt de co-
mando. Note que os comandos são parecidos com o ed.

su
Nome
su – executa um shell em substituição ao usuário e grupos atuais, com per-
missões de superusuário.

Resumo
su [OPTION]... [-] [USER [ARG]...]

Descrição
Modifica o usuário ativo (user id) e seu grupo (group id) para o novo USER
especificado.
-, -l, --login – Solicita a senha do usuário root.
-c, --commmand=COMMAND – Passa o COMMAND para o shell.
-m, -p, --preserve-environment – Não reseta as variáveis de ambiente.
-s, --shell=SHELL – Executa o SHELL se /etc /shells permitir isto.
--help – Exibe a ajuda e sai.
--vers ion – Exibe a versão e sai.

Para maiores informações sobre o su veja info su no prompt do shell.

Copyright
Copyright © 1999 Free Software Foundation, Inc.

tar
Nome
tar – versão GNU do utilitários de backup.
154 Linux: Sistema Operacional II

Resumo
tar [ – ] A --catenate --concatenate | c --create | d
--diff --compare | r --append | t --list | u --update | x
-extract --get [ --atime-preserve ] [ -b, --block-size N ]
[ -B, --read-full-blocks ] [ -C, --directory DIR ] [
--checkpoint ] [ -f, --file [HOSTNAME:]F ] [ --force-
local ] [ -F, --info-script F --new-volume-script F ] [
-G, --incremental ] [ -g, --listed-incremental F ] [ -h,
--dereference ] [ -i, --ignore-zeros ] [ -I, --bzip ] [
--ignore-failed-read ] [ -k, --keep-old-files ] [ -K,
--starting-file F ] [ -l, --one-file-system ] [ -L,
--tape-length N ] [ -m, --modification-time ] [ -M,
--multi-volume ] [ -N, --after-date DATE, --newer DATE ] [-o, --old-
archive, --portability ] [ -O, --to-stdout ] [
-p, --same-permissions, --preserve -permissions] [ -P,
--absolute-paths ] [ --preserve ] [ -R, --record-num-
ber ] [ --remove-files ] [ -s, --same-order, --preserve-
order ] [ --same-owner ] [ -S, --sparse ] [ -T, --files-
from F ] [ --null ] [ --totals ] [ -v, --verbose ] [
-V, --label NAME ] [ --version ] [ -w, --interactive,
--confirmation ] [ -W, --verify ] [ --exclude FILE ] [
-X, --exclude-from FILE ] [ -Z, --compress, --uncompress]
[ -z, --gzip, --ungzip ] [ --use-compress-program
PROG ] [ --block-compress ] [ -[0-7][lmh] ]

filename1 [ filename2, ... filenameN ]


directory1 [ directory2, ...directoryN ]
O Bash 155

Descrição

O manual detalhado do tar pode ser obtido com o comando man tar ou info tar.

O tar foi projetado para gerar arquivamento e extração de arquivos para e a partir
de mídias de qualquer tipo (disquete, CD, fitas e arquivos no próprio file system).

vi
Nome
vi – editor de textos vi.

Comandos

O vi é um editor de textos de tela completa (full screen) que requer para sua
operação a digitação de caracteres de controle. No ambiente Linux, o vi é mais
interativo ao exibir na última linha da tela o modo no qual ele está operando além
de mensagens que orientam o usuário.

A tecla ESC é utilizada para cancelar o comando atual e entrar no modo de seleção
de novos comandos. O dois pontos (:) acessa a barra de comandos na última linha
da tela.

Inserção de texto

i - insere texto antes do cursor.


r - insere texto no início da linha onde se encontra o cursor.
a – insere texto depois do cursor.
A – insere texto no fim da linha onde se encontra o cursor.
o – adiciona linha abaixo da linha corrente.
O – adiciona linha acima da linha corrente.
Ctrl + h – apaga último caractere.
Ctrl + w – apaga última palavra minúscula.
Esc – passa para o modo comando.
156 Linux: Sistema Operacional II

Movimentação pelo Texto

Ctrl+f – passa para a tela seguinte.


Ctrl+b – passa para a tela anterior.
H – move o cursor para a primeira linha da tela.
M – move o cursor para o meio da tela.
L – move o cursor para a última linha da tela.
h – move cursor para caractere à esquerda.
j – move cursor para linha abaixo.
k – move o cursor para linha acima.
l – move cursor para caractere à direita.
w – move cursor para início da próxima palavra (Ignora pontuação).
W – move cursor para início da próxima palavra (Não ignora pontuação).
b – move cursor para início da palavra anterior (Ignora pontuação).
B – move cursor para início da palavra anterior (Não ignora pontuação).
0 (zero) – move cursor para início da linha corrente.
^ – move cursor para o primeiro caractere não branco da linha.
$ – move cursor para o fim da linha corrente.
NG – move para a linha n.
G – move para a última linha do arquivo.

Localização de Texto

/palavra – procura pela palavra ou caractere acima ou abaixo do texto.


?palavra – move para a ocorrência anterior da palavra (para repetir a busca
usar n).
n – repete o último / ou ? comando.
N – repete o último / ou ? comando na direção reversa.
Ctrl+g – mostra o nome do arquivo, o número da linha corrente e o total de
linhas.
O Bash 157

Alteração de Texto

x – deleta um caractere que está sobre o cursor.


dw – deleta a palavra, do início da posição do cursor ate o fim.
dd – deleta a linha inteira onde o cursor estiver.
D – deleta a linha a partir da posição do cursor em diante.
rx – substitui o caractere sob o cursor pelo especificado x (é opcional indicar
o caractere).
Rtexto – substitui o texto corrente pelo texto indicado (opcional indicar o
texto adicionado).
cw – substitui a palavra corrente. Pode-se inserir o novo conteúdo da palavra
automaticamente.
cc – substitui a linha corrente. Pode-se inserir o novo conteúdo da linha au-
tomaticamente.
C – substitui restante da linha corrente. Pode-se inserir o texto logo após o
comando.
u – desfaz a última modificação.
U – desfaz todas as modificações feitas na linha (se o cursor não mudou de
linha).
J – une a linha corrente à próxima.
s:/velho/novo – substitui a primeira ocorrência de "ve lho" por "novo".

Salvar o Texto

:wq – salvar as mudanças feitas no arquivo e sai do editor.


:w < nome-arq > – salva o arquivo corrente com o nome especificado. Con-
tinua edição normalmente.
:w! < nome-arq > – salva (de modo forçado) o arquivo corrente no arquivo
especificado.
:q – sai do editor. Se mudanças não foram salvas é apresentada mensagem de
advertência.
:q! – sai do editor sem salvar as mudanças realizadas.
158 Linux: Sistema Operacional II

umount
Nome
umount – desmonta um file system.

Resumo
umount [-hV]
umount -a [-nrv] [-t vfstype]
umount [-nrv] device | dir [...]

Descrição

O comando umount desconecta um file system da árvore hierárquica do Linux.

Note que um file system não poderá ser desmontado caso ele esteja ocupado. Por
exemplo, se um CD estiver montado e o foco do shell estiver em um dos seus
diretórios, o umount não funcionará e, ao contrário, retornará um mensagem que o
dispositivo está ocupado ('busy').

Opções

-V – Exibe a versão e sai.


-h – Exibe o help e sai.
-v – Modo verbose.
-n – Faz o unmount sem escrever em /etc/mtab.
-r – Em caso do unmount falhar, tenta fazer o remount em modo read-only.
-a – Todo o file system descrito em /etc/mtab será desmontado.
-t vfstype – Indica o tipo de file systems no qual o umount atuará.
-f – Força o unmount.

Arquivos associados

/etc/mtab – tabela de file systems montados.


O Bash 159

who
Nome
who – mostra quem está logado.

Resumo
who [OPTION]... [ FILE | ARG1 ARG2 ]

Descrição

-H, --heading – Imprime os cabeçalhos das colunas


-i, -u, --idle – Adiciona os usuários em estado idle (espera) indicando HO-
RAS:MINUTOS, . ou old.
-l, --lookup – Tenta canalizar os hostnames via DNS.
-m – Apenas hostname e usuários associados com a entrada padrão.
-q, --count – Todos os login e número dos usuários logados.
--help – Exibe o help e sai.
--version – Exibe a versão e sai.

Copyright
Copyright © 1999 Free Software Foundation, Inc.
Conforme já explicado anteriormente, não é aconselhável utilizar a conta de supe-
rusuário todo o tempo. Inevitavelmente um erro será cometido, e a checagem de
acesso que normalmente evita esse tipo de erro não funcionará, uma vez que ao
superusuário é permitido fazer qualquer coisa no sistema.

Se não devemos acessar o sistema como superusuário , com que nome devemos
acessá-lo então? Com o seu nome, obviamente. Para isso, é preciso saber como
criar contas no Linux.

Contas
Assim que ligado, o sistema oferece diversas formas de criar novas contas. Usare-
mos inicialmente o método mais básico: o comando useradd.

Logado como superusuário emita o comando:


[root@Console /root] # useradd fulano
[root@Console /root] #

Pronto, o usuário fulano já está criado. Muito simples? Vamos tentar acessar o sis-
tema. No campo de senha do usuário “fulano”, simplesmente pressione Enter. Note
que a mensagem de login incorrect é exibida indicando que falta alguma coisa.

160
Criação de Contas de Acesso 161

Console Linux 1.0 (Spike)


Kernel 2.2.17-21mdk
login: fulano
Password:
Login incorrect

login:

Senhas
O comando passwd pode ser usado para:

• Especificar senhas para contas recém-criadas;


• Mudar as senhas de contas existentes;
• Mudar a senha de contas com as quais se esteja acessando o sistema.

As primeiras duas situações são realmente as mesmas; para o comando passwd não
faz diferença entre uma conta que já exista e uma que acabou de ser criada. Deve-
se acessar o sistema como superusuário (root), e então especificar o nome da conta
cuja senha quer alterar. Usando a conta que acabamos de criar, temos o seguinte
exemplo:
[root@Console /root]# passwd fulano
Changing password for user fulano
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
[root@Console /root]#

A senha não aparece na tela quando informada. Deve-se ainda digitar duas vezes,
para garantir que não houve nenhum engano ao informá-la. Vamos acessar o siste-
ma com a conta recém-criada novamente:
Console Linux 1.0 (Spike)
Kernel 2.2.17-21mdk
login: fulano
Password:
Last login: Thu May 3 21:26:02 from 192.168.0.1
162 Linux: Sistema Operacional II

Para ajuda ou configurações do sistema, digite `c'


[fulano@console fulano]$

Uma vez no prompt do bash, pode-se alterar a senha da conta que está sendo usada
utilizando-se o comando passwd sem o nome da conta. Neste caso, será solicitada
a senha atual da conta, seguida do comando de nova senha. Por exemplo, para uma
conta fulano, teremos:
[fulano@Console fulano]$ passwd
Changing password for fulano
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
[fulano@Console fulano]$

Comando su
Na manutenção normal do sistema, pode ser necessário processar alguns poucos
comandos como outro usuário. É normal que administradores de sistemas Unix
tenham esse tipo de demanda. Todo bom administrador utiliza sua conta pessoal e
sem privilégios especiais a maior parte do tempo. Mas caso uma senha de usuário
necessite ser alterada, por exemplo, ou as permissões de um determinado arquivo
precisem ser ajustadas, isso geralmente não é possível com uma conta de usuário
simples.

Tais tarefas não levam mais que um minuto, e é incômodo sair e entrar no sistema
diversas vezes, somente para executar pequenas tarefas como superusuário. Uma
abordagem mais simples consiste na utilização do comando su. Com este comando,
a sessão atual pode transformar-se na sessão do superusuário ou outro usuário.

No exemplo a seguir, o usuário “fulano” precisa tornar-se superusuário:


[fulano@Console fulano]$ su
Password:
[root@Console fulano]#

Através do comando su, o usuário fulano obtém os poderes de superusuário, após a


informação da senha do root.
Criação de Contas de Acesso 163

Note que depois do comando su ocorreram mudanças no prompt. Além da identif i-


cação do usuário, o sinal “dólar” ($), passa a ser “sharp” (#). Esta é a forma tradi-
cional que o ambiente do shell utiliza para identificar que a sessão está sendo exe-
cutada como superusuário.

É possível ainda tornar-se qualquer outro usuário com o comando su e a senha do


root. Por exemplo, se estiver logado como usuário Garcia e quiser mudar para u-
suário fulano, deve-se informar a senha de fulano.
[Garcia@Console Garcia]$ su fulano
Password:
[fulano@Console Garcia]$

Se estiver logado como root e quiser mudar para qualquer outro usuário (Garcia,
por exemplo) basta entrar com o comando su Garcia e nenhuma senha será solic i-
tada.
[root@Console Garcia]# su Garcia
[Garcia@Console Garcia]$

Para excluir um usuário


Usa-se o comando userdel.
[root@Console sbin]# pwd
/usr/sbin
[root@Console sbin]# ./userdel fulano
[root@Console sbin]#

Somente o superusuário poderá remover um usuário.


O propósito deste capítulo é ajudar o leitor a transportar sua prática DOS/Windows
para o ambiente Linux, além de apresentar algumas dicas sobre o intercâmbio de
arquivos e recursos entre os dois sistemas operacionais.

Eu preciso do Linux?
Você quer começar com o Linux e conhece um pouquinho de DOS? Boa iniciativa,
pois o Linux é tecnicamente superior ao DOS e Windows 9X/NT/2K. Mas cuida-
do! Linux pode não lhe ser útil, se você não for o tipo adequado de usuário.

DOS e Windows são mais usados para jogos e produtividade de escritório, ao passo
que o Linux dá seu melhor em networkin g, desenvolvimento e computação cientí-
fica.

O Linux é incrivelmente poderoso, mas aprender como aproveitar esse poder leva
tempo. Assim, se você precisa principalmente de software comercial, ou se você
não está disposto a aprender novos comandos e conceitos, é melhor procurar outra
coisa.

Tornar o Linux mais fácil de usar é um trabalho em andamento, mas não espere
tornar-se proficiente sem ler muita documentação e usá-lo por pelo menos um mês.
O Linux não lhe dará resultados instantâneos. Apesar destes avisos, eu tenho 100%

164
Linux para Usuários DOS/Windows 165

de confiança de que, se você se encaixa no perfil adequado de usuário, encontrará


no Linux o nirvana para seu computador, e nunca mais vai querer usar DOS ou
Windows novamente. A propósito, Linux + DOS/Win podem coexistir na mesma
máquina sem problemas.

Pré-requisitos
• Conhecer os comandos e conceitos básicos do DOS;
• Ter o Linux, preferencialmente com o KDE, corretamente instalado no seu
PC;
• Ter como shell o bash.

A menos que seja especificado o contrário, todas as informações aqui visam o


DOS. Há informações sobre o Windows aqui e ali, mas tenha em mente que o
Windows e o Linux são totalmente diferentes, ao passo que o DOS é uma espécie
de primo pobre do UNIX.

Você instalou o Linux e os programas de que precisava no seu PC. Você criou uma
conta para você mesmo (se não, digite adduser agora!) e o Linux está rodando.

Você digitou seu nome e sua senha, e agora está olhando para a tela pensando: "E
agora?"
login: Garcia
Password:
Last login: Tue Mar 20 14:58:44 from 192.168.0.2
[Garcia@Console Garcia]$

Não se desespere. Você está quase pronto para fazer as mesmas coisas que costu-
mava fazer com DOS/Win, e muito mais. Se você estivesse rodando DOS/Win ao
invés de Linux, estaria fazendo alguma das seguintes tarefas:
• Executando programas e criando, copiando, visualizando, apagando, im-
primindo e renomeando arquivos;
• Mudando, criando e apagando seus diretórios, e listando seu conteúdo
(com CD, MD, RD, DIR);
• Formatando disquetes e copiando arquivos de/para eles;
• Personalizando o sistema;
• Escrevendo arquivos .BAT e programas na sua linguagem favorita;
• O 1% restante.
166 Linux: Sistema Operacional II

Você ficará feliz em saber que estas tarefas podem ser realizadas no Linux de uma
maneira similar ao DOS. No DOS, o usuário médio utiliza muito poucos dos mais
de 100 comandos disponíveis: o mesmo, até certo ponto, vale também para o Li-
nux.

Conceitos Introdutórios
A melhor maneira de aprender algo novo é praticando. Você é fortemente estimu-
lado a experimentar e brincar com o Linux: você não danificará seu sistema assim.

Saindo do Linux com segurança


• Se você estiver numa tela de modo texto, pressione <CTRL-ALT-DEL> ,
espere o sistema reinicializar e desligue o PC. Se você estiver trabalhando
sob o KDE, pressione <CTRL-ALT-BACKSPACE> primeiro, e depois
<CTRL-ALT-DEL>;
• Nunca desligue nem reinicialize o PC diretamente: isto pode danificar o
sistema de arquivos;
• Diferentemente do DOS, o Linux tem mecanismos embutidos de seguran-
ça. Arquivos e diretórios têm permissões associadas entre si; conseqüente-
mente, alguns deles não podem ser acessados pelo usuário normal;
• O DOS, ao contrário, permite que você apague todo o conteúdo de seu dis-
co rígido;
• Há um usuário especial chamado "root": o administrador do sistema, com
poder total de vida e morte sobre a máquina. Se você trabalha no seu pró-
prio PC, você será root também. Trabalhar como root é perigoso: qualquer
erro pode danificar seriamente ou mesmo destruir o sistema, como no
DOS/Win. Não trabalhe como root a menos que seja absolutamente neces-
sário;
• Grande parte da complexidade do Linux deve-se à sua extrema configura-
bilidade: virtualmente todo recurso e todo aplicativo pode ser personaliza-
do através de um ou mais arquivos de configuração. Complexidade é o
preço a pagar pelo poder;
• Redirecionamento e canalização são recursos adicionais no DOS, mas mui-
to importantes e muito mais poderosos no Linux. Comandos simples po-
dem ser juntados para realizar tarefas complexas. Eu sugiro fortemente que
você aprenda a usá-los.
Linux para Usuários DOS/Windows 167

Conseguindo Ajuda
Há várias maneiras de se conseguir ajuda no Linux. As mais importantes são:
Ler a documentação. Isto mesmo! Embora este capítulo sirva como uma introdução
ao Linux, e este livro traga algumas digas e diretrizes, há vários outros livros que
você realmente deve ler.
O CD que acompanha este livro é do Console Linux 1.0. Utilize e leia a documen-
tação on-line disponível no ambiente do KDE e no site http://www.console.com.br.

Quem quiser se aprimorar mais um pouco no inglês (e isto é fundamental para


quem quer utilizar sistemas Unix) utilize as referências naquele idioma. Também
são boas.
• “Instalação do Console Linux 1.0”
http://www.console.com.br/?doc=/doc/livros/instalacao_grafica/
• “Linux Installation and Getting Started”
http://www.ibiblio.org/mdw/LDP/gs/gs.html
• “Guia do Administrador de Redes”
http://www.console.com.br/?doc=/doc/livros/gar/gar.html
• “Guia do Administrador de Sistemas”
http://www.console.com.br/?doc=/doc/livros/gar/gas.html
• “Guia do Servidor Linux”
http://www.console.com.br/?doc=/doc/livros/gs/gs.html
• “Linux Total”
http://www.console.com.br/?doc=/doc/livros/total/linuxtotal.html

Sinta-se com a consciência pesada até que você tenha lido pelo menos um deles.

A documentação dos pacotes instalados na máquina é normalmente encontrada nos


subdiretórios sob /usr/doc/.
Para obter ajuda sobre os "comandos internos" do shell, digite help ou, ainda me-
lhor, man bash ou info bash.
Para obter ajuda sobre um comando, digite man comando, que chamará a página
de manual ("man") pertinente ao comando. Alternativamente, digite info comando,
que chamará (se houver) a página info pertinente ao comando. Info é um sistema
de documentação em hipertexto, talvez não muito intuitivo de início. Finalmente,
você pode tentar o comando apropos ou whatis. Com todos esses comandos, pres-
sione ‘q’ para sair.
168 Linux: Sistema Operacional II

Convenções
Ao longo desta capítulo, os exemplos normalmente seguirão o seguinte formato: < ... > é
um argumento obrigatório, ao passo que [...] é um argumento opcional. Exemplo:
$ tar -tf <arquivo.tar> [> arquivo_redir]
arquivo.tar deve ser indicado , mas o redirecionamento para arquivo_redir é opcional.
LPM significa “por favor Leia as Páginas de Manual para mais informações”.

Quando o prompt de um exemplo de comando for ‘#’, o comando pode ser execu-
tado apenas pelo root.

Está impaciente para começar?


Quer começar? Dê uma olhada nesta tabelinha:
DOS Linux Observações
ATTRIB (+-)atrib file chmod <modo> arquivo Completamente diferente
BACKUP tar -Mcvf device dir/ Idem
CD nomedir\ cd nomedir/ Quase a mesma sintaxe
COPY arq1 arq2 cp arq1 arq2 Idem
DEL arq rm arq Cuidado – não há undelete
DELTREE nomedir rm -R nomedir/ Idem
DIR ls Sintaxe um pouco diferente
DIR arq /S find . -name arq Completamente diferente
EDIT arq vi arq Acho que você não vai gostar
jstar arq Parecido com o EDIT do DOS
FORMAT fdformat , mount, umount Sintaxe bem diferente
HELP comando man comando, info comando Mesma filosofia
MD nomedir mkdir nomedir/ Quase a mesma sintaxe
MOVE arq1 arq2 mv arq1 arq2 Idem
NUL /dev/null Idem
PRINT arq lpr arq Idem
PRN /dev/lp0, /dev/lp1 Idem
RD nomedir rmdir nomedir/ Quase a mesma sintaxe
REN arq1 arq2 mv arq1 arq2 Não funciona p/ múltiplos arqs
RESTORE tar –Mxpvf device Sintaxe diferente
TYPE arq less arq Muito melhor
WIN startx Da água para o vinho

Se uma tabela de comandos não é suficiente para você, continue lendo.


Linux para Usuários DOS/Windows 169

Arquivos e Programas
O Linux tem uma estrutura de diretórios e arquivos similar ao DOS/Win. Arquivos
têm nomes-de-arquivo que obedecem a regras especiais, são gravados em diretó-
rios, alguns são executáveis, e a maioria destes tem opções de linha de comando.
Além disso, você pode usar caracteres curinga, redirecionamento e canalização.

Há apenas algumas pequenas diferenças:

• Sob o DOS, os nomes-de-arquivo têm o formato chamado 8.3; por


exemplo, INSUFICI.TXT. No Linux, podemos fazer de um jeito melhor.
Se você instalou o Linux usando um sistema de arquivos como o ext2 ou
umsdos, você pode usar nomes-de-arquivo mais longos (até 255
caracteres), e com mais de um ponto.

Por exemplo: este_eh.um.nome_de_arquivo.MUITO.longo.

Observe que foram usados tanto caracteres maiúsculos como minúsculos: de fato...

• Letras maiúsculas e minúsculas em nomes-de-arquivo e comandos são di-


ferentes. Portanto, NOMEARQ.tar.gz e nomearq.tar.gz são dois arquivos
diferentes, assim como ls é um comando, LS é um erro;

Usuários de Windows 9X: cuidado ao usar nomes-de-arquivo longos no Linux.

Se um nome-de-arquivo contiver espaços (não recomendado, mas possível), você


deve incluir o nome-de-arquivo entre aspas duplas sempre que fizer referência a
ele. Por exemplo:

O seguinte comando cria um diretório chamado "Meus arquivos antigos":


[Garcia@Console Garcia]$ mkdir "Meus arquivos antigos"
[Garcia@Console Garcia]$ ls
Meus arquivos antigos diretorio parms
[Garcia@Console Garcia]$

Além disso, certos caracteres não devem ser usados: alguns deles são !*$&.

Não há extensões obrigatórias, como .COM e .EXE para programas, ou .BAT para
arquivos de lote. Arquivos executáveis são marcados com um asterisco `*` ao final
do nome quando você executa o comando ls -F. Por exemplo:
170 Linux: Sistema Operacional II

[Garcia@Console Garcia]$ ls -F
Meus arquivos antigos/ diretorio/ parms*
[Garcia@Console Garcia]$

O arquivo parms* é executável, isto é, "programa". No DOS, nomes de arquivos de


backup terminam em .BAK, enquanto no Linux terminam com um til (~). Além
disso, um arquivo cujo nome comece com um ponto é considerado oculto. Exem-
plo: o arquivo .Eu.sou.um.arquivo.oculto não aparece na saída de um comando ls;

Opções de programas são obtidas através de /opção no DOS; no Linux se usa


-opção. Por exemplo: dir /s vira ls -R. Note que muitos programas DOS, como
PKZIP e ARJ, usam opções ao estilo UNIX.

Se você quiser, pode pular para Traduzindo DOS para o Linux, mas, se eu fosse
você, continuaria lendo.

Links Simbólicos
O UNIX tem um tipo de arquivo que não existe no DOS: o link simbólico. Isto po-
de ser considerado como um ponteiro para um arquivo ou diretório, e pode ser usa-
do ao invés do arquivo para o qual aponta; é similar aos atalhos do Windows 9X.
Exemplos de links simbólicos são /usr/X11, que aponta para /usr/X11R6;
/dev/modem, que aponta para /dev/cua0 or /dev/cua1.

Para fazer um link simbólico:


$ ln -s <arq_ou_dir> <nomedolink>

Por exemplo:
$ ln -s /usr/doc/g77/DOC g77manual.txt

Agora você pode se referir a g77manual.txt ao invés de /usr/doc/g77/DOC. Os


links aparecem assim em listagens de diretório:
$ ls -F
g77manual.txt@
$ ls -l
(várias coisas...) g77manual.txt -> /usr/doc/g77/DOC.p /
Linux para Usuários DOS/Windows 171

Permissões e Propriedade
No DOS, arquivos e diretórios têm os seguintes atributos: A (arquivo), H (oculto),
R (somente-para-leitura), e S (sistema).

Somente H e R fazem sentido no Linux: arquivos ocultos começam com um ponto,


e quanto ao atributo R, siga em frente.

No Unix, cada arquivo tem "permissões" e um dono, que por sua vez pertence a um
"grupo". Veja este exemplo:
$ ls -l /bin/ls
-rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls*

O primeiro campo contém as permissões do arquivo /bin/ls , que pertence a root,


grupo bin. Deixando as informações restantes de lado, lembre-se que -rwxr-xr-x
significa, da esquerda para a direita:
- é o tipo de arquivo (- = arquivo normal, d = diretório, l = link, etc);
- rwx são as permissões para o dono do arquivo ("read, write, execute", i.e.,
"leitura, gravação, execução");
- r-x são as permissões para o grupo do dono do arquivo (leitura, execução);
(já explicado anteriormente neste livro);
- r-x são as permissões para todos os outros usuários (leitura, execução).

O diretório /bin tem permissões também. É por isso que você não pode apagar o
arquivo /bin/ls, a menos que seja root: você não tem permissão para isso. Para mu-
dar as permissões de um arquivo, o comando é:
$ chmod <quemXperm> <arquivo>

Onde quem é:
u (usuário, i.e., dono),
g (grupo),
o (outros),

X é:
+ ou -,
172 Linux: Sistema Operacional II

perm é:
r (leitura),
w (gravação),
x (execução).

Alguns exemplos do uso de chmod:

$ chmod +x arquivo
Isto define a permissão de execução do arquivo.

$ chmod go-rw arquivo


Isto remove as permissões de leitura e gravação para todos, exceto o dono.

$ chmod ugo+rwx arquivo


Isto dá permissão de leitura, gravação e execução para todos.

# chmod +s arquivo
Isso faz um arquivo chamado "setuid" ou "suid"- um arquivo que todos podem e-
xecutar com os privilégios do dono. Normalmente, você encontrará arquivos setuid
root; freqüentemente, são programas importantes do sistema, como o servidor X.

Uma maneira mais curta de se referir a permissões é com dígitos: rwxr-xr-x pode
ser expresso como 755 (cada letra corresponde a um bit: _- é 0,_x é 1,-w- é 2, -wx
é 3...). Parece difícil, mas com um pouco de prática você entenderá a idéia.

Root, sendo o superusuário, pode mudar as permissões de qualquer arquivo. LPM.

Traduzindo DOS para o Linux

À esquerda, os comandos do DOS; à direita, sua contrapartida no Linux.


ATTRIB: chmod
COPY: cp
DEL: rm
MOVE: mv
REN: mv
TYPE: more, less, cat
Redir: < > >>
Linux para Usuários DOS/Windows 173

Curingas: *?
nul: /dev/null
prn, lpt1: /dev/lp0 ou /dev/lp1; lpr.p /

Exemplos
C:\ >ATTRIB +R ARQUIVO.TXT $ chmod 400 arquivo.txt
C:\ >COPY JOE.TXT JOE.DOC $ cp joe.txt joe.doc
C:\ >COPY *.* TOTAL $ cat * > total
C:\ >COPY FRACTALS.DOC PRN $ lpr fractals.doc
C:\ >DEL TEMP $ rm temp
C:\ >DEL *.BAK $ rm *~
C:\ >MOVE PAPER.TXT TMP \ $ mv paper.txt tmp/
C:\ >REN PAPER.TXT PAPER.ASC $ mv paper.txt paper.asc
C:\ >PRINT LETTER.TXT $ lpr letter.txt
C:\ >TYPE LETTER.TXT $ more letter.txt
C:\ >TYPE LETTER.TXT $ less letter.txt
C:\ >TYPE LETTER.TXT > NUL $ cat letter.txt > /dev/null
n/a $ more *.txt *.asc
n/a $ cat section*.txt | less

Observações:

• O * é mais inteligente no Linux: * corresponde a todos os arquivos, exceto


os ocultos;
• .* corresponde a todos os arquivos ocultos (mas também ao diretório atual
(ponto) ‘.’ e ao diretório pai (ponto ponto) ‘..’: cuidado!);
• *.* corresponde apenas aos arquivos que tenham um '.' no meio ou termi-
nem com um ponto;
• p*r corresponde tanto a ‘peter’ como a ‘piper’;
• *c* corresponde a ‘picked’ e ‘peck’;
• Quando usar more, pressione < SPACE > para continuar lendo o arquivo e
‘q’ para sair.
• O less é mais intuitivo, e permite que você use as teclas de seta;
• Não há UNDELETE, então pense duas vezes antes de apagar algo;
• Além de < > >> , o Linux tem 2> para redirecionar mensagens de erro
(stderr); além disso, 2> &1 redireciona stderr para stdout (saída padrão),
enquanto 1 > &2 redireciona stdout para stderr;
174 Linux: Sistema Operacional II

• O Linux tem outro curinga: []. Uso: [abc]* corresponde a arquivos que
comecem com a, b, c; *[I-N1-3] corresponde a arquivos que terminem com
I, J, K, L, M, N, 1, 2, 3;
• O lpr < arquivo > imprime um arquivo em segundo plano. Para verificar o
estado da fila de impressão, use lpq; para remover um arquivo da fila de
impressão, use lprm;
• Use cp -i e mv -i para ser avisado antes que um arquivo seja sobrescrito.
• Não há RENAME como no DOS; isto é, mv *.xxx *.yyy não funciona.
Você pode tentar este simples script; consulte a Seção para mais detalhes.

#!/bin/sh
# ren: renomeia múltiplos arquivos de acordo com várias regras
if [ $# -lt 3 ] ; then
echo "uso: ren \"padrão\" \"substituição\" arq..."
exit 1
fi
VELHO=$1 ; NOVO=$2 ; shift ; shift
for arquivo in $*
do
novo=`echo ${arquivo} | sed s/${VELHO}/${NOVO}/g`
mv ${arquivo} $novo
done

Cuidado! Este script não se comporta como o REN do DOS, pois usa "expres-
sões regulares", que você provavelmente ainda não conhece (a menos que tenha
lido sobre expressões regulares no Capítulo 6 deste livro). Resumidamente, se
você quiser simplesmente mudar extensões de arquivos, faça como:
ren "htm$html"*htm. Não se esqueça do $.

Executando Programas: Multitarefa e Sessões

Para executar um programa, digite seu nome, como faria no DOS. Se o diretório
onde o programa está armazenado estiver incluso no PATH, o programa será inic i-
ado. Exceção: diferentemente do DOS, no Linux um programa localizado no dire-
tório atual não é executado a menos que seu diretório seja incluído no PATH. Para
contornar isto sendo prog o seu programa, digite ./prog.

A linha de comando típica é parecida com essa:


$ comando [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< entrada] [> saída].p /
Linux para Usuários DOS/Windows 175

Onde:
-s1, ..., -sn são as opções do programa,
par1, ..., parn são os parâmetros do programa.

Você pode dar vários comandos na mesma linha de comando:


$ comando_1 ; comando_2 ; ... ; comando_n

Isto é tudo que há sobre executar programas, mas é fácil ir um passo à frente.

Um dos principais motivos para usar Linux é que é um sistema operacional mult i-
tarefa podendo executar vários programas (daqui em diante, processos) ao mesmo
tempo. Você pode lançar processos em segundo plano e continuar trabalhando
tranqüilamente. Além disso, o Linux permite que você abra várias sessões: é como
ter vários computadores para trabalhar ao mesmo tempo.

• Para alternar entre as sessões 1..6 nos consoles virtuais (v.c.), pressione <
ALT-F1 > ... < ALT-F6 >
• Para iniciar uma nova sessão no mesmo v.c. sem fechar a atual, digite su –
< nomedelogin >. Exemplo: su – root. Isto é útil, por exemplo, quando vo-
cê precisa fazer algo que só o root pode fazer.
• Para terminar uma sessão, digite exit. Se houver jobs interrompidos, você
será avisado.
• Para lançar um processo em segundo plano, adicione um '&' ao fim da li-
nha de comando:
$ nomeprog [-opções] [parâmetros] [< entrada] [> saída] &
[1] 123

• O shell identifica o processo a um número de job (p.ex. [1]; veja abaixo), e


a um PID (Process Identification Number, ou Número de Identificação de
Processo; 123 no nosso exemplo).
• Para ver quantos processos existem atualmente, digite ps -ax. A saída será
uma lista dos processos sendo executados.
• Para matar um processo, digite kill < PID > . Você pode precisar matar um
processo quando você não souber como terminá-lo da maneira correta. A
menos que você seja root, você não pode matar processos de outros usuá-
rios.
• Às vezes, um processo somente pode ser morto através de kill -SIGKILL
< PID > . Além disso, o shell permite que você termine ou suspenda tem-
porariamente um processo, envie um processo ao segundo plano, e traga
176 Linux: Sistema Operacional II

um processo do segundo para o primeiro plano. Nesse contexto, processos


são chamados "jobs".
• Para ver quantos jobs existem, digite jobs. Aqui os jobs são identificados
pelos seus números de job, não pelos seus PIDs.
• Para terminar um processo executando em primeiro plano, pressione
< CTRL-C > (não é sempre que funciona).
• Para suspender um processo executando em primeiro plano, pressione
< CTRL-Z > (idem).
• Para mandar um processo suspenso para o segundo plano, digite bg < job >
(ele se torna um job).
• Para trazer um job ao primeiro plano, digite fg < job > . Para trazer o últ i-
mo job que foi enviado ao segundo plano, digite simplesmente fg.
• Para matar um job, digite kill < %job > onde < job > pode ser 1, 2, 3,...
• Usando esses comandos você pode formatar um disco, zipar um conjunto
de arquivos, compilar um programa e descompactar um arquivo, tudo ao
mesmo tempo, e ainda ter o prompt à sua disposição. Tente isso no DOS! E
tente no Windows, apenas para ver a diferença de desempenho (se não tra-
var, é claro).

Executando Programas em Computadores


Remotos
Para executar um programa em uma máquina remota cujo endereço IP seja
maquina.remota.edu, digite:
$ telnet maquina.remota.edu

• Depois de logar, inicie seu programa favorito. Desnecessário dizer que vo-
cê deve ter uma conta shell na máquina remota.
• Se você tiver X11, você pode até mesmo executar uma aplicativo X no
computador remoto, exibindo-o na tela do seu X. Seja maquina.remota.edu
o computador remoto e local.linux.box sua máquina Linux. Para executar a
partir de local.linux.box um programa X que resida em
remote.machine.edu, faça o seguinte:
• Execute o X11, inicie um xterm ou um emulador de terminal equivalente, e
digite:
$ xhost +maquina.remota.edu
$ telnet maquina.remota.edu
Linux para Usuários DOS/Windows 177

Depois de logar, digite:


remote:$ DISPLAY=local.linux.box:0.0
remote:$ nomeprog &

• Ao invés de DISPLAY..., pode ser que você tenha que digitar: setenv
DISPLAY local.linux.box:0.0. Depende do seu shell remoto.
• E voilà! Agora nomeprog rodará em maquina.remota.edu e será exibido na
sua máquina. Entretanto, não tente isto usando um modem, pois será lento
demais para ser usável.

Usando Diretórios
Nós vimos as diferenças entre arquivos no DOS e no Linux. Quanto aos diretórios,
no DOS o raiz é n, e no Linux é /. Analogamente, diretórios aninhados são separa-
dos por n no DOS, e por / no Linux. Exemplos de caminhos (paths):
DOS: C:\PAPERS\ GEOLOGY\MID_EOC.TEX
Linux: /home/guido/papers/geology/middle_eocene.tex

Como de costume, .. é o diretório pai e . é o diretório atual.

Lembre-se que o sistema não permite que você faça cd, rd, ou md para onde quiser.
Cada usuário começa no seu diretório, chamado "home", dado pelo administrador
do sistema.

Por exemplo, no meu PC, meu diretório home é /home/Garcia.

Diretórios também têm permissões. O que foi visto em Permissões e Propriedade


também se aplica a diretórios (usuário, grupo e outros). Para um diretório, rx signi-
fica que você pode dar cd para esse diretório, e w significa que você pode apagar
um arquivo nesse diretório (de acordo com as permissões do arquivo, é claro), ou o
próprio diretório.

Por exemplo, para evitar que outros usuários mexam em /home/Garcia/text:


$ chmod o-rwx /home/Garcia/text

Traduzindo DOS para o Linux – diretórios


DIR: ls, find, du
CD: cd, pwd
178 Linux: Sistema Operacional II

MD: mkdir
RD: rmdir
DELTREE: rm -R
MOVE: mv

Exemplos:
C:\ >DIR $ ls
C:\ >DIR ARQUIVO.TXT $ ls arquivo.txt
C:\ >DIR *.H *.C $ ls *.h *.c
C:\ >DIR/P $ ls | more
C:\ >DIR/A $ ls -l
C:\ >DIR *.TMP /S $ find / -name "*.tmp"
C:\ >CD $ pwd
n/a – veja observação $ cd
idem $ cd ~
idem $ cd ~/temp
C:\ >CD \OUTRO $ cd /outro
C:\ >CD ..\TEMP \LIXO $ cd ../temp/lixo
C:\ >MD NEWPROGS $ mkdir newprogs
C:\ >MOVE PROG .. $ mv prog ..
C:\ >MD \PROGS\TURBO $ mkdir /progs/turbo
C:\ >DELTREE TEMP \LIXO $ rm -R temp/lixo
C:\ >RD NEWPROGS $ rmdir newprogs
C:\ >RD \PROGS\TURBO $ rmdir /progs/turbo.p /

Observações:

• Para usar rmdir, o diretório a ser removido deve estar vazio.


• Para apagar um diretório e todo o seu conteúdo, use rm -R (por sua própria
conta e risco).
• O caractere '~' é um atalho para o nome do seu diretório. Os comandos cd
ou cd ~ mudam para o seu diretório home; o comando cd ~/tmp muda o di-
retório para /home/seu_home/tmp.
• cd – "desfaz"o último cd.
Linux para Usuários DOS/Windows 179

Disquetes, Discos Rígidos e outras mídias


Há duas maneiras de se gerenciar dispositivos no Linux: a maneira do DOS e a do
UNIX.

À Maneira do DOS: A maioria das distribuições do Linux inclui o pacote Mtools,


um conjunto de comandos que são equivalentes às suas contrapartidas do DOS,
mas começam com ‘m’. Por exemplo: mformat, mdir, mdel, mmd, e assim por di-
ante. Eles até preservam nomes-de-arquivos longos, mas não as permissões de
arquivos. Se você configurar Mtools, editando um arquivo chamado
/etc/mtools.conf (um exemplo é fornecido com o pacote), poderá também acessar a
partição DOS/Win, o CD-ROM e o Zip drive.

Entretanto, o comando mformat não funciona para formatar um disquete novo


(nunca formatado). Antes, você terá que rodar o seguinte comando, como root:
# fdformat /dev/fd0H1440

Nota: Você não pode acessar arquivos no disquete com um comando como, di-
gamos, less a:arquivo.txt! Esta é a desvantagem da maneira DOS de montar
disquetes.

À Maneira UNIX lida com dispositivos de uma forma diferente do DOS/Win. Não
há volumes separados como A: ou C:; um disco, seja um disquete ou o que quer
que seja, se torna parte do sistema de arquivos local através de uma operação cha-
mada "montagem". Quando você terminar de usar o disco, você precisa "desmontá-
lo"antes de ejetá-lo.

Formatar um disco fisicamente é uma coisa, fazer um sistema de arquivos nele é


outra. O comando FORMAT A: do DOS faz ambas as coisas, mas no Linux há
comandos separados. Para formatar um disquete, veja o exemplo anterior; para cri-
ar um sistema de arquivos:
# mkfs -t ext2 -c /dev/fd0H1440

Você pode usar minix, vfat, dos ou outros formatos ao invés de ext2. Uma vez que
o disquete esteja preparado, monte-o com o comando:
# mount -t ext2 /dev/fd0 /mnt

Especificando o sistema de arquivos correto se você não for usar ext2. Agora você
pode se referir aos arquivos do disquete. Tudo o que você usava com A: ou B: ago-
ra é feito usando /mnt. Exemplos:
180 Linux: Sistema Operacional II

C:\ >DIR A: $ ls /mnt


C:\ >COPY A:*.* $ cp /mnt/* .
C:\ >COPY *.ZIP A: $ cp *.zip /mnt
C:\ >EDIT A:FILE.TXT $ jstar /mnt/file.txt
C:\ >A: $ cd /mnt
A:>_ /mnt/$ _

Quando você tiver terminado, antes de ejetar o disquete você deve desmontá-lo
com o comando
# umount /mnt

Obviamente, você precisa executar fdformat e mkfs somente em discos ainda não
formatados. Se você quiser usar o drive B: use /fd1H1440/ e fd1 ao invés de
fd0H1440 e fd0 nos exemplos anteriores.

Evidentemente, o que se aplica a disquetes se aplica a outros dispositivos. Por e-


xemplo, você pode querer montar outro disco rígido ou drive de CD-ROM. Eis
como montar o CD-ROM:
# mount -t iso9660 /dev/cdrom /mnt

Esta é a maneira "oficial" de montar seus discos, mas há um truque. Já que é um


pouco aborrecedor ter que ser root para montar um disquete ou CD-ROM, você
pode permitir que todo usuário os monte assim:

Como root, faça o seguinte:


# mkdir /mnt/a: ; mkdir /mnt/a ; mkdir /mnt/cdrom
# chmod 777 /mnt/a* /mnt/cd*
# # assegura que o dispositivo de CD-ROM está correto
# chmo d 666 /dev/hdb ; chmod 666 /dev/fd*

Adicione as seguintes linhas em /etc/fstab:


/dev/cdrom /mnt/cdrom iso9660 ro,user,noauto 0 0
/dev/fd0 /mnt/a: msdos user,noauto 0 0
/dev/fd0 /mnt/a ext2 user,noauto 0 0

Agora, para montar um disquete do DOS, um disquete com sistema de arquivos


ext2, e um CD-ROM:
$ mount /mnt/a:
Linux para Usuários DOS/Windows 181

$ mount /mnt/a
$ mount /mnt/cdrom

Agora, /mnt/a, /mnt/a:, e/mnt/cdrom podem ser acessados por todos os usuários.

Lembre-se que permitir que todos montem discos dessa maneira é um furo de se-
gurança, se você se importa.

Dois comandos úteis são df, que dá informação sobre os sistemas de arquivos mon-
tados, e du nomedir, que relata o espaço em disco ocupado pelo diretório.

Fazendo Backup
Há vários pacotes para lhe ajudar, mas o mínimo que você pode fazer para backup
multi-volume é (como root):.# tar -M -cvf /dev/fd0H1440 dir_to_backup/

Assegure-se de ter um disquete formatado no drive, e vários outros prontos. Para


restaurar suas coisas, insira o primeiro disquete no drive e faça:
# tar -M -xpvf /dev/fd0H1440

E o Windows?
O "equivalente" ao Windows é o sistema gráfico X Window System, ou X11, ou
KDE para encurtar. Ao contrário do Windows e Mac, o KDE não foi projetado pa-
ra ser fácil de usar ou ter boa aparência (apesar de não ser tão ruim assim), e sim
para fornecer recursos gráficos para estações de trabalho UNIX.
Consulte o capítulo 9 para saber mais sobre o KDE e acompanhe em
http://www.kde.org a evolução desta excelente interface gráfica.

Personalizando o Sistema – Arquivos de


Inicialização
Dois arquivos importantes no DOS são AUTOEXEC.BAT e CONFIG.SYS, que
são usados na hora do boot para inicializar o sistema, definir algumas variáveis de
ambiente como PATH e FILES, e possivelmente rodar um programa ou arquivo de
lote. No Linux há vários arquivos de inicialização, alguns dos quais seria melhor
você não mexer até que saiba exatamente o que está fazendo. De qualquer maneira,
considero que os mais importantes são:
182 Linux: Sistema Operacional II

ARQUIVOS OBSERVAÇÕES
/etc/inittab não mexa por enquanto!
/etc/rc.d/* idem

Se tudo o que você precisa é definir o $PATH e outras variáveis de ambiente, ou se


você quer mudar as mensagens de login , ou rodar um programa automaticamente
após o login, dê uma olhada nos seguintes arquivos:
ARQUIVOS OBSERVAÇÕES
/etc/issue define a mensagem pré-login
/etc/motd define a mensagem pós-login
/etc/profile define $PATH e outras variáveis, etc.
/etc/bashrc define apelidos e funções, etc.
/home/your_home/.bashrc define os seus apelidos e funções
/home/your_home/.bash _profile define ambiente e inicia seus programas
/home/your_home/.profile idem

Se o último arquivo listado existir (observe que é um arquivo oculto), será lido de-
pois do login e os comandos contidos nele serão executados.

Exemplo veja este .bash_profile :


# Isto é um comentário
echo Ambiente:
printenv | less # equivalente ao comando SET do DOS
alias d='ls -l' # é fácil entender o que é um apelido
alias up='cd ..'.p /
echo "Lembre-se que o path é "$PATH
echo "Hoje é `date`" # usa a saída do comando 'date'
echo "Tenha um bom dia, "$LOGNAME
# O que segue é uma "função de shell"
ctgz() # Lista o conteúdo de um arquivo .tar.gz
{
for file in $*
do
gzip -dc ${file} | tar tf -
done
}
# fim de .profile
Linux para Usuários DOS/Windows 183

$PATH e $LOGNAME, são variáveis de ambiente. Há muitas outras que podem


ser alteradas; por exemplo, para programas como less ou bash, LPM.

Arquivos de Inicialização de Programas


Sob o Linux, virtualmente tudo pode ser personalizado de acordo com suas neces-
sidades. A maioria dos programas tem um ou mais arquivos de inicialização nos
quais você pode mexer, normalmente chamados .nomedoprogramarc e localiza-
dos no seu diretório home. Os primeiros que você vai querer modificar são:
• .inputrc: usado por bash para definir associações de teclas;
• .xinitrc: usado por startx para inicializar o X Window System;
• .fvwmrc: usado pelo gerenciador de janelas fvwm;
• .joerc: usado pelo editor joe;
• .jedrc: usado pelo editor jed;
• .pinerc: usado pelo leitor de mail pine;
• .Xdefault: usado por vários programas X.

Para todos esses, e os outros que você encontrará uma hora ou outra, LPM. Como
uma observação final, sugiro que você veja:
• Configuration HOWTO
http://sunsite.unc.edu/mdw/HOWTO/Config-HOWTO.html

Um pouco de programação
Um Shell Scripts é um arquivo .BAT com esteróides.

Se você usava arquivos .BAT para criar atalhos para longas linhas de comando (eu
usei muito), pode fazer isso inserindo linhas de apelido apropriadas (veja exemplo
anterior) em profile ou .profile. Mas, se seus .BATs eram mais complicados, você
vai adorar a linguagem de script do shell: é tão poderosa quanto QBasic. Tem vari-
áveis, estruturas como while, for, case, if... then... else, e vários outros recursos:
pode ser uma boa alternativa a uma linguagem de programação "de verdade".
Para escrever um script – o equivalente a um arquivo .BAT no DOS – tudo o que
você tem a fazer é escrever um arquivo ASCII contendo as instruções, gravá -lo, e
torná-lo executável com o comando chmod +x scriptfile. Para executá-lo, digite o
nome do arquivo.
184 Linux: Sistema Operacional II

Nota: O editor do sistema Unix chama-se vi, e na minha experiência a maioria dos
novos usuários acha-o muito difícil de usar. Veja referência básica do vi no Capí-
tulo 6 deste livro. Um bom editor para iniciantes é o pico. Veja no Capítulo 3.

Escrever scripts do bash é um assunto tão vasto que preencheria um livro, e não me
aprofundarei mais nesse tópico. Só darei um exemplo de script de shell, do qual
você poderá extrair algumas regras básicas:
#!/bin/sh
# sample.sh
# Isto é um comentário /
# não mude a primeira linha, ela precisa estar lá
echo "O sistema é: `uname -a`" # usa a saída do comando
echo "Meu nome é $0" # variáveis embutidas
echo "Você me deu os seguintes $# parâmetros: "$*
echo "O primeiro parâmetro: "$1
echo -n "Como você se chama? " ; read seu_nome
echo note a diferença: "oi $your_name" # quotando com "
echo note a diferença: 'oi $your_name' # quotando com '
DIRS=0 ; ARQS=0
for arquivo in `ls .` ; do
if [ -d ${arquivo} ] ; then # se arquivo for um diretório
DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1
elif [ -f ${arquivo} ] ; then
ARQS=`expr $ARQS + 1`
fi
case ${arquivo} in
*.gif|*jpg) echo "${arquivo}: arquivo gráfico" ;;
*.txt|*.tex) echo "${arquivo}: arquivo texto" ;;
*.c|*.f|*.for) echo "${arquivo}: arquivo fonte" ;;
*) echo "${arquivo}: arquivo genérico" ;;
esac
done
echo "há ${DIRS} diretórios e ${ARQS} arquivos"
ls | grep "ZxY--!!!WKW"
if [ $? != 0 ] ; then # código de saída do último comando
echo "ZxY--!!!WKW não encontrado"
Linux para Usuários DOS/Windows 185

fi
echo "pront... digite 'man bash' se você \
quiser mais informações."

C
No UNIX, a linguagem do sistema é C, quer queira, quer não. Muitas outras lin-
guagens (Java, FORTRAN, Pascal, Lisp, Basic, Perl, COBOL, awk...) também es-
tão disponíveis.

Pressupondo que você conheça C, aqui estão algumas diretrizes para você que for
"estragado" pelo Turbo C++ ou algum outro do DOS. O compilador C do Linux se
chama gcc, e não tem todas aquelas "frescuras"que normalmente acompanham suas
contrapartidas do DOS: não há IDE (ambiente integrado de desenvolvimento), aju-
da on-line, depurador integrado, etc. É apenas um seco compilador de linha de co-
mando, muito poderoso e eficiente. Para compilar seu hello.c padrão, você deve
digitar:
$ gcc hello.c

Isto criará um arquivo executável chamado a.out. Para dar um nome diferente ao
executável, faça:
$ gcc -o hola hello.c

Para linkar uma biblioteca ao programa, adicione a opção -l <libname> . Por e-


xemplo, para linkar a biblioteca matemática:
$ gcc -o progmat progmat.c -lm

(A opção -l <libname> força o gcc a linkar a biblioteca /usr/lib/lib<libname>.a;


então -lm linka /usr/lib/libm.a).

Até aqui, tudo bem. Mas, se seu programa for composto de vários arquivos fontes,
você terá que usar o utilitário make. Suponha que você tenha escrito um analisador
de expressões: seu arquivo fonte se chama parser.c e #inclui dois arquivos header,
parser.h e xy.h. Depois você quer usar rotinas de parser.c em um programa, diga-
mos, calc.c, que por sua vez #inclui parser.h. Que bagunça! O que você tem que
fazer para compilar calc.c?

Você terá que escrever um arquivo chamado makefile, que diz ao compilador quais
as dependências entre os arquivos fontes e objetos. No nosso exemplo:
186 Linux: Sistema Operacional II

# Isto é um makefile, usado para compilar calc.c


# Pressione a tecla <TAB> onde indicado!
calc: calc.o parser.o
<TAB>gcc -o calc calc.o parser.o -lm
# calc depende de dois arquivos objeto: calc.o e parser.o
calc.o: calc.c parser.h.p /
<TAB>gcc -c calc.c
# calc.o depende de dois arquivos fonte
parser.o: parser.c parser.h xy.h
<TAB>gcc -c parser.c
# parser.o depende de três arquivos fonte
# fim do makefile.

Salve este arquivo como Makefile e digite make para compilar seu programa; ou sal-
ve como calc.mak, digite make -f calc.mak e, é claro, LPM. Você pode conseguir
ajuda sobre funções C, que são cobertas pelas páginas de manual. Por exe mplo:
$ man printf

Para depurar seus programas, use gdb. info gdb para aprender a usá-lo. Há várias
bibliotecas disponíveis; entre as primeiras que você vai querer usar estão ncurses,
para lidar com modo texto, e svgalib, para modo gráfico. Se você se sentir corajoso
o suficiente para abordar programação em X11, há bibliotecas como XForms, Qt,
Gtk e muitas outras, que tornam a programação em X11 uma moleza. Dê uma o-
lhada em http://www.xnet.com/~blatura/linapp6.html.

Muitos editores podem funcionar como um IDE; emacs e jed, por exemplo,
também permitem coloração por sintaxe, indentação automática e assim por
diante. Alternativamente, pegue o pacote rhide de
ftp://sunsite.unc.edu/pub/Linux/devel/debuggers/. É um clone do IDE Borland, e é
provável que você goste.

O (1%) Restante
Mais que 1%, na verdade....

Usando tar & gzip


No UNIX há alguns programas amplamente usados para arquivar e compactar ar-
quivos.
Linux para Usuários DOS/Windows 187

tar é usado para fazer “pacotes”; é como PKZIP mas ele não compacta, apenas em-
pacota. Para fazer um novo pacote:
$ tar -cvf <nome_do_pacote.tar> <file> [file...]

Para extrair arquivos de um pacote:


$ tar -xpvf <nome_do_pacote.tar> [file...]

Para listar o conteúdo de um pacote:


$ tar -tf <nome_do_pacote.tar> | less

Você pode compactar arquivos usando compress, que é obsoleto e não deve ser
mais usado, ou gzip:
$ compress <file>
$ gzip <file>

gzip cria um arquivo compactado com extensão (compress) ou .gz (gzip). Esses
programas compactam apenas um arquivo de cada vez. Para descompactar, use:
$ compress -d <file.Z>
$ gzip -d <file.gz>
LPM.

Também há os utilitários unarj, zip e unzip (compatível com PK??ZIP). Arquivos


com extensão .tar.gz ou .tgz (empacotado com tar, depois compactados com gzip)
são tão comuns no mundo UNIX como arquivos .ZIP no DOS. Aqui está como
listar o conteúdo de um archive .tar.gz:
$ tar -ztf <arquivo.tar.gz> | less.p /

Instalando Aplicativos
Primeiro, instalar pacotes é trabalho do root. A maioria dos aplicativos do Linux são
distribuídos como um archive .tar.gz, ou pacotes RPM que normalmente contêm um
diretório chamado /nomedopacote/ contendo arquivos e/ou subdiretórios. Uma boa
regra é instalar esses pacotes a partir do diretório /usr/local com o comando
# tar -zxf <archive.tar.gz>

e depois ler o arquivo README ou INSTALL. Em muitos casos, o pacote é distri-


buído em fonte, que você terá que compilar para criar os binários; freqüentemente,
188 Linux: Sistema Operacional II

bastará digitar make e depois make install. Obviamente, você precisará do compi-
lador gcc ou g++.
Outros pacotes devem ser descompactados a partir de /; é o caso dos arquivos .tgz
do Slackware. Outros arquivos contêm os arquivos, mas não um subdiretório.

Sempre liste o conteúdo do pacote antes de instalar.


As distribuições Debian e Red Hat têm seu próprio formato de pacotes; respecti-
vamente, .deb e .rpm. Este está ganhando ampla aceitação. Para instalar um pacote
.rpm, digite:
# rpm -i pacote.rpm
LPM

Dicas Indispensáveis
Completamento de comando: pressionar < TAB > quando da emissão de um co-
mando, completará a linha para você. Exemplo: se você quer executar gcc es-
te_e_um_nome_longo.c;, basta digitar gcc est < TAB > . (Se você tiver outros ar-
quivos que comecem com os mesmos caracteres, forneça caracteres suficientes pa-
ra resolver qualquer ambigüidade.)
Rolagem de tela: pressionar <SHIFT + PAG UP> lhe permite rolar a tela algumas
páginas para trás, dependendo de quanta memória de vídeo você tiver.

Inicializando a tela: se acontecer de você executar more ou cat em um arquivo bi-


nário, sua tela pode ficar cheia de lixo. Para consertar, digite reset, ou esta seqüên-
cia de caracteres:
echo CTRL-V ESC c RETURN.

Colando texto: no console, veja adiante; no X, clique e arraste para selecionar o


texto um janela xterm, e depois clique o botão do meio (ou os dois botões juntos se
você tiver um mouse de dois botões) para colar. Há também o xclipboard (aliás,
somente para texto); não se confunda pela demora da resposta.
Usando o mouse: se você instalou o gpm, um driver de mouse para o console, você
pode clicar e arrastar para selecionar texto, e depois clicar para colar o texto sele-
cionado. Funciona de um VC ("virtual console") para outro.
Mensagens do kernel: dê uma olhada em /var/adm/messages ou /var/log/messages
como root para ver o que o kernel tem a lhe dizer, incluindo mensagens de boot. O
comando dmesg também é útil.
Linux para Usuários DOS/Windows 189

Onde Encontrar Aplicativos


Se você está pensando se existem aplicativos para substituir os seus antigos do
DOS/Win, eu sugiro que você consulte os principais repositórios de software para
Linux:
ftp://sunsite.unc.edu/pub/Linux/!INDEX.html
ftp://tsx-11.mit.edu/pub/linux/
ftp://ftp.funet.fi/pub/Linux/

Outro excelente lugar é a "Linux Applications and UtilitiesPage" em


http://home.xnet.com/~blatura/linapps.shtml.

Algumas Coisas que Você não Conseguia Fazer


O Linux pode fazer um monte de coisas que eram chatas, difíceis ou impossíveis
de se fazer no DOS/Win. Aqui está uma pequena lista que pode aguçar seu apetite:
• at permite rodar programas em uma hora determinada;
• awk é uma linguagem, simples mas poderosa, para manipular arquivos de
dados (e mais). Por exemplo, sendo data.dat seu arquivo de dados multi-
campos,
$ awk '$2 ~ "abc" {print $1, "\t", $4}' data.dat

imprime os campos 1 e 4 de cada linha de data.dat cujo segundo campo


contenha "abc".

• cron é útil para fazer tarefas periodicamente, em determinadas datas e horas.

Digite man 5 crontab..p /

• file < arquivo > diz o que é o arquivo (texto ASCII, executável, pacote,
etc.);
• find é um dos comandos mais poderosos e mais úteis. É usado para encon-
trar arquivos que correspondam a várias características dadas, e para de-
sempenhar ações sobre esses arquivos. O uso geral de find é:
$ find <diretório> <expressão>

onde < expressão > inclui critérios de busca e ações. Exemplos:


190 Linux: Sistema Operacional II

$ find . -type l -exec ls -l {} \;


• encontra todos os arquivos que sejam links simbólicos e mostra para o que
cada um aponta.

$ find / -name "*.old" -ok rm {} \;


• encontra todos os arquivos que correspondam ao padrão e os apaga, pedin-
do sua confirmação antes.

$ find . -perm +111


• encontra todos os arquivos cujas permissões correspondam a 111 (executá-
vel).

$ find . -user root


• encontra todos os arquivos que pertençam a root. Há várias possibilidades
aqui.

LPM
• grep encontra padrões de texto em arquivos. Por exemplo,

$ grep -l "geologia" *.tex


• lista os arquivos *.tex que contenham a palavra "geology". A variante z-
grep funciona em arquivos gzipados. LPM;
• expressões regulares são uma maneira complexa mas muito poderosa de
fazer busca em texto. Por exemplo:
• ^a[^a-m]Xf4,gtxt$ corresponde a uma linha que começa com ‘a’, seguida
por qualquer caractere exceto os que estão no intervalo a-m, seguido por 4
ou mais ‘X’, e termina com ‘txt’.
• Expressões regulares são usadas em editores avançados, less, e muitos ou-
tros programas. Digite man grep para uma introdução.
• script <arquivo_script> copia o conteúdo da tela em arquivo_script até que
você digite o comando exit. Útil para depuração;
• uname -a dá informações sobre o seu sistema;
• Os seguintes comandos freqüentemente são úteis: bc, cal, chsh, cmp, cut,
fmt, head, hexdump, nl, passwd, printf, sort, split, strings, tac, tail, tee, tou-
ch, uniq, w, wall, wc, whereis, write, xargs, znew. LPM.
Linux para Usuários DOS/Windows 191

Extensões Comuns e Programas Relacionados


Você pode se deparar com várias extensões de arquivos. Excluindo as mais exóti-
cas (i.e. fontes, etc.), aqui está uma lista de quem é o que:
• 1 ... 8: man pages. No caso improvável de você ainda não ter, pegue o man.
• arj: pacote feito com o arj.
• dvi: arquivo de saída produzido pelo T E X. xdvi para visualizá-lo; dvips
para transformá-lo em arquivo PostScript .ps.
• gz: pacote feito com gzip.
• info: arquivo info (tipo de alternativa às man pages). Pegue o info.
• lsm: arquivo do Linux Software Map. É um arquivo ASCII contendo a
descrição de um pacote.
• ps: arquivo PostScript. Para visualizá-lo ou imprimi-lo pegue gs e, opcio-
nalmente, ghostview ou gv.
• rpm: pacote Red Hat. Você pode instalá -lo em qualquer sistema usando o
gerenciador de pacotes rpm.
• taz, tar.Z: pacote feito com o tar e compactado com compress.
• tgz, tar.gz: pacote feito com o tar e compactado com gzip..p /
• tex: arquivo texto a ser submetido ao T E X, um poderoso sistema de com-
posição. Pegue o pacote tex, disponível em várias distribuições; mas cui-
dado com o NTeX, que tem fontes corrompidas e é incluído em algumas
versões do Slackware.
• texi: arquivo texinfo, que pode produzir tanto arquivos T E X como info
(qv. info). Pegue o texinfo.
• xbm, xpm, xwd: arquivo gráfico. Pegue o xpaint.
• Z: pacote feito com compress.

Convertendo Arquivos
Se você precisar intercambiar arquivos texto entre DOS/Win e Linux, cuidado com
o problema do "fim de linha". No DOS, cada linha termina com CR/LF ("carriage
return"e "line feed"), enquanto no Linux termina com LF. Se você tentar editar um
arquivo texto do DOS no Linux, cada linha provavelmente terminará com um
estranho caractere ‘M’; um texto do Linux sob o DOS aparecerá como uma única e
quilométrica linha, sem parágrafos. Há um par de ferramentas, dos2unix e
unix2dos, para converter os arquivos. Há também o todos, e o utilitário tr. Se seus
arquivos contiverem caracteres acentuados, assegure-se de que eles tenham sido
feitos no Windows (com o Write ou Notepad, digamos) e não sob o DOS; caso
contrário, todos os caracteres acentuados ficarão bagunçados.
192 Linux: Sistema Operacional II

Para converter arquivos Word ou WordPerfect para texto puro, a solução é um


pouco mais difícil, mas possível. Você precisará de uma das ferramentas que po-
dem ser encontradas nos sites CTAN; uma delas é ftp://ftp.tex.ac.uk.

Pegue o pacote word2x do diretório /pub/tex/tools/, ou tente um dos pacotes dispo-


níveis no diretório /pub/tex/support/. Eu só experimentei word2x, e funciona muito
bem.

Conclusão
Parabéns! Você aprendeu um pouquinho de UNIX e está pronto para começar a
trabalhar. Lembre-se de que seu conhecimento do sistema ainda é limitado, e que
espera-se que você pratique mais com o Linux para usá-lo confortavelmente. Mas
se tudo o que você precisa fazer é pegar uma porção de aplicativos e começar a
trabalhar neles, o que eu incluí aqui é suficiente.

Tenho certeza de que você gostará de usar Linux e continuará aprendendo mais
sobre ele – com todo mundo é assim.

Copyright
Este capítulo é uma tradução livre, atualizada e adaptada do Linux HOWTO obtido
na sunsite.unc.edu via e-mail.
O KDE foi desenvolvido exclusivamente para trabalhar em ambiente Linux e ofe-
rece ao usuário:
• Um ambiente de janelas parecido com o Windows;
• Um gerenciador de arquivos poderoso e de uso simplificado;
• Configuração simples e centralizada.

Escolhi colocar aqui um tutorial rápido sobre a versão internacional do KDE 1.1.2
por ser muito comum na maioria das distribuições (incluindo Mandrake, Conectiva,
RedHat, Console e outras) e por ser base para todas elas. Desta forma, pequenas
diferenças visuais não comprometem o entendimento das versões mais novas em
função apenas do visual e do idioma, uma vez que coloquei os comandos em inglês
e sua tradução em português, o que já ajuda também a ambientar-se com os princ i-
pais significados do inglês para o português.

Operações do mouse
O KDE foi desenvolvido para ser utilizado com o mouse, o qual move um ponteiro
pela tela. O ponteiro do mouse é utilizado para ter acesso e selecionar menus, ma-
nusear textos, mover janelas, alterar o seu tamanho, iniciar e fechar aplicações.

193
194 Linux: Sistema Operacional II

Há cinco operações básicas do mouse:


AÇÃO DO MOUSE PROCEDIMENTO
[clique] Pressione o botão esquerdo rapidamente e solte-o. Esta opção é utiliza-
da para selecionar janelas, selecionar opções e iniciar aplicações.
[clique direito] Pressione o botão direito rapidamente e solte-o. Esta opção é utilizada
para ativar menus de atalho.
[duplo clique] Pressione o botão esquerdo duas vezes rapidamente.

[arrastar] Mantenha pressionado o botão esquerdo e mova o mouse. Ao ser solto


completa-se a ação. Esta ação é utilizada para alterar o tamanho de ja-
nelas e selecionar textos.
[arrastar direito] Mantenha pressionado o botão direito ao mover o mouse. Ao ser solto
completa-se a ação.

Formatos do ponteiro
O formato do ponteiro do mouse varia dependendo da sua posição na tela e da ação
que está sendo executada. No KDE, o ponteiro do mouse pode assumir os seguintes
formatos:

FORMATO DO
NOME OBJETIVO
PONTEIRO
Ponteiro em forma de Formato padrão quando o ponteiro estiver sobre o
"X" fundo da tela do KDE. Indica que n ão existe, naquele
ponto da tela, nenhum objeto que possa ser clicado.
Ponteiro em forma de Formato padrão quando o ponteiro do mouse esti-
seta à esquerda ver dentro de uma janela. Indica, na maioria das
vezes, que existe, naquele ponto da tela, um objeto
que possa ser clicado.
Relógio "Espere". O relógio informa ao usuário que a ope-
ração selecionada pode demorar até ser completada.
Ponteiro em forma de Estando com o ponteiro sobre a barra de título de
cruz com setas uma janela e mantendo pressionado o botão esque r-
do do mouse, o ponteiro assume esta forma e indica
que a janela será movida.
Redimensionar l ados Quando o ponteiro se aproxima de uma das laterais
de uma janela, assume esta forma e indica que a
janela será redimensionada naquele lado.
Sobre o KDE 195

FORMATO DO
NOME OBJETIVO
PONTEIRO
Redimensionar cantos Quando o ponteiro se aproxima de um dos cantos
de uma janela, assume esta forma e indica que a
janela será redimensionada nos dois lados que fa-
zem parte daquele canto.
Redimensionar painéis Quando o ponteiro é posicionado sobre uma barra
separadora de painéis de uma mesma janela, assu-
me esta forma e indica que aquela barra separadora
será movida.
Ponteiro em forma de Ponto de inserção utilizado na edição de textos.
"I" [clique] em meio a um texto para colocar o ponto
de inserção na posição do ponteiro em forma de I.

Em alguns aplicativos, podem ser observados outros formatos. Aqueles aqui apre-
sentados são os mais comuns do KDE.

Iniciando uma sessão de trabalho


KDE (login)
Se a instalação do Console Linux foi feita conforme a recomendação do início do
livro, a ativação do KDE será feita de forma diferente da descrita a seguir.
Após ligar o computador, uma série de informações são exibidas indicando que o
Linux está sendo iniciado e lido para a memória. Ao final, será exibida uma tela
com o título “K Desktop Environment [localhost]”.
Para iniciar uma sessão de trabalho Linux, usando o ambiente gráfico KDE:
• Login => Clique com o mouse sobre o nome de usuário ou então digite-o;
• Password => Digite a senha. O cursor permanece parado (sigilo).
• Clique o mouse com o ponteiro posicionado sobre o primeiro botão à direi-
ta do texto “Session Type”, escolha a opção “kde ” e clique sobre o botão
“Go” ( Ir ).

Caso a senha esteja errada, será exibida, por alguns momentos, a mensagem “Login
failed”. Aguarde o desaparecimento da mensagem e tente outra vez.
Considere as orientações descritas antes caso a sua instalação seja com ativação do
login pelo ambiente gráfico KDE. Caso seu login seja no formato texto, faça o lo-
196 Linux: Sistema Operacional II

gin como root e no prompt do shell digite o comando startx e aguarde o KDE ser
carregado. Neste caso não haverá solicitação de novo login e senha.

Localizando a sessão KDE


Uma das características do Linux é permitir que se tenha até oito sessões de traba-
lho simultâneas. Cada sessão pode executar programas diferentes. Quando o KDE
é iniciado, ele “se instala” numa das oito sessões de trabalho do Linux (norma l-
mente na sessão de número 7).

Para passar para outra sessão de trabalho, mantenha pressionadas as teclas Ctrl e
Alt e pressionar a tecla F1 (vai para a sessão de número 1), ou F2, ou F3, ou F4, ou
F5, ou F6, ou ainda F8. Para retornar para o KDE, mantenha pressionadas as teclas
Ctrl e Alt e pressionar a tecla F7.

Trabalhando com vários ambientes


Aqui está um diferencial do KDE. É a facilidade de se trabalhar vários “ambientes
de trabalho” (de 2 até 8) dentro de uma mesma sessão KDE. Em cada um destes
ambientes pode-se abrir qualquer programa. Opcionalmente pode-se personalizar
cada ambiente com um fundo de tela diferenciado.

Para ir de um para outro ambiente de trabalho, clique com o mouse sobre os botões
que identificam os ambientes ou use um dos seguintes comandos:
Ctrl + Tab = Alterna entre as sessões virtuais.
Ctrl + F... (onde … é o número do ambiente de 2 a 7);
Ctrl + Esc = Abre uma janela com as sessões e tarefas ativas.

Figura 9.1

Encerrando uma sessão KDE (logout)


Antes de desligar o computador, o KDE deve ser encerrado em um processo seme-
lhante ao shutdown no modo comando. Para isto:
• Clique no botão K do Painel KDE;
• Escolha a opção Sair (Logout);
Sobre o KDE 197

• Quando solicitado, confirme o encerramento da sessão.

Figura 9.2

Finalizando o Linux (Shutdown)


Após encerrar o KDE, a tela “K Desktop Environment [localhost]” é exibida. A
partir desta tela a sessão KDE pode ser encerrada, reiniciada por outro usuário em
uma nova sessão KDE ou então preparar o computador para ser desligado.

Para desligar, clique no botão Shutdown, escolha a opção Shutdown e clique o botão
OK. Este botão inicia as rotinas de encerramento completo do Linux para que o com-
putador possa ser desligado com segurança. Após alguns instantes e várias linhas de
comando, será exibida a mensagem "Power down". Desligue o computador.

Caso o KDE tenha sido iniciado pelo comando startx, o processo de enceramento é
feito diretamente pelo prompt do shell conforme já mostrado no Capítulo 2, no i-
tem Desligando corretamente o Console Linux.

Para encerrar o KDE iniciado a partir do prompt do shell pressione as tecla Ctrl +
Alt + Backspace.

Área de Trabalho do KDE


A área de trabalho do KDE inclui todos os objetos exibidos na tela, sendo a grande
maioria deles sensível ao clique do mouse.

Os principais objetos da tela de uma interface gráfica são:


• Ícones;
• Janelas;
• Botões;
• Barras de botões;
• Barras de menus.
198 Linux: Sistema Operacional II

A figura 9.3 representa a tela inicial do KDE onde encontramos ícones e uma gran-
de barra de botões chamada painel KDE.

Figura 9.3

Ícones
São pequenas ilustrações, sensíveis ao clique do mouse, que simbolizam o coman-
do para iniciar um programa aplicativo ou utilitário. Ao invés de digitarmos uma
linha de comando para iniciar um programa, basta clicar sobre o ícone correspon-
dente. Alguns ícones são criados automaticamente quando da instalação do KDE
(ícones comuns) e outros podem ser criados pelo usuário. Existe também a possibi-
lidade de alterar a imagem exibida em um ícone.

Ícones comuns
Lixo, Modelos e Auto-Início (Trash, Templates e AutoStart). Estes ícones são con-
siderados “comuns” pelo fato de serem criados automaticamente ao final da insta-
lação do KDE.

Figura 9.4
Sobre o KDE 199

Adicionando e removendo ícones

Podem-se criar ícones para facilitar o acesso aos programas mais utilizados. Estes
ícones podem ser colocados diretamente sobre o fundo de tela do KDE ou ainda
dentro do Painel KDE.

Painel KDE
O Painel KDE é inicialmente exibido no rodapé da tela e reúne o conjunto de íco-
nes e botões mais utilizados. É possível alterar a posição do painel KDE para qual-
quer uma das quatro extremidades da tela.

Figura 9.5

O Painel KDE pode ser exibido ou oculto ao clicar sobre um dos dois botões em
forma de seta que existem na sua extremidade.

Figura 9.6

O Painel KDE apresenta a Barra de Tarefas, o botão K (equivalente ao Iniciar do


MS-Windows), os botões para alternar para os diversos Ambientes de Trabalho,
200 Linux: Sistema Operacional II

informação de data e hora, além de botões para acionar o Centro de Controle, a


Ajuda KDE, a Lista de Janelas, Utilitários, Travar Tela , Sair, Histórico da Área de
Transferência e KwikDisk. Você pode adaptar o Painel KDE às suas preferências:
• Adicionando ícones para ter acesso rápido aos programas que mais usa;
• Movendo componentes para uma nova posição;
• Removendo componentes;
• Fazendo outras configurações.

Barra de Tarefas
A Barra de Tarefas é o elemento superior do Painel KDE. Pode ser exibida ou ocul-
ta, dependendo de sua preferência. A Barra de Tarefas apresenta um botão para
cada um dos programas que estiver carregado no Ambiente de Trabalho atualmente
selecionado. Clicar em um destes botões fará com que o programa correspondente
torne-se o programa ativo.

O botão "K"
O botão K, localizado na extremidade esquerda do painel equivale ao botão Iniciar
do MS-Windows e serve para abrir o menu principal do KDE.

Figura 9.7
Sobre o KDE 201

Opções do botão "K"

O menu principal do KDE, exibido ao clicar no botão K dá acesso aos programas e


outras funções necessárias ao trabalho, tais como Aplicativos, Jogos, Gráficos, In-
ternet, Multimídia, Configurações, Sistema, Utilitários , Ajuda KDE, Centro de
Controle KDE, Diretório Usuário, Lixo, Procurar Arquivo, Redesenhar Área de
Trabalho, Pessoal, Navegador de Disco, Painel, Trava de Tela e Sair.

Outros elementos do Painel KDE


Utilitários

O conjunto de programas utilitários (Relógio, Formatar Disquete, Criar Livro de


Endereços, Calculadora, etc.) pode ser acessado diretamente pelo botão Utilitários
do Painel KDE e também pelo menu principal do botão K.

Lista de Janelas

Existe um botão no painel KDE chamado Lista de Janelas. Existe também uma op-
ção correspondente no menu principal do botão K. Qualquer um dos dois, quando
clicado, exibe a lista dos programas atualmente carregados dentro de cada um dos
ambientes de trabalho. Clicar em qualquer item desta lista, faz com que o programa
selecionado passe a ser o programa ativo. A combinação Alt + Tab serve para listar
os aplicativos do ambiente atual, permintindo acesso direto a qualquer um deles.

Figura 9.8

Procurar Arquivos (Find Files)


O botão Procurar Arquivos se encontra no Painel e no menu principal do botão K.
Você pode localizar um arquivo informando o seu nome ou outros dados relacio-
nados a ele. Pode também obter uma lista de todos os arquivos com uma mesma
extensão, etc.
202 Linux: Sistema Operacional II

Figura 9.9

Arquivos Pessoais
Um dos conceitos básicos do Linux é que um usuário somente tem acesso aos ar-
quivos das pastas para as quais possui autorização. Caso vários usuários utilizem
um mesmo computador, é necessário criar uma pasta na qual cada um deles irá ar-
mazenar seus arquivos pessoais.

Figura 9.10
Sobre o KDE 203

Para ver uma lista dos seus arquivos pessoais, clique no botão Arquivos Pessoais
no Painel KDE ou escolha a opção correspondente no menu principal do botão K.
Note o ícone com o comentário “This folder contains all your personal files”.

Centro de Controle
Existe uma série de adaptações que podem ser feitas, de modo a obter um KDE
mais próximo das necessidades do usuário (caso seja canhoto, pode inverter os bo-
tões do mouse, por exemplo). Estas adaptações atingem aparência de tela, teclado,
mouse, etc. Todas estas adaptações são feitas através do Centro de Controle.

Figura 9.11

Sair
No Painel KDE (ao lado esquerdo dos botões Ambiente de Trabalho) e também no
menu principal do botão K, existe a opção Sair, para você finalizar o KDE.

Travar Tela
Caso necessite abandonar o computador por algum tempo e não queira que ninguém te-
nha acesso aos trabalhos que estava fazendo, não é necessário finalizar o KDE. A melhor
opção é travar a tela. Só poderá destravá-la quem conheça a sua senha de usuário.
204 Linux: Sistema Operacional II

Para travar a tela, clique o botão localizado abaixo do botão Sair no Painel KDE ou
escolha a opção correspondente no menu principal do botão K.

Ambientes de Trabalho
Em uma sessão KDE pode-se trabalhar com um número variável de Ambientes de
Trabalho. Uma das opções para ir para um determinado ambiente é clicar no botão
que o identifica (de dois a oito botões, localizados no centro do painel, identific a-
dos por “One”, “Two”) sendo que essa nomenclatura pode ser alterada assim como
o tamanho dos botões.

Figura 9.12

Esses botões possibilitam alternar entre os ambientes de trabalho e trabalhar com pro-
gramas em qualquer um deles. Veja os botões alterados em seu nome e tamanho.

Figura 9.13

Esta customização pode ser feita com um clique direito sobre a barra de tarefas e
escolhendo Configure. Isto abrirá o KPanel Configuration que intuitivamente per-
mitirá os ajustes desejados em alguns aspectos visuais da barra de tarefas como
tamanho dos ícones, quantidade de painéis, quantos estão visíveis, etc.

Atalhos para programas


Pode-se colocar um atalho no painel KDE, ou um ícone diretamente sobre o fundo
de tela, para acessar de forma mais rápida os programas que mais usa.
Sobre o KDE 205

Acessando disquetes Linux


No menu K acesse Console -> System -> Disk Management. Uma lista com os devices
será exibida. Escolha aquele que deseja montar, clicando sobre o botão Mount.

Figura 9.14

Área de Transferência
Uma das grandes facilidades que temos quando decidimos criar textos, figuras e
planilhas de cálculo através de computadores é a possibilidade de "reutilização" de
textos e/ou figuras em vários arquivos. Essa reutilização é bastante facilitada para
quem usa KDE.

O KDE permite que sejam mantidos conteúdos – textos e/ou figuras – num local de
armazenamento temporário, chamado área de transferência. Este recurso permite
que textos e figuras sejam copiados ou movidos entre arquivos.

Como o KDE permite manter vários conteúdos na área de transferência, pode-se


visualizar cada um destes conteúdos através do botão chamado Histórico da Área
de Transferência .
206 Linux: Sistema Operacional II

Conhecendo a área de transferência


O uso da área de transferência do KDE é bastante similar à do MS-Windows. São
possíveis duas operações básicas: copiar ou mover.

Copiando conteúdos entre arquivos


Para copiar texto, células ou figuras de um arquivo para outro:
• Selecionar, no arquivo de origem, aquilo que quer copiar;
• Enviar para a área de transferência com o comando Copiar;
• Clicar no botão Histórico da Área de Transferência e escolher o conte-
údo a ser inserido;
• No arquivo de destino, colocar o ponto de inserção no local onde deve
ser inserida a cópia e escolher o comando Colar.

Movendo conteúdos entre arquivos


Para mover texto, células ou figuras de um arquivo para outro:
• Selecionar, no arquivo de origem, aquilo que quer mover;
• Enviar para a área de transferência com o comando Cortar;
• Clicar no botão Histórico da Área de Transferência e escolher o conte-
údo a ser inserido;
• No arquivo de destino, colocar o ponto de inserção no local onde deve
ser inserida a cópia e escolher o comando Colar.

Os conteúdos somente são removidos da área de transferência ao finalizar o KDE.


Ao acionar a área de transferência, o menu Clipboard History é aberto para que o
usuário escolha qual elemento deseja colar.

Figura 9.15
Sobre o KDE 207

Trabalhando com "janelas"


O ambiente gráfico do MS-Windows se tornou padrão para os ambientes gráficos.
Existem clones de ambientes gráficos para o Linux que imitam quase à perfeição o
Windows 9X. Isto resulta em grande semelhança entre os diversos ambientes gráfi-
cos, o que facilita bastante o aprendizado de KDE. Praticamente tudo que vai apa-
recer na sua tela, exceto ícones e menus, será exibido dentro de uma janela.

O que são "janelas"


Uma janela representa um espaço da área de trabalho do KDE dentro do qual será
exibida a interface (as telas) de um programa utilitário ou aplicativo. As janelas
podem ser redimensionadas e movidas na tela, de maneira a lhe permitir a melhor
visualização possível. Usando o KDE pode-se ter várias janelas em cada um dos
diversos ambientes de trabalho disponíveis.

Figura 9.16

Componentes de uma janela


As janelas do KDE possuem uma série de componentes comuns, o que facilita a
você trabalhar com elas.
208 Linux: Sistema Operacional II

Botões comuns
As janelas do KDE possuem, na sua parte superior, uma primeira barra, chamada
"Barra de Título", na qual são exibidos uma série de botões, nas extremidades es-
querda e direita e, ao centro, o título do programa. Estes botões permitem uma série
de operações relacionadas com a janela:

BOTÃO NOME FINALIDADE

Identifica visualmente o programa que está utilizando a


Ícone janela. Quando clicado, oferece uma série de opções para
manipulação da janela.

Quando desativado, a janela pode ser acessada somente no


Pregar ambiente de trabalho na qual foi aberta. Quando ativado, a
Despregar janela pode ser acessada de todos os ambientes de traba-
lho.

Quando clicado, faz com que a janela desapareça da área


Minimizar de trabalho, mas sem fechar o programa. Ao utilizar Alt
+Tab, a janela pode ser vista novamente e selecionada.

Quando uma janela ocupa a tela inteira, ela está maximi-


Maximizar zada. Quando ocupa apenas uma parte da tela, está resta u-
Restaurar rada. Este botão faz com que seja alternada a opção de
exibição da janela, maximizando ou restaurando-a.
Este botão faz com que a janela desapareça da área de tra-
balho e fecha o programa que a estava usando. Caso exis-
Fechar
tam alterações a serem salvas no arquivo que estava aberto
por aquele programa, será exibido um aviso neste sentido.

Menus
Logo abaixo da Barra de Título, a maioria das janelas possui uma barra contendo
uma série de palavras-chave, tais como "File", "Edit", "Options", "Help" (podendo
apresentar pequenas diferenças em cada aplicativo).

Esta é a barra de menus, que abriga os comandos que o programa que ocupa a jane-
la está apto a receber. Cada uma destas palavras-chave é o ponto de acesso a um
dos menus da janela. Cada um dos menus abriga uma série de opções (chamados
itens de menu) relacionadas com a palavra-chave que o identifica.
Sobre o KDE 209

Muitas barras de menus podem ser movidas, removidas, reconfiguradas e reexib i-


das. Estas facilidades dependem de cada aplicativo.

Figura 9.17

Barras de ferramentas
Muitas janelas possuem, além da barra de menus descrita, uma ou mais barras de
ferramentas, representadas por uma série de botões alinhados e agrupado em fun-
ções do mesmo tipo. Os botões das barras de ferramentas facilitam o acesso aos
principais comandos do programa e repetem alguns dos itens de menu.

Clicar sobre um botão de barra de ferramentas equivale a acionar o mesmo coman-


do a partir da barra de menus. A maioria dos programas fornece uma "dica" (para
quê serve este botão?), quando o ponteiro do mouse fica estacionado sobre cada um
dos botões da barra.

Menus de atalho
Grande parte das janelas possui, além da barra de menus e barra(s) de ferramenta(s)
descritas, uma série de outros menus, os quais são exibidos quando clicamos o bo-
tão direito do mouse sobre algum dos elementos da janela. Estes, são os chamados
"menus de atalho" ou "menus de contexto".
O conteúdo destes menus depende de qual tipo de objeto havia sob o ponteiro do
mouse no momento em que você clicar o botão direito do mouse.
210 Linux: Sistema Operacional II

Note na figura 9.18 um menu de atalho gerado pelo clique direito sobre o objeto
Printer do KDE e outro também com clique direito sobre uma seleção feita em um
Text Editor.

Figura 9.18

Caixas de diálogo
Alguns dos itens de menu e também alguns dos itens dos menus de atalho execu-
tam comandos diretos (exemplo : EditàCopy).

Outros itens de menu e também de menu de atalho executam comandos mais com-
plexos e que requerem uma série de informações complementares. Estes itens de
menu aparecem sempre com reticências logo após o seu nome e, quando acionados,
exibem uma "caixa de diálogo". São exemplos: File àOpen... ; EditàFind...; Opti-
onsàFont... ;

Uma caixa de diálogo é uma janela que surge sobre a janela principal do programa,
na qual deve-se fornecer as informações adicionais para completar o comando soli-
citado.

Controles das caixas de diálogo

As caixas de diálogo possuem uma série de controles de aparência diferente, atra-


vés dos quais deve-se fornecer as informações necessárias.
A seguir, serão apresentados os controles típicos de caixas de diálogo e a maneira
de fornecer informações ou fazer escolhas através de cada um deles.
Sobre o KDE 211

APARÊNCIA NOME FORMA DE PREENCHIMENTO /


ESCOLHA
Algumas das caixas de diálogo que exigem
muitas informações agrupam controles den-
Guia tro de guias (como se fossem páginas). Cli-
car sobre a aba de uma guia apenas exibe os
controles integrantes daquela guia.
Clicar sobre um botão de comando executa
Botão de Comando o comando associado, o qual apresenta-se
descrito na face do botão.
Este tipo de controle disponibiliza um espa-
Caixa de texto
ço no qual você pode digitar texto.
Do tipo "escolha um". Norma lmente, são
exibidos em grupo e cada um deles repre-
senta uma das opções aceitáveis para uma
Botões de opção determinada informação. Quando você clica
um deles, ele passa a ser a opção escolhida e
todos os demais do grupo passam a estar não
escolhidos.
Do tipo "liga / desliga". Representa opções
que só aceitam duas alternativas: SIM ou
Caixa de NÃO. Quando você seleciona, está dizendo
verificação SIM.

Normalmente associada à escolha de núme-


Caixa giratória ros, apresenta uma seta acima para au mentar
ou ou aquele número e uma seta abaixo para redu-
Barra deslizante zi-lo. Você pode, na maioria das vezes, digi-
tar o novo valor para aquela opção.
Também do tipo "escolha um". É utilizada
quando a quantidade de opções é muito
Caixa de listagem grande. Possui uma barra de rolagem para
ou exibir opções acima e abaixo. Clicar sobre
ou
um dos itens da listagem significa escolher
Alternado
aquela opção. Algumas caixas de listagem
aceitam a escolha de mais de uma opção ao
mesmo tempo.
212 Linux: Sistema Operacional II

Barras de deslocamento

Sempre que o conteúdo de uma janela for maior que a área visível, esta janela apre-
sentará barras de deslocamento (também chamadas barras de rolagem), na base
(barra de deslocamento horizontal) e na lateral direita (barra de deslocamento ver-
tical). Com o uso do mouse sobre estas barras, move-se o conteúdo sem alterar o
tamanho ou a posição da janela.

Existem três tipos de movimentação possíveis:


• Clicar sobre as setas existentes nas extremidades das barras à Movi-
mentação lenta do conteúdo no sentido da seta;
• Clicar sobre as áreas livres da barra, acima ou abaixo do botão "eleva-
dor" à Movimentação acelerada do conteúdo, até que o botão "eleva-
dor" atinja a seta do mouse;
• Arrastar o botão "elevador" sobre a barra à O conteúdo será movido
na direção do arrasto, na mesma velocidade do arrasto.

Administração de janelas
Existe uma série de operações que você pode fazer no sentido de melhor posic ionar
as janelas dos programas abertos na sua tela. As janelas podem ser movidas, redi-
mensionadas (desde que estejam restauradas), minimizadas, maximizadas e resta u-
radas.

Mover janelas
Pode-se mover uma janela com o mouse, arrastando-a pela Barra de Título.

Pode-se fazer o mesmo, da seguinte forma:


• Clique no ícone que representa o aplicativo;
• Clique sobre o item de menu "Mover";
• A janela passa a seguir o mouse;
• Clique no local de destino, para fixar a janela nesta nova posição.

Redimensionar janelas
Para redimensionar uma janela com o mouse:
Sobre o KDE 213

• Aproxime o ponteiro do mouse de uma das bordas ou de um dos cantos


da janela, até que o ponteiro assuma o formato específico já apresenta-
do;
• Nesta situação, trave o botão esquerdo do mouse;
• Com o botão travado, arraste a borda ou o canto até o ponto desejado.

Minimizar, maximizar e restaurar


Conforme já apresentado, é possível usar os botões existentes na extremidade direi-
ta da barra de título para:
• Minimizar a janela à Faz com que a janela desapareça da área de
trabalho, mas sem fechar o programa. A janela fica reduzida a um bo-
tão exibido na barra de tarefas do Painel KDE (quando este botão for
clicado, a janela volta a ser exibida na tela).
• Maximizar a janela à Faz com que a janela ocupe toda a tela.
• Restaurar a janela à Qualquer tamanho intermediário entre minimi-
zado e maximizado. Quando nesta situação, a janela pode ser redimen-
sionada através das suas bordas / cantos, conforme já apresentado.

Ajuda do KDE
O KDE fornece um banco de dados completo de ajuda operacional e de configura-
ção do ambiente.

Para se ter acesso à base de dados da Ajuda clique no ícone que se encontra na
barra de tarefas do KDE.

Figura 9.19

A janela da figura 9.20 será exibida e pode-se então navegar pelo Help.

Isso quer dizer que ao clicar no Ajuda, uma página de Internet irá se abrir para ser
pesquisada.

Se a ajuda não estiver disponível nos arquivos internos do KDE, o sistema de ajuda irá
tentar uma conexão com a Internet para obter auxílio em sites externos ao computador.
214 Linux: Sistema Operacional II

Figura 9.20

Figura 9.21
Sobre o KDE 215

Para uma pesquisa mais específica pode-se acessar:


1. Clique no Menu File.
2. Opção, Search.
3. Digite a palavra chave que deseja pesquisar.
4. Escolha as categorias;
• KDE Documento
• Online Manual (na Internet – necessita conexão)
• Informação do Documento
5. Clique no botão Submit Search.
6. Aguarde a resposta.

Pesquisando a ajuda
A organização do tópicos de ajuda é:

Figura 9.22

Pesquisa feita por Hyperlink. Hyperlink à Cada palavra que estiver sublinhada
representa uma pesquisa. Basta clicar. Esta palavra é um atalho para outra página.
216 Linux: Sistema Operacional II

Iniciando programas
O KDE pode executar aplicações a partir de um menu ou lista, ou a partir de um
ícone. O modo mais fácil de executar uma aplicação é a partir deste último, caso
esteja disponível. Se a aplicação não estiver representada por um ícone, ela deve
ser executada a partir de Alt + F2 ou da janela de leitura de disco no Menu File ->
Run.

Figura 9.23

Com Alt + F2 abre-se a linha de comando.

Figura 9.24

Pela janela de pastas executa -se clicando uma vez sobre o arquivo desejado ou se-
lecionando o arquivo e escolhendo o menu File -> Run...

Iniciar programas a partir de ícones


1. Localize o ícone.
O ícone da aplicação pode estar no Ambiente de Trabalho ou numa pasta.
2. Faça um clique sobre o ícone associado à aplicação, que ela será executada.
Sobre o KDE 217

Iniciar programas a partir do botão "K"


A maioria dos acessórios e aplicações do KDE estão localizados no menu K (Ini-
ciar). É possível acrescentar outras aplicações a este menu de modo a facilitar o
seu acesso.

1. Clique no botão K (Iniciar) situado na barra de tarefas.


2. Mova o ponteiro do mouse pelos menus em cascata até selecionar a aplicação
desejada.
3. Clique para iniciar a aplicação.

Iniciar programas com Alt + F2


Se o ícone da aplicação não se encontrar disponível no Ambiente de Trabalho ou
no menu K (Iniciar), pode-se executar a aplicação com o comando Executar. As
aplicações que não são utilizadas freqüentemente podem ser iniciadas especifican-
do o seu nome de arquivo.

1. Se estiver dentro de uma janela de disco,


2. Clique no Menu File situado na barra de Menus.
3. Selecione Run a partir do menu.
4. Introduza o caminho e o comando da aplicação e selecione OK.
Ou

Use a tecla de atalho Alt + F2, assim que ele abrir a caixa escrita Command:

Figura 9.25

Introduza o caminho e o comando da aplicação (Ex.: kcalc), e abrirá o aplicativo


calculadora.

Alternando entre programas "abertos"


Usando Alt + Tab
Pode-se passar de uma janela a outra através da Barra de Tarefas ou do teclado.
218 Linux: Sistema Operacional II

Figura 9.26

Se uma parte da janela para a qual deseja passar estiver visível, clique em qualquer
lugar dessa janela ou mantenha pressionada a tecla Alt. Ao pressionar a tecla Tab,
uma lista de aplicativos será exibida. Como ela é uma janela cíclica para cada am-
biente, pare sobre o aplicativo desejado e solte as teclas para o aplicativo ser trazi-
do para a frente.

Usando Ctrl + Esc


Quando a tecla de atalho para visualizar os aplicativos que estão nos outros ambi-
entes de trabalho estiver ativa, é possível navegar com as setas direcionais do te-
clado informando em qual aplicativo ou ambiente deseja trabalhar, além de usar o
ponteiro do mouse clicando em cima da opção desejada.

Usando o botão Lista de Janelas


O botão se localiza no Painel. Para executar esta função, usa-se o ponteiro do mou-
se em cima do botão, e quando essa opção for executada, serão mostrados os ambi-
entes de trabalho, permitindo o acesso a qualquer um deles e a seus aplicativos.

Figura 9.27
Sobre o KDE 219

Organizando as janelas na tela


Quando várias aplicações estão abertas, algumas delas poderão sobrepor-se entre si
ou esconder-se por detrás de outras janelas. Neste caso, poderá ser necessário orga-
nizar as janelas que estejam abertas na tela.

Figura 9.28 – Janelas sobrepostas

Figura 9.29 – Janelas organizadas em cortinas

OPÇÃO DESCRIÇÃO
Clique Duplo Um simples clique duplo na barra de título de uma janela faz
com que ela trabalhe como uma cortina, que poderá ser aberta
outra vez através de outro clique duplo.
Clique Direito Para organizar as janelas clique com o botão direito do mouse
no ambiente de trabalho escolhendo Cascade windows ou Un-
clutter windows .
220 Linux: Sistema Operacional II

Fixando aplicativos
Em todas as janelas existe, ao lado direito do ícone que representa o programa, ou-
tro ícone chamado Pregar.

Como o KDE trabalha com quatro ou mais ambientes de trabalho virtuais, se um


aplicativo for aberto no primeiro ambiente, ele não irá aparecer nos demais. Se o
prego for clicado, a janela do aplicativo ficará fixa mesmo que o ambiente virtual
seja alterado.

Figura 9.30

A figura 9.30 mostra dois aplicativos: o de cima com o prego ativado e o debaixo
com o prego desativado. Ao desativar o prego em outro ambiente de trabalho, o
aplicativo passará a fazer parte do ambiente onde estiver.

Finalizando programas
Com o mouse
Pode-se finalizar um aplicativo clicando no X ou, pelo seu menu. Clicando no íco-
ne do canto superior esquerdo, o menu é aberto e a opção Close está disponível.

O botão X se encontra no canto superior direito da janela que estiver aberta. Use o
ponteiro do mouse, com apenas um clique o programa será finalizado.

No botão K, ao escolher a opção Sair, todos os aplicativos que estiverem abertos


serão finalizados e o KDE é encerrado.
Sobre o KDE 221

Com o teclado
Para finalizar um aplicativo pelo teclado utiliza-se Alt + F4.

Administração de discos
Conceitos gerais

Figura 9.31

As informações são armazenadas no disco do computador na forma de um arquivo.


Cada arquivo no disco é identificado por um nome próprio, o qual pode ser dividi-
do em três partes:
• Unidade de Disco
• Pasta
• Arquivo

Dentro do KFM fica muito fácil trabalhar com arquivos e pastas, criando, moven-
do, excluindo, copiando.
222 Linux: Sistema Operacional II

Unidade de disco
Essa unidade de disco é conhecida como HD (Hard Disk), Winchester ou Disco
Rígido.

Existe a Unidade de Disco Flexível, conhecida como Drive A: ou Unidade A:, que
utiliza disquetes de pouca capacidade de armazenamento de dados, mas que é mui-
to utilizada para levar arquivo de um computador para outro ou para fazer Backup
dos dados mais importantes.

Pastas
Local onde se organizam os arquivos. É muito importante que um usuário seja or-
ganizado na hora de salvar o seu arquivo, pois senão perderá tempo procurando.

Criar pastas
Podem-se criar novas pastas para organizar o Ambiente de Trabalho ou outras pas-
tas. As informações relacionadas são normalmente armazenadas em conjunto numa
pasta.

Para criar uma pasta nova:


1. Clique direito onde a nova pasta será criada.
2. Selecione New, Folder.
3. Digite o nome da pasta e clique OK.

Renomear pastas
Pode-se mudar o nome das pastas para que representem com maior exatidão os
seus conteúdos ou para evitar conflitos entre nomes quando uma pasta é movida ou
copiada.

1. Clique direito sobre a pasta cujo nome deseja mudar.


2. Selecione Properties.
3. Digite o novo nome da pasta.

Mover/copiar pastas
Podem-se mover pastas para o Ambiente de Trabalho, para outra pasta ou para ou-
tra unidade. Quando se move uma pasta, também se move todas as subpastas e ar-
quivos para a nova localização.
Sobre o KDE 223

1. Selecione a(s) pastas(s) que deseja mover/copiar.


2. Arraste com o botão esquerdo sobre a pasta que deseja mover/copiar
para o seu destino.
3. Selecione Move ou Copy.

Excluir pastas

Quando se elimina uma pasta, a mesma e o seu conteúdo são movidos para a Li-
xeira.

1. Clique direito na pasta.


2. Selecione Delete.

Pode-se também mandar para a lixeira através da opção Move to Trash.

Arquivos
Nomes de arquivos e extensões

Todos os arquivos têm nome e extensão. A extensão é muito importante pois se


não existir, o arquivo não sabe em qual programa abrir. O que separa um arquivo
de uma extensão é o Ponto, antes do ponto é o nome do arquivo e depois a exten-
são.

Renomear arquivos

1. Clique direito no arquivo cujo nome deseja mudar.


2. Selecione Properties.
3. Digite o novo nome.

Mover/copiar arquivos
1. Selecione o arquivo que deseja mover/copiar.
2. Arraste como botão esquerdo sobre o arquivo que deseja mover/copiar para o
seu destino.
3. Selecione Move para mover ou Copy para copiar.
224 Linux: Sistema Operacional II

Excluir arquivos
Quando se elimina um arquivo, ele é excluído direto ou são movidos para a Lixe i-
ra (Trash).

1. Clique direito no arquivo a excluir.


2. Selecione Delete.

A lixeira

Figura 9.32

A Lixeira é uma área de armazenamento temporário para os arquivos deletados, que


permanecem na Lixeira até que esta seja esvaziada ou até que estes sejam recuperados.

Em circunstâncias normais, apagar um arquivo no Linux é uma operação sem re-


torno. Mas com o gerenciador de arquivos KDE, você pode escolher Mover para a
Lixeira ao invés de apagar.

Verifique e esvazie a lixeira periodicamente.

Enviando arquivos para a Lixeira

Pode-se selecionar e enviar vários arquivos ou pastas de uma vez para a lixeira.

1. Clique direito sobre o que deve ser enviado para lixeira.


2. Ao aparecer o menu de atalho escolha;
3. Move to Trash.
Sobre o KDE 225

Recuperando arquivos da Lixeira

A lixeira funciona como qualquer outra pasta que armazena arquivos. Para recupe-
rar o arquivo, abra as duas janelas (lixeira e a pasta para onde irá restaurar o arqui-
vo) e mova de um lado para outro.

Limpando a Lixeira

Por padrão, a Lixeira utiliza 10% do total do disco rígido. A Lixeira deve ser es-
vaziada periodicamente, a fim de criar espaço no disco e eliminar arquivos perma-
nentemente.

Selecione o menu File -> Empty Trash Bin

Ver informações das unidades de


discos
Dentro do KFM, ao acessar o menu Go (“Ir para”), pode-se ir direto à unidade de
disco, opção file:/.

File:/ exibirá pastas e arquivo. Caso queira acessar alguma pasta, clique em cima dela.

Opções de configuração do KFM

Figura 9.33
226 Linux: Sistema Operacional II

Dentro do KFM, acesse o menu Option -> Configure File Manager:


Font = Mudar a fonte de letras;
Color = Mudar a cor;
Other = Permite configuração por URL
Visão em árvore segue navegação
Terminal e Editor

Opções de visualização do KFM


Veja os principais itens do menu View e Options :

Menu View (Ver)

OPÇÃO DO SIGNIFICADO
MENU VIEW
Show Hidden Files Faz com que todos os arquivos que estiverem ocultos sejam
Mostrar Arquivos demonstrado. Normalmente são os arquivos de sistema.
Ocultos
Show Tree Mostra em duas colunas, do lado esquerdo uma estrutura
Mostrar Árvore de pastas e subpastas e do lado direito, o conteúdo das pas-
tas e subpastas.
Show Thumbnails Os arquivos salvos em GIF terão o seu ícone sendo de-
Mostrar Marcadores monstrado pelo seu conteúdo.
Dir info View Na barra à esquerda aparecem informações do diretório
Visão do Diretório atual.
HTML View Destaque para os arquivos HTML.
Visão HTML
Icon View Mostra os ícones em tamanho grande, um ao lado do outro.
Visão Ícone
Text View Mostra as pastas e arquivos sem ícone e suas descrições.
Modo texto
Long View Mostra tudo, o ícone e suas descriç ões.
Visualização Longa
Short View Mostras os ícones em tamanho pequeno, um ao lado do
Visão Curta outro.
Sobre o KDE 227

Menu Options (Opções)

OPÇÃO DO MENU SIGNIFICADO


OPTIONS
Show Menu Bar Barra que dará várias opções de trabalho. Dentro do
Mostrar Barra de Menu menu existem itens de menu.
Show Status Bar Descreve algo sobre o arquivo ou pasta sobre a qual
Mostrar Barra de Status você coloca o ponteiro do mouse.
Show Toolbar Botões de acesso rápido.
Mostrar Barra de
Ferramentas
Show Location Bar Local onde você pode digitar o caminho da pasta que
Mostrar Barra de deseja.
Localização

Usando a barra de ferramentas do KFM


Na Toolbar (Barra de Ferramentas):

Figura 9.34

Acima: Voltará um nível da pasta que estiver.


Voltar: Volta ao local anterior em que estava.
228 Linux: Sistema Operacional II

Adiante: Depois de voltar uma vez, o adiante fica ativo para que possa avançar o
que voltou.
Diretório do Usuário: Abre o diretório principal do usuário (root).
Recarregar: Relê o local que está trabalhando, assim não precisa fechar o KFM e
abrir outra vez.
Copiar: Usa a área de transferência para copiar um objeto.
Colar: Cola o que estiver na área de transferência dentro do local selecionado.
Ajuda: Ajuda sobre o KFM.
Para: Caso esteja fazendo alguma leitura, cancela.

Localizando arquivos
Para localizar um arquivo no KFM:

1. Clique no Menu File ;


2. Item de Menu Find;

Figura 9.35
Sobre o KDE 229

3. Digite o nome do arquivo em named (utiliza-se * e ?);


4. Escolha a partir de que pasta este arquivo será localizado (Look in);
5. Ative a opção, Incluir subfolders , para pesquisa recursiva.
6. Clique em Search ou Ctrl + F ou pelo menu File ->Start Search.

Selecionando arquivos
Selecionar um só objeto
1. Na tela do KFM escolha Edit -> Select.
2. Digite o nome do arquivo que deseja. OK.

Selecionar vários objetos


1. Mantenha o Ctrl pressionado enquanto clica sobre os arquivos desejados;
2. Se os objetos que se quer selecionar estiverem em seqüência, mantenha o Shift
pressionado, e com o mouse faça um clique no primeiro e no último objeto.

Selecionar todos os objetos


1. Clique no Menu Edit -> Select All ou Ctrl + A;

Personalizando a área de trabalho


do KDE
Ambientes de trabalho
Para alterar o número de ambientes de trabalho da sessão:
• Clique com o botão direito sobre uma área livre (fora de qualquer bo-
tão) do Painel KDE;
• Escolha Display Properties. Uma janela exibida, que é autoexplicativa
permite mudar as caraterísticas do desktop;
230 Linux: Sistema Operacional II

Figura 9.36

Ícones
Usando o botão direito do mouse no ambiente de trabalho escolha New -> Appli-
cation.

Figura 9.37

Dentro desta caixa de diálogo estará escrito Program.kdelnk. O ponto entre os


dois separa o nome do aplicativo e sua extensão. No lugar de Program, informe o
nome para o aplicativo. Por exemplo, pode-se digitar Calculadora ou Calculado-
ra.kdelnk, das duas maneira ele irá funcionar.
Sobre o KDE 231

Assim que você der um clique em OK, irá se abrir a propriedade do aplicativo. Es-
colha o guia Execute e informe o nome do aplicativo que será o executável. Ex.:
kcalc.

Figura 9.38

Clique em OK e teste o ícone que está no ambiente de trabalho.

Organizando
Para organizar os ícones na área de trabalho:
1. Use o ponteiro do mouse com o botão direito;
2. Escolha Arrange Icons . Uma janela pedirá a confirmação da ação. Para reor-
ganizar escolha a opção Yes.

Excluindo
1. Clique com o botão direito do mouse em cima do ícone;
2. Escolha a opção Delete.
232 Linux: Sistema Operacional II

Painel
Configurando
Pelo Painel, clique com o botão direito em uma área livre (local em que não exista
botão), escolhendo a opção Configure :

Figura 9.39

• Panel: Configura a Localização, o Estilo e a Barra de Tarefas;


• Options: Dicas no Menu, Visuais, Outros;
• Desktop: Visíveis, Largura;
• Disk Navigator: Histórico, Opções.

Adicionando atalhos
Essa opção permite criar, no painel, ícones de atalho para agilizar o acesso aos a-
plicativos mais utilizados.

Para adicionar um atalho no painel:


• Clique no botão K (iniciar), que se encontra no painel;
Sobre o KDE 233

• Selecione Panel -> Add Application;


• Será mostrada um barra de tarefas igual a do botão K (iniciar), essa
barra é um como um espelho, que serve para simplificar o trabalho de
adicionar o atalho. Navegue com o ponteiro do mouse pela barra e ao
encontrar o aplicativo que deseja inserir no painel, clique com o pon-
teiro do mouse em cima. Note que no momento do clique, o atalho irá
aparecer no painel.

Removendo atalhos
Para remover um atalho do painel:
• Clique com o botão direito em cima do ícone que deseja excluir do
painel;
• Selecione a opção Remove.

Movendo componentes do painel


Pode-se mover os atalhos do painel facilmente mandando-os para a direita ou para
a esquerda:
• Clique com botão direito sobre o ícone que deseja mover;
• Selecione a opção Move ;
• Note que o ícone irá acompanhar o mouse para a direita e para a esquerda. Po-
sicione o icone na posição desejada e clique novamente para fixá-lo.

Configurando as opções do botão "K"


• Pelo K você acesse Panel -> Edit Menus

Na janela exibida altere os menus do painel interativamente, movendo os atalhos


de um menu para outro. Apesar de divertido é preciso cuidado para não misturar os
ícones em lugares difíceis de achar.
234 Linux: Sistema Operacional II

Figura 9.49

Configurações do Mouse
• Pelo K você acessa Default -> Settings -> Input Devices -> Mouse.

Figura 9.50
Sobre o KDE 235

Configurações do teclado
• Pelo K você acessa Default -> Settings -> Input Devices -> Keyboard.

Figura 9.51
Foi em algum dia de frio na Finlândia, no ano de 1991, que Linus Torvalds, um dos
estudantes da Universidade de Helsinque e vidrado em computadores desde os 11
anos, na época com apenas 21 anos, resolveu desafiar a si mesmo. 1

Participante ativo dos grupos de discussão da Internet, Linus, em outubro de 1991,


tentou analisar uma pergunta do grupo de discussão: "Lembra-se daquela época
quando homens escreviam seus próprios drives de dispositivos"? Pergunta que ain-
da incitava a criação dos jovens daquele grupo, que, pelo jeito e pelo nosso conhe-
cimento apenas o Linus conseguiu responder.

Naquela época, Linus havia adquirido o seu computador baseado em CPU Intel
386, que na época era o topo de linha, mas queria um sistema operacional capaz de
aproveitar ao máximo as características da CPU para multitarefa. Os sistemas base-
ados em Unix na época custavam em torno de US$ 5.000,00 e rodavam em compu-
tadores que custavam por volta de US$ 10.000,00 sendo muito pouco acessíveis
para estudantes como ele. Então Linus tomou a decisão de criar o seu próprio sis-
tema operacional baseado em Unix.

1
Referência em material on-line no endereço http://www.objects.com.br/pesquisa/linux.html

237
238 Linux: Sistema Operacional II

Com a inspiração pelo sistema Minix, um humilde sistema operacional Unix de-
senvolvido por Andy Tanembaum, Linus desenvolveu o Kernel (núcleo) do siste-
ma operacional do Linux – uma combinação de seu nome com Unix.

Para isso ele convocou outros programadores para embarcar com ele na aventura
de desenvolver coletivamente o programa. Respostas a favor chegaram do mundo
inteiro, e o Linux se tornou um sistema obrigatório nas universidades. Hoje distri-
buído livremente, ou adquirido em CDROM pela Internet, é considerado um dos
melhores sistemas operacionais que existe, ganhando prêmios após prêmios.

Depois de escrever o primeiro Kernel, Torvalds concluiu que, sozinho, não avança-
ria muito. Para isso ele resolveu montar uma comunidade, publicando seu apelo na
Internet, e foi à luta. Juntamente com a mensagem tipo garrafa jogada no oceano
com um pedaço de papel, foi o código fonte do sistema operacional, ou seja, ele
dava de graça o software e ainda revelava o seu funcionamento. A partir daí, Linus
começou a entrar para a história.

Desde aquela data, desenvolvedores (conhecidos a partir de então como linuxers)


do mundo inteiro participam da melhoria deste sistema operacional, descobrindo
"bugs" e enviando sua descrição e solução para o Linus e grupos de discussão ao
redor do mundo.

O Linux está atualmente disponível para quase todas as plataformas, podendo tam-
bém gerenciar os principais serviços existentes na Web.

Linus tornou-se o guru dos hippies cibernéticos. Novas atualizações do Linux po-
dem ser desenvolvidas pelos muitos desenvolvedores ao redor do mundo, mas é
somente Linus quem libera as novas versões do núcleo básico do Linux.

O sistema operacional Linux foi um dos grandes propulsores do conceito de soft-


ware aberto e livre, podendo ser obtido gratuitamente por download em diferentes
sites. Caso deseje adquirir um CDROM (Linux in-a-box, como é conhecido), você
gastará em torno de R$ 90,00.

Embora todos achem que o Linux é exclusivamente utilizado nas universidades,


isto tem mudado rapidamente, sendo agora usado por grandes empresas, principa l-
mente em aplicações ligadas à Internet. Estima-se que existam vinte e cinco mi-
lhões de computadores rodando Linux no mundo.
Curiosidades 239

O que é Linux?

É uma sistema operacional Unix, multiusuário, multitarefa e multiprocessado, de


livre distribuição, disponível para equipamentos x86 (Intel e clones), Motorola
68K, Digital Alpha, Sparc, Mips, Motorola PowerPC e muitos outros. É uma im-
plementação aderente ao POSIX – Portable Operating System Interface, ou seja
segue as indicações do IEEE para sistema abertos e portabilidade.

O núcleo do Linux não utiliza código proprietário de qualquer espécie, sendo a


maior parte de seu desenvolvimento feito sob o projeto GNU da Free Software
Foundation, o que torna obrigatório que binários e fontes sejam distribuídos con-
juntamente.

Como ele é desenvolvido?

Existem centenas de colaboradores pessoais e empresas ao redor do mundo traba-


lhando no seu desenvolvimento. Isso permite o contato direto com os desenvolve-
dores e a atualização ágil de softwares.

O que são distribuições Linux?

Como o Linux e suas aplicações são desenvolvidos em diversos locais, diversas


empresas, percebendo a sua potencialidade, compilaram, validaram e desenvolve-
ram melhorias para distribuir o Linux e seus aplicativos de uma forma organizada.

Dessa forma surgiram distribuições como Debian, Slackware, Red Hat, Mandrake,
SUSE e, no Brasil, Conectiva e mais recentemente, o Console Linux e outros, cada
um com as suas características próprias: maior número de aplicativos, maior facili-
dade de instalação, nível de atualização.

Em que aplicações pode-se utilizar o Linux?

O Linux pode atuar como: estação de trabalho, servidor de rede, servidor de banco
de dados, servidor de comunicação, servidor de desenvolvimento, gateway, rotea-
dor, servidor Internet, servidor Intranet e muito mais.

Quais as aplicações disponíveis para o Linux?

Em conjunto com o sistema operacional, está disponível um pacote de softwares de


mais de duas centenas de aplicações, tais como:
240 Linux: Sistema Operacional II

• Servidor Web Seguro;


• Servidor FTP/Gopher;
• Servidor News;
• Servidor E-mail;
• Estação de Gerenciamento de Rede;
• Estação para discagem ou conexões dedicadas;
• Games incluindo servidor Quake;
• X Windows;
• Servidor de Impressão;
• Desenvolvimento C, C++ ou Java;
• Servidor NFS;
• Virtual Private Network – VPN;
• Estação de trabalho em rede;
• Conectividade e compartilhamento de dados, impressão, recursos de co-
municação com sistemas Windows/Novell/DOS/Unix;
• Multimídia.

Há outras aplicações disponíveis para o Linux?

Sim, sempre existem diversas aplicações que estão sendo incluídas nas novas ver-
sões e distribuições, mas que podem ser obtidas imediatamente pela Internet. Apre-
sentamos a seguir uma relação de alguns itens disponíveis para utilização imediata:

Web and Internet Servers

AOL Server, Apache HTTP Server, Firewall Toolkit, Frontpage Server Extensions,
NCSA httpd Server, Vosaic MediaServer, Stronghold, WN Server, W3C (CERN,
XS-HTTPD 2.3, Zeus Server, Netscape.

Firewalls & Proxies

InvisibleWeb & Offline Proxy, SQUID, ipfwadm, Masqd, Watchguard, WebFilter,


WebTune, SATAN Security Administrator's Tool for Analyzing Networks.

Networking Tools

Big Brother monitor, CFEngine, Clobberd, CVS client/server configuration, Hifs


handy information, IETF Mobile IPv4, IPAcct program/kernel extension to do per
Curiosidades 241

user IP accounting, MPAS, Multi Router Traffic Grapher, net-tools, REGULUS


management for ISPs, Samba.

Interface Gráfica

Accelerated-X, Metro-X, MGR Window System Manager, W96, XFree86.

Mail

BlackMail, cyberPAGE, Elm ELectronic Mail, Exmh X, Ifmail, Ishmail, Major-


domo, MH, ML, Petidomo, Pine, qmail, sendmail, SOMA.

Suites

Angoss SmartWare PLUS , Applixware for Red Hat Applix (processador de textos,
planilha, gráfico e mail), Caldera Internet Office Suite Word perfect, Cliq office
suite, Corel Office for Java, CCVS Credit Card Verification System, Goldmedal
UNIX Office, Rendezvous, Star Office, TeamWave Workplace TimeClock.

Database Managers

ADABAS D, Beagle SQL, C/BASE 4GL, CQL++ SQL Database, DBIX, Empress
for Linux, Essentia Data Base, FlagShip, GNU Sql Server, JustLogic/SQL, KE
Texpress commercial high speed client/server database engine, Kubl RDBMS,
LEAP, mSQL, MySQL, Open Client/C, Oracle, Polyhedra, PostgreSQL, QDDB,
Raima Database Manager++, /rdb, Recital, SHORE Project, Solid Server, SQLkit.

Vantagens – Por que utilizar o Linux?

Custo

O preço real de uma escolha de plataforma não é somente o preço do hardware e do


sistema operacional (onde Linux é o claro vencedor), mas o preço do software adi-
cional, serviços e suporte requeridos para criar e operar esta estrutura.

Em relação aos softwares adicionais tais como TCP/IP, servidores (web) httpd,
software de administração de rede, bancos de dados SQL, software de backup, e-
mail, NFS, firewalls, estes podem ser encontrados em versões de livre distribuição,
shareware, freeware ou comerciais.
242 Linux: Sistema Operacional II

Em relação ao suporte, o disponível na Net para Linux ultrapassa os demais: exis-


tem duas ou três vezes mais newsgroups para Linux, existe uma grande variedade
de listas de mails para Linux explorando tópicos especiais, como especificamente
vendedores de Linux RAID, Linux X.25 e vendedores de Frame Relay, pacotes de
administração de redes Linux, tópicos de "missões críticas" para Linux, alertas de
segurança Linux, bancos de dados específicos para vendedores, etc. Além disso, a
Conectiva mantém as listas em português de Linux ISPs e LinuxBR para iniciantes,
além da lista CRHL Suporte, onde o suporte é gratuito para os usuários registrados.

No que se refere aos serviços, a Console Linux disponibiliza um rol de treinamen-


tos desde o nível básico até o mais avançado, além de fornecer suporte comercial
na instalação, configuração e operação de servidores baseados no CRHL. Veja
mais informações em http://www.console.com.br.

Segurança

Tudo em ferramentas básicas de segurança, como SSL, encriptação RSA, firewalls


alarmes "tentativa-de-quebra", empacotadores TCP, SATAN e COPS, sistemas de
arquivos encriptados, túneis IP, S/Key, Kerberos, etc. aparecem disponíveis para
Linux, além de compatibilidade com os padrões Unix de mais de duas décadas de
utilização e aperfeiçoamento.

Escalabilidade e Portabilidade

Linux oferece um claro caminho de escalabilidade: PCs Intel, DEC Alpha, Sparcs,
multiprocessados. Aplicações desenvolvidas para Linux podem ser portadas com
facilidade de/para diversas plataformas: AIX, UX, Sun-OS, Solaris, Irix, SCO, In-
teractive, Intranetware e mais.

Suporte a Hardware

O Linux oferece uma extensa lista de hardwares suportados, abrangendo interfaces


SCSI, placas multiseriais, motherboards, notebooks, PCMCIA e mais.

Amigabilidade

O Linux oferece diversas opções de interfaces gráficas para o administrador, a par-


tir das quais pode ser feita a administração de usuários, discos, arquivos, rede, apli-
cações. No Console pode-se optar por interfaces padrão KDE ou Gnome entre ou-
tras, já disponibilizando o conceito de dados distribuídos: de qualquer ponto do
sistema podem-se acessar dados que estejam localizados local ou remotamente.
Curiosidades 243

Sistema de Desenvolvimento Distribuído

Ao optar-se pelo Linux abre-se um leque de opções de distribuições, desenvolvedo-


res e aplicações, todos sob o sistema de livre distribuição, que garantem ao usuário
a continuidade, o fácil acesso, baixo custo e o suporte ao produto. Linux traz liber-
dade e independência.

Em assim sendo, não se está ao sabor da política interna de determinada empresa


em direcionar os produtos nesta ou naquela direção (vide Java, Netware, OS/2,
etc.)

Quem utiliza Linux?

Ao redor do planeta se estima que tenhamos mais de vinte e cinco milhões de usuá-
rios Linux. Como é um software de livre distribuição não há uma contagem efetiva.

Dentre esses usuários, citamos alguns mais conhecidos: NASA, Exército Americ a-
no, Governo da Itália, Governo da Califórnia, fábricas de robôs na Suécia, hospitais
na França, praticamente todas as Universidades e não pára por aí.

No Brasil é bastante difundido no meio acadêmico, em empresas de desenvolvi-


mento de softwares, em empresas como a Cyclades Corporation, Philips do Brasil,
Tibrás, redes de supermercados. Em especial os Provedores Internet (ISPs) utilizam
o Linux.

O futuro do Linux

No futuro do Linux, o presidente da Red Hat, Bob Young, prevê dois possíveis ce-
nários. No primeiro, que ele acha ser possível daqui a cinco anos, "Linux domina
aplicações científicas e técnicas e se torna o sistema operacional preferido para ser-
vidores Web e estações de trabalho. O mercado de compartilhamento cresce com a
ciência da computação de estudantes graduados de universidades onde Linux pos-
sui 100% de aprovação. Pelas suas vantagens de custo e performance, torna-se o
sistema padrão para os computadores desktop”.

O segundo cenário é bem mais dramático. Com o número de usuários de Linux


crescendo, a Microsoft e outros desenvolvedores de software admitem a ascensão
nesse mercado e começam a escrever programas para ele. Logo, a completa vanta-
gem no preço e na performance de Linux movem o sistema para o mercado de
desktops. Então, talvez em 10 anos, a Microsoft perca o controle do sistema opera-
cional.
244 Linux: Sistema Operacional II

Linux e Outros Sistemas Operacionais Comerciais

As características retromencionadas já apresentam algumas visíveis vantagens do


Linux sobre outros sistemas comerciais, mas ressaltamos em especial: custo, dis-
ponibilidade de novas aplicações, independência, sistema aberto, adequação a ati-
vidades corporativas.

Em relação às características de funcionalidades, seguem quadros comparativos


entre o Linux e Windows NT:

Linux Windows NT 4.0

Padrões POSIX Win32

Disco (mínimo) 15MB 50MB

Disco (típica) 60MB 70MB

Disco (completo) 90MB 100MB

Memória (som.linha de comando) 1 MB -

Inicialização 6 MB 12MB

Típico 16 Mb 24 Mb

Carga 24 Mb 48 Mb

Linux Windows NT

Multitarefa Sim Sim

Multithreading Sim Sim

Multiprocessamento Sim Sim

Multiusuário Sim Não


Curiosidades 245

Portabilidade simples Sim Sim

Cache dinâmico Sim Sim

Memória por process. 3 Gb 2 Gb

Protocolo de Rede TCP/IP, IPX TCP/IP, IPX e NETBEUI

Conectividade (nativa) Novell,Win95/NT, Novell, Apple, NETBIOS e NETBEUI


DOS, OS/2, NFS

Filesystems Suportados

Linux Windows NT

FAT (DOS) Sim Sim

HPFS (OS/2) Sim Sim

NTFS (NT) Sim Sim

EXT2 (Linux) Sim Não

ISP9660 (CDROM) Sim Sim

NFS Sim -

SysV,Xenix Sim Não

Stacker Sim Não


246 Linux: Sistema Operacional II

Aplicações Suportadas

Linux Windows NT

DOS Sim Sim

Win16 Sim Sim

Win32 Não Sim

POSIX Sim Sim

X-Windows Sim Não

Custo Aproximado

Linux Win 9x Windows NT

Full (na caixa) 90,00 400,00 1600,00 (5 usuários)

Licença Adicional - 400,00 180,00

Softwares Incluídos HTTP, FTP, Mail - HTTP, FTP

Softwares Adicionais Firewall, VPN - -


Há um grande conjunto de linguagens, bibliotecas e ferramentas de desenvolvi-
mento para Linux. O próprio sistema Linux já vem com um ambiente de desenvol-
vimento completo, incluindo compiladores C/C++ e Fortran, ferramentas denomi-
nadas de "toolkits" tais como o Qt e linguagens de script tipo Perl, awk e sed. Co-
mo comparação, um compilador de linguagem C para Windows custa centenas de
dólares.2

Aplicativos de Programação não-


comerciais recomendados
* GCC – utiliza um ambiente de desenvolvimento aberto e possui suporte a muitas
outras plataformas com o intuito de promover um compilador otimizado de padrão
mundial. Busca atrair um grupo cada vez maior de desenvolvedores para garantir
que o GCC e o sistema GNU funcionem em múltiplas plataformas e cada vez mais
testar e estender as funcionalidades do GCC.

* GNU C library (glibc) – é utilizado como uma biblioteca C em sistemas GNU e


em sistemas mais recentes com o Kernel do Linux.

2
Publicado pelo FirstLinux.com – Tradução: João Alexandre Lôbo Marques

247
248 Linux: Sistema Operacional II

* Qt – consiste em uma ferramenta (toolkit) de software GUI. O Qt simplifica a


tarefa de escrever e manter aplicações GUI (Graphical User Interface – Interface
Gráfica de Usuário). Qt é escrito em C++ e é um sistema completamente orientado
a objeto. Ele possui todas as ferramentas necessárias para criar aplicações GUI pro-
fissionais e de uma forma rápida e prática. Possui um design modular e seu foco é
fortemente voltado para a reutilização de componentes. Provê o conceito de "sig-
nal/slots", que é uma alternativa para os "callbacks" e ao mesmo tempo permite que
os objetos cooperem entre si sem necessariamente ter conhecimento dos outros.
Um toolkit GUI multi-plataforma oferece todas as funcionalidades necessárias para
criar as aplicações. Existem cerca de 250 classes C++ na API do Qt.

* GDB – o propósito de um debugger como o GDB é permitir que o desenvolvedor


acompanhe o que está acontecendo na execução de um programa – ou mesmo o
que outro programa estava fazendo em um momento de um determinado problema
ou erro ("crash").

* GTK+ – consiste de um toolkit GUI de código aberto e livre, primeiramente de-


senvolvido para uso com o sistema X Window. O GTK+ é um conjunto de biblio-
tecas utilizadas para criar interfaces gráficas de usuário. Funciona em diversas pla-
taformas chamadas Unix-like (ou "estilo Unix"). O GTK+ possui uma arquitetura
orientada a objeto baseada na linguagem C que permite uma grande flexibilidade
no desenvolvimento de aplicações. Pacotes para outras linguagens foram escritos,
incluindo C++, Objective-C, Guile/Scheme, Perl, Python, TOM, Ada95, Free Pas-
cal e Eiffel.

Aplicativos de Programação
comerciais recomendados
* VisualWorks – consiste de um ambiente de desenvolvimento de aplicações orie n-
tado a objetos bastante poderoso para a construção de soluções de alta qualidade.
Inclui conectividade a bancos de dados, conectividade a bibliotecas C compartilha-
das, uma suíte com servidor e desenvolvimento para a Web, interface CORBA e
muito mais. Está disponível em versões comercial e não-comercial, não havendo li-
mitações para a versão não-comercial, que está inclusive disponível para download.

* SNiFF+ – é um avançado Ambiente de Desenvolvimento de Aplicações para


projetos ditos "embedded" ou "non-embedded" ao sistema. O SNiFF+ provê:
funcionalidades de gerenciamento de equipes flexível e escalonável, um poderoso
suporte à construção de aplicativo e ferramentas de análise de código fonte de
primeira linha. SNiFF+ está disponível em uma ampla variedade de opções para
O Que Há no Linux 249

C/C++, Java, ADA, Fortran e outras linguagens e é também integrado a


ferramentas SCM.

* WipeOut – é um ambiente de desenvolvimento multi-usuário e multi-plataforma


para C++, Java, Eiffel e Fortran que roda sobre o Linux e outros sistemas Unix.
Consiste de diversos componentes, os quais provêem interfaces para ferramentas já
existentes tais como o CVS, GDB ou o MAKE. O WipeOut suporta todas as tarefas
de engenharia de código fonte tais como geração, parsing, teste, gerenciamento e
análise em um ambiente de programação uniforme com uma interface simples de
se utilizar e altamente customizável.

A seguir, a terminologia utilizada neste Apêndice.

Open Development Model (Modelo de Desenvolvimento Aberto) – é um modelo


de estilo de desenvolvimento no qual "snapshots" criadas são tornadas públicas
para quem quiser tentar utilizá-las.

Debug – termo também utilizado em português, significando encontrar erros (bugs)


de software ou hardware.

Orientado a Objeto (object-oriented) – é um método de desenvolvimento de soft-


ware que agrupa dados e funções relacionadas em módulos ou caixas reutilizáveis,
chamados objetos.
Usuários do Windows geralmente possuem uma ou mais partições totalmente to-
madas pelas unidades FAT. Para instalar o Linux em um HD, você precisa de um
espaço livre (sem partições) no HD para que possa criar as partições do Linux (pelo
menos o / (raiz) e Swap). A melhor maneira de criar esse espaço livre é usando o
fips. 3

O fips se encontra no diretório dosutils no CD1 do Console Linux 1.0 (que acom-
panha este livro). Esse programa pega a tabela de partições atual do seu HD e cria
novas partições a partir do espaço disponível nas partições já criadas.

Nota: Antes de realizar o procedimento a seguir, esteja de certo que você possui
backup de todos os dados importantes do seu HD, pois qualquer erro no proce-
dimento pode causar perda de todos os dados de seu HD.

Para executar o fips, você precisa de um disco de boot de DOS com reconhecimen-
to de CD.

3
texto escrito por: Spike D em Domingo, 29 de Abril de 2001 | 12:55:24 e disponível em
http://www.console.com.br

250
Instalando o Console Linux em um HD já com o Windows Instalado 251

Para criar esse disco no Windows, chame "Meu Computador", clique com botão
direito no ícone Disco Flexível de 3½ (A:) e selecione "Formatar..." e formate o
disco copiando os arquivos de sistema (crie um disco de boot)4 .

Faça o boot a partir desse disco e digite:


d:
cd dosutils
fips

Ao executar o fips, ele irá checar sua tabela de partições, pedirá para teclar qual-
quer tecla para continuar (Press any Key).

Após isso ele irá checar sua partição FAT e perguntará se quer fazer um backup do
setor raiz e setor de boot antes de continuar:
Do you want to make a backup copy of your root and boot sec-
tor before proceeding (y/n)?

Tecle "n" (não).

Agora você vai escolher o espaço em disco que deseja para a nova partição (onde
você vai instalar o Linux).

No exemplo estou usando um HD de 3 Gb e irei criar uma partição de 2 Gb para o


Linux.

Com isso, usando as setas do teclado eu deixei 1 Gb para o Windows e redirecionei


2 Gb para a nova partição (Linux).
Old partition | New Partition
1031.6 Mb | 2067.2 Mb

Pressione Enter.

O fips irá mostrar a nova tabela de partições, agora já com a nova partição onde
será instalado o Linux e perguntará se você quer continuar ou reeditar a tabela de
partições.

4
Este disco também pode ser criado pelo Adicionar ou Remover Programas que está no Painel de Controle, em
sua guia Disco de Inicialização.
252 Linux: Sistema Operacional II

Opte por continuar, tecle "c".

Após isso, ele pergunta se pode escrever a nova tabela de partições.

Se você está certo de que deseja efetuar as modificações, tecle "y".

Agora vamos para o segundo estágio: instalar o Console Linux na partição que o
fips criou com o espaço livre.

Insira o CD do Console Linux 1.0 no seu drive de CD e dê um boot pelo CD-ROM


ou inicie a instalação usando o disco de boot do Console Linux 5 .

Após iniciar a instalação você optará por partição manual, selecionando instalação
personalizada ou optando por partição manual ao selecionar Estação de Trabalho
ou Servidor.

Ao entrar no particionamento manual, você notará que há duas partições:

No exemplo que estou usando está assim:


hda1 | 1031Mb | 1031Mb | Win95 FAT32
hda2 | 2067Mb | 2067Mb | Win95 FAT32

A primeira partição (hda1) é onde está o Windows e a segunda, apesar de estar com
o tipo de Win95 FAT32, será apagada e criada as partições do Linux, então para
isso:

Delete a segunda partição (selecione e clique em apagar).

Com isso, sobrarão 2067Mb livres. Então vamos criar as partições Linux.

Clique em Adicionar e crie uma partição /boot com 40Mb e tipo Linux Native.

Clique em Adicionar e crie uma partição SWAP com o dobro da sua memória
RAM e tipo Linux Swap.

Clique em Adicionar e crie uma partição / com o tipo Linux Native e selecione
"Crescer até encher o disco?" ou "Grow to fill disk".

5
Você pode também utilizar o disco de boot gerado pelo Adicionar ou Remover Programas do Painel de Controle
na sua guia Disco de Inicialização e escolher o boot com suporte a CD e depois rodar no diretório dosutils do CD
o bat autoboot.
Instalando o Console Linux em um HD já com o Windows Instalado 253

Você também pode selecionar um ponto de montagem para sua partição do Win-
dows, por exemplo, /windows, para que a partição Windows sempre esteja dispo-
nível no Linux nessa partição.

CUIDADO: Lembre-se de que o LILO que irá gerenciar o boot será instalado no
Master Boot Record (hda) de seu HD, apagando assim qualquer outro gerencia-
dor de boot anteriormente instalado.

Após isso, prossiga com a instalação normalmente até que ela termine.

O LILO (Linux Loader) irá gerenciar o boot e decidir se irá chamar o Windows ou
o Linux.

Ao reiniciar você verá:


Lilo boot:

tecle a tecla TAB, que serão mostradas as opções:


linux dos

Se você digitar dos e der Enter, irá entrar o Windows.

Se você apenas der Enter, irá entrar o Console Linux.

Se você demorar muito, o Linux entra :)

Para mudar essas opções, você precisa configurar o LILO pelo arquivo
/etc/lilo.conf.

Após realizar as mudanças no lilo.conf, não esqueça de digitar lilo.

Faça um disco de boot do Linux (usando o 'c') e uma cópia do lilo.conf antes de
efetuar qualquer modificação no lilo.conf, pois se ocorrer algum problema, você
pode entrar no sistema usando esse disco e assim restaurar o lilo.conf orig inal.
Saber reconhecer os drives e partições no Linux é essencial para as pessoas inicia n-
tes no sistema, por isso este apêndice irá ajudar a você que está começando a entrar
no mundo maravilhoso do LINUX. 6

Para criar partições manualmente no Linux você poderá usar o fdisk do Linux, mas
muitas distribuições atualmente as criam automaticamente para você. Em ambas as
maneiras, você deve conhecer as seguintes informações sobre as partições e nomes
de dispositivos no Linux.

No Linux os drives e partições recebem nomes diferentes de seus correspondentes


em outros sistemas operacionais, como por exemplo o MS-DOS.

Os drives dos dispositivos são encontrados no diretório /dev e são usados para a
comunicação com os dispositivos em seu sistema Linux.

Aqui vai uma lista dos nomes dos drives dos dispositivos:

Primeiro disquete (A:) /dev/fd0

6
Drives e Partições no Linux – texto escrito por Linuxer em Sexta, 20 de Outubro de 2000 | 12:57:23 e disponível
em http://www.console.com.br

254
Drives e Partições no Linux 255

Segundo disquete (se alguém ainda usa isso), (B:) /dev/fd1

Primeiro disco rígido (todo o drive) – /dev/hda

Primeiro disco rígido, partição primária 1 – /dev/hda1

Primeiro disco rígido, partição primária 2 – /dev/hda2

Primeiro disco rígido, partição primária 3 – /dev/hda3

Primeiro disco rígido, partição primária 4 – /dev/hda4

Primeiro disco rígido, partição lógica 1 – /dev/hda5

Primeiro disco rígido, partição lógica 2 – /dev/hda6

Segundo disco rígido (todo drive) – /dev/hdb

Segundo disco rígido, partição primária – /dev/hdb1 ,etc.

Primeiro disco rígido SCSI (todo drive) – /dev/sda , etc.

Primeiro disco rígido SCSI, partição primária 1 – /dev/sda1, etc.

Segundo disco rígido SCSI, (todo drive) – /dev/sdb

Segundo disco rígido SCSI, partição primária 1 – /dev/sdb1, etc.

Estes são os dispositivos e as partições no Linux.


O que é GNU?
GNU é um projeto que começou em 1984 com o objetivo de desenvolver um sis-
tema operacional compatível com os de padrão Unix conhecidos como UNIX-like
e no qual o Linux está incluído (veja mais detalhes no Capítulo 5). 7

O Linux em si “só” é um Kernel (núcleo do sistema operacional). O estudante Li-


nus Torvalds, no seu começo, em 1991, estava escrevendo o fonte do Kernel em
sua graduação de Ciência da Computação na Finlândia e começou a usar os pro-
gramas da GNU para fazer seu sistema. Resolveu deixar seu Kernel dentro da
mesma licença, de que falaremos a seguir. Ele postou uma nota em um newsgroup
(grupo de discussões) falando:
``...As I mentioned a month ago, I'm working on a free ver-
sion of a Minix-look-alike for AT-386 computers. It has fi-
nally reached the stage where it's even usable (though may
not be, depending on what you want), and I am willing to put
out the sources for wider distribution. It is just version

7
Baseado no artigo original de Elias Bareinboim disponível em http://www.uol.com.br/olinux

256
Porque o Linux é Gratuito 257

0.02...but I've successfully run bash, gcc, gnu-makee, gnu-


sed, compress, etc. under it.'' comp.os.minux Linus Torvalds

Essa é a parte final, quando já estava pronto. Isso mostra, basicamente, que o Ker-
nel do Linux é o que dá seu nome, mas na verdade devemos chamá-lo de
GNU/Linux, pois ele usa vários aplicativos GNU (conforme visto no Capítulo 5).

As pessoas, em geral, acham que isto é tudo. O Kernel por si só não é usável. O
Kernel é uma parte importantíssima (eu disse parte) do Sistema Operacional (ele
faz a interface, serve como comunicador, com a máquina em si). O Linux, como
um todo, é uma combinação do sistema operacional GNU. O sistema é basicamente
da GNU e o Linux funcionando como seu Kernel.

Existem diversas variantes dos sistemas GNU que usam o Kernel do Linux. Essas
variantes são amplamente difundidas no mundo inteiro e, em geral, são todas co-
nhecidas como Linux, mas idealmente deveriam ser chamadas de Sistemas
GNU/Linux.

Em geral, cria -se uma confusão a respeito disso. O que é o Linux então? O que é
GNU? O que é o sistema inteiro? Várias pessoas estão usando em seu computador
versões modificadas dos sistemas GNU. Sem saber disso, acham que é simple s-
mente o Linux.

Quem realmente é programador sabe que Linux é o Kernel. Quando, em geral, ou-
ve-se que todos estão usando o Linux por aí, eles lembram da história e voltam na
época em que Linus desenvolveu o Kernel. Naquela época, ele fez o Kernel e ju n-
tou com vários programas GNU para fazer o sistema como um todo. Mas todos os
programas estavam prontos do nada? Todos? Claro que não, a GNU funciona há
anos desenvolvendo programas para serem livres/abertos e os programas existiam
por causa disso. Por isso, lembre-se: o ideal é chamar de GNU/LINUX.

Exemplos de programas GNU que são usados com o GNU/Linux desde o começo e não
têm relação com sua criação (foram desenvolvidos com propósitos específicos) são:

Donald Knuth desenvolveu a linguagem de formatação TEX, que é usada por todos
os matemáticos hoje em dia.

Bob Shceifler desenvolveu o sistema de janelas X11, Xwindow ou X, como é co-


nhecido e usado hoje em dia.

É notável que esse tipo de programa tenha contribuído em muito para o sucesso do
GNU/Linux.
258 Linux: Sistema Operacional II

Em geral, o projeto GNU deve ser conhecido como o grande responsável pelo su-
cesso do Linux. Lógico que muitos fatores são relevantes, mas o GNU tem papel
fundamental (evidentemente que o Linus também tem).

Possuir um assemblador, um link editor e uma biblioteca padrão C são essenciais


para um sistema operacional completo. Não é a tarefa das mais simples e agradá-
veis para um programador, mas é essencial. E o GNU faz isso.

Basicamente, chegamos à conclusão de que é no mínimo justo chamar o Linux de


GNU/Linux! (veja mais detalhes no Capítulo 5)

Só para constar: existem outras variantes em Sistemas Operacionais compatíveis


com Unix conhecidas como família BSD, que foram desenvolvidas pela Universi-
dade de Berkeley e que também merecem destaque.

Código Aberto
Fonte de um programa é o código dele, o que é escrito em uma linguagem de pro-
gramação. Todo programa deve ter um fonte. Ele passa por um programa que o
traduz para linguagem de máquina, a qual o computador entende. Mediante este
conhecimento, prossigamos.

Código aberto (ou Open Source, em inglês) quer dizer que o fonte é disponível pa-
ra quem deseja usar. Como isso pode? Funciona? Todos podem mexer? E se eles
fizerem coisa errada? São algumas perguntas que surgem na cabeça de quem não
tem a convivência com esse tipo de filosofia.

Bem, código aberto quer dizer que o fonte está disponível. Eu posso vê-lo, editá-lo,
fazer o que bem entender. Por exemplo:
bash:/usr/src/ 1 /arch/ 1 /kernel$ ls
Makefile head.o ioport.o mca.c setup.o time.o
apm.c i386_ksyms.c irq.c mtrr.c signal.c trampoline.S
bios32.c i386_ksyms.o irq.h process.c signal.o traps.c
bios32.o init_task.c irq.o process.o smp.c traps.o
entry.S init_task.o kernel.o ptrace.c sys_i386.c visws_apic.c
entry.o io_apic.c ldt.c ptrace.o sys_i386.o vm86.c
head.S ioport.c ldt.o setup.c time.c vm86.o

Neste diretório listado estão todos os arquivos com as funções básicas do Kernel.
Eu posso mexer à vontade, mudar, fazer o que bem entender. Só que isso não inter-
Porque o Linux é Gratuito 259

fere no Kernel que você usa em sua máquina. Qualquer um pode alterá-lo em seu
respectivo computador! Caso você seja um programador experiente e tenha domí-
nio em programação de Sistemas Operacionais pode contribuir. Basta você mudar
o que bem entender e submeter aos responsáveis.

Cada parte do Kernel tem responsáveis diretos. Linus Torvalds está melhorando a
gerência de memória, por exemplo, para ficar mais rápida. Caso você queira man-
dar um novo método que tenha descoberto, envie um e-mail para ele com as suges-
tões e os fontes. Ele fará uma análise e, se for realmente útil, colocará em prática
na próxima versão.

Caso o Alan Cox tenha feito alguma correção no Kernel e você tenha descoberto
uma forma melhor de fazê-lo, é só propor. Se realmente for superior, você terá seu
patch (correção) incorporado a ele (Linus Torvalds e Alan Cox são os dois maiores
nomes do Kernel do Linux atualmente, superacessíveis como seres humanos mor-
tais).

Isso tudo funciona para coisas que são novas, que provavelmente vão para uma
versão de testes do Linux, que não são liberadas rapidamente. Caso seja alguma
correção de algo já existente, que já tenha sido implementado (codificado), será
testado e colocado na próxima versão estável.

Ou seja, esse problema de qualquer um que está aprendendo C, hoje, ir diretamente


alterando o sistema operacional que você usa, não é verdadeira.

Isso funciona para todos os programas GNU. O exemplo do Kernel foi a título di-
dático, mas funciona da mesma forma para todos.

Os fontes são seguros?


Realmente uma questão a se discutir é em relação à segurança dos fontes. Não há o
que temer: todos os programadores são altamente experientes e além do mais os
fontes passam na mão de uma imensa comunidade científica, gente que vive só de
estudar Sistemas Operacionais, além de você próprio poder fazer, ou contratar al-
guém que o faça. O código como um todo é visto por milhares de pessoas todo dia
e é altamente confiável e estável. Além disso, existe o que citei antes, de versão
estável e de testes.

No caso do Kernel (acontece isso em geral com a maioria dos programas GNU), a
versão estável é aquela que já foi bem testada, está madura para o uso, não tem
problemas e não trava em condições normais. Ela demora para sair algum tempo.
260 Linux: Sistema Operacional II

Ela é designada pelo número par do 2.2.13, por exemplo. O segundo 2 quer dizer
que é estável, o 13 é a versão (release). A próxima a sair é a 2.2.14, e assim por
diante.

E como isso pode funcionar? Qual a garantia de que isso tudo continuará assim?

Bem, existe uma licença conhecida como GPL (do GNU) que garante isso. Nela
está escrito:
1) Todo programa GNU tem que vir com seu código fonte. Ou seja, não se pode
distribuir simplesmente o binário (ou executável, como queira).
2) Sempre que for usado o fonte, o autor original deve ser mencionado obrigator i-
amente.
3) Se você alterar o fonte do programa, terá que mantê-lo na licença GPL, ou seja,
o código fonte deve ser liberado também.

Nota-se que esses pontos garantem a continuidade do processo, a longevidade da


vida do sistema. Não tem como uma empresa chegar, pegar o fonte e fechá-lo.
Sempre que for alterado terá que ser mantido sob a licença GPL. Isso garante a e-
volução e a continuidade.

Software Livre
Software (programa) Livre (conhecido como Free Software, em inglês) é o ato de
disponibilizar o software sem cobrar por ele. É um ato de liberdade, não de preço.
Podemos fazer uma comparação ao direito de voz de imprensa. Todos podem falar.
Não se deve traçar uma analogia com o direito de beber um refrigerante de graça e
sim de poder falar o que se bem entender, sem censura.

Deve-se entender como direito do usuário: rodar o programa, copiar, distribuir, es-
tudar, mudar e melhorá-lo. Tirado da Fundação de Sotfware Livre:
• liberdade de rodar o programa, com qualquer objetivo.
• liberdade de estudar o funcionamento do programa, e adaptá-lo para suas
necessidades.
• liberdade de distribuir o programa para ajudar quem você acha pertinente.
• liberdade de melhorá-lo e distribuí-lo para o público, dando sua contribui-
ção para a comunidade que lhe deu esta oportunidade.

Todo GNU/Linux (lembre-se de que é mais elegante chamar de GNU/Linux) pode


ser obtido comprando-se um CD por preço quase de custo. Além disso, quem dis-
Porque o Linux é Gratuito 261

ponibilizou a venda do CD é obrigado a disponibilizar um FTP, em algum lugar,


para que você possa baixar. Ele lhe dá a oportunidade de escolha. Você compra ou
baixa via rede, pois o software é livre.

Conclusões
O GNU/Linux é um Sistema Operacional (SO) livre e aberto. Os problemas que
existem em relação a esse fato estão em nossas cabeças! Nossa formação cultural
diz que temos que pagar o software ou então piratear. Qualquer coisa que foge dis-
so, "não existe" ou "estão querendo nos passar para trás".

Agora temos uma alternativa real, completa e viável a qualquer SO do mercado,


seja ele um UNIX parrudo de alto custo, um Mac bonitinho ou qualquer outro tipo
de SO existente. Tudo gratuito. Por que não aproveitar esta oportunidade?

Temos editores de texto, planilhas, programas de apresentação, gerenciamento de


contas, fluxogramas, som, imagem, editoração 2d, 3d, tudo, quase todos gratuitos,
e por que disperdiçamos essa maravilha? Noventa porcento (90%) dos programas
para GNU/Linux são GPL.

Outra questão a ser colocada é como as pessoas que trabalham com Softwares Gra-
tuitos/Livres sobrevivem. Como qualquer outra, trabalhando. Trabalham com cus-
tomizações, suporte, documentação e tudo que é adicional ao sistema tradicional.

Tal mão de obra é altamente especializada e é chamada em situações extremas, ca-


so você não queira ou não possa botar a mão na massa. Essa situação é comum em
empresas, para projetos de grande porte e situações específicas.
O Kernel 2.4 ainda não estava pronto em novembro de 2000 e os trabalhos
pareciam estar com um ano de atraso. Os distribuidores e desenvolvedores de
distribuições Linux se depararam com uma dúvida sobre criar produtos baseados
no Kernel antigo (2.2) ou na versão beta do novo (2.4).8

Depois de muitas conversas, a Red Hat decidiu lançar a versão beta do Red Hat
Linux 7.0 baseada no Kernel antigo chamado de Pinstripe.

A RedHat tomou suas providências para não ficar para trás quando o 2.4 ficasse
pronto. Em declaração dada à imprensa por ocasião do lançamento da versão 7.0
beta do RedHat, Doug Ledford, gerente do departamento de desenvolvimento do
Kernel da Red Hat disse: "O Pinstripe foi projetado para rodar o 2.2 e o 2.4.". A
empresa vai lançar a versão final do 7.0 com o Kernel antigo e quando o novo ficar
pronto, a empresa garantiu que irá prover o 2.4 que poderá rodar no topo do
Pinstripe 2.2. Isto foi no final de 2000, e em maio de 2001 já estava disponível a
versão 7.1 do RedHat com Kernel 2.4 já homologado para rodar na distribuição
servidor daquela empresa.

8
Apêndice com dados compilados a partir dos artigos originais disponíveis em http://www.conso-
le.com.br/ver_artigo.htm?id=67, http://www.console.com.br/ver_artigo.htm?id=48 e http://www.conso-
le.com.br/ver_artigo.htm?id=34.

262
O Kernel 2.4 do Anúncio ao Lançamento 263

A Caldera adotou uma outra postura. Na última semana de agosto de 2000 a


Caldera já fornecia uma nova tecnologia de desenvolvimento de seus produtos
Linux. O "preview" daquele lançamento incluía uma teste do novo Kernel (2.4),
inclusive a beta do Java 2 para Linux e modelos das máquinas virtuais HotSpot da
Sun para clientes e servidores.

Com a palavra o Sr. Linus Torvalds

No início de 2000 parecia que o desenvolvimento do Linux 2.4 estava correndo um


ano atrás do calendário. "Existiram algumas barreiras, mas o trabalho já foi
retomado. Tivemos que resolver questões de logística," explicou Linus Torvalds.
"Todas as questões básicas foram resolvidas, o que é um ótimo avanço. Isto não
significa que o Linux 2.4 será lançado amanhã", concluiu Torvalds.

Finalmente o Kernel 2.4 foi lançado no dia 4 de janeiro, sem muito alarde. A nova
versão do Linux já estava sendo esperada ansiosamente, gerando até alguns
descontentamentos com a demora. Mas, segundo a filosofia Open Source, o código
só foi liberado quando Linus Torvalds achou que estava tudo em ordem.

Como este foi um lançamento de grande importância para o emprego do Linux nas
corporações, os desenvolvedores aproveitaram o tempo para refinar as interfaces de
programação (API) de aplicações já existentes na versão 2.2 e criaram estruturas
que tornaram o sistema mais coeso.

Sendo o Kernel uma pequena parte de um sistema operacional (mas imprescindível


ao seu perfeito funcionamento), as grandes distribuições de Linux devem liberar o
mais rápido possível suas distribuições já atualizadas.

O Kernel 2.4 roda em três novas arquiteturas: ia64 (Itanium), S/390 (mainframe da
IBM) e SuperH. Também estão dentro os novos processadores MIPS de 64 bits,
lembrando que algumas plataformas serão mais eficientes que outras.

Quando Torvalds recebeu perguntas sobre detalhes do novo Kernel, não quis
responder no momento, devido à exaustão e disse com muito bom humor: "Não me
perturbem com informações sobre bugs nos próximos dias".

Como se controlam as versões?


O número da versão do Kernel NÃO está ligado diretamente ao número da versão
das distribuições de Linux. Assim temos:
264 Linux: Sistema Operacional II

Red Hat 7.1 => kernel 2.4


Red Hat 6.0 => kernel 2.2.12
SuSE Linux 6.2 => kernel 2.2.10
Console Linux 1.0 => kernel 2.2.17.

O desenvolvimento do Kernel do Linux costuma ocorrer em duas séries separadas:


uma delas é a de produção, ou estável, cujo segundo número é sempre zero ou par:
2.0.x, 2.2.x, 2.4.x, etc. A outra série é a de desenvolvimento, que não é garantida
para ser utilizada em sistemas em produção, e tem o segundo número sempre
ímpar: 2.1.x, 2.3.x, etc. Quando a série de desenvolvimento atinge a maturidade,
ela muda de numeração e se transforma na nova série de produção, e uma nova
série de desenvolvimento tem início.

Tradicionalmente não se marcam datas para o lançamento das novas versões.

A palavra Kernel significa núcleo ou cerne, e essas palavras expressam muito bem
o que ele é: a parte central do sistema operacional, capaz de manter as aplicações,
dispositivos e conexões funcionando e comunicando-se entre si.

Qual a importância do 2.4?


As novidades da versão 2.4, muitas delas já presentes (mas não necessariamente
prontas) na atual série 2.3 de desenvolvimento, são de interesse restrito aos
técnicos em informática. Outras, como as relacionadas ao suporte de novos
dispositivos, interessam a todos os usuários.

Aspectos internos
O Kernel é o núcleo do sistema operacional, mas ele em si tem também o seu pró-
prio núcleo, que são as rotinas capazes de integrar os gerenciadores de dispositivos,
oferecendo o agendamento e o seqüenciamento de tarefas, controlando a alocação
de recursos, gerenciando os sistemas de arquivos e a memória, e muito mais.

Nestes aspectos internos, uma grande mudança da versão 2.4 está relacionada à
nova implementação do gerenciamento de recursos de hardware como as IRQs e os
endereços de E/S. Isso irá facilitar a tarefa de quem desenvolve gerenciadores de
dispositivos, e em última análise aumenta bastante a possibilidade de suporte a
ainda mais hardware pelo Linux. Além disso, essa remodelagem facilitou o suporte
a placas ISA PnP como veremos posteriormente.

O VFS (Virtual FileSystem layer ou camada de sistema de arquivos virtual)


também sofreu profundas modificações. A antiga estrutura com um buffer de
O Kernel 2.4 do Anúncio ao Lançamento 265

leitura e outro de gravação foi abandonada, e agora há um único buffer para as duas
operações, mais uma vez simplificando em muito o desenvolvimento de mais
gerenciadores de dispositivos. Além disso, o sistema ganha em eficiência e passa a
usar menos memória.

O antigo limite máximo de 1024 processos em operação simultaneamente foi


extinto, e com o Kernel 2.4 o limite passa a ser a memória. Esse limite de 1024
processos só era sentido em máquinas poderosas, já que o Pentium nosso de cada
dia não tem tanta capacidade, mas agora uma máquina com 512 MB de RAM
poderá rodar facilmente 16000 processos ao mesmo tempo.

Por falar em máquinas poderosas, o limite máximo de memória em sistemas Intel


avançou bastante – agora você pode ter até 4 gigabytes de RAM sendo gerenciados
pelo Linux. E se você é um usuário doméstico que ainda conta a memória em
dezenas de megabytes, saiba que o Kernel 2.4 não ocupa mais memória do que o
2.2.

O Linux 2.4 também vai ser ainda mais compatível com padrões de mercado,
incluindo o suporte a clocks e timers do padrão POSIX, NFS versão 3 (veremos
mais sobre ele no item sobre sistemas de arquivo), e alguma compatibilização em
outras áreas como, por exemplo, o esquema de threads adotado.

Tipos binários

Desde a versão 2.2 o Kernel do Linux suporta um tipo binário chamado de "misc.",
que permite associar determinados tipos de binários a aplicações auxiliares. Assim,
você pode, por exemplo, instruir o Kernel para que, se solicitado a rodar um
arquivo .EXE (executável do Windows), ele carregue previamente (e transparente-
mente) um emulador adequado, o que sob o ponto de vista do usuário e do desen-
volvedor de aplicações é a mesma coisa que se o programa estivesse sendo
executado nativamente pelo Kernel (naturalmente isso não é verdadeiro em
aspectos como a portabilidade, suporte a algumas funções específicas, estabilidade
e performance da aplicação sendo executada).

O Linux 2.2 e o 2.0 incluíam também um sistema semelhante mas exclusivo para
aplicações em Java, que permitia que o Kernel rodasse de forma aparentemente
nativa os binários Java. O Linux 2.4 vai deixar de suportar este sistema, e os
usuários terão que portar suas aplicações para o novo método. Como esta mudança
já estava disponível e documentada desde a versão 2.2, é provável que poucos
usuários tenham problemas com isso.
266 Linux: Sistema Operacional II

Dispositivos de bloco – Discos, RAID, etc.

Os dispositivos IDE, que são a base dos discos rígidos e unidades de CD-ROM
mais comuns no mercado, têm algumas novidades. A primeira delas é o aumento
do limite máximo de controladores IDE em uso – agora você pode ter até 10
controladores no mesmo computador, o que equivale a até 20 discos rígidos.

O suporte a DVD e a CD changers foi melhorado, embora esteja longe de estar


pronto. Uma série de novos controladores SCSI também passou a ser suportada
pelo novo Kernel. E os administradores de bancos de dados vão gostar de saber que
o Linux vai passar a oferecer o recurso de raw devices, similar ao existente em
sistemas Unix comerciais.

Sistemas de arquivos

O Linux 2.4 inclui todos os novos sistemas de arquivos apresentados no Linux 2.2,
como por exemplo o FAT/VFAT (para sistemas DOS e Windows 9x), NTFS (do
Windows NT/2000), HFS (do Mac) e muitos (muitos mesmo!) outros. Todos eles
foram reescritos ao menos parcialmente, devido ao novo sistema de cache descrito
anteriormente. Isso fará com que todos eles sejam mais eficientes do que seus
equivalentes na versão 2.2.

Usuários de OS/2 vão finalmente poder gravar em suas partições HPFS no Linux.
Usuários de NT já podem ler o NTFS, e se quiserem se arriscar, podem ativar o
suporte experimental para escrita nestas partições.

A antiga opção de compilação que avisava ao Kernel sobre a existência de


servidores Windows com problemas na exportação de volumes desapareceu, e
agora o Linux é capaz de detectar sozinho estes erros de algumas versões
específicas do Windows.

Usuários de NFS ficarão felizes ao saber que agora o Linux suporta a conexão a
servidores NFS versão 3, o que tem sido um pedido freqüente dos usuários
corporativos.

Framebuffers

Um framebuffer é uma área de memória cujo conteúdo se reflete no conteúdo


exibido na tela. O Linux 2.4 suportará uma série de novas placas de vídeo através
desse recurso. Lembre-se de que os framebuffers não têm nada a ver com a mais
comum das utilizações do Linux em modo gráfico, que é o XFree86 (que atua
O Kernel 2.4 do Anúncio ao Lançamento 267

como a base em cima da qual operam ambientes como o GNOME, o KDE ou o


WindowMaker).

O Kernel 2.4 inclui vários novos drivers para placas de vídeo e melhoramentos em
drivers previamente existentes. Mas lembre-se: este é um recurso apenas para quem
tem necessidades específicas, e a princípio você não precisa se preocupar com ele.

Dispositivos de caractere – teclado, mouse, console e portas

A grande novidade é que o Linux 2.4 irá suportar teclado e mouse conectados a
uma interface USB, como se fossem mouses seriais normais.

Adicionalmente foi incluído suporte a máquinas com teclados que precisam de


inicialização extra durante o boot (como aqueles teclados com botões de controle
multimídia), e também para máquinas que se comportam de maneira não usual na
ausência de um teclado (como os equipamentos PC desktop IBM, Compaq, entre
outros).

Pela primeira vez vai ser possível direcionar o console (normalmente direcionado
para a tela do monitor) para a porta paralela, o que vai permitir a impressão on-line
das mensagens do Kernel, serviço útil para algumas aplicações específicas.

O suporte a portas seriais não mudou muito e a maior parte das limitações do
Kernel 2.2 permanecem. Mas vai ser possível compartilhar IRQs de placas seriais
PCI – previamente isto era possível apenas com seriais ISA e on-board.

Já o suporte a portas paralelas passou por boas reformas. Foi criado um driver
genérico para portas paralelas, o que permite a abstração na comunicação com
dispositivos "desconhecidos". Isto pode vir a ser usado, por exemplo, pelos drivers
que precisam identificar a presença de um scanner plug and play conectado à porta
de impressão do seu micro. Além disso, o Kernel 2.4 incorpora suporte às caracte-
rísticas mais modernas das portas paralelas, incluindo o uso de DMA – o que pode
tornar mais rápidos os nossos serviços de impressão (não que eles fossem lentos!).

Suporte a barramentos – ISA, PCI, USB, MCA, etc.


O computador não se resume ao seu processador. Outro componente da arquitetura
interna de cada máquina é o barramento ou bus, responsável por transportar os
sinais entre cada um dos componentes do sistema.

A grande novidade do Kernel 2.4 no que tange aos barramentos é o suporte


ampliado à arquitetura ISA PnP, os famosos dispositivos Plug and Play. Embora o
268 Linux: Sistema Operacional II

Linux já os suporte há algum tempo, finalmente este suporte foi trazido para dentro
do Kernel. Quando os gerenciadores de dispositivos passarem a fazer uso desta
característica, os periféricos PnP passarão a funcionar "automaticamente", sem a
necessidade da utilização das ferramentas quase místicas que hoje são necessárias
para configurar um simples modem plug and play.

O Universal Serial Bus (USB) também passa a ser suportado no Kernel. Esse
barramento, que é típico do iMac, tende a se tornar cada vez mais comum no
futuro, e tem muitas características técnicas interessantes. O I2O (Intelligent
Input/Output), que é uma extensão do PCI, também passa a ser suportado.

Finalmente, para quem utiliza o Linux em notebooks, o suporte a PCMCIA passa a


ser integrado ao kernel padrão, e os usuários deste padrão não mais precisarão se
submeter a fazer downloads de discos extras para instalação e nem a procedimentos
mais complexos que os comuns.

Multimídia

O Linux está adotando o papel de sistema operacional desktop e como tal deverá
apresentar suporte aos dispositivos mais comuns nos ambientes dos usuários:
placas de som, TV e rádio e seus assemelhados. O Kernel 2.4 traz algumas
mudanças nessa área, incluindo o suporte a full duplex em placas de som que
tenham esta característica.

Algumas mudanças estão presentes também na estratégia de alocação de memória,


o que deverá tornar mais simples a configuração dos drivers de som (atualmente
esta tarefa pode ser desastrosa).

Suporte a processadores

Na arquitetura Intel, há algumas novidades. Além de continuar oferecendo o


suporte otimizado a 386, 486, 586 (Pentium, AMD, Cyrix...) e 686 (Pentium Pro,
Pentium II, Pentium III), teremos suporte a hardware adicional. O Linux 2.2 já
inclui suporte aos MTRRs do Pentium, capazes de aumentar a performance na
utilização de dispositivos de alta largura de banda. A versão 2.4 traz suporte às
versões de MTRR da AMD e Cyrix, e também ao IO-APIC, que permite a
distribuição de interrupções entre vários processadores, em sistemas
multiprocessados.

Os únicos sistemas multiprocessados ainda não completamente suportados pelo


Linux serão alguns antigos, baseados em 486SX e 486DX, devido a problemas
O Kernel 2.4 do Anúncio ao Lançamento 269

dessas arquiteturas já ultrapassadas. Mas certamente o número de usuários deste


tipo de instalação tende a ser zero com o passar do tempo.

Rede e protocolos

O Linux 2.4 inclui muitas novidades nessa área, como novos drivers, correção de
falhas e novas funcionalidades para os drivers já existentes.

Em termos de performance de rede, uma característica nova e interessante é o


"wake one", que, em termos simplificados, é uma estratégia para que, no caso de
servidores que tenham múltiplos processos aguardando por requests dos usuários
(como é o caso do servidor web Apache), a cada request apenas um dos processos
seja ativado, sem que seja necessário ativar a todos e logo em seguida congelar
novamente todos, menos o que realmente for atender ao request.

A camada de rede também foi completamente reescrita, tendo em mente a melhor


escalabilidade possível. Seguindo este mesmo exemplo, boa parte do código do
PPP (o principal interesse dos usuários de internet domésticos) também foi refeita,
acrescentando novas características e melhorando a performance geral.

De resto, o Kernel 2.4 torna as distribuições Linux que o utilizam mais bem
adaptadas ao uso pessoal e mais eficiente aos que atuam como servidores de rede.
!INDEX.HTML. gregh@sunsite.unc.edu. SUNSITE.UNC.EDU (SUE).
ftp://sunsite.unc.edu/pub/Linux/docs/linux-doc-project/users-guide/. 1996.
Página FTP. Internet Explorer.
-----.-----. Linux HOWTO Index (part 1/1). GREG HANKINS.
http://www.faqs.org/faqs/linux/howto/index/, 1997. Página HTML. Internet
Explorer.
-----.-----. Linux INFO-SHEET (part 1/1). MICHAEL K. JOHNSON.
http://www.faqs.org/faqs/linux/info-sheet/, 1997. Página HTML. Internet
Explorer.
-----.-----. Livros Guias e Manuais. Conectiva S.A.
http://www.conectiva.com.br/doc/livros/, 2001. Página HTML. Internet Explorer.
BASHREF.HTML. Red Hat Linux 6.2. Red Hat. /usr/doc/bash2-doc-2.03/, 2000.
Arquivo HTML. Internet Explorer.
gs.html. Matt Welsh. Specialized Systems Consultants, Inc (SSC).
http://www.ibiblio.org/mdw/LDP/gs/, 1998. Página HTML. Internet Explorer.
HOME.PT.HTML. GNU. Free Software Fundation (FSF). http://www.gnu.org/,
2001. Arquivo HTML. Internet Explorer.
INFO. Red Hat Linux 6.2. Red Hat. /usr/bin/, 2000. Arquivo script. bash.
MAN. Red Hat Linux 6.2. Red Hat. /usr/bin/, 2000. Arquivo script. bash.

271
/, 42 Administração de janelas, 212
/boot, 18 Ajuda do KDE, 213
/dev, 18 Aliases, 67
/dev/hda, 18 Alterando data e hora no Linux, 58
/dev/hdb, 18 Alt erando dono, 56
/dev/ttyS0, 14 Alterando grupo, 56
/etc, 18, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, Alterando permissões, 54
40, 41, 47, 49, 74, 89, 132, 137, 138, 142, Alternando entre programas, 217
143, 151, 153, 158, 179, 180, 182 Ambientes de Trabalho, 199, 204
/etc/ftpaccess, 36 anonymous, 36, 40
/etc/group, 34 aplicações gráficas, 2
/etc/passwd, 33 arch, 72, 73
/home, 18, 26, 33, 34, 43, 44, 45, 46, 47, 48, Área de Transferência, 200, 205, 206
49, 52, 83, 84, 89, 177, 178, 182, 189 Arquivos, 38, 52, 115, 119, 120, 121, 126,
/tmp/install.log, 19 132, 134, 137, 142, 151, 158, 166, 169, 171,
/usr, 18 181, 183, 187, 202, 203, 223, 226
/var, 18 Arquivos Pessoais, 202, 203
ash, 73
A assíncronos, 66
Atalhos para programas, 204
À Maneira do DOS, 179 Automatic Partitioning, 17
À Maneira UNIX, 179
Acessando disquetes Linux, 205
acesso remoto, 35
B
Adicionando atalhos, 232 backup, 6, 84, 135, 138, 143, 153, 170, 181
Administração de discos, 221 Barra de Tarefas, 199, 200, 217, 232

273
274 Linux: Sistema Operacional II

Barras de deslocamento, 212 conectividade, 2, 5, 11, 35


Barras de ferramentas, 209 configuração, VI, 2, 3, 4, 6, 7, 8, 10, 15, 20,
base operacional, V 30, 32, 33, 36, 98, 166, 213, 226
bash, 3, 6, 29, 33, 34, 62, 65, 71, 72, 133, 162, configuração do KFM, 225
165, 167, 182, 183, 184, 185 Configurações do mouse, 234
Berkeley, 63 Configurações do teclado, 235
BIOS FEATURES SETUP, 13 configurar, 2, 6, 31, 179
blocos danificados, 19 Conseguindo Ajuda, 167
boot, 3, 4, 5, 8, 13, 20, 31, 62, 98, 181, 188 Construtores, 67
BOOT SEQUENCE, 13 container, 5, 85, 86
Bootdisk, 20 Contas, 160
bootp/dhcp, 15 contas de acesso, 2, 160
Botões comuns, 208 Controle de fluxo, 66
built-in commands, 66 Controle de trabalho, 67
Convertendo Arquivos, 191
C Copiando arquivos para uma pasta, 47
Copiando conteúdos, 206
C, 185 cópias de segurança, 4
Caixas de diálogo, 210 copy, 47
Calculadora, 201, 230 cp, 47, 49, 81, 82, 83, 168, 172, 173, 174, 180
caminho absoluto, 44, 49 cpio, 84, 85, 86, 87, 88, 89, 90, 91
caminho relativo, 44, 45, 46, 48, 49 crash protection, 10
canhão para acertar uma mosca, 7 criação de contas, 4
caracteres especiais, 15 Criando um simples localizador de arquivos,
Carregamento por demanda, 10 69
case sensitive, 29 Criar pastas, 222
cat, 31, 33, 34, 36, 57, 68, 69, 77, 172, 173, Cursor, 10
188
catalog, 31
cd, 55
D
cdrecord.conf, 31 Data e hora de sua criação, 57
Centro de Controle, 203 date, 57, 58, 91, 93, 94, 154, 182
change dir, 30, 43 dc, 67, 68, 69, 72, 76, 77, 182
change mode, 55 dd, 92, 93, 94, 96, 122, 123, 157
change owner, 56 Default gateway, 16
chgrp, 56, 78, 79 depurar scripts, 6
chown, 56, 80, 81 desconexão do usuário, 26
clear, 29, 81 desenvolver scripts, 6
COBOL, 10, 11, 185 Desktop, 10, 43, 50, 51, 52, 195, 197, 232
COM1, 14 Desligando corretamente o Linux, 27
comandos internos e externos, 2, 6 df, 8, 96, 97, 98, 181
Comentários, 67, 71, 76, 147 disco rígido, 3, 4, 20, 166, 180, 225
Compatibilidade binária, 59 Disquetes, Discos Rígidos e outras mídias, 179
Compatibilidade funcional, 59 distribuição de Linux, 3
Complete, 21 distribuições, 3, 4, 5, 6, 63, 64, 179, 188, 191
Componentes de uma janela, 207 dmesg, 98, 99, 188
composição da listagem longa, 52 DNS, 16, 130, 132, 159
Conectiva, 63, 64 dnsdomainname, 101, 130, 131
Índice Remissivo 275

G
doexec, 101
domainname, 102, 130, 131, 132
DOS, 4, 6, 14, 65, 109, 118, 164, 165, 166, Gnome, 5, 14
168, 169, 170, 171, 172, 174, 176, 177, 179,
GNU, 5, 59, 60, 61, 62, 63, 64, 65, 86, 88, 93,
180, 181, 182, 183, 185, 187, 189, 191 109, 111, 117, 153
GNU C, 63
E GNU General Public License, 5
GNU/Linux, 62, 63
echo, 102, 174, 182, 184, 185, 188 grandes colaboradores, 61
ed, 102, 103, 104, 105, 106, 107, 152, 153 gzip, 126, 127, 128, 129, 130, 154, 182, 186,
Edição da linha de comando, 67 187, 191
egrep, 108, 111

H
Encerrando uma sessão KDE, 196
Endereçando Linhas, 104
Enviando arquivos para a lixeira, 224 hacker, 1
EOF, 58 Hardware Added, 21
Estrutura das permissões, 52 HD detectados, 18
estrutura de decisões, 71 hierarquia das pastas, 42
Eu preciso do Linux?, 164
Histórico dos comandos, 67
ex / view, 112 hostname, 15, 88, 101, 102, 130, 131, 136, 159
Excluir arquivos, 224 Hyperlink, 215
Excluir pastas , 223
excluir um usuário, 163
exit, 26, 116, 174, 175, 190 I
Expressão regular, 105
expressões regulares, 6, 109, 110, 111, 174, 190 IBM, V, 59
Expressões Regulares, 105, 109 Ícone, 10, 208, 226
Extensões Comuns, 191 Ícones, 197, 198, 230
Ícones comuns, 198

F
IEEE, 60
if...fi, 75
imagem de disco, 4
false, 33, 34, 116, 119, 123 inetd.conf, 31
fdformat, 168, 179, 180 informática corporativa, V
Fechando uma sessão login, 26
Iniciando programas, 216
ferramentas do KFM, 227 initlog.conf, 31
Finalizando programas, 220 instalação, VI, 3, 4, 5, 6, 7, 12, 14, 16, 17, 19,
find, 66, 69, 70, 85, 90, 91, 117, 118, 120, 168, 20, 21, 26, 29, 39, 41, 42, 54, 64, 195, 198
177, 178, 189, 190 instalar, 6, 11, 12, 14, 17, 62, 187, 188
finger, 123, 124, 125
Instalar o Linux, 3
Fixando aplicativos, 220 Install Server System, 15
formatado, 4, 179, 181 Installation to begin, 19
Formatos do ponteiro, 194 interativa, 66
FrankPCstain, 11, 12 interface, 1, 2, 5, 6, 9, 12, 14, 15, 37, 38, 64,
free, 63, 125
65, 146, 181, 197, 207
free BSD, 63 Interface, 9, 60
Fujitsu, V interface gráfica, 3, 5
full path, 44 interface orientada a caractere, 9
Funções, 38, 67 Internet, 5, 6, 7, 10, 16, 62, 201, 213, 215
276 Linux: Sistema Operacional II

Internet Intranet e Redes Corporativas, 15 ls, 30, 45, 46, 47, 49, 50, 51, 55, 56, 57, 66,
IP válidos, 16 79, 80, 83, 89, 121, 134, 138, 168, 169, 170,
171, 177, 178, 180, 182, 184, 190
J
job, 175, 176
M
make dir, 45
K Mandrake, 7, 63, 64
Memória virtual, 11
Kde, 5, 11 Menus, 208, 217, 233
KDE, 3, 6, 7, 14, 15, 165, 166, 181, 193, 194, Menus de atalho, 209
195, 196, 197, 198, 199, 200, 201, 203, 204, micro kernel, 4, 5
205, 206, 207, 208, 210, 213, 215, 216, 217, mídias de instalação, 21
220, 224, 229 mkdir, 45, 49, 50, 139, 168, 169, 178, 180
kernel, 4, 10, 11, 18, 21, 32, 60, 62, 64, 98, 99, montador, 62
101, 125, 142, 188 more, 140, 141, 172, 173, 178, 188
Keyboard Selection, 13 mount, 17, 42, 118, 141, 142, 168, 179, 180,
kill, 66, 132, 133, 175, 176 181
mount point, 42

L
Mount point, 18
Mouse Selection, 14
Movendo conteúdos, 206
last, 124, 133
Mover janelas, 212
lilo, 20, 31, 32, 47, 50
Mover/copiar pastas, 222
LILO boot, 21
mtools.conf, 32
Limpando a lixeira, 225
Multitarefa, 11, 174
linguagem de programação embutida, 66
Multitarefa real, 11
linguagens de programação, 5
mv, 143, 168, 172, 173, 174, 178
linguagens script, 5
MySQL, 11
Links Simbólicos, 170
Linux, V, VI, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12,
14, 15, 16, 17, 19, 20, 21, 26, 29, 30, 31, 32, N
33, 35, 36, 38, 39, 40, 41, 42, 43, 54, 57, 58,
59, 60, 61, 62, 63, 64, 65, 72, 76, 91, 93, 99, named.conf, 32
100, 138, 141, 144, 155, 158, 160, 164, 165, não interativa, 66
166, 167, 168, 169, 170, 171, 172, 173, 174, navegação pelas pastas, 42
175, 176, 177, 179, 181, 183, 185, 186, 187, Netscape, 11
189, 191, 192, 193, 195, 196, 197, 202, 207, netstat, 143, 144
224 Nome do arquivo, 58
Linux Loader, 20 nome do dono do arquivo, 55
list structure, 30 Nome do grupo deste arquivo, 56
Lista de Janelas, 200, 201, 218 Nomes de arquivos e extensões, 223
Lixeira, 224 nscd.conf, 32
ln, 134, 135, 170 nsswitch.conf, 32
Localizando arquivos, 228
login, 10, 21, 26, 30, 34, 36, 38, 39, 40, 43, 47,
54, 74, 99, 123, 124, 136, 137, 138, 141,
O
153, 159, 160, 165, 182, 195 O botão "K", 200
logrotate.conf, 32 o que é Linux, 60
Índice Remissivo 277

Opções do botão, 201 produtividade, 2, 164


operação básica, 6 programação, 6, 10, 62, 65, 66, 67, 183, 186
Operação do Shell, 67 Programas em Computadores Remotos, 176
Operações do mouse, 193 programas livres, 61
Prompt, 8, 10
P prompt do Shell, 8, 26
Protocolo, 10, 11
pacotes a serem instalados, 5 PS/2, 14
padrão ethernet, 5 pwd, 43, 44, 45, 46, 47, 48, 49, 55, 66, 147,
padrão Unix, 6 163, 177, 178
Painel KDE, 198, 199, 200
Para desligar o sistema, 28
Partição de carga, 18
R
partição de troca, 19 raiz, 42
particionamento, 4, 17, 18, 19 Reboot, 21
partições existentes, 18 Recuperando arquivos da lixeira, 225
pascal, 5 Red Hat 6.2 Standard, 8
passwd, 33, 34, 36, 138, 144, 145, 161, 162, 190 rede de computadores, 3
password, 10, 40, 161, 162 rede empresarial, 16
Pastas, 222 rede local, 1, 7, 11, 16, 32
path, 30, 34, 44, 47, 101, 119, 120, 182 Redes TCP/IP, 11
pbm2ppa.conf, 32 RedHat, 7, 8, 21, 26, 30, 31, 33, 34, 35, 36, 37,
Perl, 11, 185 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50,
PERL, 5 51, 52, 55, 56, 58, 71, 72, 73, 93, 160, 161,
Permissões e Propriedade, 171, 177 162, 163, 165, 167, 169, 170, 195, 205
Personalizando a área de trabalho, 229 Redimensionar janelas, 212
Personalizando o Sistema, 181 redirection, 66
Pesquisando a ajuda, 215 Regras gerais para ambientes Unix, 29
phhttpd.conf, 32 Removendo atalhos, 233
PHP, 5, 11 Removendo um pasta recursivamente, 46
pico, 37, 38, 39, 41, 68, 69, 71, 72, 75, 96, 184 Removendo uma pasta, 46
pine.conf, 32 Renomear arquivos, 223
ping, 146, 147 Renomear pastas, 222
placa de rede, 15 rm, 46, 48, 49, 50, 147, 148, 168, 172, 173,
pnm2ppa.conf, 32 178, 190
Poderes do root, 29 rmdir, 46, 148, 149, 168, 178
pontos de montagem, 42 root, 3, 4, 5, 8, 16, 17, 18, 26, 28, 29, 30, 31,
Porquê o pingüim, 64 33, 34, 35, 36, 37, 38, 39, 40, 41, 47, 48, 49,
POSIX, 11, 59, 60, 85, 86, 87, 88, 97, 99 50, 51, 52, 55, 56, 58, 71, 72, 73, 83, 84, 89,
Primary nameserver, 16 93, 99, 101, 137, 142, 145, 153, 160, 161,
Primeiro login, 26 162, 163, 166, 168, 171, 172, 175, 179, 180,
principais aplicativos, VI, 64 181, 187, 188, 190, 196, 228
processador 386, 11 rpm, 149, 150, 151, 188, 191
processador de macros, 66 rpmfind.conf, 32
processo de instalação, 4, 42
processos, 3, 4, 10, 26, 27, 28, 29, 60, 132,
133, 175, 176 S
Procurar Arquivos, 201 saber se virar, 8
278 Linux: Sistema Operacional II

U
Saindo do Linux, 166
Samba, 11
SAVE & EXIT SETUP, 13 umount, 158, 168, 180
scripts, 3, 6, 69, 76, 94, 111, 112, 184 UNICODE, 11
sed, 151, 152, 153, 174 Unidade de disco, 222
segurança, VI, 48, 49, 166, 181, 197 Unisys, V
Selecionando arquivos, 229 Unix, V, VI, 5, 6, 8, 9, 10, 11, 14, 17, 29, 30,
Senhas, 161 35, 52, 55, 59, 60, 61, 62, 65, 66, 73, 86,
serial, 14 100, 112, 118, 119, 127, 142, 167, 171, 184
servidores de banco de dados, 2 Usando Diretórios, 177
shared libraries, 11 useradd, 160
Shell, 2, 9, 15, 26, 29, 34, 39, 43, 44, 45, 47, usuário ocasional, VI
48, 49, 50, 54, 57, 62, 65, 66, 67, 68, 69, 72, usuários corporativos, 1
73, 74, 78, 85, 89, 102, 104, 141, 183 Utilitários, 200, 201
shutdown, 27, 28, 29, 33, 36, 41, 196 utilizando a pasta, 46
Shutdown, 197

V
síncronos, 66
sistema computacional, 3
sistema livre completo, 62 validar login, 10
Sistemas Operacionais, V Variáveis, 66
smb.conf, 32 Ver informações das unidades de discos, 225
Sniffer, 11 Verificando conteúdo da pasta, 50
StarOffice, 11 vi, 5, 7, 37, 112, 113, 114, 141, 155, 168, 184
su, 153, 162, 163, 175 vim, 112, 113, 114, 115
superusuário, 16, 29, 30, 39, 43, 47, 153, 160, visualização do KFM, 226
161, 162, 163, 172

W
swap, 11, 19, 87, 89, 101, 114, 115, 125
sysctl.conf, 32
syslog.conf, 32 Web Server Apache, 11
Welcome to Red Hat Linux, 14
T who, 159
Windows, 4, 11, 15, 20, 36, 59, 61, 109, 164,
165, 169, 170, 176, 181, 191, 193, 199, 200,
tar, 36, 85, 86, 88, 153, 154, 155, 168, 169, 206, 207
181, 182, 186, 187, 191 wizards, 8
time zone, 16 Wordstar, 5
Time Zone Selection, 16
Total de links, 55
Trabalhando com "janelas", 207 Y
Travar Tela , 200, 203 yp.conf, 32
treinamento específico, 1 ypserv.conf, 32
1. Observações Gerais .................................................................................. 1
Utilização do Linux e deste livro.................................................................... 1
Visão geral sobre instalação do Linux............................................................. 3
O que acontece na instalação....................................................................... 4
O que este livro aborda .................................................................................. 6
Então para quem serve este livro?................................................................... 6
Instruções para a utilização deste livro............................................................ 7
Por que o Console Linux? .............................................................................. 7
Por que um Linux em português? ................................................................... 8
O CD que acompanha este livro ..................................................................... 8
Convenções utilizadas neste livro................................................................... 8

2. Interface .................................................................................................... 9
Vocabulário básico........................................................................................ 9
Área de trabalho...........................................................................................10
Como o Linux trabalha .................................................................................10
Qual micro aceita o Linux? ........................................................................11
Preparando o micro para receber o Linux .......................................................12
Instalando o Console Linux 1.0.....................................................................12
Etapas para instalação com interface gráfica................................................12
Regras gerais para ambientes Unix .............................................................29
X Linux: Sistema Operacional II

3. Configuração do Linux .......................................................................... 30


O que cada arquivo configura........................................................................31
Arquivo /etc/passwd..................................................................................33
Arquivo /etc/group ....................................................................................34
Arquivo /etc/ftpaccess ...............................................................................36
Arquivo /etc/ftpusers .................................................................................41

4. Comandos de Navegação pelas Pastas.................................................. 42


Organizando dados e programas.................................................................42
Criando uma nova pasta.............................................................................45
Removendo uma pasta ...............................................................................46
Removendo uma pasta recursivamente........................................................46

5. Universo Unix e o Projeto GNU............................................................ 59


Compatibilidade funcional............................................................................59
Compatibilidade binária ................................................................................59
Mas então o que é Linux? .............................................................................60
Onde REALMENTE está o Linux? ...............................................................60
O kernel....................................................................................................60
A confusão..................................................................................................63
Por que o pingüim? ......................................................................................64

6. O Bash..................................................................................................... 65
O que é um Shell..........................................................................................65
Resumindo................................................................................................66
Operação do Shell .....................................................................................67
Parâmetros para scripts ..............................................................................69
Comandos acessíveis pelo Shell .................................................................72

7. Criação de Contas de Acesso............................................................... 160

8. Linux para Usuários DOS/Windows .................................................. 164


Eu preciso do Linux? ..................................................................................164
Pré-requisitos ..........................................................................................165
Conceitos Introdutórios ............................................................................166
E o Windows?.........................................................................................181
C............................................................................................................185
O (1%) Restante......................................................................................186
Sumário XI

9. Sobre o KDE (Versão 1.1.2 em Inglês) ............................................... 193


Operações do mouse...................................................................................193
Formatos do ponteiro..................................................................................194
Iniciando uma sessão de trabalho KDE (login) .............................................195
Localizando a sessão KDE.......................................................................196
Trabalhando com vários ambientes...........................................................196
Encerrando uma sessão KDE (logout).......................................................196
Finalizando o Linux (Shutdown) ..............................................................197
Área de Trabalho do KDE........................................................................197
Painel KDE.............................................................................................199
Barra de Tarefas......................................................................................200
Centro de Controle ..................................................................................203
Área de Transferência.................................................................................205
Conhecendo a área de transferência ..........................................................206
Trabalhando com "janelas" .........................................................................207
O que são "janelas"..................................................................................207
Componentes de uma janela .....................................................................207
Administração de janelas............................................................................212
Mover janelas .........................................................................................212
Redimensionar janelas .............................................................................212
Minimizar, maximizar e restaurar.............................................................213
Ajuda do KDE ...........................................................................................213
Pesquisando a ajuda .................................................................................215
Iniciando programas...................................................................................216
Iniciar programas a partir de ícones ..........................................................216
Iniciar programas a partir do botão "K".....................................................217
Iniciar programas com Alt + F2................................................................217
Alternando entre programas "abertos".......................................................217
Fixando aplicativos..................................................................................220
Finalizando programas.............................................................................220
Administração de discos .............................................................................221
Conceitos gerais ......................................................................................221
Ver informações das unidades de discos ......................................................225
Opções de configuração do KFM .............................................................225
Opções de visualização do KFM ..............................................................226
Usando a barra de ferramentas do KFM....................................................227
Localizando arquivos ...............................................................................228
Selecionando arquivos .............................................................................229
Personalizando a área de trabalho do KDE...................................................229
XII Linux: Sistema Operacional II

Ambientes de trabalho .............................................................................229


Ícones.....................................................................................................230
Painel.....................................................................................................232
Configurações do Mouse .........................................................................234
Configurações do teclado.........................................................................235

Apêndice A. Curiosidades........................................................................ 237

Apêndice B. O Que Há no Linux ............................................................ 247


Aplicativos de Programação não-comerciais recomendados ..........................247
Aplicativos de Programação comerciais recomendados.................................248

Apêndice C. Instalando o Console Linux em um HD já com o


Windows Instalado ............................................................. 250

Apêndice D. Drives e Partições no Linux ............................................... 254


Apêndice E. Porque o Linux é Gratuito ................................................. 256
O que é GNU?...........................................................................................256
Código Aberto ...........................................................................................258
Os fontes são seguros?................................................................................259
Software Livre...........................................................................................260
Conclusões ................................................................................................261

Apêndice F. O Kernel 2.4 do Anúncio ao Lançame nto ........................ 262

Referências Bibliográficas ....................................................................... 271

Índice Remissivo....................................................................................... 273

Você também pode gostar