00442 - linux - sistemas operacionais ii

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.

Upload: api-3822109

Post on 07-Jun-2015

1.150 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 00442 - Linux - Sistemas Operacionais II

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.

Page 2: 00442 - Linux - Sistemas Operacionais II

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.

Page 3: 00442 - Linux - Sistemas Operacionais II

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.

Page 4: 00442 - Linux - Sistemas Operacionais II
Page 5: 00442 - Linux - Sistemas Operacionais II

1

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

Page 6: 00442 - Linux - Sistemas Operacionais II

2 Linux: Sistema Operacional II

usuários demanda o acompanhamento de suas necessidades operacionais, indi-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.

Page 7: 00442 - Linux - Sistemas Operacionais II

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 configu-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.

Page 8: 00442 - Linux - Sistemas Operacionais II

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 Linux é 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.

Page 9: 00442 - Linux - Sistemas Operacionais II

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 mais 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.

Page 10: 00442 - Linux - Sistemas Operacionais II

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

Page 11: 00442 - Linux - Sistemas Operacionais II

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.

Page 12: 00442 - Linux - Sistemas Operacionais II

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

Page 13: 00442 - Linux - Sistemas Operacionais II

9

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.

Page 14: 00442 - Linux - Sistemas Operacionais II

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-

Page 15: 00442 - Linux - Sistemas Operacionais II

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”.

Page 16: 00442 - Linux - Sistemas Operacionais II

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, linguagens 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.

Page 17: 00442 - Linux - Sistemas Operacionais II

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-

Page 18: 00442 - Linux - Sistemas Operacionais II

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?

Page 19: 00442 - Linux - Sistemas Operacionais II

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 configuraçõ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 configuraçõ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

Page 20: 00442 - Linux - Sistemas Operacionais II

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

Page 21: 00442 - Linux - Sistemas Operacionais II

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:

Page 22: 00442 - Linux - Sistemas Operacionais II

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:

Page 23: 00442 - Linux - Sistemas Operacionais II

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

Page 24: 00442 - Linux - Sistemas Operacionais II

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.

Page 25: 00442 - Linux - Sistemas Operacionais II

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.

Page 26: 00442 - Linux - Sistemas Operacionais II

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.

Page 27: 00442 - Linux - Sistemas Operacionais II

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

Page 28: 00442 - Linux - Sistemas Operacionais II

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.

Page 29: 00442 - Linux - Sistemas Operacionais II

Interface 25

Figura 2.6

Figura 2.7

Page 30: 00442 - Linux - Sistemas Operacionais II

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ê,

Page 31: 00442 - Linux - Sistemas Operacionais II

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]

Page 32: 00442 - Linux - Sistemas Operacionais II

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á-

Page 33: 00442 - Linux - Sistemas Operacionais II

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.

Page 34: 00442 - Linux - Sistemas Operacionais II

30

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:

Page 35: 00442 - Linux - Sistemas Operacionais II

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.

Page 36: 00442 - Linux - Sistemas Operacionais II

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 roteamento.

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.

Page 37: 00442 - Linux - Sistemas Operacionais II

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 4 5 6 7

Page 38: 00442 - Linux - Sistemas Operacionais II

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

1 2 3 4

wheel:x:10:root

Page 39: 00442 - Linux - Sistemas Operacionais II

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-

Page 40: 00442 - Linux - Sistemas Operacionais II

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.

Page 41: 00442 - Linux - Sistemas Operacionais II

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.

1

2

3

Figura 3.1

Page 42: 00442 - Linux - Sistemas Operacionais II

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.

Page 43: 00442 - Linux - Sistemas Operacionais II

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.

Page 44: 00442 - Linux - Sistemas Operacionais II

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

Page 45: 00442 - Linux - Sistemas Operacionais II

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.

Page 46: 00442 - Linux - Sistemas Operacionais II

42

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.

Page 47: 00442 - Linux - Sistemas Operacionais II

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 simples-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

Page 48: 00442 - Linux - Sistemas Operacionais II

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.

Page 49: 00442 - Linux - Sistemas Operacionais II

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]$

Page 50: 00442 - Linux - Sistemas Operacionais II

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.

Page 51: 00442 - Linux - Sistemas Operacionais II

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]#

Page 52: 00442 - Linux - Sistemas Operacionais II

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'? ...

Page 53: 00442 - Linux - Sistemas Operacionais II

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

Page 54: 00442 - Linux - Sistemas Operacionais II

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 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]# 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]#

Page 55: 00442 - Linux - Sistemas Operacionais II

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.

Page 56: 00442 - Linux - Sistemas Operacionais II

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 2 3 4 5 6

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:

Page 57: 00442 - Linux - Sistemas Operacionais II

Comandos de Navegação pelas Pastas 53

d

0

rwx

421

rwx

421

rwx

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).

-dl

dono(owner)

grupo(group)

outros(other)

d

0

rwx

421

rwx

421

rwx

421

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:

Page 58: 00442 - Linux - Sistemas Operacionais II

54 Linux: Sistema Operacional II

dir dono(owner)

grupo(group)

outros(other)

d rwx r - - - - -

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 exemplo. 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.

Page 59: 00442 - Linux - Sistemas Operacionais II

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

Page 60: 00442 - Linux - Sistemas Operacionais II

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.

Page 61: 00442 - Linux - Sistemas Operacionais II

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]#

Page 62: 00442 - Linux - Sistemas Operacionais II

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.

Page 63: 00442 - Linux - Sistemas Operacionais II

59

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.

Page 64: 00442 - Linux - Sistemas Operacionais II

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

