Você está na página 1de 93

www.serpro.gov.

br

Introduo ao Linux: Perdendo o medo da tela preta


Ruy Minoru Ito Takata - ruy.takata@serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

Sumrio
1 Introduo 1.1 Histrico de verses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Instalando o Debian 2.1 Escolhendo a arquitetura apropriada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Criando uma mquina virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 8 8

2.3 Particionamento de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4 Formatao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5 Instalando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3 Entendendo o prompt do Linux 32

3.1 Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.2 man - Manual dos comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.3 ls - Listando contedo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.4 cd - Mudando o diretrio atual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.5 mkdir - Criando diretrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.6 rmdir - Removendo diretrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.7 Criando arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.8 rm - Remover arquivos ou diretrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.9 cat - Exibindo e concatenando contedo de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.10 mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.11 less more - Paginadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.12 head e tail - Visualizando incio e m do arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.13 uniq - Exibe ou omite linhas repetidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.14 sort - Ordenando arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.15 free - Utilizao de memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.16 df - Informaes sobre utilizao de discos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.17 du - Espao usado pelo arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.18 uname - Exibe informaes do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.19 alias - Dene ou lista alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.20 echo e printf - Exibindo na tela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.21 ps - Exibindo processos correntes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.22 kill - Enviando sinais para o processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.23 top - Exibe os processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.24 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

www.serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

4 Usando o VIM

44

4.1 Editando um pouco mais rpido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2 Modo Visual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.3 Editando cdigo fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.4 Modo comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5 Gerenciamento de pacotes 49

5.1 Gerenciamento de pacotes no Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.2 Instalando um novo pacote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.3 Pesquisando pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.4 Atualizando pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.5 Removendo pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.6 Compilando cdigo fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 6 Conguraes bsicas 6.1 Personalizao do ambiente 58 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

6.2 /etc/fstab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.3 /etc/networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.4 /etc/hostname e /etc/hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.5 /etc/resolv.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.6 Teclado em modo texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.7 Mouse em modo texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.8 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 7 Servios 62

7.1 Instalando e congurando alguns servios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 7.1.1 OpenLDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 8 Comandos avanados 67

8.1 gzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 8.2 bzip2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 8.3 tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 8.4 grep, egrep, fgrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8.5 sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.6 cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.7 join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 8.8 nd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 8.9 seq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 8.10 test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 www.serpro.gov.br 2

Introduo ao Linux: Perdendo o medo da tela preta

8.11 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 8.12 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 8.13 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 8.14 until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 8.15 Comandos aritmticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 8.16 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 8.17 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9 Programao Shell 79

9.1 Criando um script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 9.2 Passando parmetros para o script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.3 Lendo valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 9.4 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 10 Resumo de comandos VIM 11 Pginas interessantes 12 Livros interessantes 13 Respostas dos Exerccios 84 85 85 86

13.1 Captulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 13.2 Captulo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 13.3 Captulo 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 13.4 Captulo 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 13.5 Captulo 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Lista de Figuras
1 2 3 4 5 6 7 Tela inicial do VMware. Escolher a opo Create a New Virtual Machine . . . . . . . . . . . . . . . Nesta tela possvel escolher a mdia de instalao, que pode ser uma mdia gravada presente no drive de CD/DVD, ou uma imagem ISO do CD/DVD. . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9

Deve-se escolher qual o sistema operacional ser instalado, bem como sua verso. . . . . . . . . . 10 Para facilitar a identicao, pode-se denir um nome para a mquina, e tambm onde seus arquivos caro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 O tamanho do disco varia conforme a necessidade. Pode-se adicionar mais de um disco em uma mesma mquina. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Terminado o processo, pode-se alterar alguma congurao, como memria, discos, etc.. . . . . . . 11 Na primeira tela, pode-se escolher se a instalao ser feita em modo texto ou em modo grco. Essa escolha no ir inuenciar o funcionamento do sistema depois de instalado. O processo de instalao ser feito em modo grco, mas isso no instala o modo grco automaticamente. . . . . 13

www.serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

A lngua escolhida nesse momento ser a lngua padro do sistema depois de instalado. . . . . . . 13 Dene o fuso horrio do sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Deve-se escolher o layout do teclado. ABNT2 para teclados que tenham o C com cedilha e EUA para teclados sem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 O hostname do computador pode ser denido neste momento ou posteriormente. . . . . . . . . . . 15 Dene-se o nome de domnio Internet do computador. . . . . . . . . . . . . . . . . . . . . . . . . . . 15 necessrio escolher uma senha para o usurio root. . . . . . . . . . . . . . . . . . . . . . . . . . . 16 O nome de um usurio comum. Esse o nome de descrio do usurio. Pode ser o nome completo, por exemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 O nome de login para o usurio comum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Senha para o usurio comum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Denindo o fuso horrio do sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Iniciando o particionamento. Ser usado o mtodo manual. . . . . . . . . . . . . . . . . . . . . . . . 18 A imagem mostra que h um disco SCSI de 8,6GB, mas no h uma tabela de parties. Basta dar duplo-clique sobre o disco para que ela seja criada. . . . . . . . . . . . . . . . . . . . . . . . . . 19 Basta conrmar e a tabela de parties ser criada. . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Agora, a tabela de parties mostra os 8,6GB como espao livre. Para criar uma nova partio, selecione-o e clique em Continuar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Selecionar a opo Criar uma nova partio e clicar em Continuar. . . . . . . . . . . . . . . . . . 20 Escolher o tamanho da partio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Escolher o tipo de partio como sendo primria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Criar a nova partio no incio do espao disponvel. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Agora deve-se congurar a partio. Selecionar a opo Usar como: e clicar em Continuar . . . 22 Escolher a opo rea de troca (swap) e clicar em Continuar . . . . . . . . . . . . . . . . . . . . 23 Selecionar novamente o Espao livre e clicar em Continuar . . . . . . . . . . . . . . . . . . . . . 23 Selecionar a opo Criar nova uma partio e clicar em Continuar. . . . . . . . . . . . . . . . . . 24 Escolher o tamanho da partio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Escolher o tipo de partio como sendo primria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Selecionar a opo Usar como: e clicar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Escolher Sistema de arquivos com journaling ext4. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Caso seja criada mais de uma partio para os dados, basta selecionar Ponto de montagem e alterar onde cada partio ser montada. No caso, temos somente 1 paartio para dados, portanto selecionar a opo Finalizar a congurao da partio. . . . . . . . . . . . . . . . . . . . 26 Selecionar a opo Finalizar o particionamento e gravar as mudanas no disco. . . . . . . . . . . 27 Conrmar as alteraes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Para a instao basta o primeiro disco, portanto no necessrio ler outro disco. . . . . . . . . . . 28

35 36 37 38 39

Caso seja escolhida a opo Sim ser necessrio escolher um repositrio na Internet ou na rede. Para o curso no ser utilizado, pois necessrio muita banda para isso. . . . . . . . . . . . . . . . 28 Esse erro ocorre porque o repositrio de rede no foi congurado. Se na tela anteior for escolhida a opo Sim o erro no ocorre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4

www.serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

40 41

Caso deseje ajudar no concurso de popularidade de pacotes, ecolher a opo Sim. . . . . . . . . 29 Selecionar os grupos de pacotes que deseja-se instalar. Para o curso, escolher somente Servidor SSH e Utilitrios standard de sistema. Para instalar o modo grco, marcar tambm a primeira opo - Ambiente de trabalho grco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Instalar o GRUB na MBR. O GRUB o gerenciador de boot do Linux. responsvel por carregar o kernel na memria e passar o controle do computador para o sistema operacional. . . . . . . . . . 30 Instalao nalizada com sucesso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Tela de login do Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Teclas de navegao do VIM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Buscando na mesma linha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Pacote grep e linux-util dependem do pacote libc6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Omitir a congurao? Colocar no para alterar a congurao atual. . . . . . . . . . . . . . . . . . 63 Domnio DNS. Denir a raiz da base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Empresa. Denir a raiz da base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Senha do usurio administrador. Ser pedido uma conrmao. . . . . . . . . . . . . . . . . . . . . 63 Denir o Backend utilizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Apagar o banco quando o pacote slapd for expurgado? . . . . . . . . . . . . . . . . . . . . . . . . . 64 Mover a base antiga? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Permitir protocolo LDAPv2? Respondendo no, somente ser permitido o protocolo v3. . . . . . . . 64 Descrio do comando tar para criao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Descrio do comando tar para extrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Lista de Tabelas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Alguns caracteres permitidos para a varivel $PS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Signicado dos campos do comando ls -l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Alguns parmetros do comando ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Colunas disponveis para o ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Estados do processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Caracteres possveis na primeira coluna do aptitude search . . . . . . . . . . . . . . . . . . . . . 53 Campos do /etc/fstab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Alguns servios para Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Operaes do comando tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Algumas opes do comando tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Algumas expresses regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Algumas opes do nd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Unidades de medida para o -size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Alguns testes possveis para o comando test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

www.serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

15 16 17 18 19

Cdigos de retorno dos comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Variveis especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Opes do comando read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Alguns comandos do VIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Caracteres possveis na primeira coluna do aptitude search . . . . . . . . . . . . . . . . . . . . . 87

www.serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

Introduo

Este curso tem por objetivo introduzir os participantes no mundo Linux. Imagina-se que os participantes do curso sejam iniciantes, portanto, no tenham grandes conhecimentos em Linux, mas tenham conhecimentos em informtica. Espera-se que ao nal do curso os participantes se sintam mais a vontade para utilizar o terminal do Linux e realizar tarefas simples sem medo de comprometer o funcionamento do sistema. A distribuio Debian foi escolhida por ser muito utilizada em servidores e pela facilidade de realizar conguraes atravs de arquivos. Este material pode ser copiado e distribuido livremente, desde que o autor no seja omitido. Crticas, sugestes e correes so bens vindos.

1.1

Histrico de verses
Descrio Criao da apostila para o curso ministrado para o CISL - Comit Tcnico para Implementao do Software Livre Correes. Alterao do estilo dos cdigos fontes. Insero de tabela de comandos do VIM. Resoluo dos exerccios

Verso 1.0 1.1

www.serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

2
2.1

Instalando o Debian
Escolhendo a arquitetura apropriada

O Debian divide os computadores em categorias conforme sua arquitetura. Para algumas dessas arquiteturas so disponibilizados os CDs/DVDs de instalao. As categorias mais comuns para uso domstico so i386 e amd64. A i386 engloba todos os computadores baseados na arquitetura Intel de 32 bits. Antigamente existiam vrios fabricantes, mas hoje temos predominantemente a Intel e a AMD. Com a evoluo dos computadores, comearam a surgir os primeiros processadores de 64 bits. A Intel lanou o Itanium de 64 bits, cuja arquitetura incompatvel com a de 32 bits. Para esses processadores, deve-se baixar o CD/DVD da categoria IA64. Para entrar no mercado de 64 bits, a AMD lanou a arquitetura AMD64, que mantem compatibilidade com a arquitetura 32 bits, ou seja, sistemas operacionais e programas de 32 bits podem ser instalados nessa arquitetura. O Itanium voltado para servidores, e tem um preo muito elevado. Para competir com a AMD, a Intel lanou a arquitetura Intel 64, que tambm compatvel com a arquitetura 32 bits. Para a arquitetura Intel 64 e AMD64 pode-se utilizar tanto o CD de instalao i386 como o amd64. Os CDs/DVDs de instalao esto disponveis para download em http://www.debian.org/CD/http-ftp/ stable.

2.2

Criando uma mquina virtual

Para os exerccios ser utilizada uma mquina virtual VMware. Abaixo as telas com os passos para criao de uma.

www.serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

Figura 1: Tela inicial do VMware. Escolher a opo Create a New Virtual Machine

Figura 2: Nesta tela possvel escolher a mdia de instalao, que pode ser uma mdia gravada presente no drive de CD/DVD, ou uma imagem ISO do CD/DVD.

www.serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

Figura 3: Deve-se escolher qual o sistema operacional ser instalado, bem como sua verso.

Figura 4: Para facilitar a identicao, pode-se denir um nome para a mquina, e tambm onde seus arquivos caro.

www.serpro.gov.br

10

Introduo ao Linux: Perdendo o medo da tela preta

Figura 5: O tamanho do disco varia conforme a necessidade. Pode-se adicionar mais de um disco em uma mesma mquina.

Figura 6: Terminado o processo, pode-se alterar alguma congurao, como memria, discos, etc..

www.serpro.gov.br

11

Introduo ao Linux: Perdendo o medo da tela preta

2.3

Particionamento de disco
Partio uma diviso no disco rgido que marca onde comea e onde termina um sistema de arquivos1 .

Pode-se criar no mximo 4 parties primrias em um disco. Caso seja necessrio criar mais que isso, deve-se denir uma delas como sendo uma partio extendida, e criar parties lgicas dentro dela. Antigamente era necessrio pelo menos duas parties para a instalao do Linux, a de Linux Swap e a Linux Native. Hoje em dia j possvel instalar sem a partio de swap, mas algumas distribuies ainda obrigam sua criao. Ao invs de criar swap em partio, pode-se criar um arquivo de swap. Durante a instalao do Linux, possvel denir que alguns diretrios sejam montados em outras parties. Existem vantagens e desvantagens em se fazer isso, e cada caso deve ser analisado antes da instalao para denir o melhor esquema.

2.4

Formatao
A formatao cria o sistema de arquivos na partio.

O Linux pode ser instalado em vrios sistemas de arquivos. Temos por exemplo, ext2, ext3, ext4, reiserfs, jfs, xfs. O uso do ext2 deve ser evitado pois ele no tem jornal. Jornal uma rea especial onde so gravadas todas as operaes que so realizadas no disco. Caso haja algum problema durante a operao do disco, ele pode voltar ao estado anterior do arquivo ou nalizar a operao.

2.5

Instalando

Terminada a criao da mquina virtual, seu funcionamento idntico ao de um computador fsico. Basta ligar e iniciar a instalao do sistema operacional. Abaixo, as telas de instalao do Debian.

1 Denio

retirada do Guia Foca Linux: http://focalinux.cipsga.org.br/guia/intermediario/ch-disc.htm.

www.serpro.gov.br

12

Introduo ao Linux: Perdendo o medo da tela preta

Figura 7: Na primeira tela, pode-se escolher se a instalao ser feita em modo texto ou em modo grco. Essa escolha no ir inuenciar o funcionamento do sistema depois de instalado. O processo de instalao ser feito em modo grco, mas isso no instala o modo grco automaticamente.

Figura 8: A lngua escolhida nesse momento ser a lngua padro do sistema depois de instalado.

www.serpro.gov.br

13

Introduo ao Linux: Perdendo o medo da tela preta

Figura 9: Dene o fuso horrio do sistema.

Figura 10: Deve-se escolher o layout do teclado. ABNT2 para teclados que tenham o C com cedilha e EUA para teclados sem.

www.serpro.gov.br

14

Introduo ao Linux: Perdendo o medo da tela preta

Figura 11: O hostname do computador pode ser denido neste momento ou posteriormente.

Figura 12: Dene-se o nome de domnio Internet do computador.

www.serpro.gov.br

15

Introduo ao Linux: Perdendo o medo da tela preta

Figura 13: necessrio escolher uma senha para o usurio root.

Figura 14: O nome de um usurio comum. Esse o nome de descrio do usurio. Pode ser o nome completo, por exemplo.

www.serpro.gov.br

16

Introduo ao Linux: Perdendo o medo da tela preta

Figura 15: O nome de login para o usurio comum.

Figura 16: Senha para o usurio comum.

www.serpro.gov.br

17

Introduo ao Linux: Perdendo o medo da tela preta

Figura 17: Denindo o fuso horrio do sistema.

Figura 18: Iniciando o particionamento. Ser usado o mtodo manual.

www.serpro.gov.br

18

Introduo ao Linux: Perdendo o medo da tela preta

Figura 19: A imagem mostra que h um disco SCSI de 8,6GB, mas no h uma tabela de parties. Basta dar duplo-clique sobre o disco para que ela seja criada.

Figura 20: Basta conrmar e a tabela de parties ser criada.

www.serpro.gov.br

19

Introduo ao Linux: Perdendo o medo da tela preta

Figura 21: Agora, a tabela de parties mostra os 8,6GB como espao livre. Para criar uma nova partio, selecione-o e clique em Continuar.

Figura 22: Selecionar a opo Criar uma nova partio e clicar em Continuar.

www.serpro.gov.br

20

Introduo ao Linux: Perdendo o medo da tela preta

Figura 23: Escolher o tamanho da partio.

Figura 24: Escolher o tipo de partio como sendo primria.

www.serpro.gov.br

21

Introduo ao Linux: Perdendo o medo da tela preta

Figura 25: Criar a nova partio no incio do espao disponvel.

Figura 26: Agora deve-se congurar a partio. Selecionar a opo Usar como: e clicar em Continuar

www.serpro.gov.br

22

Introduo ao Linux: Perdendo o medo da tela preta

Figura 27: Escolher a opo rea de troca (swap) e clicar em Continuar

Figura 28: Selecionar novamente o Espao livre e clicar em Continuar

www.serpro.gov.br

23

Introduo ao Linux: Perdendo o medo da tela preta

Figura 29: Selecionar a opo Criar nova uma partio e clicar em Continuar.

Figura 30: Escolher o tamanho da partio.

www.serpro.gov.br

24

Introduo ao Linux: Perdendo o medo da tela preta

Figura 31: Escolher o tipo de partio como sendo primria.

Figura 32: Selecionar a opo Usar como: e clicar.

