You are on page 1of 93

Linux

Introduo


Matt Welsh
Phil Hughes
David Bandel
Boris Beletsky
Sean Dreilinger
Robert Kiesling
Henry Pierce
Gleydson Mazioli da Silva



Traduo Oficial Alfamdia
Fernando Miguel de Alava Soto
Rodrigo de Losina Silva
Alexandre Folle de Menezes



Verso 1.3, julho/2002.

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica


Os Captulos 3, 5 e 8 so adaptaes do texto:
Guia Foca GNU/Linux
Copyleft 1999-2002 - Gleydson Mazioli da Silva.
Fonte: http://focalinux.cipsga.org.br
O restante do texto uma adaptao do original: Linux Installation and Getting
Started
Copyright 1992-1996 Matt Welsh
Copyright 1998 Specialized Systems Consultants, Inc (SSC)
P.O. Box 55549
Seattle, WA 98155-0549
USA
Phone: +1-206-782-7733
Fax: +1-206-782-7191
E-mail: ligs@ssc.com
URL: http://www.ssc.com/

Traduo autorizada pelo autor.
As marcas registradas utilizadas no decorrer deste documento so usadas
unicamente para fins didticos, sendo estas propriedade de suas respectivas
companhias.
A Alfamdia no assume qualquer responsabilidade por erros ou omisses, ou
por danos resultantes do uso das informaes contidas neste livro.
Traduo para portugus - Brasil, 2002:
Alfamdia Ltda
Rua Flix da Cunha, 818
Porto Alegre - RS - Brasil
Fone/Fax: +55 (51) 3346-7300
E-mail: alfamidia@alfamidia.com.br
URL: http://www.alfamidia.com.br
Traduo para portugus:
Fernando Miguel de Alava Soto (soto@alfamidia.com.br)
Rodrigo de Losina Silva (rodrigo@alfamidia.com.br)
Alexandre Folle de Menezes (menezes@alfamidia.com.br)
Permisso para copiar, distribuir, alterar, conforme licena GNU, desde que
sejam mantidos os crditos acima, incluindo nome e dados da empresa e nome
dos tradutores.
NOTA DO TRADUTOR: FORAM TRADUZIDOS OS CAPTULOS 1 a 3 do Guia
"Linux Installation and Getting Started", de Matt Welsh. O sinal (......) marca
onde partes do texto foram suprimidas na traduo. Basicamente, foram
suprimidos textos considerados pelo tradutor como partes que necessitam uma
atualizao mais profunda ou partes que fazem referncia aos demais
captulos ou partes no traduzidas.

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica

Linux Installation and Getting Started is a free document; you may reproduce
and/or modify it under the terms of version 2 (or, at your option, any later
version) of the GNU General Public License as published by the Free Software
Foundation.
This book is distributed in the hope it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details, in Appendix C.
The authors encourage wide distribution of this book for personal or commercial
use, provided the above copyright notice remains intact and the method
adheres to the provisions of the GNU General Public License (see Appendix C).
In summary, you may copy and distribute this book free of charge or for a profit.
No explicit permission is required from the author for reproduction of this book
in any medium, physical or electronic.
Note, derivative works and translations of this document must be placed under
the GNU General Public License, and the original copyright notice must remain
intact. If you have contributed new material to this book, you must make the
source code (e.g., LaTeX source) available for your revisions. Please make
revisions and updates available directly to the document maintainers,
Specialized Systems Consultants. This will allow for the merging of updates
and provide consistent revisions to the Linux community.
If you plan to publish and distribute this book commercially, donations, royalties,
and/or printed copies are greatly appreciated by the authors and the Linux
Documentation Project. Contributing in this way shows your support for free
software and the Linux Documentation Project. If you have questions or
comments, please contact SSC.

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica


CONTEDO
CONTEDO............................................................................................................... 4
1. INTRODUO..................................................................................................... 8
1.1 SOBRE ESTE LIVRO ............................................................................................ 8
1.2 UMA BREVE HISTRIA DO LINUX...................................................................... 9
1.3 RECURSOS DO SISTEMA................................................................................... 11
1.4 RECURSOS DE SOFTWARE................................................................................ 12
1.4.1 FERRAMENTAS E LINGUAGENS DE PROGRAMAO.......................................... 13
1.4.2 INTRODUO AO SISTEMA X-WINDOWS ......................................................... 14
1.4.3 INTRODUO S REDES.................................................................................. 15
1.4.4 TELECOMUNICAES E SOFTWARES DE BBS................................................... 16
1.4.5 WORLD WIDE WEB........................................................................................ 16
1.4.6 INTERFACE COM O MS-DOS........................................................................... 16
1.4.7 OUTRAS FERRAMENTAS ................................................................................. 17
1.5 QUESTES DE COPYRIGHT .............................................................................. 17
1.6 O PROJETO E A FILOSOFIA DO LINUX.............................................................. 18
1.7 DIFERENAS ENTRE O LINUX E OUTROS SISTEMAS OPERACIONAIS................. 20
1.7.1 PORQUE USAR O LINUX?................................................................................. 20
1.7.2 LINUX VS WINDOWS ...................................................................................... 20
1.7.3 LINUX VS OUTRAS IMPLEMENTAES DE UNIX.............................................. 21
1.8 EXIGNCIAS DE HARDWARE............................................................................ 21
1.8.1 PLACA-ME E CPU........................................................................................ 21
1.8.2 EXIGNCIAS DE MEMRIA.............................................................................. 22
1.8.3 CONTROLADORES DE DISCO RGIDO............................................................... 22
1.8.4 ESPAO EM DISCO.......................................................................................... 22
1.8.5 OUTROS DISPOSITIVOS ................................................................................... 22
1.9 FONTES DE INFORMAO SOBRE O LINUX....................................................... 23
1.9.1 DOCUMENTAO ONLINE .............................................................................. 23
1.9.2 LINUX NA WEB .............................................................................................. 23
1.9.3 LIVROS E OUTROS TRABALHOS PUBLICADOS.................................................... 23
1.9.4 GRUPOS DE DISCUSSO DA USENET ................................................................ 24
1.9.5 LISTAS DE E-MAIL POR INTERNET.................................................................... 24
1.10 BUSCANDO AJUDA SOBRE LINUX...................................................................... 25
2 TUTORIAL SOBRE LINUX ............................................................................. 27
2.1 INTRODUO................................................................................................... 27
2.2 CONCEITOS BSICOS DO LINUX....................................................................... 27
2.2.1 CRIANDO UMA CONTA.................................................................................... 28
2.2.2 LOGANDO...................................................................................................... 28
2.2.3 CONSOLES VIRTUAIS. ..................................................................................... 28
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica

2.2.4 SHELLS E COMANDOS ..................................................................................... 29
2.2.5 LOGOUT......................................................................................................... 30
2.2.6 MUDANDO SUA SENHA................................................................................... 30
2.2.7 ARQUIVOS E DIRETRIOS................................................................................ 30
2.2.8 A RVORE DE DIRETRIOS.............................................................................. 31
2.2.9 O DIRETRIO DE TRABALHO CORRENTE........................................................... 32
2.2.10 REFERINDO-SE A DIRETRIOS HOME................................................................ 33
2.3 PRIMEIROS PASSOS NO LINUX.......................................................................... 33
2.3.1 PASSEANDO POR A......................................................................................... 33
2.3.2 VISUALIZANDO O CONTEDO DE DIRETRIOS.................................................. 34
2.3.3 CRIANDO NOVOS DIRETRIOS......................................................................... 36
2.3.4 COPIANDO ARQUIVOS..................................................................................... 36
2.3.5 MOVENDO ARQUIVOS..................................................................................... 37
2.3.6 EXCLUINDO ARQUIVOS E DIRETRIOS ............................................................. 37
2.3.7 VISUALIZANDO ARQUIVOS.............................................................................. 37
2.3.8 BUSCANDO AJUDA ONLINE.............................................................................. 38
2.4 COMANDOS BSICOS DO UNIX........................................................................ 39
3 COMANDOS PARA MANIPULAO DE DIRETRIOS ............................ 40
3.1 O COMANDO LS................................................................................................ 40
3.2 O COMANDO CD................................................................................................ 41
3.3 O COMANDO PWD.............................................................................................. 41
3.4 O COMANDO MKDIR .......................................................................................... 41
3.5 O COMANDO RMDIR .......................................................................................... 42
4 EXPLORANDO O SISTEMA DE ARQUIVOS................................................ 43
5 COMANDOS PARA MANIPULAO DE ARQUIVOS................................ 47
5.1 O COMANDO RM................................................................................................ 47
5.2 O COMANDO CP................................................................................................ 47
5.3 O COMANDO MV................................................................................................ 48
5.4 O COMANDO LN................................................................................................ 49
5.5 O COMANDO CAT.............................................................................................. 50
5.6 O COMANDO TAC.............................................................................................. 50
5.7 O COMANDO MORE ............................................................................................ 51
5.8 O COMANDO LESS ............................................................................................ 51
5.9 O COMANDO HEAD ............................................................................................ 51
5.10 O COMANDO TAIL ............................................................................................ 52
5.11 O COMANDO TOUCH .......................................................................................... 52
5.12 O COMANDO WC................................................................................................ 53
5.13 O COMANDO SORT ............................................................................................ 53
5.14 O COMANDO DIFF ............................................................................................ 55
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica

6 PERMISSES DE ARQUIVOS......................................................................... 57
6.1 CONCEITOS DE PERMISSES DE ARQUIVOS...................................................... 57
6.2 INTERPRETANDO PERMISSES DE ARQUIVOS................................................... 57
6.3 DEPENDNCIAS DE PERMISSES...................................................................... 58
6.4 MODIFICANDO PERMISSES ............................................................................ 59
7 GERENCIANDO LINKS DE ARQUIVOS....................................................... 60
7.1 LINKS RGIDOS................................................................................................ 60
7.2 LINKS SIMBLICOS.......................................................................................... 61
8 COMANDOS DE BUSCA.................................................................................. 62
8.1 O COMANDO GREP ............................................................................................ 62
8.2 O COMANDO FIND ............................................................................................ 62
8.3 O COMANDO WHICH .......................................................................................... 64
8.4 O COMANDO WHEREIS..................................................................................... 65
9 USANDO O EDITOR VI.................................................................................... 66
9.1 CONCEITOS...................................................................................................... 66
9.2 INICIANDO O VI................................................................................................ 67
9.3 INSERINDO TEXTO ........................................................................................... 67
9.4 APAGANDO TEXTO........................................................................................... 69
9.5 MODIFICANDO TEXTO ..................................................................................... 70
9.6 COMANDOS PARA MOVIMENTAR O CURSOR..................................................... 71
9.7 SALVANDO ARQUIVOS E SAINDO DO VI............................................................. 72
9.8 EDITANDO OUTRO ARQUIVO............................................................................ 72
9.9 INCLUINDO OUTROS ARQUIVOS........................................................................ 73
9.10 RODANDO COMANDOS DO SHELL..................................................................... 74
9.11 AJUDA NO VI .................................................................................................... 74
10 ACESSANDO ARQUIVOS MS-DOS/WINDOWS........................................... 75
11 O SHELL............................................................................................................. 76
11.1 TIPOS DE SHELL............................................................................................... 76
11.2 CARACTERES CORINGA................................................................................... 77
11.3 REDIRECIONAMENTOS E PIPES......................................................................... 79
11.3.1 ENTRADA PADRO E SADA PADRO ............................................................... 79
11.3.2 REDIRECIONANDO ENTRADA E SADA.............................................................. 80
11.3.3 REDIRECIONAMENTO DE SADA NO-DESTRUTIVO........................................... 81
11.3.4 USANDO PIPES................................................................................................ 82
11.4 PERSONALIZANDO SEU AMBIENTE................................................................... 83
11.4.1 VARIVEIS DO SHELL E O AMBIENTE ............................................................... 83
11.4.1.1 A varivel de ambiente PATH..................................................................... 85
11.4.2 SCRIPTS DE INICIALIZAO DO SHELL............................................................. 86
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
7
12 CONTROLE DE TAREFAS.............................................................................. 88
12.1 TAREFAS E PROCESSOS.................................................................................... 88
12.2 FOREGROUND AND BACKGROUND.................................................................... 89
12.3 COLOCANDO TAREFAS EM SEGUNDO PLANO E ABORTANDO TAREFAS.............. 89
12.4 PARANDO E REINICIANDO TAREFAS................................................................. 91

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
LINUX Curso Bsico
8
1. INTRODUO
O Linux possivelmente o mais importante software livre produzido
desde o Space War ou, mais recentemente, o Emacs. Ele evoluiu para um
sistema operacional completo para negcios, educao e uso pessoal. O Linux
no esta mais restrito ao universo de hackers que ficam horas na frente de um
monitor (embora muitos de seus usurios se enquadrem neste grupo).
O Linux um sistema operacional UNIX que executa em uma variedade
de plataformas, principalmente computadores pessoais com processadores
80386 ou seus sucessores. Ele suporta uma vasta gama de softwares, como o
TeX, o Sistema X-Windows, o compilador GNU C/C++, e o TCP/IP. uma
implementao verstil e confivel do UNIX, distribuda livremente nos termos
da Licena Geral de Uso GNU (GNU General Public License).
O Linux pode transformar qualquer computador 386 ou superior em uma
estao de trabalho que coloca em suas mos todo o poder e flexibilidade do
UNIX. Empresas instalam Linux em suas redes de computadores, e usam o
sistema operacional para gerenciar sistemas financeiros e hospitalares,
ambientes de computao distribuda e telecomunicaes. Universidades do
mundo inteiro utilizam o Linux para ministrar cursos de definio e
implementao de sistemas operacionais. Entusiastas por computadores usam
o Linux em casa para programao, como ferramenta de produtividade, e uma
infinidade de outros usos.
O que torna o Linux to diferente de outras opes de sistema
operacional que ele uma implementao gratuita do UNIX. Ele foi e ainda
est sendo desenvolvido cooperativamente por um grupo de voluntrios,
principalmente atravs da Internet, que trocam cdigos, relatam bugs e
resolvem problemas em um ambiente aberto. Todos so bem vindos ao
esforo de desenvolvimento do Linux. Tudo que necessrio o interesse em
mexer em uma implementao do UNIX e algum conhecimento de
programao.
1.1 Sobre este livro
Este livro um guia de instalao e iniciao ao Linux. O propsito
iniciar novos usurios consolidando tanto material quanto possvel em um s
livro. Ao invs de cobrir detalhes tcnicos volteis, que tendem a mudar
rapidamente, damos a voc uma excelente base para que possa descobrir
mais por conta prpria.
O Linux no difcil de instalar e usar. Entretanto, assim como qualquer
implementao do UNIX, h freqentemente uma magia negra envolvida para
fazer com que tudo funcione corretamente. Esperamos que este livro seja seu
ingresso para a excurso no mundo Linux e que mostre quo incrvel um
sistema operacional pode ser.
Neste livro, cobrimos os seguintes tpicos:
? O que o Linux? O projeto e filosofia deste sistema operacional
exclusivo, e o que ele pode fazer por voc.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
9
? Detalhes da execuo do Linux, incluindo sugestes e recomendaes
de configurao de hardware.
? Instrues especficas para instalar vrias distribuies Linux, como
Debian, Red Hat e Slackware.
? Um breve tutorial introdutrio ao UNIX para usurios sem experincia
anterior em UNIX. Esse tutorial deve fornecer material suficiente para
que iniciantes encontrem seu caminho pelo sistema.
(......)
Este livro para usurios que queiram iniciar no Linux. No assumimos
qualquer experincia prvia em UNIX, mas esperamos que os iniciantes
busquem outras fontes de referncia ao longo do aprendizado. (......). Em
geral, este livro feito para ser lido juntamente com outro livro sobre conceitos
bsicos de UNIX.
1.2 Uma Breve Histria do Linux
O UNIX um dos sistemas operacionais mais populares do mundo
devido enorme base instalada do mesmo. Ele foi originalmente desenvolvido
na dcada de 70 na AT&T como um sistema multitarefa para
minicomputadores e mainframes, mas desde ento cresceu para se tornar um
dos sistemas operacionais mais utilizados, apesar de sua interface s vezes
confusa e a falta de uma padronizao centralizada.
Muitos hackers acreditam que o UNIX a "coisa certa", o nico sistema
operacional de verdade. Da, conseqentemente, o desenvolvimento do Linux
se d, em grande parte, por uma comunidade de hackers que desejam "sujar"
suas mos mexendo no seu prprio sistema operacional.
Verses do UNIX existem em muitos sistemas, de computadores
pessoais a supercomputadores como o Cray. A maioria das verses do UNIX
para computadores pessoas, porm, so caras e difceis de utilizar.
O Linux uma verso gratuita do UNIX desenvolvida inicialmente por
Linus Torvalds na Universidade de Helsinque, na Finlndia, com a ajuda de
muitos programadores UNIX espalhados pela Internet. Qualquer um com
conhecimento suficiente e vontade pode alterar e melhorar o sistema. O
kernel (ncleo) do Linux no utiliza nenhum cdigo da AT&T ou de qualquer
outra fonte proprietria, e muito do software disponvel para Linux foi
desenvolvido como parte do projeto GNU da Free Software Foundation, em
Cambridge, Massachusetts, nos Estados Unidos. Entretanto, programadores
do mundo inteiro contriburam para o crescente conjunto de softwares para
Linux.
O Linux foi originalmente desenvolvido como um projeto de passatempo
por Linus Torvalds. Foi inspirado no Minix, um pequeno sistema UNIX
desenvolvido por Andy Tanenbaum. As primeiras discusses sobre o Linux se
realizaram no grupo de discusso da Usenet comp.os.minix. Estas
discusses eram centradas no desenvolvimento de uma verso acadmica do
UNIX para usurios do Minix que queriam um sistema operacional com mais
recursos.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
10
O desenvolvimento inicial do Linux - na poca feito todo em assembly -
lidou principalmente com os recursos multitarefa da interface de modo
protegido do 80386. Linus escreveu:
"Depois desta etapa ficou bem mais simples: um cdigo
complicado, ainda, mas a depurao era bem mais fcil. Eu
comecei a utilizar C neste ponto, e isto certamente acelerou o
desenvolvimento. Foi tambm ento que comecei a pensar
seriamente nas minhas idias megalomanacas de criar um Minix
melhor que o Minix. Eu tinha a esperana de que conseguiria
recompilar o gcc em cima do Linux algum dia."
"Foram pouco mais de dois meses para eu ter um driver de
disco rgido (cheio de bugs, mas que pelo menos na minha
mquina funcionava) e um pequeno sistema de arquivos. Foi
nesta poca que liberei a verso 0.01 (perto do final de agosto de
1991): no era algo bonito, no tinha driver para disquete e no
podia fazer muita coisa. Duvido que algum tivesse chegado a
compilar esta verso. Mas ento eu j estava envolvido, e no
iria parar enquanto no superasse o Minix".
Nenhum anncio jamais foi feito do lanamento da verso 0.01. Os
cdigos fonte no eram sequer executveis. Continham apenas os rudimentos
do kernel e assumiam que voc tinha acesso a uma mquina Minix para
compilar e experimentar com eles.
Em outubro de 1991 Linus anunciou a primeira verso "oficial" do Linux,
que era a verso 0.02. Nesta fase, Linus conseguia rodar o bash (o Bourne
Again Shell do GNU) e o GCC (o compilador C do GNU), mas bem pouco alm
disto. Novamente, tratava-se de um sistema para hackers. O foco principal era
o desenvolvimento do kernel - questes como suporte a usurios,
documentao e distribuio nem haviam sido levantadas. Hoje, a comunidade
Linux ainda tende a tratar estas questes como secundrias perante a
"verdadeira programao": o desenvolvimento do kernel.
Como Linus escreveu no comp.os.minix:
"Voc ainda sente falta dos saudosos dias do Minix-1.1,
quando os homens eram homens e escreviam seus prprios
drivers de dispositivo? Est sem um projeto legal e morrendo de
vontade de cravar seus dentes em um sistema operacional que
voc pode modificar como quiser? Est ficando frustrado quando
tudo funciona no Minix? Com saudades de perder noites tentando
fazer um programa difcil funcionar? Ento esta mensagem para
voc."
"Como havia mencionado um ms atrs, eu estou
trabalhando numa verso gratuita de um sistema parecido com o
Minix para computadores 386. Ele finalmente atingiu o estgio
em que talvez seja at usvel (embora talvez no, dependendo
do que voc quer), e eu estou disposto a disponibilizar os fontes
para uma distribuio mais abrangente. apenas a verso 0.02,
mas consegui com sucesso executar nele o bash, gcc, gnu-make,
gnu-sed, compress, etc."
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
11
Aps a verso 0.03, Linus subiu o nmero de verso para 0.10, j que
mais pessoas estavam trabalhando no projeto. Depois de vrias outras
revises, Linus subiu o nmero de verso para 0.95 em maro de 1992,
refletindo suas expectativas que o sistema estava quase pronto para um
lanamento oficial. (De modo geral, um software no recebe o nmero de
verso 1.0 at que esteja teoricamente completo ou livre de bugs). Quase um
ano e meio depois, no final de dezembro de 1993, o kernel do Linux ainda
estava na verso 0.99.pl14, lentamente se aproximando de 1.0. Hoje, o Linux
j est na verso 2.4.18, e a verso 2.5 j est em desenvolvimento.
A maioria dos principais pacotes gratuitos UNIX j foi portada para o
Linux, e softwares comerciais tambm esto disponveis. Mais hardware
suportado do que na verso original do kernel. Quem iria imaginar que este
"pequeno" clone do UNIX iria crescer at atingir a posio que atingiu no
universo de computadores pessoais.
1.3 Recursos do Sistema
O Linux suporta os recursos normalmente encontrados em outras
implementaes do UNIX, e muitos outros que no so encontrados em
nenhum outro sistema operacional. Nesta seo iremos apresentar
rapidamente os recursos do kernel do Linux.
O Linux um sistema operacional multiusurio e multitarefa completo,
como o so todas as outras verses do UNIX. Isto significa que muitos
usurios diferentes podem entrar e executar programas na mesma mquina
simultaneamente.
O sistema Linux quase totalmente compatvel com diversos padres
UNIX no cdigo fonte, incluindo IEEE POSIX 1, UNIX System V e Berkeley
System Distribution UNIX (BSD UNIX). O Linux foi desenvolvido tendo em
mente a portabilidade do cdigo fonte, e comum encontrar recursos que so
compartilhados por mais de uma plataforma. Boa parte do software livre UNIX
disponvel na Internet compila diretamente em Linux. Adicionalmente, todo o
cdigo fonte do Linux, incluindo Kernel, drivers de dispositivo, bibliotecas,
programas para usurios e ferramentas de desenvolvimento, pode ser
livremente distribudo.
Outros recursos internos especficos do Linux incluem controle de
tarefas POSIX (usado em shells como csh e bash), pseudo-terminais
(dispositivos tty), e suporte para dispositivos lidos dinamicamente para controle
de teclados nacionais ou customizados. Linux tambm suporta consoles
virtuais que permitem que voc troque entre sesses de usurio no mesmo
console de sistema. O Kernel tambm pode emular instrues de ponto
flutuante do 387, de forma que mquinas sem um co-processador aritmtico
podem rodar programas que exijam este tipo de instrues.
O Linux tambm suporta diversos sistemas de arquivo para armazenar
dados, como o ext2, que foi desenvolvido especificamente para o Linux. Os
sistemas de arquivos Xenix e UNIX System V tambm so suportados, bem
como o FAT do MS-DOS e o VFAT do Windows 95. Tambm so suportados
os sistemas de arquivos ISO9660, para CD-ROM, e UDF, para DVD.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
12
O Linux fornece uma implementao completa do software de TCP/IP,
incluindo drivers de dispositivo para vrias placas Ethernet, protocolos SLIP e
PPP, para conexo TCP/IP discada, PLIP e NFS. A gama completa de clientes
e servios TCP/IP tambm suportada, o que inclui FTP, telnet, NNTP e
SMTP.
O kernel do Linux desenvolvido para utilizar os recursos do modo
protegido do Intel 80386 e seus sucessores. Qualquer pessoa familiarizada
com o modo protegido do 80386 sabe que o chip foi desenvolvido para
sistemas multitarefa, como o Linux.
O kernel suporta executveis lidos sob demanda. Apenas aqueles
segmentos do programa que eventualmente esto em uso so lidos do disco
para a memria. Alm disto, se diversas instncias de um programa esto
rodando ao mesmo tempo, elas compartilham a mesma memria fsica, o que
reduz o consumo total de memria.
Visando aumentar a memria disponvel, o Linux tambm implementa
paginao de disco. At um gigabyte de rea de swap pode ser alocada no
disco. Quando o sistema exige mais memria fsica, ele salva as pginas
inativas em disco, permitindo que voc rode aplicaes maiores e suporte mais
usurios. Entretanto, naturalmente h uma perda de velocidade, pois o disco
muito mais lento do que a memria RAM.
O kernel do Linux tambm implementa um gerenciamento de memria
unificado para programas de usurio e cache de disco. Toda a memria livre
utilizada para cache de disco, que reduzido quando so executados
programas grandes.
Executveis usam bibliotecas dinmicas compartilhadas, de forma
semelhante ao mecanismo de compartilhamento de bibliotecas do sistema
operacional SunOS. Conseqentemente, arquivos executveis ocupam menos
espao em disco, em particular aqueles que utilizam muitas funes de
biblioteca. Existem tambm bibliotecas lincadas estaticamente, para
depurao e criao de arquivos binrios completos, para o caso de sistemas
que no tenham as bibliotecas dinmicas instaladas.
Para facilitar a depurao, o kernel gera core dumps (imagens da
memria) para anlise em caso de falha do sistema, tornando possvel
identificar o que fez determinado programa derrubar o sistema.
1.4 Recursos de Software
Praticamente todas as ferramentas que se espera encontrar em uma
implementao padro do UNIX j foram portadas para o Linux, incluindo os
comandos bsicos, como ls, awk, tr, sed, bc, e more. O ambiente de
desenvolvimento de outros sistemas UNIX duplicado no Linux. Todos os
comandos e utilitrios padres esto includos.
Muitos editores de texto esto disponveis, como vi, ex, pico, jove e GNU
Emacs. O editor de texto que voc est acostumado a usar muito
provavelmente j foi portado para o Linux.
A escolha do editor de texto uma questo interessante. Muitos
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
13
usurios UNIX preferem editores "simples" como vi, mas vi tem muitas
limitaes devido a sua idade, e editores modernos como o Emacs tem
ganhado popularidade. O Emacs suporta uma linguagem macro e um
interpretador baseados em Lisp, poderosas sintaxes de comando e outras
extenses. Existem pacotes de macros Emacs que permitem que voc leia e-
mails, edite o contedo de diretrios, etc.
A maioria dos aplicativos bsicos do Linux so softwares GNU.
Aplicativos GNU suportam recursos avanados no encontrados nas verses
padro de programas BSD ou UNIX System V. Por exemplo, o clone GNU do
vi, o elvis, inclui uma linguagem de macro estrutura que diferente da verso
original. Entretanto, os aplicativos GNU permanecem compatveis com as
verses BSD e System V. Muitas pessoas consideram as verses GNU
superiores s originais.
Um shell um programa que l e executa comandos do usurio. Alm
disto, muitos programas shell oferecem recursos como controle de tarefas,
gerenciamento simultneo de diversos processos, redirecionamento de entrada
e sada e uma linguagem de comando para escrita de scripts shell. Um script
shell um programa na linguagem de programao do shell e anlogo aos
arquivos batch do MS-DOS.
Muitos tipos de shell esto disponveis no Linux. A mais importante
diferena entre shells a linguagem de programao. Por exemplo, o C Shell
(csh) usa uma linguagem de comando similar a linguagem de programao C.
O Bourne Shell (sh) usa outra linguagem de comando. A escolha do shell
geralmente baseada na linguagem de comandos que ele oferece e determina
significativamente a qualidade do ambiente de desenvolvimento que estar
sendo oferecido naquele Linux.
O GNU Bourne Again Shell (bash) uma variao do Bourne Shell que
inclui muitos recursos avanados como controle de tarefas, histrico de
comandos, uma interface semelhante ao Emacs para edio de linhas de
comando e outras poderosas extenses do Bourne Shell padro. Outro shell
popular o tcsh, uma verso do C Shell com avanos de funcionalidade
semelhantes ao bash. Outros shells incluem zsh, ksn, ash e rc.
(......)
1.4.1 Ferramentas e Linguagens de Programao
O Linux fornece um ambiente completo de programao UNIX, incluindo
todas as bibliotecas padro, ferramentas de programao, compiladores e
ferramentas de depurao.
So suportados padres como o POSIX.1, o que permite que programas
escritos para o Linux sejam facilmente portados para outros sistemas
operacionais. Programadores profissionais UNIX e administradores de sistema
usam o Linux para desenvolver programas em casa, ento copiam o programa
para outras plataformas UNIX. Estudantes de computao aprendem
programao UNIX e exploram outros aspectos do sistema, como a arquitetura
do kernel, com Linux. Com o Linux, o programador tem acesso ao fonte do
kernel e de todas as bibliotecas.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
14
Dentro do mundo de software UNIX, sistemas e aplicaes so
geralmente programados em C ou C++. O compilador C e C++ padro no
Linux o GNU gcc, que um compilador avanado que suporta C++, incluindo
recursos do ANSI/ISO C++, bem como Objective-C, outra linguagem orientada
a objetos derivada do C.
Alm de C e C++, outras linguagens compiladas e interpretadas j foram
portadas para o Linux, como Smalltalk, FORTRAN, Java, Pascal, Lisp, Scheme
e ADA. Adicionalmente, vrias ferramentas para programao em Assembly,
esto disponveis, bem como interpretadores Perl e Tcl/Tk.
O depurador gdb pode avanar pelo cdigo fonte de um programa, uma
linha por vez, e examinar um core dump para encontrar a causa de uma queda
do programa. A ferramenta gprof permite anlises estatsticas de desempenho,
informando as partes em que o programa gasta mais tempo de execuo.
Como mencionado anteriormente, o editor de texto Emacs fornece um
ambiente de programao que permite a edio e compilao de fontes em
vrias linguagens.
Outras ferramentas incluem o GNU make e GNU image, que permitem
manipular a compilao de grandes aplicaes, e o RCS, um sistema para
controle de verses de cdigo fonte.
Finalmente, o Linux suporta DLLs, que so bibliotecas compartilhadas e
dinamicamente lincadas, e permitem executveis muito menores.
1.4.2 Introduo ao Sistema X-Windows
O Sistema X-Windows, ou simplesmente X, uma poderosa interface
grfica (GUI - Graphical User Interface) para mquinas UNIX e um poderoso
ambiente que suporta muitas aplicaes. Usando o Sistema X-Windows, voc
pode ter diversas janelas de terminal na tela ao mesmo tempo, cada uma tendo
uma sesso de usurio diferente. Um mouse geralmente utilizado com o X,
ainda que no seja indispensvel.
Muitas aplicaes especficas do ambiente X j foram escritas, incluindo
jogos, ferramentas grficas e de programao e ferramentas de documentao.
Atravs de uma rede TCP/IP, uma mquina Linux pode mostrar aplicaes X
que estejam rodando em outras mquinas.
O Sistema X-Windows foi originalmente desenvolvido no MIT
(Massachusetts Institute of Technology) e gratuito. Muitas empresas j
distriburam verses proprietrias aprimoradas do Sistema X-Windows. A
verso do X para Linux o XFree86, uma verso portada do X11R6. O
XFree86 suporta uma larga gama de adaptadores de vdeo, incluindo VGA,
Super VGA e placas aceleradoras de vdeo. O XFree86 inclui o servidor X,
aplicaes, utilitrios, bibliotecas de programao e documentao.
Aplicaes padro do X incluem o xterm, um emulador de terminal
utilizado para executar aplicaes de modo texto em uma janela, entre outros.
Entre as muitas aplicaes em X esto includas planilhas eletrnicas, editores
de texto, ferramentas grficas e navegadores da Web, como o Netscape. Em
teoria, qualquer aplicao desenvolvida para o X ir compilar e executar no
Linux.
A interface do Sistema X-Windows controlada pelo gerenciador de
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
15
janelas. Este programa responsvel pelo posicionamento, movimentao e
redimensionamento das janelas, controle dos cones associados s janelas,
entre outras tarefas semelhantes. O XFree86 inclui o twm, o gerenciador de
janelas clssico do MIT, e gerenciadores de janela avanados, como o Open
Look Virtual Window Manager (olvwm). Outro gerenciador de janelas popular
o fvwm, que mostra as janelas com uma aparncia tridimensional. Muitas
distribuies do Linux utilizam o fvwm como gerenciador padro de janelas.
Uma verso do fvwm chamada fvwm95-2 imita o visual do ambiente de janelas
Windows.
A distribuio do XFree86 inclui bibliotecas de programao para
programadores que desejam desenvolver aplicaes para o X.
A exigncia mnima para utilizar o X um 80386 com pelo menos 4
megabytes de RAM, embora 16 MB ou mais seja recomendvel.
1.4.3 Introduo s Redes
Voc gostaria de se comunicar com o mundo? Linux suporta dois
protocolos de rede UNIX: TCP/IP e UUCP. TCP/IP (Transmission Control
Protocol/Internet Protocol) o paradigma de conexo que permite que
sistemas de todo o mundo se comuniquem em uma rede nica, a Internet.
Com Linux, TCP/IP e uma conexo com a Internet, voc pode se comunicar
com usurios e mquinas atravs de e-mail, news e FTP.
A maioria das redes TCP/IP utiliza a Ethernet como meio fsico de
transporte. O Linux suporta vrias placas Ethernet para computadores
pessoais, incluindo adaptadores PCMCIA.
Entretanto, como nem todos tem uma conexo Ethernet em casa, Linux
tambm suporta os protocolos SLIP e PPP, que permitem o acesso a Internet
via modem. Muitas empresas e universidades possuem servidores SLIP e
PPP. Se seu sistema Linux tem uma conexo Ethernet com a Internet, voc
pode torn-lo tambm um servidor SLIP ou PPP.
O NFS (Network File System) permite que seu sistema Linux compartilhe
arquivos e diretrios com outras mquinas da rede. O FTP permite que voc
transfira arquivos de e para outras mquinas. O Sendmail envia e recebe e-
mails atravs do protocolo SMTP. Telnet, rlogin e rsh permitem que voc entre
em outras mquinas presentes em uma rede e execute comandos nelas. O
finger permite que voc recupere informaes sobre outros usurios da
Internet.
O Linux tambm suporta conexo com mquinas Windows atravs do
Samba e com mquinas Macintosh com AppleTalk e LocalTalk. Suporte ao
protocolo IPX da Novell tambm est includo.
A gama completa de leitores de e-mail e news tambm est disponvel
para o Linux, incluindo elm, pine, rn, nn e tin. Qualquer que seja sua
preferncia, voc pode configurar um sistema Linux para enviar e receber news
e e-mail para qualquer lugar do mundo.
O Linux fornece ainda uma interface padro para a programao de
sockets. Virtualmente qualquer programa que utiliza TCP/IP pode ser portado
para o Linux. O servidor X do Linux tambm suporta TCP/IP, e aplicaes
rodando remotamente podem utilizar o monitor de seu computador.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
16
UUCP (UNIT-to-UNIX Copy) um mecanismo mais antigo de
transferncia de arquivos, e-mails e news entre mquinas UNIX.
Historicamente, mquinas UUCP se conectam por linhas telefnicas, via
modem, mas UUCP pode ser utilizado tambm para transferir dados em uma
rede.
1.4.4 Telecomunicaes e Softwares de BBS
Se voc tem um modem, voc ser capaz de se comunicar com outras
mquinas via pacotes de telecomunicao disponveis para o Linux. Um
pacote popular de comunicao para o Linux o seyon, que fornece uma
interface customizvel e ergonmica no X, e possui suporte para os protocolos
de transferncia de arquivos Kermit e ZModem. Outros programas de
telecomunicao incluem o C-Kermit, pcomm e minicom. So programas
similares aos encontrados em outros sistemas operacionais e relativamente
fceis de utilizar.
Se voc no tem acesso a um servidor SLIP ou PPP, pode utilizar o term
para dividir sua linha serial. O programa term permite que voc abra mais de
uma sesso de usurio em uma conexo por modem. Permite ainda que voc
redirecione conexes de um cliente X para seu servidor X local por uma linha
serial. Outro pacote de software, KA9Q, implementa uma interface SLIP
similar.
1.4.5 World Wide Web
importante observar que o Linux inclui servidores web, bem como
navegadores da web. O servidor mais conhecido o Apache. Milhares de
sistemas Linux rodam Apache na Internet hoje em dia.
Distribuies do Linux incluem diferentes web browsers, e outros podem
ser copiados da Internet. Browsers disponveis incluem Lynx, Mosaic,
Netscape, Arena e Amaya.
O Linux tambm oferece suporte completo para Java e CGI, e o Perl
uma ferramenta padro do ambiente de programao Linux.
1.4.6 Interface com o MS-DOS
Existem diversas ferramentas que fazem interface com o MS-DOS. A
mais conhecida o Linux MS-DOS Emulator, que permite que se execute
aplicativos MS-DOS diretamente do Linux. Ainda que ambos sejam sistemas
operacionais completamente diferentes, o ambiente de modo protegido do
80386 possibilita que aplicaes MS-DOS comportem-se como se estivessem
executando diretamente.
Diversas ferramentas executam no emulador MS-DOS. Naturalmente,
aplicaes MS-DOS que usam recursos bizarros e esotricos do sistema
podem nunca vir a ser suportadas, devido s limitaes inerentes a qualquer
emulador.
Comandos e ferramentas que so padro no MS-DOS, como pkzip.exe,
4dos, e outras, executam normalmente no emulador.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
17
O emulador MS-DOS se destina a ser apenas uma soluo para quem
precisa utilizar algumas poucas aplicaes MS-DOS, e utiliza Linux para todas
as outras atividades. No se destina a ser uma implementao completa do
MS-DOS. Se o emulador no suficiente para atender as suas necessidades,
sempre possvel executar o MS-DOS e o Linux na mesma mquina.
Utilizando o LILO, voc pode especificar na inicializao do sistema qual o
sistema operacional que vai ser executado.
Outro emulador, o WINE, se destina a permitir o uso de aplicativos MS-
Windows, emulando o Microsoft Windows no Sistema X-Windows.
1.4.7 Outras Ferramentas
Um conjunto de outros programas e ferramentas existe para Linux.
Bancos de dados relacionais, como Postgres, Ingres e Mbase, bem como
bancos de dados comerciais, como Oracle, existem em plataforma Linux.
Muitas outras aplicaes j foram portadas para Linux. Se voc no
consegue encontrar o que procura, voc pode voc mesmo portar uma
aplicao de outra plataforma para Linux.
(......)
1.5 Questes de Copyright
O Linux protegido pelo que conhecido como a GNU GPL (GNU
General Public License). A GPL foi desenvolvida pela Free Software
Foundation para o projeto GNU e especifica uma srie de regras para a
distribuio e modificao de software livre. Livre, neste sentido, refere-se a
distribuio, no ao custo.
Originalmente, Linus Torvalds disponibilizou o Linux atravs de uma
licena mais restritiva que a GPL, que permitia que o software fosse livremente
distribudo e modificado, mas que impedia que qualquer quantia em dinheiro
fosse cobrada por sua distribuio e uso. A GPL, por outro lado, permite que
pessoas vendam e tenham lucro com software livre, mas no permite que elas
restrinjam de qualquer forma o direito de outros de distriburem tambm o
software como bem entenderem.
Primeiro preciso que se explique que o software livre protegido pela
GPL no de domnio pblico. Software de domnio pblico, por definio, no
tem um copyright e pertence ao pblico. Software protegido pela GPL, por
outro lado, copyright do autor. O software protegido pelas leis
internacionais de copyright, e o autor est legalmente definido. A GPL protege
softwares que podem ser livremente distribudos, mas que no so de domnio
pblico.
Software GPL tambm no shareware. Normalmente, sharewares
pertencem a um autor que exige que os usurios lhe enviem dinheiro para
utiliz-lo. Softwares GPL podem ser distribudos e utilizados sem que nada
seja cobrado por eles.
A GPL tambm permite que qualquer um utilize, modifique e distribua
suas prprias verses do software. Entretanto, todo e qualquer trabalho
derivado de um software protegido pela GPL precisa, necessariamente,
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
18
tambm ele ser protegido pela mesma licena. Em outras palavras, uma
empresa no pode modificar o Linux e vend-lo protegido por uma licena mais
restritiva que a GPL. Se o software deriva do Linux, ele tem que ser associado
a GPL. Entretanto, voc pode revender qualquer produto derivado do Linux,
desde que o mesmo tambm esteja disponvel gratuitamente.
A primeira vista, isto pode parecer uma contradio. Porque vender
software quando a GPL obriga que o mesmo esteja tambm disponvel
gratuitamente? Imagine que uma empresa grave um CD-ROM com diversos
softwares gratuitos. Obviamente ela teria um custo por este trabalho que teria
que ser cobrado dos interessados em adquirir o produto. A GPL permite que
ela cubra os custos e mesmo tenha lucro vendendo um CD-ROM com software
livre.
Organizaes que vendem software livre tm, porm, que seguir certas
restries definidas na GPL, no podendo restringir os direitos dos usurios
que adquirem o produto. Se voc compra um CD-ROM que contenha produtos
protegidos pela GPL, voc pode copiar e distribuir o CD-ROM sem ter que
pagar nada por isto, e mesmo revend-lo voc mesmo. Os distribuidores tm
que deixar claro para seus compradores que os softwares esto protegidos
pela GPL e disponibilizar o cdigo-fonte dos mesmos sem nenhum custo. Isto
permite que qualquer um que compre software protegido pela GPL possa
modific-lo.
Permitir que empresas distribuam ou vendam software livre algo
importante, pois nem todos tm acesso a Internet e condies de baixar
software de graa. Muitas organizaes vendem Linux em CD-ROM e outras
formas, e lucram com as vendas. Desenvolvedores Linux provavelmente
nunca vo receber uma parcela deste lucro, mas este um entendimento
obtido entre os programadores e distribuidores de softwares que obedecem a
GPL. Em outras palavras, Linus Torvalds sabia que empresas poderiam
vender Linux e que ele poderia no ganhar um centavo com estas vendas.
No mundo do software livre, a questo fundamental no o dinheiro. O
objetivo do software livre sempre de desenvolver e distribuir programas
excelentes e permitir que qualquer um obtenha e use. Na prxima seo, ns
iremos discutir como isto se aplica ao desenvolvimento do Linux.
1.6 O Projeto e a Filosofia do Linux
Novos usurios geralmente tm algumas falsas expectativas sobre o
Linux. importante entender a filosofia e o projeto do Linux para us-lo
efetivamente. Ns iremos comear apresentando qual no a filosofia dele.
Em empresas que desenvolvem verses comerciais do UNIX, o sistema
todo desenvolvido segundo uma poltica rigorosa de controle de qualidade,
que utiliza sistemas de controle de cdigos fonte, documentao e
procedimentos para relatar e resolver bugs. Desenvolvedores no podem
alterar recursos e mudar sees chaves do cdigo ao seu bel prazer. Eles
precisam justificar a mudana como resposta a um relato de bug e em seguida
marcar todas as mudanas no sistema de controle do cdigo fonte, de tal forma
que as mudanas possam ser desfeitas se necessrio. Cada desenvolvedor
responsvel por uma ou mais partes do cdigo, e apenas o responsvel pode
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
19
fazer alteraes em sua seo do cdigo fonte.
Um departamento de controle de qualidade executa rigorosos testes em
cada nova verso do sistema operacional e relata qualquer bug. Os
desenvolvedores consertam os bugs relatados. Um complexo sistema de
anlise estatstica utilizado para garantir que uma certa percentagem dos
bugs seja resolvida antes da liberao da prxima verso do sistema
operacional.
A empresa, naturalmente, precisa ter alguma prova quantificvel que a
prxima verso do sistema operacional est pronta para ser liberada, o que
torna necessria a coleta de anlises estatsticas quanto ao desempenho do
mesmo. um trabalho de grandes propores desenvolver um sistema UNIX
comercial, geralmente empregando centenas, ou mesmo milhares, de
profissionais. Obviamente, no existem dois fabricantes de verses comerciais
do UNIX que sejam exatamente iguais, mas este o cenrio tpico.
O modelo de desenvolvimento do Linux descarta todo o conceito
clssico de desenvolvimento organizado, sistemas de controle de cdigo fonte,
relatrios estruturados de bugs e controle estatstico de qualidade. Linux , e
possivelmente sempre ser, um sistema operacional desenvolvido por hackers.
(Por hacker, queremos dizer um programador expert, dedicado a mexer com
computadores. Este o conceito original da palavra hacker, em contraste com
a conotao de hacker como algum que utiliza o computador com objetivos
ilegais. Atualmente as palavras cracker ou haxor tm ou sido utilizadas para
denominar este segundo grupo de indivduos).
No existe uma organizao exclusivamente responsvel pelo
desenvolvimento do Linux. Qualquer um com conhecimento suficiente pode
auxiliar no desenvolvimento e teste do kernel, no porte de novos softwares, na
escrita de documentao, e mesmo no auxlio a novos usurios. Atravs de
listas de e-mail e grupos Usenet a comunidade Linux mantm contato entre si.
Qualquer um que queira incluir cdigo na verso oficial do kernel pode enviar
um e-mail para Linus Torvalds, que ir testar e decidir se possvel incluir o
cdigo no kernel.
O sistema em si projetado de forma aberta e orientado a recursos. Os
critrios para lanamento de uma nova verso incluem o nmero de bugs
consertados, retorno para usurio durante testes pr-lanamento, etc.
suficiente dizer que nem todos os bugs so corrigidos, nem todos os
problemas so solucionados entre verses. Enquanto as revises estiverem
livres de erros crticos e bugs recorrentes, elas so consideradas estveis.
Qualquer um que desenvolver um novo recurso ou ferramenta
geralmente disponibiliza o mesmo como uma verso alfa, ou seja, uma verso
de teste, para aqueles que quiserem auxiliar na descoberta de problemas no
cdigo. Verses Alfa so geralmente disponibilizadas inicialmente em
determinados sites de ftp, e mensagens so enviadas para uma ou mais listas
de Linux. Usurios que instalam as verses alfa das ferramentas enviam suas
opinies, correes de bugs e perguntas para os autores.
Depois que os primeiros bugs foram resolvidos, o cdigo entra a fase de
Beta teste, na qual considerado estvel, mas incompleto. Ele funciona, mas
nem todos os recursos necessariamente esto presentes. Eventualmente, o
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
20
software pode ir direto para a etapa final, na qual considerado completo e
utilizvel.
Tenha em mente que estas so convenes, no regras. Alguns
programadores podem se sentir to confiantes em seus softwares que optem
por no lanar verses alfa ou beta. Sempre cabe ao desenvolvedor tomar
este tipo de deciso.
Voc pode chegar a duvidar que tal sistema desestruturado de
voluntrios que programam e testam um UNIX completo consigam produzir
resultados. Hoje sabido que o Linux um dos mais eficientes e motivados
esforos de desenvolvimento j realizado. O kernel inteiro do Linux foi
construdo do zero, sem nenhum cdigo proprietrio. Bibliotecas so escritas e
portadas, sistemas de arquivo so desenvolvidos, e drivers de dispositivos so
escritos, tudo graas ao trabalho de voluntrios.
O software Linux geralmente disponibilizado como uma distribuio,
um conjunto de ferramentas j empacotado que compreende todo um sistema.
Seria difcil para a maioria dos usurios instalar um sistema completo do zero,
comeando com o kernel, incluindo ferramentas e instalando todos os
softwares necessrios, sem utilizar uma distribuio. Assim, muitas
distribuies esto disponveis que incluem tudo que necessrio para instalar
e rodar um sistema completo. No existe uma nica distribuio padro.
Existem muitas, e cada uma tem suas vantagens e desvantagens.
1.7 Diferenas entre o Linux e outros Sistemas Operacionais
importante entender as diferenas entre o Linux e outros sistemas
operacionais, como MS-DOS, Windows e outras implementaes de UNIX para
computadores pessoais. Em primeiro lugar, Linux coexiste pacificamente com
outros sistemas operacionais na mesma mquina. Voc pode executar MS-
DOS ou Windows na mesma mquina em que roda Linux.
1.7.1 Porque usar o Linux?
Porque utilizar Linux ao invs de um sistema operacional comercial?
Para usurios e programadores de UNIX e estudantes que tm interesse em
dominar tal plataforma, faz muito mais sentido utilizar um sistema operacional
Linux do que Windows em casa. Para hackers, no sentido sempre de experts
em informtica, Linux o sistema operacional ideal.
Para empresas, Linux pode ser uma soluo mais barata, robusta e
eficiente que outras alternativas. Muitas empresas tm utilizado como forma de
evitar os altos custos anuais com compras de licenas de software, enquanto
outras tm escolhido como forma de utilizar eficientemente mquinas
ultrapassadas, que no rodam nas verses recentes do Windows, mas
funcionam com eficincia em um Linux.
1.7.2 Linux vs Windows
Tanto as diferentes verses do Windows quanto o Linux so sistemas
operacionais multitarefa, suportando aproximadamente os mesmos recursos de
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
21
interface com usurios, conexo com redes de computadores, etc. A
verdadeira diferena que o Linux uma verso do UNIX, beneficiando-se da
contribuio da comunidade UNIX como um todo.
Ao contrrio do Linux, o Windows propriedade de uma nica empresa.
O desenvolvimento do sistema operacional controlado por uma nica
corporao, o que traz vantagens em termos de padronizao e definio de
interface, mas tambm significa que as definies de poltica de preos e
padres a serem utilizados sero todos definidos por uma empresa.
(......)
1.7.3 Linux vs outras implementaes de UNIX
Existem diversas outras implementaes do UNIX para o PC, mesmo
porque a arquitetura do 80386 e de seus sucessores bastante adequada
estrutura do UNIX.
Outras implementaes do UNIX para computadores pessoas so
similares ao Linux. Praticamente todas as verses do UNIX suportam os
mesmos softwares, ambientes de programao e recursos de conexo.
Diferenas existem, porm.
Muitos usurios relatam que o Linux pelo menos to estvel quanto
verses UNIX comerciais. O tempo para o desenvolvimento de novos
recursos, porm, costuma ser significativamente menor.
O mais importante fator, porm, preo. Sendo um software livre, o
Linux pode ser copiado de graa da Internet ou adquirido por um pequeno valor
na forma de uma distribuio em CD-ROM. Se voc pretende instalar o Linux
em um grupo de mquinas, o custo apenas o de comprar uma nica cpia.
Implementaes comerciais do UNIX, por outro lado, oferecem mais do
que apenas o software. Em geral o preo pago pelas mesmas inclui
documentao, suporte e garantias quanto a qualidade. Para grandes
instituies, estas podem ser questes importantes, mas usurios domsticos e
mesmo determinadas empresas podem preferir no seguir por esta alternativa
e fazer uso do Linux gastando um valor muito menor.
(......)
1.8 Exigncias de Hardware
possvel que voc esteja convencido das potencialidades do Linux e
ansioso por aproveitar tudo o que ele tem a fazer. Entretanto, antes de sair
instalando o sistema operacional, voc precisa estar ciente das necessidades e
limitaes do mesmo em termos de hardware.
1.8.1 Placa-me e CPU
O Linux atualmente suporte sistemas com processadores 80386, 80486,
Pentium e suas variaes e sucessores, bem como outros chips compatveis
com Intel. Linux tambm j foi portado para PowerPC, Alpha, MIPS e Sparc.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
22
1.8.2 Exigncias de Memria
O Linux exige muito pouca memria, em comparao com outros
sistemas operacionais avanados. Voc precisa ter pelo menos 4MB de RAM,
mas 16MB recomendvel. Quanto mais memria, mais rpido o sistema ir
rodar. Algumas distribuies podem exigir mais memria RAM.
O Linux suporta o endereamento de 32 bits do processador, utilizando
toda a memria RAM automaticamente.
O Linux ir funcionar em uma mquina com 4MB de RAM, podendo
inclusive executar o sistema X-Windows e o editor Emacs. Entretanto, ter mais
memria to importante quanto ter um processador mais rpido. 16MB
suficiente para muitas aplicaes, mas sistemas que vo operar como
servidores podem precisar de consideravelmente mais memria, de acordo
com o tipo de servio que eles vo executar.
A maioria dos usurios Linux aloca uma poro do disco como espao
de swap, que utilizado como uma memria RAM virtual. Mesmo que seu
computador tenha 16MB ou mais, pode ser interessante utilizar espao de
swap.
1.8.3 Controladores de Disco Rgido
teoricamente possvel executar o Linux de um disquete ou, em
algumas distribuies, diretamente de um CD-ROM, mas para se ter um bom
desempenho necessria uma rea no disco rgido. O Linux pode co-existir
com outros sistemas operacionais - ele apenas precisa de uma ou mais
parties.
O Linux suporta controladores IDE e EIDE. Em geral, se o MS-DOS ou
outro sistema operacional consegue acessar o disco rgido, o Linux tambm
consegue.
1.8.4 Espao em Disco
Obviamente, para instalar o Linux voc precisa de algum espao
disponvel no disco. O Linux suporta mais de um disco rgido, de tal forma que
voc pode instalar partes do sistema em cada disco.
O espao em disco necessrio para o Linux depende de suas
necessidades e do software que voc ir instalar. Para uma implementao do
UNIX, o Linux relativamente pequeno. possvel executar o sistema com
apenas 20MB de espao em disco. Naturalmente, para expanses e grandes
pacotes de software, como as interfaces grficas, mais espao necessrio.
Exigncias realistas de espao em disco variam de 200MB at 1GB ou mais.
Cada distribuio do Linux vem com uma documentao que ir ajud-lo
a definir as necessidades exatas de espao em disco.
1.8.5 Outros Dispositivos
De uma forma geral, todos os dispositivos comumente encontrados em
computadores e mesmo alguns relativamente incomuns so suportados pelo
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
23
Linux. Sempre que surge algum dispositivo novo no mercado que no tem
suporte em Linux, algum da comunidade de desenvolvedores imediatamente
comea a trabalhar em um driver para o mesmo.
(......)
1.9 Fontes de informao sobre o Linux
Existem muitas fontes de informao sobre o Linux. Em particular, livros
sobre o UNIX em geral sero muito teis, especialmente para quem no estiver
familiarizado com o UNIX.
Tambm h muita informao online sobre o Linux. Um bom lugar para
comear o site http://www.linuxresources.com/.
1.9.1 Documentao Online
Muita documentao do Linux est disponvel por FTP annimo de sites
na Internet ao redor do mundo e em redes como a Fidonet e CompuServe.
Distribuies do Linux em CD-ROM tambm contm documentos mencionados
aqui. Se voc pode mandar e-mail para a Internet, tambm pode pegar esses
arquivos usando um dos servidors de e-mail FTP, que mandam os documentos
ou arquivos dos sites de FTP por e-mail.
(......)
1.9.2 Linux na Web
A pgina do Projeto de Documentao Linux (Linux Documentation
Project) est em http://www.linuxdoc.org/. Esta pgina lista muitos
"HOWTOs" e outros documentos em formato HTML, assim como links para
outros sites de interesse de usurios Linux, como o ssc.com, onde est o Linux
Journal, uma revista mensal. Sua home page est em http://www.ssc.com/.
1.9.3 Livros e outros trabalhos publicados
Os livros do Projeto de Documentao Linux so o resultado de um
esforo ao redor da rede para escrever e distribuir um bom conjunto de
manuais para Linux, anlogos documentao que vem com as distribuies
UNIX comerciais, cobrindo instalao, operao, programao, rede, e
desenvolvimento do kernel.
Os manuais do Projeto de Documentao Linux esto disponveis por
FTP annimo e pedidos por correio.
Grandes editoras, incluindo MIS:Press, Digital Press, O'Reilly &
Associates, e SAMS publicaram livros sobre o assunto. Verifique numa livraria
ou na pgina do SSC (http://www.ssc.com/), ou ainda nas anlises no Linux
Journal, disponveis no site http://www.linuxjournal.com.
Um grande nmero de livros sobre UNIX em geral aplicvel ao Linux.
No uso e na interface de programao o Linux no difere muito de outras
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
24
implementaes do UNIX. Quase tudo que voc gostaria de saber sobre usar
e programar o Linux pode ser encontrado em textos genricos sobre UNIX. De
fato, este livro objetiva suplementar a biblioteca de livros UNIX atualmente
disponvel. Aqui, apresentamos os detalhes mais importantes e especficos do
Linux e esperamos que voc procure outras fontes de informao para
aprofundar-se.
Equipado com este e outros bons livros sobre UNIX, voc deve estar
apto a lidar com quase tudo.
A revista Linux Journal distribuda no mundo todo e uma excelente
maneira de manter-se em contato com as novidades da comunidade Linux,
especialmente se voc no tem acesso aos grupos de discusso da Usenet.
1.9.4 Grupos de discusso da Usenet
Usenet um frum de discusso eletrnico com uma seleo diversa de
newsgroups(grupos de discusso), que por sua vez so reas de discusso
voltadas para um tema especfico. Muitos debates sobre desenvolvimento do
Linux ocorrem na Internet e Usenet. H, portanto, um grande nmero de
grupos de discusso dedicados ao Linux.
O primeiro grupo de discusso do Linux, alt.os.linux, foi criado para
centralizar os debates sobre Linux que ocorriam em comp.os.minix e vrias
outras listas de e-mail. Rapidamente, o trfego no alt.os.linux cresceu ao
ponto de ser solicitada a criao de um novo grupo de discusso na hierarquia
comp. Uma votao em Fevereiro de 1992 aprovou a criao do
comp.os.linux.
comp.os.linux tornou-se rapidamente um dos mais populares (e
barulhentos) grupos do Usenet. Mais popular que qualquer outro grupo no
hierrquia comp.os.
Se voc no tem acesso Usenet, h alguns gateways de mail-to-news
disponveis para muitos dos grupos de discusso.
(......)
1.9.5 Listas de e-mail por Internet
Se voc tem acesso a e-mail, voc participar de muitas listas, mesmo
no tendo acesso ao Usenet. Se voc no est conectado diretamente na
Internet, pode se inscrever uma destas listas se puder trocar e-mail com a
Internet (com UUCP, por exemplo).
Para mais informaes sobre listas de e-mail sobre Linux, mande um e-
mail para:
majordomo@vger.rutgers.edu
Inclua uma linha com a palavra help no corpo da mensagem e uma
mensagem ser retornada para voc descrevendo com se cadastrar e
descadastrar de vrias listas de e-mail. A palavra lists em uma linha retorna
o nome de vrias listas que so acessveis pelo servidor
majordomo.vger.rutgers.edu
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
25
H muitas listas de Linux com propsitos especficos. A melhor maneira
de encontrar informao sobre isso observar os newsgroups de Linux na
Usenet, assim como verificar o rol de listas pblicas de e-mail disponveis, que
publicado no grupo news.answers da Usenet.
1.10 Buscando ajuda sobre Linux
Sem dvida alguma voc vai precisar de ajuda durante suas "aventuras"
no mundo Linux. At mesmo experts em UNIX ficam ocasionalmente confusos
com alguma particularidade do Linux. importante saber como, onde e
quando buscar ajuda.
O meio bsico de obter ajuda atravs de listas de e-mail e grupos de
discusso, como discutido nas sees anteriores. Se voc no tem acesso a
essas fontes, voc pode procurar outros meios online, como BBSs e
CompuServe. Tambm est disponvel online o Linux Journal's Best of
Technical Support, no endereo http://www.linuxjournal.com/techsup.html .
Muitas empresas oferecem suporte comercial para o Linux. Muitos
desses servios oferecem contratos de suporte que do acesso a consultas
sobre problemas de Linux.
Mantenha em mente as sugestes abaixo para melhorar sua experincia
em Linux e garantir um maior sucesso na busca de ajuda.
Consulte toda a documentao disponvel primeiro! Esta a primeira
coisa a fazer quando voc encontrar um problema. As documentaes
disponveis foram arduamente escritas para pessoas que precisem de ajuda no
sistema operacional Linux (exemplo: HOWTOs). Como mencionado
anteriormente, livros escritos para UNIX so aplicveis ao Linux e devem ser
usados tambm.
Se voc tem acesso ao Usenet, ou qualquer lista de e-mail sobre Linux,
leia primeiramente a infornao que j foi publicada. Freqentemente,
solues para problemas comuns que no esto cobertas na documentao
so amplamente discutidas nas listas. Se voc publicar uma pergunta sem ler
antes se este assunto j foi tratado, prepare-se para as respostas :).
Aprenda a apreciar a autoconfiana. Voc pediu por isso ao executar o
Linux! Lembre-se, hacking tem tudo a ver com Linux. Ele no um sistema
comercial, nem pretende tornar-se um. Ser esclarecedor investigar e resolver
problemas por conta prpria - voc at poder ser um guru Linux algum dia!
Aprenda a apreciar o valor de vasculhar o sistema e consertar problemas por
conta prpria. No espere, no entanto, criar um sistema Linux totalmente
personalizado sem muita mo de obra.
Mantenha-se calmo. Voc no vai ganhar nada usando uma marreta no
seu computador Linux. Compre um bom saco de pancadas ou saia para uma
longa caminhada. Essa uma boa maneira de aliviar situaes de estresse.
Com a maturidade do Linux e das distribuies, esperamos que estes
problemas diminuam. Entretanto, mesmo UNIX comerciais podem ser
problemticos. Quando tudo falhar, sente-se, inspire fundo e retorne ao
problema quando estiver relaxado. Sua mente e conscincia estaro mais
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
26
claras.
Evite publicar perguntas desnecessrias. Muitas pessoas cometem o
erro de mandar mensagens pedindo ajuda prematuramente. Quando encontrar
algum problema, no corra para mandar uma mensagem na lista. Primeiro,
tente resolver por sua conta, e esteja absolutamente certo do problema que
tem em mos. O seu sistema no liga? Talvez esteja desligado da tomada...
Quando pedir ajuda, faa valer a pena. Lembre-se que as pessoas que
vo ler sua mensagem no esto l necessariamente para ajudar voc.
Lembre-se de ser educado, resumido e informativo tanto quanto possvel.
Como fazer tudo isso? Primeiramente, voc deve incluir toda a
informao relevante possvel sobre seu sistema e problema. Mandando uma
mensagem simples, como: "No consigo fazer o e-mail funcionar"
provavelmente no ser de grande ajuda e vai lev-lo a lugar nenhum a no
ser que voc inclua informao sobre seu sistema, que software usa, o que
voc j tentou fazer e quais os resultados que obteve. Quando incluir
informaes tcnicas, uma boa idia incluir tambm informao sobre as
verses de software utilizadas (verso do kernel, por exemplo), assim como um
breve sumrio da configurao de hardware. Tambm no exagere - o tipo de
monitor e marca provavelmente irrelevante se voc est tentando configurar
sua placa de rede.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
27
2 TUTORIAL SOBRE LINUX
2.1 Introduo
Se voc for novo no UNIX e Linux, pode estar um pouco intimidado pelo
tamanho e aparente complexidade do sistema na sua frente. Este captulo no
entra em grandes detalhes nem trata de tpicos avanados. Ao invs disso,
queremos que voc comece colocando a mo na massa.
Assumimos muito pouco sobre o que voc j sabe, exceto talvez que
voc tenha alguma familiarizao com computadores, e com MS-DOS.
Entretanto, mesmo que voc nunca tenha usado o MS-DOS, deve ser capaz de
entender tudo exposto aqui. primeira vista, o Linux se parece bastante com o
MS-DOS -- mesmo porque, partes do MS-DOS foram modeladas no sistema
operacional CP/M, que por sua vez foi modelado no UNIX. No entanto, s as
caractersticas mais superficiais do Linux lembram o MS-DOS. Mesmo que
voc seja completamente novo ao mundo do PC, este tutorial deve ajud-lo.
E, antes de comearmos: no tenha medo de experimentar. O sistema
no morde.Voc no pode destruir alguma coisa ao trabalhar no sistema. O
Linux tem segurana embutida que previne usurios "normais" de danificarem
arquivos essenciais ao sistema. Mesmo assim, a pior coisa que pode
acontecer que voc apague alguns ou todos os seus arquivos e tenham que
reinstalar o sistema. Assim, por agora voc no tem nada a peder.
2.2 Conceitos Bsicos do Linux
O Linux um sistema operacional multi-tarefa e multi-usurio, o que
significa que muitas pessoas podem rodar aplicaes diferentes em um
computador ao mesmo tempo. Isso difere do MS-DOS, por exemplo, onde
somente uma pessoa pode usar o sistema de cada vez. No Linux, para se
identificar, voc deve "logar" no sistema, o que exige que voc fornea sua
identificao (login - o nome que o sistema usa para identific-lo), e sua senha,
que sua chave pessoal para entrar na sua conta. Como somente voc sabe
sua senha, ningum pode "logar" no sistema usando seu nome de usurio.
Em sistemas UNIX tradicionais, o administrador do sistema determina
um nome de usurio e uma senha inicial quando voc recebe uma conta do
sistema. Entretanto, como neste Linux voc o administrador do sistema,
voc deve configurar sua conta pessoal antes de poder logar. Para os
prximos debates usaremos o nome de usurio imaginrio "larry".
Alm disso, cada sistema tem um nome de mquina (host name)
determinado. o hostname que d nome a sua mquina; d a ela carter e
charme. O hostname usado para identificar mquinas individuais na rede,
mas mesmo que sua mquina no esteja em rede, ela deve ter um hostname.
Para o nosso exemplo, o nome da mquina ser "mousehouse".
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
28
2.2.1 Criando uma conta
Antes que possa usar um sistema Linux recm instalado, voc deve criar
uma conta prpria. No uma boa idia usar a conta root para uso normal;
voc deve reserv-la para rodar comandos privilegiados e para manuteno do
sistema, como discutido abaixo.
Para criar sua conta, entre como root e use o comando useradd ou
adduser.
2.2.2 Logando
No momento do login, voc vai ver um prompt parecido com:
mousehouse login:
Entre seu nome de usurio e pressione <Enter>. Nosso heri, larry, iria
digitar:
mousehouse login: larry
Password:

A seguir, entre sua senha. Os caracteres que voc entrar no sero
mostrados na tela, por isso digite-os com cuidado. Se voc errar sua senha,
vai ver a mensagem "Login incorrect" e deve tentar novamente.
Uma vez que tenha entrado com sucesso o nome de usurio e senha,
voc entrou oficialmente no sistema e est livre para perambular.
2.2.3 Consoles Virtuais.
O console do sistema o monitor e teclado que esto diretamente
ligados no sistema. Como o Linux um sistema operacional multi-usurio,
voc pode ter outros terminais conectados a portas seriais no seu sistema, mas
esses no seriam o console. O Linux, como outras verses do UNIX, fornece
acesso a consoles virtuais (ou VCs), que permitem que voc tenha mais de
uma sesso de login no console ao mesmo tempo.
Para demonstrar isso, entre no sistema. Aps, pressione Alt-F2. Voc
deve ver o prompt "login:" novamente. Voc est na frente do segundo console
virtual.Para mudar novamente para o primeiro VC, pressione Alt-F1. Voila!
Voc est novamente na primeira sesso de login.
Um sistema Linux novo provavelmente permite que voc acesse
somente a primeira meia dzia de VCs, pressionando Alt-F1 at Alt-F6, ou
conforme o nmero de VCs configurados no sistema. possvel habilitar at
12 VCs - um para cada tecla de funo no seu teclado. Como voc pode ver, o
uso de VCs pode ser bem poderoso, pois voc pode trabalhar em vrias
sesses diferentes ao mesmo tempo.
Mesmo que o uso de VCs seja um tanto quanto limitado (afinal, voc
pode ver somente um VC de cada vez), deve dar uma noo das capacidades
multi-usurios do Linux. Enquanto estiver trabalhando com o primeiro VC, voc
pode mudar para o segundo VC e trabalhar em alguma outra coisa.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
29
2.2.4 Shells e comandos
A maioria de sua explorao no mundo Linux se dar atravs de um
shell, um programa que pega comandos que voc digita e os traduz em
instrues para o sistema operacional. Ele pode ser comparado ao
COMMAND.COM, o programa que no MS-DOS faz essencialmente a mesma
coisa. Um shell s uma interface para o Linux. H muitas interfaces
possveis - como o Sistema X Window, que permite que voc rode comandos
usando o mouse e teclado.
Assim que voc entra no login, o sistema inicia um shell e voc pode
comear a digitar comandos. Aqui vemos um exemplo rpido. O Larry "loga" e
fica esperando no prompt do shell:
mousehouse login: larry
Password: (no mostrada)
Welcome to Mousehouse!
/home/larry#

A ltima linha desse texto o prompt do shell, indicando que est pronto
para receber comandos. (Adiante veremos mais sobre o que ele significa).
Vamos tentar dizer ao sistema para fazer algo interessante:
/home/larry# make love
make: *** No way to make target 'love'. Stop.
/home/larry#

Bem, como vemos, make o nome de um programa real no sistema, e o
shell executou o programa quando demos o comando. (Infelizmente, o sistema
no foi muito amigvel.)
Isto nos leva a uma pergunta picante: O que um comando? O que
acontece quando voc digita "make love"? A primeira palavra na linha de
comando, "make", o nome de um comando a ser executado. Todo o reste na
linha de comando tomado como parmetro para o comando. Exemplo:
/home/larry# cp foo bar

O nome deste comando "cp", e os parmetros so "foo" e "bar".
Quando voc entra um comando, o shell faz vrias coisas. Primeiro, ele
verifica o comando para ver se ele interno ao shell. Isto , um comando que
o prprio shell saiba como executar. H vrios comandos assim, e vamos
passar por eles mais tarde. O shell tambm verifica se o comando no um
alias (um nome substituto) para outro comando. Se nenhuma dessas
condies se aplicar, o shell procura um program no disco que tenha o nome
especificado. Se for bem sucedido, o shell roda esse programa, enviando os
parmetros especificados na linha de comando.
No nosso exemplo, o shell procura por um programa chamado "make", e
roda ele com o parmetro "love". "Make" um programa freqentemente
usado para compilar programas grandes, e recebe como parmetros o nome
do "alvo" a ser compilado. No caso do "make love", ns instrumos o "make" a
compilar o arquivo "love". Como o "make" no pde encontrar um destino com
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
30
esse nome, ele falhou com uma mensagem de erro engraada e nos retornou
para o prompt do shell.
O que acontece se digitarmos um comando para o shell e o shell no
conseguir encontrar um programa com o nome especificado? Bem, podemos
tentar o seguinte:
/home/larry# coma lixo
coma: command not found
/home/larry#