Page 65: 00442 - Linux - Sistemas Operacionais II

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.

Page 66: 00442 - Linux - Sistemas Operacionais II

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 colaboradores 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 trabalho 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

Page 67: 00442 - Linux - Sistemas Operacionais II

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

Page 68: 00442 - Linux - Sistemas Operacionais II

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 Debian, 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.

Page 69: 00442 - Linux - Sistemas Operacionais II

65

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.

Page 70: 00442 - Linux - Sistemas Operacionais II

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

Page 71: 00442 - Linux - Sistemas Operacionais II

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.

Page 72: 00442 - Linux - Sistemas Operacionais II

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.

Page 73: 00442 - Linux - Sistemas Operacionais II

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:

Page 74: 00442 - Linux - Sistemas Operacionais II

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.

Page 75: 00442 - Linux - Sistemas Operacionais II

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

Page 76: 00442 - Linux - Sistemas Operacionais II

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".

Page 77: 00442 - Linux - Sistemas Operacionais II

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.

Page 78: 00442 - Linux - Sistemas Operacionais II

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.

Page 79: 00442 - Linux - Sistemas Operacionais II

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.

Page 80: 00442 - Linux - Sistemas Operacionais II

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.

Page 81: 00442 - Linux - Sistemas Operacionais II

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.

Page 82: 00442 - Linux - Sistemas Operacionais II

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.

Page 83: 00442 - Linux - Sistemas Operacionais II

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.

Page 84: 00442 - Linux - Sistemas Operacionais II

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).

Page 85: 00442 - Linux - Sistemas Operacionais II

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 ambiente 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

Page 86: 00442 - Linux - Sistemas Operacionais II

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.

Page 87: 00442 - Linux - Sistemas Operacionais II

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.

Page 88: 00442 - Linux - Sistemas Operacionais II

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).

Page 89: 00442 - Linux - Sistemas Operacionais II

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

Page 90: 00442 - Linux - Sistemas Operacionais II

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.

Page 91: 00442 - Linux - Sistemas Operacionais II

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.

Page 92: 00442 - Linux - Sistemas Operacionais II

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 é

Page 93: 00442 - Linux - Sistemas Operacionais II

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.

Page 94: 00442 - Linux - Sistemas Operacionais II

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.

Page 95: 00442 - Linux - Sistemas Operacionais II

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]]

Page 96: 00442 - Linux - Sistemas Operacionais II

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.

Page 97: 00442 - Linux - Sistemas Operacionais II

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 primei-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

Page 98: 00442 - Linux - Sistemas Operacionais II

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:

Page 99: 00442 - Linux - Sistemas Operacionais II

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.

Page 100: 00442 - Linux - Sistemas Operacionais II

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]...

Page 101: 00442 - Linux - Sistemas Operacionais II

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.

Page 102: 00442 - Linux - Sistemas Operacionais II

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.

Page 103: 00442 - Linux - Sistemas Operacionais II

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 ([email protected]) (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

Page 104: 00442 - Linux - Sistemas Operacionais II

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.

Page 105: 00442 - Linux - Sistemas Operacionais II

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.

Page 106: 00442 - Linux - Sistemas Operacionais II

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.

Page 107: 00442 - Linux - Sistemas Operacionais II

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'.

Page 108: 00442 - Linux - Sistemas Operacionais II

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.

Page 109: 00442 - Linux - Sistemas Operacionais II

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 '-'.

Page 110: 00442 - Linux - Sistemas Operacionais II

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.

Page 111: 00442 - Linux - Sistemas Operacionais II

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.

Page 112: 00442 - Linux - Sistemas Operacionais II

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.

Page 113: 00442 - Linux - Sistemas Operacionais II

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

Page 114: 00442 - Linux - Sistemas Operacionais II

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.

Page 115: 00442 - Linux - Sistemas Operacionais II

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

Page 116: 00442 - Linux - Sistemas Operacionais II

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

Page 117: 00442 - Linux - Sistemas Operacionais II

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.

Page 118: 00442 - Linux - Sistemas Operacionais II

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.

Page 119: 00442 - Linux - Sistemas Operacionais II

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.

Page 120: 00442 - Linux - Sistemas Operacionais II

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?

Page 121: 00442 - Linux - Sistemas Operacionais II

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.

Page 122: 00442 - Linux - Sistemas Operacionais II

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.

Page 123: 00442 - Linux - Sistemas Operacionais II

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.

Page 124: 00442 - Linux - Sistemas Operacionais II

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

Page 125: 00442 - Linux - Sistemas Operacionais II

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 ('\').

Page 126: 00442 - Linux - Sistemas Operacionais II

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)

Page 127: 00442 - Linux - Sistemas Operacionais II

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

Page 128: 00442 - Linux - Sistemas Operacionais II

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

Page 129: 00442 - Linux - Sistemas Operacionais II

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.

Page 130: 00442 - Linux - Sistemas Operacionais II

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 ... ]

Page 131: 00442 - Linux - Sistemas Operacionais II

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.

Page 132: 00442 - Linux - Sistemas Operacionais II

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.

Page 133: 00442 - Linux - Sistemas Operacionais II

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.

Page 134: 00442 - Linux - Sistemas Operacionais II

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.

Page 135: 00442 - Linux - Sistemas Operacionais II

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.

Page 136: 00442 - Linux - Sistemas Operacionais II

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, <[email protected]> Bernd Eckenfels, <[email protected]> (NIS and manpage). Steve Whitehouse, <[email protected]> (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.

Page 137: 00442 - Linux - Sistemas Operacionais II

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.

Page 138: 00442 - Linux - Sistemas Operacionais II

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).