www.serpro.gov.br

25

Introduo ao Linux: Perdendo o medo da tela preta

Figura 33: Escolher Sistema de arquivos com journaling ext4.

Figura 34: Caso seja criada mais de uma partio para os dados, basta selecionar Ponto de montagem e alterar onde cada partio ser montada. No caso, temos somente 1 paartio para dados, portanto selecionar a opo Finalizar a congurao da partio.

www.serpro.gov.br

26

Introduo ao Linux: Perdendo o medo da tela preta

Figura 35: Selecionar a opo Finalizar o particionamento e gravar as mudanas no disco.

Figura 36: Conrmar as alteraes.

www.serpro.gov.br

27

Introduo ao Linux: Perdendo o medo da tela preta

Figura 37: Para a instao basta o primeiro disco, portanto no necessrio ler outro disco.

Figura 38: Caso seja escolhida a opo Sim ser necessrio escolher um repositrio na Internet ou na rede. Para o curso no ser utilizado, pois necessrio muita banda para isso.

www.serpro.gov.br

28

Introduo ao Linux: Perdendo o medo da tela preta

Figura 39: Esse erro ocorre porque o repositrio de rede no foi congurado. Se na tela anteior for escolhida a opo Sim o erro no ocorre.

Figura 40: Caso deseje ajudar no concurso de popularidade de pacotes, ecolher a opo Sim.

www.serpro.gov.br

29

Introduo ao Linux: Perdendo o medo da tela preta

Figura 41: Selecionar os grupos de pacotes que deseja-se instalar. Para o curso, escolher somente Servidor SSH e Utilitrios standard de sistema. Para instalar o modo grco, marcar tambm a primeira opo - Ambiente de trabalho grco.

Figura 42: Instalar o GRUB na MBR. O GRUB o gerenciador de boot do Linux. responsvel por carregar o kernel na memria e passar o controle do computador para o sistema operacional.

www.serpro.gov.br

30

Introduo ao Linux: Perdendo o medo da tela preta

Figura 43: Instalao nalizada com sucesso.

Figura 44: Tela de login do Linux.

www.serpro.gov.br

31

Introduo ao Linux: Perdendo o medo da tela preta

Entendendo o prompt do Linux

Terminada a instalao possvel efetuar login. Basta digitar o usurio e depois a senha. Ao digitar a senha, o prompt no se movimenta, e nada ecoado na tela. O prompt que aparece pode ser congurado, mas normalmente parecido com o abaixo: ruy@debian ~ $ Isso siginica que o usurio ruy est logado, o hostname do computador debian. O usurio est em seu diretrio home e um usurio comum. Outro exemplo: root@servidor01 /etc # O usurio root est logado no computador de hostname servidor01. Est no diretrio /etc e um usurio com poderes de root. O ltimo caracter muito importante. Caso seja um $ que dizer que um usurio comum. Se for um # o usurio tem poderes de root. Usa-se a denio ter poderes de root pois possvel criar um usurio e atribuir poderes de root para ele. Esse prompt pode ser alterado atravs da varivel de ambiente $PS1 Abaixo um exemplo: ruy@taiga /etc $ PS1="[\u\@\h \w \t \! $]" [ruy@taiga /etc 23:24:22 40 $] Alguns caracteres especiais suportados2 so:

2 informao

retirada do man do bash

www.serpro.gov.br

32

Introduo ao Linux: Perdendo o medo da tela preta

Caracter \a \d \D{format} \e \h \H \j \l \n \r \s \t \T \@ \A \u \v \V \w \W \! \# \$ \nnn \\ \[ \]

Descrio an ASCII bell character (07) the date in Weekday Month Date format (e.g., Tue May 26) the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specic time representation. The braces are required an ASCII escape character (033) the hostname up to the rst . the hostname the number of jobs currently managed by the shell the basename of the shells terminal device name newline carriage return the name of the shell, the basename of $0 (the portion following the nal slash) the current time in 24-hour HH:MM:SS format the current time in 12-hour HH:MM:SS format the current time in 12-hour am/pm format the current time in 24-hour HH:MM format the username of the current user the version of bash (e.g., 2.00) the release of bash, version + patch level (e.g., 2.00.0) the current working directory, with $HOME abbreviated with a tilde (uses the value of the PROMPT_DIRTRIM variable) the basename of the current working directory, with $HOME abbreviated with a tilde the history number of this command the command number of this command if the effective UID is 0, a #, otherwise a $ the character corresponding to the octal number nnn a backslash begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt end a sequence of non-printing characters
Tabela 1: Alguns caracteres permitidos para a varivel $PS1

Para ver outra variveis de ambiente basta digitar o comando env. Algumas dessas variveis so informativas, e podem ser utilizadas em scripts. O cdigo abaixo, por exemplo, verica se o usurio root: if [ $USER = "root" ] then echo "usuario eh root" else echo "usuario nao eh root" fi Outra varivel muito importante a $SHELL. Ela diz qual o shell utilizado no momento. Atualmente em ambientes Linux, o padro o /bin/bash. Alguns comandos funcionam de maneira diferente nos diferentes tipos de shell existentes. Outras variveis podem alterar o funcionamento de alguns programas, como por exemplo a varivel $JAVA_HOME, que dene onde est instalado o java, ou varivel $EDITOR, que dene qual o editor de texto padro do sistema.

www.serpro.gov.br

33

Introduo ao Linux: Perdendo o medo da tela preta

3.1

Shell

Segundo Aurlio Marinho Jargas3 , Shell a linha de comando do Linux (e UNIX). o shell quem interpreta a linha de comandos digitada pelo usurio no terminal e chama os programas desejados. L-se "xu", como em "meu deu du xu":). Como dito anteriormente, em ambientes Linux o shell padro o Bourn Again Shell (Bash), mas existem outros como o Bourn Shell (sh), o Korn Shell (kshell), C Shell (csh)4 . A entrada padro do shell o teclado, e a sada padr a tela. Caso queira que a sada de um comando no v para a tela, pode-se utilizar o redirecionamento >, por exemplo: ls > saida.txt O resultado do comando ls ser direcionado para o arquivo saida.txt. Se o arquivo no existir, ele ser criado. Se o arquivo existir, seu contedo ser apagado antes da sada do comando gravar o resultado nele. Por exemplo: $ cat teste.txt 1 2 3 $ cat teste.txt > teste.txt cat: teste.txt: os arquivos de entrada e de saida sao os mesmos Como resultado, teremos o arquivo vazio. Caso queira que o resultado seja acrescentado ao nal do arquivo deve-se utilizar o redirecionamento . Mas como no caso anteior, a entrada e a sada no pode ser o mesmo. $ cat teste.txt 1 2 3 $ cat teste.txt >> teste.txt cat: teste.txt: os arquivos de entrada e de saida sao os mesmos Mas o contedo do arquivo no ser perdido. Nesta seo sero apresentados alguns comando bsicos e seus parmetros mais utilizados. Por serem comandos simples, no sero abordados com profundidade.

3.2

man - Manual dos comandos

O comando man exibe o manual on-line do comando. o comando mais importante do UNIX, pois, como existem muitos comandos e cada comando tem vrios parmetros praticamente impossvel saber todos. O importante saber que o comando existe e ter uma idia de seu funcionamento. Quando necessitar de maiores detalhes, basta consultar o man.

3.3

ls - Listando contedo

O comando lista o contedo de diretrios. Normalmente o resultado ser a lista com o nome de arquivos e diretrios. Para ver mais detalhes dos arquivos pode-se utilizar o parmetro -l, que lista em formato longo. O resultado seria como abaixo:
3 http://aurelio.net/shell/ 4 Mais

informaes disponveis em http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo001#O_Ambiente_Shell

www.serpro.gov.br

34

Introduo ao Linux: Perdendo o medo da tela preta $ ls -l total 3372 -rw-r--r-- 1 ruy ruy 3446664 Mai 13 19:43 curso_introducao_linux.tar.bz2 drwxr-xr-x 3 ruy ruy 4096 Mai 15 16:59 introducao_linux No resultado acima temos: Campo total 3372 -rw-r--r-1 ruy ruy 3446664 Mai 13 19:43 curso_introducao_linux.tar.bz2 Signicado Nmero de blocos ocupados pelos arquivos Permisses dos arquivos Nmero de links que apontam para o arquivo Dono do arquivo Grupo ao qual o arquivo pertence tamanho do arquivo em bytes Dia e hora em que o arquivo foi alteraro pela ltima vez Nome do arquivo

Tabela 2: Signicado dos campos do comando ls -l

No exemplo, o segundo arquivo, na parte de permisses, o primeiro caracter um d. Isso signica que o arquivo um diretrio. Se o primeiro caracter for um l siginica que o arquivo um link. Normalmente no se diferencia os diferentes tipos de arquivo no resultado do comando ls. Para facilitar a vizualizao pode-se utilizar o parmetro --color. Isso altera a cor dos arquivos conforme seu tipo. Arquivos cujo nome iniciam com o caracter . so considerados ocultos. Para list-los utiliza-se o parmetro -a. Para ver o tamanho do arquivo em KB ou MB ao invs de bytes, pode-se utilizar o parmetro -h.

3.4

cd - Mudando o diretrio atual

Ao efetuar o login, por padro, vamos para o nosso diretrio home. Para mudar de diretrio utiliza-se o comando cd. Para mudar de diretrio pode utilizar o caminho completo ou o caminho relativo. O caminho completo inicia-se sempre com o /. Por exemplo: $ cd /var/lib/ Ao executar esse comando, mudamos para o diretrio /var/lib. Se estamos no diretrio /var/lib e queremos ir para o diretrio /var/cache, podemos executar qualquer um dos comandos abaixo: $ cd ../cache $ cd /var/cache O .. referencia-se ao diretrio pai de onde estamos. Outro caracter interessante o -, que referencia-se ao diretrio anterior. Por exemplo: $ cd $ pwd /home/ruy $ cd /usr/lib/ $ pwd www.serpro.gov.br 35

Introduo ao Linux: Perdendo o medo da tela preta /usr/lib $ cd $ pwd /home/ruy O comando pwd exibe o diretrio atual.

3.5

mkdir - Criando diretrios


O comando mkdir cria um ou mais diretrios. Por exemplo:

$ mkdir dir1 dir2 dir3 $ ls dir1 dir2 dir3 Pode-se criar um diretrio dentro de uma estrutura de diretrios. Se a estrutura no existir ocorrer um erro. Para criar uma estrutura, pode-se utilizar o parmetro -p. Por exemplo: $ mkdir dir1/dirA/dir100 mkdir: impossivel criar o diretrio "dir1/dirA/dir100": Arquivo ou diretrio no encontrado $ mkdir -p dir1/dirA/dir100 $ ls dir1/dirA/ dir100

3.6

rmdir - Removendo diretrios

O comando rmdir remove diretrios vazios. Caso contrrio ocorrer um erro. Pode-se utilizar o parmetro -p para remover a estrutura toda. $ rmdir dir1 rmdir: falhou em remover "dir1": Diretrio no vazio $ rmdir dir1/dirA/dir100 Se, dentro de dirA houver mais algum arquivo, o diretrio dir100 ser apagado, mas o outro arquivo no, e ocorrer um erro.

3.7

Criando arquivos

Existem duas maneiras de criar um arquivo vazio. Por denio o correto utilizar o comando >. Lembrandose sempre que, caso o arquivo exista, seu contedo ser apagado. Pode-se utilizar tambm o comando touch. Mas a denio do comando touch Altera o timestamp do arquivo. Ou seja, se o arquivo existir, a data/hora do arquivo ser alterada para a atual. Se o arquivo no existir ele ser criado.

3.8

rm - Remover arquivos ou diretrios

Se usado sem nenhum parmetro, no remove diretrios. Para remover diretrios pode-se utilizar o parmetro -r, que remove diretrios e seu contedo recursivamente. Para evitar erros, pode-se utilizar o parmetro -i, que pede conrmao antes de remover cada arquivo. Ao contrrio disso, para remover incondicionalmente, existe o parmetro -f, que fora a remoo. Um comando perigoso, pois apaga todos os arquivos rm -rf /. www.serpro.gov.br 36

Introduo ao Linux: Perdendo o medo da tela preta

3.9

cat - Exibindo e concatenando contedo de arquivos

Para exibir o contedo de um arquivo pode-se usar simplesmente o comando cat. Para exibir o arquivo de forma reversa existe o comando tac. Mas o comando pode ser usado tambm para criar um arquivo. Para isso basta utilizar como mostrado abaixo: $ cat > arquivo1.txt << EOF # Depois de digitar a string EOF, pressionar ENTER. > linha 1 # o sinal de > o prompt que ir abrir para a digitao do texto > linha 2 # Ao pressionar ENTER, abrir uma nova linha no arquivo > linha 3 > EOF # Ao digitar a string EOF, finaliza o comando e o arquvo gerado $ cat arquivo1.txt linha 1 linha 2 linha 3 Isso ir apagar o contedo de arquivo1.txt e ir acrescentando o que for digitado at digite-se o EOF.

3.10

mv

O mv move ou renomeia arquivos. Por exemplo: $ ls # lista o conteudo do diretorio atual arquivo1.txt $ mv arquivo1.txt arquivo2.txt # renomeia arquivo1.txt para arquivo2.txt $ ls arquivo2.txt $ mkdir dir1 # Cria um diretorio $ ls arquivo2.txt dir1 $ mv arquivo2.txt dir1 # move arquivo2.txt para dentro de dir1 $ ls dir1 arquivo2.txt

3.11

less more - Paginadores

Ao executar o comando cat, se o arquivo for muito longo, a visualizao muito difcil. Para facilitar pode-se utilizar os comandos more ou o less. A diferena entre os dois que com o less possvel avanar e voltar no texto, e com o more s possvel avanar.

3.12

head e tail - Visualizando incio e m do arquivo

Os comando head e tail exibem, respectivamente, as 10 primeiras e as 10 ltimas linhas de um arquivo. Para ver as 20 primeiras/ltimas linhas do arquivo utiliza-se o parmetro -n 20.

3.13

uniq - Exibe ou omite linhas repetidas

O uniq ltra linhas iguais adjacentes. Se usado sem parmetro nenhum, linhas iguais sero unidas para a primeira ocorrncia. www.serpro.gov.br 37

Introduo ao Linux: Perdendo o medo da tela preta

Caso seja necessrio ver somente as linhas repetidas, existe o parmetro -d. Como o uniq somente verica se as linhas adjacentes so iguais, pode ser necessrio ordenar o arquivo antes. O comando sort tem esse propsito.

3.14

sort - Ordenando arquivos

O comando sort sem nenhum parmetro ir ordenar o contedo do arquivo informado, exibindo na tela. O parmetro -r exibe ordenado reversamente. Para ter um arquivo ordenado e sem linhas repetidas, poderia-se utilizar o redirecionamento | como abaixo:

$ sort arquivo.txt | uniq

Mas o comando sort tem o parmetro -u que tem o mesmo efeito.

3.15

free - Utilizao de memria

O comando free exibe informaes sobre utilizao da memria. Por exemplo: $ free Mem: 4050196 -/+ buffers/cache: Swap: 1951856

total 2019504 781776 0

used free 2030692 3268420 1951856

shared

buffers 299820

cached 937908

3.16

df - Informaes sobre utilizao de discos

Muitos problemas podem ocorrer se no houver espao livre nas parties utilizadas. Parties como /var e /tmp que so constantemente alteradas podem prejudicar o funcionamento de servios. Se a partio raiz estiver cheia, todo o sistema pode car comprometido. Para vericar qual a utilizao de cada partio montada, inclusive compartilhamentos de rede. Um exemplo pode ser visto abaixo: $ df -h Sist. Arq. /dev/sda3

Tam 37G

Usad Disp Uso% Montado em 18G 18G 50% /

3.17

du - Espao usado pelo arquivo

Denido que alguma partio est muito cheia, pode-se denir qual diretrio dentro dessa partio est muito cheia. Em alguns casos, pode-se chegar a concluso que o problema foi o mau dimensionamento das parties. Em alguns casos, alguma partio que esteja ocupando muito espao pode ter seu contedo apagado. O du um comando que estima o espao utilizado por cada arquivo. Uma utilizao interessante a mostrada abaixo: # du -hs * 2>/dev/null 6,4M bin www.serpro.gov.br 38

Introduo ao Linux: Perdendo o medo da tela preta 43M boot 4,0K cdrom 308K dev 20M etc 100G home 0 initrd.img 0 initrd.img.old 321M lib 16K lost+found 4,0K media 24K mnt 383M opt 0 proc 3,2M root 6,6M sbin 4,0K selinux 4,0K srv 0 sys 664K tmp 5,5G usr 425M var 0 vmlinuz 0 vmlinuz.old

3.18

uname - Exibe informaes do sistema

Um uso muito comum com o parmetro -a, como visto abaixo: $ uname -a Linux debian 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686 GNU/Linux Como resultado temos: Linux: Nome do kernel - parmetro -s; debian: Hostname da mquina - parmetro -n; 2.6.32-5-686: Verso do kernel - parmetro -r; #1: Nmero de vezes que o kernel foi compilado antes de chegar a esta compilao; SMP: Signica que o kernel foi compilado com suporte a multi-processadores; Wed Jan 12 04:01:41 UTC 2011: Data em que o kernel foi compilado; i686: Arquitetura do processador - parmetro -r; GNU/Linux: Sistema operacional - parmetro -o.

3.19

alias - Dene ou lista alias

Se usado sem nenhum parmetro, retorna uma lista com todos os alias denidos atualmente. Exemplo: $ alias alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' www.serpro.gov.br 39