Bem simples, se o shell no pode encontrar o comando com o nome
dado (no exemplo, "coma"), ele imprime uma mensagem de erro. Voc vai ver
esta mensagem de erro com freqncia se digitar um comando errado (ex: se
voc digitou "mkae love" ao invs de "make love").
2.2.5 Logout
Antes de nos aprofundarmos ainda mais, temos que lhe contar como dar
logout (sair) do sistema. No prompt do shell, use o comando "exit" para dar
logout. H outras formas ainda, mas esta a que envolve menos riscos.
2.2.6 Mudando sua senha
Voc deve saber como mudar sua senha no sistema. O comando
"passwd" pede pela sua velha senha e por uma nova. Ele tambm pede que
voc redigite a nova para validao. Cuidado para no esquecer sua senha -
se voc esquec-la, s o administrador do sistema pode recuperar seu acesso.
2.2.7 Arquivos e diretrios
Na maioria dos sistemas operacionais (incluindo o Linux), h o conceito
de arquivo, que um monte de informaes com um nome (chamado
filename - nome de arquivo). Exemplos de arquivos so seu trabalho de
concluso de curso, uma mensagem de e-mail, ou um programa que pode ser
executado. Essencialmente, qualquer coisa gravada no disco gravada em
um arquivo individual.
Arquivos so identificados por seus nomes. Por exemplo, um arquivo
contendo seu trabalho de concluso pode ser gravado como nome trabalho-de-
conclusao. Esses nomes usualmente identificam o arquivo e seu contedo de
alguma forma que faa sentido para voc. No h um formato padro para
nomes de arquivo como existe no MS-DOS ou Windows e outros sistemas
operacionais. Em geral, um nome de arquivo pode conter um caracter (exceto
o caracter /) e limitado a 256 caracteres de comprimento.
Com o conceito de arquivos, vem o conceito de diretrios. Um diretrio
uma coleo de arquivos. Voc pode pensar nele como uma "pasta" que
contm muitos arquivos diferentes. Diretrios tambm recebem nomes, com
os quais voc os identifica. Alm disto, diretrios so mantidos em uma
estrutura tipo rvore. Isso significa que diretrios podem conter outros
diretrios.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
31
Conseqentemente, voc pode se referenciar a um arquivo pelo seu
caminho (path), que composto do nome de arquivo, precedido pelo nome do
diretrio que contm o arquivo. Vamos assumir que o Larry, por exemplo,
tenha um diretrio chamado "papers", que contm trs arquivos: history-final,
english-lit, e tese-mestrado. Cada um desses trs arquivos contm informao
sobre um dos projetos do Larry. Para se referir ao arquivo english-lit, o Larry
pode especificar o path como "papers/english-lit".
Como voc pode ver, o diretrio e nome so separados por uma barra
simples ( / ). Por este motivo, os nomes de arquivo no podem conter o
caracter /. Os usurios do MS-DOS iro achar esta conveno familiar,
embora no MS-DOS seja usada a contra-barra ( \ ).
Como mencionado, diretrios podem ser aninhados dentro de outros.
Vamos assumir, por exemplo, que exista outro diretrio dentro de "papers",
chamado "notas". O diretrio "notas" contm os arquivos notas-matematica e
notas-rascunho. O path do arquivo notas-rascunho ser:
papers/notas/notas-rascunho

Assim, o path como um caminho para o arquivo. O diretrio que
contm um dado subdiretrio conhecido como diretrio superior (parent
directory). Aqui, o diretrio papers superior ao diretrio notas.
2.2.8 A rvore de diretrios
A maioria dos sistemas Linux usa um formato padro para guardar os
arquivos, de forma a que recursos e programas possam ser facilmente
localizados. Esse formato forma a rvore de diretrios, que comea com o
diretrio "/", tambm chamado de diretrio raiz. Diretamente abaixo do "/"
esto importantes subdiretrios: /bin, /etc, /dev e /usr, dentre outros. Esses
diretrios, por sua vez, contm outros diretrios que contm arquivos de
configurao do sistema, programas, e assim por diante.
Cada usurio tem um diretrio home (home directory), que o
diretrio reservado para que aquele usurio armazend seus arquivos. Nos
exemplos acima, todos os arquivos do Larry (como notas-rascunho e tese-
mestrado) esto contidos no diretrio home do Larry. Usualmente, diretrios
home esto abaixo do diretrio /home, e seus nomes refletem os usurios aos
quais os diretrios pertencem. O diretrio home do Larry, por exemplo,
/home/larry.
O diagrama abaixo mostra um exemplo de rvore de diretrios que pode
lhe dar uma idia de como a rvore de diretrios do seu sistema est
organizada.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
32

Figura 3.1: Uma rvore de diretrios tpica (abreviada) do Linux.
2.2.9 O diretrio de trabalho corrente
A qualquer momento, assume-se que comandos que voc digita so
relativos ao seu diretrio de trabalho corrente. Voc pode pensar no seu
diretrio de trabalho como o diretrio onde voc est atualmente localizado.
Quando voc entra no sistema, seu diretrio de trabalho configurado como
seu diretrio home - /home/larry, no seu caso. Sempre que se referir a um
arquivo, voc pode faz-lo em relao ao seu diretrio de trabalho corrente, ao
invs de ter que ficar especificando o caminho do arquivo (path).
Aqui vemos um exemplo. Larry tem o diretrio papers, e papers contm
o arquivo history-final. Se o Larry quer ver este arquivo, ele pode usar o
comando
/home/larry# more /home/larry/papers/history-final

O comando "more" simplesmente mostra o arquivo na tela, uma pgina
por vez. Entretanto, como o diretrio de trabalho corrente do Larry
/home/larry, ele pode se referenciar ao arquivo de forma relativa a sua
localizao atual usando o comando
/home/larry# more papers/history-final
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
33

Se voc comea um nome de arquivo com o caracter diferente de /
(como em papers/final), voc est se referenciado a este arquivo de forma
relativa ao seu diretrio de trabalho corrente. Chamamos isso de caminho
relativo (relative path name).
Por outro lado, se voc comea um nome de arquivo com uma "/", o
sistema interpreta isso como o caminho completo - isto , um caminho que
inclui o caminho completo para o arquivo, comeando com o diretrio raiz, /.
Isso chamado de caminho absoluto (absolute path name)
2.2.10 Referindo-se a diretrios home
Tanto com o tcsh quanto com o bash, voc pode especificar o diretrio
home com um caracter til (~). Por exemplo, o comando:
/home/larry# more ~/papers/history-final

equivalente a
/home/larry# more /home/larry/papers/history-final

O shell substitui o caracter ~ pelo nome do seu diretrio home.
Voc tambm pode especificar diretrios home de outros usurios com o
caracter ~. O caminho "~karl/letters" traduzido para "/home/karl/letters" pelo
shell (se /home/karl for o diretrio home do karl). Usar o til como usar um
atalho. No h um diretrio chamado "~" - s uma mozinha oferecida pelo
shell.
2.3 Primeiros passos no Linux
Antes de comearmos, importante ter em mente que todos os nomes
de arquivos e comandos no Linux fazem diferenciao de letras maisculas e
minsculas (diferentemente do Windows ou MS-DOS). O comando "make",
por exemplo, diferente de "Make" ou "MAKE". O mesmo vale para nomes de
arquivos e diretrios.
2.3.1 Passeando por a
Agora que voc pode logar e sabe se referir a arquivos usando
caminhos, como pode mudar o diretrio de trabalho corrente para tornar a vida
mais fcil?
O comando para mover-se por a na estrutura de diretrios "cd", que
um nome curto para "change directory", ou "mudar de diretrio". Muitos dos
comandos mais usados do Linux tm duas ou trs letras. O uso do comando
cd :
cd diretrio

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
34
onde diretrio o nome do diretrio que voc deseja que se torne seu
diretrio de trabalho corrente. Se o Larry quisesse mudar para o subdiretrio
papers, ele usaria o comando:
/home/larry# cd papers
/home/larry/papers#

Como voc pode ver, o prompt do Larry mudou para refletir seu diretrio
de trabalho corrente (assim ele sabe onde est). Agora que ele est no
diretrio papers, ele pode ver o arquivo history-final com o comando:
/home/larry/papers# more history-final

Agora o Larry est trancado no subdiretrio papers. Para mover-se para
cima para o diretrio imediatamente superior (ou parent), use o comando:
/home/larry/papers# cd ..
/home/larry#

(Note o espao entre o "cd" e o "..").
Cada diretrio tem uma entrada chamada ".." que se refere ao diretrio
superior. Similarmente, cada diretrio tem uma entrada chamada ".", que se
refere a ele mesmo. Assim, o comando:
/home/larry/papers# cd .

nos leva a lugar nenhum.
Voc tambm pode usar caminhos absolutos no comando cd. Para ir
para o diretrio home do Karl, podemos usar o comando:
/home/larry/papers# cd /home/karl
/home/karl#

Usando somente cd, sem parmetro algum, ir retorn-lo ao seu
diretrio home:
/home/karl# cd
/home/larry#

2.3.2 Visualizando o contedo de diretrios
Agora que voc sabe como se mover pelos diretrios, voc pode pensar:
"E a?" Mover-se pelos diretrios por si s intil. Vamos introduzir, ento, um
novo comando: o "ls". O comando "ls" mostra uma lista de arquivos e diretrios
- por default do seu diretrio corrente. Por exemplo:
/home/larry# ls
Mail
letters
papers
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
35
/home/larry#

Aqui podemos ver que o Larry tem trs entradas no seu diretrio
corrente: Mail, letters e papers. Isso no nos diz muito - eles so arquivos ou
diretrios? Podemos usar a opo -F do comando ls para ver informao mais
detalhada.
/home/larry# ls -F
Mail/
letters/
papers/
/home/larry#

Atravs da barra ( / ) adicionada a cada nome de arquivo, sabemos que
estas trs entradas so de fato subdiretrios.
O "ls -F" pode tambm acrescentar um asterisco ( * ) no fim dos
arquivos, o que indicaria que o arquivo executvel, ou um programa que
pode ser rodado. Se nada for acrescentado ao nome do arquivo usando "ls -
F", o arquivo um "arquivo simples" (plain), isto , nem um diretrio nem um
executvel.
Em geral, cada comando UNIX pode receber um nmero de opes,
alm dos outros parmetros. Essas opes usualmente comeam com um "-",
como demonstrado acima com a opo "-F". A opo "-F" diz ao ls para dar
mais informaes sobre o tipo dos arquivos envolvidos - neste cado,
imprimindo uma "/" depois do nome de cada diretrio.
Se voc fornecer ao ls um nome de diretrio, o sistema ir mostrar o
contedo desse diretrio.
/home/larry# ls -F papers
english-lit
history-final
tese-mestrado
notas/
/home/larry#

Ou, para uma listagem mais interessante, vamos ver o que h no
diretrio /etc do sistema:
/home/larry# ls /etc
Images ftpusers lpc rc.new shells
adm getty magic rc0.d startcons
bcheckrc gettydefs motd rc1.d swapoff
brc group mount rc2.d swapon
brc~ inet mtab rc3.d syslog.conf
csh.cshrc init mtools rc4.d syslog.pid
....

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
36
Se voc for um usurio MS-DOS, voc pode notar que os nomes de
arquivos podem ser maiores que 8 caracteres, e que podem conter pontos em
qualquer posio. Voc pode at usar mais de um ponto num nome de
arquivo.
Vamos nos mover para o topo da rvore de diretrios, e depois para
baixo, para outro diretrio, com os comandos:
/home/larry# cd ..
/home# cd ..
/# cd usr
/usr# cd bin
/usr/bin#
Voc tambm pode se mover para dentro de vrios diretrios em um
nico passo, como em "cd /usr/bin".
Tente movimentar-se por vrios diretrios, usando o ls e o cd. Talvez
voc encontre algumas mensagens do tipo "Permission denied". Trata-se
apenas da segurana do UNIX mostrando suas garras: para usar o ls ou cd,
voc deve ter permisso para isso.
2.3.3 Criando novos diretrios
hora de aprender a criar diretrios. Isso envolve o uso do comando
mkdri. Tente o seguinte:
/home/larry# mkdir foo
/home/larry# ls -F
Mail/
foo/
letters/
papers/
/home/larry# cd foo
/home/larry/foo# ls
/home/larry/foo#

Parabns! Voc criou um novo diretrio e entrou nele. Como no h
arquivos nesse novo diretrio, vamos aprender como copiar arquivos de um
lugar para o outro.
2.3.4 Copiando arquivos
Para copiar arquvis, use o comando cp, como mostrado:
/home/larry/foo# cp /etc/termcap .
/home/larry/foo# cp /etc/shells .
/home/larry/foo# ls -F
shells termcap
/home/larry/foo# cp shells bells
/home/larry/foo# ls -F
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
37
bells shells termcap
/home/larry/foo#

O comando cp copia os arquivos listados na linha de comando para o
arquivo ou diretrio dado como ltimo argumento. Note que usamos um ponto
(".") para nos referirmos ao diretrio corrente.
2.3.5 Movendo arquivos
O comando mv move arquivos, ao invs de copi-los. A sintaxe bem
direta:
/home/larry/foo# mv termcap sells
/home/larry/foo# ls -F
bells sells shells
/home/larry/foo#

Note que o arquivo termcap foi renomeado para sells. Voc tambm
pode usar o comando mv para mover um arquivo para um diretrio
completamente novo.
Nota: o mv e o cp vo sobreescrever o arquivo destino que tiver o
mesmo nome sem pedir por confirmao. Tome cuidado quando mover um
arquivo em outro diretrio. Pode j existir um nome igual no mesmo diretrio,
que voc ir sobreescrever!
2.3.6 Excluindo arquivos e diretrios
Para excluir um arquivo, use o comando "rm" (que vem de "remover"),
como mostrado aqui:
/home/larry/foo# rm bells sells
/home/larry/foo# ls -F
shells
/home/larry/foo#

Ficamos sem nada, a no ser "shells", mas no nos queixamos. Note
que o rm, por default, no vai pedir confirmao antes de apagar um arquivo -
tome cuidado! Note tambm que voc pode apagar vrios arquivos, passando
uma lista como parmetro ao "rm".
Um comando relacionado ao rm o rmdir. Esse comando exclui um
diretrio, mas somente se o diretrio estiver vazio. Se o diretrio contm
qualquer arquivo, ou subdiretrio, o rmdir vai reclamar.
2.3.7 Visualizando arquivos
Os comandos "more" e "cat" so usados para visualizar o contedo de
arquivos. O "more" mostra um arquivo, uma tela por vez, enquanto o "cat"
mostra todo o arquivo de uma vez.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
38
Para ver o arquivo shells, use o comando:
/home/larry/foo# more /etc/shells

Esse arquivo tem uma lista dos programas shell disponveis no seu
sistema (geralmente est no /etc). Na maioria dos sistemas, ele inclui o /bin/sh,
o /bin/bash e o /bin/csh. Vamos falar sobre os diferentes tipos de shell mais
tarde.
Enquanto estiver usando o "more", pressione a tecla de espaos para
mostrar a prxima pgina, e "b" para mostrar a anterior. H outros comandos
disponveis no "more". Estes so somente os bsicos. Pressione "q" para sair.
Saia do "more" e tente dar um cat em /etc/services. O texto
provavelmente ir passar to rapidamente que voc no poder l-lo. O nome
"cat" vem de "concatenar", que para o que serve esse programa. O comando
"cat" pode ser usado para concatenar o contedo de vrios arquivos e salvar o
resultado em outro arquivo.
2.3.8 Buscando ajuda online
Quase todo o sistema UNIX, incluindo o Linux, fornece uma facilidade
chamada de pginas do manual (manual pages). O manual contm
documentao online para os comandos de sistema, recursos, arquivos de
configurao e assim por diante.
O comando usado para acessar pginas do manual o man. Se voc
est interessado em aprender sobre outras opes do comando "ls", por
exemplo, pode digitar:
/home/larry# man ls

e a pgina do manual para o ls vai ser mostrada.
Infelizmente, muitas pginas de manual so escritas para aqueles que j
tem alguma idia do que o comando ou recurso faz. Por este motivo, as
pginas usualmente contm somente detalhes tcnicos do comando, sem
muita explicao. Entretanto, este pode ser um recurso inestimvel para
refrescar sua memria se voc esqueceu a sintaxe do comando. As pginas
do manual tambm vo contar-lhe sobre comandos que ns no iremos cobrir
neste livro.
Eu sugiro que voc tente o man para comandos que ns j
experimentamos antes e sempre que eu introduzir um novo comando. Alguns
no tero um manual, por vrias razes. Primeiro, a pgina pode ainda no ter
sido escrita. (O Linux Documentation Project responsvel pelas pginas de
manual no Linux). Segundo, o comando pode ser um comando interno do shell
ou um alias, que no teria uma pgina de manual prpria. Um exemplo o cd,
que um comando interno do shell. O shell mesmo processa o cd - no h um
programa separado que implementa esse comando.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
39
2.4 Comandos bsicos do UNIX
Esta seo introduz alguns dos comandos bsicos mais teis num
sistema UNIX, incluindo aqueles que foram discutidos nas sees anteriores.
Note que opes usualmente comeam com "-", e na maioria dos casos
voc pode especificar mais de uma opo em um nico "-". Por exemplo, ao
invs de usar o comando "ls -l -F", voc pode usar "ls -lF".
Ao invs de listar todas as opes para cada comando, vamos
apresentar somente os comandos teis ou importantes por agora. De fato, a
maioria dos comandos tem muitas opes que voc nunca vai usar. Voc
pode usar o man para ver as pginas de manual para cada comando, que
listam todas as opes disponveis.
Note tambm que muitos desses comandos tm como parmetros uma
lista de arquivos ou diretrios, marcados nesta tabela como "arquivo1 ...
arquivoN". Por exemplo, o comando cp recebe como parmetro uma lista de
arquivos para copiar, seguida de um arquivo ou diretrio destino. Quando
estiver copiando mais de um arquivo, o destino deve ser um diretrio.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
40
3 COMANDOS PARA MANIPULAO DE DIRETRIOS
Abaixo comandos teis para a manipulao de diretrios. Um diretrio
usado para armazenar arquivos de um determinado tipo. O diretrio pode ser
entendido como uma pasta onde voc guarda seus papeis (arquivos). Como
uma pessoa organizada, voc utilizar uma pasta para guardar cada tipo de
documento, da mesma forma voc pode criar um diretrio vendas para guardar
seus arquivos relacionados com vendas naquele local.
3.1 O comando ls
Mostra informao sobre os nomes de arquivos e diretrios.
Sintaxe:
ls [opes] [caminho/arquivo] [caminho1/arquivo1] ...
onde:
? caminho/arquivo: Diretrio/arquivo que ser listado.
? caminho1/arquivo1: Outro Diretrio/arquivo que ser listado.
Podem ser feitas vrias listagens de uma s vez.
? opes: Modificam o comportamento do comando
o -a Lista todos os arquivos (inclusive os ocultos) de um
diretrio.
o -l Usa o formato longo para listagem de arquivos.
Lista as permisses, data de modificao, donos, grupos, etc.
o -F Insere um caracter aps arquivos executveis ('*'),
diretrios ('/'), soquete ('='), link simblico ('@') e pipe ('|'). Seu
uso til para identificar de forma fcil tipos de arquivos nas
listagens de diretrios.
o --color=PARAM Mostra os arquivos em cores diferentes,
conforme o tipo de arquivo. PARAM pode ser:
? never nunca lista em cores (mesma coisa de no
usar o parmetro --color).
? always sempre lista em cores conforme o tipo de
arquivo.
? auto somente colore a listagem se estiver em um
terminal.
A listagem pode ser classificada usando-se as seguintes opes:
? -f No ordena, e usa -au para listar os arquivos.
? -r Inverte a seqncia de ordenao.
? -c Ordena pela data de alterao.
? -X Ordena pela extenso.
? -U No ordena, lista os arquivos na ordem do diretrio.


LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
41
Exemplos:
ls lista os arquivos do diretrio atual.
ls /bin /sbin lista os arquivos do diretrio /bin e /sbin
ls -la /bin listagem detalhada e completa dos arquivos do diretrio
/bin
3.2 O comando cd
Muda o diretrio de trabalho atual. necessrio ter a permisso de
execuo para entrar no diretrio.
Sintaxe:
cd [diretorio]
onde:
diretorio - diretrio para onde se deseja mudar. "." se refere ao diretrio
corrente, ".." ao diretrio superior na hierarquia, e ~ o diretrio padro do
usurio. Se nenhum diretrio for especificado, ~ assumido.

Exemplos:
cd retorna ao diretrio padro do usurio.
cd / muda para o diretrio raiz.
cd /etc muda para o diretrio /etc.
cd - retorna ao diretrio anteriormente acessado.
cd .. sobe um diretrio na hierarquia.
3.3 O comando pwd
O comando pwd pode ser usado para verificar em qual diretrio o
usurio se encontra, caso seu aviso de comandos no mostre isso.

Exemplo:
pwd mostra o nome e caminho do diretrio atual
3.4 O comando mkdir
Cria um novo diretrio.
Sintaxe:
mkdir [opes] [caminho/diretrio] [caminho1/diretrio1]
onde:
? caminho Caminho onde o diretrio ser criado.
? diretrio Nome do diretrio que ser criado.
? opes: Modificam o comportamento do comando:
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
42
o --verbose mostra uma mensagem para cada diretrio
criado. As mensagens de erro sero mostradas mesmo que
esta opo no seja usada.
Para criar um novo diretrio, voc deve ter permisso de gravao no
diretrio pai do novo diretrio.

Exemplos:
mkdir /home/larry/test cria o diretrio test em /home/larry.
mkdir test1 test2 cria os diretrios test1 e test2 dentro do
diretrio atual.
3.5 O comando rmdir
Remove diretrios. Este comando faz exatamente o contrrio do mkdir.
O diretrio a ser removido deve estar vazio e voc deve ter permisso de
gravao para remove-lo. Alm disso, o diretrio de trabalho atual no deve
estar dentro do diretrio a ser excludo.
Sintaxe:
rmdir [caminho/diretrio] [caminho1/diretrio1]
onde:
? caminho Caminho do diretrio que ser removido.
? diretrio Nome do diretrio que ser removido.
Para remover diretrios que contenham arquivos, use o comando rm
com a opo -r (para maiores detalhes, veja rm, Seo 9.3).

