linux intermediÁrio
DESCRIPTION
APOSTILA LINUX INTERMEDIÁRIOTRANSCRIPT
CURSO DE PÓS-GRADUAÇÃO“LATO SENSU” (ESPECIALIZAÇÃO) A DISTÂNCIA
ADMINISTRAÇÃO EM REDES LINUX
LINUX INTERMEDIÁRIO
Joaquim Quinteiro UchôaLuiz Eduardo Simeone
Matheus Garcia Barbosa FigueiredoSamuel Pereira Dias
UFLA - Universidade Federal de LavrasFAEPE - Fundação de Apoio ao Ensino, Pesquisa e Extensão
Lavras – MG
PARCERIAUFLA – Universidade Federal de LavrasFAEPE – Fundação de Apoio ao Ensino, Pesquisa e Extensão
REITORFabiano Ribeiro do Vale
VICE-REITORAntônio Nazareno Guimarães Mendes
DIRETOR DA EDITORAMarco Antônio Rezende Alvarenga
PRÓ-REITOR DE PÓS-GRADUAÇÃOLuiz Edson Mota de Oliveira
PRÓ-REITOR ADJUNTO DE PÓS-GRADUAÇÃO “LATO SENSU”Antônio Ricardo Evangelista
COORDENADOR DO CURSOJoaquim Quinteiro Uchôa
PRESIDENTE DO CONSELHO DELIBERATIVO DA FAEPEAntônio Eduardo Furtini Neto
EDITORAÇÃOGrupo Ginux (http://ginux.comp.ufla.br/)
IMPRESSÃOGráfica Universitária/UFLA
Ficha Catalográfica preparada pela Divisão de Processos Técnicosda Biblioteca Central da UFLA
Linux Intermediário / Joaquim Quinteiro Uchôa, Luiz Eduardo Sime-one, Matheus Garcia Barbosa Figueiredo, Samuel Pereira Dias. – Lavras:UFLA/FAEPE, 2003.
130 p.: il. - Curso de Pós-Graduação “Lato Sensu” (Especialização) a Dis-tância: Administração em Redes Linux
Bibliografia.
1. Linux. 2. UNIX. 3. Sistemas Operacionais 4. Interface Homem-Máquina5. Informática. I. DCC II. Universidade Federal de Lavras. III. Fundação de Apoioao Ensino, Pesquisa e Extensão. IV. Título.
CDD-005.43
Nenhuma parte desta publicação pode ser reproduzida, por qualquermeio ou forma , sem a prévia autorização.
SUMÁRIO
1 Introdução 11
2 Introdução ao Linux 132.1 Kernel e Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2 Distribuições e Suas Características . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 O que é uma Distribuição . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.2 Slackware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.3 Distribuições Baseadas em RPM . . . . . . . . . . . . . . . . . . . . . 142.2.4 Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Modo Gráfico x Modo Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4 Instalando o Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 GUI - Graphical User Interface 173.1 O Servidor Gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2 Gerenciadores de Janela e de Ambiente . . . . . . . . . . . . . . . . . . . . . 183.3 Gerenciadores de Janela mais comuns . . . . . . . . . . . . . . . . . . . . . 19
3.3.1 KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.3.2 GNOME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3.3 WindowMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.3.4 TWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3.5 FVWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3.6 XFce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4 Aplicativos Gráficos em Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4.1 Editores de Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.4.2 Software para Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.4.3 Aplicativos e Pacotes para Escritório . . . . . . . . . . . . . . . . . . . 353.4.4 IDEs - Integrated Development Enviroment . . . . . . . . . . . . . . . 403.4.5 Glimmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.4.6 Depuradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.5 Editores HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.5.1 SCREEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.6 Editores Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.6.1 Editores Bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.6.2 Editores Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.7 Visualizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.7.1 Visualizadores de Imagens . . . . . . . . . . . . . . . . . . . . . . . . 533.7.2 Visualizadores PostScript e PDF . . . . . . . . . . . . . . . . . . . . . 55
3.8 Aplicativos de Música, Vídeo e Entretenimento . . . . . . . . . . . . . . . . . 583.9 Comentários Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4 O Console Linux 634.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.2 Comandos para Manipulação de Arquivos e Diretórios . . . . . . . . . . . . . 64
4.2.1 Comando cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.2.2 Comando pwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.2.3 Comando ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.2.4 Comando mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.2.5 Comando rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.2.6 Comando rm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.2.7 Comando mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.2.8 Comando cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.2.9 Comando touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.2.10 Comando ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.2.11 Comando chmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.2.12 Comando chown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.2.13 Comando chgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744.2.14 Comando mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.2.15 Comando umount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.3 Comandos de Transição do MS-DOS para Linux . . . . . . . . . . . . . . . . 764.3.1 Comando mdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.3.2 Comando mcopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.3.3 Comando mformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.4 Comandos de Visualização, Busca e Ordenação . . . . . . . . . . . . . . . . 784.4.1 Comando less . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794.4.2 Comando cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.4.3 Comando tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.4.4 Comando head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.4.5 Comando find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824.4.6 Comando locate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.4.7 Comando sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.4.8 Comando wc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.4.9 Comando grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.5 Comandos de Compactação . . . . . . . . . . . . . . . . . . . . . . . . . . . 854.5.1 Comandos zip e unzip . . . . . . . . . . . . . . . . . . . . . . . . . 864.5.2 Comandos gzip e gunzip . . . . . . . . . . . . . . . . . . . . . . . . 874.5.3 Comandos bzip2 e bunzip2 . . . . . . . . . . . . . . . . . . . . . . 884.5.4 Comando tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.6 Comandos para Gerenciamento de Processos . . . . . . . . . . . . . . . . . 894.6.1 Comandos ps e top . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904.6.2 Comandos nice e renice . . . . . . . . . . . . . . . . . . . . . . . . 914.6.3 Comando kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.7 Comandos Diversos do Console . . . . . . . . . . . . . . . . . . . . . . . . . 934.7.1 Comando exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934.7.2 Comando clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944.7.3 Comando date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.7.4 Comando who . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.7.5 Comando cal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.7.6 Comando passwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.8 Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.9 Editores de Texto no Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.9.1 VIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.9.2 JOE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.9.3 Pico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.9.4 GNU nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.10 Aplicativos Diversos em Modo Terminal . . . . . . . . . . . . . . . . . . . . . 1014.10.1 Pine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.10.2 Lynx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024.10.3 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.10.4 Mutt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.11 Outros Aplicativos em Modo Texto . . . . . . . . . . . . . . . . . . . . . . . . 103
5 Obtendo Ajuda 1075.1 Páginas man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.2 Infos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085.3 Ajuda por Linha de Comando . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105.4 Documentação on-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.4.1 Grupos de discussão da Usenet . . . . . . . . . . . . . . . . . . . . . 1115.4.2 Listas de Discussão . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125.4.3 O LDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135.4.4 O Rau-Tu da Unicamp . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6 Instalação de Aplicativos 1156.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156.2 Instalando Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176.3 Removendo Pacotes Indesejados . . . . . . . . . . . . . . . . . . . . . . . . 1206.4 Atualizando Pacotes Instalados . . . . . . . . . . . . . . . . . . . . . . . . . . 1216.5 Consultas Básicas aos Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . 121
6.5.1 Listando Todos os Pacotes Instalados . . . . . . . . . . . . . . . . . . 1226.5.2 Consultando um Pacote não Instalado . . . . . . . . . . . . . . . . . . 1226.5.3 Consultando Informações de um Pacote . . . . . . . . . . . . . . . . . 1236.5.4 Consultando as Dependências de um Pacote . . . . . . . . . . . . . . 1236.5.5 Consultando as Capacidades de um Pacote . . . . . . . . . . . . . . 1256.5.6 Consultado os Arquivos Instalados por um Pacote . . . . . . . . . . . 1256.5.7 Consultando qual Pacote Instalou um Arquivo Específico . . . . . . . 126
6.6 Onde Encontrar Pacotes e Dependências . . . . . . . . . . . . . . . . . . . . 126
Referências Bibliográficas 129
LISTA DE FIGURAS
3.1 Servidor X com 4 Clientes Conectados . . . . . . . . . . . . . . . . . . . . . . 183.2 Sessão KDE com Aplicativos . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3 Gerenciador de Janelas GNOME . . . . . . . . . . . . . . . . . . . . . . . . . 213.4 Gerenciador de Janelas WindowMaker . . . . . . . . . . . . . . . . . . . . . . 223.5 Dock e Clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.6 Ferramenta de Preferências do WindowMaker . . . . . . . . . . . . . . . . . 233.7 TWM – Um dos Primeiros Gerenciadores de Janelas . . . . . . . . . . . . . . 243.8 Gerenciador de Janelas FVWM . . . . . . . . . . . . . . . . . . . . . . . . . . 253.9 Ambiente XFce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.10 Gedit – Editor de Texto do GNOME . . . . . . . . . . . . . . . . . . . . . . . . 273.11 Editor de texto XEmacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.12 Tela inicial do Mozilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.13 Navegador Galeon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.14 Navegador Konqueror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.15 Cliente de E-mail do Evolution . . . . . . . . . . . . . . . . . . . . . . . . . . 323.16 Leitor de E-mail Balsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.17 Cliente de E-mail Kmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.18 gFTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.19 OpenOffice.org: Janela Principal do Writer . . . . . . . . . . . . . . . . . . . 363.20 KWord, Processador de Textos do KOffice . . . . . . . . . . . . . . . . . . . . 373.21 Planilha do pacote de escritório SIAG . . . . . . . . . . . . . . . . . . . . . . 383.22 Processador de Textos AbiWord . . . . . . . . . . . . . . . . . . . . . . . . . 393.23 Planilha Gnumeric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.24 Ambiente de Desenvolvimento Anjuta . . . . . . . . . . . . . . . . . . . . . . 403.25 Ambiente de Desenvolvimento Glimmer . . . . . . . . . . . . . . . . . . . . . 413.26 GDB – GNU Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.27 GVD – GNU Visual Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.28 KDbg – KDE Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.29 DDD – Data Display Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . 443.30 Editor de HTML Quanta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.31 Editor de HTML Bluefish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.32 Editor de HTML SCREEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.33 Editor de Folhas de Estilos do SCREEM . . . . . . . . . . . . . . . . . . . . . 473.34 GIMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.35 ImageMagick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.36 Xfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.37 Sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.38 Sodipodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.39 OpenOffice Draw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.40 Dia – Editor de Diagramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.41 Eletric Eyes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.42 GQview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.43 Xpdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.44 Acrobat Reader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.45 gv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.46 GGv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.47 XMMS - X Multimedia System . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.48 Xine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.49 Jogo Bzflag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.1 Exemplos de Uso do cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.2 Exemplos de Uso do pwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.3 Exemplos de Uso do ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.4 Exemplos de Uso do mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.5 Exemplo de Uso do rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.6 Exemplo de Uso do rmdir – uso de caracteres “coringa” . . . . . . . . . . . 674.7 Exemplo de Uso do rm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.8 Exemplos de Uso do mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.9 Exemplos de Uso do cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.10 Exemplos de Uso do touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.11 Exemplos de Uso do ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.12 Exemplos de Uso do Comando chmod – Opções por Caracteres . . . . . . . 734.13 Exemplos de Uso do Comando chmod . . . . . . . . . . . . . . . . . . . . . . 744.14 Exemplos de Uso do Comando chown . . . . . . . . . . . . . . . . . . . . . . 744.15 Exemplo de Uso do chgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.16 Exemplos de uso do mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.17 Exemplos de Uso do umount . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.18 Exemplos de Uso do mdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784.19 Exemplos de Uso do mcopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784.20 Exemplos de Uso do mformat . . . . . . . . . . . . . . . . . . . . . . . . . . 794.21 Exemplos de Uso do less . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794.22 Exemplos de Uso do cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.23 Exemplos de Uso do tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.24 Exemplos de Uso do head . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.25 Exemplos de Uso do find . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824.26 Exemplos de Uso do locate . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.27 Exemplos de Uso do sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.28 Exemplos de Uso do wc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.29 Exemplos de Uso do grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864.30 Exemplos de Uso do zip e do unzip . . . . . . . . . . . . . . . . . . . . . . 864.31 Exemplos de Uso do gzip e do gunzip . . . . . . . . . . . . . . . . . . . . . 884.32 Exemplos de Uso do tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894.33 Programa top em Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . 904.34 Exemplos de Uso do ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914.35 Exemplo de Uso do renice . . . . . . . . . . . . . . . . . . . . . . . . . . . 924.36 Exemplo de Uso do kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.37 Exemplos de Uso do exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944.38 Exemplo de Uso do clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944.39 Exemplos de Uso do date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.40 Exemplos de Uso do who . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.41 Exemplos de Uso do cal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.42 Exemplos de Uso de Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984.43 Editor de Textos VIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984.44 Editor de Textos VIM – Versão Gráfica . . . . . . . . . . . . . . . . . . . . . . 994.45 Editor de Textos JOE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.46 Editor de Textos Pico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.47 Editor de Textos GNU nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.48 Cliente de E-mail Pine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024.49 Navegador Web Lynx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.50 Navegador Web Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044.51 Cliente de E-mail Mutt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.1 Exemplos de Uso do man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085.2 Manual do Programa man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095.3 Página Info do Programa info . . . . . . . . . . . . . . . . . . . . . . . . . . 1105.4 Obtendo Ajuda por Linha de Comando . . . . . . . . . . . . . . . . . . . . . . 111
6.1 Listando Pacotes RPMs Instalados . . . . . . . . . . . . . . . . . . . . . . . . 1226.2 Consultando um Pacote RPM Instalado . . . . . . . . . . . . . . . . . . . . . 1236.3 Consultando um Pacote RPM Não-Instalado . . . . . . . . . . . . . . . . . . 1246.4 Consultando Dependências de um Pacote . . . . . . . . . . . . . . . . . . . . 1246.5 Consultando Capacidades de um Pacote . . . . . . . . . . . . . . . . . . . . 1256.6 Listando Arquivos Instalados por um Pacote . . . . . . . . . . . . . . . . . . . 1266.7 Consultando o Pacote de um Dado Arquivo . . . . . . . . . . . . . . . . . . . 126
LISTA DE TABELAS
4.1 Parâmetros do Comando cd . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.2 Parâmetros do Comando pwd . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.3 Parâmetros do Comando ls . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.4 Parâmetros do Comando rm . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.5 Parâmetros do Comando mv . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.6 Parâmetros do Comando cp . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.7 Parâmetros do Comando touch . . . . . . . . . . . . . . . . . . . . . . . . . 714.8 Permissões de Arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.9 Parâmetros do comando mount . . . . . . . . . . . . . . . . . . . . . . . . . 754.10 Parâmetros do Comando umount . . . . . . . . . . . . . . . . . . . . . . . . 764.11 Parâmetros do Comando mdir . . . . . . . . . . . . . . . . . . . . . . . . . . 774.12 Parâmetros do Comando mcopy . . . . . . . . . . . . . . . . . . . . . . . . . 774.13 Parâmetros do Comando mformat . . . . . . . . . . . . . . . . . . . . . . . . 794.14 Comandos de Navegação do less . . . . . . . . . . . . . . . . . . . . . . . . 804.15 Parâmetros do Comando cat . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.16 Parâmetros do Comando find . . . . . . . . . . . . . . . . . . . . . . . . . . 824.17 Parâmetros do Comando locate . . . . . . . . . . . . . . . . . . . . . . . . 834.18 Parâmetros do Comando sort . . . . . . . . . . . . . . . . . . . . . . . . . . 844.19 Parâmetros do Comando wc . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.20 Parâmetros do Comando grep . . . . . . . . . . . . . . . . . . . . . . . . . . 854.21 Parâmetros dos Comandos zip e unzip . . . . . . . . . . . . . . . . . . . . 874.22 Parâmetros dos Comandos gzip e gunzip . . . . . . . . . . . . . . . . . . . 874.23 Parâmetros do Comando tar . . . . . . . . . . . . . . . . . . . . . . . . . . . 894.24 Parâmetros do Comando ps . . . . . . . . . . . . . . . . . . . . . . . . . . . 914.25 Parâmetros do Comando renice . . . . . . . . . . . . . . . . . . . . . . . . 924.26 Principais Sinais Enviados pelo kill . . . . . . . . . . . . . . . . . . . . . . 934.27 Parâmetros do Comando date . . . . . . . . . . . . . . . . . . . . . . . . . . 944.28 Especifição de Formatos de Saída do Comando date . . . . . . . . . . . . . 954.29 Parâmetros do Comando who . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.30 Parâmetros do Comando cal . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.1 Comandos para Navegação em Páginas man . . . . . . . . . . . . . . . . . . 1085.2 Comandos para Navegação em Páginas info . . . . . . . . . . . . . . . . . . 1095.3 Grupos de Discussão e Assuntos Abordados . . . . . . . . . . . . . . . . . . 112
6.1 Parâmetros do Comando rpm . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
1INTRODUÇÃO
Este texto tem por principal objetivo instruir o seu leitor nos passos básicos neces-
sários ao uso de uma estação Linux. Por estação, em geral, compreende-se qualquer
computador que esteja direcionado ao usuário final. Isso implica que, na maioria dos ca-
sos, um servidor não é considerado uma estação. Ao restringir-se ao uso, esta apostila não
está preocupada com o processo de configuração e instalação.
Detalhes de instalação, cada vez mais simples, podem ser obtidos na documentação
da distribuição Linux escolhida pelo usuário. O processo de configuração, por sua vez
pode ser visto em detalhes em: (NEMETH, 1995), (NEMETH, 2001), (STANFIELD; SMITH,
2001), (WIRZENIUS; OJA; STAFFORD, 2001), (FRAMPTON, 1999), (KIRCH; DAWSON, 2000).
Merecem especial destaque (SICA; UCHÔA, 2003) e (UCHÔA; SIMEONE; SICA, 2003).
Este texto foi escrito pensando em um usuário básico do sistema operacional Linux
(ou equivalente). Ele foi produzido principalmente a partir da experiência adquirida pelos
autores em administração de laboratórios e uso de diversos sistemas operacionais. Essa
experiência em administração de sistemas foi enriquecida pela leitura de diversos materiais,
como as citadas anteriormente. A essas referências devem ser acrescidos vários Howtos1
disponibilizados pela The Linux Documentation Project 2.
O texto encontra-se organizado de forma a levar o usuário das tarefas mais simples
às mais avançadas. Assim, o Capítulo 2 apresenta o Linux e suas características básicas.
O Capítulo 3 mostra a interface gráfica do Linux, incluíndo-se os aplicativos gráficos mais
comuns. Já o Capítulo 4 mostra o console do Linux, mostrando ao leitor os principais
comandos necessários à operação do Linux em modo texto. O Capítulo 5 apresenta ao
usuário básico os principais mecanismos de obtenção de ajuda e, por último, o Capítulo 6
mostra os principais passos para instalação de aplicativos em distribuições baseadas no
formato RPM.
Joaquim Quinteiro Uchôa é licenciado em Matemática pela Universidade Federal de
Mato Grosso (UFMT), com mestrado em Ciência da Computação pela Universidade Fede-
1Um Howto é um pequeno guia que ensina um usuário a configurar um serviço ou fazer uma dada tarefa.2The Linux Documentation Project: http://www.tldp.org/. A tradução de parte dos documentos
desse projeto podem ser encontrados em http://br.tldp.org/.
12 EDITORA - UFLA/FAEPE - Linux Intermediário
ral de São Carlos (UFSCar). Antes de adotar o Linux, em 1998, já havia trabalhado com
Solaris, MS-DOS (lembram-se do CISNE?) e OS/2, passando, obviamente pelos Windows
2.0, Windows 3.1 (e 3.11) e Windows 95. Segundo amigos, ele já superou o trauma do
uso desses três últimos aplicativos (que alguns insistem em chamar de sistemas operacio-
nais), apesar de ter desenvolvido aversão a alguns tipos de janelas. Foi o responsável pela
instalação do primeiro laboratório baseado em Linux na UFLA e um dos maiores dissemi-
nadores desse sistema operacional na universidade. Professor da UFLA, desde 1997, atua
principalmente nas áreas de Teoria da Computação e Inteligência Artificial. É o principal
responsável pela criação do ARL, sendo seu atual coordenador.
Luiz Eduardo Simeone é Bacharelando em Ciência da Computação pela Universidade
Federal de Lavras. Teve o primeiro contato com Linux em 2000, incentivado por professo-
res. Trabalhou com suporte ao usuário no Departamento de Administração e Economia da
UFLA, com sistemas Windows 95, Windows 98 e Windows NT Workstation. Em seguida
foi administrador da rede do Centro de Tecnologia em Informática da UFLA - UFLATEC,
onde foi responsável pela implantação do servidor de e-mail utilizando Linux, e integrando
os servidores Windows 2000 e Linux com estações Windows 2000 e Linux. Atualmente
trabalha na equipe técnica do ARL, administrando servidores do curso e do Departamento
de Ciência da Computação.
Matheus Garcia Barbosa de Figueiredo é Bacharelando em Ciência da Computação
pela Universidade Federal de Lavras. Teve o primeiro contato com o Linux em 2000, ao
entrar na universidade. Atualmente trabalha na equipe técnica do ARL, no desenvolvimento
do CD-ROM “Recursos” e de ferramentas de apoio ao ensino à distância para o ARL.
Samuel Pereira Dias é Bacharelando em Ciência da Computação pela Universidade
Federal de Lavras. O contato efetivo com Linux ocorreu em 1999, após frustrações com
as versões iniciais da Conectiva. Trabalhou com suporte de rede para os usuários do De-
partamento de Medicina Veterinária, em uma rede ponto-a-ponto baseada em Windows.
Também realizou estágio no CEFET/Bambuí (ex-Escola Agrotécnica Federal de Bambuí),
instalando um servidor Linux para a intranet local e a criação de políticas de uso e segu-
rança da rede local. Atualmente trabalha na equipe técnica do ARL como administrador do
servidor do curso, juntamente com Luiz Simeone, além do gerenciamento dos serviços de
banco de dados e ambientes virtuais de ensino (TelEduc) e desenvolvimento de ferramentas
de apoio ao ensino a distância para o ARL.
Os autores se sentirão realizados com a escrita desta obra se ela contribuir para dis-
seminar ainda mais o uso de Linux no Brasil e desejam um bom aprendizado ao leitor.
2INTRODUÇÃO AO LINUX
2.1 KERNEL E LINUX
Linux é um sistema operacional UNIX-like, compatível com o POSIX1, licenciado sob a
Licença Pública GNU (GPL)2. Inicialmente ele foi desenvolvido por um então estudante da
Universidade de Helsinque, Finlândia, chamado Linus Torvalds. Ele adicionou tantas fun-
cionalidades a um aplicativo de comunicação em rede que estava desenvolvendo, visando
torná-lo compatível com o sistema de arquivos do Minix, que desconfiou que estava fazendo
um novo sistema operacional (SO), o que realmente estava acontecendo.
O Minix3 era um sistema operacional construído para fins educativos por Andrew Ta-
nembaum, e serviu de base para o desenvolvimento desse novo SO. A primeira versão do
Linux foi liberada em 1991 e desde então ele não parou de crescer, com a contribuição de
centenas de programadores ao redor do mundo. Provavelmente o Linux é um dos maiores,
senão o maior, projeto colaborativo de desenvolvimento de software no mundo. Mais deta-
lhes sobre a história do Linux podem ser encontrados em (TORVALDS; DIAMOND, 2001) e
(LINUX ONLINE INC., 2003).
Mas o Linux é apenas o kernel do sistema operacional. E os outros aplicativos? Eles
são formados, em sua maioria, por software livre. Muitos deles são softwares GNU, ou seja,
tem o apoio da Free Software Foundation4. Alguns exemplos desse software são o sistema
de janelas (X Window System)5, o sistema de editoração eletrônica LATEX6, o compilador C
da GNU (GCC)7, o editor de textos emacs8, e o Bourne Again SHell (BASH)9. Além disso,
a intenção do projeto GNU é construir um sistema operacional livre similar ao UNIX, com
1http://www.pasc.org/#POSIX2http://www.magnux.org/doc/GPL-pt_BR.txt3http://www.cs.vu.nl/~ast/minix.html4http://www.fsf.org/5http://www.xfree86.org/ e http://www.x.org/6http://www.latex-project.org7http://gcc.gnu.org/8http://www.gnu.org/software/emacs/emacs.html9http://www.gnu.org/software/bash/bash.html
14 EDITORA - UFLA/FAEPE - Linux Intermediário
um kernel próprio chamado HURD10. Mas o Linux ficou pronto primeiro. Então porque não
utilizar o Linux para fazer um sistema operacional livre similar ao UNIX? Foi assim que
nasceu o GNU/LINUX, que é uma denominação mais correta do sistema operacional em
questão nesta apostila.
2.2 DISTRIBUIÇÕES E SUAS CARACTERÍSTICAS
2.2.1 O que é uma Distribuição
Distribuição de um sistema GNU/Linux é basicamente um conjunto de pacotes de soft-
ware que contém o kernel Linux, aplicativos adicionais, como a GNU libc, por exemplo,
documentação e o código fonte dos programas livres distribuídos. No início, era só o kernel,
o compilador C, e algumas outras ferramentas bem simples. Com o tempo e o aumento de
usuários e de software disponível, algumas universidades, empresas e usuários começa-
ram a colocar no sistema operacional pacotes de sua preferência ou necessidade. Assim
nasceram as distribuições. Hoje existem vários tipos de distribuições diferentes: voltadas
para servidores, ambientes corporativos, usuários domésticos, sem necessidade de insta-
lação, em apenas um disquete, etc.
2.2.2 Slackware
A Slackware11 foi a primeira distribuição Linux independente, ou seja, diferente da
feita por Linus Torvalds. É a mais parecida com o UNIX, e sempre tem procurado manter
esta semelhança. Também é uma distribução não-comercial, ou seja, a organização que
mantem a Slackware não tem fins lucrativos. Esta distribuição é recomendada para os
usuários que tem grande conhecimento de UNIX. Um dos grandes problemas da Slackware
é a ausência de um sistema de tratamento de dependência entre os pacotes. Os pacotes
da Slackware são no formato .tgz, que só guarda informações sobre onde os arquivos
devem ser colocados. Isso dificulta a manutenção do sistema, principalmente por parte de
novos usuários.
2.2.3 Distribuições Baseadas em RPM
O RPM (RPM Package Manager)12 é um sistema de gerenciamneto de dependência
entre pacotes. A primeira distribuição a utilizar o RPM foi a Red Hat Linux13. A Red Hat
é uma distribuição comercial construída a partir da Slackware, e atualmente é uma das
mais utilizadas no mundo. A partir do Red Hat foram construídas várias outras distribuições
10http://www.gnu.org/software/hurd/11http://www.slackware.com/12http://www.rpm.org/13http://www.redhat.com/
Introdução ao Linux 15
como Mandrake14, Conectiva15, Yellow Dog16, SuSE17 e UnitedLinux18. Essas distribuições
são conhecidas como Red Hat-like. O RPM facilita muito a manutenção e atualização do
sistema, e facilita a adaptação de novos usuários, por esse motivo tem sido um dos formatos
mais aceitos no mercado.
2.2.4 Debian
Uma outra distribuição de uso comum que merece destaque é a Debian19, que utiliza
um sistema de pacotes próprio: o DEB. Essa distribuição, que não é ligada a nenhuma
empresa comercial, tenta ater-se ao máximo às diretrizes do movimento Software Livre.
Dessa maneira, ela raramente inclui em sua distribuição aplicativos que não sejam distri-
buídos com licença de código aberto. Uma das reclamações de usuários iniciantes sobre o
Debian é que ela não é uma distribuição de fácil instalação.
2.3 MODO GRÁFICO X MODO TEXTO
No princípio, a única interface disponível em UNIX ao usuário disponível era o termi-
nal20 (muitas vezes apenas um terminal ”burro”, ou seja, sem processamento local). Então
foram desenvolvidas muitas aplicações modo texto, ou seja, projetadas para rodar em um
terminal com 25 linhas por 80 colunas. Todos os usuários tinham que conhecer uma infini-
dade de comandos diferentes para poder operar o sistema. Isso tornava o sistema pouco
amigável ao usuário leigo e fazia do computador um ”bicho de sete cabeças”.
Com o advento das GUIs (Graphical User Interface), o sistema se tornou mais amigá-
vel e os antigos usuários leigos puderam se aproximar do ”bicho” computador. Mas existe
o outro lado da moeda: as aplicações GUI tem um déficit de desepenho muito grande para
aplicações similares em modo texto. Os velhos micros tinham dificuldade de rodar o ser-
vidor X, principalmente aqueles com hardware mais barato. Muitas ferramentas não estão
ainda disponíveis para o modo gráfico, e muitos dos programas gráficos que trabalham com
configuração tornam os arquivos simplesmente ilegíveis após serem alterados.
Além disso, em algumas aplicações, como roteadores por exemplo, não é fundamental
a presença de um sistema de janelas. Nesse caso, o sistema de janelas é inclusive depre-
ciado, por questões de segurança, o que é visto em mais detalhes em (UCHÔA, 2003).
Também não é muito simples jogar fora muitos anos de aplicações desenvolvidas, que fun-
14http://www.linux-mandrake.com/15http://www.conectiva.com.br/16http://www.yellowdoglinux.com/17http://www.suse.com/18http://www.unitedlinux.com/19http://www.debian.org/20No ambiente Windows, o terminal é a janela de comando do DOS, também chamado de prompt do DOS
16 EDITORA - UFLA/FAEPE - Linux Intermediário
cionam bem e custaram alguns milhões, somente porque existia uma nova inteface com o
usuário.
No Linux, o sistema de janelas X é um serviço extra como qualquer outro (gerenci-
mento de impressão, serviços WWW ou de e-mail, etc.). Isso torna possível fazer uma
instalação que só tenha disponível o modo texto. Mas não é possível fazer uma instalação
sem o modo texto. É muito importante para os usuários avançados (como os administra-
dores de rede) conhecerem e serem capazes de utilizar as as ferramentas disponíveis no
modo texto com certa habilidade. Também é muito importante conhecer o ambiente gráfico,
mas esse é de aprendizado mais fácil, intuitivo e rápido. O modo gráfico é abordado com
mais detalhes no Capítulo 3.
2.4 INSTALANDO O LINUX
O processo de instalação de um sistema Linux varia de uma distribuição para outra.
A maioria das distribuições atuais de uso geral possuem interface gráfica de instalação,
tornando o processo relativamente simples. Mesmo alguns instaladores em modo texto
não oferecem dificuldade. De uma forma sintética, uma instalação Linux consiste em três
passos:
1. particionamento do disco e formatação dos sistemas de arquivo, o que é visto com
detalhes em (SICA; UCHÔA, 2003);
2. seleção, por parte do usuário, de quais aplicativos (pacotes) serão instalados inicial-
mente;
3. estabelecimento de configurações básicas, como senha de root e informações de
rede.
Em geral, as distribuições mais conhecidas disponibilizam bons manuais (impressos
ou eletrônicos) que orietam o processo de instalação. Dada a existência dessa documen-
tação, aliada às diferenças de instalação entre as distribuições, este texto não se aterá a
esse ponto. Consulte o manual de sua distribuição para maiores detalhes.
3GUI - GRAPHICAL USER INTERFACE
3.1 O SERVIDOR GRÁFICO
Contrariando alguns sistemas operacionais e seguindo a filosofia UNIX de oferecer
serviços numa arquitetura cliente/servidor, a interface gráfica do Linux é gerenciada por um
servidor próprio. Essa interface não integra o kernel do Linux, sendo executado em um
nível superior, no espaço de usuários. Dessa maneira, não é responsabilidade do kernel o
controle da interface gráfica, como na maioria dos sistemas operacionais do mercado.
Existem vários servidores gráficos para UNIX. O mais conhecido e utilizado é o X Win-
dow System1, também conhecido como X Window, ou simplesmente X. A implementação
do X utilizada no Linux é o XFree862. O XFree86 possui seu código-fonte liberado sob uma
licença própria, derivada da “Licença X11”3, criada pelo Massachusetts Institute of Techno-
logy X11/X Consortium, que não impõe qualquer restrição na modificação ou redistribuição
do código-fonte, desde que as notas de copyright e licença sejam mantidas inalteradas.
A função do X é criar uma interface cliente/servidor capaz de oferecer os serviços
gráficos. O servidor gerencia interface entre o hardware de entrada/saída primários (mouse,
teclado e monitores de vídeo), enquanto o ambiente de trabalho (Seção 3.2) faz o papel
de cliente, enviando as solicitações do usuário através de uma interface de programação
padronizada.
A interface de programação citada anteriormente é um conjunto de bibliotecas que
formam uma API – Application Programming Interface utilizada por qualquer programa que
utilize o ambiente gráfico. Essa API oferece recursos para “desenhar” e posicionar as ja-
nelas na tela, além do tratamento de entrada e saída. Através dessa API o cliente envia
as requisições do usuário para desenhar as janelas, adicionando funcionalidades como
bordas, barras de título, controle de redimensionamento, etc.
O XFree86 é independente de plataforma, rodando em vários sistemas, como os sis-
temas baseados em UNIX (Linux, variações do BSD, Sun Solaris para plataforma x86), Mac
1http://www.x.org/2http://www.xfree86.org/3http://www.xfree86.org/legal/licence.html
18 EDITORA - UFLA/FAEPE - Linux Intermediário
OS X (via Darwin), entre outras, algumas requerendo bibliotecas especiais de compatibili-
dade
O X também pode ser usado em rede, fazendo com que um único servidor possa aten-
der várias estações clientes usando o protocolo TCP/IP. A maioria das instalações configura
o servidor na mesma máquina onde o cliente (aplicações do usuário) serão executadas. En-
tretanto, é cada vez maior o número de terminais gráficos em algumas corporações, como
o caso de máquinas servidoras potentes e clientes gráficos com baixo poder de processa-
mento, tais como micros antigos.
A Figura 3.1 ilustra uma máquina executando um servidor gráfico (host A) com quatro
clientes conectados. Um deles é executado localmente e conecta-se usando UNIX Domain
Sockets. Os outros clientes são executados em máquinas diferentes, conectando-se ao
servidor através do protocolo TCP/IP. As duas formas de conexão são detalhadas em (LO-
OSEMORE, 2001). A conexão por TCP/IP também é abordada em (CORREIA; ABREU SILVA,
2002). Observe que o próprio servidor X é responsável por separar as solicitações do cli-
ente e lhe encaminhar apenas as janelas que tenha solicitado. Maiores detalhes sobre o X
e sua configuração podem ser encontrados em (SICA; UCHÔA, 2003).
Servidor X
localCliente
Conexão localvia socket
Host A
remotoCliente
Host B
remotoCliente
Host C
remotoCliente
Host D
Conexão TCP/IP
Conexão TCP/IP
Conexão TCP/IP
Figura 3.1: Servidor X com 4 Clientes Conectados
3.2 GERENCIADORES DE JANELA E DE AMBIENTE
Como dito na seção anterior, o servidor gráfico oferece apenas uma API para posicio-
nar e “desenhar” as janelas de aplicativos na tela do usuário, independente da localização
do servidor ou do aplicativo. Assim, algumas características da janela são definidas por um
GUI - Graphical User Interface 19
programa intermediário, que de acordo com os recursos que oferece pode ser chamado de
gerenciador de janelas ou gerenciador de ambiente. Esse aplicativo é responsável por
receber os cliques de mouse e pressionamento de teclas do usuário e convertê-los em cha-
madas de biblioteca do servidor gráfico. Apesar de ser possível executar um programa sem
um destes gerenciadores, tal programa deveria ser escrito de uma forma que detectasse e
tratasse a maioria das ações do usuário, desde o redimensionamento de uma janela até o
controle de partes de uma janela que seja total ou parcialmente encoberta por outra.
Um gerenciador de janelas, como o próprio nome indica, oferece mecanismos para
o controle das janelas exibidas, sem oferecer muitos recursos. Normalmente, ele define
o formato e posicionamento de barras de menu, barra de título, aparência e manipulação
da janela (movimentação na tela, maximização, minimização, redimensionamento, etc.). As
alterações desse tipo feitas pelo usuário são comunicadas ao servidor gráfico, que por sua
vez vai exibi-la, segundo as características visuais oferecidas pelo gerenciador.
Existem vários gerenciadores de janela disponíveis, como o WindowMaker (http://
www.windowmaker.org/), o Blackbox (http://blackboxwm.sourceforge.net/), o
FVWM (http://www.fvwm.org/) e o TWM (http://www.xfree86.org/), com recur-
sos mais ou menos semelhantes. Entre esses recursos, é comum o uso de áreas de traba-
lho (desktops) múltiplas e independentes, organizando o
Por outro lado, os gerenciadores de ambiente têm tornado-se muito comuns nos
últimos tempos, por oferecerem tudo o que um gerenciador de janela oferece, acrescido
de funcionalidades ou aplicativos extras, que facilitam a vida do usuário. Por exemplo,
XFce (http://www.xfce.org/), KDE (http://www.kde.org/) e GNOME (http://
www.gnome.org/) oferecem aplicativos para as mais diversas finalidades, como editores
de texto integrados, formatadores de disco, recursos multimídia, leitores de e-mail e até
mesmo pacotes de escritório completos.
3.3 GERENCIADORES DE JANELA MAIS COMUNS
3.3.1 KDE
O KDE (K Desktop Environment) é um gerenciador de ambiente bastante utilizado por
usuários novatos em Linux, por sua interface agradável e recursos oferecidos para usuários
que não estão habituados a utilizar com freqüência o modo texto. Segundo rumores na
internet, o “K” do nome não possui significado algum, os desenvolvedores queriam que o
ambiente não ficasse limitado ao uso em sistemas Linux e escolheram a letra anterior ao
“L” no alfabeto.
Trata-se de um ambiente transparente em rede, ou seja, não importa se a aplicação
está sendo executada por um cliente na própria máquina ou em qualquer máquina da rede
20 EDITORA - UFLA/FAEPE - Linux Intermediário
(até mesmo na internet). O ambiente é acompanhado por uma ampla gama de aplicati-
vos, desde editores de texto simples (KWrite), multimídia, etc., até uma suíte de escritórios
completa (KOffice), passando por várias ferramentas de desenvolvimento (KDevelop). A
Figura 3.2 mostra uma sessão KDE com alguns aplicativos do ambiente. Para maiores in-
formações sobre o mesmo, consulte o site oficial do projeto em http://www.kde.org/.
Figura 3.2: Sessão KDE com Aplicativos
3.3.2 GNOME
O GNOME (GNU Network Object Model Environment) é um projeto GNU que tem por
objetivo fazer um ambiente de trabalho gráfico, livre (free software) e amigável ao usuário.
Além disso, o GNOME é platafoma de desenvolvimento para outras aplicações, que usam
as suas bibliotecas como base. O GNOME permite ao usuário definir vários tipos de borda
de janela, o número de ambientes viruais e configurar os aplicativos que são usados como
padrão para certos tipos de arquivo.
O navegador de disco é integrado com outras aplicações GNOME como Gedit, GGv
(GNOME GhostView), dentre outras. Esse recurso permite que vários tipos de arquivo
sejam abertos na mesma janela do navegador de disco, sem a necessidade de abrir uma
nova janela. Outro recurso interessante é o automount. O automount detecta qundo um
CD-ROM é inserido na unidade, montando-o automaticamente. Também é possível montar
GUI - Graphical User Interface 21
outros sistemas de arquivos apenas com um clique do mouse. Os recursos, aliados com a
interface amigável, fazem do GNOME o gerenciador de janelas preferido por boa parte dos
usuários. Na Figura 3.3 temos uma imagem do GNOME com o navegador de disco.
Figura 3.3: Gerenciador de Janelas GNOME
3.3.3 WindowMaker
Criado pelo brasileiro Alfredo Kojima, o WindowMaker é um gerenciador de janelas
rápido, rico em recursos e bastante fácil de configurar e usar. Inclui opções de compatibi-
lidade que permitem funcionar com outros ambientes populares, como GNOME e KDE. A
Figura 3.4 mostra um ambiente de trabalho do WindowMaker.
Duas das mais importantes e populares características do Window Maker são mostra-
das na Figura 3.5: o Dock e o Clip. O Dock serve como um lançador e detentor de aplica-
ções, permitindo que ícones de aplicações (appicons) sejam anexados a ele e mantenham-
se visíveis em todos os ambientes. Pode ser posicionado verticalmente à esquerda ou à
direita da tela. O Clip serve como um extensão do Dock, sendo muito mais flexível. Com
ele é possível alternar entre ambientes, anexar appicons em um determinado ambiente,
deixando-os visíveis apenas nesse ambiente e atrair appicons e mini-janelas, formando um
grupo, além de outros usos adicionais
22 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.4: Gerenciador de Janelas WindowMaker
Figura 3.5: Dock e Clip
A diferença entre um appicon e uma mini-janela é que mini-janelas representam cada
janela que é mostrada na tela, enquanto um appicon representa a aplicação em si. Cada
mini-janela é identificada por uma barra de título com o mesmo título da janela. Window
Maker pode ser configurado para que janelas similares possam ser consolidadas em uma
única mini-janela, ou mesmo desabilitá-las. Pode-se associar uma ação a cada appicon
GUI - Graphical User Interface 23
tanto no Dock quanto no Clip, sendo a ação realizada sobre qualquer objeto que for arras-
tado sobre o ícone. Os três pontos no canto inferior esquerdo de um appicon indicam que
ele pode ser executado, desaparecendo assim que o programa estiver em execução.
O Window Maker é altamente personalizável, permitindo a aplicação de estilos em
barras de título, appicons e menus. Inclui suporte para temas, que permitem que o usuário
modifique a aparência de sua área de trabalho, como a imagem de fundo, texturas da barra
de título e menu, e ícones para o Dock e o Clip. Pemite ainda qua o usuário crie seu próprio
tema e o salve em um arquivo, que pode ser compartilhado com outros usuários. Há uma
variedade de temas para o Window Maker em http://wm.themes.org/.
Outra característica destacável do Window Maker é seu sistema poderoso e flexível de
menus. Os itens podem ser editados e associados a teclas de atalho, e os menus podem
ser fixados à área de trabalho, ficando visíveis até serem explicitamente fechados. Isso é
importante em casos como o menu de ambientes e o menu de janelas abertas, permitindo
acesso direto a cada aplicação.
A ferramenta de configuração do sistema é o WPrefs, mostrado na Figura 3.6. Com
ela, é possível modificar várias características do sistema sem ter que editar diretamente
arquivos de configuração. As alterações se tornam válidas no momento em que são salvas,
não sendo necessário reiniciar o gerenciador de janelas.
Figura 3.6: Ferramenta de Preferências do WindowMaker
24 EDITORA - UFLA/FAEPE - Linux Intermediário
3.3.4 TWM
O TWM (Tab Window Manager, também conhecido como Tom’s Window Manager,
em homenagem a seu principal desenvolvedor, Tom LaStrange provê barras de títulos, ge-
renciamento de ícones e algumas funcionalidades. Trata-se de um gerenciador de janelas
extremamente simples, com escassos recursos, se comparado a outros gerenciadores, mas
é distribuído junto com o XFree86 e, por razões históricas, ainda é relembrado por alguns
usuários. Muitas de suas idéias foram usadas por outros gerenciadores de janelas, como o
FVWM (próxima seção). A Figura 3.7 ilustra uma sessão do TMW sendo executado. Para
maiores informações, consulte o site http://www.plig.org/xwinman/vtwm.html.
Figura 3.7: TWM – Um dos Primeiros Gerenciadores de Janelas
3.3.5 FVWM
O FVWM foi desenvolvido por Robert Nation e foi um dos principais gerenciadores
de janelas do Linux. Foi baseado no TWM, desenvolvido para minimizar o consumo de
memória, provê um único desktop virtual e janelas com decorações tridimensionais. É
um gerenciador utilizado por alguns usuários que desejam o menor impacto de transição
de outros sistemas operacionais e não possui recursos computacionais para executar um
ambiente do porte do GNOME ou KDE. A Figura 3.8 traz uma imagem extraída do site
GUI - Graphical User Interface 25
oficial do projeto (http://www.fvwm.org/), com um tema que imita o comportamento e
visual do MS Windows R�
95.
Figura 3.8: Gerenciador de Janelas FVWM
(extraído de http://www.fvwm.org/)
3.3.6 XFce
Segundo seus desenvolvedores, o XFce foi desenvolvido para ser um gerenciador de
ambientes “livre de colesterol” para Linux. Com isso, o XFce busca oferecer um ambiente
rápido, exigindo poucos recursos de processamento. Assim, ele vai contra a tendência dos
gerenciadores de ambientes que tornam-se vorazes consumidores de recursos à medida
em que oferecem mais características gráficas e aplicativos.
O XFce possui uma interface bastante prática e vários aplicativos funcionais, o que o
torna extremamente atrativo em máquinas com menos recursos de processamento. Mas
mesmo para máquinas mais robustas, ele ainda pode ser uma excelente escolha, pois
liberará os recursos para outras aplicações, mas oferecendo excelente funcionalidade. Não
é à toa que o XFce é o gerenciador preferido e mais usado pelos técnicos e tutores do ARL.
Ele se integra perfeitamente com KDE e GNOME, localizando os programas para es-
ses ambientes e adicionando-os a um menu especial. Quanto às aplicações que o acom-
26 EDITORA - UFLA/FAEPE - Linux Intermediário
panham, não há tanta variedade como nos gerenciadores maiores, mas oferece recursos
razoáveis para um usuário intermediário em Linux. O que o difere de outros ambientes é
sua barra de aplicações, permitindo ao usuário adicionar programas conforme sua conve-
niência, e seu gerenciamento de múltiplas áreas de trabalho, selecionadas com um clique
no botão que a identifica. A Figura 3.9 mostra o ambiente, com destaque para o menu de
aplicações e as configurações do ambiente em primeiro plano, além do navegador de disco
ao fundo.
Figura 3.9: Ambiente XFce
3.4 APLICATIVOS GRÁFICOS EM LINUX
O objetivo desta seção é apresentar alguns dos aplicativos gráficos de uso mais co-
mum em Linux. A lista não está completa e privilegia os aplicativos de maior uso e conheci-
mento pela equipe do ARL. Isso não significa que não existam outros aplicativos na mesma
área e muito menos que esses sejam os melhores. Além disso, dada a extensão desta
apostila, apenas as áreas de maior uso são cobertas, deixando-se para o leitor a tarefa de
busca de aplicações para situações específicas.
GUI - Graphical User Interface 27
3.4.1 Editores de Texto
Gedit
O Gedit é um editor de textos distribuído com o GNOME. Apesar de sua simplici-
dade, ele tem vários recursos como visualizar impresão, suporte a texto internacionalizado
(UTF-8) e um sistema de busca e substituição de palavras. A entrada de dados via pipes
é suportada, e existe suporte a plugins. Em suma, o Gedit é um editor simples, porém
poderoso e altamente configurável. Na Figura 3.10, é apresentado uma tela do Gedit em
processo de edição.
Figura 3.10: Gedit – Editor de Texto do GNOME
Emacs e XEmacs
Dentre os diversos editores de texto disponíveis para Linux, raros se destacam como
os editores GNU Emacs e XEmacs. O primeiro, é um conceituado editor de propósito geral
da Free Software Foundation4, distribuído para várias plataformas, entre elas, o próprio
Linux. O segundo é uma versão gráfica baseada no tradicional GNU Emacs, mas há algum
tempo os projetos divergiram e existe uma certa discussão entre os desenvolvedores.
Os dois são ambientes completos edição, compilação e depuração de programas,
altamente configuráveis. Além disso, oferecem recursos para gerenciamento de e-mail e
4http://www.fsf.org/
28 EDITORA - UFLA/FAEPE - Linux Intermediário
news. Entre seus destaques, estão o syntax highlighting para diversas linguagens e a
capacidade de expansão através de pacotes desenvolvidos em LISP. A Figura 3.11 traz
uma janela de uma em sua versão mais recente do XEmacs, editando o arquivo LATEX deste
texto.
Figura 3.11: Editor de texto XEmacs
3.4.2 Software para Internet
Mozilla
Mozilla é um conjunto de aplicações incluindo um navegador de Internet, um cliente
de correio eletrônico, um compositor de páginas, um cliente de IRC (chat) e um conjunto de
ferramentas de desenvolvimento Web. De código aberto, é rápido, razoavelmente seguro,
GUI - Graphical User Interface 29
cheio de recursos e altamente configurável. Mozilla suporta todos os recursos necessários
para uma navegação, obedecendo os padrões estabelecidos pelo W3C5, bem como a maio-
ria dos novos padrões emergentes. No aspecto de suporte aos padrões W3C, inclusive, é
bastante superior a seu principal concorrente6.
O conjunto de aplicações do Mozilla têm vários recursos para tornar fácil e rápida a
navegação e o acesso ao email, permitindo a abertura de novas janelas em forma de abas
na janela principal, bloqueio de janelas pop-up, várias contas de email, controle de spam,
gerenciamento de privacidade e um controle sofisticado sobre o histórico de navegação.
Possui também suporte a temas e extensões, e um sistema de ajuda online bastante com-
pleto. O navegador possui ainda recursos para salvar senha e um gerenciador de formulá-
rios, chamado wallet, que permite guardar dados de um formulário preenchido e utilizá-los
para preencher automaticamente outros formulários que solicitem os mesmos dados. Além
disso, inclui suporte para plugins de Java, Flash, Acrobat e Real Player, dentre outros.
O Mozilla também fornece uma plataforma sofisticada para o desenvolvimento de apli-
cações para internet e intranet, incluindo ferramentas avançadas, como Inspetor DOM, de-
purador de JavaScript e suporte a XML, DHML, XUL, SOAP, XSLT e outros. Assim, ele é
uma excelente opção para o desenvolvimento de aplicações para a Web. A Figura 3.12
mostra o Mozilla em execução.
Galeon
O Galeon é um navegador construído com as bibliotecas do GNOME, e usa o motor
de renderização do Mozilla (Gecko), possuindo inteface agradável e leve. Por usar o motor
de renderização do Mozilla, o Galeon suporta os mesmos recursos que estão instalados no
Mozilla. Por exemplo, para usar Java no Galeon, basta instalá-lo no Mozilla. O mesmo vale
para qualquer plugin suportado pelo Mozilla.
Um dos grandes atributos do Galeon é a navegação por abas, recurso que foi incorpo-
rado antes que no Mozilla, que permite que sejam abertas várias páginas em uma mesma
janela. Outros grandes atributos são o bloqueio de janelas pop-up e de javascript. Essa
facilidade, aliada com a performance, faz do Galeon o navegador preferido dos membros
da equipe técnica do ARL e de alguns tutores também. Uma restrições do Galeon é a de
ser apenas um browser, por isso, ferramentas como o Mozilla Mail e o Chatzilla não estão
disponíveis. A Figura 3.13 apresenta uma imagem do Galeon com vários sites abertos em
abas distintas.
5http://www.w3c.org/6Isso pode ser verificado visitando-se a página do curso, http://www.ginux.comp.ufla.br/arl/
usando o Mozilla e o Internet Explorer. Esse último, por não suportar corretamente o CSS, não mostra a
página da forma mais adequada. Note que isso ocorre apesar da Microsoft fazer parte do grupo que definiuesse padrão.
30 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.12: Tela inicial do Mozilla
Figura 3.13: Navegador Galeon
GUI - Graphical User Interface 31
Konqueror
O Konqueror é uma aplicação para o KDE altamente configurável, que combina fun-
cionalidades de um gerenciador de arquivos com um navegador de internet. Ele permite a
configuração de aplicativos para visualizar determinados formatos de arquivo e possui um
visualizador interno para arquivos texto. Possui ainda um emulador de terminal embutido,
permitindo a execução de comandos dentro do próprio programa.
Como navegador, o Konqueror foi projetado para suportar todos os padrões da internet
especificados pelo W3C e OASIS7, possuindo ainda suporte extra para outros recursos.
Possui suporte para funções como bookmarks, preenchimento automático de formulários,
TSL/SSL para comunicação segura, e suporta plugins de Flash, Real Audio e Vídeo, dentre
outros, além de suporte a Java e JavaScript.
Possui ferramentas para auxiliar a navegação, como lente de aumento, visualização
em tela cheia e um agente de usuário, que permite definir as informações que o browser
envia quando vai acessar uma página.
Figura 3.14: Navegador Konqueror
7http://oasis-open.org/
32 EDITORA - UFLA/FAEPE - Linux Intermediário
Evolution
O Evolution não é somente um cliente gráfico para servidores de e-mail POP e IMAP.
O Evolution é um PIM (Personal Information Manager ou Gerenciador de Informações Pes-
soais). O cliente de e-mail suporta múltiplos servidores, tanto POP quanto IMAP. A agenda
de compromissos é flexível, suporta lembretes de vários tipos e é compatível com o formato
iCalendar, usado pelo Microsoft Outlook e pelo Lotus Notes. Além disso o Evolution tem
uma lista de tarefas pendentes (to-do list), suporte à conexões com Palm, suporte à base de
dados LDAP e criptografia PGP/GPG e SSL. Emfim, o Evolution não deixa nada a desejar
em relação aos seus concorrentes de código proprietário. Na Figura 3.15, temos o cliente
de e-mail do Evolution.
Figura 3.15: Cliente de E-mail do Evolution
GUI - Graphical User Interface 33
Balsa
Balsa é um cliente gráfico de e-mail, integrado ao ambiente GNOME e em franco de-
senvolvimento. Atualmente, apresenta como características o suporte a protocolos IMAP
e POP3, gerenciamento de correio local (checagem automática de recebimento, impres-
são, visualização de anexos), entre outros. Sua principal vantagem é a integração ao seu
ambiente nativo, que o torna atraente para os usuários já habituados aos aplicativos que
acompanham o GNOME. A Figura 3.16 ilustra a janela principal do aplicativo.
Figura 3.16: Leitor de E-mail Balsa
Kmail
Seguindo a linha dos aplicativos do KDE, o Kmail é um cliente de email bastante
amigável, com uma barra de ferramentas com as funções mais comuns, sendo uma boa
escolha para usuários iniciantes no sistema. Ele permite visualização de mensagens em
formato texto ou HTML, indicando co cores o status de cada mensagem. O Kmail também
permite ao usuário definir modos de visualização de cabeçalhos e anexos, buscar mensa-
gens de um determinado endereço, e também definir filtros de mensagens, entre outros.
34 EDITORA - UFLA/FAEPE - Linux Intermediário
Um recurso interessante do Kmail é sua capacidade de exibir mensagens em thread,
que agrupa mensagens e respostas em corrente, bastante útil em listas de discussão. O
Kmail permite acesso a múltiplas contas de email, sendo possível definir o nível de se-
gurança desejado para cada uma delas. A Figura 3.17 mostra uma sessão do Kmail em
execução.
Figura 3.17: Cliente de E-mail Kmail
gFTP
O gFTP é um programa gráfico para transferência de arquivos pela rede. Ele su-
porta os protocolos HTTP, FTP e SSH, pode fazer várias transferências simultâneamente e
transfere arquivos entre duas máquinas remotas. Também é possível continuar uma trans-
ferência interrompida, usar o recurso de favoritos, para acesso rápido às conexões mais
usadas, e, finalmente, transferir arquivos de um host até outro apenas arrastando o ar-
quivo de um local para o outro (drag-n-drop). Na Figura 3.18, há uma imagem do gFTP em
funcionamento.
GUI - Graphical User Interface 35
Figura 3.18: gFTP
3.4.3 Aplicativos e Pacotes para Escritório
O uso de aplicativos de escritório – como editores de texto, planilhas eletrônicas e
apresentações – representa uma boa fatia das atividades desempenhadas com os micro-
computadores. Para Linux, existem várias opções desses aplicativos isolados, mas sem
dúvidas, as suítes integradas são a opção preferida pela maioria dos usuários. Para Linux,
destacam-se o KOffice – integrado ao ambiente KDE – e o OpenOffice.org, ambos open
source. Mas vários outros pacotes e aplicativos distribuídos isoladamente vão auxiliar o
uso do Linux nesse tipo de tarefa.
OpenOffice.org
Entre os pacotes de escritório merece destaque o OpenOffice.org, sucessor gratuito
do StarOffice, que atualmente é comercializado pela Sun Microsystems. Trata-se de uma
suíte completa e em excelente estágio de desenvolvimento, compatível com as principais
suítes do mercado. A Figura 3.19 mostra uma das janelas do OpenOffice Writer, proces-
sador de textos da suíte. Ele é composto por processador de textos (OpenOffice Writer),
36 EDITORA - UFLA/FAEPE - Linux Intermediário
planilha eletrônica (OpenOffice Calc), gerenciador de apresentações (OpenOffice Impress)
e ferramenta para desenho vetorial (OpenOffice Draw), além de ferramentas integradas
para criação de fórmulas, gráficos, etc. É o pacote de escritório adotado pelo GNOME.
Figura 3.19: OpenOffice.org: Janela Principal do Writer
KOffice
KOffice é o pacote de escritório desenvolvido para o ambiente KDE. Consiste em um
processador de textos (KWord), uma planilha (KSpread), um programa de apresentações
(KPresenter), um sistema de fluxogramas (Kivio), uma ferramenta de desenho vetorial (Kar-
bon14), um programa de manipulação de imagens (Krita), além de outras ferramentas. A
Figura 3.20 mostra o processador de textos Kword. Observe que apesar de ser integrado
ao ambiente KDE, isso não implica que o usuário precise estar usando esse gerenciador
de ambiente para usar o KOffice.
GUI - Graphical User Interface 37
Figura 3.20: KWord, Processador de Textos do KOffice
SIAG
SIAG é um pacote de escritório gratuito e fortemente integrado. Consiste em uma pla-
nilha, um processador de textos, um programa de animações, um editor de textos, um ge-
renciador de arquivos e uma ferramenta de visualização. A Figura 3.21 mostra a execução
da planilha do SIAG. Seus aplicativos não possuem todos os recursos de seus principais
concorrentes, mas como exige poucos recursos, é boa opção para máquinas mais antigas.
AbiWord
Com uma interface bastante amigável, o AbiWord é um processador de textos estável,
cheio de recursos e multiplataforma. Oferece praticamente todos os recursos que se pode
esperar de um processador de textos moderno, como a habilidade de importar/exportar
documentos, incorporação de imagens, suporte a verificação ortográfica e possibilidades
ilimitadas de desfazer/refazer ações. O projeto AbiWord começou com o desejo de se criar
um processador de texto estável, cheio de recursos e não limitado a uma única plataforma
ou a formatos proprietários. Hoje em dia AbiWord é compilado como uma aplicação nativa
em várias plataformas e consegue tratar uma grande quantidade de formatos de arquivo.
38 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.21: Planilha do pacote de escritório SIAG
(extraído de http://siag.nu/)
O AbiWord usa XML em seu formato de arquivo, tendo sido um dos primeiros proces-
sadores a fazer esse tipo de adoção. É um aplicativo que exige poucos recursos compu-
tacionais. Sua única restrição, pelo menos até a versão disponibilizada quando da escrita
desta apostila, é o fato de não suportar tabelas. Em não havendo essa necessidade, é um
excelente aplicativo, ideal para edição de pequenos textos (como cartas ou memorandos).
A Figura 3.22 mostra uma tela de edição do AbiWord.
Gnumeric
Gnumeric é uma planilha de código aberto desenvolvida para o ambiente GNOME.
É capaz de importar dados de várias outras ferramentas, como o MS-Excel, 1-2-3, Applix e
XBase Quattro Pro, dentre outras. A Figura 3.23 mostra a execução do Gnumeric. Essa
planilha exige poucos recursos computacionais. Por outro lado, oferece mais que os recur-
sos básicos exigidos desse tipo de aplicativo, podendo ser uma escolha melhor, inclusive,
que as planilhas disponibilizadas nos pacotes de escritório.
GUI - Graphical User Interface 39
Figura 3.22: Processador de Textos AbiWord
Figura 3.23: Planilha Gnumeric
40 EDITORA - UFLA/FAEPE - Linux Intermediário
3.4.4 IDEs - Integrated Development Enviroment
Ambientes integrados de desenvolvimento (IDE) são aplicativos voltados para a edição
e controle de códigos de programação. A maior parte busca integrar a edição do código
com destaque de palavras-chave (syntax highlighting), alguns oferecendo recursos como
depurador (debugger) e compilação integrada, com salto para linhas com erro, etc. Entre
essas IDEs, podem ser acrescidos o Emacs e o Xemacs, já apresentados na Seção 3.4.1.
Esses dois editores são excelentes IDEs para uma grande variedade de linguagens.
Anjuta
Dentre os IDEs disponíveis, merece destaque o Anjuta. Ele oferece um gerencia-
mento de projetos para as mais diversas bibliotecas, dentre elas: wxWindows, ncurses,
GTK, GTKmm. Para tais projetos, ele cria automaticamente os scripts necessários para
configuração e compilação, facilitando o trabalho de desenvolvimento de aplicações. Possui
também um depurador integrado à interface e fácil de usar, além da compilação de proje-
tos, permitindo ao usuário saltar de uma mensagem de erro para a linha correspondente. A
Figura 3.24 mostra a janela principal do aplicativo, editando código em C++.
Figura 3.24: Ambiente de Desenvolvimento Anjuta
GUI - Graphical User Interface 41
3.4.5 Glimmer
Glimmer é um ambiente integrado de desenvolvimento com suporte a uma grande
quantidade de linguagens. Entre elas podem ser citadas: Bash/Sh, C/C++, HTML, Java,
LATEX, GNU Make, Perl, PHP e SQL. A Figura 3.25 mostra o Glimmer sendo usado para
edição de vários arquivos, entre eles o código-fonte LATEXdeste capítulo. É um aplicativo
com poucas dependências e que exige poucos recursos computacionais.
Figura 3.25: Ambiente de Desenvolvimento Glimmer
3.4.6 Depuradores
Há um provérbio em computação que diz: “mostre-me uma pessoa que nunca produ-
ziu um bug e eu te mostro uma pessoa que nunca programou”. Essa assertiva nos chama
a atenção para o fato que é impossível evitar erros de programação durante o desenvolvi-
mento de um programa. Quanto maior o projeto, maior essa probabilidade.
Assim, o uso de bons debuggers (debugadores ou depuradores) é essencial para a
programação. Dado que é improvável que qualquer programa mais elaborado não contenha
bugs em seu desenvolvimento, o uso desse tipo de ferramenta torna-se imprescindível.
O sistema operacional UNIX e a linguagem C nasceram praticamente juntos. O pri-
meiro compilador C foi criado em um UNIX, que logo foi portado para C. Assim, não é à toa
que o UNIX é um SO tão adequado ao desenvolvimento de programas. Qualquer versão de
UNIX, mesmo as comerciais, disponibilizam ao usuário ao menos um compilador C. Com
42 EDITORA - UFLA/FAEPE - Linux Intermediário
o Linux e o FreeBSD, isso é extremamente verdadeiro. Assim, como o ambiente UNIX é
extremamente propício à programação, é possível encontrar vários depuradores para uso.
O depurador mais utilizado em ambiente Linux é o GDB, o GNU Debugger. Entretanto
esse programa funciona em modo texto apenas, como ilustra a Figura 3.26. Assim, seu
uso não é simples para o usuário inicial. Entretanto, o leitor logo descobrirá que vários apli-
cativos gráficos em Linux são, em sua essência, apenas interfaces para outros aplicativos.
Esses programas tentam propiciar, então, um canal mais amigável ao usuário.
Figura 3.26: GDB – GNU Debugger
O desenvolvimento de interfaces gráficas para aplicativos em modo texto é extrema-
mente presente no caso dos depuradores. A grande maioria dos depuradores disponíveis
em Linux são, em essência, apenas interfaces gráficas para o GDB. Entre essas interfaces,
a mais antiga é o xxgdb. Mais recentemente foram desenvolvidos várias outras interfaces,
como o GVD (GNU Visual Debugger), mostrado na Figura 3.27, o KDbg (KDE Debugger),
mostrado na Figura 3.28 e o DDD (Data Display Debugger), mostrado na Figura 3.29.
GUI - Graphical User Interface 43
Figura 3.27: GVD – GNU Visual Debugger
Figura 3.28: KDbg – KDE Debugger
44 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.29: DDD – Data Display Debugger
3.5 EDITORES HTML
Quanta
Quanta é uma ferramenta de desenvolvimento para internet para o ambiente KDE.
Possui uma interface amigável para usuários leigos, mas também inclui ferramentas vol-
tadas para desenvolvedores profissionais. O objetivo principal da ferramenta é aprimorar
a capacidade de se criar páginas melhores e mais rapidamente, fazendo uso de um nú-
mero menor de ferramentas. Quanta pode ser utilizado para criar páginas isoladas ou
trabalhar com projetos (conjunto de páginas relacionadas, destinadas a um mesmo fim). A
Figura 3.30 mostra o Quanta aberto com um arquivo HTML carregado.
Para auxiliar a geração de código, Quanta fornece caixas de diálogo que permitem a
inserção de código no arquivo como resposta às escolhas feitas pelo usuário. Dessa forma,
pode-se criar uma página completa sem escrever diretamente nada no código. Possui ainda
ferramentas de verificação de sintaxe e um sistema robusto de ajuda, com uma documen-
tação embutida de JavaScript, PHP, HTML e CSS. Assim como as demais aplicações do
GUI - Graphical User Interface 45
Figura 3.30: Editor de HTML Quanta
KDE, é altamente configurável, permitindo, dentre outros, definir os botões que aparecem
na barra de ferramentas e as ações de cada um deles.
Bluefish
O Bluefish é um editor para desenvolvimento construido com as bibliotecas GTK2
(Gimp ToolKit 2). Ele tem syntax highlighting para várias linguagens de programação, entre
elas HTML, Java, C, PHP, XML, Pascal e Python, apesar de ser um editor voltado para
o desenvolvimento Web. Ele tem algumas caixas de diálogo para auxiliar na edição de
código e ferramentas para criação de thumbnails, além de seguir os principios de interface
adotados pelo KDE e pelo GNOME.
O Bluefish pode abrir vários documentos simultâneamente, e tem uma janela de na-
vegação que permite fácil acesso a arquivos em diferentes pastas. Todos esses atributos
fazem do Bluefish uma ferramenta que atende às necessidades de um grande espectro
46 EDITORA - UFLA/FAEPE - Linux Intermediário
de usuários, desde o expert até o iniciante. Na Figura 3.31 é mostrada uma imagem do
Bluefish.
Figura 3.31: Editor de HTML Bluefish
3.5.1 SCREEM
Voltado para agilizar o desenvolvimento de sites, o SCREEM (Site CReating and
Editing Enviroment) é um ambiente de desenvolvimento Web esrito para o ambiente GNOME.
Assim como outros editores de HTML para o Linux, SCREEM permite a edição diretamente
no código HTML, em vez de utilizar recursos gráficos que geralmente produzem um código
“sujo”. A Figura 3.32 mostra a execução do SCREEM.
Um dos diferenciais do SCREEM é o seu editor de folhas de estilo, ilustrado na Fi-
gura 3.33. Esse editor, internacionalizado para vários idiomas, facilita o uso de CSS (Cas-
cating Style Sheet - as folhas de estilo). Note que, cada vez mais, o uso de CSS é essencial
a um desenvolvimento adequado de sites. Mais detalhes sobre CSS podem ser verificados
junto ao World Wide Web Consortium, o W3C: http://www.w3c.org/.
GUI - Graphical User Interface 47
Figura 3.32: Editor de HTML SCREEM
Figura 3.33: Editor de Folhas de Estilos do SCREEM
48 EDITORA - UFLA/FAEPE - Linux Intermediário
3.6 EDITORES GRÁFICOS
3.6.1 Editores Bitmap
Para edição gráfica de arquivos em formato matricial (arquivos bitmaps), como JPG,
GIF, BMP ou PNG, o melhor aplicativo é, na opinião da grande maioria dos usuários, o
GIMP (GNU Image Manipulation Program). Ele é um é um programa pra editar imagens em
formato matricial muito poderoso, capaz de trabalhar com vários formatos de imagem. Não
é à toa que ele é comparado freqüentemente ao Adobe Photoshop (e tido como melhor,
pelos seus usuários conhecedores de seus recursos).
O GIMP suporta a criação de scripts para automatização de tarefas e aceita plugins
diversos. Ele suuporta múltiplas camadas e canais em uma mesma imagem, tem funções
de refazer e desfazer, ferramentas para gradientes, escala, rotação e muitas outras trans-
formações, além de várias ferramentas de seleção. Na Figura 3.34, é apresentada uma tela
do GIMP em execução. Note que suas ferramentas estão espalhadas por várias janelas
diferentes, o que facilita a organização do ambiente de trabalho. Ele é um editor de que não
deixa nada a desejar em relação aos seus concorrentes de código proprietário, e é um dos
aplicativos com licença livre mais famosos.
Figura 3.34: GIMP
GUI - Graphical User Interface 49
Além do GIMP, disponível para vários ambientes operacionais, outros aplicativos tam-
bém podem ser usados para edição de arquivos em formato matricial. O KDE, por exemplo,
disponibiliza o KPaint, um aplicativo para edição simples de imagens. Também é possível
utilizar uma versão gratuita do Corel PhotoPaint, com os mesmos recursos e interface de
sua versão Windows. A equipe do ARL, entretanto, recomenda largamente o GIMP, mesmo
para uso em Windows.
Também não pode ser esquecido o ImageMagick, uma coleção de ferramentas de
visualização e manipulação de imagens. Ele facilita a conversão entre formatos de imagens,
podendo alterar o tamanho, rotacionar e mesmo adicionar efeitos especiais a uma imagem,
como mostra a Figura 3.35. Um adicional desse pacote é que ele possui vários comandos
em modo texto. Assim, a partir de um terminal, o usuário pode, por exemplo, converter e
redimensionar imagens. Consulte a documentação do pacote para maiores detalhes.
Figura 3.35: ImageMagick
3.6.2 Editores Vetoriais
Para a edição de arquivos vetoriais de desenho, podem ser usados vários aplicativos
em Linux. Um dos mais antigos é o Xfig, mostrado na Figura 3.36, um editor de dese-
nhos muito apreciado por usuários Linux do LATEX. Entretanto sua filosofia de trabalho é
um pouco diferente dos aplicativos costumeiros, o que pode torná-lo inconveniente para
usuários iniciantes. Entretanto, compreendida sua maneira de trabalhar, é um ótimo editor
vetorial.
50 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.36: Xfig
Outros dois bons editores, mais próximos do usuário iniciante, são o Sketch, mostrado
na Figura 3.37, e o Sodipodi, mostrado na Figura 3.38. O usuário pode perceber facilmente
que o Sodipodi tenta imitar a interface do GIMP. Uma das peculiaridades do Sodipodi é que
ele adota como padrão de formato de arquivo o SGV, que foi criado pela W3C, organização
responsável por criar os padrões para internet. Assim, o SVG deve, em breve, ser suportado
pela maioria dos navegadores como um padrão para desenhos vetoriais. Observe que o
Sketch também salva e abre arquivos SVG.
Além desses dois aplicativos, que fazem parte do projeto GNOME, não podem ser
esquecidos o Kontour, editor vetorial do KOffice, e o OpenOffice Draw. O OpenOffice Draw,
que faz parte do pacote de escritório OpenOffice, é rico em recursos para edição vetorial,
como mostra a Figura 3.39. Como pode ser percebido nessa figura, ele pode substituir com
facilidade editores vetoriais comerciais.
Ainda entre os editores vetoriais, merece destaque o Dia, um programa para desenho
de diagramas. O Dia tem conjutos de símbolos para construir diagramas de circuitos elé-
tricos, fluxogramas e até diagramas de redes de computadores. O Dia usa o formato XML
para armazenar os diagramas e também exporta para os formatos EPS (postscript) e SGV.
Na Figura 3.40, é apresentada imagem do Dia em execução.
GUI - Graphical User Interface 51
Figura 3.37: Sketch
Figura 3.38: Sodipodi
52 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.39: OpenOffice Draw
Figura 3.40: Dia – Editor de Diagramas
GUI - Graphical User Interface 53
3.7 VISUALIZADORES
Uma necessidade usual do usuário é a visualização de arquivos nos mais diversos
formatos, especialmente arquivos de imagens. Além das imagens, vários documentos são
disponibilizados na internet em formato PostScript ou PDF (Portable Document File), for-
matos extremamentes comuns no ambiente UNIX.
A título de informação PostScript é, a bem da verdade, uma linguação de descrição
de página, usada em algumas impressoras. Um arquivo PostScript, portanto, contém in-
formações necessárias ao desenho de páginas a serem impressas. O formato PDF é uma
extensão da linguagem PostScript, criada com o objetivo explícito de funcionar como um
mecanismo de disponibilização eletrônica de documentos.
3.7.1 Visualizadores de Imagens
Para visualizar imagens, o usuário pode se valer de várias ferramentas. Ele pode usar
o GIMP para isso, mas isso pode ser um desperdício de tempo e recursos computacionais
se o objetivo é apenas a visualização. Assim, nesse caso a escolha irá recair sobre apli-
cativos construídos com essa finalidade. Caso o usuário esteja usando versões recentes
do KDE ou do GNOME, os gerenciadores de arquivos desses ambientes disponibilizam ao
usuário mecanismos nesse sentido.
Mesmo usando esses ambientes, o usuário pode se interessar em usar outros apli-
cativos específicos. Existe uma grande quantidade de programas com esse objetivo, o
que pode ser verificado facilmente em qualquer site de aplicativos para Linux. Entre esses
aplicativos, encontra-se o ImageMagick, já comentado na Seção 3.6.1. Também merecem
destaque o Eletric Eyes, mostrado na Figura 3.41, e o GQView. O ee, como também é
conhecido o Eletric Eyes, é um visualizador que exige pouquíssimos recursos computacio-
nais.
O GQview, apresentado na Figura 3.42 é um visualizador de imagens simples, porém
poderoso. Ele suporta a maioria dos formatos de imagem disponíveis, lista com miniaturas,
funções para zoom, exibição em tela cheia, slideshow, além de funções para gerenciamento
dos arquivos como apagar, copiar, mover, etc. Outra funcionalidade do GQview é a possibi-
lidade de ser chamado um editor de imagens, como o GIMP, para editar a imagem que está
sendo visualizada.
Para os saudosistas do ACDSee, um aplicativo bastante utilizado em Windows, existe
um programa que tenta suprir o usuário de suas funcionalidades. O GTKSee, foi durante um
bom tempo um concorrente direto e superior ao GQView. O projeto foi, entretanto, abando-
nado por um bom tempo, tendo sido retornado em maio de 2003 por outro desenvolvedor.
54 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.41: Eletric Eyes
Figura 3.42: GQview
GUI - Graphical User Interface 55
3.7.2 Visualizadores PostScript e PDF
A visualização de arquivos PostScript e PDF em Linux é feita preferencialmente com
o Ghostview, o Xpdf ou o Acrobat Reader. O Xpdf é um programa que permite ao usuário
visualizar arquivos PDF (Portable Document Format) no Linux. Sua interface é simples
e bem leve. Ele também incorpora ferramentas de conversão do formato PDF para outros
formatos como PostScript e texto puro. É uma ótima opção para quem tem poucos recursos
e precisa ter acesso à arquivos PDF. Na Figura 3.43, é mostrada uma imagem do Xpdf em
execução.
Figura 3.43: Xpdf
Por sua vez, o Acrobat Reader é o programa de visualização de arquivos PDF desen-
volvido pela empresa que criou os formatos PostScript e PDF, a Adobe. O Acrobat Reader
tem muito mais funções que o Xpdf, mas perde em desempenho. Existe uma lista de mi-
niaturas e uma seção de favoritos, que facilita a navegação pelo documento. Além disso,
56 EDITORA - UFLA/FAEPE - Linux Intermediário
possui ferramentas para seleção de texto e de imagens, o que facilita a exploração e obten-
ção de fragmentos do documento. É uma ótima opção para visualização de arquivos PDF,
por conter o maior número de ferramentas. Na Figura 3.44, é possível ver o Acrobat Reader
em execução.
Figura 3.44: Acrobat Reader
Já o gv (de GhostView) é uma interface para o interpretador Ghostscript, que permite
visualizar arquivos PostScript de forma funcional e com poucas exigências de recursos
computacionais. Ele oferece opções simples em relação à visualização e impressão. O gv
também suporta arquivos no formato PDF, porém pode haver problemas de exibição, sendo
recomendado usar o Xpdf ou o Acrobat Reader para esses formatos. Porém para arquivos
PostScript, o gv, ilustrado na Figura 3.45, é a melhor opção.
Além do gv, dois outros visualizadores PostScript são também bastante comuns: o
GGv (Gnome GhostView), uma interface GNOME para o Ghostscript, ilustrado na Figura 3.46,
e o KGhostView. Como o próprio nome indica, o KGhostView é o interface KDE para o
Ghostscript. A título de informação, o Ghostscript é um conjunto de ferramentas e bibli-
otecas para tratar arquivos PostScript em vários sistemas operacionais. O Ghostscript é
um dos elementos básicos para impressão em Linux, o que pode ser verificado em (SICA;
UCHÔA, 2003).
GUI - Graphical User Interface 57
Figura 3.45: gv
Figura 3.46: GGv
58 EDITORA - UFLA/FAEPE - Linux Intermediário
3.8 APLICATIVOS DE MÚSICA, VÍDEO E ENTRETENIMENTO
Em um mundo cada vez mais digital, também o lazer acaba ocupando espaço nos
meios eletrônicos. Assim, aplicativos ligados ao entretenimento do usuário encontram-se
disponíveis desde as versões mais iniciais do Linux e mesmo do UNIX. Não é incomum
ouvir, por exemplo, comentários que o UNIX surgiu a partir da tentativa de se compilar um
jogo de batalha estelar em máquinas PDP8.
Assim, atualmente encontram-se disponíveis uma grande quantidade de aplicativos
para que o usário possa ouvir música, ver vídeos em diversos formatos e até mesmo relaxar
a tensão de um dia de trabalho em jogos dos mais variados estilos. Entre os “players”
(aplicativos usados para reproduzir arquivos de som ou vídeo), merecem destaque o XMMS,
o Videolan, o Xine e o Mplayer.
O XMMS (X Multimedia System) é um programa que reproduz vários arquivos de áudio
digital, como o CDA (formato usado nos CDs de Áudio), o MP3 e o OGG. Ele consome
poucos recursos da máquina e possui interface parecida com a do Winamp, e suporta skins
(o que permite que tenha vários tipos de aparência). Ele possui também um equalizador
gráfico, e uma lista de execução, que pode carregar arquivos de listas do Winamp e listas
geradas por ele próprio. É uma boa opção para quem gosta de ouvir música enquanto
utiliza o computador. A Figura 3.47 mostra uma imagem do XMMS com a lista de execução
e o equalizador.
Figura 3.47: XMMS - X Multimedia System
Apesar do XMMS também permitir a reprodução de vídeos, com o uso de pluggins,
nesse caso melhores escolhas são o Xine, o Videolan e o Mplayer. O Xine, ilustrado na
8Obs: os autores desse texto não sabem se essa estória é verídica, apenas fazem questão de repassá-laadiante.
GUI - Graphical User Interface 59
Figura 3.48, permite reproduzir arquivos de audio (MP3) e vídeo (AVI, MOV, WMV, MPEG,
etc.) consumindo pouquíssimo tempo de CPU, se comparado a aplicativos similares. Ele
suporta os arquivos de legenda (subtitles), e também reproduz DVD’s, com a instalação de
plugins. Existem controles de reprodução, cor, brilho, contraste, lista de execução, suporte
a skins, além da captura de imagens a partir de um vídeo em reprodução.
Figura 3.48: Xine
O Videolan consiste não somente em um player, mas em um projeto ambicioso para
videoconferência, ou seja aplicativos cliente e servidor para vídeo MPEG. Um desses apli-
cativos, o VLC (VideoLan Client), é não somente um cliente MPEG, mas um ótimo player
para arquivos de vídeo nesse formato.
Outro player para vídeo, é o MPlayer, é um programa que reproduz vídeo em vários
formatos, como MPEG, AVI, MOV, DivX, entre outros. Como o Xine e o VLC, ele também
é capaz de reproduzir DVDs. O MPlayer, que também suporta skins, é um dos programa
mais completo para reprodução de vídeo no Linux.
Quanto aos jogos, várias são as possibilidades de diversão em Linux, o que pode ser
verificado na LinuxGames (http://www.linuxgames.com/) ou na Linux Game Tome
(http://www.happypenguin.com/news). Jogos comerciais, como Unreal Tournament,
já possuem versões para Linux. Mas também existem soluções gratuitas de alto nível, como
o Freeciv e Freecraft ou mesmo Doom e Quake. A Figura 3.49 mostra uma tela extraída
de uma partida de Bzflag. Existem também emuladores plataformas de jogos, objetivando
60 EDITORA - UFLA/FAEPE - Linux Intermediário
entretenimento, como o SNES, emulador Super Nintendo, e MAME, um emulador para
vários arcades (como o Atari).
Figura 3.49: Jogo Bzflag
3.9 COMENTÁRIOS FINAIS
O leitor deve observar que foram listadas apenas algumas classes de aplicativos grá-
ficos e também apenas alguns exemplos de cada classe. O Linux apresenta uma gama
muito maior de aplicabilidade do que aqui apresentada, gama essa que tende a crescer
ainda mais devido à constante popularização do sistema operacional, aumento das empre-
sas que o vêm adotando e aumento da oferta de distribuições Linux no mercado. Um outro
motivo para a crescente demanda consiste em que muitos aplicativos implementados para
Linux seguem o paradigma de software livre ou similar.
Caso o leitor esteja procurando por um dado aplicativo, existem diversos sites que
facilitam essa busca, como o Freshmeat (http://www.freshmeat.net/), o Linuxapps
(http://www.linuxapps.com/) ou Tucows Linux (http://linux.tucows.com/). O
GUI - Graphical User Interface 61
Freshmeat, além de ser um site de busca, contém notícias de atualizações de aplicativos e
artigos diversos, merecendo visitas periódicas. Também não é possível esquecer o Source-
forge (http://sourceforge.net/), um grande repositório para aplicações distribuídas
sob licenças de código aberto.
Para busca de aplicações científicas, o melhor site é o Scientific Applications on Li-
nux (SAL - http://sal.kachinatech.com/). Caso o administrador queira instalar o
aplicativo desejado no formato RPM, então não podem ser esquecidos o Rpmfind (http:
//rpmfind.net/) e o Freshrpms (http://freshrpms.net/).
62 EDITORA - UFLA/FAEPE - Linux Intermediário
4O CONSOLE LINUX
4.1 CONCEITOS BÁSICOS
Um dos maiores mitos do Linux é que o uso da interface de linha de comando, tam-
bém conhecida como terminal, modo texto ou console, é extremamente complicado. Na
realidade, tal informação é infundada, pois o conceito de usabilidade ainda é tema de mui-
tas pesquisas no meio acadêmico. O que nota-se é uma série de “usuários” habituados ao
conceito de interfaces gráficas, que tornaram-se meros autômatos, repetindo movimentos
sem, algumas vezes, notar o que está sendo feito ou compreender qual o objetivo. Isso
não significa que as interfaces gráficas sejam algo ruim, pelo contrário, podem aumentar a
produtividade do usuário que sabe explorar seus recursos.
Entretanto, algumas atividades não podem ser efetuadas em interfaces gráficas de
forma eficiente, principalmente no Linux. Nem todas as máquinas Linux possuem o servidor
gráfico instalado (Seção 3.1), principalmente em servidores. Para que alguém possa tornar-
se um bom administrador em redes Linux, o conhecimento do modo texto é fundamental.
Os conceitos do terminal permeiam todas as atividades da administração, desde o processo
de configuração (SICA; UCHÔA, 2003) até a criação de shell scripts1 (SCHNEIDER, 2002).
Seguindo esta filosofia, este capítulo apresenta uma série de comandos de console.
Obviamente existem vários outros comandos e essa apresentação não se preocupa em
apresentar todas as opções dos comandos descritos. O objetivo deste capítulo é familia-
rizar o leitor com o console do Linux, munindo-o do conhecimento básico para isso. São
apresentados exemplos de usos dos comandos, sendo que o caracter “#” é usado para
indicar um prompt de terminal. Na medida do possível, os comandos foram agrupados por
categoria de tarefa que executam.
1Shell Script: pequeno programa escrito utilizando comandos do Linux para automatizar tarefas, como umarquivo de lote.
64 EDITORA - UFLA/FAEPE - Linux Intermediário
4.2 COMANDOS PARA MANIPULAÇÃO DE ARQUIVOS E DIRETÓRIOS
Comandos de manipulação de arquivos são aqueles que podem interagir com o sis-
tema de arquivos do Linux. As operações de criação, remoção, renomeação e cópia de
arquivos e diretórios são um exemplo típico. Também foram incluídas nesta seção opera-
ções para manipulação de permissões do arquivo. Para maiores detalhes sobre arquivos,
caminhos e diretórios em Linux, ver (SICA; UCHÔA, 2003) e (ABREU SILVA, 2002).
4.2.1 Comando cd
O comando cd entra em um determinado diretório. Pode ser especificado um ende-
reço absoluto (começando com /) ou relativo ao caminho atual; caso não seja passado
nenhum valor, assume que é o diretório HOME (o diretório pessoal do usuário). Na Ta-
bela 4.1, são mostrados os parâmetros que podem ser passados ao cd, e a Figura 4.1
mostra exemplos de uso desse comando.
Tabela 4.1: Parâmetros do Comando cd
Parâmetro Descrição-P utiliza a estrutura física do diretório em vez de links simbólicos
-L força links simbólicos a serem seguidos
Entra no diretório HOME do usuário
# cd
Entra no diretório /usr/bin
# cd /usr/bin
Entra no subdiretório mail no diretório HOME do usuário
# cd ~/mail
Entra em /usr/local/share a partir de /usr/share/wallpapers
# cd ../../local/share
Entra em /usr/src/linux-2.4.14-18, apontado pelo link /usr/src/linux
# cd -P /usr/src/linux
Figura 4.1: Exemplos de Uso do cd
O Console Linux 65
4.2.2 Comando pwd
O comando pwd imprime o caminho completo para o diretório atual. Seus parâmetros
opcionais estão indicados na Tabela 4.2 e exemplos de sua execução são mostrados na
Figura 4.2.
Tabela 4.2: Parâmetros do Comando pwd
Parâmetro Descrição-P imprime o diretório físico, sem links simbólicos
-L imprime links simbólicos
Executando como usuário root no diretório HOME, exibe /root
# pwd
Executando em /usr/src/linux, link para /usr/src/linux-2.14.18-14,
exibe /usr/src/linux-2.14.18-14
# pwd -P
Executando em /usr/src/linux, link para /usr/src/linux-2.14.18-14,
exibe /usr/src/linux
# pwd -L
Figura 4.2: Exemplos de Uso do pwd
4.2.3 Comando ls
O comando ls exibe informações sobre um arquivo ou um diretório. Se não for espe-
cificado um caminho, lista o conteúdo do diretório atual. Possui vários parâmetros, alguns
deles mostrados na Tabela 4.3. Exemplos de uso do ls são mostrados na Figura 4.3.
4.2.4 Comando mkdir
O mkdir (make directory) cria um diretório onde o usuário estiver atualmente. Para
isso, basta que o usuário tenha permissão para escrever no diretório corrente. A Figura 4.4
mostra a criação de um diretório em um diretório atualmente vazio. Observe na figura que
podem ser especificados mais que um nome de diretório a ser criado, caso não existam
ainda.
66 EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.3: Parâmetros do Comando ls
Parâmetro Descrição-d Lista apenas diretórios
-h Mostra tamanhos de arquivos de forma mais compreensível
-d Lista o nome do diretório em vez de seu conteúdo
-R Entra recursivamente em subdiretórios
-X Ordena alfabeticamente os arquivos e diretórios
-t Ordena por data de alteração
-r Inverte a ordem se saída especificada
-A Mostra todos os arquivos, inclusive ocultos
-B Ignora arquivos de backup (terminam em )
-p Identifica diretórios com uma barra no final
-color=valor Utilização cores para distinguir tipos de arquivos,
onde valor pode ser: never, always ou auto
Mostra todos os arquivos com extensão ’.lib’ no diretório atual em
ordem alfabética
# ls -X *.lib
Mostra todos os arquivos do diretório home, inclusive arquivos ocultos
# ls -A ~
Mostra todos os arquivos e subdiretórios no diretório home do usuário
# ls -RX
Mostra todos os arquivos, exceto backups, ordenados por data de
alteração
# ls -tB
O mesmo que o anterior, porém em ordem inversa
# ls -rtB
Lista todos os diretórios ocultos
# ls -d .* --color=always
Figura 4.3: Exemplos de Uso do ls
O Console Linux 67
# ls
# mkdir teste
# ls
teste
# mkdir teste1 teste2 teste3
# ls
teste teste1 teste2 teste3
Figura 4.4: Exemplos de Uso do mkdir
4.2.5 Comando rmdir
O rmdir remove um ou mais diretórios, desde que os mesmos estejam completa-
mente vazios. Supondo que os diretórios da Figura 4.4 tenham sido criados e que estejam
vazios, pode-se exclui-los completamente, como mostrado na Figura 4.5. A Figura 4.6
ilustra uma forma alternativa, já que todos os diretórios possuem um nome semelhante,
permitindo o uso do “coringa” ‘*’. Esse caracter especial indica que a shell deve substituir
o asterisco por qualquer conjunto de caracteres.
# ls
teste teste1 teste2 teste3
# rmdir teste teste1 teste2 teste3
# ls
#
Figura 4.5: Exemplo de Uso do rmdir
# ls
teste teste1 teste2 teste3
# rmdir test*
# ls
#
Figura 4.6: Exemplo de Uso do rmdir – uso de caracteres “coringa”
68 EDITORA - UFLA/FAEPE - Linux Intermediário
4.2.6 Comando rm
O comando rm pode ser usado para remover arquivos e diretórios. De forma diferente
do rmdir, pode-se excluir diretórios não-vazios, especificando-se parâmetros na linha de
comando. Tais parâmetros podem ser vistos na Tabela 4.4. A Figura 4.7 ilustra a remoção
de um diretório, assumindo que ele não esteja vazio. Para isso, são usados os parâmetros
-f e -r combinados (remoção recursiva e sem questionar o usuário) e -v (para listar tudo
que está sendo feito). Use tais opções com extrema cautela, pois os arquivos apagados
dessa forma não poderão ser recuperados com facilidade (e na maioria das vezes, o esforço
exigido não irá compensar a tarefa).
Tabela 4.4: Parâmetros do Comando rm
Parâmetro Descrição-f, --force Elimina arquivos não existentes e nunca pede
confirmação do usuário antes de remover o
arquivo.
-i, --interactive Pede confirmação do usuário antes de remo-
ver cada arquivo ou diretório.
-r, -R, --recursive Percorre os diretórios recursivamente, remo-
vendo todos os seus subdiretórios e arquivos.
-v, --verbose Informa o que está sendo feito com cada ar-
quivo.
# rm -rfv lixo
removed ‘lixo/a.txt’
removed ‘lixo/img.jpg’
removed ‘lixo/fotos/f1.jpg’
removed ‘lixo/fotos/f2.jpg’
removed directory: ‘lixo/fotos’
removed directory: ‘lixo’
Figura 4.7: Exemplo de Uso do rm
O Console Linux 69
4.2.7 Comando mv
O comando mv é usado para mover arquivos de um local para outro, ou simplesmente
renomeá-los. A Tabela 4.5 traz alguns dos principais parâmetros do comando, enquanto a
Figura 4.8 ilustra alguns dos usos do comando.
Tabela 4.5: Parâmetros do Comando mv
Parâmetro Descrição-f, --force Não pede confirmação do usuário antes de sobrescrever o
arquivo.
-i, --interactive Pede confirmação do usuário antes de sobrescrever.
-u, --update Move apenas os arquivos que novos e versões recentes de
arquivos já existentes.
-v, --verbose Informa o que está sendo feito com cada arquivo.
Movendo todos os arquivos para o diretório /tmp:
# mv * /tmp
Renomeando o arquivo teste.txt para exemplo.txt:
# mv teste.txt exemplo.txt
Movendo todo o diretório meudir para o /tmp:
# mv meudir /tmp
Figura 4.8: Exemplos de Uso do mv
4.2.8 Comando cp
O comando cp é usado para copiar arquivos e diretórios. Sua sintaxe é simples,
bastando identificar o(s) arquivo(s) de origem e o destino onde será feita a cópia. Quando
se especifica mais que um arquivo na origem, obrigatoriamente, o destino deve ser um
diretório. Os principais parâmetros do comando estão listados na Tabela 4.6. Exemplos de
uso estão disponíveis na Figura 4.9. Para maiores informações sobre hard links e symbolic
links, consulte a (SICA; UCHÔA, 2003) e a Seção 4.2.10.
70 EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.6: Parâmetros do Comando cp
Parâmetro Descrição-d, --no-dereference Não segue links simbólicos.
-f, --force Se um arquivo destino já existe ou não puder ser aberto,
será removido e copiado novamente.
-i, --interactive Pede confirmação do usuário antes de sobrescrever.
-l, --link Cria um hard link para o arquivo, em vez de copiá-lo.
-L, --dereference Sempre seguir links simbólicos.
-p, --preserve Preserva os atributos dos arquivos, sempre que possível.
-r Copia os diretórios recursivamente (diretórios e seus con-
teúdos: arquivos e subdiretórios).
-s, --symbolic-link Cria um link simbólico em vez de copiar o arquivo.
-u, --update Copia apenas os arquivos que não existem no destino e
arquivos mais recentes que arquivos já existentes no des-
tino.
-v, --verbose Informa o que está sendo feito com cada arquivo.
Copiar todos os arquivos do diretório atual (*) para
o diretório home do usuário (~):
# cp * ~
Copiar os arquivo lago.bmp e foto.bmp para o
diretório fotos:
# cp lago.bmp foto.bmp fotos
Copiar o arquivo /etc/services para o diretório atual (.):
# cp /etc/services .
Figura 4.9: Exemplos de Uso do cp
4.2.9 Comando touch
O comando touch é usado para alterar a data/hora de modificação e acesso dos
arquivos especificados. Pode ser usado também para criar um arquivo vazio. A Tabela 4.7
mostra os principais parâmetros do comando, enquanto a Figura 4.10 ilustra seu uso.
O Console Linux 71
Tabela 4.7: Parâmetros do Comando touch
Parâmetro Descrição-a Altera apenas a data/hora de acesso ao arquivo.
-c, --no-create Não cria o arquivo, se o mesmo não existir.
-m Altera apenas a data/hora de alteração do arquivo.
Alterar a data de acesso dos arquivos do diretório atual:
# touch -a *
Alterar a data de modificação dos arquivos do /tmp:
# touch -m /tmp/*
Alterar todas as datas dos arquivos do diretório atual:
# touch *
Criar o arquivo vazio.txt:
# touch vazio.txt
Figura 4.10: Exemplos de Uso do touch
4.2.10 Comando ln
O comando ln pode ser usado para criar links (atalhos) para arquivos. Um link pode
ser visto como um novo nome ou um atalho para um arquivo existente. Ao contrário de
outros sistemas operacionai, ao editar-se um link, o conteúdo do arquivo original é alterado.
Existem dois tipos de links:
Hard link: um hard link pode, a grosso modo, ser entendido como um nome do arquivo. De
uma forma mais técnica, um hard link é um apontador pointer para o i-node na tabela
do sistema de arquivos. Todo arquivo tem ao menos um hard link, que é o seu próprio
nome, mas um mesmo arquivo pode possuir vários hard links. Se um arquivo tiver
mais de um nome, então ele só é apagado definitivamente quando todos os hard links
forem apagados. Obviamente, dadas suas características, um hard link só pode ser
criado para arquivos comuns e na mesma partição.
symbolic link: um symbolic link ou link simbólico é um arquivo que aponta para o arquivo
original, funcionando como um atalho para ele. Ele pode ser direcionado para diretó-
rios ou arquivos em outras partições. Como ele é apenas um atalho, se for apagado
não irá apagar o arquivo original.
72 EDITORA - UFLA/FAEPE - Linux Intermediário
Apesar de possuir vários parâmetros, este texto abordará apenas o parâmetro -s,
que diz para o comando criar um link simbólico. Para criar hard links, não é necessário
nenhum parâmetro extra. Maiores informações podem ser obtidas consultando o manual
online (man) do comando2. A Figura 4.11 ilustra a criação dos dois tipos de links.
Criando um link simbólico chamado ’portas’ que aponta para
o arquivo /etc/services:
# ln -s /etc/services portas
Criando um hard link chamado ’novo’ para o arquivo ’antigo’,
no mesmo diretório:
# ln antigo novo
Figura 4.11: Exemplos de Uso do ln
4.2.11 Comando chmod
O comando chmod pode ser usado para alterar as permissões de acesso aos arquivos.
Um arquivo qualquer tem permissões de leitura, escrita e execução independentes para o
usuário (proprietário), o grupo do arquivo e os demais usuários que não pertençam ao
grupo. A permissão de execução é atribuída a diretórios (permitindo que possa-se usar o
comando cd para acessá-los) ou programas ou shell scripts que possam ser executados.
Assim, para que um arquivo em Linux seja um executável, basta que ele tenha permissão
de execução, não necessitando de qualquer terminação para isso.
Para mudar as permissões, existem duas formas básicas. A primeira, utiliza os ca-
racteres ‘r’, ‘w’ e ‘x’ para expressar as permissões de leitura, escrita e execução, respec-
tivamente. Os caracteres ‘u’, ‘g’, ‘o’ e ‘a’ são usados para representar, respectivamente,
o usuário, seu grupo, os outros usuários e todos (‘a’ de all). Além desses caracteres, são
usados os sinais ‘+’, para adicionar uma permissão, ‘-’, para removê-la e ‘=’ para uma atri-
buição de permissões. A Figura 4.12 mostra exemplos dessa forma de uso do chmod. Note
que é possível separar opções por vírgula e que essas opções podem ser agrupadas de
várias formas.
A segunda forma, conhecida como octal, utiliza três números para identificar as per-
missões do arquivo (usuário, grupo e outros). A Tabela 4.8 traz esses valores. A Figura 4.13
ilustra essa forma uso do comando. Dentre os parâmetros opcionais do comando chmod,
merece destaque o ‘-R”, que altera as permissões recursivamente no diretório especificado.
2Veja no Capítulo 5 sobre como acessar o manual de um comando e obter ajuda.
O Console Linux 73
Permite que o usuário possa ler e escrever no arquivo (relat.txt),
o grupo possa ler e os outros usuários não tenham acesso:
# chmod u=rw,g=r,o-rwx relat.txt
Dá todas as permissões ao usuário (leitura, escrita e execução)
e execução para grupo e demais usuários ao arquivo ’testar_servicos’:
# chmod a=x,u+rw testar_servicos
Dar permissão de leitura e escrita para o proprietário e remover
todas as outras permissões em todos os arquivos dentro do diretório
’/home/fulano’:
# chmod -R u=rw,og-rwx /home/fulano
Figura 4.12: Exemplos de Uso do Comando chmod – Opções por Caracteres
Tabela 4.8: Permissões de Arquivo
Valor Descrição0 Remove todas as permissões relativas à posição do dígito.
1 Dá permissão de execução ao arquivo ou diretório.
2 Dá permissão de escrita.
3 Dá permissões de escrita e execução (equivale às permis-
sões 1 e 2 somadas).
4 Dá permissão de leitura.
5 Equivalente à combinação das permissões 1 e 4.
6 Equivalente às permissões 2 e 4.
7 Todas as permissões definidas (1, 2 e 4).
4.2.12 Comando chown
O comando chown (change owner) permite trocar o usuário proprietário do arquivo e,
opcionamente, o grupo do arquivo. Em Linux, esse comando só pode ser executado pelo
usuário root. Dentre as opções disponíveis, merece destaque o parâmetro ‘-R’, que faz a
troca recursivamente em todos os arquivos e subdiretórios de um diretório especificado. A
Figura 4.14 ilustra o uso do comando.
74 EDITORA - UFLA/FAEPE - Linux Intermediário
Permite que o usuário possa ler e escrever no arquivo (relat.txt),
o grupo possa ler e os outros usuários não tenham acesso:
# chmod 640 relat.txt
Dá todas as permissões ao usuário (leitura, escrita e execução)
e execução para grupo e demais usuários ao arquivo ’testar_servicos’:
# chmod 711 testar_servicos
Dar permissão de leitura e escrita para o proprietário e remover
todas as permissões em todos os arquivos dentro do diretório
’/home/fulano’:
# chmod -R 600 /home/fulano
Figura 4.13: Exemplos de Uso do Comando chmod
Altera o proprietário do arquivo planilha.xml para ’fulano’:
# chown fulano planilha.xml
Altera o proprietário para ’apache’ e o grupo para ’web’ em
todos os arquivos/subdiretórios existentes em /var/www/html:
# chown -R apache:web /var/www/html
Altera o grupo do arquivo /var/spool/mail/fulano para ’mail’:
# chown :mail /var/spool/mail/fulano
Figura 4.14: Exemplos de Uso do Comando chown
4.2.13 Comando chgrp
Age de forma similar ao chown, mas permite a troca apenas do grupo proprietário do
arquivo. Caso não esteja sendo usado para mudança a um outro grupo ao qual o usuário
também faça parte, o comando só pode ser executado pelo root para realizar a troca dos
grupos. Dentre as diversas opções disponíveis, merece destaque o parâmetro ‘-R’ que
faz a troca recursiva em todos os arquivos e subdiretórios localizados abaixo do diretório
especificado. A Figura 4.15 ilustra o uso do comando.
O Console Linux 75
# ls -l teste.txt
-rw-r--r-- 1 fulano users 32687 Mai 26 15:51 teste.txt
# chgrp editores teste.txt
# ls -l teste.txt
-rw-r--r-- 1 fulano editores 32687 Mai 26 15:51 teste.txt
Figura 4.15: Exemplo de Uso do chgrp
4.2.14 Comando mount
O comando mount é utilizado para associar um sistema de arquivos a um diretório em
um computador. Por padrão, todos os sistemas de arquivo são “montados” em subdiretórios
do diretório /mnt, como, por exemplo, /mnt/floppy para disquetes e /mnt/cdrom para
drives de CD-ROM. A tarefa de montagem somente pode ser realizada pelo usuário root,
a não ser que a montagem esteja configurada no arquivo /etc/fstab. Mais detalhes
sobre esse arquivo e o processo de montagem e desmontagem de dispositivos de arquivos
podem ser encontrados em (SICA; UCHÔA, 2003).
A Tabela 4.9 mostra os principais parâmetros desse comando, e a Figura 4.16 exem-
plifica alguns de seus usos. Toda partição montada com mount deve ser desmontada com
o comando umount, mostrado na Seção 4.2.15.
Tabela 4.9: Parâmetros do comando mount
Parâmetro Descrição-a Monta todos os sistemas de arquivos especificados em /etc/fstab
-t Especifica o tipo de sistema de arquivos
-r Monta o sistema de arquivos como somente-leitura
4.2.15 Comando umount
O comando umount é utilizado para desmontar sistemas de arquivos que tenham
sido montados com o comando mount (Seção 4.2.14). Um sistema de arquivos somente
pode ser desmontado se não estiver “ocupado”, ou seja, se o diretório atual não estiver
dentro do diretório onde foi montado o sistema de arquivos, e se este não possuir diretórios
abertos. A Tabela 4.10 mostra alguns dos parâmetros do comando umount, e a Figura 4.17
exemplifica sua utilização.
76 EDITORA - UFLA/FAEPE - Linux Intermediário
Monta o sistema de arquivos do disquete no diretório /mnt/floppy
(supondo que já esteja configurado no /etc/fstab)
# mount /mnt/floppy
Monta o sistema de arquivos do CD-ROM no diretório /mnt/cdrom
(supondo que já esteja configurado no /etc/fstab)
# mount /mnt/cdrom
Monta a primeira partição do disco IDE primário master em /mnt/win,
usando o sistema de arquivos vfat - só permitido ao usuário root
# mount -t vfat /dev/hda1 /mnt/win
Figura 4.16: Exemplos de uso do mount
Tabela 4.10: Parâmetros do Comando umount
Parâmetro Descrição-n Desmonta sem escrever no arquivo /etc/mtab
-r Se a desmontagem falhar, tenta remontar como somente-leitura
-a Desmonta todos os sistemas de arquivos em /etc/mtab
-t Especifica o tipo dos sistemas de arquivos a serem desmontados
-f Realiza uma desmontagem forçada (útil em sistemas de arquivos em
rede que ficaram inacessíveis)
Desmonta todos os sistemas de arquivo do tipo vfat
# umount -a -t vfat
Desmonta o dispositivo de disquete, montado em /mnt/floppy
# umount /mnt/floppy
Figura 4.17: Exemplos de Uso do umount
4.3 COMANDOS DE TRANSIÇÃO DO MS-DOS PARA LINUX
A presente seção procura mostrar alguns comandos que permitem que o usuário ini-
ciante em Linux faça uma transição suave entre os dois sistemas operacionais. Serão
abordadas algumas das ferramentas disponibilizadas pelo pacote mtools, que simulam
em Linux o uso de comandos MS-DOS, apenas prefixando-os com o caracter m. O objetivo
O Console Linux 77
não é listar todos os comandos do pacote, pois é altamente recomendável que o usuário
familiarize-se com os comandos nativos do Linux, mas apenas listar os mais comuns.
Esses comandos funcionam de forma similar aos originais. Como poderá ser obser-
vado, a maioria dos parâmetros usados na versão original são válidas, sendo necessário
apenas trocar a barra (/) por um hífen ao especificar os parâmetros. A contra-barra ( � )
pode ser usada para separar diretórios, mas é necessário colocar o parâmetro entre aspas
para que a shell não o interprete da forma convencional. O mesmo vale para os caracteres-
coringa (* e ?).
4.3.1 Comando mdir
O comando mdir permite a listagem do conteúdo de um diretório ou disco que use
o sistema de arquivos baseado em FAT. A Tabela 4.11 exibe os principais parâmetros do
comando, enquanto a Figura 4.18 ilustra suas formas de uso.
Tabela 4.11: Parâmetros do Comando mdir
Valor Descrição-/ Lista os diretórios recursivamente, equivalente ao /s original.
-w Lista os arquivos em colunas, omitindo tamanho e data de criação.
2 Lista arquivos ocultos.
4.3.2 Comando mcopy
O comando mcopy é utilizado para copiar arquivos entre diretórios. A Tabela 4.12
mostra os principais parâmetros para o comando, e a Figura 4.19 ilustra suas formas bási-
cas de uso.
Tabela 4.12: Parâmetros do Comando mcopy
Valor Descrição-s Copia diretórios recursivamente
-p Copia preservando os atributos
-Q Interrompe as cópias se um dos arquivos falhar
-n Não solicita confirmação ao sobrescrever arquivos
-m Preserva a data/hora de modificação do arquivo
-v Mostra os nomes dos arquivos à medida em que vão sendo copiados
78 EDITORA - UFLA/FAEPE - Linux Intermediário
# mdir a:
Volume in drive A has no label
Volume Serial Number is 382E-9075
Directory for A:/
linux tgz 771337 05-12-2003 12:56 linux.tgz
artigo pdf 30380 05-14-2003 10:42 brazil.pdf
2 files 801 717 bytes
655 360 bytes free
# mdir -w a:
Volume in drive A has no label
Volume Serial Number is 382E-9075
Directory for A:/
linux.tgz artigo.pdf
2 files 801 717 bytes
655 360 bytes free
Figura 4.18: Exemplos de Uso do mdir
Copia todos os arquivos e diretórios do disquete para o diretório HOME
# mcopy -s a:/ ~
Copia todos os arquivos com a extensão .conf para o disquete,
preservando a data da última modificação
# mcopy -m *.conf a:
Figura 4.19: Exemplos de Uso do mcopy
4.3.3 Comando mformat
O comando mformat é utilizado para formatar discos com sistemas de arquivos MS-
DOS. A Tabela 4.13 mostra os principais parâmetros do comando, e a Figura 4.20 ilustra
alguns exemplos de utilização.
4.4 COMANDOS DE VISUALIZAÇÃO, BUSCA E ORDENAÇÃO
Os comandos apresentados nesta seção destinam-se principalmente ao processo de
visualização e busca em arquivos em texto puro. Assim, entre outros, são apresentados os
O Console Linux 79
Tabela 4.13: Parâmetros do Comando mformat
Parâmetro Descrição-t Especifica o número de cilindros
-h Especifica o número de cabeças
-n Especifica o número de setores
-f Especifica o tamanho do disco
-v Especifica um nome de volume
Formata um disquete de 1.44 MB
# mformat -f 1440 a:
Define o rótulo para o disquete
# mformat -v "Documentos" a:
Figura 4.20: Exemplos de Uso do mformat
comandos less, cat e grep ferramentas poderosas do administrador. Também são apre-
sentados o comando find, que permite localizar arquivos que satisfaçam um determinado
padrão e o sort, que permite ordenar entradas de um arquivo texto.
4.4.1 Comando less
O comando less é um programa utilizado para visualização pausada de um arquivo
texto em um terminal, permitindo inclusive voltar a um texto já visualizado. É mais rápido
que editores de texto, uma vez que não precisa carregar todo o arquivo em memória para
exibi-lo. Possui vários comandos utilizados para navegação, alguns deles mostrados na
Tabela 4.14. O nome desse comando é uma brincadeira com o comando more, que possui
menos funcionalidades (não permitindo, por exemplo, voltar a uma parte anterior do texto).
A Figura 4.21 mostra como esse comando pode ser utilizado.
Abre o conteúdo do arquivo LEIAME para visualização
# less LEIAME
Figura 4.21: Exemplos de Uso do less
80 EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.14: Comandos de Navegação do less
Parâmetro Descriçãoe Avança uma linha
y Recua uma linha
f Página seguinte
b Página anterior
/expressao busca por ’expressao’ no texto a partir do início do documento
?expressao busca por ’expressao’ no texto a partir do fim do documento
n Repete uma busca anterior
N Repete uma busca anterior em ordem reversa
4.4.2 Comando cat
Imprime o conteúdo de um arquivo na tela. Ao contrário do more e do less, mostra
o conteúdo de uma só vez, não interrompendo a exibição para facilitar a leitura. Pode ser
utilizado para concatenar arquivos, redirecionando a saída para um arquivo em vez de usar
a saída padrão. A Tabela 4.15 mostra alguns dos parâmetros que podem ser passados ao
comando cat, enquanto a Figura 4.22 lista alguns exemplos de utilização desse comando.
Tabela 4.15: Parâmetros do Comando cat
Parâmetro Descrição-b Numera as linhas de saída que não estiverem em branco
-n Numera as linhas de saída, inclusive linhas em branco
-T Mostra tabulações como o caracter ˆI
-E Mostra o caracter ’$’ ao final de cada linha
4.4.3 Comando tail
Imprime as linhas finais de um arquivo qualquer. Por padrão, imprime as últimas dez
linhas do arquivo. A Figura 4.23 mostra formas de uso do tail. Dentre os parâmetros
possíveis, dois merecem destaque:
-n: permite especificar quantas linhas serão impressas, alterando o valor padrão;
-f: faz com que o comando leia continuamente o arquivo e imprima cada nova linha adici-
onada ao fim do arquivo, permitindo a monitoração de arquivos de registro do sistema
(disponíveis /var/log/).
O Console Linux 81
Lista o conteúdo do arquivo LEIAME na tela
# cat LEIAME
Concatena o conteúdo de livro.001, livro.002 e livro.003 em um
único arquivo livro.pdf
# cat livro.001 livro.002 livro.003 > livro.pdf
Mostra o conteúdo do arquivo fonte.cpp, numerando as linhas
(inclusive linhas em branco)
# cat fonte.cpp -n
Figura 4.22: Exemplos de Uso do cat
Imprime as 5 últimas linha do arquivo listapaises.txt:
# tail -n 5 listapaises.txt
WESTERN SAHARA;EH
YEMEN;YE
YUGOSLAVIA;YU
ZAMBIA;ZM
ZIMBABWE;ZW
Figura 4.23: Exemplos de Uso do tail
4.4.4 Comando head
O comando head age de forma similar ao comando tail, imprimindo as dez primeiras
linhas de um arquivo, enquanto o outro imprime as linhas finais. A opção que merece des-
taque é -n, que permite especificar o número de linhas que serão impressas. A Figura 4.24
ilustra o uso do comando.
Imprimindo as 5 primeiras linhas de listapaises.txt:
# head -n 5 listapaises.txt
AFGHANISTAN;AF
ALBANIA;AL
ALGERIA;DZ
AMERICAN SAMOA;AS
ANDORRA;AD
Figura 4.24: Exemplos de Uso do head
82 EDITORA - UFLA/FAEPE - Linux Intermediário
4.4.5 Comando find
O programa find faz busca na árvore de diretórios, a partir do ponto atual, de arquivos
cujos nomes contenham uma expressão passada como parâmetro. Na Tabela 4.16 estão
especificados alguns parâmetros do find, e na Figura 4.25 alguns exemplos de seu uso.
Tabela 4.16: Parâmetros do Comando find
Parâmetro Descrição-follow Derreferencia os links simbólicos. Implica no uso de
-noleaf.
-maxdepth <niveis> Especifica o número máximo de níveis que o find vai des-
cer na árvore de diretórios, quando estiver fazendo a busca.
-mindepth <niveis> Especifica o número mínimo de níveis que o find vai des-
cer na árvore de diretório, antes de iniciar a busca.
-noleaf Não otimiza a busca para sistema de arquivos UNIX-like.
É uma opção necessária para sistemas de arquivos como
FAT e CD-ROMs.
-name Permite buscar um arquivo ou diretório que satisfaça uma
dada expressão regular.
-iname Idêntica à opção -name mas desprezando o uso de maiús-
culas ou minúsculas.
-size Permite buscar um arquivo pelo seu tamanho.
-user Localiza arquivos e diretórios de um dado usuário.
-mtime Busca arquivos e diretórios por data de alteração.
Fazendo uma busca, no diretório atual, por arquivos que contenham ’.mp3’
no nome, descendo no máximo 3 níveis na árvore de diretório:
# find ./ -name "*.mp3" -maxdepth 3
Procurando arquivos do usuário mico no diretório /home que tenham
sido atualizados a menos de 12 horas
# find /home -user mico -mtime -12
Procurando arquivos com mais de 5Mb no diretório /tmp e que tenham
# find /tmp -size +5000k
Figura 4.25: Exemplos de Uso do find
O Console Linux 83
4.4.6 Comando locate
O programa locate faz buscas de arquivos no sistema. Ele usa uma base de dados
com informações sobre a localização dos arquivos, por isso tem performance bem superior
ao find. Essa base de dados pode ser consultada por todos os usuários, mas apenas
o root tem pernissão para fazer atualizações. Na Tabela 4.17 temos os parâmetros mais
utilizados e na Figura 4.26 há alguns exemplos da utilização do locate.
Tabela 4.17: Parâmetros do Comando locate
Parâmetro Descrição-u Atualiza toda a base de dados, a partir do diretório raiz. Opção
somente disponível para o usuário root.
-U <dir> Atualiza toda a base de dados, a partir do diretório especificado
por <dir>. Opção somente disponível para o root.
-i Não diferencia maiúsculas de minúsculas.
-n <num> Limita o número de resultados até o valor especificado por
<num>
Atualizando a base de dados do locate:
# locate -u
Fazendo uma busca por aquivos que contenham a expressao ’.log’,
ignorando maiúsculas e minúsculas, e limitando os resultados até
o número de 50:
# locate -i -n 50 .log
Figura 4.26: Exemplos de Uso do locate
4.4.7 Comando sort
O comando sort ordena a linhas de arquivo(s) texto especificado(s) na linha de co-
mando. Seus principais parâmetros são mostrados na Tabela 4.18, e alguns exemplos de
uso listados na Figura 4.27
4.4.8 Comando wc
O wc imprime na tela o número de bytes, palavras e linhas de um arquivo passado
como parâmetro. Os parâmetros desse comando estão apresentados na Tabela 4.19, e um
exemplo da utilização do wc é apresentado na Figura 4.28.
84 EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.18: Parâmetros do Comando sort
Parâmetro Descrição-b, -ignore-leading-blanks ignora espaços no começo da linha
-d, -dictionary-order considera apenas caracteres alfanuméricos e
espaços
-f, -ignore-case não diferencia maiúsculas e minúsculas
-i, -ignore-nonprinting ignora caracteres que não podem ser impressos
(código ASCII menor que 32).
-n, -numeric-sort compara valores numéricos
-r, -reverse inverte o resultado da comparação
Mostra os usuários cadastrados no sistema em ordem alfabética
# sort /etc/passwd
Mostra os processos em execução em ordem decrescente
# ps -A | sort -n -r
Figura 4.27: Exemplos de Uso do sort
Tabela 4.19: Parâmetros do Comando wc
Parâmetro Descrição-c Mostra o número de bytes do arquivo.
-m Mostra o número de caracteres do arquivo.
-l Mostra o número de linhas do arquivo.
-L Mostra o tamanho da maior linha do arquivo.
-w Mostra o número de palavras do arquivo.
Mostrando o núemro de bytes, palavras e linhas do arquivo ’lab.txt’:
# wc lab.txt
Mostrando o numero de caracteres no arquivo ’teste.txt’:
# wc -c teste.txt
Figura 4.28: Exemplos de Uso do wc
O Console Linux 85
4.4.9 Comando grep
O programa grep procura expressões em uma entrada, que pode ser um arquivo ou
o resultado de um outro programa, direcionada por um pipe3. É muito útil quando há uma
entrada muito grande, mas apenas um item dessa entrada interessa ao usuário. Por padrão,
a saída gerada pelo grep são as linhas que contêm a expressão passada como parâmetro.
A Tabela 4.20 apresenta alguns parâmetros do grep e a Figura 4.29, alguns exemplos de
seu uso.
Tabela 4.20: Parâmetros do Comando grep
Parâmetro Descrição-c Ao invés de exibir as linhas como saída, exibe o número de linhas que
contêm a expressão passada como parâmetro.
-v Ao invés de exibir as linhas como saída, exibe o número de linhas que
não contém a expressão passada como parâmetro.
-i Ignora maiúsculas/minúsculas.
-l Ao invés de exibir as linhas como saída, exibe os nomes dos arqui-
vos (no caso de multiplos arquivos) que contêm a expressão passada
como parâmetro.
-L Ao invés de exibir as linhas como saída, exibe os nomes dos arquivos
(no caso de multiplos arquivos) que não contêm a expressão passada
como parâmetro.
-n Mostra no início de cada linha da saída o seu número no arquivo de
entrada.
-r Faz a busca em todos os arquivos de cada diretório recursivamente.
4.5 COMANDOS DE COMPACTAÇÃO
Compartilhar arquivos na internet tem sido uma tarefa cada vez mais costumeira. En-
tretanto, dados os limites impostos pelo alto tráfego e baixa largura de banda, a compacta-
ção de arquivos é extremamente necessária nesse cenário. Dessa maneira, a disponibili-
zação desses arquivos é feito em formato próprio somente quando esse já é compactado
(como o mp3, o mpeg, versões novas do PDF, etc.). Nos casos em que isso não ocorre,
geralmente são utilizados compactadores para disponibilizar esses arquivos em tamanho
3Ver a Seção 4.8 sobre o uso de pipes.
86 EDITORA - UFLA/FAEPE - Linux Intermediário
Procurando a expressão ’bola’ no arquivo ’brinquedos.txt’:
# grep bola brinquedos.txt
Procurando a expressão ’lpr’ no arquivo ’rpms.txt’, exibindo a linha
e ignorando maiúsculas e minúsculas:
# grep -in lpr rpms.txt
Procura a expressão ’program’ em todos os arquivos recursivamente e
ao invés de mostrar as linhas que contem a expressão, mostra o nome do
arquivo que contém essa expressão.
# grep -rl program
Figura 4.29: Exemplos de Uso do grep
menor. Esta seção irá abordar os comandos de compactação mais comuns no ambiente
UNIX.
4.5.1 Comandos zip e unzip
Os aplicativos zip e unzip são programas de compactação e descompactação com-
patíveis com o PKZIP do DOS. Ele compacta os arquivos e diretórios em um arquivo que
nomalmente possui a extensão .zip. É muito interessante pois ele provê compatibilidade
com arquivos compactados no ambiente MS-Windows, onde o padrão de compactação é
o do PKZIP. Na Tabela 4.21 são apresentados alguns de seus parâmetros. A Figura 4.30
mostra alguns exemplos de utilização do zip e do unzip.
Compactando a pasta ’a’, gerando o arquivo ’pasta_a.zip’:
# zip -r pasta_a a/
Compactando a pasta ’a’, mas sem comprimir os aquivos com extensao
’.tar’ e ’.gz’:
# zip -n .tar:.zip -r pasta_a a/
Descompactando o arquivo teste.zip
# unzip teste.zip
Figura 4.30: Exemplos de Uso do zip e do unzip
O Console Linux 87
Tabela 4.21: Parâmetros dos Comandos zip e unzip
Parâmetro Descrição-u Atualiza um arquivo que está dentro de um arquivo .zip por
versões mais recentes (se houver). Deve ser utilizada no mesmo
diretório onde o arquivo compactado foi criado.
-F Corrige erros no arquivo compactado.
-g Tenta adicionar arquivos a um arquivo .zip ao invés de criar um
novo. Se o arquivo não existir, um novo arquivo zip é criado.
-i <arquivos> Adiciona somente os <arquivos> listados ao arquivo .zip es-
pecificado.
-k Transforma os nomes dos arquivos e diretórios para um formato
compatível com o DOS.
-n <extensões> Inclui, sem comprimir, os arquivos com extensões especificadas
em <extensões>.
-R Varre a estrutura de diretórios recursivamente, a partir do atual.
-r Varre a estrutura de diretórios recursivamente, a partir do atual.
-T Testa a integridade do arquivo .zip que está sendo criado.
-v Verbose. Lista o estado atual do processamento.
4.5.2 Comandos gzip e gunzip
Os programas gzip e gunzip são programas que compactam e descompactam
arquivos usando a codificação de Lempel-Ziv. Ao compactar um arquivo com gzip, o pro-
grama vai tentar criar um novo arquivo, com o mesmo nome do arquivo original, mais a ex-
tensão “.gz” e apagar o original. Ao descompactar com gunzip é feito o processo inverso:
o arquivo original é restaurado (sem a extensão “.gz” e o arquivo compactado é excluído.
Na Tabela 4.22, estão alguns parâmetros para serem usados com gzip e gunzip, e na
Figura 4.31, alguns exemplos de uso.
Tabela 4.22: Parâmetros dos Comandos gzip e gunzip
Parâmetro Descrição-c Descompacta os arquivos colocando o resultado na saída padrão.
-l Lista um pequeno sumário para cada arquivo compactado.
-t Testa o arquivo que está sendo descompactado
-r Recursivo, varre toda a árvore de diretórios a partir daquele ponto.
88 EDITORA - UFLA/FAEPE - Linux Intermediário
Compactando o arquivo ’b.txt’, gerando o arquivo ’b.txt.gz’:
# gzip b.txt
Descompactando o arquivo ’b.txt.gz’ e gerando o arquivo ’b.txt’:
# gunzip b.txt.gz
Compactando todos os arquivos, de forma recursiva e exibindo sumário
de cada um deles:
# gzip -lr *
Figura 4.31: Exemplos de Uso do gzip e do gunzip
4.5.3 Comandos bzip2 e bunzip2
Os programas bzip2 e bunzip2 são programas de compactação e descompactação,
baseados no algoritmo de Burriws-Weeler e na codificação de Huffman. O método de com-
pressão utilizado pelo bzip2 é mais eficiente que o do gzip, gerando arquivos menores.
Entretanto, o processo de compressão é mais lento. Além disso, o formato .gz ainda é,
de certa forma, o padrão no ambiente UNIX. Por esses motivos, para o usuário que não
precisa de altíssimo poder de compressão, o uso do gzip é o indicado.
4.5.4 Comando tar
O aplicativo tar é um programa que aglutina diretórios recursivamente e coloca o
resultado na saída padrão. É um aplicativo amplamente utilizado em ambientes UNIX. É
muito útil para gerar backups e fazer cópias de pastas inteiras, pois ele reduz vários níveis
da árvore de diretório em um só arquivo. O comando tar aceita vários parâmetros, alguns
especificados na Tabela 4.23. A sintaxe básica do tar é dada por:
tar [parametros] <nome-do-diretório>
Na Figura 4.32 são apresentados alguns exemplos de uso do tar. Observe que os
aplicativos tar e gzip são característicos da filosofia UNIX. Ao invés de aplicativos com-
plexos para realizar várias tarefas, os aplicativos são desenvolvidos para fazerem tarefas
simples e de forma que possam ser combinados. Assim, para se ter um diretório compri-
mido em UNIX, usa-se o tar para criar um único arquivo aglutinando todos os arquivos
nesse diretório e o gzip para compactar esse arquivo aglutinado. Nesse caso, o uso da
opção “-z” faz com que o tar chame automaticamente o gzip.
O Console Linux 89
Tabela 4.23: Parâmetros do Comando tar
Parâmetro Descrição-c Cria um novo arquivo
-x Extrai o conteúdo de um arquivo
-v Verbose. Lista todos os arquivos que estão sendo processados.
-z Usa gzip/gunzip para compactar/descompactar os arquivos. Usar
preferencialmente extensão .tar.gz ou .tgz nesses arquivos.
-j Usa bzip2/bunzip2 para compactar/descompactar os arquivos.
Usar preferencialmente extensão .tar.bz ou .tbz nesses arquivos.
-t Lista o conteúdo de um arquivo .tar.
-u Atualiza um arquivo que está dentro de um arquivo .tar por versões
mais recentes (se houver).
-f <nome> Usa o arquivo passado como parâmetro ao invés da entrada ou da
saída padrão.
-h Não copia links simbólicos, mas sim os arquivos por esses apontados.
Comando ’tar’ compactando o diretório ’a’ e colocando o resultado no
arquivo ’dir.tar’:
# tar -cf dir.tar a/
Compactando a mesma pasta ’a’, só que desta vez usando ’gzip’ para
compactar o arquivo, derreferenciando os links simbólicos e
mostrando o processamento na tela:
# tar -cvzhf dir.tar.gz a/
Descompactando o arquivo ’file.tar.bz’, que foi compactado com ’bzip2’
(-j), e mostrando o processamento na tela.
# tar -xvjf file.tar.bz
Figura 4.32: Exemplos de Uso do tar
4.6 COMANDOS PARA GERENCIAMENTO DE PROCESSOS
O processo é uma unidade de execução. Quando um usuário inicia um programa, esse
programa é instanciado em pelo menos um processo. Assim, para cada programa sendo
executado na máquina, haverá um ou mais processos associados. O objetivo desta seção é
90 EDITORA - UFLA/FAEPE - Linux Intermediário
abordar os principais comandos para gerenciamento de processos em Linux. Mais detalhes
sobre processos e gerenciamento de processos podem ser vistos em (SICA; UCHÔA, 2003).
4.6.1 Comandos ps e top
O comando ps um relatório sobre os processos que estão rodando no sistema. Já o
programa top, ilustrado na Figura 4.33 faz o monitoramento constante dos processos. É
análogo dizer que o programa ps tira uma fotografia dos processos no sistema, enquanto
o programa top faz o monitoramento online dos processos. Na Tabela 4.24, são apresen-
tados alguns parâmetros do ps mais usados e na Figura 4.34, alguns exemplos de sua
utilização.
Figura 4.33: Programa top em Execução
O Console Linux 91
Tabela 4.24: Parâmetros do Comando ps
Parâmetro Descrição-A Seleciona todos os processos.
-a Seleciona todos os processos que estão rodando em ter-
minal, exceto os que são “session leaders”.
-p <pid> Seleciona o processo com o PID especificado em <pid>.
-u <uid> Seleciona todos os processos que estão sendo executados
pelo usuário com o user ID especificado por <uid>.
-H Mostra os processos em hierarquia.
-t <term> Seleciona todos os processos que estão rodando no termi-
nal especificado por <term>.
-C <nome-do-comando> Seleciona os processos pelo nome do comando especifi-
cado em <nome-do-comando>.
Mostrando os processos do usuário ’ginux’ de forma hierárquica:
# ps -Hu ginux
Mostrando todos os processos:
# ps -A
Mostrando todos os processos que estão em execução no terminal
’tty0’:
# ps -t tty0
Figura 4.34: Exemplos de Uso do ps
4.6.2 Comandos nice e renice
Os comandos nice e renice estão relacionados com a prioridade dos processos em
relação ao escalonamento de uso do processador, feito pelo sistema operacional. Existe
um atributo de cada processo que se chama cortesia (niceness), um valor que vai de -20
até 19 e que armazena a prioridade do processo. O processo com maior valor de cortesia
tem menor prioridade, pois ele é o mais “educado”, e deixa que os outros usem mais o
processador. Já o processo com menor valor de cortesia tem maior prioridade, pois ele é
muito “mal-educado” e não deixa os outros processos usarem o processador.
O comando nice executa um programa passado como parâmetro com o valor de
cortesia também especificado. A sintaxe do comando nice é:
92 EDITORA - UFLA/FAEPE - Linux Intermediário
nice <valor-de-cortesia> <programa>
Já o renice muda o valor de cortesia de processos que já estão em execução. Os
usuário (exceto o root) só podem mudar o valor de cortesia de processos que eles mesmos
estão executando. Além disso, para esses usuários só é possível aumentar o valor da
cortesia de seus processos e somente na faixa de 0 até 19. O super-usuário (root) pode
mudar o valor de cortesia de qualquer processo, para qualquer valor entre -20 e 19. Os
parâmetros do renice são listados na Tabela 4.25, e na Figura 4.35 são apresentados
alguns exemplos de uso do comando.
Tabela 4.25: Parâmetros do Comando renice
Parâmetro Descrição-p <pid> Recebe o identificador do processo que deve ter sua cor-
tesia alterada. O parâmetro -p pode ser omitido, ficando
subentendido que o valor refere-se ao Process ID que será
alterado.
-g <gid> Altera os valores de cortesia dos processos que estão ro-
dando com o grupo especificado por <gid>.
-u <uid> Altera os valores de cortesia dos processos sendo execu-
tados pelo usuário especificado por <uid>.
Mudando a cortesia dos processos executados pelo usuário
com identificador 50 para 7:
# renice 7 -u 50
Mudando a cortesia do processo 16743 para -8 (somente permitido para
o root):
# renice -8 16743
Figura 4.35: Exemplo de Uso do renice
4.6.3 Comando kill
O programa kill serve para mandar sinais aos processos. Essas mensagens ou
sinais servem para alterar o status dos processos. Os principais sinais estão listados na
Tabela 4.26. É muito comum encontrar o prefixo SIG nos sinais em muitos sistemas (Ex:
KILL � SIGKILL). A sintaxe do kill é simples:
O Console Linux 93
kill -s <signal> <pid>
O parâmetro -s <signal> pode ser suprimido, sendo sinal padrão o sinal TERM. Na
Figura 4.6.3, são apresentados exemplos de uso do comando kill.
Tabela 4.26: Principais Sinais Enviados pelo kill
Sinal DescriçãoQUIT Manda uma mensagem para o processo terminar completamente a
sua execução, sem a intervenção do sistema operacional. O QUIT
gera o dump da memória que estava sendo usada pelo programa.
TERM Faz o mesmo que QUIT, mas com a diferença que não é gerado dump
da memória.
STOP Pára a execução do processo até que ele receba o sinal CONT
CONT Reinicia a execução de um processo parado pelo sinal STOP
KILL Faz com que o sistema operacional finalize um processo. O KILL não
pode ser bloquado nem capturado pelos processos
Parando o processamento do processo 9984:
# kill -s SIGSTOP 9984
Finalizando o processo 1254 com o sinal KILL:
# kill -s SIGKILL 1254
Finalizando o processo 6969 com o sinal TERM, que por ser padrão
não exige o parâmerto ’-s <sinal>’:
# kill 6969
Figura 4.36: Exemplo de Uso do kill
4.7 COMANDOS DIVERSOS DO CONSOLE
4.7.1 Comando exit
Encerra a execução de um shell. Possui como único parâmetro um inteiro indicando o
valor a ser retornado; se omitido, assume o valor de retorno do último comando executado.
A Figura 4.37 mostra exemplos de execução do exit. É utilizado principalmente em shell
scripts.
94 EDITORA - UFLA/FAEPE - Linux Intermediário
Retornando um valor 0 indicando execução bem-sucedida
# exit 0
Retornando um valor de erro
# exit -1
Figura 4.37: Exemplos de Uso do exit
4.7.2 Comando clear
O comando clear limpa a tela de um terminal. Ele verifica o terminal utilizado em
uma variável de ambiente para saber como limpá-lo. Seu uso é ilustrado na Figura 4.38.
Limpando a tela do terminal
# clear
Figura 4.38: Exemplo de Uso do clear
4.7.3 Comando date
Mostra ou ajusta a data do sistema. A Figura 4.39 mostra exemplos de execução do
comando, e a Tabela 4.27 lista seus principais parâmetros. As principais especificações
de formato estão na apresentadas na Tabela 4.28. Uma observação a ser feita é que
configuração de data e hora no sistema deve ser feita com extrema cautela. O motivo é
que vários servidores fazem tarefas periódicas e podem ficar meio “malucos” com uma
atualização desse tipo. Pode acontecer de alguns serviços precisarem ser reiniciados para
voltarem ao comportamento normal. Sempre que possível, recomenda-se a alteração via
BIOS.
Tabela 4.27: Parâmetros do Comando date
Parâmetro Descrição-d Exibe a data passada em seguida em vez da data atual
-R Mostra a descrição da data no formato proposto pela
RFC 822 (CROCKER, 1982)
-s Ajusta a data ou hora para o valor passado em seguida
O Console Linux 95
Tabela 4.28: Especifição de Formatos de Saída do Comando date
Parâmetro Descriçãodate +%a Nome do dia da semana (3 letras)
date +%A Nome do dia da semana (completo)
date +%b Nome do mês (3 letras)
date +%B Nome do mês (completo)
date +%c Mostra uma expressão descrevendo a data e hora atuais
date +%d Dia do mês
date +%D Data (mês/dia/ano)
date +%j Dia corrente no ano (1-366)
date +%m Mês (2 dígitos)
date +%U Numero da semana no ano (0-53)
date +%y Ano (2 dígitos)
Mostra o dia do mês (entre 1 e 356)
# date +\%j
Mostra a data no formato (dd/mm/aa)
# date +\%d/\%m/\%y
Mostra o texto correspondente à data passada
# date -d 8/10/1970
Seg Ago 10 00:00:00 BRT 1981
Alterando a hora do sistema para 21:00:00
(requer privilégios de superusuário)
# date -s 21:00:00
Alterando a data do sistema para 31/12/1999
(requer privilégios de superusuário)
# date -s 12/31/1999
Figura 4.39: Exemplos de Uso do date
4.7.4 Comando who
Mostra informações sobre os usuários que estão usando o sistema. Seus parâmetros
principais são mostrados na Tabela 4.29 e alguns exemplos de execução na Figura 4.40.
96 EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.29: Parâmetros do Comando who
Parâmetro Descrição-b Hora do último boot
-u Lista os usuários que estão usando o sistema
-p Mostra os processos ativos
-r Imprime o nível de execução (runlevel)
-q Nome e número de usuários usando o sistema
Mostra a hora do último boot do usuário atual:
# who -b
Mostra os usuários que estão usando o sistema
nesse momento:
# who -q
Figura 4.40: Exemplos de Uso do who
4.7.5 Comando cal
Exibe o calendário de uma determinada época. Caso não seja passado nenhum mês
ou ano, exibe o calendário do mês atual. O mês deve ser especificado com um valor de 1
a 12, e o ano com um valor de 1 a 9999. A Tabela 4.30 mostra alguns dos parâmetros que
podem ser passados para o cal, enquanto a Figura 4.41 mostra alguns exemplos de sua
utilização.
Tabela 4.30: Parâmetros do Comando cal
Parâmetro Descrição-1 Mostra apenas o mês solicitado (padrão)
-3 Mostra também o mês anterior e posterior ao solicitado
-s Considera domingo como o primeiro dia da semana
-m Considera segunda-feira como primeiro dia da semana
-j Mostra os dias como contínuos no ano (de 1 a 366)
-y Mostra o calendário do ano atual
O Console Linux 97
Mostra o calendário do mês atual
# cal
Mostra o calendário do mês de agosto de 1970, juntamente com
julho e setembro do mesmo ano
# cal 8 1970 -3
Mostra o calendário do ano de 1500 em dias contínuos
# cal 1500 -j
Figura 4.41: Exemplos de Uso do cal
4.7.6 Comando passwd
O programa passwd é usado para alterar a senha de um usuário, que está codificada
no arquivo /etc/shadow. Para este programa não existem opções úteis ao usuário co-
mum, a maioria delas é voltada para o root. A sua utilização é simples: primeiro a senha
atual é solicitada. Depois a nova senha e sua confirmação são solicitadas. Ao término
desse processo, se não ocorrer nenhum erro, como por exemplo: a senha e a confirmação
estarem diferentes ou existir um erro na senha atual, a senha antiga será substituída pela
nova no arquivo /etc/shadow.
4.8 PIPES
Um pipe consiste em encaminhar a saída de um comando para a entrada de outro.
Esse recurso é muito útil quando um programa produz uma saída muito grande, e não é
possível ler todos os resultados. Outro exemplo de aplicação é a busca de um resultado
específico no meio de uma saída também muito grande. O simbolo do pipe é “|”, e podem
ser usados vários pipes seguidos. A Figura 4.42 mostra alguns exemplos de uso de pipes.
4.9 EDITORES DE TEXTO NO TERMINAL
4.9.1 VIM
O VIM – Vi IMproved é um editor de texto compatível com o tradicional VI do UNIX,
apresentando várias características adicionais. Entre estas características, destacam-se o
syntax highlighting para várias linguagens de programação, abertura de múltiplos arquivos,
seleção visual, etc.
98 EDITORA - UFLA/FAEPE - Linux Intermediário
Comando ’ls’ direcionado para o comando ’sort’, ordenando a saída de ls:
# ls -la | sort
Comando ’rpm -qa’ lista todos os programas instalados, direcionado
para ’grep xfce’ que exibe as linhas que contêm a expressão regular
’xfce’ na entrada:
# rpm -qa | grep xfce
Comando ’cat’ lista um arquivo, direcionado para ’more’, que faz a
paginação da saída para ser exibida no terminal:
# cat qualquerarquivo.txt | more
Figura 4.42: Exemplos de Uso de Pipes
É um dos editores preferidos por vários programadores em todo o mundo. Por outro
lado, existem muitos que o consideram complexo para um usuário iniciante, pois seus co-
mandos são algumas vezes enigmáticos. Existe uma versão gráfica do editor, que o torna
mais agradável para uso, mantendo as mesmas características do programa em linha de
comando. As Figuras 4.43 e 4.44 ilustram o editor. Cabe ressaltar que é um dos poucos edi-
tores que podem ser facilmente usados em sistemas embarcados que rodam Linux, como
roteadores e outros equipamentos.
Figura 4.43: Editor de Textos VIM
O Console Linux 99
Figura 4.44: Editor de Textos VIM – Versão Gráfica
4.9.2 JOE
O JOE (Joe’s Own Editor) é um poderoso editor de textos para terminais e consoles.
Uma de suas características marcantes é que ele permite a emulação de outros editores,
como WordStar, PICO e GNU Emacs, através da edição de seus arquivos de configuração,
podendo ser facilmente utilizado por quem já tenha trabalhado com esses editores. Com
relação aos recursos de edição, o JOE oferece tudo aquilo que se espera de um editor de
textos, como movimentação de blocos de texto, recursos de desfazer/refazer, e outros. A
Figura 4.45 mostra a edição de um arquivo no JOE. A imagem mostra na parte superior
alguns dos comandos do editor, exibidos ao se invocar a ajuda do programa, e na parte
inferior o arquivo de configuração /etc/joe/joerc.
4.9.3 Pico
A Figura 4.46 mostra o Pico, um editor de texto simples para terminal, parte integrante
do leitor de e-mail e news Pine (Seção 4.10.1) e remete a Pine Composer. Possui recur-
sos básicos como movimentação de blocos de texto através de comandos como recortar e
colar, e outros como justificação de parágrafos e busca em texto. Inclui suporte para verifi-
cação ortográfica, destacando palavras grafadas incorretamente no texto, e um navegador
de arquivos que permite procurar na árvore de diretórios o nome do arquivo ao abrir/salvar
um documento.
100 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 4.45: Editor de Textos JOE
Figura 4.46: Editor de Textos Pico
O Console Linux 101
4.9.4 GNU nano
O GNU nano (Nano’s ANOther editor ou Not ANOther editor) é um clone do Pico
(Seção 4.9.3), apontado como um substituto free para o mesmo. Ele não copia apenas o
comportamento e aparência do Pico, mas oferece outras características não implementadas
(ou desabilitadas) no mesmo. Entre essas características, podem ser listadas a “busca e
substituição”, “ir para a linha número” e “syntax highlighting”. A Figura 4.47 ilustra a edição
de um arquivo LATEX usando o GNU nano.
Figura 4.47: Editor de Textos GNU nano
4.10 APLICATIVOS DIVERSOS EM MODO TERMINAL
4.10.1 Pine
Pine (Program for Internet News and Email) é um cliente de e-mail bastante com-
pleto, desenvolvido pela University of Washington. Em sua configuração padrão, possui
um conjunto limitado de funcionalidades, visando facilitar o aprendizado do usuário novato,
mas possui uma extensa lista de recursos adicionais para o usuário mais experiente. Uti-
liza como compositor de mensagens o editor Pico, e, apesar de permitir a visualização
apenas de mensagens no formato texto, inclui suporte a MIME (Multipurpose Internet Mail
Extensions), um padrão da internet para representar dados de multimídia em um e-mail.
Com isso, permite que qualquer tipo de arquivo de multimídia possa ser anexado utilizando
102 EDITORA - UFLA/FAEPE - Linux Intermediário
as regras de codificação MIME e posteriormente salvo em arquivos ou visualizado atra-
vés de aplicações específicas configuradas para abrir esse tipo de objeto. Dentre suas
desvantagens está o fato de não possuir o código completamente livre, as alterações são
permitidas através da aplicação de patches ao código-fonte, que não pode ser alterado.
Através do menu de configurações é possível a personalização de cores, criação de
filtros, listas de e-mail, livro de endereços e assinatura, dentre outros itens. Pine possui
um recurso de configuração remota, que permite que ele transfira informações de configu-
ração para o servidor IMAP, permitindo que modificações feitas em um computador sejam
acessíveis ao Pine a partir de qualquer computador. A Figura 4.48 mostra sua tela inicial.
Figura 4.48: Cliente de E-mail Pine
4.10.2 Lynx
O Lynx é um navegador Web para dispositivos de caracteres, como terminais. Ele
acessa páginas HTML locais e arquivos remotos usando HTTP, FTP, Gopher, entre outros.
Uma grande vantagem do Lynx sobre os outros navegadores é a velocidade e a disponibili-
dade, seja em modo texto ou em modo gráfico. Sua utilização é bem simples e a interface
é bem explicativa. Como pode ser visto na Figura 4.49, ele é compatível com terminais
coloridos.
O Console Linux 103
Figura 4.49: Navegador Web Lynx
4.10.3 Links
O Links é mais uma alternativa em modo texto para os navegadores Web. Possui uma
vantagem sobre o Lynx que é o suporte ao uso do mouse, o que facilita a navegação em
uma página com muitos links. Possui suporte aos protocolos FTP e HTTP, e, embora não
reconheça todos os comandos do HTML 4.0, é capaz de representar tabelas e frames. O
Links inclui suporte a cores, e pode ser configurado para carregar aplicativos visualizadores
de imagens. A Figura 4.50 mostra sua execução.
4.10.4 Mutt
Mutt é mais um cliente de e-mail para dispositivos de caracteres (terminais e consoles).
Assim como o Pine, também inclui suporte a MIME, o que permite a transmissão de diversos
tipos de arquivo. Mutt inclui suporte a cores e permite a exibição de mensagens em threads.
A Figura 4.51 mostra uma sessão do Mutt em execução.
4.11 OUTROS APLICATIVOS EM MODO TEXTO
Além dos comandos aqui apresentados, vários outros são disponíveis em Linux. Em
especial, duas categorias merecem destaque: os servidores e as linguagens de programa-
ção. Várias das tarefas realizadas no Linux são feitas via servidores (como, por exemplo, a
104 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 4.50: Navegador Web Links
Figura 4.51: Cliente de E-mail Mutt
interface gráfica e os serviços de impressão). Isso para não mencionar os diversos servido-
res de serviços de rede existentes (e-mail, WWW, FTP, IRC, etc.). Vários desses servidores
são apresentados e discutidos em (SICA; UCHÔA, 2003) e (UCHÔA; SIMEONE; SICA, 2003).
O Console Linux 105
Por padrão, o Linux inclui uma série de linguagens de programação que podem ser
utilizadas de acordo com as necessidades do usuário. Dentre elas, podemos destacar lin-
guagens como Fortran, C, C++, Python, Perl, e várias outras menos conhecidas. Muitas
das ferramentas disponíveis em Linux estão escritas nas linguagens acima. Isso faz com
que a maioria seja automaticamente instalada para que tais ferramentas funcionem ade-
quadamente.
O conjunto de ferramentas que acompanha essas linguagens também merece se lem-
brado, em especial merece destaque as ferramentas que acompanham o GCC (GNU Com-
piler Collection), utilizado para compilação de programas em C/C+. Além de ser portado
para várias plataformas, o conjunto vem crescendo, como pode ser observado com o sur-
gimento do gcj, que visa tornar-se um compilador real para a linguagem Java, ou seja,
gerar o código executável para a máquina no lugar do bytecode para a máquina virtual Java
(JVM).
106 EDITORA - UFLA/FAEPE - Linux Intermediário
5OBTENDO AJUDA
Durante o uso do Linux, é comum se deparar com dúvidas com relações a comandos,
configuração e instalação de software e dispositivos de hardware, problemas com hardware,
e várias outras questões gerais. Dúvidas são comuns durante o uso do Linux e existem
várias maneiras de se obter ajuda e encontrar a resposta para algum problema. O Linux é
um sistema bem documentado, provavelmente tudo o que se imagimar fazer ou aprender já
esta disponível para leitura e aprendizado.
Praticamente todas as dúvidas que um usuário comum pode ter já foram dúvidas de
outras pessoas, que solucionaram o problema e documentaram sua solução, a fim de ajudar
outros usuários que se depararem com o mesmo problema. Dessa maneira, existem várias
formas possíveis de se obter ajuda para um determinado problema, ou dúvida referente ao
Linux. As principais maneiras serão apresentadas a seguir.
5.1 PÁGINAS MAN
Praticamente todos os programas do Linux vêm acompanhados de páginas de ma-
nual, que trazem uma descrição do funcionamento do programa e de seus parâmetros de
linha de comando. Essas páginas podem ser acessadas através do comando man, que
possui a seguinte sintaxe:
man [secao] nome
onde secao é a parte do manual onde se encontra a página e nome é o nome do comando,
função ou arquivo sobre o qual se quer obter informações
O argumento seção é opcional; se especificado, man olha apenas nessa seção do
manual, caso contrário, o man irá olhar a primeira página de manual com aquela informação
(em geral, a seção 1). Se o nome contiver uma barra (’/’), man interpreta como o nome de
um arquivo.
A Figura 5.1 mostra exemplos de chamadas ao comando man, e a Tabela 5.1 mostra
os principais comandos utilizados para navegação. Assim como para os demais comandos,
108 EDITORA - UFLA/FAEPE - Linux Intermediário
há uma página de manual para o comando man, que fornece maiores informações sobre
seu funcionamento. A Figura 5.2 mostra o resultado da execução do comando man man.
Tabela 5.1: Comandos para Navegação em Páginas man
Tecla(s) AçãoENTER Próxima linha
ESPAÇO Próxima página
Ctrl-B Página anterior
/expressao Busca ’expressao’ no texto
n Continuar a busca
q Sai da página
Mostra a página de manual do comando vi
# man vi
Busca todas as páginas de manual que contêm a palavra ’emacs’
(também poderia ser usado o comando "apropos" para isso)
# man -K emacs
Mostra a página de manual do arquivo de configuração do man.config,
presente na seção 5 do manual
# man 5 man.config
Figura 5.1: Exemplos de Uso do man
5.2 INFOS
Um outro recurso idêntico às páginas de manual são as páginas info, que possuem
o recurso adicional de permitir navegação entre as páginas. Semelhante às páginas de
manual, as páginas info são úteis quando sabemos o nome do comando e queremos saber
para o que ele serve. Também traz explicações detalhadas sobre uso, opções e comandos.
Para usar as páginas info é usado o comando:
info [nome]
onde nome é o nome do comando ou programa sobre o qual se deseja obter ajuda.
Se o parâmetro nome for omitido, o comando info mostra a lista de todas as páginas
info disponíveis. A navegação em páginas info é feita através de nomes marcados com
Obtendo Ajuda 109
Figura 5.2: Manual do Programa man
um * (hipertextos) que se pressionarmos <Enter>, levam até a seção correspondente. O
comando info possui algumas teclas de navegação úteis, as principais delas e suas ações
são listadas na Tabela 5.2. A Figura 5.3 mostra a execução do comando info info.
Tabela 5.2: Comandos para Navegação em Páginas info
Tecla(s) AçãoENTER Entra em um hipertexto
ESPAÇO Próxima página
Ctrl-B Página anterior
/expressao Busca ’expressao’ no texto
n Continuar a busca
q Sai da página
110 EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 5.3: Página Info do Programa info
5.3 AJUDA POR LINHA DE COMANDO
Quando não se precisa dos detalhes das páginas de manual, muitas vezes é possível
obter auxílio direto e rápido do próprio comando/programa. Quase todos os comandos e
programas do Linux oferecem este recurso, que é extremamente útil para consultas rápidas
Esse tipo de recurso é usado, por exemplo, quando se sabe o nome do programa mas
deseja saber quais são as opções disponíveis e para o que cada uma serve. Para acessar
essa ajuda, basta digitar:
comando --help
onde comando é o comando/programa que desejamos ter uma explicação rápida. Observe
que esse tipo de ajuda não é disponível para todos os comandos e programas, sendo que
alguns comandos embutidos da shell, como cd, tt pwd não disponibilizam esse tipo de
auxílio. A Figura 5.4 mostra um exemplo de busca desse auxílio para o comando rm, via
execução de rm --help.
5.4 DOCUMENTAÇÃO ON-LINE
A internet é também uma grande fonte de informações sobre o Linux, se não a prin-
cipal. É possível encontrar vários sites fornecendo informações úteis sobre assuntos di-
Obtendo Ajuda 111
# rm --help
Uso: rm [OPÇÃO]... ARQUIVO...
Remove (unlink) the FILE(s).
-d, --directory unlink directory, even if non-empty (super-user only)
-f, --force ignore nonexistent files, never prompt
-i, --interactive prompt before any removal
-r, -R, --recursive remove the contents of directories recursively
-v, --verbose explain what is being done
--help display this help and exit
--version output version information and exit
To remove a file whose name starts with a ‘-’, for example ‘-foo’,
use one of these commands:
rm -- -foo
rm ./-foo
Note that if you use rm to remove a file, it is usually possible to recover
the contents of that file. If you want more assurance that the contents are
truly unrecoverable, consider using shred.
Avisar [email protected] em caso de bugs.
Figura 5.4: Obtendo Ajuda por Linha de Comando
versos, como http://www.linux.org, http://www.linuxfocus.org/ e http://
www.linuxjournal.com/, e também um número considerável de listas de e-mail sobre
esse sistema. Alguns mecanismos de obtenção de ajuda na internet são apresentados a
seguir.
5.4.1 Grupos de discussão da Usenet
A Usenet é um conjunto de grupos de discussão (chamadas de newgroups) disponí-
veis aos usuários da internet. Há vários grupos de discussão fornecendo informações úteis
e respostas a problemas sobre o Linux. Pode-se acessar esses grupos de discussão a par-
tir de programas específicos que permitem esse tipo de leitura. A Tabela 5.3 mostra alguns
dos principais grupos de discussão da Usenet e os temas abordados em cada um deles.
O tráfego na maioria dessas listas de discussão do Linux lidam com problemas que
as pessoas encontram ao instalar, configurar, administrar ou utilizar o sistema operacional.
Várias informações úteis são transmitidas pelas listas rapidamente; as mais importantes
delas em geral são armazenadas em arquivos para download em sites específicos de FTP.
112 EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 5.3: Grupos de Discussão e Assuntos Abordados
Lista Assunto
comp.os.linux.announce Anúncios importantes para a comunidade Linux
comp.os.linux.answers Perguntas e respostas a problemas com Linux
comp.os.linux.development.apps Desenvolvimento de aplicações para Linux
comp.os.linux.development.system Assuntos relacionados ao desenvolvimento do Linux
comp.os.linux.hardware Suporte a hardware no Linux
comp.os.linux.x Assuntos específicos do X Window
comp.os.linux.misc Outros assuntos não cobertos em outras listas
comp.os.linux.networking Assuntos relacionados a redes
comp.os.linux.setup Problemas de instalação e configuração do Linux
5.4.2 Listas de Discussão
Listas de discussão são conjuntos de endereços de e-mail de pessoas interessadas
em deteminados assuntos. Existem várias listas de discussão que abordam assuntos refe-
rentes ao Linux, dentre as quais merecem destaque:
[email protected]: Lista criada e mantida no DCC/UFLA pela equipe técnica do
ARL. É uma lista voltada principalmente ao uso de Linux no meio acadêmico. Pos-
sui informações sobre documentação, projetos, novidades e mais. O usuário pode
se inscrever enviando e-mail para [email protected] com o texto
subscribe ginux-l no corpo (body) ou no assunto (subject) da mensagem.
[email protected]: Essa não é necessariamente uma lista de discussão, uma vez
que não se pode enviar perguntas, mas sim uma lista de informação, onde é enviada
uma mensagem por dia contendo informações úteis para usuários Linux. O usuário
pode se inscrever no endereço http://www.dicas-l.unicamp.br/, onde tam-
bém podem ser lidas as dicas enviadas em dias anteriores.
[email protected]: Essa é uma lista que aborda diversos temas ligados ao
Linux. É mantida pela Conectiva, apesar de não se restringir a essa distribuição. É
uma lista formada por usuários de diversos níveis (iniciantes, intermediários e avan-
çados) e com um grande volume de tráfego de mensagens. Recomenda-se, por esse
motivo, que o interessado nessa lista use uma conta gratuita de Webmail (como Yahoo,
IG ou Hotmail) para receber as mensagens dessa lista. O usuário pode se inscrever
no endereço http://linux-br.conectiva.com.br/.
Obtendo Ajuda 113
[email protected]: essa é uma lista, fundada em 1993 e criada origi-
nalmente na Unicamp, de usuários brasileiros de GNU/Linux. Atualmente no CIPSGA1,
é uma lista que destina-se a usuários intermediários do sistema, uma vez que a lista
é moderada. Dessa maneira, mensagens com questões excessivamente simples ou
respondidas em FAQs não são repassadas à lista. Pelo seu nível, é uma ótima lista
para administradores de sistemas baseados em Linux. O usuário pode se inscrever
no endereço http://listas.cipsga.org.br/, onde também são disponibiliza-
das várias outras listas ligadas ao Linux.
Além dessas, as distribuições também costumam manter listas para seus usuários. A
Debian e a Red Hat, por exemplo, possuem uma série de listas de discussão voltadas para
os mais diferentes assuntos, como segurança, documentação, desenvolvimento de novos
programas e vários outros assuntos em geral. Isso permite aos participantes receberem
apenas mensagens relacionadas ao tópico que os interessa.
5.4.3 O LDP
A medida que o Linux foi sendo desenvolvido, vários programadores começaram a
escrever como contribuição breves guias para suas aplicações, bem como para áreas mais
amplas do sistema operacional, fornecendo a outros usuários informações para continua-
rem a usar o sistema. Em um curto período de tempo, a documentação do Linux começou
a crescer rapidamente, tornando necessária a criação de uma organização para contro-
lar sua criação, evitando duplicações desnecessárias de documentos. Surgia então o Li-
nux Documentation Project (LDP), ou Projeto de Documentação do Linux, disponível em
http://www.tldp.org/. Desde então, o projeto têm se expandido rapidamente, pos-
suindo hoje excelentes documentos cobrindo os mais diversos assuntos, como kernel do
Linux, utilização de câmeras digitais e comunicação wireless, instalação e configuração de
servidores e muito mais.
Assim com quase tudo relacionado ao Linux, o LDP é formado por um conjunto de
voluntários de vários lugares do mundo: são escritores, revisores e editores que trabalham
juntos para fornecer uma documentação completa para o Linux. Desenvolvedores de apli-
cações que fornecem arquivos de ajuda em seus programas freqüentemente enviam sua
documentação para o LDP. Cada vez mais novos usuários estão solucionando problemas e
documentando seus esforços para ajudar outros na comunidade.
A documentação fornecida pelo LDP é feita de diversas formas, seja através de um
guia, uma página de manual, um HOWTO ou um FAQ. Juntos eles formam um grande
volume de documentos que cobrem praticamente todos os aspectos do Linux. Um guia
é um livro eletrônico com uma cobertura mais ampla sobre um determinado assunto. O
1http://www.cipsga.org.br/
114 EDITORA - UFLA/FAEPE - Linux Intermediário
objetivo do guia é fornecer uma compreensão sobre todo um assunto, em vez de cobrir
apenas uma determinada tarefa.
Os HOWTOs são pequenos guias que descrevem passo a passo como realizar uma
tarefa específica. Um HOWTO é um documento criado por alguém que passou por um
determinado problema e resolveu documentar a solução, a fim de auxiliar outros usuários
que possam estar na mesma situação. Um exemplo desse tipo de documento é o DOS-
Win-to-Linux-HOWTO (GONZATO, 2000), que ajuda ex-usuários do DOS e do Windows na
migração para o Linux.
As Páginas de manual, acessadas pelo comando man, são a forma padrão de se ob-
ter ajuda em muitas aplicações e utilitários no Linux e foram abordadas na Seção 5.1. Já
as FAQs (Frequently Asked Questions) são listas de respostas a questões que ocorrem fre-
quentemente, geralmente disponível em listas de e-mail a fim de evitar questões repetitivas
por parte de novos usuários.
Além de disponibilizar essas informações para os usuários, o projeto também esti-
mula as pessoas a participarem como voluntárias, seja coordenando um desenvolvimento
ou traduzindo documentos já existentes, com o intuito único de aprimorar a documenta-
ção do Linux. A maioria da documentação encontra-se em língua inglesa, mas existem
vários documentos traduzidos. Os documentos traduzidos para o português encontram-se
disponíveis em http://br.tldp.org/.
5.4.4 O Rau-Tu da Unicamp
Um projeto muito interessante é o sistema Rau-Tu de Perguntas e Respostas. O nome
Rau-Tu é uma brincadeira com a pronúncia de HOWTO. Esse projeto consiste de um fórum,
onde os participantes são avaliados de acordo com sua colaboração na discussão.
O sistema Rau-Tu pode ser aplicado a qualquer tema e qualquer site, uma vez que é
um projeto de código aberto (assim, o administrador pode criar um fórum em seu próprio
site. O programa pode ser baixado em http://www.rau-tu.unicamp.br/. Em http:
//www.rau-tu.unicamp.br/linux, o usuário Linux pode encontra vários fóruns sobre
inúmeros temas ligados ao Linux, como hardware, jogos e kernel.
6INSTALAÇÃO DE APLICATIVOS
6.1 CONCEITOS BÁSICOS
Como visto no Capítulo 2, existem diversas distribuições Linux disponíveis, mas sua
maioria pertence a três eixos principais, dos quais derivam: Red Hat, Slackware e Debian.
Pelo grande número de distribuições derivadas e a grande disponibilidade de pacotes na
internet, este capítulo tratará do gerenciamento de pacotes RPM,usados nas derivações do
Red Hat, que são as mais utilizadas. Entretanto, os conceitos aqui apresentados podem
ser facilmente adaptados para outras distribuições. Futuras versões deste material poderão
abordar também o formato de pacotes DEB.
O formato RPM – RPM Package Manager – oferece meios para distribuir software
no formato binário (pré-compilado) ou source (código-fonte) pronto para ser compilado na
máquina onde se deseja instalar o programa. Um pacote é composto pelo aplicativo (compi-
lado ou não) compactado, mais uma série de metadados que compõem o cabeçalho. Esse
cabeçalho provê um conjunto de informações que passam a integrar a base de dados dos
pacotes instalados e permite a execução de diversas consultas à mesma.
A vantagem da disponibilização dos dois tipos de pacotes é muito clara. No caso dos
pacotes binários, um usuário iniciante não tem que preocupar-se com os detalhes de com-
pilação e configuração geral do programa. O mesmo costuma vir com a maioria de suas
características habilitadas e uma configuração básica que requeira o menor número de mo-
dificações possíveis. Por outro lado, o pacote com o código-fonte permite que um programa
possa ser instalado em uma plataforma ou distribuição para a qual ainda não exista pacotes
binários. Além disso, o processo de compilação costuma requerer não mais que um único
comando. Também merece ser destacada a preferência de alguns administradores de sis-
tema, que costumam recompilar o pacote para aumentar a performance do programa para
uma máquina específica.
Outro detalhe importante dos pacotes que não se pode deixar de lado é o conceito
de dependências. É prática comum em sistemas operacionais não derivados do UNIX o
empacotamento do programa, bibliotecas e arquivos necessários para sua execução em
um sistema de instalação. Esse instalador não tem nenhum controle de versões dos com-
116 EDITORA - UFLA/FAEPE - Linux Intermediário
ponentes que já se encontram ou serão instalados, permitindo que ocorra a sobreposição
de arquivos essenciais por versões mais antigas, fazendo com que vários programas ou até
mesmo o sistema operacional apresente instabilidades. Os pacotes evitam isso, usando um
sistema de dependências: ao invés de incluir as bibliotecas, o pacote informa que precisa
delas (disponibilizadas em outros pacotes) para sua instalação.
Além disso, os pacotes tendem a tornar-se menores, uma vez que só contêm a apli-
cação. Caso fossem adicionadas todas as bibliotecas necessárias em cada pacote, a re-
dundância seria tanta que o número médio de CDs usados para distribuí-los seria muito
maior que a atual, ou o tempo gasto para download de pacotes na internet seria muito
maior e traria maiores custos para o usuário. A remoção de programas sem o conceito de
dependências também é ineficiente, pois costumam sobrar arquivos órfãos, abandonados
por algum programa que julgou que esses arquivos (especialmente bibliotecas) poderia ser
parte de outro programa instalado.
Essa situação já vem mudando, mas no gerenciamento de pacotes RPM e DEB atin-
giu um grau de maturidade ímpar. Um desenvolvedor preocupa-se em criar um pacote com
sua aplicação e o próprio processo de empacotamento verifica quais bibliotecas e quais
suas versões são necessárias e cria um registro de dependências. Para instalar o pacote,
essas dependências devem ser sanadas, através da instalação do pacote que contém es-
ses arquivos requeridos. Dessa forma, tem-se vários pacotes com programas, outros com
bibliotecas, outros com utilitários, etc.
Além disso, não é possível, por meios normais, instalar um pacote com uma versão
anterior a uma que já se encontre instalada, impedindo sua sobreposição. Além disso,
a remoção de um pacote é completa, caso nenhum outro dependa dele. Não é possível
remover um pacote requerido por outro, a não ser que os outros pacotes também sejam
removidos. Detalhes sobre a criação de pacotes RPM e informações adicionais podem ser
encontrados em (SCHNEIDER, 2002), (BARNES, 1999) e (BAILEY, 1998).
Quanto à nomenclatura dos pacotes, adota-se uma convenção que facilmente iden-
tifica o nome, versão e arquitetura alvo do pacote. Normalmente, os nomes de pacotes
são formados por seu nome, seguido por um hífen, versão, opcionalmente seguida por
um hífen e a release, acompanhada por um ponto e a arquitetura alvo, mais o tradicional
.rpm. Assim, no pacote xemacs-info-21.4.6-9.i386.rpm pode ser decomposto da
seguinte forma:
xemacs-info é o nome do pacote, que é usado em todas as operações posteriores à ins-
talação;
21.4.6 é a versão do programa, normalmente alterada a cada alteração feita no código-
fonte;
Instalação de Aplicativos 117
9 é a release do pacote, normalmente alterado quando a mesma versão do programa é
reempacotado por qualquer motivo (como a falta de um arquivo no pacote, por exem-
plo);
i386 identifica a arquitetura alvo do pacote, assumindo vários valores, como:
� i386 para máquinas compatíveis com o Intel R�
386 e posteriores, até os proces-
sadores mais recentes;
� i586 para máquinas a partir da linha Pentium R�
e compatíveis;
� i686 para máquinas a partir do Pentium R�
II;
� athlon para processadores AMD R�
;
� alpha para máquinas RISC com processador Alpha R�
(inicialmente, produzidas
pela Digital, mas foi descontinuada após a aquisição pela Compaq);
� noarch para pacotes que não dependem de qualquer arquitetura, como progra-
mas desenvolvidos em Python, Java ou PHP, etc., que são interpretadas ou pos-
suem uma máquina virtual independente da arquitetura;
� src para identificar pacotes que não foram compilados para uma arquitetura es-
pecífica, contendo apenas o código-fonte da aplicação;
� outras arquitetura foram omitidas deste texto, o objetivo é meramente ilustrar as
mais comuns.
A partir da próxima seção, será abordado o uso do comando rpm. O objetivo deste
texto não é apresentar todas as funcionalidades do mesmo, pois existem referências com-
pletas sobre seu uso, como (SCHNEIDER, 2002), (BARNES, 1999) e (BAILEY, 1998), e a
própria man page do programa. A Tabela 6.1 será usada como referência rápida para as
opções descritas no texto, mas é extremamente recomendável a leitura da man page para
uma maior familiarização.
6.2 INSTALANDO PACOTES
A instalação de pacotes é um processo simples. Trata-se de um procedimento exe-
cutado pouco freqüentemente entre as tarefas normais de um administrador de sistemas
Linux, pois a maioria dos pacotes é instalada na configuração inicial (instalação) do sis-
tema. Após essa instalação, normalmente, o gerenciamento de pacotes situa-se entre a
remoção e atualização desses pacotes.
118 EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 6.1: Parâmetros do Comando rpm
Parâmetro Descrição
-?, --help Imprime um resumo das instruções de uso e termina a execução.
--version Imprime uma mensagem com a versão do rpm em uso e termina a execução.
-v Imprime mais informações sobre a ação sendo executada, normalmente,
mensagens de progresso da operação.
-i, --install Instala um novo pacote
-U, --upgrade Atualiza um pacote instalado para uma nova versão, ou instala o pacote,
caso não tenha sido instalado ainda.
-F, --freshen Atualiza um pacote instalado, se e somente se existir uma versão anterior
do pacote já instalada no sistema.
-h, --hash Usado com um parâmetro de instalação (-i ou -U) e, opcionalmente, com a
opção -v, imprime 50 caracteres # (hash, cerquilha, sustenido ou “jogo da
velha”) para indicar o percentual de instalação já concluído.
--force Força a instalação do pacote, mesmo que ele seja de uma versão anterior à
existente, possua arquivos que pertençam a outro pacote instalado ou que o
mesmo pacote já esteja instalado. Essa opção deve ser usada com extrema
cautela!
--nodeps Ignorar a verificação de dependências antes de instalar ou atualizar o pa-
cote. Também pode ser usado com -e, durante a remoção de um pa-
cote. Essa opção deve ser usada com muito cuidado, para evitar o mal-
funcionamento de muitos programas.
-q, --query Executa uma consulta de acordo com os parâmetros de consulta que o se-
guem na linha de comando.
-a, --all Consulta todos os pacotes instalados.
-f, --file Consulta qual o pacote instalou o arquivo especificado.
-p, --package Consulta um arquivo de pacote em vez da base de dados do sistema. Pode-
se especificar um pacote local ou até mesmo disponível na internet, via pro-
tocolos HTTP ou FTP.
--filesbypkg Lista todos os arquivos de cada pacote especificado.
-i, --info Mostra informações do cabeçalho do pacote, como nome, descrição, versão,
etc.
-l, --list Lista os arquivos do pacote. A saída difere ligeiramente da opção
--filesbypkg.
--provides Lista as capacidades oferecidas pelo pacote especificado.
-R, --requires Lista os pacotes ou capacidades dos quais o pacote especificado possui
dependência.
-e, --erase Remove (desinstala) um pacote do sistema.
Instalação de Aplicativos 119
Entretanto, conforme a demanda dos usuários ou das tarefas de administração, alguns
pacotes precisam ser instalados para adicionar um novo programa requerido por um usuário
ou simplesmente para teste em uma máquina separada. Aliás, esta é uma política extrema-
mente recomendável, pois é importante testar o programa e verificar características como
segurança, usabilidade, dependências, etc., antes de ser adicionado a todo o conjunto de
computadores do local. Para adicionar um ou mais pacotes, a sintaxe é a seguinte:
# rpm -i pacote1.rpm [pacote2.rpm pacote3.rpm .... pacoten.rpm]
Observe que podem ser especificados mais de um pacote na linha de comando. Isso
é útil quando deseja-se instalar vários pacotes de uma vez, quer exista dependência entre
eles ou não, ou quando há um ciclo nas dependências. Por ciclo, entende-se o caso em que
o pacote A-3.1.0.i386.rpm depende do pacote B-2.1.5.i386.rpm (ambos são pacotes hipo-
téticos usados neste texto) para ser instalado, e vice-versa. Nesse caso, por vias normais,
é impossível proceder com a instalação individual. Especificando os dois pacotes em uma
única linha de comando elimina esse problema:
# rpm -i A-3.1.0.i386.rpm B-2.1.5.i386.rpm
Outro detalhe que deve ser ressaltado é que, caso sejam especificados vários pacotes
na linha de comando, o rpm vai analisar suas dependências e reordená-los para que as
dependências sejam instaladas primeiro. Entretanto, o uso do rpm na forma acima não
oferece ao usuário um meio claro para compreender o andamento da operação. Isto é,
após confirmar o comando, nenhuma mensagem é exibida e o prompt retorna quando o
último pacote for instalado. Para que seja exibido um indicador de progresso, é comum
adicionar os parâmetros -v e -h à lista de opções:
# rpm -ivh A-3.1.0.i386.rpm B-2.1.5.i386.rpm
A preparar... ################################################# [100%]
1: A ################################################# [ 50%]
2: B ######################### (25%)
Como pode ser visto, para cada pacote será exibido um contador de progresso, indi-
cando entre parênteses o percentual do pacote já instalado. Quando a instalação do pacote
é concluída, é exibido o percentual total dos pacotes sendo instalados, entre colchetes. Em
seguida, repete-se todo o processo para o próximo pacote, até que todos sejam instalados
com sucesso. No processo de preparação são verificadas as dependências e os pacotes
são reordenados para instalação.
Caso algum pacote não tenha alguma dependência satisfeita, será exibida uma men-
sagem de erro e a operação será cancelada:
120 EDITORA - UFLA/FAEPE - Linux Intermediário
# rpm -ivh A-3.1.0.i386.rpm
A preparar... ################################################# [100%]
erro: dependências falhadas:
B >= 2.1.5 é necessário pelo A-3.1.0
Nesse caso, pode-se inserir as opçoes --nodeps e --force para prosseguir com a
instalação, mas deve-se evitar essa medida drástica. A melhor alternativa é sanar as depen-
dências e tentar instalar os pacotes novamente. Dessa forma, evita-se que a dependência
mal-resolvida cause problemas na execução do programa.
Uma outra situação é tentar instalar um pacote que já esteja instalado no sistema.
Como dito anteriormente, o rpm vai permitir apenas a atualização para uma versão mais
nova do pacote. Isso pode ser alterado com a opção --force, que deve ser usada com
extrema cautela. Supondo que o pacote A-3.1.0.i386.rpm já esteja instalado, o comando
deve agir da seguinte forma:
# rpm -ivh A-3.1.0.i386.rpm
A preparar... ################################################# [100%]
o pacote A-3.1.0 já está instalado
6.3 REMOVENDO PACOTES INDESEJADOS
A remoção de pacotes não exige muitas palavras. Existem alguns parâmetros opcio-
nais para a remoção, mas raramente são usados e é mais prático consultar o manual do
rpm. Para remover um pacote, é necessário que nenhum outro dependa dele (não se deve
usar o parâmetro --nodeps para forçar a remoção, sob risco de mal-funcionamento de ou-
tros programas). Assim como a instalação, pode-se especificar vários pacotes para serem
removidos, como forma de satisfazer as dependências.
Ao contrário, da instalação, não é necessário passar o nome completo do arquivo do
pacote, basta informar seu nome. Além disso, é comum passar o parâmetro -v para obter
maiores informações em mensagens de erro e o parâmetro -h não é aceito para mostrar
um indicador de progresso. Normalmente, nenhuma mensagem adicional é exibida quando
a remoção é concluída com sucesso:
# rpm -ev A
erro: a remoção destes pacotes irá quebrar as dependências:
A é necessário pelo B
# rpm -ev A B
#
Instalação de Aplicativos 121
Ao tentar remover um pacote que não esteja instalado, o rpm deve notificar o usuário:
# rpm -ev C
erro: o pacote C não está instalado
6.4 ATUALIZANDO PACOTES INSTALADOS
Existem duas formas para atualizar um pacote: usando a opção -U ou a opção -F. O
funcionamento de ambas é praticamente idêntico, pois vão instalar a versão mais recente de
um dado pacote. Entretanto, a forma como lidam com os pacotes que não estão instalados
é diferente. A opção -U atualiza os pacotes instalados, caso exista uma versão mais recente
dos mesmos, e instala pacotes novos (isso faz com que grande parte dos administradores
usem com mais freqüência esta opção em lugar da “-i”.
Por outro lado, a opção -F apenas atualiza os pacotes já instalados, mesmo que sejam
passados pacotes novos para o comando. Esse comportamento da opção -F o torna muito
atrativo para atualizações gerais do sistema. Normalmente, os administradores agendam o
download de todos os pacotes de atualização ou correção disponibilizados no site de sua
distribuição. Entretanto, nem todos estão instalados no sistema. Assim, o uso da opção -F
vai garantir que todos os pacotes que possuam uma nova versão sejam atualizados, sem
adicionar nenhum outro pacote indesejável.
As duas opções de atualização podem ser usadas da mesma forma que a opção de
instalação (-i), incluindo as opções de indicação de progresso (-v e -h).
6.5 CONSULTAS BÁSICAS AOS PACOTES
Uma das características mais importantes do formato RPM é a poderosa base de da-
dos que é montada com os pacotes instalados. Isso permite uma ampla gama de consultas
sobre o estado atual do sistema. Ao contrário dos processos que envolvem instalação,
atualização ou remoção de pacotes, que só podem ser executadas pelo usuário root, as
consultas são permitidas para qualquer usuário do sistema.
Para executar uma consulta, adiciona-se o parâmetro -q à linha de comando, seguido
por opções de seleção de pacotes a serem consultados e o tipo de consulta a ser feito.
O objetivo desta seção é ilustrar as consultas mais utilizadas, mas certamente existe um
número bem maior de possibilidades.
Outro detalhe importante é que os exemplos deste capítulo mostram as opções isola-
damente, para fins didáticos. Isso não significa que consultas mais complexas, combinando
vários parâmetros não possam ser realizadas. Entrantanto, essas consultas começam a
122 EDITORA - UFLA/FAEPE - Linux Intermediário
fazer sentido à medida que o usuário avança no gerenciamento de pacotes e começa a
sentir sua necessidade.
6.5.1 Listando Todos os Pacotes Instalados
Por vários motivos, um administrador pode querer uma listagem completa de todos os
pacotes instalados no sistema. Por exemplo, ao final da instalação do sistema operacional
ou até mesmo após a adição de um pacote, pode ser interessante gerar um arquivo texto
com todos os pacotes. Dessa forma, futuras instalações podem ser baseadas nessa lista-
gem, facilitando o processo inicial de seleção de pacotes. Para consultar todos os pacotes
instalados, adiciona-se o parâmetro -a à linha de comando, como ilustra a Figura 6.1.
# rpm -qa
arts-1.0.3-1
pam-0.75-46.8.0
shadow-utils-20000902-12.8
tetex-1.0.7-57.1
mozilla-mail-1.0.1-26
cyrus-sasl-devel-2.1.10-1
gv-3.5.8-19
lynx-2.8.5-7.1
pine-4.44-14.80.0
vim-minimal-6.1-18.8x.1
hwdata-0.48-1
lokkit-0.50-21.8.0
perl-suidperl-5.8.0-55
sendmail-8.12.8-5.80
openssl-0.9.6b-33
glibc-utils-2.3.2-4.80.6
nscd-2.3.2-4.80.6
zlib-1.1.4-8.8x
mysql-devel-3.23.56-1.80
(listagem limitada para edição do texto,
no total, foram listados 550 pacotes.)
Figura 6.1: Listando Pacotes RPMs Instalados
6.5.2 Consultando um Pacote não Instalado
Nem sempre as consultas se limitam aos pacotes já instalados no sistema. Algumas
vezes, obtem-se um arquivo com um pacote desconhecido e o administrador deseja saber
do que se trata sem ter que instalá-lo.
Instalação de Aplicativos 123
Para consultar um pacote não instalado, adiciona-se o parâmetro -p à linha de co-
mando. Um exemplo será dado na próxima seção, consultando as informações de um
pacote não instalado.
6.5.3 Consultando Informações de um Pacote
Como dito anteriormente, cada pacote possui um cabeçalho com diversas informa-
ções, como seu nome, procedência, descrição, etc. Esse cabeçalho pode ser solicitado
com o parâmetro -i. Nos exemplos das Figura 6.2 e Figura 6.3, adota-se uma metodo-
logia diferente quanto à seleção de qual pacote será solicitado. Ao omitir o parâmetro -p,
especifica-se o nome de um pacote já instalado no sistema, pois o uso do parâmetro -a lis-
taria o cabeçalho de todos os pacotes, algo um tanto indesejável em alguns momentos. Ou
seja, o parâmetro -a também é omitido quando especificar o nome de um ou mais pacotes
na linha de comando.
# rpm -qi httpd
Name : httpd Relocations: (not relocateable)
Version : 2.0.40 Vendor: Red Hat, Inc.
Release : 11.3
Build Date : Seg 07 Abr 2003 07:42:02 BRT
Install date: Qua 16 Abr 2003 16:43:49 BRT
Build Host : daffy.perf.redhat.com
Group : Sistema/Daemons
Source RPM : httpd-2.0.40-11.3.src.rpm
Size : 6855645 License: Apache Software License
Signature : DSA/SHA1, Qua 09 Abr 2003 11:56:08 BRT, Key ID 219180cddb42a60e
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://httpd.apache.org/
Summary : O servidor de HTTP Apache
Description :
O Apache é um servidor de Web poderoso, cheio de potencialidades, eficiente
e gratuito. O Apache é também o servidor Web mais conhecido na Internet.
Figura 6.2: Consultando um Pacote RPM Instalado
6.5.4 Consultando as Dependências de um Pacote
Pode-se consultar as dependëncias de um determinado pacote antes do processo de
instalação (ou mesmo para um pacote já instalado), utilizando o parâmetro -R, como ilustra
a Figura 6.4. Assim, pode-se verificar com antecedência alguns dos pacotes que serão
requeridos durante a instalação.
124 EDITORA - UFLA/FAEPE - Linux Intermediário
# rpm -qpi xpdf-1.01-10.i386.rpm
Name : xpdf Relocations: (not relocateable)
Version : 1.01 Vendor: Red Hat, Inc.
Release : 10
Build Date : Qua 18 Dez 2002 17:52:28 BRST
Install date: (not installed)
Build Host : sylvester.devel.redhat.com
Group : Aplicações/Publicação
Source RPM : xpdf-1.01-10.src.rpm
Size : 4961672 License: GPL
Signature : DSA/SHA1, Qui 06 Fev 2003 01:29:58 BRST, Key ID 219180cddb42a60e
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://www.foolabs.com/xpdf/
Summary : Um visualizador de ficheiros PDF para o X Window System.
Description :
O xpdf é um visualizador baseado em X Window System para ficheiros
Portable Document Format (PDF). O xpdf é um programa pequeno e
eficiente que usa tipos de letra X ’standard’.
Figura 6.3: Consultando um Pacote RPM Não-Instalado
# rpm -qpR xpdf-1.01-10.i386.rpm
urw-fonts
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/bin/sh
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.3)
libfreetype.so.6
libgcc_s.so.1
libgcc_s.so.1(GCC_3.0)
libICE.so.6
libm.so.6
libm.so.6(GLIBC_2.0)
libSM.so.6
libstdc++.so.5
libstdc++.so.5(GLIBCPP_3.2)
libX11.so.6
libXpm.so.4
Figura 6.4: Consultando Dependências de um Pacote
Instalação de Aplicativos 125
6.5.5 Consultando as Capacidades de um Pacote
Por capacidade, entende-se qualquer funcionalidade, biblioteca ou aplicação provida
por um pacote. Essas capacidades podem tornar-se dependências para outros pacotes.
No exemplo da seção anterior, nota-se que uma das dependências exigidas pelo pacote
xpdf-1.01-10.i386.rpm é a biblioteca libc.so.6. Essa funcionalidade é oferecida
pelo pacote glibc-2.3.2-4.80.6. O exemplo apresentado na Figura 6.5 ilustra o uso
do parâmetro --provides para listar as capacidades do pacote glibc.
# rpm -q --provides glibc
libc.so.6
libc.so.6(GCC_3.0)
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.1)
libc.so.6(GLIBC_2.1.2)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.2.1)
libc.so.6(GLIBC_2.2.2)
libc.so.6(GLIBC_2.2.3)
libc.so.6(GLIBC_2.2.4)
libc.so.6(GLIBC_2.2.6)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.2)
libc.so.6(GLIBC_2.3.3)
libdl.so.2
libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libdl.so.2(GLIBC_2.3.3)
libGB.so
libcrypt.so.1
libcrypt.so.1(GLIBC_2.0)
(listagem truncada para edição, total de capacidades: 266)
Figura 6.5: Consultando Capacidades de um Pacote
6.5.6 Consultado os Arquivos Instalados por um Pacote
Muitas vezes, o administrador precisa saber quais arquivos um determinado pacote
instala, antes mesmo de fazer a instalação. Ou então, pode desejar listar todos os arquivos
que foram instalados por um pacote.
126 EDITORA - UFLA/FAEPE - Linux Intermediário
A opção -l lista os arquivos de um pacote, instalado ou não. Para isso pode-se
especificar o nome de um pacote já instalado ou combinar o parâmetro -p com o nome de
um arquivo de pacote, da mesma forma como foi mostrado na Seção 6.5.3. A Figura 6.6
apresenta a consulta dos arquivos pertencentes ao pacote xxdiff-2.7.2-1.i386.rpm.
# rpm -qpl xxdiff-2.7.2-1.i386.rpm
/usr/X11R6/bin/xxdiff
/usr/X11R6/man/man1/xxdiff.1.gz
/usr/share/doc/xxdiff-2.7.2
/usr/share/doc/xxdiff-2.7.2/CHANGES
/usr/share/doc/xxdiff-2.7.2/README
/usr/share/doc/xxdiff-2.7.2/xxdiff-doc.html
Figura 6.6: Listando Arquivos Instalados por um Pacote
6.5.7 Consultando qual Pacote Instalou um Arquivo Específico
Algumas vezes, são encontrados arquivos na árvore de diretórios do Linux que não
são facilmente associados a um pacote apenas por seu nome. Assim como pode-se listar
quais arquivos um pacote instala, o rpm permite consultar qual pacote é responsável por
um arquivo específico.
Para executar essa consulta, utiliza-se o parâmetro -f, passando o nome do arquivo
que deve ser pesquisado. No exemplo da Figura 6.7, consulta-se qual pacote instalou o
arquivo /bin/sh.
# rpm -qf /bin/sh
bash-2.05b-5
Figura 6.7: Consultando o Pacote de um Dado Arquivo
6.6 ONDE ENCONTRAR PACOTES E DEPENDÊNCIAS
Como dito no início deste capítulo, existe uma variedade imensa de pacotes dispo-
níveis na internet. Existem vários sites especializados na divulgação e distribuiçao de pa-
cotes. Merecem menção o SourceForge1 e o Freshmeat 2, que oferecem mecanismos de
busca de projetos e até mesmo downloads. Entretanto, nem todos os projetos divulgados
nesses sites possuem um pacote RPM disponível, mas eles oferecem links que apontam
1http://www.sourceforge.net/2http://www.freshmeat.net/
Instalação de Aplicativos 127
para o site do desenvolvedor, onde pode-se procurar por um pacote mais recente (e o
número de desenvolvedores que estão disponibilizando pacotes RPM tem crescido consi-
deravelmente).
Outro site de extrema importância para o administrador é o sistema de busca do
RPMFind 3, onde existe uma gigantesca base de dados sobre pacotes e seus respecti-
vos downloads. Nele, pode-se consultar os pacotes com um determinado nome, para uma
arquitetura ou distribuição específica, ou até mesmo consultar qual pacote inclui um deter-
minado arquivo (muito útil para resolver dependências). Entretanto, nem todos os desenvol-
vedores encaminham suas versões mais recentes para esse site, valendo a recomendação
que sejam procuradas versões recentes junto ao desenvolvedor e, caso não existam, pode-
se baixar diretamente do RPMFind.
Existem ainda programas que acompanham algumas distribuições que facilitam a lo-
calização de pacotes e dependências, como o urpmi do Mandrake, o apt-get4 ou o
rpmfind5. O objetivo deste texto não é analisar a fundo todas essas ferramentas, o que
torna recomendável a leitura de suas respectivas documentações.
É comum encontrar dependências que não referenciam um pacote propriamente dito,
mas um arquivo integrante de um pacote. Isso deixa muitos usuários iniciantes insatisfeitos
e frustrados com o sistema baseado em dependências, pois afinal, os nomes de arquivo
nem sempre podem indicar a qual pacote pertencem. É óbvio que todas as dependên-
cias de um pacote incluído por uma distribuição também estão incluídas em algum dos
seus CDs, caso contrário, a opção para instalar tudo não poderia ser oferecida. Mas a
pergunta que ronda a mente da maioria dos usuários é: em que pacote está o arquivo
libwmf-0.2.so.2? O primeiro passo é verificar se sua distribuição inclui o arquivo, com-
binando os comandos rpm e grep (apresentado na Seção 4.4.9):
# rpm -qp --filesbypkg *.rpm | grep libwmf-0.2.so.2
libwmf /usr/lib/libwmf-0.2.so.2
libwmf /usr/lib/libwmf-0.2.so.2.0.0
O uso do comando grep no exemplo acima é apenas para que a saída do comando
exiba apenas a linha que mostra o pacote capaz de sanar a dependência. Se for omitido,
vai criar uma listagem com todos os pacotes e seus arquivos. Essa listagem pode ser
redirecionada para um arquivo texto, para futuras referências. Caso não seja encontrado
o arquivo em qualquer pacotes que acompanha a distribuição, pode-se fazer uma consulta
3http://www.rpmfind.net/4Originalmente foi desenvolvido para os pacotes no formato DEB do Debian e foi portado para trabalhar
com RPM pela Conectiva.5Normalmente encontrado no Red Hat e que faz as mesmas buscas do site com o mesmo nome, mas
oferece recursos para baixar e instalar o pacote e todas as dependências encontradas.
128 EDITORA - UFLA/FAEPE - Linux Intermediário
no RPMFind com o nome do arquivo e descobrir qual pacote é capaz de provê-lo e sanar a
dependência.
REFERÊNCIAS BIBLIOGRÁFICAS
ABREU SILVA, R. M. de. Sistemas operacionais. Lavras: UFLA/FAEPE, 2002. (Curso de
Pós Graduação “Lato Sensu” (Especialização) a Distância em Administração em Redes
Linux).
BAILEY, E. C. Maximum RPM: Taking the Red Hat Package Manager to the Limit. Raileigh:
Red Hat Software Inc., 1998. Http://www.rpm.org/.
BARNES, D. RPM HOWTO, Revision 3.0, 3 Nov 2000. The Linux Documentation Project,
1999. URL: http://www.ibiblio.org/pub/Linux/docs/HOWTO/RPM-HOWTO.
CORREIA, L. H. A.; ABREU SILVA, R. M. de. Redes de Computadores. Lavras:
UFLA/FAEPE, 2002. (Curso de Pós Graduação “Lato Sensu” (Especialização) a Distância
em Administração em Redes Linux).
CROCKER, D. H. Standard for the Format of ARPA Internet Text Messages. Internet
Engineering Task Force (IETF), Agosto 1982. (Request for Comments: 822). URL:
http://www.ietf.org/.
FRAMPTON, S. Linux Administration Made Easy. [S.l.]: The Linux Documentation Project,
1999. URL: http://www.tldp.org/guides.html.
GONZATO, G. From DOS/Windows to Linux HOWTO Version 1.3.5. The Linux
Documentation Project, 31 de Agosto 2000. URL: http://www.ibiblio.org/pub/
Linux/docs/HOWTO/DOS-Win-to-Linux-HOWTO.
KIRCH, O.; DAWSON, T. The Linux Network Administrator’s Guide; Version 1.1. 2 ed. [S.l.]:
The Linux Documentation Project, 2000. URL: http://www.tldp.org/guides.html.
LINUX ONLINE INC. Linux Online. Abril 2003. [WWW]. URL: http://www.linux.org.
LOOSEMORE, S. et al. The GNU C Library Reference Manual. 0.10 ed. Boston: Free
Software Foundation, 2001.
130 EDITORA - UFLA/FAEPE - Linux Intermediário
NEMETH, E. et al. UNIX System Administration Handbook. 2 ed. New Jersey:
Prentice-Hall, 1995.
NEMETH, E. et al. UNIX System Administration Handbook. 3 ed. New Jersey:
Prentice-Hall, 2001.
SCHNEIDER, B. O. Linguagens de Programação II. Lavras: UFLA/FAEPE, 2002. (Curso
de Pós Graduação “Lato Sensu” (Especialização) a Distância em Administração em Redes
Linux).
SICA, F. C.; UCHÔA, J. Q. Administração de Sistemas Linux Redes. Lavras: UFLA/FAEPE,
2003. (Curso de Pós Graduação “Lato Sensu” (Especialização) a Distância em
Administração em Redes Linux).
STANFIELD, V.; SMITH, R. W. Linux System Administration. San Francisco: Sybex, 2001.
(Craig Hunt Linux Library).
TORVALDS, L.; DIAMOND, D. Só por prazer: Linux, os bastidores de sua criação. Rio de
Janeiro: Campus, 2001.
UCHÔA, J. Q. Segurança em Redes e Criptografia. Lavras: UFLA/FAEPE, 2003. (Curso
de Pós Graduação “Lato Sensu” (Especialização) a Distância em Administração em Redes
Linux). Em fase de escrita.
UCHÔA, J. Q.; SIMEONE, L. E.; SICA, F. C. Administração de Redes Linux. Lavras:
UFLA/FAEPE, 2003. (Curso de Pós Graduação “Lato Sensu” (Especialização) a Distância
em Administração em Redes Linux).
WIRZENIUS, L.; OJA, J.; STAFFORD, S. The Linux System Administrator’s Guide; Version
0.7. [S.l.]: The Linux Documentation Project, 2001. URL: http://www.tldp.org/
guides.html.