Introduo ao Linux: Perdendo o medo da tela preta alias alias alias alias alias grep='grep --color=auto' l='ls -CF' la='ls -A' ll='ls -alF' ls='ls --color=auto'

Ao digitar o comando la, o shell ir chamar o comando ls com o parmetro -A. Para denir um alias personalizado, basta digitar exatamente como no exemplo. O comando alias, seguido novo comando, o sinal de igual, e entre aspas simples, o comando que ser chamado. Importante notar que no h espao antes e depois do sinal de igual. O alias denido em cada sesso, ou seja, ao efetuar logoff, ele ser perdido. Para que ele seja denido toda vez que efetuar login, pode-se denir o alias no arquivo ~/.bashrc. Para denir um alias para todos os usurios, pode-se deni-lo em /etc/profile

3.20

echo e printf - Exibindo na tela

O echo exibe de forma simples os argumentos passados para ele. Caso seja passado uma varivel, imprime seu contedo. $ echo Curso de GNU/Linux Curso de GNU/Linux $ echo $HOME /home/ruy Para formatar a sada, pode-se utlizar o printf, que tem um comportamento semelhante ao printf() em C. $ printf "%f\n" 10 10,000000 $ printf "%10d\n" 10 10 $ printf "%010d\n" 10 0000000010

3.21

ps - Exibindo processos correntes

O ps exibe um snapshot dos processos. Sem nenhum parmetro ele retorna poucas informaes. Alguns parmetros podem ser vistos na tabela abaixo: Parmetro -e -f -u userlist -H -w -o format Descrio Exibe todos os processos Lista em formato longo Exibe somente processos dos usurios informados Exibe processos em forma de rvore Dene a largura da coluna em limite Para denir quais colunas sero exibidas. format so as colunas separadas por vrgula. Algumas colunas possvels esto disponveis na tabela 4
Tabela 3: Alguns parmetros do comando ps

www.serpro.gov.br

40

Introduo ao Linux: Perdendo o medo da tela preta

Formato %cpu %mem cmd egid egroup euid euser lwp nlwp rss s tname vsz pri

Descrio Porcentagem deutilizao do processador Porcentagem de utilizao da memria fsica Comando com todos os seus argumentos Id do grupo do processo nome do grupo do processo Id do usurio do processo Nome do usurio do processo Id da thread do processo Nmeros de threads do processo Quantidade de memria fsica utilizada Estado do processo, podem ser vistos na tabela 5 Nome do terminal onde o processo est executando Quantidade de memria virtual Prioridade do processo
Tabela 4: Colunas disponveis para o ps

Estado D R S T X Z

Descrio Processo interrompido, mas no processa sinais. Provavelmente esperando a nalizao de alguma tarefa Processo executando ou na la esperando para iniciar execuo Dormindo e aguardando algum evento ocorrer Processo parado por recebimento de sinal Morto Processo zumbi. Processo foi nalizado, mas aguardando o processo pai coletar informaes
Tabela 5: Estados do processo

3.22

kill - Enviando sinais para o processo

O comando kill envia um sinal para o processo. Se utilizado sem nenhum parmetro, ele envia o sinal 15, que para terminar (gentilmente) o processo. Caso o processo no nalize, pode ser necessrio enviar um sinal 9 para matar (incondicionalmente). O uso pode ser visto abaixo: $ kill 748 $ kill -9 748 O nmero 748 seria o PID do processo. No exemplo um nmero aleatrio. Para saber o PID do processo desejado basta utilizar o comando ps.

3.23

top - Exibe os processos

O top uma ferramenta muito importante de monitoramento. Ele exibe interativamente os processos em execuo. Um exemplo abaixo:
1

t o p - 1 1 : 1 8 : 0 6 up 3 : 0 7 , 4 users , l o a d average : 0 . 3 8 , 0 . 4 0 , 0.35 Tasks : 231 t o t a l , 2 running , 228 s l e e p i n g , 0 stopped , 1 zombie Cpu0 : 2.3%us , 2.3%sy , 0.0% n i , 95.4% i d , 0.0%wa , 0.0% h i , 0.0% s i , 0.0% s t Cpu1 : 0.3%us , 0.0%sy , 0.0% n i , 99.7% i d , 0.0%wa , 0.0% h i , 0.0% s i , 0.0% s t Cpu2 : 1.6%us , 1.0%sy , 0.3% n i , 96.8% i d , 0.0%wa , 0.0% h i , 0.3% s i , 0.0% s t Cpu3 : 1.3%us , 0.7%sy , 0.0% n i , 97.7% i d , 0.0%wa , 0.3% h i , 0.0% s i , 0.0% s t Mem: 4050196k t o t a l , 2189236k used , 1860960k f r e e , 285724k b u f f e r s Swap : 1951856k t o t a l , 0k used , 1951856k f r e e , 1033812k cached

www.serpro.gov.br

41

Introduo ao Linux: Perdendo o medo da tela preta

11

13

15

17

19

21

23

25

27

29

31

33

35

PID 1074 2414 2608 4143 2319 4121 832 2439 2593 4253 4345 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

USER root 21537850 21537850 21537850 21537850 21537850 root 21537850 21537850 21537850 21537850 root root root root root root root root root root root root root root root

PR 20 20 20 20 20 20 20 20 20 20 20 20 20 RT 20 RT RT 20 RT RT 20 RT RT 20 RT 20

NI 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

VIRT RES SHR S % CPU % MEM 124m 59m 18m S 4 1.5 43004 13m 10m S 1 0.3 261m 47m 20m S 1 1.2 49944 14m 10m S 1 0.4 38896 12m 9896 S 1 0.3 71640 29m 19m S 1 0.8 0 0 0 S 0 0.0 41736 12m 9 . 9m S 0 0.3 152m 53m 17m S 0 1.4 173m 125m 116m S 0 3.2 2544 1160 844 R 0 0.0 2604 1544 1148 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0 0 0 0 S 0 0.0

TIME+ 5:43.39 0:09.26 4:10.94 0:02.17 0:03.32 0:16.93 0:01.17 0:10.25 0:44.19 0:31.75 0:07.31 0:00.55 0:00.00 0:00.00 0:00.01 0:00.00 0:00.00 0:00.08 0:00.00 0:00.00 0:00.14 0:00.00 0:00.00 0:00.05 0:00.00 0:00.05

COMMAND Xorg wnck - a p p l e t chromium - browse gnome - t e r m i n a l metacity texmaker kjournald sensors - a p p l e t chromium - browse vmware - vmx top init kthreadd migration /0 k s o f t i r q d /0 watchdog / 0 migration /1 k s o f t i r q d /1 watchdog / 1 migration /2 k s o f t i r q d /2 watchdog / 2 migration /3 k s o f t i r q d /3 watchdog / 3 events / 0

A linha 1 mostra a hora atual, quanto tempo o sistema est ligado, quantos usurios esto logados, e a mdia de utilizao nos ltimos 1, 5 e 15 minutos. Essa linha pode ser obtida com o comando uptime. Na linha 2 temos a quantidade total de processos, e os divide entre executando, dormindo, parado e zumbi. Entre as linhas 3 at a linha 6 so as informaes referentes a cada processador/ncleo. Os campos so: us: Tempo que a CPU gastou rodando processos de usurio e no so niced5 sy: Tempo que a CPU gastou rodando o kernel e seus processos ni: Tempo que a CPU gastou processando processos de usurios e que foram niced wa: Tempo que a CPU esperou por I/O hi: Tempo que a CPU gastou servindo interrupes de hardware si: tempo que a CPU gastou servindo interrupo de software st: Tempo que a CPU gastou em outras mquinas virtuais As linhas 7 e 8 mostram informaes de memria. As colunas mostradas na linha 10 so as mesmas do comando ps. Pressionando a tecla h, ser exibido um help com comandos possveis dentro do top

3.24

Exerccios

1. Criar a seguinte estrutura de diretrios dentro de seu home:

5 Processo

niced um processo legal, que gasta menos tempo de CPU e executa mais lentamente.

www.serpro.gov.br

42

Introduo ao Linux: Perdendo o medo da tela preta

/home/usuario

secao1

secao2

resumo

exercicios

resumo

exercicios

2. Entre no diretrio secao1/exercicios e crie a seguinte estrutura de diretrios usando apenas um comando:
/home/usuario/secao1/exercicios

diretorioA

diretorioB

diretorio1

diretorio2

Diretorio3

diretorio10

diretorio20

diretorio30

diretorio21

diretorio22

3. Entre no diretrio secao1/exercicios e criar um arquivo de nome exercicio3.txt usando o cat com o seguinte contedo: GNU/Linux um sistema operacional: uma srie de programas que deixam voc interagir com o computador e executar outros programas. ... A parte mais importante de um sistema operacional o kernel. Num sistema GNU/Linux, o componente do kernel o Linux. O resto do sistema consiste noutros programas, muitos dos quais escritos por ou para o Projeto GNU; Como o kernel sozinho no forma um sistema operacional utilizvel, ns preferimos utilizar o termo GNU/Linux para nos referirmos aos sistemas a que muitas pessoas vulgarmente chamam de Linux. 4. Usando variveis de ambiente, imprima na tela a seguinte mensagem: O usuario logado atualmente eh "ruy". O shell sendo executado eh "/bin/bash". 5. Execute os comandos abaixo e expliquem o resultado obtido: printf printf printf printf printf printf printf printf printf printf "%d" 46 "%f 46 "%10d" 46 "%010d" 46 "%o" 46 "%x" 46 "|%s|" "uma string" "|%15s|" "uma string" "|%-15s|" "uma string" "|%-15.5s|" "uma string"

www.serpro.gov.br

43

Introduo ao Linux: Perdendo o medo da tela preta

Usando o VIM