Exemplos:
rmdir /home/larry/test remove o diretrio test em /home/larry.
rmdir test1 test2 remove os diretrios test1 e test2 de
dentro do diretrio atual.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
43
4 EXPLORANDO O SISTEMA DE ARQUIVOS
Um sistema de arquivos a coleo de arquivos e a hierarquia de
diretrios em um sistema. Chegou a hor de gui-lo pelo sistema de arquivos.
Voc j tem as habilidades e conhecimento para entender o sistema de
arquivos do Linux, e tem um mapa (veja a figura 3.2.8).
Primeiro, mude para o diretrio root ( "cd /" ), e entre "ls -F" para mostrar
uma lista do seu contedo. Provavelmente voc vai ver os seuintes diretrios:
bin, dev, etc, home, install, lib, mnt, proc, root, tmp, user, usr, e var.
Vamos dar uma olhada em cada um deles.
/bin
/bin uma abreviatura para "binrios", ou executveis. onde residem
a maioria dos programas essencias do sistema. Use o comando "ls -F /bin"
para listar os arquivos. Poder ver alguns arquivos que reconhecer, como cp,
ls e mv. Esses so os arquivos que contm os programas para esses
comandos. Quando voc executa cp, est executando o programa /bin/cp.
Usando "ls -F" ver que a maioria (se no todos) dos arquivos em /bin
tm um asterisco ("*") acrescrentado ao final de seus nomes. Isso indica que
so arquivos executveis, como descrito na seo 3.3.2.
/dev
A seguir vem o /dev. Vamos dar uma olhada dentro dele, com "ls -F
/dev".
Os arquivos em /dev so conhecidos como controladores de dispositivo
(device drivers) e so usados para acessar os dispositivos ou recursos do
sistema, como discos rgidos, modems, memria, etc. Por exemplo, da mesma
forma que voc pode lear dados de um arquivo, pode tambm ler da entrada
do mouse, lendo /dev/mouse.
Os arquivos que comeam com fd so os controladores de disquete. fd0
o primeiro drive, e fd1 o segundo. Agora, se voc for esperto, se dar conta
que h mais controladores de dispositivo para drivers do que mencionamos.
Eles representam tipos especficos de discos. Por exemplo, fd1H1440 acessa
discos de 3.5'' de alta densidade no drive 1.
Aqui temos uma lista de alguns dos controladores de dispositivos mais
usados. Note-se que mesmo que voc no tenha algum dos dispositivos
listados, ter entradas em dev de qualquer forma.
? /dev/console faz referncia ao console do sistema, quer dizer, ao
monitor conectado em seu sistema.
? Os dispositivos /dev/ttyS e /dev/cua so usados para acessar as
portas seriais. Por exemplo, /dev/ttyS0 faz referncia a "COM1",
sob o MS-DOS. Os dispositivos /dev/cua so "callout" e so
usados em conjunto com um modem.
? Os nomes dos dispositivos que comeam por hd acessam a
discos rgidos. /dev/hda se refere a todo o primeiro disco,
enquanto que /dev/hda1 se refere a primeira partio em
/dev/hda.
? Os nomes de dispositivo que comenam com sd so dispositivos
SCSI. Se voc tem um disco rgido SCSI, no lugar de acess-lo
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
44
com /dev/hda, vai acess-lo com /dev/sda. As fitas SCSI so
acessadas via dispositivos st e os CD-ROM SCSI via sr.
? Os nomes que comenam por lp acessam as portas paralelas.
/dev/lp0 se refere a "LPT1" no mundo MS-DOS.
? /dev/null usado como "buraco negro", qualquer dado enviado a
este dispositivo desaparece. Para que pode ser til isto?. Bem,
se deseja suprimir a sada para a tela de um comando, pode
enviar a sada para /dev/null. Falaremos mais sobre isto depois.
? Os nomes que comeam por /dev/tty se referem a "consoles
virtuais" de seu sistema (acessveis mediante as teclas Alt-F1, Alt-
F2, etc).
? /dev/tty1 se refere a primeira VC, /dev/tty2 a segunda, etc.
? Os nomes de dispositivo que comeam com /dev/pty so
"pseudoterminais". So usados para proporcionar um "terminal" a
sesses remotas. Por exemplo, se sua mquina est em uma
rede, o telnet de entrada usar um dos dispositivos /dev/pty.
/etc
/etc contm uma srie de arquivos de configurao do sistema. Isto
inclui o /etc/passwd (a base de dados de usurios), o /etc/rc (instrues de
inicializao do sistema), etc.
/sbin
/sbin usado para armazenar programas esenciis do sistema, usados
pelo administrador do sistema.
/home
/home contm os diretrios "home" dos usurios. Por exemplo,
/home/larry o diretrio do usurio "larry". Em um sistema recm instalado,
esse diretrio estar vazio.
/lib
/lib contm as imagens das bibliotecas compartilhadas. Esses arquivos
contm cdigo que muitos programas compartilham. Ao invs de cada
programa ter uma cpia prpria das funes compartilhadas, elas so
guardadas em um lugar comum, o /lib. Isso faz com que os programas
executveis sejam menores e reduzam o espao usado em disco.
/proc
/proc um "sistema de arquivos virtual". Os arquivos que esto no /proc
residem verdadeiramente na memria, e no no disco. Esses arquivos se
referem a vrios processos que rodam no sistema e permitem obter informao
sobre programas e processos que esto rodando num dado momento.
Falaremos mais sobre isso na seo 3.11.1.
/tmp
Muitos programas tm necessidade de gerar alguma informao
temporria e de guardar essa informao em um arquivo temporrio. O lugar
para esses arquivos o /tmp.
/usr
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
45
/usr um diretrio muito importante. Contm uma srie de subdiretrios
que por sua vez contm alguns dos mais importantes e teis programas e
arquivos de configurao usados no sistema.
Os vrios diretrios descritos acima so essenciais para o sistema
operar, mas a maioria dos itens no /usr so opcionais. Entretanto, so esses
itens opcionais que tornam o sistema til e interessante. Sem o /usr, voc teria
um sistema tedioso que suportaria somente programas como cp e ls. O /usr
contm a maioria dos pacotes grandes de software e os arquivos de
configurao que os acompanham.
/usr/X11R6
/usr/X11R6 contm o sistema X Window se voc o instalou. O sistema X
Window um ambiente grfico poderoso que proporciona um grande nmero
de ferramentas e programas grficos, mostrados em janelas na sua tela. Se
voc est familiarizado com os ambientes MS Windows ou Macintosh, o X
Window lhe ser muito familiar. O diretrio /usr/X11R6 contm todos os
executveis do X Window, arquivos de configurao e suporte. Entraremos em
mais detalhes sobre isso na seo 5.1.
/usr/bin
/usr/bin contm a maioria dos programas executveis no encontrados
em outras partes, como no /bin.
/usr/etc
Como o /etc, contm diferentes arquivos de configurao e programas
do sistema, /usr/etc contm inclusive mais que o anterior. Em geral, os
arquivos que se encontram em /usr/etc no so essenciais para o sistema,
diferentemente dos que se encontram no /etc.
/usr/include
/usr/include contm os arquivos include para o compilador C. Esse
arquivos (a maioria dos quais termina com .h, de "header") declaram estruturas
de dados, subrotinas e constantes usadas no desenvolvimento de programas
em C. Os arquivos que se encontram em /usr/include/sys geralmente so
usados quando programando no nvel do sistema UNIX. Se voc est
familiarizado com programao C, encontrar arquivos como stdio.h, o qual
declara funes como printf().
/usr/g++-include
/usr/g++-include contm arquivos de incluso para o computador C++
(muito parecido ao /usr/include).
/usr/lib
/usr/lib contm as bibliotecas "stub" e "static" equivalentes aos arquivos
encontrados em /lib. Ao compilar um programa, ele "linkado" com as
bibliotecas que se encontram em /usr/lib, as quais direcionam o programa para
o /lib, quando precisa buscar o cdigo real da biblioteca. Alm disso, vrios
programas armazenam arquivos de configurao no /usr/lib.
/usr/local
/usr/local muito parecido ao /usr. Ele contm programas e arquivos
no essenciais ao sistema, mas que tornam o sistema mais divertido e
excitante. Em geral, os programas que se encontram em /usr/local so
especficos do seu sistema, isto , o diretrio /ussr/local difere bastante entre
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
46
os sistemas UNIX. Aqui encontrar grandes programas, como o TeX (sistema
de formatao de documentos) e Emacs (editor grande e poderoso), se os
instalar.
/usr/man
Esse diretrio contm as pginas de manual. H dois subdiretrios para
cada seo de pgina de manual (use o comando "man man" para detalhes).
Por exemplo, /usr/man/man1 contm os fontes (isto , o original no formatado)
para as pginas de manual na seo 1, e /usr/man/cat1 contm as pginas de
manual formatadas para a seo 1.
/usr/src
/usr/src contm o cdigo fonte (programas a compilar) de vrios
programas do sistema. O subdiretrio mais importante o /usr/src/linux, que
contm o cdigo fonte do kernel do Linux.
/var
/var contm diretrios que freqntemente mudam de tamanho ou tendem
a crescer. Muitos desses diretrios residiam antes em /usr, mas desde que
estamos tratando de deixar o /usr inalterado, os diretrios que mudam de
tamanho foram levados para o /var. Alguns deles so:
/var/adm
/var/adm contm vrios arquivos de interesse para o administrador do
sistema, especificamente histricos do sistema, que armazenam erros ou
problemas com o sistema. Outros arquivos guardam logins do sistema, assim
como tentativas frustradas. O captulo 4 abordar este assunto.
/var/spool
/var/spool contm arquivos que vo ser passados a outros programas.
Por exemplo, se sua mquina est conectada a uma rede, o correio de entrada
ser armazenado em /var/spool/mail at que voc o leia ou apague. Artigos
novos dos News, tanto os que entram quanto os que saem, se encontram em
/var/spool/news, etc.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
47
5 COMANDOS PARA MANIPULAO DE ARQUIVOS
Abaixo, comandos utilizados para manipulao de arquivos.
5.1 O comando rm
Remove arquivos. Tambm pode ser usado para apagar diretrios,
vazios ou no. Note que no UNIX quando um arquivo removido, ele no
mais recupervel (como no MS-DOS, onde voc pode usar o "undelete", ou no
Windows, com a lixeira).
Sintaxe:
rm [opes] [caminho][arquivo/diretrio]
onde:
? caminho: Localizao do arquivo que deseja apagar. Se
omitido, assume que o arquivo esteja no diretrio atual.
? arquivo/diretrio: Arquivo/diretrio que ser apagado.
? opes: Modificam o comportamento do comando:
o -i, --interactive Confirma antes de remover, esta
ativada por padro.
o -f, --force Remove os arquivos sem confirmao.
o -r, --recursive Usado para remover arquivos em sub-
diretrios. Esta opo tambm pode ser usada para remover
sub-diretrios.