Page 139: 00442 - Linux - Sistemas Operacionais II

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 especificaçã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).

Page 140: 00442 - Linux - Sistemas Operacionais II

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.

Page 141: 00442 - Linux - Sistemas Operacionais II

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

Page 142: 00442 - Linux - Sistemas Operacionais II

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 ([email protected]) para HP-UX. Portado para o Linux por Peter Orbaek ([email protected]).

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.

Page 143: 00442 - Linux - Sistemas Operacionais II

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.

Page 144: 00442 - Linux - Sistemas Operacionais II

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.

Page 145: 00442 - Linux - Sistemas Operacionais II

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

Page 146: 00442 - Linux - Sistemas Operacionais II

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

Page 147: 00442 - Linux - Sistemas Operacionais II

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.

Page 148: 00442 - Linux - Sistemas Operacionais II

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.

Page 149: 00442 - Linux - Sistemas Operacionais II

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

Page 150: 00442 - Linux - Sistemas Operacionais II

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 <[email protected]>

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.

Page 151: 00442 - Linux - Sistemas Operacionais II

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...

Page 152: 00442 - Linux - Sistemas Operacionais II

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...

Page 153: 00442 - Linux - Sistemas Operacionais II

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,

Page 154: 00442 - Linux - Sistemas Operacionais II

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]+

Page 155: 00442 - Linux - Sistemas Operacionais II

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 <[email protected]>

Jeff Johnson <[email protected]>

Erik Troan <[email protected]>

sed

Nome sed – Um Stream EDitor

Page 156: 00442 - Linux - Sistemas Operacionais II

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-

Page 157: 00442 - Linux - Sistemas Operacionais II

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.

Page 158: 00442 - Linux - Sistemas Operacionais II

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 ]

Page 159: 00442 - Linux - Sistemas Operacionais II

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.

Page 160: 00442 - Linux - Sistemas Operacionais II

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.

Page 161: 00442 - Linux - Sistemas Operacionais II

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.

Page 162: 00442 - Linux - Sistemas Operacionais II

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.

Page 163: 00442 - Linux - Sistemas Operacionais II

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.

Page 164: 00442 - Linux - Sistemas Operacionais II

160

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.

Page 165: 00442 - Linux - Sistemas Operacionais II

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

Page 166: 00442 - Linux - Sistemas Operacionais II

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.

Page 167: 00442 - Linux - Sistemas Operacionais II

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.

Page 168: 00442 - Linux - Sistemas Operacionais II

164

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 networking, 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%

Page 169: 00442 - Linux - Sistemas Operacionais II

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.

Page 170: 00442 - Linux - Sistemas Operacionais II

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.

Page 171: 00442 - Linux - Sistemas Operacionais II

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.

Page 172: 00442 - Linux - Sistemas Operacionais II

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.

Page 173: 00442 - Linux - Sistemas Operacionais II

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:

Page 174: 00442 - Linux - Sistemas Operacionais II

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 /

Page 175: 00442 - Linux - Sistemas Operacionais II

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 -,

Page 176: 00442 - Linux - Sistemas Operacionais II

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: < > >>

Page 177: 00442 - Linux - Sistemas Operacionais II

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;

Page 178: 00442 - Linux - Sistemas Operacionais II

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 /

Page 179: 00442 - Linux - Sistemas Operacionais II

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

Page 180: 00442 - Linux - Sistemas Operacionais II

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

Page 181: 00442 - Linux - Sistemas Operacionais II

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

Page 182: 00442 - Linux - Sistemas Operacionais II

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.

Page 183: 00442 - Linux - Sistemas Operacionais II

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:

Page 184: 00442 - Linux - Sistemas Operacionais II

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:

Page 185: 00442 - Linux - Sistemas Operacionais II

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:

Page 186: 00442 - Linux - Sistemas Operacionais II

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

Page 187: 00442 - Linux - Sistemas Operacionais II

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.

Page 188: 00442 - Linux - Sistemas Operacionais II

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"

Page 189: 00442 - Linux - Sistemas Operacionais II

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:

Page 190: 00442 - Linux - Sistemas Operacionais II

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 exemplo:

$ 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.

Page 191: 00442 - Linux - Sistemas Operacionais II

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,

Page 192: 00442 - Linux - Sistemas Operacionais II

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.

Page 193: 00442 - Linux - Sistemas Operacionais II

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:

Page 194: 00442 - Linux - Sistemas Operacionais II

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.

Page 195: 00442 - Linux - Sistemas Operacionais II

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.

Page 196: 00442 - Linux - Sistemas Operacionais II

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.

Page 197: 00442 - Linux - Sistemas Operacionais II

193

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.

Page 198: 00442 - Linux - Sistemas Operacionais II

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 at ivar 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 PONTEIRO

NOME OBJETIVO

Ponteiro em forma de "X"

Formato padrão quando o ponteiro estiver sobre o fundo da tela do KDE. Indica que n ão existe, naquele ponto da tela, nenhum objeto que possa ser clicado.

Ponteiro em forma de seta à esquerda

Formato padrão quando o ponteiro do mouse esti-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 cruz com setas

Estando com o ponteiro sobre a barra de título de uma janela e mantendo pressionado o botão esquer-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.

Page 199: 00442 - Linux - Sistemas Operacionais II

Sobre o KDE 195

FORMATO DO PONTEIRO

NOME OBJETIVO

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 "I"