Aps instalar o vim (aptitude install vim) preciso congur-lo. Para isso edite o arquivo /etc/vim/vimrc e procure pelas linhas abaixo e descomente-as (remover o caracter " do incio das linhas): "syntax on . . . "if has("autocmd") " filetype indent on "endif As informaes a partir daqui at o nal da seo foram retiradas de ftp://ftp.vim.org/pub/vim/doc/ book/vimbook-OPL.pdf O VI um dos muitos editores de texto que podem ser utilizados em ambiente UNIX. Para acrescentar mais funcionalidades, foi criado o VIM (Vi IMproviment). O VIM tem dois modos, o de insero e o de comandos, que o modo padro quando ele iniciado. Para iniciar o modo de insero, basta pressionar a tecla i. Para voltar ao modo de comandos basta pressionar a tecla ESC. Ao abrirmos um arquivo no VIM, ele cria no mesmo diretrio um arquivo oculto com o mesmo nome, mas com o suxo .swp. Aps nalizar a edio do arquivo, esse arquivo deveria se apagado automaticamente. Caso contrrio, ao tentar abrir o arquivo novamente, aparecer a mensagem: E325: ATENO Foi encontrado um arquivo de troca de nome ".temp.txt.swp" pertence a: 21537850814com data: Thu May 19 15:07:15 2011 nome do arquivo: ~21537850814/teste/temp.txt modificado: no nome de usurio: 21537850814 nome do host: serpro-1462846 ID do processo: 6508 (ainda executando) Ao abrir o arquivo "temp.txt" com data de: Thu May 19 15:02:30 2011 (1) Outro programa pode estar editando o mesmo arquivo. Se for esse o caso, cuidado para no acabar com duas verses do mesmo arquivo ao fazer alteraes. Saia do programa, ou continue com cuidado. (2) Ocorreu um travamento numa sesso de edio desse arquivo. Se esse for o caso, use ":recover" ou "vim -r temp.txt" para recuperar as alteraes (veja ":help recovery"). Se voc j vez isso, exclua o arquivo de troca ".temp.txt.swp" para evitar esta mensagem. O arquivo de troca ".temp.txt.swp" j existe! [A]brir somente-leitura, (E)ditar mesmo assim, (R)ecuperar, (S)air, (C)ancelar: Se isso acontecer, verique se mais ningum est com o arquivo aberto antes de apagar o arquivo .swp. Para navegar pelo texto utiliza-se as teclas como a imagem abaixo:

www.serpro.gov.br

44

Introduo ao Linux: Perdendo o medo da tela preta

j
Figura 45: Teclas de navegao do VIM.

Ou seja, para movimentar o cursor um caracter para direita basta pressionar a tecla l. Para movimentar o cursor 3 caracteres a esquerda o comando 3h. Para subir 2 linhas, 2k, e assim sucessivamente. Para avanar uma palavra, pressione a tecla w. Para voltar uma palavra, pressione a tecla b. Para se deslocar 5 palavras para frente pressiona-se 5w. Para apagar o caracter onde o cursor est, pressione a tecla x. Para apagar 30 caracteres, do cursor para a direta usa-se 50x. Caso tenha cometido algum erro durante a edio, a tecla u desfaz o ltimo comando. Para refazer a combinao CTRL+r refaz. Depois de nalizada a edio do arquivo, entra-se no modo de comando e digita-se ESC6 :x. Isso salva o arquivo e sai do VIM. Para sair sem salvar as alteraes temos o comando ESC :q. Se o arquivo foi alterado mas ainda no foi salvo, necessrio sair incondicionalmente com o comando ESC :q!.

4.1

Editando um pouco mais rpido

Para ir para o incio da linha corrente pressiona-se a tecla ^. Para ir ao nal da linha pressiona-se $. Para ir para o nal da prxima linha pode-se usar a combinao 2$. Ou seja, o caracter $ signica nal da linha, e o ^ signica incio da linha (no somente no VIM). Por isso, para apagar at o nal da linha o comando d$, e para apagar at o incio da linha d^. Para apagar at o nal da linha pode-se usar tambm o comando D. Para localizar o prximo caracter na linha corrente o comando fx, onde x o caracter buscado. O comando Fx busca o caracter x antes do cursor.
3fa

fi

2fu

Fi 2Fa

Figura 46: Buscando na mesma linha.

Como visto anteriormente, para descer 3 linhas, o comando 3j, e para subir 4 linhas 4k. Ou seja, se o cursor estiver na primeira linha e for preciso ir para a linha 53, basta digitar 53j. Mas se o cursor no estiver
6 Pressionar

a tecla ESC do teclado

www.serpro.gov.br

45

Introduo ao Linux: Perdendo o medo da tela preta

na primeira linha isso no funciona. Para isso precisamos utilizar o comando 53G, que posicionar o cursor na linha 53. Para apagar um caracter usamos x, uma palavra dw, uma linha dd. Todos esses comandos funcionam com os contadores, ou seja, o comando 3x apaga 3 caracteres, o comando 4dd apaga 4 linhas. Mas para apagar 5 palavras, pode-se usar 5dw ou d5w. A direfena que o comando 5dw apaga uma palavra 5 vezes, e o comando d5w apaga 5 palavras. Claro que existe uma diferena de processamento, mas hoje em dia isso desprezvel (a menos que queira apagar centenas ou talvez milhares de palavras). O importante acostumar-se a utilizar um deles. O comando J junta duas linhas, adicionando um espao ao nal da primeira. Para juntar 4 linhas, usa-se 4J. Para trocar o caracter onde o cursor est posicionado existe o comando r. Por exemplo, ra substitui o caracter pela letra a. J o comando 5ra substitui 5 caracteres pela letra a. O ~ troca letras maisculas por minsculas e vice-versa. 10~ ir trocar 10 letras. Realizar buscas em todo o documento um processo simples. Basta digitar o caracter / seguido da string que se deseja procurar e depois pressionar Enter. Isso ir posicionar o cursor na prxima ocorrncia da string7 Para continuar procurando, pressione a letra n. Para fazer uma busca reversa, use o comando ?. Isso ir procurar a ocorrncia anterior da string. n ir continuar procurando para trs. Tanto na busca para frente como para trs, pode ser necessrio inverter a direo da busca. Isso feito com o comando N. Como dito anteriormente, $ signica nal da linha, e ^ signica incio da linha. Ento, para procurar uma string no incio de uma linha use-se /^string, e para procurar no nal da linha, /string$. Para editar mais de um arquivo na mesma tela podemos divid-la. Com um arquivo aberto em modo de comando, basta digitar :split arquivo2.txt. Isso ir dividir a tela e abrir o arquivo2.txt. O comando CTRL+ww vai para o prximo documento aberto. possvel copiar partes de um arquivo para outro usando os comandos normalmente. Por exemplo, para copiar uma linha do arquivo1.txt para arquivo2.txt, basta usar o CTRL+ww at chegar ao arquivo desejado, posicionar o cursor na linha a ser copiada e usar o comando yy para copiar. Usar CTRL+ww para ir ao arquivo destino, posicionar na linha de cima de onde o trecho deve ser colado e pressionar p para colar.

4.2

Modo Visual
Entrando em modo visual, ao movimentar o cursor, o texto ser selecionado. O VIM permite 3 modos visuais:

v: modo caracter a caracter. Ao movimentar o cursor lateralmente, seleciona caracter por caracter. Ao movimentar para baixo, seleciona o texto at a linha de baixo, na mesma coluna. V: modo linha a linha. Ao movimentar o cursor para baixo, seleciona a linha. Movimento lateral no tem efeito. CRTL+v: modo retangular. Ao movimentar lateralmente, seleciona caracter a caracter. Ao movimentar para baixo, seleciona o mesmo bloco da linha de baixo. Para apagar o texto selecionado, pressione d. Quando em modo caracter a caracter, o D apaga a linha. Quando em modo v, o comando c apaga o texto selecionado e entra em modo de insero. O comando C ir apagar o texto selecionado, ir entrar em modo de insero, mas ir abrir uma linha em branco. Quando em modo V, o comando c e C tem o mesmo efeito, apagar as linhas selecionadas, entrar em modo de insero e inserir uma linha em branco.
7 Os

caracteres especiais .*[]^%?~$ precisam ser escapados.

www.serpro.gov.br

46

Introduo ao Linux: Perdendo o medo da tela preta

O modo CTRL+v o mais interessante. O comando c apaga o bloco selecionado, e inclue o que for digitado em todas as linhas. O comando C apaga do bloco selecionado at o nal da linha e insere o que foi digitado em todas as linhas. Para fazer isso, selecione o bloco desejado e pressione a tecla c ou C; digite o texto desejado; pressione a tecla ESC duas vezes. O texto digitado ir aparecer em todas as linhas que foram selecionadas no bloco. Em qualquer um dos 3 modos, o comando J junta as linhas selecionadas, incluindo um espao em branco entre cada linha. Para juntar sem o espao entre linhas usa-se o comando gJ. O comando de insero funciona somente no modo visual em bloco. Para usar, selecione o bloco desejado; pressione I seguido do texto a ser inserido; pressione ESC duas vezes, e o texto ir aparecer antes do local selecionado. Em qualquer um dos 3 modos, o comando rx ir substituir o texto selecionado pela letra x.

4.3

Editando cdigo fonte

O VIM tem vrias funcionalidades que facilitam o trabalho de desenvolvimento, e algumas delas sero tratadas nessa sesso. O comando :syntax on ativa o destaque de sintaxe do cdigo. Ele diferencia conforme a extenso do arquivo. A auto indentao tambm feita conforme a extenso do arquivo, e ativada com o comando :set autoindent. Para indentar um arquivo j existente basta posicionar o cursor no caracter { que inicia o bloco a ser indentado e usar o comando =%. O comando % serve para localizar o par dos caracteres (), {}, [] e /* */. Ele tambm localiza o os comandos #ifdef, #else e #endif Ao posicionar o cursor sob uma varivel, o comando gd vai at a declarao dela.

4.4

Modo comando

A substituio de algum texto possvel com o comando :% s/palavra1/palavra2/g. Isso ir substituir em todo o texto, as ocorrncias de palavra1 por palavra2. possvel especicar o range ao qual a substituio deve ser aplicada. Para substituir, por exemplo, somente das linhas 4 a 8, o comando seria :4,8 s/palavra1/palavra2/. Se no tiver certeza, e quiser conrmar cada substituio, basta usar o c ao nal: :4,8 s/palavra1/palavra2/c. Para facilitar esse processo, pode-se habilitar a exibio das linhas com o comando :set number. Para desabilitar o comando :set nonumber. Se quiser executar um comando grep sem sair do VIM, o comando :grep include *. Isso procura pela ocorrncia da palavra include em todos os arquivos do diretrio atual. Para executar um shell sem sair do VIM, o comando :shell. Para voltar ao VIm, basta digitar exit. O VIm consegue auto-completar baseado em alguns arquivos. O comando CTRL +p. Quando algum trecho muito utilizado, pode-se criar abreviaturas. Por exemplo, o comando :abbreviate #i #include <. Ao digitar #i e pressionar espao, tab ou enter, ir substituir por #include <. Para ver todas as abreviaturas conguradas basta digitar :abbreviate. Alguns arquivos pode conter espaos ou tabs no nal das linhas. Esses espaos normalmente no so necessrios, e em alguns casos eles podem atrapalhar. O comando :%s/\s*$// remove todos eles. A lgica : %: especica o range do arquivo. No caso, o arquivo todo \s: espao em branco

www.serpro.gov.br

47

Introduo ao Linux: Perdendo o medo da tela preta

*: repetido 1 ou mais vezes $: seguido de nal de linha

www.serpro.gov.br

48

Introduo ao Linux: Perdendo o medo da tela preta

Gerenciamento de pacotes

Pacote um arquivo compactado que contm os todos os arquivos necessrios para a instalao de um software, bem como as informaes necessrias para o gerenciamento do pacote. Para criar um pacote necessrio: Compilar o software, gerando os arquivos binrios. Denir quais so as dependncias para o seu funcionamento. Criar scripts de pr e ps instalao e remoo. Criar scripts para congurao do software. Em Linux, muitas funcionalidades no so implementadas no software, mas so chamadas de bibliotecas dinmicas. Alguns softwares dependem de outros softwares para funcionar. Essas bibliotecas e/ou softwares so as dependncias. Ou seja, so outros pacotes que so necessrios para o funcionamento do software, mas que so distribudos separados. No exemplo abaixo, tanto o comando fsck como o grep utilizam a biblioteca /lib/i686/cmov/libc.so.6, ou seja, ambos chamam alguma funo que implementada por essa biblioteca. Para no precisar distribuir a mesma bibliteca em dois pacotes diferentes, faz-se com que ambos dependam de um mesmo pacote. $ ldd /sbin/fsck linux-gate.so.1 => (0xb78d2000) libblkid.so.1 => /lib/libblkid.so.1 (0xb78b0000) libuuid.so.1 => /lib/libuuid.so.1 (0xb78ac000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7765000) /lib/ld-linux.so.2 (0xb78d3000) $ ldd /bin/grep linux-gate.so.1 => (0xb7735000) libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb772b000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75e5000) /lib/ld-linux.so.2 (0xb7736000) Esse procedimento tem a vantagem de diminuir o tamanho dos pacotes e do espao utilizado pelos programas. Mas torna mais complicado o empacotamento, pois preciso garantir que todos os pacotes que dependam de determinada biblioteca sejam compatveis com a mesma verso dela (gura 47).
pacote grep-2.6.3-3 pacote grep depende de pacote libc6 >= 2.3 pacote libc6-2.11.2-10 pacote util-linux-2.17.2-9 pacote util-linux depende de pacote libc6 >=2.10

Figura 47: Pacote grep e linux-util dependem do pacote libc6

Gerenciador de pacotes um software que facilita a instalao, remoo, congurao e manuteno de pacotes. Por exemplo, ao instalar o pacote grep, o gerenciador de pacotes ir vericar se o pacote libc6 j est instalado; se no estiver, ele avisa que tal pacote necessrio. www.serpro.gov.br 49

Introduo ao Linux: Perdendo o medo da tela preta

Gerenciador avanado de pacotes um software que funciona junto com o gerenciador de pacotes. Ele resolve as dependncias do pacote durante a instalao. Por exemplo, ao instalar o pacote grep, o gerenciador avanado de pacotes ir vericar se o pacote libc6 j est instalador; se no estiver, ele instala o pacote.

5.1

Gerenciamento de pacotes no Debian


As informaes dessa seo foram retiradas de http://www.debian.org/doc/manuals/apt-howto/.

O gerenciador de pacotes no Debian o dpkg. O gerenciador avanado de pacotes o apt. O apt tem duas interfaces, o synaptics e o aptitude. O aptitude e o synaptics gerenciam melhor a remoo dos pacotes, por isso prefervel utilizar um deles ao invs de utilizar o apt. O arquivo de congurao mais importante do apt o /etc/apt/sources.list. Nele deve-se colocar os repositrios onde o apt ir buscar os pacotes. Ele tem o seguinte formato: deb http://host/debian distribuio seo1 seo2 seo3 deb-src http://host/debian distribuio seo1 seo2 seo3 Um exemplo: ############################################################# ################### OFFICIAL DEBIAN REPOS ################### ############################################################# ###### Debian Main Repos deb http://ftp.br.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.br.debian.org/debian/ squeeze main contrib non-free ###### Debian Update Repos deb http://security.debian.org/ squeeze/updates main contrib non-free deb http://ftp.br.debian.org/debian/ squeeze-proposed-updates main contrib non-free deb-src http://security.debian.org/ squeeze/updates main contrib non-free deb-src http://ftp.br.debian.org/debian/ squeeze-proposed-updates main contrib non-free ############################################################## ##################### UNOFFICIAL REPOS ###################### ############################################################## ###### 3rd Party Binary Repos #### Debian Multimedia - http://www.debian-multimedia.org/ ## Run this command: apt-get update && apt-get install debian-multimedia-keyring && apt-get update deb http://www.debian-multimedia.org stable main non-free Tambm possvel adicionar os CDs/DVDs de instalao, e repositrios locais.

5.2

Instalando um novo pacote

O apt utiliza um banco de dados de pacotes para saber quais pacotes esto disponveis, quais esto instalados e quais no esto. Para atualizar esse banco de dados deve-se executar o comando aptitude update. Ele busca as listas de pacotes disponveis nos repositrios congurados no arquivo /etc/apt/sources.list. importante executar esse comando de tempos em tempos e antes de instalar algum pacote. Para instalar um pacote preciso saber o nome dele8
8 pesquisa

de pacotes abordado na seo 5.3

www.serpro.gov.br

50

Introduo ao Linux: Perdendo o medo da tela preta O comando para instalar aptitude install pacote. Um exemplo: # aptitude install cpufreqd Os NOVOS pacotes a seguir sero instalados: cpufreqd fancontrol{a} libcpufreq0{a} libsensors4{a} libsysfs2{a} lm-sensors{a} 0 pacotes atualizados, 6 novos instalados, 0 a serem removidos e 8 no atualizados. preciso obter 333 kB de arquivos. Depois do desempacotamento, 1298 kB sero usados. Voc deseja continuar? [Y/n/?] Y Obter:1 http://ftp.br.debian.org/debian/ squeeze/main libcpufreq0 i386 007-1 [13,7 kB] Obter:2 http://ftp.br.debian.org/debian/ squeeze/main libsensors4 i386 1:3.1.2-6 [51,0 kB] Obter:3 http://ftp.br.debian.org/debian/ squeeze/main libsysfs2 i386 2.1.0+repack-1 [28,5 kB] Obter:4 http://ftp.br.debian.org/debian/ squeeze/main cpufreqd i386 2.4.2-1 [82,1 kB] Obter:5 http://ftp.br.debian.org/debian/ squeeze/main fancontrol all 1:3.1.2-6 [40,8 kB] Obter:6 http://ftp.br.debian.org/debian/ squeeze/main lm-sensors i386 1:3.1.2-6 [117 kB] Buscados 333 kB em 2s (149 kB/s) Selecionando pacote previamente no selecionado libcpufreq0. (Lendo banco de dados ... 28839 ficheiros e directrios actualmente instalados.) Desempacotando libcpufreq0 (de .../libcpufreq0_007-1_i386.deb) ... Selecionando pacote previamente no selecionado libsensors4. Desempacotando libsensors4 (de .../libsensors4_1%3a3.1.2-6_i386.deb) ... Selecionando pacote previamente no selecionado libsysfs2. Desempacotando libsysfs2 (de .../libsysfs2_2.1.0+repack-1_i386.deb) ... Selecionando pacote previamente no selecionado cpufreqd. Desempacotando cpufreqd (de .../cpufreqd_2.4.2-1_i386.deb) ... Selecionando pacote previamente no selecionado fancontrol. Desempacotando fancontrol (de .../fancontrol_1%3a3.1.2-6_all.deb) ... Selecionando pacote previamente no selecionado lm-sensors. Desempacotando lm-sensors (de .../lm-sensors_1%3a3.1.2-6_i386.deb) ... Processando gatilhos para man-db ... Configurando libcpufreq0 (007-1) ... Configurando libsensors4 (1:3.1.2-6) ... Configurando libsysfs2 (2.1.0+repack-1) ... Configurando cpufreqd (2.4.2-1) ... No cpufreq interface found, not starting cpufreqd. Configurando fancontrol (1:3.1.2-6) ... Configurando lm-sensors (1:3.1.2-6) ... O pacote cpufreqd depende dos pacotes fancontrol, libcpufreq0, libsensors4, libsysfs2 e lm-sensors, por isso eles foram selecionados para instalao tambm. Ao executar o aptitude install, se o pacote j estiver instalado, nada ser feito: # aptitude install cpufreqd Nenhum pacote ser instalado, atualizado ou removido. 0 pacotes atualizados, 0 novos instalados, 0 a serem removidos e 8 no atualizados. preciso obter 0 B de arquivos. Depois do desempacotamento, 0 B sero usados. Para reinstalar o pacote utiliza-se o comando aptitude reinstall: # aptitude reinstall cpufreqd Os pacotes a seguir sero REINSTALADOS: cpufreqd 0 pacotes atualizados, 0 novos instalados, 1 reinstalados, 0 a serem removidos e 8 no atualizados. preciso obter 0 B/82,1 kB de arquivos. Depois do desempacotamento, 0 B sero usados. (Lendo banco de dados ... 28952 ficheiros e directrios actualmente instalados.) Preparando para substituir cpufreqd 2.4.2-1 (usando .../cpufreqd_2.4.2-1_i386.deb) ... Stopping CPU Frequency daemon: cpufreqd. www.serpro.gov.br 51

Introduo ao Linux: Perdendo o medo da tela preta Desempacotando substituto cpufreqd ... Processando gatilhos para man-db ... Configurando cpufreqd (2.4.2-1) ... No cpufreq interface found, not starting cpufreqd.

5.3

Pesquisando pacotes

Para instalar um pacote necessrio saber seu nome correto. Para localizar um pacote pode-se usar o apt-get ou o aptitude: $ aptitude search squid p biosquid p biosquid-dev p gadmin-squid p gadmin-squid-dbg p gosa-plugin-squid p squid p squid-cgi p squid-common p squid-langpack p squid-prefetch p squid3 v squid3-cgi v squid3-client p squid3-common p squid3-dbg p squidclient p squidguard p squidguard-doc p squidtaild p squidview

utilities for biological sequence analysis headers and static library for biological sequence analysis GTK+ configuration tool for squid GTK+ configuration tool for squid (debug) squid plugin for GOsa Internet object cache (WWW proxy cache) A full featured Web Proxy cache (HTTP proxy) - control CGI Internet object cache (WWW proxy cache) - common files Localized error pages for Squid Simple page-prefetch for Squid web proxy A full featured Web Proxy cache (HTTP proxy) A full featured Web Proxy cache (HTTP proxy) - common files A full featured Web Proxy cache (HTTP proxy) - Debug symbols A full featured Web Proxy cache (HTTP proxy) - control utility filter and redirector plugin for Squid filter and redirector plugin for Squid - Documentation Squid log monitoring program monitors and analyses squid access.log fil

$ apt-cache search squid tinyproxy - A lightweight, non-caching, optionally anonymizing http proxy adzapper - proxy advertisement zapper add-on awffull - web server log analysis program biosquid-dev - headers and static library for biological sequence analysis biosquid - utilities for biological sequence analysis calamaris - log analyzer for Squid or Oops proxy log files ccze - A robust, modular log coloriser dansguardian - Web content filtering frox - Transparent caching ftp proxy gadmin-squid-dbg - GTK+ configuration tool for squid (debug) gadmin-squid - GTK+ configuration tool for squid gadmintools - GTK+ server administration tools (meta-package) gosa-plugin-squid - squid plugin for GOsa proxytrack - Build HTTP Caches using archived websites copied by HTTrack jesred - A redirector for the Squid proxy libsnmp-session-perl - Perl support for accessing SNMP-aware devices polipo - a small, caching web proxy sqcwa - Workaround for Squid not caching some pages squid-langpack - Localized error pages for Squid squid-prefetch - Simple page-prefetch for Squid web proxy squid-common - Internet object cache (WWW proxy cache) - common files squid - Internet object cache (WWW proxy cache) squid-cgi - A full featured Web Proxy cache (HTTP proxy) - control CGI squid3-common - A full featured Web Proxy cache (HTTP proxy) - common files www.serpro.gov.br 52

Introduo ao Linux: Perdendo o medo da tela preta squid3-dbg - A full featured Web Proxy cache (HTTP proxy) - Debug symbols squid3 - A full featured Web Proxy cache (HTTP proxy) squidclient - A full featured Web Proxy cache (HTTP proxy) - control utility squidguard-doc - filter and redirector plugin for Squid - Documentation squidguard - filter and redirector plugin for Squid squidtaild - Squid log monitoring program squidview - monitors and analyses squid access.log files srg - Fast, Flexible and Detailed log analysis for the Squid Proxy kernel-patch-wrr - Extension to traffic Control/network bandwidth management Como pode-se ver, o aptitude trs somente pacotes que tem a expresso no nome. O apt-cache trs todos os pacotes que tem alguma relaa ao com a expresso.

Exerccio:
Utilizando o man, veja o signicado da primeira coluna ao executar o comando aptitude search. Caracter p c i v Signicado

Tabela 6: Caracteres possveis na primeira coluna do aptitude search

Ambos retornam o nome do pacote e uma descrio. Para saber mais informaes pode-se usar os comando aptitude show ou apt-cache show. Ambos trazem informaes muito importantes como verso e dependncias. $ aptitude show squid3 Pacote: squid3 Novo: sim Estado: nao instalado Versao: 3.1.6-1.2 Prioridade: opcional Secao: web Mantenedor: Luigi Gangitano <luigi@debian.org> Tamanho Descompactado: 3654 k Depende de: libc6 (>= 2.7), libcap2 (>= 2.10), libcomerr2 (>= 1.01), libdb4.8, libexpat1 (>= 1.95.8), libgcc1 (>= 1:4.1.1), libgssapi-krb5-2(>= 1.8+dfsg), libk5crypto3 (>= 1.6.dfsg.2), libkrb5-3 (>= 1.6.dfsg.2), libldap-2.4-2 (>= 2.4.7), libltdl7 (>= 2.2.6b), libpam0g(>= 0.99.7.1), libsasl2-2, libstdc++6 (>= 4.4.0), libxml2 (>= 2.7.4), netbase, adduser, logrotate (>= 3.5.4-1), squid3-common (=3.1.6-1.2), lsb-base Sugere: squidclient, squid-cgi, resolvconf (>= 0.40), smbclient Descricao: A full featured Web Proxy cache (HTTP proxy) Squid is a high-performance proxy caching server for web clients, supporting FTP, gopher, and HTTP data objects. Squid version 3 is a major rewrite of Squid in C++ and introduces a number of new features including ICAP and ESI support. Pagina web: http://www.squid-cache.org $ apt-cache show squid3 Package: squid3 Priority: optional Section: web Installed-Size: 3568 Maintainer: Luigi Gangitano <luigi@debian.org> www.serpro.gov.br 53

Introduo ao Linux: Perdendo o medo da tela preta Architecture: i386 Version: 3.1.6-1.2 Depends: libc6 (>= 2.7), libcap2 (>= 2.10), libcomerr2 (>= 1.01), libdb4.8, libexpat1 (>= 1.95.8), libgcc1 (>= 1:4.1.1), libgssapi-krb5-2 (>= 1.8+dfsg), libk5crypto3 (>= 1.6.dfsg.2), libkrb5-3 (>= 1.6.dfsg.2), libldap-2.4-2 (>= 2.4.7), libltdl7 (>= 2.2.6b), libpam0g (>= 0.99.7.1), libsasl2-2, libstdc++6 (>= 4.4.0), libxml2 (>= 2.7.4), netbase, adduser, logrotate (>= 3.5.4-1), squid3-common (= 3.1.6-1.2), lsb-base Suggests: squidclient, squid-cgi, resolvconf (>= 0.40), smbclient Filename: pool/main/s/squid3/squid3_3.1.6-1.2_i386.deb Size: 1447238 MD5sum: dfe5c39ca1ddc4008301c20b4ba0eb8a SHA1: 6ca9a3f47d1e3eecc320f96431537b21be50d919 SHA256: e909c704d23f8022c84d0feb8708aa3ea1084f0e95cbd59e7fee596eafd5cf6a Description: A full featured Web Proxy cache (HTTP proxy) Squid is a high-performance proxy caching server for web clients, supporting FTP, gopher, and HTTP data objects. . Squid version 3 is a major rewrite of Squid in C++ and introduces a number of new features including ICAP and ESI support. Homepage: http://www.squid-cache.org Tag: admin::file-distribution, admin::monitoring, implemented-in::{c,c++,perl}, interface::{commandline,daemon,web}, network::{client,firewall,load-balancing, routing,server,service}, protocol::{dns,ftp,http,ident,ip,ldap,radius,ssl,xmlrpc}, role::program, scope::application, security::authentication, security::firewall, use::{filtering,proxying,transmission}, works-with::network-traffic, works-with::text, works-with-format::html, works-with-format::xml Outro comando que trs informaes sobre o pacote o apt-cache showpkg: $ apt-cache showpkg squid3 Package: squid3 Versions: 3.1.6-1.2 (/var/lib/apt/lists/ftp.br.debian.org_debian_dists_squeeze_main_binary-i386_Packages) Description Language: File: /var/lib/apt/lists/ftp.br.debian.org_debian_dists_squeeze_main_binary-i386_Packages MD5: 0ad37b028ae214b43e8d47ad13b9089b Reverse Depends: squidguard,squid3 squid3-dbg,squid3 3.1.6-1.2 jesred,squid3 Dependencies: 3.1.6-1.2 - libc6 (2 2.7) libcap2 (2 2.10) libcomerr2 (2 1.01) libdb4.8 (0 (null)) libexpat1 (2 1.95.8) libgcc1 (2 1:4.1.1) libgssapi-krb5-2 (2 1.8+dfsg) libk5crypto3 (2 1.6.dfsg.2) libkrb5-3 (2 1.6.dfsg.2) libldap-2.4-2 (2 2.4.7) libltdl7 (2 2.2.6b) libpam0g (2 0.99.7.1) libsasl2-2 (0 (null)) libstdc++6 (2 4.4.0) libxml2 (2 2.7.4) netbase (0 (null)) adduser (0 (null)) logrotate (2 3.5.4-1) squid3-common (5 3.1.6-1.2) lsb-base (0 (null)) squidclient (0 (null)) squid-cgi (0 (null)) resolvconf (2 0.40) smbclient (0 (null)) Provides: 3.1.6-1.2 Reverse Provides: Vamos supor que seja preciso determinado comando, mas seu pacote no esteja instalado, mas no sabe-se qual o nome do pacote. Para isso existe o comando apt-le, que pode ser usado como abaixo: $ apt-file search lspci www.serpro.gov.br 54

Introduo ao Linux: Perdendo o medo da tela preta debian-installer: /usr/share/doc/debian-installer/devel/hardware/arm/glantank/info/lspci debian-installer: /usr/share/doc/debian-installer/devel/hardware/arm/glantank/info/lspci-v debian-installer: /usr/share/doc/debian-installer/devel/hardware/arm/kurobox-pro/info/lspci debian-installer: /usr/share/doc/debian-installer/devel/hardware/arm/n2100/info/lspci debian-installer: /usr/share/doc/debian-installer/devel/hardware/arm/n2100/info/lspci-v debian-installer: /usr/share/doc/debian-installer/devel/hardware/mipsel/cobalt/info/lspci grub-coreboot: /usr/lib/grub/i386-coreboot/lspci.mod grub-efi-amd64: /usr/lib/grub/x86_64-efi/lspci.mod grub-efi-ia32: /usr/lib/grub/i386-efi/lspci.mod grub-ieee1275: /usr/lib/grub/i386-ieee1275/lspci.mod grub-pc: /usr/lib/grub/i386-pc/lspci.mod manpages-ja: /usr/share/man/ja/man8/lspci.8.gz manpages-pl: /usr/share/man/pl/man8/lspci.8.gz manpages-tr: /usr/share/man/tr/man8/lspci.8.gz manpages-zh: /usr/share/man/zh_CN/man8/lspci.8.gz manpages-zh: /usr/share/man/zh_TW/man8/lspci.8.gz pciutils: /usr/bin/lspci pciutils: /usr/share/man/man8/lspci.8.gz Ele lista todos os pacotes que contenham algum arquivo com esse nome como parte. Se a procura tivesse sido por somentels, ele traria tambm o pacote que contm o pacote lspci.

Exerccio:
Faa uma pesquisa que retorne somente o pacote que tenha o comando /usr/bin/lspci.

5.4

Atualizando pacotes

O comando aptitude safe-upgrade atualiza um pacote se ele j estiver instalado, caso contrrio, nada ser feito. Se executado sem nenhum parmetro, o comando ir atualizar todos os pacotes que tenham uma nova verso disponvel. Algumas vezes, para atualizar um pacote necessrio remover outro. Nesses casos o aptitude safe-upgrade no atualizar esse pacote. Para conseguir isso deve-se utilizar o comando aptitude full-upgrade.

5.5

Removendo pacotes

A remoo de pacotes tem dois conceitos. O remove e o purge. O purge faz a remoo do pacote e de todos seus arquivos de congurao. Exemplo abaixo: # aptitude purge squid3 Os pacotes a seguir sero REMOVIDOS: libltdl7{u} squid-langpack{u} squid3{p} squid3-common{u} 0 pacotes atualizados, 0 novos instalados, 4 a serem removidos e 8 no atualizados. preciso obter 0 B de arquivos. Depois do desempacotamento, 10,3 MB sero liberados. Voc deseja continuar? [Y/n/?] Y (Lendo banco de dados ... 31537 ficheiros e directrios actualmente instalados.) Removendo squid3 ... Stopping Squid HTTP Proxy 3.x: squid3 Waiting.....................done. . Expurgando arquivos de configurao de squid3 ... Purging startup links... Purging logfiles... www.serpro.gov.br 55

Introduo ao Linux: Perdendo o medo da tela preta Please, remove /var/spool/squid3 yourself. Processando gatilhos para man-db ... (Lendo banco de dados ... 31482 ficheiros e directrios actualmente instalados.) Removendo libltdl7 ... Removendo squid3-common ... Removendo squid-langpack ... # ls /etc/squid3/ ls: impossvel acessar /etc/squid3/: Arquivo ou diretrio no encontrado

5.6

Compilando cdigo fonte

O Debian atualmente tem mais de 29mil pacotes. Mas eventualmente necessrio compilar um programa, seja para adicionar alguma funcionalidade, seja para obter uma verso mais recente. Caso j exista o pacote ocial prefervel sua atualizao no somente pela facilidade de instalao, mas tambm pela facilidade de gerenciamento e pela segurana. Abaixo um exemplo de compilao de um pacote: $ wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz --2011-05-25 13:36:49-- http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz Resolvendo www.ex-parrot.com... 93.93.130.49 Conectando-se a www.ex-parrot.com|93.93.130.49|:80... conectado. A requisicao HTTP foi enviada, aguardando resposta... 200 OK Tamanho: 160381 (157K) [application/gzip] Salvando em: "iftop-0.17.tar.gz" 100%[=====================================>] 160381 139K/s em 1,1s

2011-05-25 13:36:51 (139 KB/s) - "iftop-0.17.tar.gz" salvo [160381/160381] $ tar xzf iftop-0.17.tar.gz $ cd iftop-0.17/ $ ./configure $ make $ make install O comando ./congure para congurar o pacote. Ele verica se todas as dependncias esto resolvidas e cria o Makefile. Para ver funcionalidades possveis de serem adicionadas ao programa basta executar ./congure --help, e depois adicionar o parmetro ao comando, por exemplo, ./congure --enable-defaultpromiscuous. O comando make compila os cdigos fonte gerando os objetos, faz a ligao com as bibliotecas dinmicas e/ou estticas e gera o(s) executvei(s). O make install copia os executveis, as bibliotecas, os headers, os manuais e os arquivos de congurao para seus devidos lugares. Antes de compilar um programa deve-se sempre ler a documentao para saber a maneira correta de compilar, as opes e as dependncias.

Exerccio:

www.serpro.gov.br

56

Introduo ao Linux: Perdendo o medo da tela preta

Baixar o pacote iftop, compilar e instalar. Obs.: necessrio instalar os pacotes gcc, make, libpcap-dev e libncurses5-dev

www.serpro.gov.br

57

Introduo ao Linux: Perdendo o medo da tela preta

6
6.1

Conguraes bsicas
Personalizao do ambiente
Informaes retiradas de http://focalinux.cipsga.org.br/guia/avancado/ch-pers.htm

As variveis de ambiente so variveis que podem alterar o funcionamento do sistema sem precisar alterar arquivos de congurao. Elas so individuais e cam residentes em memria, ou seja, ao efetuar logoff ou desligar o sistema elas so apagadas. Para denir uma nova varivel de ambiente basta fazer VARIAVEL=valor. Isso dene uma varivel para o ambiente atual. O mais correto export-la para que, se um sub-shell for aberto a partir do shell atual, a varivel tambm possa ser utilizada. Para isso execute export VARIAVEL=valor. A visualizao feita com o comando echo $VARIAVEL. Obs1.: Para declarar a varivel no h espao antes e depois do sinal de igual. Obs2.: Para exibir o contedo da varivel deve-se usar o $. Para declarar no deve-se colocar o $. No Debian, para que uma varivel seja inicializada em todo login ela deve ser denida em /etc/environment. O arquivo /etc/profile onde devem ser colocados comando para serem executados toda vez que um usurio efetuar login (como denir um alias9 para os usurios, por exemplo). Ao ser chamado atravs de um shell que solicite login, o bash l esse arquivo e executa os comandos contidos nele. Depois ele procura por arquivo de congurao pessoais dentro do home do usurio. A ordem de execuo : /etc/prole ~/.bash_prole ~/.bash_login ~/.prole Aps executar o /etc/profile o bash procura pelos outros arquivos, e caso encontre, executa somente o primeiro que encontrar. Algoritmicamente seria: exec /etc/profile if ( ~/.bash_profile exists) { exec ~/.bash_profile exit } else if ( ~/.bash_login exists) { exec ~/.bash_login exit } else exec ~/.profile endif Caso o bash seja carregado atravs de um shell que no requer login (um terminal no X, por exemplo), o seguinte arquivo executado: ~/.bashrc. O diretrio /etc/skel contm os modelos de arquivos .bash_profile e .bashrc que sero copiados para o diretrio pessoal dos usurios no momento que for criada uma conta no sistema.
9 criao

de alias abordado em 3.19

www.serpro.gov.br

58

Introduo ao Linux: Perdendo o medo da tela preta

6.2

/etc/fstab
Informaes retiradas de http://focalinux.cipsga.org.br/guia/iniciante/ch-disc.html

O arquivo /etc/fstab onde ca especicado quais as parties sero montadas quando o sistema ligado. Nele tambm pode-se colocar parties que no sero montadas automaticamente, para facilitar o processo de montagem. O formato do arquivo pode ser visto abaixo: # <file system><mount point><type><options><dump><pass> proc /proc proc defaults /dev/sda2 / ext4 errors=remount-ro /dev/sda1 none swap sw /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto Os campos so: Campo le system mount point type options dump pass Descrio A partio que ser montada Diretrio onde a partio ser montada Sistema de arquivos da partio montada Opes de montagem da partio. Diferentes sistemas de arquivos tem diferentes opes Especica a frequncia de backup feita com o programa dump no sistema de arquivos. 0 desativa o backup. Dene a ordem em que o sistemas de arquivos sero vericados na inicializao. 0 desativa a vericao. A partio / deve ser a primeira a ser vericada
Tabela 7: Campos do /etc/fstab

0 0 0 0

0 1 0 0

6.3

/etc/networks

As conguraes de rede no Debian cam dentro deste diretrio. O arquivo interfaces onde ca a congurao das placas. Um exemplo abaixo: # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp Nesse caso a interface eth0 ir ser habilitada automaticamente e ser congurada atravs de um servio de DHCP. Para congurar a placa com IP xo a congurao mostrada abaixo: auto eth0 iface eth0 inet static address 192.168.0.10 netmask 255.255.255.0 gateway 192.168.0.1 broadcast 192.168.0.255 #opcional network 192.168.0.0 #opcional www.serpro.gov.br 59

Introduo ao Linux: Perdendo o medo da tela preta

Depois de alterar o arquivo, pode-se reiniciar a rede com o comando /etc/init.d/networking restart. Para habilitar e desabilitar uma interface de rede, os comandos so respectivamente ifup eth0 e ifdown eth0. Para saber se uma interface de rede est linkada o comando mii-tool. Obs.: As linhas auto lo e iface lo inet loopback no devem ser removidas, pois conguram a interface loopback com o endereo 127.0.0.1

6.4

/etc/hostname e /etc/hosts

O arquivo /etc/hostname deve ter o nome da mquina, sem o domnio. o nome que ser retornado ao executar o comando hostname sem nenhum parmetro. Para alterar o domnio DNS deve-se alterar o arquivo /etc/hosts. Nele deve-se colocar o nome FQDN da mquina, conforme o exemplo abaixo: 127.0.0.1 serv1.spo.serpro serv1 localhost ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters # o nome FQDN deve ser o primeiro

O nome FQDN retornado ao executar o comando hostname -f. Para retornar somente o domnio o comando hostname -d.

6.5

/etc/resolv.conf

Arquivo onde deve-se especicar quais os servidores DNS a mquina deve consultar. Pode-se colocar at 3 servidores DNS. Abaixo um exemplo: nameserver 192.168.0.1 nameserver 192.168.0.2 search spo.serpro bsa.sepro domain spo.serpro No parmetro nameserver so colocados os servidores DNS. O primeiro servidor consultado; se ele no estiver disponvel, o segundo ser consultado. Ou seja, se o primeiro servidor estiver disponvel, e o nome no for encontrado nele, a resposta ser a de nome no encontrado, mesmo que esse nome exista no segundo servidor. Se a pesquisa for por um nome sem domnio (ping serv2, por exemplo), ser adicionado o domnio especicado no parmetro search. A lista pode conter at 6 domnios. O domnio padro para pesquisas determinado pelo parmetro domain.

6.6

Teclado em modo texto

Para alterar o layout do teclado em modo texto preciso instalar o pacote console-data. Ao instalar, abrir o congurador, onde pode-se selecionar o tipo do teclado. Se o pacote j estiver instalado, o comando para recongur-lo dpkg-recongure console-data. Isso ir abrir uma tela de dilogo. Deve-se escolher Selecionar mapa de teclado da lista e arquiteturas qwerty Brazilian. Depois, para teclados com , escolher Standard. Para teclados sem , escolher BR-Latin1 Tambm possvel fazer manualmente com o comando loadkeys br-abnt2 ou loadkeys br-latin1, conforme o layout do teclado. www.serpro.gov.br 60

Introduo ao Linux: Perdendo o medo da tela preta

6.7

Mouse em modo texto

Para o mouse funcionar em modo texto basta instalar o pacote gpm. A congurao padro funciona com a maioria dos mouses. Caso no funcione, basta editar o arquivo /etc/gpm. Para mouses seriais, o parmetro device deve ser /dev/ttyS0. Para mouses PS/2 ou USB, deve ser /dev/input/mice.

6.8

Exerccios

1. Criar um arquivo de swap de 512MB e adicionar ao fstab. 2. Adicione uma interface de rede eth0:1 com o endereo IP 192.168.50.3, mscara de sub-rede 255.255.255.0. 3. Adicione ao arquivo hosts o endereo IP congurado no exerccio anterior. Ele deve resolver com o nome lab03.serpro

www.serpro.gov.br

61

Introduo ao Linux: Perdendo o medo da tela preta

Servios

Servios so programas que cam em execuo, aguardando uma requisio. Cada servio espera a requisio em uma determinada porta. Um servidor de pginas, por exemplo, espera na porta 80. Em Linux os servios so tambm chamados de daemons. O arquivo /etc/services contem uma lista com servios e portas utilizadas. A instalao feita como a de qualquer outro programa. A diferena que, provavelmente, abrir uma janela de dilogo perguntando algumas coisas sobre sua congurao. Essas conguraes normalmente podem ser alteradas manualmente depois. Os arquivos de congurao cam em sua maioria dentro do diretrio /etc. Abaixo uma tabela com alguns dos diversos servios existentes em Linux. Pacote apache2 postgresql mysql-server samba Descrio Servidor de pginas. Muito usado atualmente, principalmente em conjunto com o pacote php5 Gerenciador de banco de dados PostgreSQL Gerenciador de banco de dados MySQL Servidor que implementa o protocolo SMB/CIFS, que permite compartilhamento de arquivos entre Windows e UNIX. Pode funcionar como um controlador de domnio como o Windows NT4 Servidor de impresso Servidor DNS Servidor DHCP Servidor de FTP OpenLDAP - servidor de diretrios Servidores de e-mail proxy e cache para http, https, ftp e gopher
Tabela 8: Alguns servios para Linux

cups bind9 dhcp3-server vsftpd slapd sendmail, postx squid3

Alm desses, existem vrios outros pacotes que desempenham funo similar, e vrios outros servios disponveis. Normalmente os servios devem iniciar quando o sistema liga. O diretrio onde cam os scripts de inicializao dos servios o /etc/init.d. Para iniciar, parar, ou reiniciar um servio manualmente usa-se respectivamente os comandos /etc/init.d/servico start, /etc/init.d/servico stop e /etc/init.d/servico restart.

7.1
7.1.1

Instalando e congurando alguns servios


OpenLDAP

Atualmente no Debian, o OpenLDAP j vem por padro com a congurao atravs do cn=cong, o que permite a chamada runtime conguration. Antes, com a congurao atravs do arquivo slapd.conf era necessrio reiniciar o servio quando fossem feitas alteraes. O pacote do servidor OpenLDAP o slapd. Para manipular a base muitas vezes utiliza-se o pacote ldap-utils. H tambm uma ferramenta web chamada phpldapadmin. Para instalar basta executar o comando: # aptitude install slapd ldap-utils phpldapadmin Aps instalar o pacote slapd, ir abrir uma janela de dilogo perguntando a senha do usurio administrador da base. Por padro a raz ser baseada no domnio DNS do servidor. www.serpro.gov.br 62

Introduo ao Linux: Perdendo o medo da tela preta Essa informao obtida atravs do comando hostname -d. Por exemplo, se o domnio for empresa.com.br, a raz do banco ser dc=empresa,dc=com,dc=br. Obs.: Nesse captulo ser levado em considera o que a raz do banco dc=empresa,dc=com,dc=br. c Caso seja necessrio alterar a raz basta removar a congurao atual (cd /etc/ldap; rm -rf slapd.d) e recongurar o pacote (dpkg reconfigure slapd). Abaixo as telas de recongurao:

Figura 48: Omitir a congurao? Colocar no para alterar a congurao atual.

Figura 49: Domnio DNS. Denir a raiz da base.

Figura 50: Empresa. Denir a raiz da base.

Figura 51: Senha do usurio administrador. Ser pedido uma conrmao.

www.serpro.gov.br

63

Introduo ao Linux: Perdendo o medo da tela preta

Figura 52: Denir o Backend utilizado.

Figura 53: Apagar o banco quando o pacote slapd for expurgado?

Figura 54: Mover a base antiga?

Figura 55: Permitir protocolo LDAPv2? Respondendo no, somente ser permitido o protocolo v3.

Com isso j possvel realizar buscas no diretrio: $ ldapsearch -xh localhost -WD "cn=admin,dc=empresa,dc=com,dc=br" \ -b dc=empresa,dc=com,dc=br Enter LDAP Password: # extended LDIF # # LDAPv3 # base <dc=empresa,dc=com,dc=br> with scope subtree www.serpro.gov.br 64

Introduo ao Linux: Perdendo o medo da tela preta # filter: (objectclass=*) # requesting: ALL # # empresa.com.br dn: dc=empresa,dc=com,dc=br objectClass: top objectClass: dcObject objectClass: organization o: empresa.com.br dc: empresa # admin, empresa.com.br dn: cn=admin,dc=empresa,dc=com,dc=br objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9R0dRL3NFbmNzT0pLUDlEYXJubnBsVWdBalVvQ3hkaDk= # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2 Para que seja possvel congurar o OpenLDAP preciso ter permisso para alterar a base cn=cong. Isso pode ser conseguido de duas maneiras: denindo a senha para o usurio cn=admin,cn=cong ou dando permisso para o usurio cn=admin,dc=empresa,dc=com,dc=br. A poltica a ser adotada depende da estrutura da empresa. Se o mesmo grupo for administrar o servio e os dados, pode-se utilizar o mesmo usurio. Mas se um grupo for administrar o servio e outro for administrar os dados, o melhor ter usurios diferentes. Nessa apostila ser dada a permisso ao usurio cn=admin,dc=empresa,dc=com,dc=br. Dentro do diretrio /etc/ldap/slapd.d/cn=cong existe o arquivo olcDatabase=0cong.ldif, que contm a congurao da base cn=cong. Basta procurar dentro dele uma linha comeada por olcAccess, e adicionar abaixo dela a linha:
olcAccess : { 1 } t o * by dn =" cn=admin , dc=empresa , dc=com , dc= b r " w r i t e

Como essa alterao foi feita diretamente no arquivo, ser necessrio reiniciar o slapd. Se ela tivesse sido feita pelo diretrio (usando arquivo ldif, por exemplo), o acesso j estaria disponvel imediatamente. Feito isso, o usurio cn=admin,dc=empresa,dc=com,dc=br j tem acesso ao banco cn=cong. Para congurar o phpldapadmin necessrio editar o arquivo /etc/phpldapadmin/cong.php. Para que o phpldapadmin enxergue os dois bancos, necessrio alterar a linha: $servers->setValue('server','base',array('dc=example,dc=com')); Deixando-a conforme abaixo: $servers->setValue('server','base',array('dc=empresa,dc=com,dc=br','cn=config')); Para acessar basta abrir um navegador e digitar http://ip-do-servidor/phpldapadmin www.serpro.gov.br 65

Introduo ao Linux: Perdendo o medo da tela preta

Para efetuar o login, deve-se utilizar o DN do usurio. No arquivo de cong.php h uma linha que dene qual ser o usurio padro. Para facilitar, basta alter-la. Procure pela linha abaixo: $servers->setValue('login','bind_id','cn=admin,dc=example,dc=com'); E altere para: $servers->setValue('login','bind_id','cn=admin,dc=empresa,dc=com,dc=br');

www.serpro.gov.br

66

Introduo ao Linux: Perdendo o medo da tela preta

8
8.1

Comandos avanados
gzip
O gzip um comando para compactar arquivos. o compactador utilizado pelo logrotate. Para compactar um arquivo basta digitar

gzip arquivo.txt Isso ir compactar o arquivo, e adicionar a extenso .gz ao seu nome. Para ver informaes sobre ele, basta utilizar o parmetro -l: $ gzip -l arquivo.txt.gz compressed 230

uncompressed 344

ratio uncompressed_name 43.6% arquivo.txt

Para compactar mais de um arquivo mais interessante utilizar em conjunto com o comando tar, tratado na seo 8.3. Para descompactar pode-se fazer de duas maneiras: $ gzip -d arquivo.txt.gz $ gunzip arquivo.txt.gz O pacote gzip traz tambm alguns utilitrios para manipulao de arquivos texto como zcat, zless, zdiff, zgrep, etc. Eles tem funcionamento muito parecido com os comandos originais.

8.2

bzip2

Comando de compactao que normalmente consegue uma taxa de compresso mais alta que o gzip. Os parmetros so muito parecidos. $ bzip2 arquivo.txt $ bunzip2 arquivo.txt.bz2

8.3

tar

O tar foi desenvolvido originalmente para trabalhar com ta (tape archiver). Ele para empacotar arquivos. Cdigos fonte de programas normalmente so empacotados utilizando o tar. Para compactar um diretrio chamado documentos, e criar um arquivo chamado becape_documentos.tar.gz, por exemplo, o comando seria: $ tar czf becape_documentos.tar.gz documentos O parmetro c a operao, que nesse exemplo a criao do arquivo. Entre as operaes possveis temos: www.serpro.gov.br 67

Introduo ao Linux: Perdendo o medo da tela preta

Opo A c d r t u x

Descrio Concatena um arquivo tar ao nal do arquivo Cria um novo arquivo Compara o arquivo e o sistema de arquivos Adiciona arquivos ao nal do arquivo Lista o contedo de um arquivo Adiciona arquivos ao nal do arquivo somente se o arquivo a ser adicionado for novo Extrai os arquivos
Tabela 9: Operaes do comando tar

O parmetro f dene que o tar ir trabalhar com arquivo. Sem ele, o comando ca procurando por uma unidade de ta. O parmetro z dene que o arquivo ser compactado usando o comando gzip. Outras opes na tabela abaixo: Opo z j v p f C Descrio Compactar usando comando gzip Compactar usando comando bzip2 Usar modo verbose Preservar as permisses dos arquivos Usar um arquivo Alterar o diretrio para realizar a operao
Tabela 10: Algumas opes do comando tar

Uma descrio pode ser vista na imagem abaixo:

Figura 56: Descrio do comando tar para criao

Se ao invs de compactar com bzip2, quiser compactar com gzip, basta trocar o parmetro j por z. Para descompactar, basta trocar o c por x. Mas o diretrio deve ser omitido. Se deseja que o contedo seja extrado dentro de um local especco, preciso usar o parmetro -C, como abaixo:

Figura 57: Descrio do comando tar para extrao

www.serpro.gov.br

68

Introduo ao Linux: Perdendo o medo da tela preta

preciso bastante ateno ao trabalhar com o tar. O modo como o arquivo foi criado inuencia o local de extrao. O exemplo abaixo demonstra isso: $ cd /home/usuario $ tar cjvf becape1.tar.bz2 arquivos $ tar cjvf becape2.tar.bz2 /home/usuarios/arquivos Os dois comandos iro compactar o contedo do diretrio arquivos que est dentro de /home/usuario. Mas o arquivo becape2.tar.bz2 guarda o caminho desde o raiz, e o arquivo becape1.tar.bz2 guarda o caminho relativo ao diretrio onde o comando foi executado. Portanto, ao extrair deve-se levar isso em considerao. Isso pode ser visto abaixo: $ cd /home/usuario/recupera $ tar xjvf /home/usuario/becape1.tar.bz2 $ tar xjvf /home/usuario/becape2.tar.bz2 $ ls arquivo home O primeiro comando ir criar um diretrio arquivos dentro de /home/usuario/recupera e ir extrair o contedo dentro desta estrutura. O segundo comando ir extrair o contedo do arquivo becape2.tar.bz2 dentro de /home/usuario/recupera, mas ir criar a estrutura de diretrios, ou seja, dentro do diretrio, ser criado um home/usuario/arquivos

8.4

grep, egrep, fgrep

O grep o programa mais usado para procurar por um padro em um arquivo texto. O egrep a verso estendida, e possibilita a utilizao de expresses regulares. O fgrep a verso rpida, que busca uma string simples. Atualmente as 3 verses foram unidas no grep. Apesar do egrep e do fgrep ainda estarem disponveis, eles podem ser removidos de verses posteriores. A utilizao bsica do grep seria como abaixo: $ grep Linux exercicio3.txt GNU/Linux e um sistema operacional: uma serie de programas que deixam voce interagir com o computador e executar outros programas. ... A parte mais importante de um sistema operacional e o kernel. Num sistema GNU/Linux, o componente do kernel e o Linux. O resto do sistema consiste noutros programas, muitos dos quais escritos por ou para o Projeto GNU; Como o kernel sozinho nao forma um sistema operacional utilizavel, nos preferimos utilizar o termo GNU/Linux para nos referirmos aos sistemas a que muitas pessoas vulgarmente chamam de Linux. Ou seja, o comando retorna todas as linhas onde existir a string Linux. Por ser uma string simples, poderiase utilizar o fgrep, ou ento o grep -F, que substitui o fgrep. Importante notar tambm que o grep case sensitive, e para ignorar usa-se o parmetro -i. Para fazer buscar mais complexas deve-se utilizar o grep -E (substituto do egrep), e utilizar expresses regulares. Expresses regulares podem ser utilizadas em muitas outras ferramentas. Durante o curso sero abordadas somente as mais simples, pois um assunto que rende um curso a parte. O arquivo exercicio3.txt tem 3 linhas, e em todas elas temos a palavra GNU. A primeira linha inicia com a palavra GNU. Para procurar por todas as linhas que iniciam com a expresso o comando seria: $ grep -E ^GNU exercicio3.txt GNU/Linux e um sistema operacional: uma serie de programas que deixam voce interagir com o computador e executar outros programas. www.serpro.gov.br 69

Introduo ao Linux: Perdendo o medo da tela preta

Ou seja, a expresso regular ^GNU signica a palavra GNU no incio da linha. Para procurar por uma linha que termina com algo, a expresso seria GNU$. No arquivo exercicio3.txt existe uma linha que termina com GNU;, ou seja, a expresso GNU$ no ir retornar nada. A expresso GNU.$ busca por pela expresso seguida por algum caracter, no nal da linha. Se no tenho certeza se existe ou no o ltimo caracter, a expresso seria GNU.?$. Abaixo uma tabela com algumas expresses regulares: Expresso . * + ? ^ $ \b [...] Descrio Casa com um e somente um caracter qualquer Casa com qualquer quantidade (inclusive 0) de qualquer caracter O + como o *, mas exige a ocorrncia pelo menos 1 vez O caracter anterior opcional, ou seja, pode aparecer 0 ou 1 vez Procura pela expresso no incio da linha Procura pela expresso no nal da linha Especica a borda de uma palavra. Por exemplo, \bdia procura por uma palavra que comea com dia, como diagrama, diafragma, dia. \bdia\b procura exatamente pela palavra dia Procura por um dos caracteres que estiver dentro dos colchetes. O caracter ^ como primeiro caracter inverte a busca, ou seja, procura por caracteres que no estejam na lista. O hfen ou ] como primeiro caracter fazem parte da lista. O hfen no meio da lista signica intervalo, por exemplo, a-z signica todas as letras minsculas. Casa com um intervalo entre n e m. Por exemplo a expresso a\{2,5} procura por aa, aaa, aaaa, aaaaa. Para procurar uma quantidade exata a expresso seria \{n}. Para procurar por pelo menos n a expresso \{n,} o alternativo. Casa com uma coisa ou outra. Por exemplo bom-dia|boa-tarde casa com uma ou outra string Os parnteses agrupam um conjunto. Por exemplo boa-\(tarde|noite\) procura por boa-tarde ou boa-noite
Tabela 11: Algumas expresses regulares