Exemplos:
rm teste.txt Remove o arquivo teste.txt do diretrio atual.
rm *.txt Remove todos os arquivos do diretrio atual que terminam
com .txt.
rm *.txt teste.novo Remove todos os arquivos do diretrio atual
que terminam com .txt e tambm o arquivo teste.novo.
rm -rf /tmp/teste/* Remove todos os arquivos e sub-diretrios do
diretrio /tmp/teste mas mantm o sub-diretrio /tmp/teste.
rm -rf /tmp/teste Remove todos os arquivos e sub-diretrios do
diretrio /tmp/teste, inclusive /tmp/teste.
5.2 O comando cp
Copia arquivos.
Sintaxe:
cp [opes] [origem] [destino]
onde:
? origem Arquivo que ser copiado. Podem ser especificados mais
de um arquivo para ser copiado usando "Curingas" (veja Curingas,
Seo 2.12).
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
48
? destino: O caminho ou nome de arquivo onde ser copiado. Se o
destino for um diretrio, os arquivos de origem sero copiados para
dentro do diretrio.
? opes: Modificam o comportamento do comando:
o -f, --force No confirma, substitui arquivos caso j
existam.
o -i, --interactive Confirma antes de substituir arquivos
existentes.
o -u, --update Copia somente se o arquivo de origem mais
novo que o arquivo de destino ou quando o arquivo de destino
no existe.
o -r, Copia arquivos e sub-diretrios, com exceo
de arquivos especiais FIFO e dispositivos.
o -R, --recursive Copia arquivos e sub-diretrios, inclusive
arquivos especiais FIFO e dispositivos.
o -p, --preserve Preserva atributos do arquivo, se for possvel.
O comando cp copia arquivos da ORIGEM para o DESTINO. Ambos
origem e destino tero o mesmo contedo aps a cpia.

Exemplos:
cp teste teste1 Copia o arquivo teste para teste1
cp teste /tmp Copia o arquivo teste para dentro do diretrio
/tmp.
cp * /tmp Copia todos os arquivos do diretrio atual para
/tmp.
cp /bin/* . Copia todos os arquivos do diretrio /bin para o
diretrio atual.
cp -R /bin /tmp Copia o diretrio /bin e todos os arquivos/sub-
diretrios existentes para o diretrio /tmp.
cp -R /bin/* /tmp Copia todos os arquivos do diretrio /bin (exceto o
prprio diretrio /bin) e todos os arquivos/sub-diretrios existentes dentro dele
para /tmp.
cp -R /bin /tmp Copia todos os arquivos e o diretrio /bin para
/tmp.
5.3 O comando mv
Move ou renomeia arquivos e diretrios. O processo semelhante ao
do comando cp mas o arquivo de origem apagado aps o trmino da cpia.
Sintaxe:
mv [opes] [origem] [destino]
Onde:
? origem: Arquivo/diretrio de origem.
? destino: Local onde ser movido ou novo nome do arquivo/diretrio.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
49
? opes: Modificam o comportamento do comando:
o -f, --force Substitui o arquivo de destino sem perguntar.
o -i, --interactive Pergunta antes de substituir. o padro.
o -u, --update Move somente arquivos antigos, ou novos
arquivos.

Exemplos:
mv teste teste1 Muda o nome do arquivo teste para teste1.
mv teste /tmp Move o arquivo teste do diretrio atual para /tmp.
5.4 O comando ln
Cria um novo link para arquivos e diretrios. O link o mecanismo
usado para fazer referncia a um arquivo ou diretrio.
Sintaxe:
ln [opes] [origem] [link]
Onde:
? origem: Diretrio ou arquivo de onde ser feito o link.
? link: Nome do novo link que ser criado.
? opes: Modificam o comportamento do comando:
o -s Cria um link simblico. Usado para criar ligaes com o
arquivo/diretrio de destino.
o -d Cria um hard link para diretrios. Somente o root pode
usar esta opo.

Existem 2 tipos de links: simblicos e rgidos.
? O link rgido faz referncia ao mesmo i-node do arquivo original, desta
forma ele ser perfeitamente idntico, inclusive nas permisses de
acesso, ao arquivo original. Ambos os links passam a se referir ao
mesmo arquivo, e no a cpias iguais. No possvel fazer um link
rgido para um diretrio ou para arquivos que estejam em parties
diferentes.
? O link simblico cria um arquivo especial no disco (do tipo link) que tem
como contedo o caminho para chegar at o arquivo alvo (isto pode ser
verificado pelo tamanho do arquivo do link). A opo -s cria links
simblicos.
Observaes:
? Se for usado o comando rm com um link, somente o link ser removido.
? Se for usado o comando cp com um link, o arquivo original ser copiado
ao invs do link.
? Se for usado o comando mv com um link, a modificao ser feita no
link.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
50
? Se for usado um comando de visualizao (como o cat), o arquivo
original ser visualizado.
Exemplos:
? ln -s /dev/ttyS1 /dev/modem Cria o link simblico
/dev/modem para o arquivo /dev/ttyS1.
? ln -s /tmp ~/tmp Cria um link ~/tmp para o diretrio /tmp.
5.5 O comando cat
Oficialmente usado para concatenar arquivos, mas tambm pode ser
usado para mostrar o contedo completo de um arquivo por vez.
Sintaxe:
cat [opes] [diretrio/arquivo] [diretrio1/arquivo1]
Onde
? diretrio/arquivo: Localizao do arquivo que se deseja
visualizar o contedo.
? opes: Modificam o comportamento do comando:
o -n, --number Mostra o nmero das linhas
enquanto o contedo do arquivo mostrado.
o -s, --squeeze-blank No mostra mais que uma linha
em branco entre um pargrafo e outro.
O comando cat trabalha com arquivos texto. Use o comando zcat para
ver diretamente arquivos compactados com gzip.

Exemplo:
cat /usr/doc/copyright/GPL
5.6 O comando tac
Mostra o contedo de um arquivo binrio ou texto (como o cat) s que
em ordem inversa.
Sintaxe:
tac [opes] [diretrio/arquivo] [diretrio1/arquivo1]
? diretrio/arquivo: Localizao do arquivo que se deseja
visualizar o contedo
? opes: Modificam o comportamento do comando:
o -s [string] Usa o [string] como separador de registros.

Exemplo:
tac /usr/doc/copyright/GPL
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
51
5.7 O comando more
Permite fazer a paginao de arquivos ou da entrada padro. O
comando more pode ser usado como comando para leitura de arquivos que
ocupem mais de uma tela. Quando toda a tela ocupada, o more efetua uma
pausa e permite que voc pressione Enter ou espao para continuar
avanando no arquivo sendo visualizado. Para sair do more pressione q.
Sintaxe:
more [arquivo]
Onde:
? arquivo: o arquivo que ser paginado.
Para visualizar diretamente arquivos texto compactados pelo gzip
(.gz) use o comando zmore.

Exemplos:
more /etc/passwd
cat /etc/passwd | more
5.8 O comando less
Permite fazer a paginao de arquivos ou da entrada padro. O
comando less pode ser usado como comando para leitura de arquivos que
ocupem mais de uma tela. Quando toda a tela ocupada, o less efetua uma
pausa (semelhante ao more) e permite que voc pressione Seta para Cima e
Seta para Baixo ou PgUP/PgDown para fazer o rolamento da pgina. Para sair
do less pressione q.
Sintaxe:
less [arquivo]
Onde:
? arquivo: o arquivo que ser paginado.
Para visualizar diretamente arquivos texto compactados pelo gzip
(.gz) use o comando zless.

Exemplos:
less /etc/passwd
cat /etc/passwd | less
5.9 O comando head
Mostra as linhas iniciais de um arquivo texto.
Sintaxe:
head [opes] [arquivo]
Onde:
? arquivo: o arquivo que ser mostrado.
? opes: Modificam o comportamento do comando:
o -c [numero] Mostra o [numero] de bytes do inicio do
arquivo.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
52
o -[numero] Mostra o [numero] de linhas do inicio do
arquivo. Caso no seja especificado, mostra as 10 primeiras
linhas.

Exemplos:
head teste.txt
head -20 teste.txt
5.10 O comando tail
Mostra as linhas finais de um arquivo texto.
Sintaxe:
tail [opes] [arquivo]
Onde:
? arquivo: o arquivo que ser mostrado.
? opes: Modificam o comportamento do comando:
o -c [numero] Mostra o [numero] de bytes do final do
arquivo.
o -[numero] Mostra o [numero] de linhas do final do
arquivo. Caso no seja especificado, mostra as 10 ltimas
linhas.

Exemplos:
tail teste.txt
tail -n 20 teste.txt
5.11 O comando touch
Muda a data e hora que um arquivo foi alterado. Tambm pode ser
usado para criar arquivos vazios. Caso o touch seja usado com arquivos que
no existam, por padro ele criar estes arquivos.
Sintaxe:
touch [opes] [arquivos]
Onde:
? arquivos: Arquivos que tero sua data/hora modificados.
? opes: Modificam o comportamento do comando:
o -a, --time=atime Faz o touch mudar somente a
data e hora do acesso ao arquivo.
o -m, --time=mtime Faz o touch mudar somente a
data e hora da modificao.
o -c, --no-create No cria arquivos vazios, caso
os arquivos no existam.
o -t MMDDhhmm[AA.ss] Usa Minutos (MM), Dias (DD),
Horas (hh), minutos (mm) e opcionalmente o Ano (AA) e
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
53
segundos (ss) para modificao dos arquivos, ao invs da
data e hora atual.

Exemplos:
touch teste Cria o arquivo teste, caso ele no exista.
touch -t 10011230 teste Altera da data e hora do arquivo
para 01/10 e 12:30.
touch -t 120112301999.30 teste Altera da data e hora do arquivo
para 01/12/1999 e 12:30:30.
5.12 O comando wc
Conta o nmero de palavras, bytes e linhas em um arquivo ou entrada
padro. Se as opes forem omitidas, o wc mostra a quantidade de linhas,
palavras, e bytes.
Sintaxe:
wc [opes] [arquivo]
Onde:
? arquivo: Arquivo que ser verificado pelo comando wc.
? opes: Modificam o comportamento do comando:
o -c, --bytes Mostra os bytes do arquivo.
o -w, --words Mostra a quantidade de palavras do arquivo.
o -l, --lines Mostra a quantidade de linhas do arquivo.
A ordem da listagem das estatsticas nica, e modificando a posio
das opes no modifica a ordem que os dados so listados.

Exemplo:
wc /etc/passwd Mostra a quantidade de linhas, palavras e letras
(bytes) no arquivo /etc/passwd.
wc -w /etc/passwd Mostra a quantidade de palavras.
wc -l /etc/passwd Mostra a quantidade de linhas.
wc -lw /etc/passwd Mostra a quantidade de linhas e palavras.
5.13 O comando sort
Organiza as linhas de um arquivo texto ou da entrada padro. A
organizao feita por linhas e as linhas so divididas em campos que a
ordem que as palavras aparecem na linha separadas por um delimitador
(normalmente um espao).
Sintaxe:
sort [opes] [arquivo]
Onde:
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
54
? Arquivo: o nome do arquivo que ser organizado. Caso no for
especificado, ser usado o dispositivo de entrada padro
(normalmente o teclado ou um "|").
? Opes:
o -b Ignora linhas em branco.
o -d Somente usa letras, dgitos e espaos durante a
organizao.
o -f Ignora a diferena entre maisculas e minsculas.
o -r Inverte o resultado da comparao.
o -n Caso estiver organizando um campo que contm nmeros,
os nmeros sero organizados na ordem aritmtica.
o -c Verifica se o arquivo j esta organizado. Caso no estiver,
retorna a mensagem "disorder on arquivo".
o -i Ignora os caracteres fora da faixa octal ASCII 040-0176
durante a organizao.
o -t caracter Usa caracter como delimitador durante a
organizao de linhas. Por padro usado um espao em
branco como delimitador de caracteres.
o +num1 -num2 Especifica qual o campo dentro na linha que
ser usado na organizao. O(s) campo(s) usado(s) para
organizao estar entre +num1 e +num2. O delimitador
padro utilizado um espao em branco (use a opo -t para
especificar outro). A contagem iniciada em "0". Caso no
for especificada, a organizao feita no primeiro campo.
Caso -num2 no seja especificado, a organizao ser feita
usando a coluna +num1 at o fim da linha.
o -k num1, num2 Esta uma alternativa ao mtodo
acima para especificar as chaves de organizao. O uso
idntico, mas o delimitador iniciado em "1".

Exemplos
sort texto.txt - Organiza o arquivo texto.txt em ordem crescente.
sort texto.txt -r - Organiza o contedo do arquivo texto.txt em ordem
decrescente.
cat texto.txt | sort - Faz a mesma coisa que o primeiro exemplo, s
que neste caso a sada do comando cat redirecionado a entrada padro do
comando sort.
sort -f texto.txt - Ignora diferenas entre letras maisculas e
minsculas durante a organizao.
sort +1 -3 texto.txt - Organiza o arquivo texto.txt usando como
referncia a segunda at a quarta palavra (segundo ao quarto campo) que
constam naquela linha.
sort -t : +2 -3 passwd - Organiza o arquivo passwd usando como
referncia a terceira at a quarta palavra (terceiro ao quarto campo). Note que
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
55
a opo -t especifica o caracter ":" como delimitador de campos ao invs do
espao. Neste caso, o que estiver aps ":" ser considerado o prximo campo.
5.14 O comando diff
Compara dois arquivos e mostra as diferenas entre eles. O comando
diff usado somente para a comparao de arquivos em formato texto. As
diferenas encontradas podem ser redirecionadas para um arquivo que poder
ser usado pelo comando patch para aplicar as alteraes em um arquivo que
no contm as diferenas. Isto til para grandes textos porque possvel
copiar somente as modificaes (geradas atravs do diff, que so muito
pequenas) e aplicar no arquivo para atualiza-lo (atravs do patch) ao invs de
copiar a nova verso. Este um sistema de atualizao muito usado na
atualizao dos cdigo fonte do kernel do GNU/Linux.
Sintaxe:
diff [diretrio1/arquivo1] [diretrio2/arquivo2] [opes]
Onde:
? diretrio1/arquivo1 diretrio2/arquivo2 Arquivos /diretrios que
sero comparados. Normalmente usado como primeiro
arquivo/diretrio o mais antigo e o mais novo como segundo.
? Opes:
o -lines [num] Gera a diferena com [num] linhas de
contexto. Por padro o diff gera um arquivo com 2 linhas que
o mnimo necessrio para o correto funcionamento do patch.
o -a Compara os dois arquivos como arquivos texto.
o -b Ignora espaos em branco como diferenas.
o -B Ignora linhas em branco inseridas ou apagadas nos
arquivos.
o -I Ignora diferenas entre maisculas e minsculas nos
arquivos.
o -H Usa anlise heurstica para verificar os arquivos.
o -N Em uma comparao de diretrios, se o arquivo apenas
existe em um diretrio, trata-o como presente mas vazio no
outro diretrio.
o -P Em uma comparao de diretrios, se o arquivos apenas
existe no segundo diretrio, trata-o como presente mas vazio
no primeiro diretrio.
o -q Mostra somente se os dois arquivos possuem diferenas.
No mostra as diferenas entre eles.
o -r Compara diretrios e sub-diretrios existentes.
o -S [nome] Inicia a comparao de diretrios pelo arquivo
[nome]. til quando cancelamos uma comparao.
o -t Aumenta a tabulao das diferenas encontradas.
o -u Usa o formato de comparao unificado.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
56
Use o comando zdiff para comparar diretamente arquivos compactados
pelo utilitrio gzip
Use o comando sdiff para visualizar as linhas diferentes entre os dois
arquivos em formato texto simples.

Exemplos:
diff texto.txt texto1.txt - Compara o arquivo texto.txt com texto1.txt
e exibe suas diferenas na tela.
diff -Bu texto.txt texto1.txt - Compara o arquivo texto.txt com
texto1.txt ignorando linhas em branco diferentes entre os dois arquivos e
usando o formato unificado.
diff texto.txt texto1.txt >texto.diff - Compara o arquivo texto.txt
com texto1.txt e gera um arquivo chamdo texto.diff contendo a diferena entre
eles. Este arquivo poder ser usado pelo patch para aplicar as diferenas
existente entre os dois no arquivo texto.txt.
diff -r /usr/src/linux-2.2.13 /usr/src/linux-2.2.14 >patch-
2.2.14.diff - Compara o diretrio e sub-diretrios linux-2.2.13 e linux-2.2.14
e grava as diferenas entre eles no arquivo patch-2.2.14.diff.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
57
6 PERMISSES DE ARQUIVOS
6.1 Conceitos de permisses de arquivos
Como h tipicamente mais de um usurio num sistema Linux, o Linux
fornece um mecanismo conhecido com permisso de arquivos, que protegem
arquivos de usurios de serem mal utilizados por outros usurios. Esse
mecanismo permite que arquivos e diretrios "pertenam" ao um usurio
particular. Por exemplo, como Larry criou os arquivos em seu diretrio home, o
Larry dono desses arquivos e tem acesso a eles.
O Linux tambm permite que arquivos sejam compartilhados entre
usurios e grupos de usurios. Se o Larry desejasse, sele poderia tirar o
acesso a seus arquivos de forma a que nenhum outro usurio poderia acess-
los. Entretanto, na maioria dos sistemas, o padro permitir que outros
usurios leiam seus arquivos, mas no possam modific-los ou exclui-los de
alguma forma.
Cada arquivo pertence a um usurio em particular. Entretanto, arquivos
tambm pertencem a um grupo, que um grupo definido de usurios do
sistema. Cada usurio colocado em pelo menos um grupo quando sua conta
criada. No entanto, o administrador do sistema pode conceder ao usurio o
acesso a mais de um grupo.
Grupos so usualmente definidos pelo tipo de usurios que acessam a
mquina. Por exemplo, numa universidade, o sistema Linux pode ser
configurados para os grupos estudante, administracao, faculdade ou
convidado. H tambm alguns grupos pr-definidos do sistema (como bin e
admin), que so usados pelo prprio sistema para controlar acesso aos
recursos - muito raramente usurios reais pertencem a grupos de sistema.
Permisses esto divididas em trs tipos: leitura, escrita e execuo.
Essas permisses podem ser concedidas a trs tipos de usurios: o dono do
arquivo, o grupo ao qual o arquivo pertence, e a todos os usurios,
independentemente de grupo.
A permisso de leitura permite que um usurio leia o contedo do
arquivo e, no caso de diretrios, liste o contedo do diretrio (usando ls). A
permisso de escrita permite que o usurio escreva e/ou modifique o arquivo.
Para diretrios, a permisso de escrita permite que o usurio crie novos
arquivos ou exclua arquivos naquele diretrio. Finalmente, a permisso de
execuo permite que um usurio rode um arquivo como um programa ou
script de shell (o arquivo precisa ser um programa ou script de shell). Para
diretrios, ter permisso de execuo permite que o usurio entre no diretrio
em questo (com o comando cd).
6.2 Interpretando permisses de arquivos
Vamos observer um exemplo que demonstra permisses de arquivos.
Usando o comando ls com a opo "-l" mostra uma listagem mais completa do
arquivo, incluindo permisses de arquivos.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
58
/home/larry/foo# ls -l stuff
-rw-r--r-- 1 larry users 505 Mar 13 19:05 stuff
/home/larry/foo#

O primeiro campo na lista representa as permisses do arquivo. O
terceiro campo o dono do arquivo (larry) e o quarto campo o grupo ao qual
o arquivo pertence (users). Obviamente, o ltimo campo o nome do arquivo
(stuff). Vamos falar sobre os outros campos mais tarde.
Esse arquivo pertence ao larry, e pertence ao grupo users. A string -rw-
r--r-- mostra, em ordem, as permisses concedidas ao dono do arquivo, ao
grupo do arquivo, e a todo o resto.
O primeiro caracter da string de permisses ("-") representa o tipo do
arquivo. Um hfen ("-") significa que um arquivo comum (e no um diretrio
um driver de dispositivo). O prximos trs caracteres ("rw-") representam as
permisses concedidas ao dono do arquivo, larry. O "r" vem de "read" (leitura)
e o "w" de "write" (escrita). Assim, Larry tem permisso de leitura e escrita no
arquivo stuff.
Como mencionado, alm de permisses de escrita e leitura, h tambm
a permisso de "execuo" - representada por um "x". Entretanto, um "-"
listado no exemplo no lugar do "x", indicando que o Larry no tem permisso
de execuo para este arquivo. Isto est ok, visto que o arquivo stuff no um
programa. Como o Larry o dono do programa, ele mesmo pode conceder
permisso de execuo para o arquivo se assim desejar.
Os prximos trs caracteres ("r--"), representam as permisses de grupo
no arquivo. O grupo que dono deste arquivo users. Como somente um "r"
aparece aqui, um usurio que pertena ao grupo users pode ler este arquivo.
Os ltimos trs caracteres (tambm "r--") representam as permisses
concedidas para qualquer usurio do sistema (alm do dono do arquivo e
daqueles que pertenam ao grupo users). Novamente, como somente um "r"
aparece, outros usurios podem ler o arquivo, mas no escrever ou executar.
Aqui vemos outros exemplos de permisses:
-rwxr-xr-x
O dono do arquivo pode ler, escrever e executar o arquivo. Usurios no
grupo do arquivo, e todos os outros, podem ler e executar o arquivo
-rw-------
O dono do arquivo pode ler e escrever no arquivo. Nenhum outro
usurio pode acessar o arquivo.
-rwxrwxrwx
Todos os usurios podem ler, escrever e executar o arquivo.
6.3 Dependncias de Permisses
As permisses concedidas a um arquivo tambm dependem das
permisses do diretrio no qual o arquivo est localizado. Por exemplo,
mesmo que um arquivo esteja com permisso -rwxrwxrwx, outros usurios no
vo poder acessar o arquivo a menos que eles tenham permisso de leitura e
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
59
execuo no diretrio no qual est o arquivo. Por exemplo, se Larry quer
restringir acesso a todos os seus arquivos, ele pode configurar as permisses
do seu diretrio home (/home/larry) para
-rwx------. Desta forma, nenhum outro usurio ter acesso ao seu diretrio, e a
todos os arquivos e diretrios dentro dele. Larry no precisa se preocupar com
as permisses individuais para cada um de seus arquivos.
Em outras palavras, para acessar um arquivo, voc tem que ter
permisso de execuo para todos os diretrios no caminho, e permisso de
leitura (ou execuo) para o arquivo.
Tipicamente, usurios num sistema Linux so bastante descuidads com
seus arquivos. A permisso usual dada a arquivos -rw-r--r--, que permite que
outros usurios leiam os arquivos mas no modifiquem. A permisso usual
dada a diretrios -rwxr-xr-x, que permite que outros usurios entrem em seus
diretrios, mas no criem ou apaguem arquivos dentro deles.
Entretanto, muitos usurios desejam manter outros usurios longe de
seus arquivos. Colocando as permisses de um arquivo para -rw------- ir
previnir que qualquer outro usurio acesse o arquivo. Da mesma forma, se um
diretrio tiver a permisso -rwx------, nenhum outro usurio poder entrar nele.
6.4 Modificando permisses
O comando "chmod" usado para modificar permisses de um arquivo.
Somente o dono do arquivo pode mudar as permisses para o arquivo. A
sintaxe do chmod "chmod {a,u,g,o}{+,-}{r,w,x} arquivos"
Brevemente, voc fornece uma ou mais letras indicando para quem voc
est concedendo ou retirando permisses: todos (a, do ingls, all); usurio (u),
grupo (g), ou outros (o). Depois voc especifica se est adicionando (+) ou
removendo ( - ) direitos. E finalmente voc especifica o tipo de permisso:
leitura (read), escrita (write), ou execuo. Alguns exemplos de comandos
possveis so:
chmod a+r stuff
D permisso de leitura para todos os usurios.
chmod +r stuff
A mesma coisa - se nenhuma a, u, g ou o especificado, a
assumido.

chmod og-x stuff
Remove permisso de execuo de usurios que no o prprio
dono.
chmod u+rwx stuff
Permite que o dono leia, escreva e execute o arquivo.
chmod o-rwx stuff
Remove as permisses de leitura, escrita e execuo para outros
usurios que no sejam o dono ou usurios do grupo.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
60
7 GERENCIANDO LINKS DE ARQUIVOS
Links permitem que voc d mais de um nome a um nico arquivo.
Arquivos so identificados pelo sistema pelo nmero do "inode", que o
identificador nico para o arquivo no sistema. Um diretrio na verdade uma
listagem de "inodes" com seus nomes de arquivos correspondentes. Cada
nome de arquivo num diretrio um link para um "inode" particular.
7.1 Links Rgidos
O comando "ln" usado para criar mltiplos links para um arquivo. Por
exemplo, digamos que voc tenha um arquivo chamado "foo" em um diretrio.
Usando "ls -i", voc pode ver o nmero do "inode" para este arquivo.
/home/larry# ls -i foo
22192 foo
/home/larry#
Aqui, "foo" tem o nmero de inode 22192 no sistema de arquivos. Voc
pode criar outro link para o arquivo "foo", chamado, por exemplo, "bar", como
segue:
/home/larry# ln foo bar
Com o "ls -i", voc pode ver que os dois arquivos tem o mesmo inode.
/home/larry# ls -i foo
22192 bar 22192 foo
/home/larry#
Agora, especificando tanto "foo" quanto "bar", voc ter acesso ao
mesmo arquivo. Se voc fizer mudanas a "foo", essas mudanas aparecem
em "bar" tambm. Para todos os prositos, "foo" e "bar" so o mesmo arquivo.
Esses links so conhecidos como links rgidos (hard link), porque
criam um link direto para um inode. Note que voc s pode fazer hard links
para arquivos se os links estiverem no mesmo sistema de arquivos. Links
simblicos (veja abaixo) no tm esta restrio.
Quando voc exclui um arquivo com "rm", voc est, na verdade,
apagando um link para o arquivo. Se voc usar o comando
/home/larry# rm foo

somente o link chamado foo excludo, bar ainda vai existir. Um arquivo
realmente excludo do sistema somente quando no h mais links para ele.
Usualmente, arquivos s tem um link. Assim, usando o comando "rm" exclui o
arquivo. Entretanto, se um arquivo tem mltiplos links, usando o comando "rm"
excluir somente um link. Para excluir o arquivo, voc tem que excluir todos os
links para o mesmo.
O comando "ls -l" mostra o nmero de links para um arquivo (entre
outras informaes).
/home/larry# ls -l foo bar
-rw-r--r-- 2 root root 12 Aug 5 16:51 bar
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
61
-rw-r--r-- 2 root root 12 Aug 5 16:50 foo
/home/larry#
A segunda coluna na listagem, "2", especifica o nmero de links para o
arquivo.
Com isso claro, um diretrio , na verdade, somente um arquivo
contendo a informao sobre as associaes link para inode. Alm disso, cada
diretrio contm, no mnimo, dois links rgidos: "." (um link apontando para si
mesmo), e ".." (um link apontando para o diretrio superior). No diretrio root
(/), o link ".." aponta novamente para /. (Em outras palavras, o diretrio
superior do diretrio root o prprio diretrio root).
7.2 Links Simblicos
Links simblicos, ou symlinks, so outro tipo de link, e so diferentes
dos links rgidos. Um link simblico permite que voc d outro nome a um
arquivo, mas no faz o link ao arquivo por inode.
O comando "ln -s" cria um link simblico para um arquivo. Por exemplo,
se voc usa o comando:
/home/larry# ln -s foo bar
Voc estar criando um link simblico chamado "bar" que aponta para o
arquivo "foo". Se voc usa o "ls -i", voc ver que os dois arquivos tm, de
fato, inodes diferentes.
/home/larry# ls -i foo bar
22195 bar 22192 foo
/home/bar#
Entretanto, usando o "ls -l", vemos que o arquivo "bar" um ponteiro
simblico para "foo".
/home/larry# ls -l foo bar
lrwxrwxrwx 1 root root 3 Aug 5 16:51 bar -> foo
-rw-r--r-- 1 root root 12 Aug 5 16:50 foo
/home/larry#
As permisses de arquivo num link simblico no so usadas (sempre
aparecem como rwxrwxrwx). Elas so determinadas pelas permisses no
arquivo alvo do link simblico (em nosso exemplo, o arquivo foo).
Funcionalmente, links rgidos e links simblicos so similares, mas h
diferenas. Voc pode, por exemplo, criar um link simblico para um arquivo
que no existe; o mesmo no funciona para links rgidos. Links simblicos so
processados pelo kernel diferentemente de links rgidos. somente uma
diferena tcnica, mas algumas vezes importante. Links simblicos so teis
porque identificam o arquivo para o qual apontam. Com links rgidos, no h
uma maneira fcil de determinar quais arquivos esto "linkados" para o mesmo
inode.
Links so usados em muitos lugares no sistema Linux. Links simblicos
so especialmente importante para bibliotecas compartilhadas no /lib.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
62
8 COMANDOS DE BUSCA
8.1 O comando grep
Procura por um texto dentro de um arquivo(s) ou no dispositivo de
entrada padro.
Sintaxe:
grep [expresso] [arquivo] [opes]
Onde:
? Expresso: Expresso regular que ser procurada no texto. Se
tiver mais de 2 palavras voc deve identifica-la com aspas "" caso
contrrio o grep assumir que a segunda palavra o arquivo!
? Arquivo: Arquivo onde ser feita a procura.
? Opes:
o -A [nmero] Mostra o [nmero] de linhas aps a linha
encontrada pelo grep.
o -B [nmero] Mostra o [nmero] de linhas antes da linha
encontrada pelo grep.
o -f [arquivo] Especifica que o texto que ser localizado,
esta no arquivo [arquivo].
o -h, --no-filename No mostra os nomes dos arquivos
durante a procura.
o -i, --ignore-case Ignora diferena entre maisculas e
minsculas no texto procurado e arquivo.
o -n, --line-number Mostra o nome de cada linha
encontrada pelo grep.
o -U, --binary Trata o arquivo que ser procurado como
binrio.
Se no for especificado o nome de um arquivo ou se for usado um hfen
"-", grep procurar a string no dispositivo de entrada padro. O grep faz sua
pesquisa em arquivos texto. Use o comando zgrep para pesquisar diretamente
em arquivos compactados com gzip, os comandos e opes so as mesmas.

Exemplos:
grep "capitulo" texto.txt
ps ax | grep inetd
grep "capitulo" texto.txt -A 2 -B 2
8.2 O comando find
Procura por arquivos/diretrios no disco. find pode procurar arquivos
atravs de sua data de modificao, tamanho, etc atravs do uso de opes.
find, ao contrrio de outros programas, usa opes longas atravs de um "-".
Sintaxe:
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
63
find [diretrio] [opes/expreso]
Onde:
? Diretrio: Inicia a procura neste diretrio, percorrendo seu sub-
diretrios.
? opes/expresso:
o -name [expresso] Procura pelo nome [expresso] nos
nomes de arquivos e diretrios processados.
o -depth Processa os sub-diretrios primeiro antes de
processar os arquivos do diretrio principal.
o -maxdepth [num] Faz a procura at [num] sub-diretrios
dentro do diretrio que est sendo pesquisado.
o -mindepth [num] No faz nenhuma procura em diretrios
menores que [num] nveis.
o -mount, -xdev No faz a pesquisa em sistemas de arquivos
diferentes daquele de onde o comando find foi executado.
o -amin [num] Procura por arquivos que foram acessados
[num] minutos atrs. Caso for antecedido por "-", procura por
arquivos que foram acessados entre [num] minutos atrs at
agora.
o -atime [num] Procura por arquivos que foram acessados
[num] dias atrs. Caso for antecedido por "-", procura por
arquivos que foram acessados entre [num] dias atrs e a data
atual.
o -gid [num] Procura por arquivos que possuam a
identificao numrica do grupo igual a [num].
o -group [nome] Procura por arquivos que possuam a
identificao de nome do grupo igual a [nome].
o -uid [num] Procura por arquivos que possuam a
identificao numrica do usurio igual a [num].
o -user [nome] Procura por arquivos que possuam a
identificao de nome do usurio igual a [nome].
o -inum [num] Procura por arquivos que esto localizados no
inodo [num].
o -links [num] Procura por arquivos que possuem [num] links
como referncia.
o -mmin [num] Procura por arquivos que tiveram seu
contedo modificado h [num] minutos. Caso for antecedido
por "-", procura por arquivos que tiveram seu contedo
modificado entre [num] minutos atrs at agora.
o -mtime [num] Procura por arquivos que tiveram seu
contedo modificado h [num] dias. Caso for antecedido por "-
", procura por arquivos que tiveram seu contedo modificado
entre [num] dias atrs at agora.
o -nouser Procura por arquivos que no correspondam a
identificao do usurio atual.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
64
o -nogroup Procura por arquivos que no correspondam a
identificao do grupo do usurio atual.
o -perm [modo] Procura por arquivos que possuam os modos
de permisso [modo]. Os [modo] de permisso pode ser
numrico (octal) ou literal.
o -used [num] O arquivo foi acessado [num] vezes antes de
ter seu status modificado.
o -size [num] Procura por arquivos que tiverem o tamanho
[num]. [num] pode ser antecedido de "+" ou "-" para
especificar um arquivo maior ou menor que [num]. A opo -
size pode ser seguida de:
? b - Especifica o tamanho em blocos de 512 bytes. o
padro caso [num] no seja acompanhado de nenhuma
letra.
? c - Especifica o tamanho em bytes.
? k - Especifica o tamanho em Kbytes.
o -type [tipo] Procura por arquivos do [tipo] especificado.
Os seguintes tipos so aceitos:
? b - bloco
? c - caracter
? d - diretrio
? p - pipe
? f - arquivo regular
? l - link simblico
? s - sockete
A maior parte dos argumentos numricos podem ser precedidos por "+"
ou "-". Para detalhes sobre outras opes e argumentos, consulte a pgina de
manual.

Exemplos:
find / -name grep - Procura no diretrio raz e sub-diretrios um
arquivo/diretrio chamado grep.
find / -name grep -maxdepth 3 - Procura no diretrio raz e sub-
diretrios at o 3o. nvel, um arquivo/diretrio chamado grep.
find . -size +1000k - Procura no diretrio atual e sub-diretrios um
arquivo com tamanho maior que 1000 kbytes (1Mbyte).
find / -mmin 10 - Procura no diretrio raz e sub-diretrios um arquivo que
foi modificado h 10 minutos atrs.
find / -links 4 - Procura no diretrio raz e sub-diretrios, todos os
arquivos que possuem 4 links como referncia.
8.3 O comando which
Mostra a localizao de um arquivo executvel no sistema. A pesquisa
de arquivos executveis feita atravs do path do sistema.
Sintaxe:
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
65
which [comando]
Exemplos:
which ls
which shutdown
which which
8.4 O comando whereis
Localiza o arquivo que contm uma pgina de manual. A pesquisa
feita usando-se os caminhos de pginas de manuais configuradas no sistema
(normalmente o arquivo /etc/manpath.config).
Sintaxe:
whereis [comando]

Exemplos:
whereis ls
whereis cd
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
66
9 USANDO O EDITOR VI
Um editor de textos um programa usado para editar arquivos que so
compostos de textos: uma carta, um programa C, ou um arquivo de
configurao do sistema. Ainda que existam vrios desses editores disponveis
para o Linux, o nico que voc garantidamente vai encontrar em qualquer UNIX
ou sistema Linux, o vi (do ingls, "visual editor"). O vi no o editor mais
fcil de usar, nem muito auto-explicativo. Entretanto, como o vi to comum
em sistemas UNIX/Linux, e muitas vezes necessrio, ele merece um pouco de
nossa ateno.
Sua escolha por um editor mais uma quest pessoal de gosto e estilo.
Muitos usurios preferem o barroco, auto-explicativo e poderoso Emacs - um
editor com mais funes que qualquer outro programa no mundo UNIX. Por
exemplo, o Emacs tem o seu prprio dialeto da linguagem de programao
LISP embutido, e tem muitas outras extenses (uma das quais um tipo Eliza -
um programa de inteligncia artificial). No entanto, como o Emacs e seus
arquivos de suporte so relativamente grandes, ele no pode ser instalado em
alguns sistemas. O vi, por outro lado, pequeno e poderoso, mas mais difcil
de usar. Entretanto, uma vez que voc saiba lidar com ele, ser muito fcil.
Esta seo apresenta uma introduo ao vi - no vamos discutir todas
os seus atributos, somente aqueles que voc precisa saber para comear a
us-lo. Voc pode verificar a pgina de manual do vi se estiver interessado em
aprendar mais sobre o editor e suas funes. Alternativamente, voc pode ler
o livro Learning the vi Editor, da editora OReilly and Associates, ou Vi Tutorial,
da Specialized Systems Consultants (SSC) Inc.
9.1 Conceitos.
Enquanto estiver usando o vi, em qualquer momento voc est em um
dos trs modos de operao. Esses modos so chamados: modo de comando,
modo de insero, e modo ltima linha.
Quando voc inicia o vi, voc est no modo de comando. Esse mode
permite que voc use comandos para editar arquivos ou para trocar para outros
modos. Por exemplo, digitando "x" no modo comando apaga o caracter que
est sob o cursor. As teclas de setas movem o cursor pelo arquivo que voc
est editando. Geralmente, os comandos usados no modo de comando so de
um ou dois caracteres.
Voc pode inserir ou editar textos no modo de insero. Quando estiver
usando o vi, vai provavelmente usar a maior parte do tempo neste modo. Voc
inicia o modo de insero pressionando o comando "i" (de "inserir") no modo de
comando. Enquanto estiver em modo de insero, voc pode inserir texto no
documento na posio do cursor. Para sair do modo de insero e retornar ao
modo de comando, pressione <Esc>.
O modo de ltima linha um modo especial que permite alguns
comandos extendidos do vi. Ao digitar esses comandos, eles aparecem na
ltima linha da tela (da o nome). Por exemplo, quando voc digita ":" no modo
de comando, voc pula para o modo de ltima linha e pode usar os comandos
"wq" (gravar e sair - do ingls, write and quit), ou "q!" (para sair sem salvar). O
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
67
modo de ltima linha geralmente usado para comandos do vi que so mais
longos do que um caracter. No modo de ltima linha, voc entra um comando
de uma linha e pressiona <Enter> para execut-lo.
9.2 Iniciando o vi
A melhor maneira de compreender estes conceitos chamar o vi e
editar um arquivo. O exemplo "screens" abaixo mostra algumas linhas de
texto, como se a tela tivesse somente seis linhas de altura, ao invs de vinte e
quatro.
A sintaxe do vi
vi arquivo
onde arquivo o nome do arquivo a editar.
Chame o vi digitando:
/home/larry# vi test
para editar o arquivo "test". Voc deve ver algo parecido com:
~
~
~
~
~
~
~
"test" [New file]

A coluna de caracteres "~" indicam que voc est no fim do arquivo. No
exemplo, o caracter "_" representa o cursor.
9.3 Inserindo texto
O programa vi est agora no modo de comando. Insira um texto no
arquivo - pressionando "i" voc coloca o editor em modo de insero. A partir
da, comece a digitar.
Now is the time for all good men to come
to the aid of the party
~
~
~
~
~
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
68
~
~

Digite quantas linhas voc quiser (pressionando <Enter> depois de cada
uma). Voc pode corrigir erros com a tecla <Back Space>.
Para terminar o modo de insero e retornar ao modo de comando,
pressione <Esc>.
No modo de comando voc pode usar as setas para mover pelo arquivo.
(Se voc tem somente uma linha de texto, e tentar usar as teclas para cima e
para baixo, vai sentir que vi vai tocar um bip).
H muitas maneiras de inserir um texto que no o comando "i". O
comando "a" insere um texto comeando aps a posio atual do cursor, ao
invs de na posio atual do cursor. Por exemplo, use a seta da esquerda
para mover o cursor entre as palavras "good" e "men".
Now is the time for all good_men to come
to the aid of the party
~
~
~
~
~
~
~

Pressione "a" para entrar no modo de insero, digite "wo", e ento
pressione <Esc> para retornar ao modo comando.
Now is the time for all good women to
come to the aid of the party
~
~
~
~
~

Para comear a inserir texto na prxima linha, use o comando "o".
Pressione "o" e entre uma ou duas linhas mais:
Now is the time for all good humans to
come to the aid of the party.
Afterwards, well go out for pizza and
beer.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
69
~
~
~
~
~
~
~
9.4 Apagando texto
A partir do modo de comando, o comando "x" apaga o caracter sob o
cursor. Se voc pressionar cinco vezes "x", vai chegar em:
Now is the time for all good humans to
come to the aid of the party.
Afterwards, well go out for pizza and _
~
~
~
~
~
~
~

Agora pressione "a" e insira algum texto, seguido de <esc>:
Now is the time for all good humans to
come to the aid of the party.
Afterwards, well go out for pizza and
diet coke.
~
~
~
~
~
~
~

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
70
Voc pode apagar linhas inteiras usando o comando "dd" (isso mesmo,
pressione "d" duas vezes seguidas), Se o cursor est na segunda linha, e voc
pressionar "dd", ver:
Now is the time for all good humans to
come to the aid of the party.
~
~
~
~
~
~
~

Para apagar a palavra onde est o cursor, use o comando "dw".
Coloque o cursor no incio da palavra good, e digite "dw".
Now is the time for all humans to come
to the aid of the party.
~
~
~
~
~
~
~
9.5 Modificando texto
Voc pode substituir sees de texto usando o comando "R"
(maisculo). Posicione o cursor na primeira letra da palavra "party", pressione
"R" e digite a palavra "hungry".
Now is the time for all humans to come
to the aid of the hungry.
~
~
~
~
~
~
~
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
71

Usando "R" para editar um texto como usar "i" ou "a", mas o "R"
sobreescreve, ao invs de inserir.
O comando "r" (minsculo) substitui o caracter sob o cursor. Por
exemplo, mova o cursor para o incio da palavra "Now" e pressione "r", depois
"C", voc ver:
Cow is the time for all humans to come
to the aid of the hungry.
~
~
~
~
~
~
~

O comando "~" troca a caixa da letra que est sob o cursor de alta para
baixa e vice-versa. Por exemplo, se voc posiciona o cursor no "o", na palvra
"Cow" acima e repetidamente pressiona "~", ter:
COW IS THE TIME FOR ALL HUMANS TO COME TO THE AID
OF THE HUNGRY.
~
~
~
~
~
~
~

Nota: em teclados programados para o portugus, voc ter que
pressionar "~" seguido da tecla de espao para ter o mesmo efeito.
9.6 Comandos para movimentar o cursor
Voc j sabe como usar as setas para se movimentar pelo documento.
Alm disso, voc pode usar os comandos "h", "j", "k" e "l" para mover o cursor
para a esquerda, baixo, cima e direita, respectivamente. Isso til quando (por
alguma razo) suas teclas de setas no funcionam corretamente.
O comando "w" move o cursor para o incio da prxima palavra, o
comando "b" para o incio da palavra anterior.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
72
O comando "0" (tecla zero) move o cursor para o incio da linha corrente,
e o comando "$" para o fim da linha.
Quando editar arquivos grandes, voc vai querer avanar e retroceder
atravs do arquivo uma tela por vez. Pressionado "Ctrl-F" move o cursor uma
tela para a frente, e Ctrl-B, uma tela para trs.
Para mover o cursor para o fim do arquivo, pressione "G". Voc tambm
pode mov-lo para uma linha arbitrria; por exemplo, digite o comando "10G"
para mover o cursor para a linha 10 no arquivo. Para mov-lo para a primeira
linha, use "1G".
Voc pode combinar comandos de movimentao com outros
comandos, como aqueles usados para apagar texto. Por exemplo, o comando
"d$" apaga tudo do cursor at o fim da linha; "dG" apaga tudo do cursor at o
fum do arquivo, e assim por diante.
9.7 Salvando arquivos e saindo do vi
Para sair do vi sem salvar mudanas no arquivo, use o comando ":q!".
Quando voc pressiona ":", o cursor se move para a ltima linha da tela e voc
estar no modo de ltima linha.
COW IS THE TIME FOR ALL HUMANS TO COME TO THE AID
OF THE HUNGRY.
~
~
~
~
~
~
:_

No modo de ltima linha, certos comandos extendidos esto disponveis.
Um deles o "q!", que sai do vi sem salvar. O comando ":wq" salva o arquivo e
sai do vi. O comando "ZZ" (do modo comando, sem os ":") equivalente a
":wq". Se o arquivo no foi modificado desde a ltima vez que foi salvo, o
comando s sai, preservando a data de modificao da ltima mudana.
Lembre-se que voc deve pressionar <Enter> depois de um comando entrado
no modo de ltima linha.
Para salvar o arquivo sem sair do vi, use ":w".
9.8 Editando outro arquivo
Para editar outro arquivo, use o comando ":e". Por exemplo, para parar
a edio do arquivo "test" e editar o arquivo "foo" no lugar, use o comando:
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
73
COW IS THE TIME FOR ALL HUMANS TO COME TO THE AID
OF THE HUNGRY.
~
~
~
~
~
~
:e foo_

Se voc usa ":e" sem salvar o primeiro arquivo, voc vai receber a
mensagem de erro:
No write since last change (":edit!" overrides)
que significa que o vi no quer editar outro arquivo at que voc salve o
primeiro. Neste ponto, voc pode usar ":w" para salvar o arquivo original, e
depois o ":e", ou pode usar o comando:
COW IS THE TIME FOR ALL HUMANS TO COME TO THE AID
OF THE HUNGRY.
~
~
~
~
~
~
:e! foo_

O sinal "!" diz ao vi que voc realmente quer fazer isso - editar o novo
arquivo sem salvar as mudanas do primeiro.
9.9 Incluindo outros arquivos
Se voc usar o comando ":r", pode incluir o contedo de outro arquivo no
arquivo corrente. Por exemplo, o comando
:r foo.txt
insere o contedo do arquivo "foo.txt" no texto atul na localizao do
cursor.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
74
9.10 Rodando comandos do shell
Voc tambm pode rodar comandos do shell de dentro do vi. O
comando ":r!" funciona como ":r", mas ao invs de ler um arquivo, ele insere a
sada do comando dado na posio corrente do cursor. Por exemplo, se voc
usar o comando:
:r! ls -F
voc vai terminar com:
COW IS THE TIME FOR ALL HUMANS TO COME TO THE AID
OF THE HUNGRY.
letters/
misc/
papers/
~
~

Voc tambm pode rodar um comando do shell de dentro do vi sem que
o texto seja inserido no arquivo em edio. Por exemplo, se usar o comando
:! ls -F
O "ls -F" ser executado e o resultado mostrado na tela, mas no
inserido no arquivo que voc est editando. Se voc usar o comando
:shell
O vi inicia uma instncia do shell, permitindo que voc ponha o vi
temporariamente em segundo plano, enquanto executa outros comandos.
Simplesmente d um logout (usando o comando exit) do shell para retornar ao
vi.
9.11 Ajuda no vi
O vi no fornece muita ajuda interativa (a maioria dos programas Linux
tambm no), mas voc sempre pode ler a pgina do manual para o vi. O vi
uma fachada para o editor "ex", que manipula muitos dos comandos do modo
de ltima linha do vi. Assim, alm de ler a pgina de manual para o vi, veja
tambm para o "ex".
Voc tambm pode usar o comando ":help" para ver uma ajuda dos
comandos bsicos na tela.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
75
10 ACESSANDO ARQUIVOS MS-DOS/WINDOWS
Se, por qualquer motivo bizarro, voc quiser acessar arquivos do MS-
DOS (ou Windows), pode faz-lo facilmente no Linux.
A maneira usual de acessar arquivos MS-DOS montar uma partio ou
disquete MS-DOS no Linux, permitindo que voc acesse os arquivos
diretamente atravs do sistema de arquivos. Por exemplo, se voc tem um
disquete MS-DOS em /dev/fd0, o comando
# mount -t msdos /dev/fd0 /mnt

vai mont-lo no diretrio /mnt.
Voc tambm pode montar uma partio MS-DOS no seu disco rgido
para acess-la atravs do Linux. Se voc tem uma partio MS-DOS em
/dev/hda1, o comando:
# mount -t msdos /dev/hda1 /mnt

monta a partio. Lembre-se de desmontar a partio quando tiver
terminado de us-la. Voc pode ter uma partio MS-DOS montada
automaticamente na inicializao do sistema se voc incluir a entrada no
/etc/fstab. A prxima linha no /etc/fstab ir montar a partio MS-DOS no
/dev/hda1 no diretrio /dos automaticamente:
/dev/hda1 /dos msdos defaults

Voc tambm pode montar o sistema de arquivos VFAT (usado pelo
Windows 95):
# mount -t vfat /dev/hda1 /mnt

Isso permite acessar nomes de arquivo longos do Windows. Voc pode
montar um sistema de arquivos FAT16 e usar isto para gerar nomes de arquivo
longos.
O software Mtools tambm pode ser usado para acessar arquivos MS-
DOS. Os comandos mcd, mdir e mcopy se comportam como seus
correspondentes MS-DOS. Se voc instalar o Mtools, poder consultar
pginas de manual para esses comandos.
Acessar arquivos MS-DOS uma coisa, execut-los outra. H um
emulador MS-DOS em desenvolvimento no Linux. Ele includo em muitas
distribuies. Tambm pode ser baixado de muitos sites de FTP. O emulador
bastante poderoso e pode rodar vrias aplicaes. Entretanto, Linux e MS-
DOS so sistemas bem diferentes. O poder de qualquer emulador MS-DOS
num UNIX limitado. H tambm um emulador Windows para ambiente X em
desenvolvimento.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
76
11 O SHELL
11.1 Tipos de shell
Como mencionado anteriormente, o Linux um sistema de arquivos
multi-tarefa e multi-usurio. Ser multi-tarefa bem til, e uma vez que voc
tenha entendido isso, vai us-lo todo o tempo. Em pouco tempo voc vai estar
rodando programas em segundo plano, mudando entre tarefas, e fazendo
pipelines entre programas. Tudo isso junto para atingir resultados complicados
em um nico comando.
Muitas das caractersticas que ns vamos cobrir nesta seo so
fornecidas pelo prprio shell. Tome cuidado para no confundir o Linux (o
prprio sistema operacional) com um shell - um shell somente uma interface
para o sistema que est embaixo. O shell fornece funcionalidade para o Linux.
Um shell no somente um interpretador para comandos interativos que
voc digita no prompt, mas tambm uma poderosa linguagem de programao.
Ele permite que voc escreva scripts de shell, para agrupar vrios comandos
shell em um nico arquivo. Se voc sabe MS-DOS, voc vai reconhecer a
semelhana com os arquivos "batch" (.BAT). Os scripts do shell so uma
ferramenta poderosa, que permitiro que voc automatize e expanda seu uso
do Linux.
H vrios tipos de shell no mundo Linux. Os dois tipos principais so o
"Bourne shell" e o "C shell". O "Bourne shell" usa uma sintaxe de comando
como o shell original dos sistemas UNIX, como o System III. O nome do
"Bourne shell" na maioria dos sistemas Linux /bin/sh (onde sh vem de "shell").
O "C shell" usa uma sintaxe diferente, parecida com programao C, e na
maioria dos sitemas chamado de /bin/csh.
No Linux, vrias variantes desses shell esto disponveis. As duas mais
comunmente usadas so "Bourne Again Shell", ou "Bash" (/bin/bash), e "Tcsh"
(/bin/tcsh). Bash uma forma de Bourne shell que inclui muitas das
caractersticas avanadas encontradas no "C shell". Como o bash suporta um
conjunto maior de comandos que o "Bourne shell", os scripts em shell escritos
para o Bourne shell devem funcionar no bash. Se voc prefere usar a sintaxe
do C shell, o Linux suporta o tcsh, que uma verso expandida do C shell
original.
O tipo de shell que voc vai escolher mais uma questo de religio.
Alguns preferem a sintaxe do Bourne shell com as caractersticas avanadas
do bash, e outros preferem a sintaxe mais estruturada do C shell. Para
comandos normais como cp e ls, o shell que voc usar no faz diferena - a
sintaxe no muda. S quando voc comear a escrever scripts shell ou usar
funes avanadas de um shell que as diferenas entre os tipos vai comear
a importar.
A medida que for se acostumando, voc vai notar diferenas entre o
Bourne e o C shell. Entretanto, para os propsitos deste livro, a maioria das
diferenas irrelevante. (Se voc est curioso sobre este ponto, leia as
pginas de manual do bash e do tcsh).
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
77
11.2 Caracteres Coringa
Uma caracterstica fundamental da maioria dos shell do Linux a
habilidade de se referir a mais de uma arquivo usando caracteres especiais.
Esses caracteres coringa permitem que voc se refira, digamos, a todos os
arquivos que contenham o caracter "n".
O caracter coringa "*" especifica qualquer caracter ou seqncia de
caracteres num nome de arquivo. Quando voc usa o caracter "*" em um
nome de arquivo, o shell o substitui por todas as possibilidades possveis de
nomes de arquivos no diretrio ao qual voc se refere.
Aqui temos um exemplo rpido. Suponha que Larry tenha os arquivos
frog, joe e stuff no seu diretrio corrente.
/home/larry# ls
frog joe stuff
/home/larry#

Para especificar todos os arquivos contendo a letra "o" no nome, use o
comando:
/home/larry# ls *o*
frog joe
/home/larry#

Como voc pode ver, cada instncia do "*" substituda por todas as
substituies que casam com os arquivos no diretrio corrente.
O uso do "*" simplesmente, casa com todos os nomes, pois todos os
caracteres casam com o caracter coringa.
/home/larry# ls *
frog joe stuff
/home/larry#

Abaixo, mais alguns exemplos:
/home/larry# ls f*
frog
/home/larry# ls *ff
stuff
/home/larry# ls *f*
frog stuff
/home/larry# ls s*f
stuff
/home/larry#

O processo de trocar um "*" numa srie de nomes de arquivos
chamado de expanso de caracteres coringa e feito pelo shell. Isto
importante: um comando individual, como ls, nunca v o "*" na sua lista de
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
78
parmetros. O shell expande os caracteres coringa para incluir os nomes de
arquivos que casam. Assim, o comando:
/home/larry# ls *o*

expandido pelo shell para:
/home/larry# ls frog joe

Uma nota importante sobre o caracter coringa "*" que ele no expande
para nomes que comeam com um ponto ("."). Esses arquivos so tratados
como ocultos - apesar de no serem realmente ocultos, eles no so
mostrados numa listagem ls normal nem so tocados pelo uso do caracter "*".
Aqui temos um exemplo. Ns mencionamos antes que cada diretrio
contm duas entradas especiais: ".", que se refere ao diretrio corrente, e "..",
que se refere ao diretrio superior. Entretanto, quando voc usao o ls, essas
entradas no so mostradas.
/home/larry# ls
frog joe stuff
/home/larry#

Se voc usa a opao -a no ls, entretanto, voc pode ver nomes de
arquivos que comeam com ".". Observe:
/home/larry# ls -a
. .. .bash_profile .bashrc frog joe stuff
/home/larry#

A lista contm as duas entradas especiais, "." e "..", assim como outros
arquivos ocultos - .bash_profile e .bashrc. Esses dois arquivos so arquivos
de inicializao usados pelo bash quando o Larry entra no sistema.
Note que quando voc usa o caracter coringa "*", nenhum dos arquivos
comeando com "." so mostrados.
/home/larry# ls *
frog joe stuff
/home/larry#

Essa uma caracterstica de segurana: se o "*" encontrasse nomes
comeando com ".", ele tambm encontraria os diretrios "." e "..". Isso pode
ser perigoso quando ao usar alguns comandos.
Outro caracter coringa o "?". O "?" expande para um nico caracter.
Assim, "ls ?" mostra todos os arquivos com nomes de um caracter s. E "ls
termca?" mostraria "termcap", mas no "termcap.backup". Segue outro
exemplo:
/home/larry# ls j?e
joe
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
79
/home/larry# ls f??g
frog
/home/larry# ls ????f
stuff
/home/larry#

Como pode ver, caracteres coringa permitem que voc especifique
muitos arquivos de uma s vez. J comentamos que os comandos cp e mv
podem copiar ou mover mais de um arquivo por vez. Por exemplo:
/home/larry# cp /etc/s* /home/larry

copia todos os arquivos comeando com "s" para o diretrio
"/home/larry". O formato do comado cp
cp {arq1} {arq2} {arq3} ...{arqN} {destino}

onde {arq1} at {arqN} uma lista de nomes de arquivos a copiar, e
destino o arquivo ou diretrio destino. "mv" tem uma sintaxe idntica.
Se voc est copiando ou movendo mais de um arquivo, o destino deve
ser um diretrio. Voc somente pode copiar ou mover um nico arquivo para
outro arquivo.
11.3 Redirecionamentos e pipes
11.3.1 Entrada padro e sada padro
Muitos comandos no Linux recebem dados de entrada pelo que
chamamos entrada padro (standard input) e do sada na sada padro
(standard output) - freqentemente abreviadas para stdin e stdout. O shell
trabalha de forma a que sua stdin seja o teclado e sua stdout seja a tela.
Segue um exemplo usando o comando cat. Normalmente, o cat l
dados de todos os arquivos especificados na linha de comando e envia dados
diretamente para a stdout (normalmente sua tela). Assim, o comando
/home/larry/papers# cat history-final masters-thesis
mostra o contedo do arquivo history-final seguido pelo contedo do
arquivo masters-thesis
No entanto, se voc no especifica um nome de arquivo, o cat l dados
da stdin e manda dados para a stdout. Veja o exemplo:
/home/larry/papers# cat
Hello there.
Hello there.
Bye.
Bye.
{Ctrl-D}
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
80
/home/larry/papers#

Cada linha que voc digita imediatamente ecoada pelo cat. Quando
estiver lendo da entrada padro, voc indica que a entrada "terminou"
mandando um sinal de EOT (End-Of-Text - fim de texto) que, em geral,
gerado ao pressionar Ctrl-D.
Aqui voc tem outro exemplo. O comando sort l linhas de texto
(novamente, da stdin, a menos que voc especifique um ou mais nomes de
arquivos) e manda-as ordenadas para a stdout. Tente o seguinte:
/home/larry/papers# sort
bananas
carrots
apples
{Ctrl-D}
apples
bananas
carrots
/home/larry/papers#

Agora voc pode ordenar sua lista de compras..... Linux til ou no ?
11.3.2 Redirecionando entrada e sada
Digamos que voc queira mandar a sada do sort para um arquivo, para
gravar sua lista de compras no disco. O shell permite que voc redirecione a
sada padro para um arquivo usando o smbolo ">". Veja como funciona:
/home/larry/papers# sort > shopping-list
bananas
carrots
apples
{Ctrl-D}
/home/larry/papers#

Como voc pode notar, o resultado do comando sort no mostrado,
mas sim gravado num arquivo chamado shopping-list. Vamos dar uma olhada
no arquivo:
/home/larry/papers# cat shopping-list
apples
bananas
carrots
/home/larry/papers#

Agora voc pode ordenar sua lista de compras e salv-la tambm! Mas
vamos supor que voc esteja armazenando a lista original no ordenada no
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
81
arquivo itens. Uma maneira de ordenar a informao e grav-la num arquivo
seria dar ao comando sort o nome do arquivo a ser lido no lugar da stdin, e
redirecionar a stdout assim como fizemos antes. Veja o exemplo:
/home/larry/papers# sort itens > shopping-list
/home/larry/papers# cat shopping-list
apples
bananas
carrots
/home/larry/papers#

Entretanto, h outra forma de fazer isto. Alm de redirecionar a stdout,
voc pode redirecionar a stdin tambm, usando o smbolo "<".
/home/larry/papers# sort < itens
apples
bananas
carrots
/home/larry/papers#

Tecnicamente, "sort < itens" equivalente a "sort itens", mas permite
demonstrar o seguinte ponto: "sort < itens" se comporta como se os dados no
arquivo "itens" tivessem sido digitados na stdin. O shell manipula o
redirecionamento. O "sort" no recebeu o nome do arquivo itens para ler; tudo
o que o sort sabe que recebeu uma lista da stdin, como se voc tivesse
digitado todos os dados pelo teclado.
Isso introduz o conceito de um filtro. Um filtro um programa que l
dados da stdin, processa-os de alguma forma, e manda-os processados para a
stdout. Usando redirecionamentos, stdin e stdout podem ser referenciados de
arquivos. Como mencionado acima, stdin e stdout, por padro, se comportam
como teclado e tela respectivamente. O "sort" um filtro simples. Ele ordena
os dados de entrada e manda o resultdao para a sada padro. O "cat" ainda
mais simples. Ele no faz nada com os dados de entrada. Simplesmente
mostra o que l.
11.3.3 Redirecionamento de sada no-destrutivo
Usando ">" para redirecionar a sada para um arquivo destrutivo. Em
outras palavras, o comando
/home/larry/papers# ls > arquivo-lista

sobreescreve o contedo do arquivo arquivo-lista. Se, no lugar de usar
">", voc usar o smbolo ">>", a sada adicionada ao final do arquivo dado ao
invs de sobreescrev-lo. Por exemplo,
/home/larry/papers# ls >> arquivo-lista

anexa a sada do comando ls ao arquivo arquivo-lista.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
82
Mantenha em mente que redirecionamentos e pipes so caractersticas
do shell - que suporta o uso de ">", ">>" e "|". No tem nada a ver com os
comandos mesmos.
11.3.4 Usando pipes
J demonstramos como usar o "sort" como um filtro. Entretanto, esses
exemplos assumem que voc tenha dados armazenados em algum arquivo ou
que v digitar os dados da entrada padro voc mesmo. E se os dados que
voc quer ordenar vierem da sada de outro comando, por exemplo o ls?
A opo -r do "sort" ordena os dados em ordem alfabtica reversa. Se
voc quer listar os arquivos no diretrio corrente em ordem reversa, uma
maneira de fazer isso seria:
/home/larry/papers# ls
english-list
history-final
masters-thesis
notes

Agora redirecione a sada do comando ls num arquivo chamado arquivo-
lista:
/home/larry/papers# ls > arquivo-lista
/home/larry/papers# sort -r arquivo-lista
notes
masters-thesis
history-final
english-list
/home/larry/papers#

Assim voc gravou a sada do ls num arquivo, e ento rodou "sort -r"
nesse arquivo. Mas isso incmodo e usa um arquivo temporrio para gravar
os dados do ls.
A soluo usar pipes. Essa uma caracterstica do shell que conecta
uma srie de comandos. A stdout do primeiro comando enviada para a stdin
do segundo comando. Neste caso, queremos mandar a stdout do ls para a
stdin do sort. Use o smbolo "|" para criar um pipe, como segue:
/home/larry/papers# ls | sort -r
notes
masters-thesis
history-final
english-list
/home/larry/papers#

Esse comando menor e mais fcil de digitar.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
83
Veja outro exemplo til. O comando:
/home/larry/papers# ls /usr/bin

mostra uma longa lista de arquivos, a maioria dos quais voa pela tela to
rpido que voc no consegue ler. Assim, vamos usar o more para mostrar
uma lista de arquivos em /usr/bin.
/home/larry/papers# ls /usr/bin | more

Agora voc pode paginar a lista de arquivos como quiser.
Mas a graa no termina aqui! Voc pode os pipes em mais de dois
comandos seguidos. O comando "head" um filtro que mostra as primeiras
linhas de uma entrada de dados (neste caso, vinda de um pipe). Se voc quer
mostrar o ltimo arquivo em ordem alfabtica do diretrio corrente, use
comandos como no exemplo:
/home/larry/papers# ls | sort -r | head -1
notes
/home/larry/papers#

onde "head -1" mostra a primeira linha da entrada que recebe (neste
caso, a lista ordenada em ordem reversa vinda do ls).
11.4 Personalizando seu ambiente
Um shell fornece muitos mecanismos para personalizar seu ambiente de
trabalho. Como mencionado acima, um shell mais que um interpretador de
comando - ele tambm uma poderosa linguagem de programao. Embora
escrever scripts de shell seja um assunto extenso, gostaramos de introduzir
algumas maneiras de como simplificar seu trabalho no sistema Linux pelo uso
dessas funes avanadas do shell.
Como mencionado antes, shells diferentes usam sintaxes diferentes
para scripts. Por exemplo, o tcsh usa uma sintaxe parecida com a linguagem
C, enquanto o Bourne shell usa outro tipo de sintaxe. Nesta seo, no vamos
ver muitas diferenas entre os dois, mas vamos assumir que os scripts sejam
executados na sintaxe do Bourne shell.
11.4.1 Variveis do shell e o ambiente
Um shell permite que voc define variveis, como a maioria das
linguagens de programao. Uma varivel somente um dado ao qual
associado um nome. O tcsh, assim como outros shells, usam diferentes
mecanismos dos descritos aqui para definir variveis. Esta seo assume o
uso de um uma sintaxe tipo Bourne shell. Veja a pgina do manual para o tcsh
para outros detalhes.
Quando voc determina um valor para uma varivel (usando o operador
"="), voc pode acessar a varivel precedendo um caracter "$" ao nome da
varivel, como demonstrado abaixo:
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
84
/home/larry# foo="hello there"

A varivel foo recebe o valor "hello there". Voc pode se referenciar a
esse valor pelo nome da varivel precedido por um caracter "$". Por exemplo,
o comando
/home/larry# echo $foo
hello there
/home/larry#

produz o mesmo resultado que:
/home/larry# echo "hello there"
hello there
/home/larry#

Essas variveis so internas ao shell, o que significa que somente o
shell pode acess-las. Isso pode ser til em scripts shell; se voc precisa
guardar um nome de arquivo, por exemplo, pode armazen-lo numa varivel,
como acima. O comando "set" mostra a lista de todas as variveis definidas no
shell.
Entretanto, o shell permite que voc exporte variveis para o ambiente.
O ambiente o conjunto de variveis que so acessveis por todos os
comandos que voc executa. Uma vez que voc defina uma varivel dentro do
shell, se voc a exportar, ela tambm far parte do ambiente. Use o comando
"export" para exportar uma varivel para o ambiente.
Novamente, aqui h uma diferena entre o bash e tcsh. Se voc usa o
tcsh, outra sintaxe usada para especificar variveis de ambiente (o comando
"setenv" usado). Veja o manual do tcsh para mais informaes.
O ambiente muito importanto para o sistema UNIX. Ele permite que
voc configure certos comandos definindo variveis que esses comandos
conhecem.
Aqui temos um exemplo rpido. A varivel de ambiente PAGER usada
pelo comando "man" e especifica o nome do comando para seu usado pelo
"man" para mostrar uma tela de cada vez. Se voc setar a varivel PAGER
para o nome de um comando, o "man" usar esse comando para paginar as
telas, ao invs do "more" (que o padro).
Atribua "cat" varivel PAGER. Isso faz com que a sada do "man" role
pela tela, sem pausa entre as pginas.
/home/larry# PAGER=cat
Agora exporte PAGER para o ambiente
/home/larry# export PAGER

Tente o comando "man ls". A pgina do manual deve rolar pela sua tela
sem pausa.
Agora, se voc atribuir "more" varivel PAGER, o comando "more"
ser usado para mostrar a pgina do manual.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
85
/home/larry# PAGER=more

Note que no temos que usar o comando "export" depois de termos
mudado o valor de PAGER. S precisamos exportar uma varivel uma vez.
Qualquer mudana feita varivel posteriormente ser automaticamente
propagada para o ambiente.
Freqentemente necessrio colocar as seqencias de caracteres entre
aspas para previnir que o shell interprete vrios caracteres como especiais.
Por exemplo, voc tem que colocar aspas em strings que contenham "*", "?",
espaos, etc. H muitos outros caracteres que precisam ser protegidos de
interpretao do shell. Uma explicao detalhada descrita no Bourne Shell
Tutorial da SSC.
As pginas de manual para um comando particular indicam se esse
comando usa alguma varivel de ambiente. Por exemplo, a pgina de manual
do "man" explica que a varivel PAGER usada para especificar o comando
paginador.
Alguns comandos compartilham variveis de ambiente. Por exemplo,
muitos comandos usam a varivel de ambiente EDITOR para especificar o
editor padro a ser usado quando um necessrio.
O ambiente tambm usado para informaes importantes sobre a
sesso de login. Um exemplo a varivel de ambiente HOME, que contm o
nome do seu diretrio home.
/home/larry/papers# echo $HOME
/home/larry

Outra varivel interessante PS1, que define o prompt principal do shell.
Por exemplo:
/home/larry# PS1="Your command, please: "
Your command, please:

Para definir o prompt como antes (que contm o diretrio de trabalho
corrente seguido pelo smbolo "#"),
Your command, please: PS1="\w# "
/home/larry#

A pgina de manual do bash descreve a sintaxe usada para definir o
prompt.
11.4.1.1 A varivel de ambiente PATH
Quando voc usa o comando "ls", como o shell sabe onde encontrar o
executvel "ls"? De fato, o "ls" est no diretrio /bin, na maioria dos sistemas.
O shell usa a varivel de ambiente PATH para localizar o arquivo executvel
para o comando que voc digitou.
Por exemplo, sua varivel PATH pode ser definida como:
/bin:/usr/bin:/usr/local/bin:.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
86
Esta uma lista de diretrios para o shell procurar. Cada diretrio est
separado por um ":". Quando voc usa o comando ls, o shell olha
primeiramente em "/bin/ls", e ento em "/usr/bin/ls", e assim por diante.
Note que o PATH no tem nada a ver com arquivos regulares (de texto,
por exemplo). Por exemplo, se voc usa o comando:
/home/larry# cp foo bar
o shell no usa o PATH para localizar os arquivos foo e bar - esses
nomes de arquivos so assumidos como caminhos completos. O shell s usa
o PATH para localizar o executvel "cp".
Isso economiza seu tempo, e voc no precisa estar lembrando onde
todos os executveis esto armazenados. Em muitos sistemas, os executveis
esto espalhados em muitos lugares, como em /usr/bin, /bin ou /usr/local/bin.
Ao invs de dar o caminho completo para o comando (como /usr/bin/cp), voc
pode definir o PATH como uma lista de diretrios onde voc quer que o shell
procure automaticamente.
Note que o PATH contm ".", o que significa o diretrio de trabalho
corrente. Isso permite que voc crie scripts de shell ou programas e rode-os
como um comando do seu diretrio de trabalho corrente, sem ter que
especific-lo diretamente (como em "./makebook"). Se um diretrio no est
no seu PATH, o shell no vai procurar nesse diretrio por comandos que
devem ser rodados; essa regra inclui tambm o diretrio de trabalho corrente.
11.4.2 Scripts de inicializao do Shell
Alm de scripts de shell que voc cria, h uma srie de scripts que o
shell usa para certos propsitos. Os mais importantes so os scripts de
inicializao, que so scripts executados pelo shell quando voc d login.
Os scripts de inicializao so bem simples. Entretanto, eles inicializam
seu ambiente executando comandos automaticamente quando voc loga. Se
voc sempre usa o comando "mail" para verificar seus e-mails quando entra,
voc pode colocar esse comando no script de inicializao para execut-lo
automaticamente.
Tanto o bash quanto o tcsh fazem distino entre um login shell e
outras invocaes do shell. Um login shell o shell chamado quando voc
entra no sistema. Usualmente o nico shell que voc usa. Entretanto, se
voc chama um shell de dentro do vi, por exemplo, voc inicia uma nova
instncia do shell, que no seu shell de login. Alm disso, cada vez que voc
roda um script de shell, voc automaticamente inicia outra instncia do shell
para executar o script.
Os arquivos de inicializao usados pelo bash so: /etc/profile
(configurado pelo administrador do sistema e executado por todos os usurios
do bash no momento do login), $HOME/.bash_profile (executado por uma
sesso de login do bash), e $HOME/.bashrc (executado por todas as instncias
do bash que no sejam de login). Se o .bash_profile no est presente, o
".profile" usado no lugar.
O tcsh usa os seguintes scripts de inicializao: /etc/csh.login
(executado por todos os usurios do tcsh no momento do login),
$HOME/.tcshrc (executado no momento do login e a cada nova instncia do
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
87
tcsh), e $HOME/.login (executado no momento do login, aps o .tcshrc). Se o
".tcshrc" no est presente, o ".cshrc" usado no lugar.
Um guia completo de programao shell estaria alm do escopo deste
livro. Veja as pginas do manual para o bash e o tcsh para aprender mais
sobre personalizar o ambiente Linux.

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
88
12 CONTROLE DE TAREFAS
12.1 Tarefas e Processos
Controle de Tarefas (jobs) uma caracterstica oferecida por vrios
shells (incluindo o bash e o tcsh) que permite que voc controle mltiplos
comandos que esto rodando (as tarefas) ao mesmo tempo. Antes de
aprofundar-nos mais, precisamos falar sobre processos.
Cada vez que voc roda um programa, voc inicia o que chamado de
um processo. O comando "ps" mostra uma lista de processos rodando no
momento, como mostrado aqui.
/home/larry# ps
PID TT STAT TIME COMMAND
24 3 S 0:03 (bash)
161 3 R 0:00 ps
/home/larry#

O PID listado na primeira coluna o que chamamos de ID do processo
(ou identificao), um nmero nico dado a cada processo que est rodando.
A ltima coluna, COMMAND, o nome do comando que est rodando. Aqui,
estamos vendo somente os processos que o Larry est rodando (h muitos
outros processos roddando no sistema tambm - "ps -aux" lista todos). Eles
so o bash (o shell do Larry), e o prprio comando "ps". Como voc pode ver,
bash est rodando concorrentemente com o comando ps. O bash executou o
ps quando o Larry digitou o comando. Depois que o ps terminar de rodar
(somente depois que a tabela de processos mostrada), o controle retornado
ao processo bash, que mostra o prompt, pronto para outro comando.
Um processo rodando tambm chamado de uma tarefa. Os termos
processos e tarefas so intercambiveis. Entretanto, um processo
usualmente referido com o uma terefa quando usado em conjunto com
controle de tarefas - uma caracterstica do shell que permite chavear entre
vrias tarefas independentes.
Na maioria dos casos, os usurios rodam somente uma tarefa de cada
vez - qualquer comando que eles tenha digitado no shell. Entretanto, usando
controle de tarefas, voc pode rodar vrias tarefas de uma s vez, e chavear
entre elas quando necessrio.
Como isto pode ser til? Vamos assumir que voc esteja editando um
arquivo texto e quer interromper sua edio para fazer alguma outra coisa.
Com controle de tarefas, voc pode suspender temporariamente o editor, voltar
para o prompt do shell e iniciar algum outro trabalho. Quando terminar, voc
pode chavear novamente para o editor e voltar para onde estava, como se no
tivesse sado dele. H muitos outros usos prticos do controle de tarefas.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
89
12.2 Foreground and background
As tarefas podem ser em foreground (primeiro plano) ou em
background (segundo plano). S pode haver uma tarefa em primeiro plano
por vez. A tarefa em primeiro plano aquela com a qual voc interage - ela
recebe entradas do teclado e envia sada para a sua tela, a menos, claro, que
voc tenha redirecionado a entrada ou sada, como descrito anteriormente.
Por outro lado, tarefas em segundo plano no recebem entradas do terminal -
em geral, elas rodam em silncio sem necessidade de interao.
Algumas tarefas levam um bom tempo para terminar e no fazem nada
interessante enquanto rodao. Compilao de programas uma dessas tarefas,
assim como compactar um grande arquivo. No h razes para que voc fique
sentado esperando que essas tarefas terminem; basta rod-las em segundo
plano. Enquanto as tarefas rodam em segundo plano, voc est livre para
rodar outros programas.
Tarefas tambm podem ser suspensas. Uma tarefa suspensa uma
tarefa que est temporariamente parada. Depois que voc suspende uma
tarefa, voc pode solicitar que ela continue em primeiro ou segundo plano,
conforme necessrio. Resumir uma tarefa suspensa no muda o estado da
tarefa de nenhuma forma - a tarefa continua rodando de onde ela parou.
Suspender uma tarefa no igual a interromper uma tarefa. Quando
voc interrompe um processo rodando (pressionando a tecla de interrupo,
que usualmente o Ctrl-C), o processo morto, para sempre. Uma vez que a
tarefa abortada, no h como retornar para ela. Voc ter que rodar o
comando novamente. Alm disso, alguns programas capturam a interrupo, e
pressionando Ctrl-C no vai abortar imediatamente a tarefa. Isso permite que o
programa execute funes para sair de forma limpa antes de terminar. Ainda,
alguns programas no permitem que voc os aborte com uma interrupo.
12.3 Colocando tarefas em segundo plano e abortando tarefas
Vamos comear com um exemplo simples. O comando "yes"
aparentemente um comando intil que manda uma lista sem fim de "y"s para a
sada padro. (Na verdade ele til se voc fizer um pipe com ele na sada de
outro programa que pergunta uma srie de perguntas "yes" ou "no" e voc quer
confirmar todas elas).
Tente:
/home/larry# yes
y
y
y
y
y
y
y

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
90
Os y's vo continuar infinitamente. Voc pode matar o processo
pressionando a tecla de interrupo (Ctrl-C). Para que voc no tenha que
lidar com uma lista inoportuna de y's, vamos redirecionar a sada padro do
"yes" para /dev/null. Como voc pode lembrar, /dev/null age como um "buraco
negro" para os dados. Qualquer dado mandado para /dev/null desaparece.
Esse um mtodo efetivo de calar um programa que "fala" muito.
/home/larry# yes > /dev/null

Ah, bem melhor! Nada impresso, mas o prompt do shell no volta.
Isso porque o "yes" ainda est rodando, e mandando uma monte desses y's
inteis para o /dev/null. Novamente, para matar a tarefa, pressione a tecla de
interrupo.
Vamos supor que voc queira que o comando "yes" continue rodando,
mas quer ter o prompt do shell de volta para que possa continuar trabalhando.
Voc pode colocar o "yes" em segundo plano, permitindo que ele rode e sem
que voc tenha que interagir.
Uma maneira de colocar o processo em segundo plano anexar um
caracter "&" no fim da linha de comando.
/home/larry# yes > /dev/null &
[1] 164
/home/larry#

Como voc pode ver, o prompt do shell retornou. Mas o que esse "[1]
164"? E o comando yes est realmente rodando?
O "[1]" representa o nmero da tarefa para processo yes. O shell
determina um nmero de tarefa para cada tarefa rodando. Como o yes o
primeiro e nico arquivo que ns estamos rodando, ele recebe o nmero de
tarefa 1. O "164" o ID do processo, ou PID (process id), nmero dado pelo
sistema para a tarefa. Voc pode usar qualquer dos dois nmeros para fazer
referncia tarefa, como vamos ver mais tarde.
Agora voc tem o processo "yes" rodando em segundo plano, mandando
continuamente uma lista de y's para o /dev/null. Para verificar o estado do
processo, use o comando interno do shell, "jobs".
/home/larry# jobs
[1]+ Running yes > /dev/null &
/home/larry#

Com certeza, l estar ele. Voc tambm pode usar o comando ps,
como demonstrado acima para verificar o estado da tarefa.
Para matar a tarefa, use o comando kill. Esse comando recebe o
nmero da tarefa ou o ID do process como um argumento. Esse era a tarefa
de nmero 1, assim, usando o comando:
/home/larry# kill %1

mata a tarefa. Quando identificar uma tarefa pelo nmero de tarefa,
voc deve usar o caracter de percentagem (%) como prefixo ao nmero.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
91
Agora que voc matou a tarefa, use o comando jobs novamente para
verificar seu estado.
/home/larry# jobs
[1]+ Terminated yes > /dev/null &
/home/larry#

A tarefa est, de fato, morta, e se voc usar o comando jobs ainda mais
uma vez, nada deve ser mostrado.
Voc tambm pode matar uma tarefa usando o PID do processo,
mostrado junto com o nmero da tarefa quando voc a iniciou. Em nosso
exemplo, o ID do processo 164, ento o comando:
/home/larry# kill 164

equivalente ao
/home/larry# kill %1

Voc no deve usar o caracter "%" quando fizer referncia a uma tarefa
pelo ID do processo.
12.4 Parando e reiniciando tarefas
H outra forma de colocar uma tarefa em segundo plano. Voc pode
iniciar uma tarefa normalmente (em primeiro plano), parar o processo, e ento
reinici-lo em segundo plano.
Primeiro, inicie o processo yes em primeiro plano, como voc fez antes:
/home/larry# yes > /dev/null

Novamente, como o yes est rodando em primeiro plano, voc no vai
receber o prompt do shell de volta.
Agora, ao invs de interromper o processo com Ctrl-C, suspenda a
tarefa. Suspender uma tarefa no a aborta. Somente a pra temporariamente
at que voc a reinicie. Para fazer isso, pressione a tecla de suspender, que
normalmente Ctrl-Z.
/home/larry# yes > /dev/null
{Ctrl-Z}
[1]+ Stopped yes > /dev/null
/home/larry#

Enquanto a tarefa estiver suspensa, ela simplesmente no est rodando.
Nenhum tempo de CPU usado para a tarefa. No entanto, voc pode reinici-
la, o que causa que a tarefa continue rodando, como se nada tivesse
acontecido. Ela continuara de onde havia parado.
Para reiniciar uma tarefa em primeiro plano, use o comando "fg" (do
ingls, foreground).
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
92
/home/larry# fg
yes > /dev/null

O shell mostra o nome do comando novamente para que voc saiba
qual tarefa voc colocou em primeiro plano. Pare a tarefa novamente com Ctrl-
Z. Desta vez, use o comando "bg" para colocar a tarefa em segundo plano.
Isso faz com que o comando rode como se voc o tivesse iniciado com o
caracter "&" (ver seo anterior).
/home/larry# bg
[1]+ yes > /dev/null &
/home/larry#

E voc vai ter o prompt de volta. O comando "jobs" tambm deve
mostrar que o "yes" est rodando, e voc pode matar a tarefa com o kill, como
fez antes.
Como voc pode parar a tarefa novamente? Usar o Ctrl-Z no vai
funcionar, pois a tarefa est em segundo plano. A resposta colocar a tarefa
em primeiro plano com fg, e s ento par-la. Como voc deve ter notado,
pode usar o fg tanto em processos parados como em processos em segundo
plano.
Essa uma grande diferena entre uma tarefa em segundo plano e uma
tarefa que est parada. Uma tarefa parada no est rodando - ela no est
usando nenhum tempo de CPU, e no est fazendo qualquer trabalho (a tarefa
ainda ocupa memria do sistema, embora ele pode ter sido jogado para swap
no disco). Uma tarefa em segundo plano est rodando e usando memria,
bem como completando algum servio enquanto voc faz outro trabalho.
Entretanto, uma tarefa em segundo plano pode tentar exibir texto em seu
terminal, o que pode ser incmodo se voc est tentando trabalhar em alguma
outra coisa. Por exemplo, se voc usar o comando:
/home/larry# yes &

sem redirecionar a stdout para /dev/null, uma lista de y's ser mostrada
na sua tela, sem que voc tenha uma maneira de interromp-la. (Voc no
pode usar o Ctrl-C para interromper tarefas em segundo plano). Para parar
essa lista infinita de y's, use o comando "fg" para trazer a tarefa para primeiro
plano, e depois use o Ctrl-C para mat-la.
Outra nota: os comandos fg e bg normalmente afetam as a ltima tarefa
parada (indicada por um "+" seguindo o nmero da tarefa quando voc usa o
comando jobs). Se voc estiver rodando mltiplas tarefas de uma vez, voc
pode colocar tarefas em primeiro ou segundo plano fornecendo o nmero da
tarefa como argumento aos comandos fg ou bg, com no exemplo:
/home/larry# fg %2

(coloca a tarefa 2 em primeiro plano), ou
/home/larry# bg %3

LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica
93
(coloca a tarefa 3 em segundo plano). Voc no pode usar o ID do
processo com fg ou bg.
Alm disto, usando o nmero da tarefa somente, como em:
/home/larry# %2

equivalente a
/home/larry# fg %2

Lembre-se que o controle de tarefas uma funo do shell. Os
comandos fg, bg e jobs so internos ao shell. Se, por alguma razo, voc usa
um shell que no suporta controle de tarefas, no espere encontrar esses
comandos disponveis.
H, tambm, alguns aspectos que diferem entre os controles de tarefas
do bash e tcsh. De fato, alguns shell no fornecem controle de tarefas -
entretanto, a maioria dos shells disponveis para Linux fornece.
LINUX - Curso Bsico
Acreinfo - Consultoria e Servios de Informtica