Ponto de inserção utilizado na edição de textos. [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-

Page 200: 00442 - Linux - Sistemas Operacionais II

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 (normal-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);

Page 201: 00442 - Linux - Sistemas Operacionais II

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.

Page 202: 00442 - Linux - Sistemas Operacionais II

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

Page 203: 00442 - Linux - Sistemas Operacionais II

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,

Page 204: 00442 - Linux - Sistemas Operacionais II

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

Page 205: 00442 - Linux - Sistemas Operacionais II

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.

Page 206: 00442 - Linux - Sistemas Operacionais II

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

Page 207: 00442 - Linux - Sistemas Operacionais II

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.

Page 208: 00442 - Linux - Sistemas Operacionais II

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, identifica-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.

Page 209: 00442 - Linux - Sistemas Operacionais II

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 .

Page 210: 00442 - Linux - Sistemas Operacionais II

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

Page 211: 00442 - Linux - Sistemas Operacionais II

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.

Page 212: 00442 - Linux - Sistemas Operacionais II

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

Ícone

Identifica visualmente o programa que está utilizando a janela. Quando clicado, oferece uma série de opções para manipulação da janela.

Pregar Despregar

Quando desativado, a janela pode ser acessada somente no ambiente de trabalho na qual foi aberta. Quando ativado, a janela pode ser acessada de todos os ambientes de traba-lho.

Minimizar

Quando clicado, faz com que a janela desapareça da área de trabalho, mas sem fechar o programa. Ao utilizar Alt +Tab, a janela pode ser vista novamente e selecionada.

Maximizar Restaurar

Quando uma janela ocupa a tela inteira, ela está maximi-zada. Quando ocupa apenas uma parte da tela, está restau-rada. Este botão faz com que seja alternada a opção de exibição da janela, maximizando ou restaurando-a.

Fechar

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-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.

Page 213: 00442 - Linux - Sistemas Operacionais II

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.

Page 214: 00442 - Linux - Sistemas Operacionais II

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.

Page 215: 00442 - Linux - Sistemas Operacionais II

Sobre o KDE 211

APARÊNCIA NOME FORMA DE PREENCHIMENTO / ESCOLHA

Guia

Algumas das caixas de diálogo que exigem muitas informações agrupam controles den-tro de guias (como se fossem páginas). Cli-car sobre a aba de uma guia apenas exibe os controles integrantes daquela guia.

Botão de Comando Clicar sobre um botão de comando executa o comando associado, o qual apresenta-se descrito na face do botão.

Caixa de texto Este tipo de controle disponibiliza um espa-ço no qual você pode digitar texto.

Botões de opção

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 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.

Caixa de verificação

Do tipo "liga / desliga". Representa opções que só aceitam duas alternativas: SIM ou NÃO. Quando você seleciona, está dizendo SIM.

ou

Caixa giratória

ou Barra deslizante

Normalmente associada à escolha de núme-ros, apresenta uma seta acima para aumentar aquele número e uma seta abaixo para redu-zi-lo. Você pode, na maioria das vezes, digi-tar o novo valor para aquela opção.

ou

Caixa de listagem ou

Alternado

Também do tipo "escolha um". É utilizada quando a quantidade de opções é muito grande. Possui uma barra de rolagem para exibir opções acima e abaixo. Clicar sobre um dos itens da listagem significa escolher aquela opção. Algumas caixas de listagem aceitam a escolha de mais de uma opção ao mesmo tempo.

Page 216: 00442 - Linux - Sistemas Operacionais II

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 restau-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:

Page 217: 00442 - Linux - Sistemas Operacionais II

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.

Page 218: 00442 - Linux - Sistemas Operacionais II

214 Linux: Sistema Operacional II

Figura 9.20

Figura 9.21

Page 219: 00442 - Linux - Sistemas Operacionais II

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.

Page 220: 00442 - Linux - Sistemas Operacionais II

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.

Page 221: 00442 - Linux - Sistemas Operacionais II

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.

Page 222: 00442 - Linux - Sistemas Operacionais II

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

Page 223: 00442 - Linux - Sistemas Operacionais II

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 .

Page 224: 00442 - Linux - Sistemas Operacionais II

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.

Page 225: 00442 - Linux - Sistemas Operacionais II

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.

Page 226: 00442 - Linux - Sistemas Operacionais II

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.

Page 227: 00442 - Linux - Sistemas Operacionais II

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.

Page 228: 00442 - Linux - Sistemas Operacionais II

224 Linux: Sistema Operacional II

Excluir arquivos

Quando se elimina um arquivo, ele é excluído direto ou são movidos para a Lixei-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.

Page 229: 00442 - Linux - Sistemas Operacionais II

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

Page 230: 00442 - Linux - Sistemas Operacionais II

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 MENU VIEW

SIGNIFICADO

Show Hidden Files Mostrar Arquivos Ocultos

Faz com que todos os arquivos que estiverem ocultos sejam demonstrado. Normalmente são os arquivos de sistema.

Show Tree Mostrar Árvore

Mostra em duas colunas, do lado esquerdo uma estrutura de pastas e subpastas e do lado direito, o conteúdo das pas-tas e subpastas.

Show Thumbnails Mostrar Marcadores

Os arquivos salvos em GIF terão o seu ícone sendo de-monstrado pelo seu conteúdo.

Dir info View Visão do Diretório

Na barra à esquerda aparecem informações do diretório atual.

HTML View Visão HTML

Destaque para os arquivos HTML.

Icon View Visão Ícone

Mostra os ícones em tamanho grande, um ao lado do outro.

Text View Modo texto

Mostra as pastas e arquivos sem ícone e suas descrições.

Long View Visualização Longa

Mostra tudo, o ícone e suas descrições.

Short View Visão Curta

Mostras os ícones em tamanho pequeno, um ao lado do outro.

Page 231: 00442 - Linux - Sistemas Operacionais II

Sobre o KDE 227

Menu Options (Opções)

OPÇÃO DO MENU OPTIONS

SIGNIFICADO

Show Menu Bar Mostrar Barra de Menu

Barra que dará várias opções de trabalho. Dentro do menu existem itens de menu.

Show Status Bar Mostrar Barra de Status

Descreve algo sobre o arquivo ou pasta sobre a qual você coloca o ponteiro do mouse.

Show Toolbar Mostrar Barra de Ferramentas

Botões de acesso rápido.

Show Location Bar Mostrar Barra de Localização

Local onde você pode digitar o caminho da pasta que deseja.

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.

Page 232: 00442 - Linux - Sistemas Operacionais II

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

Page 233: 00442 - Linux - Sistemas Operacionais II

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;

Page 234: 00442 - Linux - Sistemas Operacionais II

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.

Page 235: 00442 - Linux - Sistemas Operacionais II

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.

Page 236: 00442 - Linux - Sistemas Operacionais II

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;

Page 237: 00442 - Linux - Sistemas Operacionais II

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.

Page 238: 00442 - Linux - Sistemas Operacionais II

234 Linux: Sistema Operacional II

Figura 9.49

Configurações do Mouse

• Pelo K você acessa Default -> Settings -> Input Devices -> Mouse.

Figura 9.50

Page 239: 00442 - Linux - Sistemas Operacionais II

Sobre o KDE 235

Configurações do teclado

• Pelo K você acessa Default -> Settings -> Input Devices -> Keyboard.

Figura 9.51

Page 240: 00442 - Linux - Sistemas Operacionais II
Page 241: 00442 - Linux - Sistemas Operacionais II

237

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

Page 242: 00442 - Linux - Sistemas Operacionais II

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.

Page 243: 00442 - Linux - Sistemas Operacionais II

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:

Page 244: 00442 - Linux - Sistemas Operacionais II

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

Page 245: 00442 - Linux - Sistemas Operacionais II

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.

Page 246: 00442 - Linux - Sistemas Operacionais II

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.

Page 247: 00442 - Linux - Sistemas Operacionais II

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 America-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.

Page 248: 00442 - Linux - Sistemas Operacionais II

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

Page 249: 00442 - Linux - Sistemas Operacionais II

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, DOS, OS/2, NFS

Novell, Apple, NETBIOS e NETBEUI

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

Page 250: 00442 - Linux - Sistemas Operacionais II

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 - -

Page 251: 00442 - Linux - Sistemas Operacionais II

247

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

Page 252: 00442 - Linux - Sistemas Operacionais II

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 orien-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

Page 253: 00442 - Linux - Sistemas Operacionais II

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.

Page 254: 00442 - Linux - Sistemas Operacionais II

250

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

Page 255: 00442 - Linux - Sistemas Operacionais II

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.

Page 256: 00442 - Linux - Sistemas Operacionais II

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 Linux5.

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.

Page 257: 00442 - Linux - Sistemas Operacionais II

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.

Page 258: 00442 - Linux - Sistemas Operacionais II

254

Saber reconhecer os drives e partições no Linux é essencial para as pessoas inician-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

Page 259: 00442 - Linux - Sistemas Operacionais II

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.

Page 260: 00442 - Linux - Sistemas Operacionais II

256

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

Page 261: 00442 - Linux - Sistemas Operacionais II

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 é simples-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 jun-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.

Page 262: 00442 - Linux - Sistemas Operacionais II

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-

Page 263: 00442 - Linux - Sistemas Operacionais II

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.

Page 264: 00442 - Linux - Sistemas Operacionais II

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-

Page 265: 00442 - Linux - Sistemas Operacionais II

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.

Page 266: 00442 - Linux - Sistemas Operacionais II

262

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.

Page 267: 00442 - Linux - Sistemas Operacionais II

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:

Page 268: 00442 - Linux - Sistemas Operacionais II

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

Page 269: 00442 - Linux - Sistemas Operacionais II

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.

Page 270: 00442 - Linux - Sistemas Operacionais II

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

Page 271: 00442 - Linux - Sistemas Operacionais II

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

Page 272: 00442 - Linux - Sistemas Operacionais II

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

Page 273: 00442 - Linux - Sistemas Operacionais II

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.

Page 274: 00442 - Linux - Sistemas Operacionais II
Page 275: 00442 - Linux - Sistemas Operacionais II

271

!INDEX.HTML. [email protected]. 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.

Page 276: 00442 - Linux - Sistemas Operacionais II
Page 277: 00442 - Linux - Sistemas Operacionais II

273

/, 42 /boot, 18 /dev, 18 /dev/hda, 18 /dev/hdb, 18 /dev/ttyS0, 14 /etc, 18, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39,

40, 41, 47, 49, 74, 89, 132, 137, 138, 142, 143, 151, 153, 158, 179, 180, 182

/etc/ftpaccess, 36 /etc/group, 34 /etc/passwd, 33 /home, 18, 26, 33, 34, 43, 44, 45, 46, 47, 48,

49, 52, 83, 84, 89, 177, 178, 182, 189 /tmp/install.log, 19 /usr, 18 /var, 18

A À Maneira do DOS, 179 À Maneira UNIX, 179 Acessando disquetes Linux, 205 acesso remoto, 35 Adicionando atalhos, 232 Administração de discos, 221

Administração de janelas, 212 Ajuda do KDE, 213 Aliases, 67 Alterando data e hora no Linux, 58 Alt erando dono, 56 Alterando grupo, 56 Alterando permissões, 54 Alternando entre programas, 217 Ambientes de Trabalho, 199, 204 anonymous, 36, 40 aplicações gráficas, 2 arch, 72, 73 Área de Transferência, 200, 205, 206 Arquivos, 38, 52, 115, 119, 120, 121, 126,

132, 134, 137, 142, 151, 158, 166, 169, 171, 181, 183, 187, 202, 203, 223, 226

Arquivos Pessoais, 202, 203 ash, 73 assíncronos, 66 Atalhos para programas, 204 Automatic Partitioning, 17

B backup, 6, 84, 135, 138, 143, 153, 170, 181 Barra de Tarefas, 199, 200, 217, 232

Page 278: 00442 - Linux - Sistemas Operacionais II

274 Linux: Sistema Operacional II

Barras de deslocamento, 212 Barras de ferramentas, 209 base operacional, V bash, 3, 6, 29, 33, 34, 62, 65, 71, 72, 133, 162,

165, 167, 182, 183, 184, 185 Berkeley, 63 BIOS FEATURES SETUP, 13 blocos danificados, 19 boot, 3, 4, 5, 8, 13, 20, 31, 62, 98, 181, 188 BOOT SEQUENCE, 13 Bootdisk, 20 bootp/dhcp, 15 Botões comuns, 208 built-in commands, 66

C C, 185 Caixas de diálogo, 210 Calculadora, 201, 230 caminho absoluto, 44, 49 caminho relativo, 44, 45, 46, 48, 49 canhão para acertar uma mosca, 7 caracteres especiais, 15 Carregamento por demanda, 10 case sensitive, 29 cat, 31, 33, 34, 36, 57, 68, 69, 77, 172, 173,

188 catalog, 31 cd, 55 cdrecord.conf, 31 Centro de Controle, 203 change dir, 30, 43 change mode, 55 change owner, 56 chgrp, 56, 78, 79 chown, 56, 80, 81 clear, 29, 81 COBOL, 10, 11, 185 COM1, 14 comandos internos e externos, 2, 6 Comentários, 67, 71, 76, 147 Compatibilidade binária, 59 Compatibilidade funcional, 59 Complete, 21 Componentes de uma janela, 207 composição da listagem longa, 52 Conectiva, 63, 64

conectividade, 2, 5, 11, 35 configuração, VI, 2, 3, 4, 6, 7, 8, 10, 15, 20,

30, 32, 33, 36, 98, 166, 213, 226 configuração do KFM, 225 Configurações do mouse, 234 Configurações do teclado, 235 configurar, 2, 6, 31, 179 Conseguindo Ajuda, 167 Construtores, 67 container, 5, 85, 86 Contas, 160 contas de acesso, 2, 160 Controle de fluxo, 66 Controle de trabalho, 67 Convertendo Arquivos, 191 Copiando arquivos para uma pasta, 47 Copiando conteúdos, 206 cópias de segurança, 4 copy, 47 cp, 47, 49, 81, 82, 83, 168, 172, 173, 174, 180 cpio, 84, 85, 86, 87, 88, 89, 90, 91 crash protection, 10 criação de contas, 4 Criando um simples localizador de arquivos,

69 Criar pastas, 222 Cursor, 10

D Data e hora de sua criação, 57 date, 57, 58, 91, 93, 94, 154, 182 dc, 67, 68, 69, 72, 76, 77, 182 dd, 92, 93, 94, 96, 122, 123, 157 Default gateway, 16 depurar scripts, 6 desconexão do usuário, 26 desenvolver scripts, 6 Desktop, 10, 43, 50, 51, 52, 195, 197, 232 Desligando corretamente o Linux, 27 df, 8, 96, 97, 98, 181 disco rígido, 3, 4, 20, 166, 180, 225 Disquetes, Discos Rígidos e outras mídias, 179 distribuição de Linux, 3 distribuições, 3, 4, 5, 6, 63, 64, 179, 188, 191 dmesg, 98, 99, 188 DNS, 16, 130, 132, 159 dnsdomainname, 101, 130, 131

Page 279: 00442 - Linux - Sistemas Operacionais II

Índice Remissivo 275

doexec, 101 domainname, 102, 130, 131, 132 DOS, 4, 6, 14, 65, 109, 118, 164, 165, 166,

168, 169, 170, 171, 172, 174, 176, 177, 179, 180, 181, 182, 183, 185, 187, 189, 191

E echo, 102, 174, 182, 184, 185, 188 ed, 102, 103, 104, 105, 106, 107, 152, 153 Edição da linha de comando, 67 egrep, 108, 111 Encerrando uma sessão KDE, 196 Endereçando Linhas, 104 Enviando arquivos para a lixeira, 224 EOF, 58 Estrutura das permissões, 52 estrutura de decisões, 71 Eu preciso do Linux?, 164 ex / view, 112 Excluir arquivos, 224 Excluir pastas , 223 excluir um usuário, 163 exit, 26, 116, 174, 175, 190 Expressão regular, 105 expressões regulares, 6, 109, 110, 111, 174, 190 Expressões Regulares, 105, 109 Extensões Comuns, 191

F false, 33, 34, 116, 119, 123 fdformat, 168, 179, 180 Fechando uma sessão login, 26 ferramentas do KFM, 227 Finalizando programas, 220 find, 66, 69, 70, 85, 90, 91, 117, 118, 120, 168,

177, 178, 189, 190 finger, 123, 124, 125 Fixando aplicativos, 220 formatado, 4, 179, 181 Formatos do ponteiro, 194 FrankPCstain, 11, 12 free, 63, 125 free BSD, 63 Fujitsu, V full path, 44 Funções, 38, 67

G Gnome, 5, 14 GNU, 5, 59, 60, 61, 62, 63, 64, 65, 86, 88, 93,

109, 111, 117, 153 GNU C, 63 GNU General Public License, 5 GNU/Linux, 62, 63 grandes colaboradores, 61 gzip, 126, 127, 128, 129, 130, 154, 182, 186,

187, 191

H hacker, 1 Hardware Added, 21 HD detectados, 18 hierarquia das pastas, 42 Histórico dos comandos, 67 hostname, 15, 88, 101, 102, 130, 131, 136, 159 Hyperlink, 215

I IBM, V, 59 Ícone, 10, 208, 226 Ícones, 197, 198, 230 Ícones comuns, 198 IEEE, 60 if...fi, 75 imagem de disco, 4 inetd.conf, 31 informática corporativa, V Iniciando programas, 216 initlog.conf, 31 instalação, VI, 3, 4, 5, 6, 7, 12, 14, 16, 17, 19,

20, 21, 26, 29, 39, 41, 42, 54, 64, 195, 198 instalar, 6, 11, 12, 14, 17, 62, 187, 188 Instalar o Linux, 3 Install Server System, 15 Installation to begin, 19 interativa, 66 interface, 1, 2, 5, 6, 9, 12, 14, 15, 37, 38, 64,

65, 146, 181, 197, 207 Interface, 9, 60 interface gráfica, 3, 5 interface orientada a caractere, 9 Internet, 5, 6, 7, 10, 16, 62, 201, 213, 215

Page 280: 00442 - Linux - Sistemas Operacionais II

276 Linux: Sistema Operacional II

Internet Intranet e Redes Corporativas, 15 IP válidos, 16

J job, 175, 176

K Kde, 5, 11 KDE, 3, 6, 7, 14, 15, 165, 166, 181, 193, 194,

195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 208, 210, 213, 215, 216, 217, 220, 224, 229

kernel, 4, 10, 11, 18, 21, 32, 60, 62, 64, 98, 99, 101, 125, 142, 188

Keyboard Selection, 13 kill, 66, 132, 133, 175, 176

L last, 124, 133 lilo, 20, 31, 32, 47, 50 LILO boot, 21 Limpando a lixeira, 225 linguagem de programação embutida, 66 linguagens de programação, 5 linguagens script, 5 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, 33, 35, 36, 38, 39, 40, 41, 42, 43, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 72, 76, 91, 93, 99, 100, 138, 141, 144, 155, 158, 160, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 181, 183, 185, 186, 187, 189, 191, 192, 193, 195, 196, 197, 202, 207, 224

Linux Loader, 20 list structure, 30 Lista de Janelas, 200, 201, 218 Lixeira, 224 ln, 134, 135, 170 Localizando arquivos, 228 login, 10, 21, 26, 30, 34, 36, 38, 39, 40, 43, 47,

54, 74, 99, 123, 124, 136, 137, 138, 141, 153, 159, 160, 165, 182, 195

logrotate.conf, 32

ls, 30, 45, 46, 47, 49, 50, 51, 55, 56, 57, 66, 79, 80, 83, 89, 121, 134, 138, 168, 169, 170, 171, 177, 178, 180, 182, 184, 190

M make dir, 45 Mandrake, 7, 63, 64 Memória virtual, 11 Menus, 208, 217, 233 Menus de atalho, 209 micro kernel, 4, 5 mídias de instalação, 21 mkdir, 45, 49, 50, 139, 168, 169, 178, 180 montador, 62 more, 140, 141, 172, 173, 178, 188 mount, 17, 42, 118, 141, 142, 168, 179, 180,

181 mount point, 42 Mount point, 18 Mouse Selection, 14 Movendo conteúdos, 206 Mover janelas, 212 Mover/copiar pastas, 222 mtools.conf, 32 Multitarefa, 11, 174 Multitarefa real, 11 mv, 143, 168, 172, 173, 174, 178 MySQL, 11

N named.conf, 32 não interativa, 66 navegação pelas pastas, 42 Netscape, 11 netstat, 143, 144 Nome do arquivo, 58 nome do dono do arquivo, 55 Nome do grupo deste arquivo, 56 Nomes de arquivos e extensões, 223 nscd.conf, 32 nsswitch.conf, 32

O O botão "K", 200 o que é Linux, 60

Page 281: 00442 - Linux - Sistemas Operacionais II

Índice Remissivo 277

Opções do botão, 201 operação básica, 6 Operação do Shell, 67 Operações do mouse, 193

P pacotes a serem instalados, 5 padrão ethernet, 5 padrão Unix, 6 Painel KDE, 198, 199, 200 Para desligar o sistema, 28 Partição de carga, 18 partição de troca, 19 particionamento, 4, 17, 18, 19 partições existentes, 18 pascal, 5 passwd, 33, 34, 36, 138, 144, 145, 161, 162, 190 password, 10, 40, 161, 162 Pastas, 222 path, 30, 34, 44, 47, 101, 119, 120, 182 pbm2ppa.conf, 32 Perl, 11, 185 PERL, 5 Permissões e Propriedade, 171, 177 Personalizando a área de trabalho, 229 Personalizando o Sistema, 181 Pesquisando a ajuda, 215 phhttpd.conf, 32 PHP, 5, 11 pico, 37, 38, 39, 41, 68, 69, 71, 72, 75, 96, 184 pine.conf, 32 ping, 146, 147 placa de rede, 15 pnm2ppa.conf, 32 Poderes do root, 29 pontos de montagem, 42 Porquê o pingüim, 64 POSIX, 11, 59, 60, 85, 86, 87, 88, 97, 99 Primary nameserver, 16 Primeiro login, 26 principais aplicativos, VI, 64 processador 386, 11 processador de macros, 66 processo de instalação, 4, 42 processos, 3, 4, 10, 26, 27, 28, 29, 60, 132,

133, 175, 176 Procurar Arquivos, 201

produtividade, 2, 164 programação, 6, 10, 62, 65, 66, 67, 183, 186 Programas em Computadores Remotos, 176 programas livres, 61 Prompt, 8, 10 prompt do Shell, 8, 26 Protocolo, 10, 11 PS/2, 14 pwd, 43, 44, 45, 46, 47, 48, 49, 55, 66, 147,

163, 177, 178

R raiz, 42 Reboot, 21 Recuperando arquivos da lixeira, 225 Red Hat 6.2 Standard, 8 rede de computadores, 3 rede empresarial, 16 rede local, 1, 7, 11, 16, 32 Redes TCP/IP, 11 RedHat, 7, 8, 21, 26, 30, 31, 33, 34, 35, 36, 37,

38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 58, 71, 72, 73, 93, 160, 161, 162, 163, 165, 167, 169, 170, 195, 205

Redimensionar janelas, 212 redirection, 66 Regras gerais para ambientes Unix, 29 Removendo atalhos, 233 Removendo um pasta recursivamente, 46 Removendo uma pasta, 46 Renomear arquivos, 223 Renomear pastas, 222 rm, 46, 48, 49, 50, 147, 148, 168, 172, 173,

178, 190 rmdir, 46, 148, 149, 168, 178 root, 3, 4, 5, 8, 16, 17, 18, 26, 28, 29, 30, 31,

33, 34, 35, 36, 37, 38, 39, 40, 41, 47, 48, 49, 50, 51, 52, 55, 56, 58, 71, 72, 73, 83, 84, 89, 93, 99, 101, 137, 142, 145, 153, 160, 161, 162, 163, 166, 168, 171, 172, 175, 179, 180, 181, 187, 188, 190, 196, 228

rpm, 149, 150, 151, 188, 191 rpmfind.conf, 32

S saber se virar, 8

Page 282: 00442 - Linux - Sistemas Operacionais II

278 Linux: Sistema Operacional II

Saindo do Linux, 166 Samba, 11 SAVE & EXIT SETUP, 13 scripts, 3, 6, 69, 76, 94, 111, 112, 184 sed, 151, 152, 153, 174 segurança, VI, 48, 49, 166, 181, 197 Selecionando arquivos, 229 Senhas, 161 serial, 14 servidores de banco de dados, 2 shared libraries, 11 Shell, 2, 9, 15, 26, 29, 34, 39, 43, 44, 45, 47,

48, 49, 50, 54, 57, 62, 65, 66, 67, 68, 69, 72, 73, 74, 78, 85, 89, 102, 104, 141, 183

shutdown, 27, 28, 29, 33, 36, 41, 196 Shutdown, 197 síncronos, 66 sistema computacional, 3 sistema livre completo, 62 Sistemas Operacionais, V smb.conf, 32 Sniffer, 11 StarOffice, 11 su, 153, 162, 163, 175 superusuário, 16, 29, 30, 39, 43, 47, 153, 160,

161, 162, 163, 172 swap, 11, 19, 87, 89, 101, 114, 115, 125 sysctl.conf, 32 syslog.conf, 32

T

tar, 36, 85, 86, 88, 153, 154, 155, 168, 169, 181, 182, 186, 187, 191

time zone, 16 Time Zone Selection, 16 Total de links, 55 Trabalhando com "janelas", 207 Travar Tela , 200, 203 treinamento específico, 1

U umount, 158, 168, 180 UNICODE, 11 Unidade de disco, 222 Unisys, V Unix, V, VI, 5, 6, 8, 9, 10, 11, 14, 17, 29, 30,

35, 52, 55, 59, 60, 61, 62, 65, 66, 73, 86, 100, 112, 118, 119, 127, 142, 167, 171, 184

Usando Diretórios, 177 useradd, 160 usuário ocasional, VI usuários corporativos, 1 Utilitários, 200, 201 utilizando a pasta, 46

V validar login, 10 Variáveis, 66 Ver informações das unidades de discos, 225 Verificando conteúdo da pasta, 50 vi, 5, 7, 37, 112, 113, 114, 141, 155, 168, 184 vim, 112, 113, 114, 115 visualização do KFM, 226

W Web Server Apache, 11 Welcome to Red Hat Linux, 14 who, 159 Windows, 4, 11, 15, 20, 36, 59, 61, 109, 164,

165, 169, 170, 176, 181, 191, 193, 199, 200, 206, 207

wizards, 8 Wordstar, 5

Y yp.conf, 32 ypserv.conf, 32

Page 283: 00442 - Linux - Sistemas Operacionais II

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

Page 284: 00442 - Linux - Sistemas Operacionais II

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

Page 285: 00442 - Linux - Sistemas Operacionais II

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

Page 286: 00442 - Linux - Sistemas Operacionais II

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çamento ........................ 262

Referências Bibliográficas ....................................................................... 271

Índice Remissivo....................................................................................... 273