\{n,m}

| \(...\)

8.5

sed

O comando sed normalmente usado para substituir uma expresso por outra. Esse uso simples pode ser visto no exemplo abaixo: $ sed 's/Linux/LINUX/' exercicio3.txt GNU/LINUX e um sistema operacional: uma serie de programas que deixam voce interagir com o computador e executar outros programas. ... A parte mais importante de um sistema operacional e o kernel. Num sistema GNU/LINUX, o componente do kernel e o Linux. O resto do sistema consiste noutros programas, muitos dos quais escritos por ou para o Projeto GNU; Como o kernel sozinho nao forma um sistema operacional utilizavel, nos preferimos utilizar o termo GNU/LINUX para nos referirmos aos sistemas a que muitas pessoas vulgarmente chamam de Linux. Ou seja, o sed processa linha a linha e substitui a primeira expresso pela segunda, sendo as barras (/) o delimitador. Prestando mais ateno, percebe-se que ele troca somente a primeira ocorrncia de cada linha. Para trocar todas as ocorrncias da linha usa-se conforme abaixo: $ sed 's/Linux/LINUX/g' exercicio3.txt GNU/LINUX e um sistema operacional: uma serie de programas que deixam voce interagir com o computador e executar outros programas. ... A parte mais importante de um sistema operacional e o kernel. Num sistema GNU/LINUX, o componente do kernel e o LINUX. O resto do sistema consiste noutros programas, muitos dos www.serpro.gov.br 70

Introduo ao Linux: Perdendo o medo da tela preta quais escritos por ou para o Projeto GNU; Como o kernel sozinho nao forma um sistema operacional utilizavel, nos preferimos utilizar o termo GNU/LINUX para nos referirmos aos sistemas a que muitas pessoas vulgarmente chamam de LINUX. Para apagar todas as linhas que contenham a expresso usa-se o comando sed '/Linux/d'. Para apagar somente a ocorrncia desejada o comando sed 's/Linux//g'. Apesar de ser o caracter mais usado como o delimitador, o uso do / no obrigatrio. Pode-se utilizar outro caracter em seu lugar. Por exemplo: $ sed 's#Linux#LINUX#g' exercicio3.txt

8.6

cut

O comando cut utilizado para selecionar campos. Por exemplo, o comando abaixo seleciona todos os nomes de usurio do sistema. $ cut -f1 -d: /etc/passwd root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody libuuid Debian-exim statd sshd ruy O parmetro -f dene qual o campo, e o parmetro -d dene o delimitador de campos. Ou seja, o comando seleciona o primeiro campo, sendo o delimitador o caracter :. Caso o arquivo seja baseado em posio (os primeiros 11 caracteres representam o CPF, os prximos 10 caracteres representam a data de nascimento com / como separador, etc.) pode-se utilizar o parmetro -c. Por exemplo: $ cat cpf.txt 1234567891201/01/1888Ruy Minoru Ito Takata $ cut -c-11 cpf.txt 12345678912

www.serpro.gov.br

71

Introduo ao Linux: Perdendo o medo da tela preta $ cut -c12-21 cpf.txt 01/01/1888 $ cut -c22- cpf.txt Ruy Minoru Ito Takata O primeiro comando pega os primeiros 11 caracteres. O segundo pega do 12 at o 21. O terceiro pega a partir do 22.

8.7

join

O join serve para juntar arquivos ordenados que contenham uma chave em comum. Por exemplo, um arquivo que contenha CPF e nome, e outro que contenha CPF e empresa. Por exemplo: $ cat nome.sort 12345678901,Joao 12345678912,Ruy Minoru Ito Takata $ cat empresa.sort 12345678901,CEF 12345678912,SERPRO $ join -t, nome.sort empresa.sort 12345678901,Joao,CEF 12345678912,Ruy Minoru Ito Takata,SERPRO

8.8

nd

O nd usado para localizar arquivos. Para procurar um arquivo que tenha determinado nome usa-se como abaixo: $ find /home/ruy/ -name 'exercicio*' /home/ruy/sessao1/exercicios /home/ruy/sessao1/exercicios/exercicio3.txt /home/ruy/sessao2/exercicios Onde /home/ruy o local onde deseja-se efetuar a busca. A expresso a ser localizada deve estar entre aspas simples. Para utilizar o resultado da pesquisa como entrada para outro comando pode-se fazer de duas maneiras. Com o xargs e com o -exec. Abaixo os exemplos: $ find /home/ruy/ -name 'exercicio*' | xargs /home/ruy/sessao1/exercicios: /home/ruy/sessao1/exercicios/exercicio3.txt: /home/ruy/sessao2/exercicios: file directory UTF-8 Unicode text directory

$ find /home/ruy/ -name 'exercicio*' -exec file /home/ruy/sessao1/exercicios: directory /home/ruy/sessao1/exercicios/exercicio3.txt: UTF-8 Unicode text /home/ruy/sessao2/exercicios: directory Se a busca tem como resultado apagar os arquivos localizados, as duas opes acima no so as mais indicadas. Para isso o nd tem a opo -delete. Isso pode ser visto no exemplo abaixo: www.serpro.gov.br 72

Introduo ao Linux: Perdendo o medo da tela preta $ for i in `seq 1 10000`; do > buscar$i.txt; done $ time find . -name buscar* -exec rm real 0m13.998s user 0m29.386s sys 0m13.741s $ for i in `seq 1 10000`; do > buscar$i.txt; done $ time find . -name 'buscar*' | xargs rm real 0m0.206s user 0m0.020s sys 0m0.192s $ for i in `seq 1 10000`; do > buscar$i.txt; done $ time find . -name 'buscar*' -delete real 0m0.173s user 0m0.028s sys 0m0.148s Entre as opes para busca com o nd temos: Opo -atime n -ctime n -mtime n -group g -user u -name padro -perm Mascara -prune -size n -type t Descrio Procura por arquivos com horrio de acesso igual a n dias Procura por arquivos com horrio de modicao de inode de n dias Arquivos com horrio de modicao igual a n Arquivos que pertencem ao grupo g Arquivos que pertencem ao usurio u Nomes de arquivo que casem com o padro arquivos que tenham a mscara octal especicada Procura somente no nvel atual. No faz busca recursiva Arquivos com tamanho igual a n. As unidades de medida esto na tabela 13 Arquivos do tipo t, onde t pode ser d (diretrio), f (arquivos) ou l (link simblico).
Tabela 12: Algumas opes do nd

Unidade c k M G

Descrio bytes KB MB GB

Tabela 13: Unidades de medida para o -size

O nd tambm permite OR (-o) e AND (-a). Por exemplo, para procurar arquivos que tenham tamanho igual a 0 ou que no pertenam a ningum, o comando seria nd . -nouser -o -size 0. Ao especicar o tamanho usando o parmetro -size, pode-se usar os sinais de + e - para maior ou menor, por exemplo, para procurar por arquivos maiores que 10KB e menores que 1MB, o comando seria nd . -size +10k -a -size -20M. Obs.: Quando o local omitido, a busca feita no diretrio atual. Se o padro de busca for omitido, o nd retorna todos os arquivos. Por isso, ao executar o nd com o exec ou o xargs, preferencialmente informe os dois parmetros.

www.serpro.gov.br

73

Introduo ao Linux: Perdendo o medo da tela preta

8.9

seq

O comando seq bem simples, mas muito til para scripts. Ele imprime sequncias de nmeros. Alm das opes, ele aceita at 3 parmetros, que indicam o primeiro nmero, o incremento, e o ltimo nmero. Se os trs parmetros no forem informados, o formato do comando : seq ULTIMO seq PRIMEIRO ULTIMO seq PRIMEIRO INCREMENTO ULTIMO Ou seja, o comando seq 4, ir imprimir de 1 a 4. seq 3 7 imprime de 3 a 7. seq 3 2 9 imprime de 3, 5, 7 e 9.

8.10

test

Para fazer vericaes existe o comando test. Seu retorno na varivel $?. Por exemplo: $ $ 0 $ $ 1 test a = a echo $? test a = b echo $?

Os testes possveis podem ser vistos na tabela abaixo: Teste -d arquivo -f arquivo -h arquivo -r arquivo -s arquivo -w arquivo -x arquivo -z string S1 = S2 S1 != S1 n1 -eq n2 n1 -ne n2 n1 -lt n2 n1 -gt n2 n1 -le n2 n1 -ge n2 Descrio verica se arquivo um diretrio verica se arquivo um arquivo normal verica se arquivo um link simblico verica se arquivo pode ser lido verica se arquivo no est vazio verica se arquivo pode ser escrito verica se arquivo executvel verica se string nula verica se as strings S1 e S2 so iguais verica se as strings S1 e S2 no so iguais verica se n1 e n2 so iguais (equal) verica se n1 e n2 no so iguais (not equal) verica se n1 menor que n2 (less than) verica se n1 maior que n2 (greater than) verica se n1 menor ou igual a n2 (less equal) verica se n1 maior ou igual a n2 (greater equal)

Tabela 14: Alguns testes possveis para o comando test

O comando test pode ser usado tambm no formato [ comparao ]. Por exemplo, o comando test a = a pode ser escrito como [ a = a ]. Como o retorno do comando test sempre na varivel $?, normalmente ele usado com o comando if.

8.11

if

O comando if usando para vericar a sada de comandos, atravs da varivel $?. www.serpro.gov.br 74

Introduo ao Linux: Perdendo o medo da tela preta

O formato dele if condicao then comando elif condicao then comando else comando fi Por exemplo: if grep Linux exercicio3.txt > /dev/null then echo "encontrei" else echo "nao encontrei" fi Normalmente o if usado com o comando test. Por exemplo: if [ a = a ] then echo "as strings sao iguais" else echo "as strings sao diferentes" fi

8.12

for

O for para fazer laos que itera com uma lista de objetos. Por exemplo: for i in `seq 10` do echo $i done Esse mesmo lao tambm pode ser escrito como: for ((i=0; i<11; i++)) do echo $i done Para fazer um lao que trabalhe com todos os arquivos do diretrio corrente, o comando seria: for i in * do echo $i done

www.serpro.gov.br

75

Introduo ao Linux: Perdendo o medo da tela preta

8.13

while

O formato do comando while : while condicao do comando comando done Como no exemplo abaixo: #!/bin/bash n=$1 fatorial=1 while [ $n -gt 0 ] do fatorial=$(( $fatorial * $n )) n=$(( $n - 1 )) done echo $fatorial O while tambm muito usado para ler arquivos textos linha a linha. Caso seja um arquivo com separadores de campos, os campos podem ser lidos separadamente. IFS=: while read usuario lixo uid gid nome home shell do echo "O login do usuario $nome eh $usuario. Seu uid eh $uid, seu diretorio home eh $home e seu shell eh $shell done < /etc/passwd Obs.: A varivel de ambiente IFS (inter eld separator) dene quais so os separadores de campo do shell. Apesar de ser uma varivel de ambiente, caso for alter-la uma boa prtica salv-la antes com o comando oldIFS=$IFS.

8.14

until

O formato do comando until : until condicao do comando comando done

8.15

Comandos aritmticos

Retirado de http://apoie.org/JulioNeves/TiraGosto.htm Antigamente, para fazer alguma operao matemtica usava-se o expr. Por exemplo: $ expr 7 \* 5 / 3 www.serpro.gov.br 76

Introduo ao Linux: Perdendo o medo da tela preta

Atualmente o mais comum usar o bc. O exemplo acima escrito em bc seria: $ echo "7 * 5 / 3" | bc O bc pode ser usado tambm no formato: $ bc <<< "7 * 5 / 3" O resultado da operao no um nmero inteiro. Para exibir as casas decimais o comando : $ echo "scale=2; 7*5/3"| bc Operaes mais simples podem ser feitas usando o comando $((1+2)). Essa forma permite operaes de ps e pr incremento $((i++)). Outra operao permitida a ternria var=$((var>40 ? var-40 : var+40)).

Outro comando para fazer operaes o let. Por exemplo: $ let "x = 1 + 2" echo $x

8.16

Vetores

Para criar um vetor inicializado basta atribuir os valores ao vetor: $ $ 1 2 3 4 $ 1 2 3 4 $ 2 vetor=(1 2 3 4) echo ${vetor[@]}

echo ${vetor[*]}

echo ${vetor[1]}

Para saber quantos elementos h no vetor o comando : $ echo ${#vetor[@]} 5 Para saber o tamanho de determinado elemento do vetor: $ echo ${#vetor[2]} Para trabalhar com cada elemento do vetor, pode-se fazer como abaixo: $ for ((i=0; i < ${#vetor[@]}; i++)) do a=$((${vetor[$i]}+3)) echo $a done www.serpro.gov.br 77

Introduo ao Linux: Perdendo o medo da tela preta

Tambm possvel usar vetores associativos, ou seja, vetores cujo ndice seja uma string. Para declarar um vetor associativo deve-se fazer como abaixo: declare -A Animais Animais[cavalo]=domestico Animais[zebra]=selvagem Animais[gato]=domestico Animais[tigre]=selvagem Com eles pode-se determinar o tamanho do vetor ou o tamanho de determinado elemento, como em vetores numricos: $ echo ${#Animais[@]} 4 $ echo ${#Animais[gato]} 9 Mas nesse caso, saber a quantidade de elementos do vetor no faz sentido para fazer operaes em cada elemento. Para isso o lao correto seria: $ for animal in "${!Animais[@]}" do echo $animal done

8.17

Exerccios

1. Usando o comando tar, crie um arquivo tar.bz2 contendo o diretrio /etc 2. Liste o contedo do arquivo criado no exerccio acima. 3. Faa um grep que procure por um endereo IP. 4. Faa um comando sed que altere letras minsculas para maisculas. Faa o mesmo usando o comando tr. 5. Procurar em seu home todos os arquivos com tamanho igual a zero.

www.serpro.gov.br

78

Introduo ao Linux: Perdendo o medo da tela preta

9
9.1

Programao Shell
Criando um script

Um script um arquivo que contm uma sequncia de comandos que so interpretados. Normalmente um script shell comea com a linha #!/bin/bash. Ela dene qual shell ser usado para executar os comandos. Poderia ser #!/bin/csh, para usar o C-shell, por exemplo. Para executar um script deve-se primeiramente torn-lo executvel com o comando chmod u+x script.sh, e depois execut-lo ./script.sh. Os comandos so executados sequencialmente, e, mesmo que retorne um erro, os comando subsequentes sero executados tambm. Por isso comandos crticos devem ser testados. Para fazer esse teste existem duas maneiras ilustradas abaixo: #!/bin/bash cp /home/usuario/arquivo/teste.txt /tmp &> /dev/null && echo "arquivo copiado corretamente" || ( echo "erro ao copiar o arquivo. saindo do script" ; exit 1) cp /home/usuario/arquivo/teste.txt /tmp &> /dev/null if [ $? -ne 0 ] then echo "erro ao copiar o arquivo. saindo do script" exit 1 else echo "arquivo copiado corretamente. prosseguindo" fi Obs.: O comando &> /dev/null pega o retorno do comando e o retorno de erro do comando e direciona ambos para o buraco negro. Pode-se, por exemplo, direcionar para um arquivo: &> /root/log/script.log. O primeiro exemplo utiliza o AND e OR lgicos. O comando cp /home/usuario/arquivo/teste.txt &> /dev/null executado. Pela lgica, se ele falhar, no necessrio executar o comando echo arquivo copiado corretamente (0 AND 1 falso). Isso far com que os comando entre parnteses sejam executados. Mas se o comando cp /home/usuario/arquivo/teste.txt &> /dev/null for executado com sucesso, ele ir executar tambm o comando echo arquivo copiado corretamente, que tambm ser executada com sucesso, pois trata-se de um simples comando echo. Como essa primeira parte foi executada com sucesso, a segunda parte no ir executar, pois 1 AND 0 sempre verdadeiro. Ou seja, possvel utilizar a lgica do curto-circuito como em outras linguagens. Quando fazemos comando1 && comando2, comando2 s ser executado se comando1 for executado com sucesso. E quando executamos comando1 || comando2, comando2 somente ser executado se comando1 falhar. O segundo exemplo faz basicamente a mesma coisa, mas utiliza o comando if. Se o cdigo de retorno do comando for diferente de 0, ele exibe a mensagem de erro e sai do script com cdigo de retorno 1. Seno ele exibe uma mensagem de sucesso e continua o script. Os cdigos de retorno podem ser vistos na tabela abaixo:

www.serpro.gov.br

79

Introduo ao Linux: Perdendo o medo da tela preta

Cdigo 0 1 126 127 128 128+n 130 255

Descrio Comando executou corretamente A maioria dos erros comuns na execuo Comando sem permisso de execuo Comando no encontrado O parmetro para o exit no decimal 128 + o cdigo do sinal que matou o matou (com kill) Programa interrompido com CTRL+C (128 + 2) Parmetro para o exit no est entre 0 e 255
Tabela 15: Cdigos de retorno dos comandos

9.2

Passando parmetros para o script


Um script pode receber parmetros atravs da linha de comando (./script.sh par1 par2 parN).

Dentro do script esses parmetros so recebidos atravs das variveis $1 $2 $3, etc. Outras variveis podem ser vistas na tabela abaixo: Varivel $# $* $@ $0 $$ $1 $2 $N Descrio Nmero de argumentos recebidos pelo script Representa todos os argumentos recebidos como uma nica string Representa todos os argumentos recebidos como strings separadas Nome do script PID do processo Primeiro parmetro recebido Segundo parmetro recebido Ensimo parmetro recebido
Tabela 16: Variveis especiais

Uma maneira de utilizar os parmetros pode ser vista abaixo: #!/bin/bash if [ $# -ne 2 ] then echo "Numero de parametros incorreto. Favor informar 2 numeros" exit 1 fi for i in "$@" do echo $i | grep -E "^[0-9]+$" &> /dev/null if [ $? -ne 0 ] then echo "O parametro precisa ser um numero!!! Parametro informado : [$i]" exit 1 fi done echo "Parametros recebidos: $@" media=`echo "scale=2; ($1 + $2) / $#"| bc` echo "Media aritmetica: $media"

www.serpro.gov.br

80

Introduo ao Linux: Perdendo o medo da tela preta

9.3

Lendo valores

Passar parmetros pela linha de comando nem sempre a melhor maneira de receber valores. As vezes pode ser necessrio solicitar que o usurio digite algo durante a execusso do script. Para isso pode-se utilizar o comando read. Por exemplo, para uma solicitao simples: $ read -p "Digite seu nome: " nome $ echo $nome Algumas opes interessantes podem ser vistas na tabela abaixo: Opo -p -t X -n X -s Descrio Exibe o prompt para o usurio digitar Exibe o prompt por X segundos. Aps isso naliza o comando L at que X caracteres sejam digitados, ou o ENTER seja apertado No ecoa na tela o que digitado. Pode-se fazer com o comando stty -echo antes do comando read
Tabela 17: Opes do comando read

9.4

Exerccios

1. Faa um script que receba N nmeros pela linha de comando e calcule a mdia aritmtica entre eles. 2. Faa um script que solicite que o usurio digite 2 nmeros (a e b) e resolva a a equao de primeiro grau ( y=ax+b ) 3. Dado um arquivo no formato cpf;nome;telefone;empresa Faa um script que gere um arquivo SQL para inserir os usurios em um banco de dados relacional. INSERT INTO `curso`.`usuario` (`cpf`, `nome`, `telefone`, `empresa`) VALUES (21537850814, ruy minoru ito takata, 1121731799, serpro); 4. Escreva um script que implemente o algoritmo bubble short for (int i = 0; i < vetor.length; i++) { for (int j = 0; j < i; j++) { if (vetor[i] < vetor[j]) { int swap = vetor[i]; vetor[i] = vetor[j]; vetor[j] = swap; } } } 5. Faa o exerccio anterior usando a tcnica XOR swap 6. Faa um script que, a partir de um arquivo CSV, adicione usurios ao sistema. login;senha;nome completo O home do usurio deve ser /home/login.

www.serpro.gov.br

81

Introduo ao Linux: Perdendo o medo da tela preta

7. Faa um script que, a partir de um arquivo CSV, adicione usurios ao sistema. login;senha;nome completo;grupo1;grupo2;grupo3;grupoN O usurio deve fazer parte dos grupos listados aps o nome completo. No existe limite para o nmero de grupos. Se o grupo no existir, ele deve ser criado pelo prprio script.

www.serpro.gov.br

82

Introduo ao Linux: Perdendo o medo da tela preta

www.serpro.gov.br

83

Introduo ao Linux: Perdendo o medo da tela preta

10

Resumo de comandos VIM


Descrio Sair salvando Sair sem salvar Sair sem salvar Copia a linha corrente Copia 7 linhas Recorta a linha corrente Recorta 5 linhas Cola abaixo da linha atual Apaga o caracter atual Troca o caracter atual pelo prximo caracter Vai at o nal da linha atual Vai at o incio da linha Apaga da posio atual at o nal da linhas Apaga da posio atual at o incio da linha Avana uma palavra Avana 10 palavras Apaga a palavra atual Apaga 5 palavras Volta uma palavra Volta 4 palavras Desfaz uma ao (UNDO) Refaz uma ao (REDO) Junta a linha atual com a prxima linha Junta 6 linhas Substitui o caracter atual pela letra a Substitui 5 caracteres por b Troca de maiscula por minscula e vice-versa Busca a prxima ocorrncia de string Busca a ocorrncia anterior de string Inverte a direo da busca Entrar em modo de edio Adiciona uma linha abaixo da atual e entra em modo de insero Entrar em modo de comandos Entrar em modo visual caracter a caracter Entrar em modo visual linha a linha Entra em modo visual retangular Divide a tela e abre arquivo2.txt Navega entre os arquivos abertos com o split Substitui todas as ocorrncias de palavra1 por palavra2 Exibe numerao das linhas Oculta numerao das linhas Auto-completar Cria um auto-texto. Ao digitar #i e pressionar ENTER ou Espao, substitui por #include< Em modo visual, apaga o texto e entra em modo de insero Em modo visual, apaga o texto, insere uma nova linha e entra em modo de insero Em modo visual, junta as linhas selecionadas e adiciona um espao em branco entre elas Em modo visual, junta as linhas selecionadas sem adicionar espao em branco entre elas Em modo visual em blocos, insere o texto digitado no local selecionado Em modo visual, substitui o texto selecionado por x
Tabela 18: Alguns comandos do VIM

Comando ESC :x ESC :q ESC :q! yy 7yy dd 5dd p x xp $ ^ d$ d^ w 10w dw d5w b 4b u CRTL + R J 6J ra 5rb ~ /string ?string N i o ESC v V CTRL + v :split arquivo2.txt CTRL + w + w : % s/palavra1/palavra2/g :set number :set nonumber CTRL + p :abbreviate #i #include< c C J gJ I rx

www.serpro.gov.br

84

Introduo ao Linux: Perdendo o medo da tela preta

11

Pginas interessantes
http://www.debian.org/doc/manuals/debian-reference/ - Pgina de documantao do Debian http://www.debian.org/doc/manuals/securing-debian-howto/ch4.en.html http://aurelio.net/shell/canivete/ - Vrias dicas de utilizao do shell http://tldp.org/LDP/abs/html/arrays.html - Pgina sobre arrays em shell http://www.vivaolinux.com.br/artigo/Brincando-com-vetores - Pgina sobre arrays em shell

http://www.dicas-l.com.br/cantinhodoshell/cantinhodoshell_20100120.php - Pgina sobre vetores associativos http://aurelio.net/curso/sucesu/sucesu-seder-prompt.html#toc40 - Dicas sobre SED e expresses regulares http://www.gentoo.org/doc/en/list.xml?desc=1 - Documentao do Gentoo http://www.ibm.com/developerworks/br/library/l-task-killable/ - Estados de um processo em Linux http://debgen.simplylinux.ch/ - Gerador de sources.list http://www.squid-cache.org.br/index.php - Site brasileiro com diversos artigos sobre o Squid http://www.squid-cache.org/ - Site do projeto Squid http://www.openldap.org/doc/admin24/ - Documentao ocial do OpenLDAP http://www.kyapanel.com/wiki/lib/exe/fetch.php?id=openldap_basico%3Aindice&cache=cache&media= openldap_basico:openldap_basico.pdf - Apostila do OpenLDAP http://www.samba.org/samba/docs/ - Documentao ocial do Samba

12

Livros interessantes
Programao Shell Script - Julio Cezar Neves. Editora Brasport Classic Shell Script - Arnold Robbins, Nelson H. F. Beebe - Editora OReilly Sed & Awk - Dale Dougherty, Arnold Robbins - Editora OReilly Shell Script Prossional - Aurlio Marinho Jargas - Editora Novatec Expresses Regulares: Uma Abordagem Divertida - Aurlio Marinho Jargas - Editora Novatec Descobrindo o Linux - Joo Eriberto Mota Filho - Editora Novatec

www.serpro.gov.br

85

Introduo ao Linux: Perdendo o medo da tela preta

13
13.1

Respostas dos Exerccios


Captulo 3

1. Criar a seguinte estrutura de diretrios dentro de seu home:


/home/usuario

secao1

secao2

resumo

exercicios

resumo

exercicios

Resposta: cd /home/usuario mkdir secao1 secao2 cd secao1 mkdir resumo exercicios cd ../secao2 mkdir resumo exercicios 2. Entre no diretrio secao1/exercicios e crie a seguinte estrutura de diretrios usando apenas um comando:
/home/usuario/secao1/exercicios

diretorioA

diretorioB

diretorio1

diretorio2

Diretorio3

diretorio10

diretorio20

diretorio30

diretorio21

diretorio22

Resposta: mkdir -p {diretorioA/{diretorio1/,diretorio2/,diretorio3/},diretorioB/{diretorio10/,\ diretorio20/{diretorio21/,diretorio22/},diretorio30}} 3. Entre no diretrio secao1/exercicios e criar um arquivo de nome exercicio3.txt usando o cat com o seguinte contedo: GNU/Linux um sistema operacional: uma srie de programas que deixam voc interagir com o computador e executar outros programas. ... A parte mais importante de um sistema operacional o kernel. Num sistema GNU/Linux, o componente do kernel o Linux. O resto do sistema consiste noutros programas, muitos dos quais escritos por ou para o Projeto GNU; Como o kernel sozinho no forma um sistema operacional utilizvel, ns preferimos utilizar o termo GNU/Linux para nos referirmos aos sistemas a que muitas pessoas vulgarmente chamam de Linux. Resposta: www.serpro.gov.br 86

Introduo ao Linux: Perdendo o medo da tela preta cat > exercicio3.txt << EOF (Digitar o Texto) EOF 4. Usando variveis de ambiente, imprima na tela a seguinte mensagem: O usuario logado atualmente eh "ruy". O shell sendo executado eh "/bin/bash". Resposta: echo "O usuario logado atualmente eh \"$USER\". O shel sendo executado eh \"$SHELL\"" 5. Execute os comandos abaixo e expliquem o resultado obtido: printf "%d" 46 # Exibe o nmero 46 printf "%f" 46 # Exibe o nmero 46 em formato float printf "%10d" 46 # Exibe o nmero 46, com 10 posies printf "%010d" 46 # Exibe o nmero 46, com 10 posies, mas preenche com zeros printf "%o" 46 # Exibe o nmero 46 em octal printf "%x" 46 # Exibe 46 em hexadecimal printf "|%s|" "uma string" # Exibe "uma string" printf "|%15s|" "uma string" # Exibe "uma string", com 15 posies, alinhado a direita printf "|%-15s|" "uma string" # Exibe "uma string", com 15 posies, alinhado a esquerda printf "|%-15.5s|" "uma string" # Exibe somente os 5 primeiros caracteres de "uma string", mas reserva as 15 posies.

13.2

Captulo 5

1. Utilizando o man, veja o signicado da primeira coluna ao executar o comando aptitude search. Caracter p c i v Signicado Signica que no h traos do pacote no sistema Signica que o pacote foi apagado mas seus arquivos de congurao ainda esto no sistema Siginica que o pacote est instalado Signica que um pacote virtual
Tabela 19: Caracteres possveis na primeira coluna do aptitude search

2. Faa uma pesquisa que retorne somente o pacote que tenha o comando /usr/bin/lspci. Resposta: $ apt-file -F search /usr/bin/lspci 3. Baixar o pacote iftop, compilar e instalar. Obs1.: necessrio instalar os pacotes gcc, make, libpcap-dev e libncurses5-dev. Obs2.: interessante tentar compilar antes de instalar os pacotes acima para ver os erros, e com isso aprender a detect-los. Resposta: # # # # # # # aptitude install gcc make libpcap-dev libncurses5-dev wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz tar xzf iftop-0.17.tar.gz cd iftop-0.17 ./configure make make install 87

www.serpro.gov.br

Introduo ao Linux: Perdendo o medo da tela preta

13.3

Captulo 6
Resposta: dd if=/dev/zero of=/swapfile1 bs=1024 count=524288 mkswap /swapfile1 swapon /swapfile1 vi /etc/fstab #Editar o arquivo /etc/fstab e adicionar a linha abaixo

1. Criar um arquivo de swap de 512MB e adicionar ao fstab.

/swapfile1 swap swap defaults 0 0 2. Adicione uma interface de rede eth0:1 com o endereo IP 192.168.50.3, mscara de sub-rede 255.255.255.0. Resposta: vi /etc/network/interfaces auto eth0:1 iface eth0:1 inet static address 192.168.50.3 netmask 255.255.255.0 3. Adicione ao arquivo hosts o endereo IP congurado no exerccio anterior. Ele deve resolver com o nome lab03.serpro Resposta: vi /etc/hosts #Editar o arquivo e adicionar a linha abaixo #Editar o arquivo e adicionar as linhas abaixo

192.168.50.3 lab03.serpro lab03

13.4

Captulo 8
Resposta: # mkdir /root/backup-etc # tar cvjf /root/backup-etc/etc-`date +%Y-%m-%d`.tar.bz2 /etc

1. Usando o comando tar, crie um arquivo tar.bz2 contendo o diretrio /etc

2. Liste o contedo do arquivo criado no exerccio acima. Obs.: Levando-se em considerao que este comando seja executado no mesmo dia que o comando do exerccio anterior. Resposta: # tar tjf /root/backup-etc/etc-`date +%Y-%m-%d`.tar.bz2

3. Faa um grep que procure por um endereo IP. Resposta: echo "192.168.0.111" | grep -E '^([0-9]1,3)3[0-9]1,3$' Obs.: Esta expresso regular bem simples. Somente verica se o grupo - um nmero de no mnimo 1 e no mximo 3 dgitos, seguide de um caracter . - se repete 3 vezes, seguido de um nmero de no mnimo 1 e no mximo 3 dgitos. Ou seja, um nmero 300.400.500.600 seria considerado verdadeiro, apesar de no ser um endereo IP vlido. www.serpro.gov.br 88

Introduo ao Linux: Perdendo o medo da tela preta

4. Faa um comando sed que altere letras minsculas para maisculas. Faa o mesmo usando o comando tr. Resposta: sed 'y/[a-z]/[A-Z]/' exercicio3.txt sed -e 's/\(.*\)/\U\1/' exercicio3.txt cat exercicio3.txt| tr a-z A-Z Obs.: possvel usar as expresses [lower] e [upper], mas elas podem ou no incluir os caracteres acentuados, c com cedilha, etc. 5. Procurar em seu home todos os arquivos com tamanho igual a zero. Resposta: $ find ~ -size 0c

13.5

Captulo 9
Resposta: #!/bin/bash if [ $# -lt 2 ] # Verifica se foram passados no minimo 2 parametros then echo "Numero de parametros incorreto. Favor informar pelo menos 2 numeros" exit 1 fi soma=0 for i in "$@" do # Verifica se os parametro eh um numero, podendo inclusive ser negativo echo $i | grep -E "^?[0-9]+$" &> /dev/null if [ $? -ne 0 ] then echo "O parametro precisa ser um numero!!! Parametro informado : [$i]" exit 1 else soma=$((soma + i)) # soma os parametros fi done echo "Parametros recebidos: $@" echo "Foram recebidos $# parametros" media=echo "scale=3; ($soma) / $#"| bc echo "Media aritmetica: $media"

1. Faa um script que receba N nmeros pela linha de comando e calcule a mdia aritmtica entre eles.

2. Faa um script que solicite que o usurio digite 2 nmeros (a e b) e resolva a a equao de primeiro grau ( y=ax+b ) Resposta: #!/bin/bash a=0 ehnumero=false # fica no lao enquanto ehnumero for falso OU a for igual a 0 while ([ $ehnumero != true ] || [ $a == 0 ]) do read -p "Digite o valor de A: " a www.serpro.gov.br 89

Introduo ao Linux: Perdendo o medo da tela preta # Verifica se eh um numero, podendo inclusive ser negativo echo $a | grep -E "^?[0-9]+$" &> /dev/null if [ $? -eq 0 ] then ehnumero=true else ehnumero=false echo "O valor de A precisa ser um numero. Digite outro valor" fi if [ $a == 0 ] # verifica se eh igual a zero then echo "Valor de A nao pode ser zero. Digite outro valor." fi

done ehnumero=false while [ $ehnumero != true ] do read -p "Digite o valor de B: " b echo $b | grep -E "^?[0-9]+$" &> /dev/null if [ $? -eq 0 ] then ehnumero=true else ehnumero=false echo "O valor de B precisa ser um numero. Digite outro valor" fi done 3. Dado um arquivo no formato cpf;nome;telefone;empresa Faa um script que gere um arquivo SQL para inserir os usurios em um banco de dados relacional. INSERT INTO `curso`.`usuario` (`cpf`, `nome`, `telefone`, `empresa`) VALUES ('12345678912', 'ruy minoru ito takata', '1122223333', 'serpro'); Resposta: #!/bin/bash oldIFS=$IFS IFS= saida=usuarios.sql >$saida while read cpf nome telefone empresa do echo "INSERT INTO `curso`.`usuario` (`cpf`, `nome`, `telefone`, `empresa`) VALUES ('12345678912', 'ruy minoru ito takata', '1122223333', 'serpro');" >> $saida done < usuarios_sql.txt 4. Escreva um script que implemente o algoritmo bubble short for (int i = 0; i < vetor.length; i++) { for (int j = 0; j < i; j++) { if (vetor[i] < vetor[j]) { int swap = vetor[i]; www.serpro.gov.br 90

Introduo ao Linux: Perdendo o medo da tela preta vetor[i] = vetor[j]; vetor[j] = swap;

Resposta: #! /bin/bash vetor=( 2 1 3 4 5 7 4 1 0 5 4 6 5 2 8 ) bubble_sort(){ for (( a = 0 ; a < ${#vetor[*]} ; a++ )) do for (( b = 0 ; b < ${#vetor[*]} ; b++ )) do [[ ${vetor[$b]} -lt ${vetor[$a]} ]] && { aux=${vetor[$b]} vetor[$b]=${vetor[$a]} vetor[$a]=$aux } done done } bubble_sort echo "${vetor[*]}" 5. Faa o exerccio anterior usando a tcnica XOR swap #! /bin/bash vetor=( 2 1 3 4 5 7 4 1 0 5 4 6 5 2 8 ) bubble_sort(){ for (( a = 0 ; a < ${#vetor[*]} ; a++ )) do for (( b = 0 ; b < ${#vetor[*]} ; b++ )) do [[ ${vetor[$b]} -lt ${vetor[$a]} ]] && { vetor[$a]=$((vetor[$a]^vetor[$b])) vetor[$b]=$((vetor[$a]^vetor[$b])) vetor[$a]=$((vetor[$a]^vetor[$b])); } done done } bubble_sort echo "${vetor[*]}" 6. Faa um script que, a partir de um arquivo CSV, adicione usurios ao sistema. login;senha;nome completo O home do usurio deve ser /home/login. Resposta: #!/bin/bash #login;senha;nome completo www.serpro.gov.br 91

Introduo ao Linux: Perdendo o medo da tela preta oldIFS=$IFS IFS=\; SENHA=senhas.txt > $SENHA while read login senha nome do useradd -c "$nome" -d /home/$login -m -s /bin/bash $login echo "$login:$senha" >> $SENHA done < usuarios.useradd chpasswd < $SENHA # o comando chpasswd recebe um arquivo no formato # usuario1:senha1 # usuario2:senha2 # e troca a senha desses usuarios rm $SENHA 7. Faa um script que, a partir de um arquivo CSV, adicione usurios ao sistema. login;senha;nome completo;grupo1;grupo2;grupo3;grupoN O usurio deve fazer parte dos grupos listados aps o nome completo. No existe limite para o nmero de grupos. Se o grupo no existir, ele deve ser criado pelo prprio script. #!/bin/bash #login;senha;nome completo;grupo1;grupo2;grupo3;grupoN oldIFS=$IFS IFS=\; SENHAS=senhas.txt >$SENHAS while read login senha nome grupos do IFS=$oldIFS # a variavel $grupos contem todos os grupos separados por ; echo $grupos | tr ";" "\n" | while read grupo do groupadd -f $grupo done IFS=\; grupos2=`echo "$grupos" | tr ";" ","` #grupos2 contem todos os grupos serparados por virgula useradd -c "$nome" -d /home/$login -m -s /bin/bash $login -G $grupos2 echo "$login:$senha" >> $SENHAS done < usuarios.grupos.useradd chpasswd < $SENHAS rm $SENHAS

www.serpro.gov.br

92