APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf ·...

108
APOSTILA SISTEMA OPERACIONAL LINUX 1

Transcript of APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf ·...

Page 1: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

APOSTILA

SISTEMA OPERACIONAL

LINUX

1

Page 2: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

A presente apostila é uma adaptação de dois outros materiais abaixo relacionados.

Guia Foca GNU/Linux - http://focalinux.cipsga.org.br/ - desenvolvido por Gleydson Mazioli da Silva

Linux – Curso de Introdução ao Linux – DCT – UFMS – 1996 Desonvolvido por: Marcos Álvares, Cláudia Nasu, Alfredo Lanari e Luciene Marin

Foram suprimidos alguns itens destas apostilas e acrescidos outros, principalmente exemplos de utilização dos comandos básicos do linux.

Alguns itens acrescidos foram baseados no livro:Linux – Administração e Suporte – Novatec – Chuck V. TibetOutros retirados da internet.

A criação desta apostila tem o intuído de poder atender as necessidades curriculares da disciplina de Sistemas Operacionais da primeira fase do Curso Técnico de Telecomunicações.

2

Page 3: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Indice1 - Conceitos Básicos ........................................................................................................................... 6

1.1 Computador ................................................................................................................................ 7 1.2 Arquivos ..................................................................................................................................... 8 1.3 Diretórios .................................................................................................................................... 9 1.4 Bits, Bytes e Unidades ................................................................................................................ 9 1.5 Software (Programas) ............................................................................................................... 10 1.6 Hardware .................................................................................................................................. 11 1.7 Sistema Operacional ................................................................................................................. 14 1.8 Processo de Boot ...................................................................................................................... 16

2 - Introdução ..................................................................................................................................... 16 2.1 Histórico ................................................................................................................................... 16 2.2 Uma visão geral do LINUX ..................................................................................................... 19

2.2.1 Algumas Características do Linux .................................................................................... 20 2.3 A estrutura do LINUX .............................................................................................................. 20

2.3.1 Estrutura Lógica ............................................................................................................... 20 2.3.1.1 Kernel/Shell .............................................................................................................. 20 2.3.1.2 Utilitários .................................................................................................................. 21 2.3.1.3 Processos .................................................................................................................. 22

3 - Iniciando ........................................................................................................................................ 22 3.1 A Sessão LINUX ...................................................................................................................... 22 3.2 Encerrando a sessão .................................................................................................................. 24 3.3 Ciclo de Execução do Comando ............................................................................................... 25 3.4 Alteração da Password: ........................................................................................................... 25 3.5 Estruturas de Arquivos e Diretórios ......................................................................................... 25 3.6 Diretórios .................................................................................................................................. 26 3.7 Diretório de Entrada ................................................................................................................. 27 3.8 Diretório Corrente .................................................................................................................... 27 3.9 Diretório Raiz ........................................................................................................................... 28 3.10 Diretório Superior ................................................................................................................... 28 3.11 Diretório Anterior ................................................................................................................... 28 3.12 Caminho na estrutura de diretórios ......................................................................................... 28

3.12.1 Exemplo de diretório ....................................................................................................... 29 3.13 Estrutura básica de diretórios do Sistema Linux .................................................................... 29 3.14 Nomes e Caminhos ................................................................................................................. 30 3.15 Nomes de arquivos e diretórios .............................................................................................. 31

Identificado os arquivos pela cor: ....................................................................................... 32 Em verde : arquivos executáveis ....................................................................................... 32 Em azul : diretórios ............................................................................................................ 32 Em branco: arquivos ........................................................................................................... 32

3.16 Caracteres Especiais do Shell – ou Coringas ......................................................................... 32 3.16.1 Substituição do Nome do Arquivo .................................................................................. 32 3.16.2 Marcação do Caractere Especial ..................................................................................... 34

3.17 Comandos ............................................................................................................................... 34 3.17.1 Comandos Internos .......................................................................................................... 35 3.17.2 Comandos Externos ......................................................................................................... 35 3.17.3 Aviso de comando (Prompt) ............................................................................................ 36 3.17.4 Interpretador de comandos .............................................................................................. 36 3.17.5 Terminal Virtual (console) .............................................................................................. 37

4 Fundamentos do Linux .................................................................................................................... 38 4.1 Comandos para manipulação de diretórios ............................................................................... 39

3

Page 4: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

4.1.1 ls - (ou dir) Lista diretórios e seus conteúdos. ................................................................ 39 4.1.2 cd – Mudando o diretório de trabalho .............................................................................. 41 4.1.3 pwd – Identificação do diretório corrente ........................................................................ 42 4.1.4 mkdir – Criando diretórios ............................................................................................... 42 4.1.5 rmdir – Removendo diretórios .......................................................................................... 43

4.2 - Comandos para manipulação, gerenciamento e configuração de arquivos e/ou diretórios . . . 43 4.2.1 touch – Criando arquivos vazios ...................................................................................... 43 4.2.2 cat – Visualizando o conteúdo de um arquivo .................................................................. 44 4.2.3 tac - Visualizando o conteúdo de um arquivo reversamente ............................................ 44 4.2.4 rm - Removendo arquivos e/ou diretórios ........................................................................ 45 4.2.5 cp – Copiando arquivos .................................................................................................... 46 4.2.6 mv – Movendo ou Renomeando arquivos ........................................................................ 47 4.2.7 file – Identificando arquivos ............................................................................................. 48 4.2.8 more – Paginando a saída padrão ...................................................................................... 49 4.2.9 less – Paginando a saída padrão ........................................................................................ 49 4.2.10 sort – Ordenando um texto .............................................................................................. 49 4.2.11 head – Verificando o ínicio de um arquivo ..................................................................... 51 4.2.12 tail - Verificando o final de um arquivo ......................................................................... 51 4.2.13 ln – Criando um link ....................................................................................................... 51 4.2.14 find – Encontrando arquivos e diretórios pelo file system ............................................. 52 4.2.15 locate – Encontrando arquivos ........................................................................................ 54 4.2.16 grep – Procurando nos arquivos ..................................................................................... 54 4.2.17 nl – Visualizando e numerando um arquivo .................................................................... 55 4.2.18 cmp – Comparando arquivos ........................................................................................... 55 4.2.19 wc – Contando palavras em um texto ............................................................................. 56

4.3 Comandos Diversos .................................................................................................................. 56 4.3.1 clear – Limpando a tela ..................................................................................................... 56 4.3.2 cal – Calendário ................................................................................................................. 56 4.3.3 history – Histórico dos comandos ..................................................................................... 57 4.3.4 date .................................................................................................................................... 57 4.3.5 echo .................................................................................................................................... 57 4.3.6 cut ..................................................................................................................................... 58 4.3.7 who ................................................................................................................................... 58 4.3.8 whoami ............................................................................................................................. 59 4.3.9 w ....................................................................................................................................... 59 4.3.10 su ..................................................................................................................................... 59 4.3.11 reboot .............................................................................................................................. 59 4.3.12 halt .................................................................................................................................. 59 4.3.13 shutdown ......................................................................................................................... 60 4.3.14 talk ................................................................................................................................... 61 4.3.15 mesg ................................................................................................................................ 61

5 Editor de texto VI ............................................................................................................................ 62 5.1 Editor do UNIX ........................................................................................................................ 62 5.2 Modos de Operação do VIM .................................................................................................... 63 5.3 O Buffer de edição .................................................................................................................... 64 5.4 Comandos básicos do VIM (vi ou vim) .................................................................................. 64

5.4.1 Chamando o VIM: ............................................................................................................ 64 5.4.2 Editando: ........................................................................................................................... 64 5.4.3 Salvando/Saindo do Vim: ................................................................................................. 65 5.4.4 Copiando e Colando ......................................................................................................... 66

5.4.4.1 usando o mouse: ....................................................................................................... 66 5.4.4.2 usando o modo visual: ............................................................................................. 67 5.4.4.3 Mais subcomandos para copiar e colar ..................................................................... 67

5.4.5 Apagando (deletando): ..................................................................................................... 67

4

Page 5: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

5.4.6 Outros Comandos ............................................................................................................. 67 5.4.6.1 Subcomandos para alteração de TEXTO: ................................................................ 67 5.4.6.2 Subcomandos para a localização de TEXTO: ......................................................... 68 5.4.6.3 Subcomandos para movimentação pelo texto: ........................................................ 68

6 Segurança ........................................................................................................................................ 69 6.1 Acesso a Diretórios e Arquivos ................................................................................................ 69 6.2 Permissões de acesso a arquivos e diretórios .......................................................................... 69 6.3 Donos, grupos e outros usuários ............................................................................................... 70 6.4 Tipos de Permissões de acesso ................................................................................................ 70 6.5 Etapas para acesso a um arquivo/diretório .............................................................................. 71 6.6 Exemplos práticos de permissões de acesso ............................................................................. 71

6.6.1 Exemplo de acesso a um arquivo ..................................................................................... 71 6.6.2 Exemplo de acesso a um diretório .................................................................................... 72

6.7 A conta root ............................................................................................................................. 73 6.8 Modo de permissão .................................................................................................................. 73

6.8.1 Formato octal .................................................................................................................... 73 6.8.2 Formato simbólico do modo de permissões ..................................................................... 74

6.9 chmod – Alterando o permissionamento de arquivos e diretórios .......................................... 75 6.10 chgrp –Alterando o grupo ...................................................................................................... 76 6.11 chown – Alterando o dono .................................................................................................... 77 6.12 umask – Mudando as permissões padrão .............................................................................. 77 6.13 id - A identificação do usuário/grupo .................................................................................... 78 6.14 newgrp - Participação em grupos ......................................................................................... 79

7 Redirecionamentos e Pipe .............................................................................................................. 80 7.1 Entrada e Saída dos comandos ................................................................................................. 80 7.2 Entrada e Saída Padrão: ........................................................................................................... 81 7.3 Redirecionamento de E/S ........................................................................................................ 81 7.4 Símbolos de redirecionamento ................................................................................................ 82

7.4.1 < Redirecionamento de entrada ....................................................................................... 82 7.4.2 > Redirecionamento de saída ........................................................................................... 82 7.4.3 >> ...................................................................................................................................... 82 7.4.4 << ...................................................................................................................................... 83 7.4.5 | (pipe) ............................................................................................................................... 83 7.4.6 Diferença entre o "|" e o ">" ............................................................................................. 84 7.4.7 tee – Redirecionamentos multiplos .................................................................................. 84

7.5 Redirecionamento de erro padrão ............................................................................................ 85 8 Gerenciamento da execução de comandos/programas .................................................................... 86

8.1 Processos .................................................................................................................................. 86 8.2 Estrutura de processos ............................................................................................................. 86 8.3 Processos do usuário ................................................................................................................. 86 8.4 Executando um comando/programa ......................................................................................... 87 8.5 path .......................................................................................................................................... 87 8.6 Tipos de Execução de comandos/programas ........................................................................... 88 8.7 Executando comandos/programas em seqüência .................................................................... 88 8.8 Agrupando comandos ............................................................................................................... 89 8.9 foreground e "background" ...................................................................................................... 89 8.10 ps – Consultando informações sobre os processos ................................................................ 90 8.11 top - Consultando informações dinamicamente ..................................................................... 91 8.12 Controle de execução de processos ....................................................................................... 92

8.12.1 Interrompendo a execução de um processo ..................................................................... 92 8.12.2 Parando momentaneamente a execução de um processo ................................................ 92 8.12.3 jobs .................................................................................................................................. 92 8.12.4 fg - foreground ................................................................................................................. 93 8.12.5 bg - background ............................................................................................................... 94

5

Page 6: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

8.12.6 kill .................................................................................................................................... 94 8.12.7 killall ................................................................................................................................ 95 8.12.8 Fechando um programa quando não se sabe como sair ................................................. 95 8.12.9 Eliminando caracteres estranhos ..................................................................................... 96

9 Compactadores ............................................................................................................................... 97 9.1 O que fazem os compactadores/descompactadores? ................................................................ 97 9.2 Tipos de compactação .............................................................................................................. 98 9.3 Extensões de arquivos compactados ....................................................................................... 99 9.4 gzip ........................................................................................................................................ 100 9.5 zip .......................................................................................................................................... 101 9.6 unzip ...................................................................................................................................... 102 9.7 tar ........................................................................................................................................... 103 9.8 bzip2 ...................................................................................................................................... 104 9.9 rar ............................................................................................................................................ 105 9.10 zcat ........................................................................................................................................ 107 9.11 zgrep ..................................................................................................................................... 107 9.12 zcmp ..................................................................................................................................... 107 9.13 zless e zmore ......................................................................................................................... 108

1 - Conceitos Básicos

Muitas pessoas possuem uma dificuldade em lidar com os computadores, simplesmente porque não sabem o que é, como funciona e para que serve. É certo que existe uma dificuldade inicial relacionada à operação do computador em si. Isto é, há uma série de comandos com formatos difíceis de lembrar e quais as respectivas tarefas que eles executam.

Entretanto, nos últimos anos estão surgindo novas facilidades para os usuários de microcomputadores pessoais. Tais como interfaces gráficas poderosas que eliminam a necessidade de digitação de longas linhas de comandos. Nestas interfaces, os comandos são executados via menus, caixas de diálogos e ícones.

Geralmente, estas interfaces gráficas ainda apresentam opções de se executar comandos através do método “tradicional”, ou seja, digitando-se o comando por extenso. Isto porque muitos comandos não funcionam nestas interfaces gráficas; ou ainda porque algumas opções mais detalhadas só podem ser ativadas pela linha de comando. Mas a tendência é que todos os comandos sejam implementados em forma gráfica e iterativa.

A princípio é necessário formalizarmos certos termos que serão utilizados durante todo o texto. Termos simples, mas que muitas vezes esquecemos ou simplesmente não sabemos por que não

6

Page 7: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

temos a obrigação de tê-los em mente. Afinal usuários não precisam ser especialistas em computadores para poderem utilizá-los. Vamos então às definições preliminares:

1.1ComputadorA primeira vista parece desnecessário ter que dar uma

definição do que é um computador, mas o que se vê na prática, é que muitas pessoas não possuem uma visão clara do que é um microcomputador. E por este mesmo motivo, não se imaginam providas de meios de como lidar com estes equipamentos.

Por computador entendemos simplesmente como uma máquina capaz de realizar cálculos e operações sobre informações, podendo, desta forma, resolver uma série de problemas, desde que seja fornecido um programa.

Quando dizemos programável significa que há um conjunto de instruções ou programa que diz ao computador o que deve ser feito. É o que chamamos de software . Por ser uma máquina o computador também é composto por fios, cabos, placas, circuitos e outros equipamentos físicos. É o que chamamos de hardware. Desta forma, um computador é um sistema integrado formado por hardware ou componentes físicos e por software que é a parte inteligente que comanda o computador.

Por processamento de informação devemos entender a capacidade de receber informações, transformá-las (processamento) e exibir os resultados.Graficamente temos:

As informações manipuladas pelo computador podem variar muito, bem como a maneira de ser tratada internamente. Podemos classificá-las da seguinte maneira:

1. Dados : são letras e números. A princípio, computadores só podiam reconhecer e entender estes tipos de informações através de uma tabela mantida internamente que convertia cada conjunto de 8 sinais elétricos em uma letra ou dígito, criando um sistema de codificação e decodificação compreensível para o ser humano. Esta tabela existe até os dias de hoje e chama-se tabela ASCII. Outros tipos de tabelas foram criadas como a EBCDIC e ANSI Windows, mas a dominante é a tabela ASCII.Exemplo:

A 10000001B 10000010C 10000011

Como a corrente elétrica pode assumir apenas dois estados,

7

Entrada Processamento Saída

Programa

“Computador é uma máquina programável capaz de realizar processamento de informações.”

Page 8: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

convencionou-se que o número zero (0) indica a ausência de corrente elétrica por um fio e o número um (1) pela passagem de corrente. A tabela ASCII é formada por 8 dígitos. Como cada dígito pode assumir o valor zero ou um, podemos representar 256

caracteres diferentes (28=256) mais que suficiente para as letras e dígitos existentes.

No princípio da computação, se quiséssemos escrever uma letra teríamos que ligar e desligar um conjunto de fios para indicar que queremos representar uma deter minada letra do alfabeto. Hoje em dia basta pressionar no teclado que é gerado um sinal ou interrupção para o microprocessador informando qual a tecla pressionada. O computador então consulta a tabela ASCII, identifica a tecla e desenha ponto a ponto o caractere no monitor. Todo o desenho dos caracteres é mantido em uma tabela no computador.

2. Sons : atualmente podemos armazenar e manipular sons como em uma mesa de som de mais alta tecnologia devido aos avanços na área de sons digitais. Música e som são grandezas físicas ditas analógicas, isto é, caracterizadas por perturbações do ar. Mas computadores não entendem estas perturbações, então para que os mesmos pudessem ser reconhecidos, adaptou-se um microfone ao microcomputador que é sensível às vibrações e que as converte em impulsos elétricos que podem ser manipulados pelos computadores. Por isto é chamado de som digital. O circuito responsável por esta conversão chama-se conversor analógico-digital.

3. Imagens : os primeiros computadores possuíam muito pouca capacidade e velocidade e, portanto não podiam tratar de imagens com a mesma eficiência que hoje em dia. Imagens estáticas como fotografias podem ser capturadas por aparelhos especiais conhecidos como scanners através de sensores infravermelhos e da reflexão da luz. Imagens dinâmicas (animação e vídeo) podem ser obtidas por câmeras de vídeo ligadas a microcomputadores através de placas e softwares especiais. O problema deste tipo de informações é que temos que representar as imagens ponto a ponto e além d isto manter informações sobre brilho, cor, intensidade, luminosidade, etc., gastando uma quantidade maior de memória para podemos manter imagens em computadores.

1.2ArquivosO computador organiza as informações internamente através

de uma unidade denominada arquivo. Um arquivo contém um determinado tipo de informação e é criado por um outro arquivo especial denominado arquivo de programa ou arquivo executável, que é o software em si. Podemos então classificar os arquivos como sendo:

1. Arquivos executáveis : são os programas ou softwares propriamente ditos. Através deles é que criamos e modificamos outros tipos de arquivos. Eles fornecem um ambiente particular. Podem ser:

iterativos : quando se comunicam com o usuário. não iterativos : quando não se comunicam com o usuário.

Usuários podem aprender a utilizar os arquivos executáveis, 8

Page 9: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

mas não existe um padrão sobre o funcionamento dos mesmos. Assim, para sair de um determinado editor de textos eu utilizo à tecla F3, em outro editor a tecla de saída pode ser ALT+X. Cada equipe de programadores define o funcionamento do programa que esta criando.

Atualmente existe uma tendência a padronizar as teclas com operações mais comuns de forma que funcionem igualmente em todos os programas e os usuários não tenham tantas dificuldades em aprender a usar diferentes softwares. Uma das vantagens das interfaces gráficas é a padronização das operações mais comuns.

2. Arquivos de dados : contém apenas informações alfabéticas e numéricas (alfanuméricas). São utilizados para substituir o excesso de papéis e documentos em empresas, mantendo informações cadastrais em computador ao invés de mantê-los em arquivos de aço. Entretanto, em alguns casos os arquivos de dados, apesar de diminuir o volume de papéis excessivo, não têm a intenção de eliminar o processo manual, mas de fornecer um meio mais rápido e eficiente de consulta e acesso às informações. É uma forma alternativa de manter dados importantes e volumosos.

3. Arquivos de sons : comportam voz, música e sons em geral capturados através de uma placa de som e um microfone ou um instrumento musical acoplado ao computador por uma placa especial.

4. Arquivos de imagens: possuem imagens estáticas capturadas com scanners ou dinâmicas capturadas com câmeras digitalizadoras.

1.3DiretóriosSe guardássemos todos os arquivos de um computador juntos

em um único lugar, teríamos pelo menos dois grandes problemas. Primeiro, seria extremamente difícil, ou mesmo impossível saber se já existe algum arquivo armazenado com aquele nome. Segundo o Sistema Operacional, para executar o último arquivo, teria que percorrer todos os outros até chegar no arquivo desejado. Este processo sem dúvida tornaria o computador lento.

Para facilitar a organização do disco rígido, catalogar arquivos com mesmas características e facilitar o trabalho do Sistema Operacional, foi criado então o conceito de diretório.

Um diretório nada mais é que um “repositório” de arquivos e outros diretórios (chamados de subdiretórios), formando uma estrutura hierárquica chamada de árvore de diretório . Podemos entender diretórios como sendo o endereço de um arquivo dentro do disco rígido.

1.4Bits, Bytes e UnidadesToda e qualquer informação no computador é representada

através do sistema de numeração binária. Trata-se de uma forma matemática de se tratar à língua do computador para que possamos conversar com ele. Um bit é a menor informação para o microcomputador. Ele representa o estado de um fio. O dígito um (1) representa a passagem de corrente por um fio, e o dígito zero (0) representa a ausência d e corrente.

9

Page 10: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Este sistema de numeração é denominado binário porque só utiliza dois dígitos. O sistema de numeração que nós conhecemos é o sistema decimal. Existem outros sistemas e meios de converter números de um sistema para outro. Assim foi estabelecida uma forma de comunicação inicial do ser humano com o computador, ainda que de uma forma muito difícil para nós humanos.

Toda e qualquer informação é representada na forma de bits ou conjunto de bits. Como pudemos ver anteriormente, os dados (letras e números) são codificados no computador através da tabela ASCII. Imagens são representadas em monitores através de mapas de bits (bitmaps), ou seja, cada ponto luminoso da tela corresponde a um único bit na memória indicando se deve estar ligado ou desligado. Desenhos são formados ativando os pontos corretos e mantendo outros desativados. As cores podem ser representadas por grupos de bits. Por exemplo, 4 bits podem ser usados para

indicar até 2 4 = 16 cores diferentes.Convencionou-se, então, quantificar a informação em uma

unidade denominada byte (B). Um byte representa 8 bits, ou seja,

28= 256 combinações distintas, uma vez que cada bit pode assumir dois valores diferentes (0 ou 1). Com o passar do tempo esta unidade tornou-se pequenas para representar os arquivos e a capacidade de armazenamento dos meios magnéticos, por isto foram criadas novas unidades:

1.5Software (Programas)Programa é uma seqüência de instruções que diz ao

computador o que ele deve fazer. Isto é, qual é a tarefa específica que deve realizar. Programa e software são sinônimos e aparecerão como tais durante todo este texto.Os softwares podem ser classificados em dois grandes grupos de acordo com a atividade que desempenham:

1. Básico2. Aplicativos

1. Softwares Básicosservem para a operação e programação do computador. Podem ser divididos em Utilitários e Ferramentas de Desenvolvimentos. Sem os softwares básicos os computadores não poderiam ser utilizados pelo homem. Eles formam um conjunto de programas que interagem entre os seres humanos e os micros.

1

Unidade Medida Abreviação1 byte 8 bits B1 kilobyte 1024 B kB1 megabyte 1024 kB MB1 gigabyte 1024 MB GB1 terabyte 1024 GB TB

Page 11: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Utilitários são aqueles que operam o computador, controlando seus recursos e fornecendo um meio de nos comunicarmos com o computador de forma inteligível. Um exemplo clássico de Utilitário é o Sistema Operacional. Sem ele não poderíamos dizer ao computador o que desejamos que ele faça.

Ferramentas de Desenvolvimento são softwares para a programação do computador, ou seja, são programas que permitem criar outros programas de uso geral ou específico. Por exemplo, linguagem C, Pascal, Basic, Clipper, etc.

2. Softwares Aplicativos são programas de uso específico para usuários finais, como processadores de textos (Microsoft Word, Fácil, Wordstar), planilhas eletrônicas (Excel, Quattro), sistemas gerenciadores de bancos de dados (Clipper, FoxProw, Acces), entre outros.É o software que diz ao computador como a informação

fornecida pelo usuário deve ser processada. Por exemplo, se fornecermos os números 2 e 10 para o computador, dependendo do programa ou software que estiver sendo executado, estes números poderão ser somados e o resultado impresso será 12, ou então o resultado pode ser 20 se o programa sendo executado multiplicar os dois números fornecidos pelo usuário.

Portanto é o software que fornece um ambiente para a manipulação de um determinado tipo de informação. Se não temos um software para reprodução de sons, não podemos ouvir nem gravarmos música no micro. Para criarmos e modificarmos os arquivos criados por um aplicativo, devemos aprender como funciona especificamente o aplicativo, não precisamos necessariamente saber nada sobre Softwares Básicos.

1.6HardwareConsiste na parte física do computador, placas, fios e cabos

que conduzem a eletricidade e permitem a comunicação e conexão dos diferentes componentes de um computador. Através do hardware nos comunicamos com a máquina e vice-versa.

Quando um novo dispositivo é ligado ao computador é necessário uma “interface”, isto é, uma placa que permita a comunicação entre o dispositivo e a unidade de processamento em si (CPU). Além disto, é necessário um software especial para acessar este dispositivo (driver) e permitir a criação e manipulação de informações utilizadas pelo dispositivo. Em geral a instalação de dispositivos não é muito difícil, mas requer alguns conhecimentos a mais a respeito do funcionamento do computador. Interrupções, canais de entrada e saída, configuração das portas e uso do DMA são requisitos básicos para a instalação de muitos periféricos no computador.

Software Básico

Ferramentas de Desenvolvimento

Utilitários

1

Page 12: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

O hardware de um computador é formado basicamente pelos seguintes elementos:

1. Dispositivos de Entrada2. CPU (Microprocessador)3. Memória Principal4. Memória Secundária.5. Dispositivos de Saída.Dispositivos de Entrada e Dispositivos de Saída são

denominados periféricos, pois não estão diretamente relacionados ao processamento, mas sim na entrada ou saída de informações.

Dispositivos de Entrada permitem ao ser humano introduzir informações no computador. São exemplos de dispositivos de entrada:

a) teclado : fornece informações alfanuméricas ao computador (dados).b) mouse : Permite a seleção de atividades através de ícones e opções que aparecem no monitor.c) scanner: captura imagens estáticas como fotografias.d) câmeras digitalizadoras : captura imagens em movimento.e) leitora ótica : efetua leitura de informações em cartões marcados.

Dispositivos de Saída exibem os resultados do processamento, permitindo a comunicação do computador com o homem:

a) monitor : semelhante a um aparelho de televisão, em geral exibe os caracteres digitados em um teclado.

b) impressora : reproduz os resultados em papel.c) plotter : exibe gráficos técnicos e complexos em papel. d) datashow : projeta informações em um telão.e) paletes : permite a gravação de slides

Há certos equipamentos que ora funcionam como dispositivos 1

Page 13: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

de entrada e ora como dispositivos de saída, logo são conhecidos como Dispositivos de Entrada e Saída.

a) modem : permitem a troca de informações entre computadores via linha telefônica.

b) unidades de disquetes : permitem a leitura/gravação de informações em meio magnético flexível de baixa capacidade e velocidade.

c) unidades de disco rígido (HD) : permitem a leitura/gravação de informações em meio magnético rígido de alta capacidade e velocidade.

d) CD -R/W (compact disc read write) : permitem a leitura/gravação de informações em discos a laser.

e) DVD-R/Wf) Memórias Compact Flash

A Unidade Central de Processamento (CPU) conhecida como microprocessador é o cérebro da máquina. Cabe à CPU controlar todo o fluxo de informações entre os dispositivos de entrada, saída, além de realizar todo o acesso à memória principal e à memória secundária. Em suma, é o principal componente do computador responsável pelo processamento da entrada gerando a saída desejada.

Internamente, é composta por uma Unidade de Controle responsável por acessar a Memória Principal para buscar dados e instruções para serem executadas e pela Unidade Lógica e Aritmética responsável por todos os cálculos matemáticos e lógicos simples. Para os cálculos mais complexos que envolvem ponto flutuante (números reais de alta precisão), é necessário um chip especial, o co-processador matemático que pode ser embutido internamente no microprocessador.

Existem diversos fabricantes de microprocessadores. Os mais utilizados em computadores pessoais são, por exemplo: 80486 (conhecido simplesmente pela terminação 486), Pentium de fabricação da Intel, etc. O que difere um dos outros é a capacidade de manipular dados e a velocidade do clock.

A capacidade de um processador refere-se à quantidade de bits que ele consegue enviar e receber dos outros dispositivos. Quanto maior a capacidade de manipular bits, melhor e mais rápido é o

1

Microprocessador Capacidade Modelo Clock80486 32 bits DX2 66 MHz80486 32 bits DX4 75 MHzPentium 64 bits ---- 100 MHz

Page 14: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

desempenho do computador. Além disto, existe também o relógio interno ou clock. Trata-se de um pequeno cristal de quartzo que emite pulsos constantes a um determinado intervalo de tempo. Quanto maior a freqüência (em MegaHertz), mais rápido é o computador. Estes pulsos do relógio são utilizados pelo processador para controlar o ciclo de execução das instruções.

A Memória Principal é um circuito especial dedicado a manter informações enquanto o computador estiver funcionando. É denominada de memória RAM. É nela que ficam armazenados os programas e informações enquanto estivermos manipulando-as. Cabe ao Sistema Operacional reconhecer e gerenciar o espaço livre para que seja possível executar programas e manusear informações. O microprocessador constantemente acessa a Memória Principal para ler e escrever informações e instruções.

A memória RAM (Random Access Memory) é extremamente volátil, isto é, seu conteúdo é descartado assim que o computador é desligado ou ocorre uma falha na energia. Para que as informações não se percam, precisamos armazená-las de forma definitiva naquilo que denominamos Memória Secundária. São os discos flexíveis, discos rígidos, fitas streamer e discos a laser. Cabe também ao Sistema Operacional reconhecer e acessar os periféricos responsáveis pela leitura e gravação nestes meios.

O problema da memória RAM é a lentidão com que o microprocessador acessa seu conteúdo. Criou-se então uma pequena, mas veloz memória denominada Memória Cache que fica entre o microprocessador e a memória RAM ou internamente na CPU. Geralmente possui capacidade para 128 até 1024 KB.

O computador utiliza a memória RAM como área de trabalho, isto é, enquanto o computador estiver ligado e programas estiverem sendo executados, tudo ocorre na memória RAM. A memória secundária serve apenas para armazenar de forma “definitiva” os arquivos para que eles não se percam assim que desligarmos o microcomputador.

Existem outros tipos de memórias especiais. Memória ROM (Read Only Memory) é um tipo de memória que já vem gravada de fábrica com um pequeno programa com tarefas mínimas para que o computador possa ser ligado e funcione adequadamente. Algumas vezes este circuito é chamado de BIOS (Basic Input Output System) e contem uma série de pequenos programas para acessar teclado, monitor, disco rígido, etc.

Há alguns tipos especiais de memória apenas de leitura:PROM (Programmable Read Only Memory) pode ser gravada

pelo próprio usuário e não mais pelo fabricante, mas uma vez gravada não mais poderá ser apagada.

EPROM (Erasable Programmable Read Only Memory) capaz de ser programável pelo usuário e se necessário apagar seu conteúdo através de um equipamento especial.

EEPROM (Electrical Erasable Programmable Read Only Memory) pode ser programada pelo usuário e apagada através da aplicação de uma corrente elétrica em um de seus pinos.

1.7Sistema OperacionalO Sistema Operacional é um programa especial que gerencia

1

Page 15: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

todos os recursos da máquina, tais como memória, teclado, monitor de vídeo, mouse, entre outros.

É através do Sistema Operacional que executamos outros programas, gravamos ou lemos informações em CD-ROMs, pendrive, visualizamos textos em vídeo ou impressora, etc. Sem o Sistema Operacional não conseguiríamos realizar estas tarefas. Ou seja, simplesmente não poderíamos utilizar o computador.

Existem inúmeros Sistemas Operacionais, tais como: MS-DOS, UNIX, OS/2, VM/CMS, QNN, etc. Cada um deles possui características próprias e é executando em máquinas diferentes. Assim, não podemos executar um programa em Sistemas Operacionais distintos, a não ser que o fabricante do programa nos garanta esta portabilidade.

O Windows só consegue executar programas MS-DOS porque foram feitos por um mesmo fabricante, a Microsoft. E porque, a princípio, o Windows não é um Sistema Operacional por si, ele necessita do MS-DOS para funcionar. As versões a partir do Windows 95 foram planejadas para serem independentes do MS-DOS, mas que aceitam aplicativos do MS-DOS.

No Linux o Kernel mais o conjunto de ferramentas GNU compõem o Sistema Operacional. O kernel (que é a base principal de um sistema operacional) poderá ser construído de acordo com a configuração do seu computador e dos periféricos que possui.

É de responsabilidade do Sistema Operacional:1. Carregar e executar programas.2. Controlar dispositivos de entrada e saída (teclado, monitor,

etc).3. Gerenciar arquivos e diretórios.4. Gerenciar a memória RAMComo pudemos ver anteriormente, todo e qualquer programa

executado em um computador utiliza a memória RAM. Da mesma forma, o Sistema Operacional deve ser carregado, ou seja, copiado do disco rígido ou disco flexível para a memória RAM. Denominamos este processo de BOOT. Toda vez que ligamos o computador, é feita uma série de testes para verificar o funcionamento dos periféricos e se tudo estiver perfeito, o Sistema Operacional pode ser carregado.

Os Sistemas Operacionais ainda podem ser classificados quanto ao número de pessoas que podem utilizar os recursos ao mesmo tempo e quanto ao número de programas que podem ser executados em uma mesma máquina.

1. Monousuário: permitem apenas um usuário interagindo com o sistema.

2. Multiusuário: permitem vários usuários conectados ao sistema simultaneamente.

3. Monotarefa : apenas um programa pode ser executado de cada vez. Caracterizam-se por permitir que o processador, a

memória e os periféricos permaneçam exclusivamente dedicados à execução de um único programa.

Enquanto um programa aguarda por um evento o processador permanece ocioso. A memória é sub-utilizada caso o programa não a preencha totalmente.

1

Page 16: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Simples implementação por não haver preocupação com problemas decorrentes de compartilhamento de recursos. Ex.: MS-DOS

4. Multitarefa : vários programas podem ser executados ao mesmo tempo. Várias aplicações compartilham os mesmos recursos. O SO se preocupa em gerenciar o acesso concorrente aos

seus diversos recursos. Redução do tempo de resposta das aplicações

processadas e de custos. Mais eficientes, mas de implementação mais complexa.

Ex: Windows, Linux O MS-DOS é um Sistema Operacional monousuário e

monotarefa, ou seja, permite apenas um operador e executa apenas um programa de cada vez. O Windows, apesar de não ser um Sistema Operacional, fornece um ambiente monousuário e multitarefa, onde apenas um único usuário pode executar vários aplicativos ao mesmo tempo.

Em geral Sistemas Operacionais que são multiusuários são também multitarefa, como o UNIX e QNN, onde podemos ter vários usuários em terminais distintos executando, cada um, uma série de programas diferentes ao mesmo tempo.

Além disto, Sistemas Operacionais podem ser classificados quanto ao tipo de comunicação com o usuário, podendo ser:

1. Interface por linha de comando : quando o usuário tem que digitar o comando por extenso na tela do computador. A comunicação, em geral é feita em modo texto. Preferencialmente utilizada por especialistas.

2. Interface gráfica para usuários (GUI): quando os comandos são executados em um ambiente gráfico com o uso do mouse. Voltada principalmente para o usuário final.

1.8Processo de BootÉ a “carga” do sistema operacional, a partir da memória

secundária (floppy, hd, cd, etc.) para a memória RAM principal;Um pequeno programa executa esta tarefa. Este não faz parte

necessariamente do Sistema Operacional. Ex: Lilo, GRUB

2 - Introdução

2.1HistóricoO Sistema Operacional UNIX foi desenvolvido nos laboratórios

da AT&T para uso próprio, baseado em um antigo projeto que deveria ser o primeiro Sistema Operacional multiusuário e multitarefa, o MULTICS.

1

Page 17: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Porém, este projeto estava muito além da capacidade dos equipamentos para a época. Desta forma o projeto foi arquivado, mas alguns de seus idealizadores (Ken Thompson, Dennis Ritchie e Rudd Canadaday) resolveram escrever uma versão simplificada e monousuária para um computador com menores recursos. O resultado impressionou, mesmo sendo utilizada uma máquina limitada.

Assim, o código foi reescrito para outros computadores melhores, apresentando excelentes resultados. Por coincidência ou não, estes computadores para os quais o Sistema Operacional foi reescrito eram utilizados por quase todas as Universidades que se interessaram por este Sistema Operacional muito superior aos que vinham sendo utilizados nos laboratórios de computação.

A partir de então, a AT&T licenciou seu mais novo projeto para as Universidades, mostrando uma enorme visão e capacidade inovadora, pois além do Sistema Operacional, foi cedido o código do mesmo para as Universidades, que não mediram esforços em depurar o programa e incluir novas características.

Foi dentro das Universidades que o UNIX cresceu e adquiriu muitas das características que o tornam poderoso, dando origem a diversas versões além da original proveniente dos laboratórios da AT&T. Esta característica tornou o UNIX um sistema poderoso na medida em que foi concebido não apenas por uma equipe de projetistas, mas sim por toda uma comunidade de pessoas interessadas em extrair o melhor das máquinas.

A princípio, o código do UNIX foi escrito em linguagem assembler ou de máquina que é altamente dependente do hardware ou parte física do computador. Para que o código fosse reescrito, era necessário muito esforço e tempo. Entretanto, um dos criadores d Sistema Operacional UNIX resolveu utiliza uma nova linguagem para escrever o U NIX, era a linguagem C que oferecia o poder da linguagem de máquina com a facilidade das linguagens estruturadas de alto nível.

A grande vantagem de se utilizar à linguagem C ao invés da linguagem de máquina própria do computador é a de que a primeira é altamente portável, isto é, um programa escrito em C para um determinado computador poderá ser executado quase sem nenhuma modificação em outro tipo de máquina completamente diferente. Enquanto que se fosse feito um programa em linguagem de máquina para um determinado computador o programa seria executado somente neste tipo de computador e não nos demais, para isto, seria preciso reescrever todo o programa.

O UNIX foi projetado para ser executado em computadores de grande capacidade, ou seja, mini e supercomputadores, pois somente estas máquinas podiam oferecer suporte aos recursos necessários para o ambiente gerado pelo Sistema Operacional.

Crescendo longe do alcance dos usuários de microcomputadores, o UNIX atingiu uma estabilidade e estrutura jamais alcançada por um Sistema Operacional. Mas nestes quase trinta anos de existência do UNIX, os microcomputadores evoluíram a ponto de fornecer o mínimo de condições para que este poderoso Sistema Operacional pudesse ser implementado para os micros IBM-PC e compatíveis.

1

Page 18: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Diversas versões do UNIX foram escritas e licenciadas para venda com nomes semelhantes (XENIX, UNISYS, AIX, etc), porém com as mesmas características essenciais, sendo que atualmente existem inúmeras versões comerciais e outras tantas versões livres que foram desenvolvidas em Universidades ou por hackers através da rede Internet.

Apesar de ter sido desenvolvido para lidar com dispositivos de caracteres, UNIX foi pioneiro na área de gráficos em estações de trabalhos. As primeiras interfaces gráficas para usuários (GUI) foram projetadas e utilizadas em Sistemas operacionais UNIX, desenvolvidas pelo MIT (Massachussets Institute of Technology). Trata-se do X Window System.

Como se pode notar, UNIX é um sistema de inúmeras possibilidades. Praticamente todos os recursos que os sistemas operacionais mais atuais utilizam já haviam sido executados em UNIX há muito. Todas as áreas da computação puderam ser desenvolvidas com o UNIX.

As tendências atuais levam a uma tentativa de padronizar o Sistema Operacional UNIX combinando as melhores características das diversas versões do mesmo. Prova disto é a criação do POSIX (Portable Operating System Interface / Interface Portável para Sistemas Operacionais), um padrão de Sistema Operacional desenvolvido pela IEEE (Institute of Eletrical and Eletronic Engineers). Além da OSF (Open System Fundation) que reúne as principais líderes do mercado de equipamentos para definir o padrão de GUI (interfaces gráficas) para UNIX.

A versão que será abordada durante este curso é o LINUX, um clone do Sistema Operacional UNIX para microcomputadores IBM-PC 386 e compatíveis. O LINUX foi desenvolvido inicialmente por Linus Torvalds na Universidade de Helsinski na Finlândia.

O LINUX possui a vantagem de ser um software livre e ser compatível com o padrão POSIX. Além de unir em um único Sistema Operacional as vantagens das diferentes versões de UNIX comerciais disponíveis. Desta forma, LINUX torna-se a melhor opção para que usuários de microcomputadores possam usufruir da capacidade do UNIX.

Apesar de não poder rodar aplicativos para MS-DOS, o LINUX pode rodar todos os softwares de desenvolvidos para UNIX, além de estarem disponíveis softwares que permitem a emulação do MS-DOS e do Windows.

O LINUX pode ser útil em empresas que desejam possuir estações de trabalho com poder razoavelmente comparável às estações existentes como SUNs e outras usando PCs, com fiel semelhança no seu uso.

O LINUX pode conviver pacificamente com outros sistemas operacionais no PC. Existe uma infinidade de formas de instalá-lo: em uma partição DOS já existente, sem haver a necessidade de reparticionar o HD e conseqüentemente sem nenhuma perda de informação, pode ainda ser instalado em um HD exclusivamente dedicado a ele.

Para conviver com outros sistemas operacionais, existem algumas maneiras de carregar o sistema operacional, o Lilo (Linux Loader) que pode funcionar como um BOOT manager no qual se

1

Page 19: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

escolhe qual partição ou drive irá dar a partida, o loadlin que é um utilitário DOS para carregar o LINUX a partir do DOS, ou por meio de um disco de boot.

O LINUX pode ser obtido de diversas formas diferentes, existem diversos livros à venda, os quais incluem CDs com distribuições do LINUX. Outra forma de obtê-lo inteiramente grátis e via FTP pela INTERNET.

Existe hoje, um movimento no sentido de torna o LINUX um sistema popular, dado que a superioridade técnica ele já possui.

2.2Uma visão geral do LINUXComo vimos acima o Linux é um sistema operacional criado

em 1991 por Linus Torvalds na universidade de Helsinki na Finlândia. É um sistema Operacional de código aberto distribuído gratuitamente pela Internet. Seu código fonte é liberado como Free Software (software livre) o aviso de copyright do kernel feito por Linus descreve detalhadamente isto e mesmo ele está proibido de fazer a comercialização do sistema.

Isto quer dizer que você não precisa pagar nada para usar o Linux, e não é crime fazer cópias para instalar em outros computadores, nós inclusive incentivamos você a fazer isto. Ser um sistema de código aberto pode explicar o desempenho, estabilidade e velocidade em que novos recursos são adicionados ao sistema.

Para rodar o Linux você precisa, no mínimo, de um computador 386 SX com 2 MB de memória e 40MB disponíveis em seu disco rígido para uma instalação básica e funcional.

O sistema segue o padrão POSIX que é o mesmo usado por sistemas UNIX e suas variantes. Assim, aprendendo o Linux você não encontrará muita dificuldade em operar um sistema do tipo UNIX, FreeBSD, HPUX, SunOS, etc., bastando apenas aprender alguns detalhes encontrados em cada sistema.

O código fonte aberto permite que qualquer pessoa veja como o sistema funciona (útil para aprendizado), corrija alguma problema ou faça alguma sugestão sobre sua melhoria, esse é um dos motivos de seu rápido crescimento, do aumento da compatibilidade de periféricos (como novas placas sendo suportadas logo após seu lançamento) e de sua estabilidade.

Outro ponto em que ele se destaca é o suporte que oferece a placas, CD-Roms e outros tipos de dispositivos de última geração e mais antigos (a maioria deles já ultrapassados e sendo completamente suportados pelo sistema operacional). Este é um ponto forte para empresas que desejam manter seus micros em funcionamento e pretendem investir em avanços tecnológicos com as máquinas que possui.

Hoje o Linux é desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fazendo sua contribuição ou mantendo alguma parte do kernel gratuitamente. Linus Torvalds ainda trabalha em seu desenvolvimento e também ajuda na coordenação entre os desenvolvedores.

O suporte ao sistema também se destaca como sendo o mais eficiente e rápido do que qualquer programa comercial disponível

1

Page 20: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

no mercado. Existem centenas de consultores especializados espalhados ao redor do mundo.

2.2.1 Algumas Características do Linux

Um Sistema Operacional deve gerenciar os recursos da máquina da melhor maneira possível de forma a poder oferecer aos usuários o máximo do computador. Dentre as principais funções do SO, podemos destacar:

1. Criar e manipular uma estrutura de arquivos e diretórios.2. Controlar o acesso à memória e outros dispositivos controlados

pelo microprocessador, como monitor, teclado, impressora, etc.

3. Gerenciar a execução de programas, trazendo-os da memória para o microprocessador.A primeira vista, parece que o LINUX nada possui de diferente

de qualquer outro Sistema Operacional, mas nenhum é tão bom em unir e integrar o que há de melhor em um computador de forma harmoniosa e eficiente devido a sua própria origem em meio a toda uma comunidade de pessoas interessadas em obter o máximo e o melhor em desempenho. Cabe ressaltar também que o Linux possui todas as características que fazem do UNIX um excelente sistema operacional, entre elas Portabilidade, Multiusuário e Multitarefa, Estrutura hierárquica de arquivos, Ferramentas e Utilitários, Comunicação com outros sistemas.

Daremos uma rápida olhada em algumas das principais características e vantagens que fazem o LINUX único:

Multitarefa . Linux, como as outras versões do UNIX é um sistema multitarefa, possibilitando a execução de múltiplas aplicações de diferentes usuários no mesmo sistema ao mesmo tempo. A performance de uma máquina 486 de 50 MHz é comparável com muitas workstations de médio porte rodando UNIX.

O X Window System é, de fato, um padrão na indústria de sistemas gráficos para máquinas UNIX. Uma versão completa do X Window System, conhecida como Xfree86 está disponível pra Linux.

TCP/IP (Transmission Control Protocol / Internet Protocol), este é um conjunto de protocolos que liga milhões de universidades e empresas numa rede mundial conhecida como Internet. Com uma conexão Ethernet o Linux permite que seja feita uma conexão da Internet a uma rede local.

Memória Virtual. O Linux pode usar parte do seu HD como memória virtual, “aumentando” assim a capacidade da memória RAM.

Compatibilidade com o IEEE POSIX. Linux foi desenvolvido com a portabilidade de software em mente.

2.3A estrutura do LINUX

2.3.1 Estrutura Lógica

2.3.1.1 Kernel/ShellKernel é o núcleo do Sistema Operacional LINUX, que

permanece residente na memória. Através dele que o usuário possui o acesso aos recursos oferecidos pelo hardware (o computador em

2

Page 21: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

si). Todo o gerenciamento de memória, dispositivos, processos, entre outros é coordenados pelo kernel. Basicamente está dividida em duas partes:

1. gerenciamento de dispositivos: supervisiona a transmissão de dados entre a memória principal e os dispositivos periféricos. Desta forma, o kernel abrange todos os drivers controladores de dispositivos que podem ser ligados a um computador.

2. gerenciamento de processos: aloca recursos, escalona processos e atende a solicitação de serviços dos processos.

Shell é um programa executado após a inicialização do sistema que servirá como interpretador de comandos entre o usuário e o Kernel do LINUX. É ele quem fornece uma interface de linha de comando para que o usuário possa dizer ao Sistema Operacional o que deve ser feito. Em termos técnicos, o shell é um interpretador de comandos que analisa o texto digitado na linha de comandos e executa esses comandos produzindo algum resultado O Shell traduz o comando digitado em chamadas de sistema que são executadas em linguagem de máquina pelo kernel. Além disto, fornece um ambiente programável através de scripts.

A palavra shell vem do inglês "concha". A idéia é que você quando entra no sistema Linux está entrando em uma concha, cuja "casca" protege o usuário do sistema e o sistema do usuário. A "casca" da shell não irá permitir que o usuário execute alguma coisa que ele não tem permissão e não permite que outro usuário invada a intimidade de outro.

O shell tem como referência um (sub)diretório onde o usuário tem total controle, conhecido como diretório "home". Ali o usuário tem privilégios para criar, alterar, apagar e modificar arquivos e diretórios. Em teoria, tudo o que o usuário produzir será mantido no home, separado pela "casca" do shell dos outros usuários.

Existem inúmeros shells cada um com ligeiras diferenças entre si. Muitas vezes é possível utilizar vários shells diferentes em um mesmo micro rodando LINUX, isto porque ele é multitarefa e multiusuário, de modo que cada usuário poderia utilizar o shell que lhe agradar mais. Entre os mais utilizados estão o Bourne Shell, o C shell e o Korn Shell. No Linux utilizamos normalmente a BASH (ou Bourne Again Shell).

2.3.1.2 UtilitáriosExistem centenas de utilitários (comandos) para a realização

de tarefas especializadas ou rotineiras, entre elas manipulação e formatação de textos, cálculos matemáticos, gerenciamento e manutenção de arquivos e diretórios, administração de sistemas, manutenção de segurança, controle da saída para impressora, desenvolvimento de programas e filtragem de dados.

Cada um destes utilitários é digitado na linha de comando do LINUX que será interpretado pelo Shell do sistema. Este por sua vez se encarregará de realizar diversas chamadas ao Kernel para a execução do comando.

Como as interfaces gráficas são muito recentes, o LINUX teve toda a sua potencialidade explorada em termos de ambiente de desenvolvimentos. Isto equivale a dizer que o que se pode fazer

2

Page 22: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

com um software de Formatação de Textos do tipo aponte e clique, pode ser realizada através do antigo modo de linha de comando no LINUX.

Mas isto não impede que as facilidades do ambiente de janelas seja explorado, pelo contrário. Os mais profissionais programas aplicativos rodam sobre o Sistema Operacional LINUX, entre eles o Gerenciador de Banco de Dados ORACLE, INGRES e FoxBASE+, formatadores de textos Postscript, Tex e FamaMaker de qualidade extraordinárias.

2.3.1.3 ProcessosQuando um programa ou utilitário é executado, passa a se

chamar processo. Cada processo iniciado possui um estado indicando sua condição (em execução, parado, interrompido, etc) e a prioridade. Sendo que os processos do sistema possuem prioridades sobre os do usuário.

Com base nas informações sobre os processos em andamento, a CPU precisa escalonar os processos para dedicar a cada um, um determinado tempo dando a impressão de que vários processos estão sendo executados ao mesmo tempo.Exemplos de estados de processos: Execução (R - running) - processo está sendo executado pelo

processador. Dormindo (S - sleeping) –o processo está “dormindo” ou

aguardando algo para realizar alguma atividade Espera ou Bloqueado (wait) - aguarda por algum evento externo

ou por algum recurso para prosseguir seu processamento. Zumbi (Z - zombie) – o processo que se encontra neste estado

teoricamente não mais existiria, ou estaria morto, porem uma cópia dele ainda reside na memória. Essa situação pode ocorrer se eliminarmos um processo pai sem antes fazermos o mesmo com seus filhos, pois dessa maneira o processo que controlava as ações dos demais não mais existe e estes perdem sua função passando então para o estado zumbi.

Ctrl + z - Suspende um processo em andamento permitindo digitar outro comando durante a execução de um programa.

Ctrl + c - Suspende um processo em andamento.

3 - Iniciando

3.1A Sessão LINUXAntes de iniciar a sessão no sistema propriamente dita, temos

que levar em consideração o significado das teclas especiais que são utilizadas pelo LINUX, bem como de alguns conceitos iniciais.

Por ser um Sistema Operacional que suporta vários usuários (multiusuário), antes de tudo, é preciso se identificar. O LINUX então se encarregará de permitir ou não seu acesso verificando sua senha, se estiver correta libera o diretório de entrada e executa arquivos de inicialização locais e o interpretador apropriado. Após este processo, você estará apto a executar os comandos do LINUX.

Quando o terminal estiver ligado, provavelmente será apresentado um sinal de prontidão do sistema da seguinte forma:

2

Page 23: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Login:

Isto significa que o sistema está esperando para que o usuário se identifique com o nome de usuário que lhe foi concedido pelo Administrador de Sistema junto com uma senha de acesso. Após digitar o nome de usuário, pressione ENTER. Será apresentado um novo sinal de prontidão:

Password:

Este sinal pede que seja digitada a sua senha. Note que à medida que forem digitados os caracteres, eles não aparecerão no vídeo por medidas de segurança.

Se algo deu errado (foi novamente apresentado o sinal de login), tente novamente, certificando-se de ter digitado o nome de usuário e a senha exatamente como recebeu do Administrador pois o LINUX diferencia as letras maiúsculas das minúsculas. Isto quer dizer que para o LINUX A (letra “a” maiúscula) é diferente de a (letra “a” minúscula). Esta é uma dica que serve não apenas para iniciar a sessão, mas também para todos os comandos LINUX.

Tendo o usuário se identificado com o nome da conta e a senha (se esta existir, pois existem contas criadas especialmente para uso sem senha), o LINUX checa em um arquivo de configuração pelo nome da conta e a senha correspondente devidamente encriptada. Estando ambas registradas e corretas, o Sistema Operacional permite o acesso ao usuário executando o shell indicado também neste arquivo.

O shell providencia uma interface de comunicação entre o kernel e o usuário. Esta interface consiste de uma linha de comando (ou prompt) na qual deve ser digitado o comando por extenso seguido por seus parâmetros (se tiver). Em uma linha de comando podemos ter mais de um comando em seqüência para serem executados.

Em geral esta linha de comando é formada por um símbolo que pode ser de porcentagem (%) ou cifrão ($) para usuários comuns e grade (#) para usuários com privilégio de raiz, dependendo do tipo de shell usado.

Usuário_logado@máquina_logada dir._corrente]$ : usuário “não root” Usuário_logado@máquina_logada dir._corrente]# : usuário “root”Os parâmetros que aparecem após o nome do comando podem

ser nomes de arquivos e/ou caminhos de diretórios. Eles devem sempre ser digitados com um espaço entre si e depois do comando. Muitas vezes alguns símbolos que aparecem na linha de comando não são parâmetros, mas sim comandos para o shell determinando a seqüência em que o(s) comando(s) devem ser executados.

O LINUX aceita e executa um comando quando, ao terminarmos de digitarmos o comando, pressionarmos a tecla ENTER, RETURN ou ↵ (varia de computador para computador).

Caso seja encontrado algum erro na digitação do comando antes que a tecla ENTER seja pressionada, podemos corrigi- lo utilizando as teclas de direção ← e → para posicionarmos o cursor na posição em que o erro foi cometido. Cursor é o símbolo gráfico que

2

Page 24: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

aparece logo após a linha de comando e que se movimenta à medida que caracteres são digitados e aparecem na tela.

Para apagar caracteres antes do cursor, basta pressionar a tecla de BACKSPACE (← ) ou a combinação de teclas CTRL+H (^H). Se desejar apagar toda a linha tente CTRL+U (^U). Pode ser que a tecla DEL também funciona para apagar caracteres, mas de maneira diferente, ao invés de apagar caracteres antes do cursor, ele apaga caracteres após o mesmo.

Algumas vezes podemos recuperar os comandos dados anteriormente. Certos tipos de shell possuem um arquivo oculto no diretório de entrada do usuário que armazena até os n últimos comandos digitados. É o arquivo de histórico dos comandos. Para recuperá-los podemos utilizar as teclas ↑ ou ↓. Ou então utilizar os comandos do shell: history e “!”.

O comando history lista os n últimos comandos digitados.Exemplo: Utilize os comandos history e “!” para re-executar um comando

$ history$ !200Em alguns shells estas teclas não estão definidas, ou então

outras realizam estas mesmas funções. Procure junto ao Administrador de Sistemas quais teclas ou conjunto de teclas usar para editar a linha de comando.

Certos comandos são interativos e outros não-interativos . Comandos interativos são aqueles que após serem executados, exigem que algumas perguntas sejam respondidas para que possam prosseguir. Comandos não-interativos simplesmente executam os comandos sem nada perguntar e retornam à linha de comando do LINUX.Exemplos de comandos não-interativos:

ls exibe lista do conteúdo do diretório corrente date - exibe a data e hora do sistemacal <ano> exibe calendário do ano especificadowho - exibe lista de todos os usuários ativos no sistema clear limpa a tela

Exemplos de comandos interativos:passwd modifica a senhaftp - permite transferência de arquivos mail - gerencia correspondências

3.2Encerrando a sessãoVocê pode usar dois comandos para encerrar uma sessão, os

comandos exit ou logout no prompt do shell. Em alguns sistemas aparecerá na tela o prompt de logout e as informações relativas ao tempo decorrido durante a sessão. É importante encerrar devidamente uma sessão pelos seguintes motivos:

Segurança : Se você continuar com a sessão aberta e abandonar o terminal, o sistema fica vulnerável ao acesso de pessoas não autorizadas, e seus arquivos poderão ser manipulados por essas pessoas;

Cobrança : Se a sua organização usa os recursos de contabilidade do sistema para cobrar pela sua utilização, você será

2

Page 25: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

cobrado pelo tempo que permanecer dentro da sessão.

3.3Ciclo de Execução do ComandoO shell analisa a linha do comando separando seus vários

componentes com o uso de es paços em branco. Este procedimento é conhecido como parsing (análise), e é composto dos seguintes passos:

1. O shell examina se há algum caracter especial a ser interpretado na linha de comando;

2. Supondo que os caracteres até o primeiro branco se referem a um comando, o shell procura um arquivo executável (programa) com o mesmo nome;

3. Se o shell localiza o programa, ele verifica se o usuário que fez o pedido tem permissão de acesso para usar o comando;

4. O shell continua a examinar o resto da linha de comando para ver a formatação;

5. Finalmente, ela informa ao kernel para executar o programa, passando todas as opções e argumentos válidos para o programa;

6. Enquanto o kernel copia o arquivo executável do disco para a memória e executa-o, o shell permanece inativo até que o programa tenha encerrado. O programa em execução na memória é chamado de processo;

7. Quando o processo termina de ser executado, o controle retorna o shell que exibe novamente o prompt para avisar que está pronta para o próximo comando;

3.4 Alteração da Password:Os procedimentos de alteração e definição de uma senha são

semelhantes, com a exceção de que na alteração o usuário recebe antes o prompt para informar a senha antiga. A nova senha deve ter no mínimo três caracteres diferentes da senha antiga. O comando passwd verifica a informação sobre a idade da senha nos arquivos /etc./default/passwd e/ou etc./shadow para determinar a validade da senha e se a senha pode ser alterada. Os superusuários não recebem o prompt para fornecer a senha antiga.Exemplo: Altere a sua senha utilizando o comando passwd

$passwdChanging password for guestEnter old passwd: Enter new passwd:Re-Type new passwd: Passwd changed$

3.5Estruturas de Arquivos e DiretóriosExistem 4 tipos básicos de arquivos em LINUX: Arquivo diretório; Arquivo convencional; Arquivo de dispositivo; Arquivo simbólico ou de ligação;

Um arquivo diretório nada mais é do que um tipo de arquivo contendo informações sobre arquivos que conceitualmente (e não

2

Page 26: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

fisicamente) estão contidos nele. Isso significa que o conteúdo de seus arquivos não está armazenado dentro do diretório. Assim sendo, não há limite para o tamanho de um diretório. Teoricamente você poderia colocar no seu diretório tantos arquivos quanto quisesse, até o ponto de estourar a capacidade do seu disco.

Os dados contidos no arquivo diretório são apenas os nomes de cada arquivo e seus ponteiros para uma tabela de informações de controle de todos os arquivos do sistema. Esta tabela contém informações administrativas do arquivo, como dados de segurança, tipo, tamanho, datas de acesso e dados que indicam onde ele está gravado no disco.

Quando você vai usar um arquivo, o sistema operacional consulta o diretório para verificar se existe no disco um com o nome que você especificou. Em caso afirmativo, o sistema obtém, da tabela as informações necessárias para poder manipulá-lo. Caso contrário, o sistema envia uma mensagem informando que não foi possível encontrar o arquivo.

Um diretório pode conter outros diretórios, aos quais chamamos subdiretórios. Um subdiretório pode conter outros arquivos e subdiretórios, que também podem conter arquivos e subdiretórios e assim por diante. Este é um relacionamento pai/filho entre um diretório e seus arquivos e diretórios subordinados. Cada diretório pai guarda informações sobre os arquivos e diretórios que estão a um nível abaixo dele - seus filhos.

Um arquivo convencional é um conjunto de caracteres presentes em algum meio de armazenamento, como por exemplo, um disco. Ele pode conter texto para uma carta, código de programa ou qualquer informação armazenada para um futuro uso.

Um arquivo de dispositivo , como um diretório, não contém dados. Ele é basicamente um ponteiro para um dispositivo periférico, como por exemplo, uma unidade de disco, um terminal ou uma impressora. Os arquivos especiais associados aos dispositivos periféricos estão localizados no diretório /dev.

Um arquivo simbólico é um arquivo convencional que aponta para outro arquivo em qualquer lugar do sistema de arquivos LINUX.

3.6DiretóriosTodos os arquivos fazem parte de algum diretório. Assim, eles

são mantidos organizadamente. Se todos os arquivos do sistema fossem armazenados em um mesmo lugar, o LINUX levaria muito tempo para verificar todos os arquivos até encontrar aquele que está procurando. Os diretórios são um meio de oferecer endereços dos arquivos, de maneira que o LINUX possa acessá-la rápida e facilmente.

Ao entrar pela primeira vez em sua conta, você já está em um subdiretório do sistema LINUX, chamado seu diretório de entrada (home directory). A menos que você crie alguns subdiretórios em sua conta, todos os seus arquivos serão armazenados em seu diretório de entrada. Teoricamente, você pode fazer isso, mas a manutenção de seus arquivos será mais eficiente se você criar seu próprio sistema se subdiretórios. Assim ficará mais fácil manter o controle de seus arquivos porque eles estarão agrupados em diretórios por assunto ou por tipo. O LINUX também realiza buscas

2

Page 27: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

de maneira mais eficiente em diretórios pequenos que nos grandes. Nos capítulos seguintes, você aprenderá os comandos necessários para criar diretórios, levar arquivos para outros diretórios e passar de um diretório para outro.

3.7Diretório de EntradaComo mencionamos anteriormente neste capítulo, seu diretório

de entrada é aquele em que você é colocado quando abre uma sessão em um sistema LINUX. Esse diretório tem o mesmo nome que seu nome de login. Você pode pensar em sua conta como uma versão em miniatura do sistema de arquivos do LINUX. No alto de seu sistema pessoal de arquivos, em vez do diretório raiz está seu diretório de entrada. Abaixo dele estarão os subdiretórios que você criar, que podem, por sua vez, se ramificar em subdiretórios e/ou arquivos.

Os diretórios de entrada dos usuários são iguais a qualquer outro diretório de um diagrama de sistema de arquivos. Entretanto, sendo o diretório principal de sua conta, seu diretório de entrada tem um status especial. Sempre que você entra no sistema, o LINUX define uma variável chamada HOME que identifica o seu diretório de entrada. O LINUX usa o valor da variável HOME como ponto de referência para determinar quais arquivos e diretórios do sistema de arquivos você pode acessar e também para orientar-se para onde levá-lo quando você deseja mudar de diretório corrente.

O caractere til ( ~ ) representa o diretório principal do usuário atualmente logado. Você pode usar o til com a maioria dos comandos do Shell. Por exemplo: cd ~ (muda para o diretório de entrada)

3.8Diretório CorrenteO diretório corrente, ou de trabalho (working directory), é o

diretório em que você está em um determinado momento. Por exemplo, quando você entra no sistema, o diretório corrente é sempre seu diretório de entrada. Se você passar para um de seus subdiretórios, este passará a ser o diretório corrente.

Durante toda a sessão, o LINUX mantém o controle de seu diretório corrente. Todos os comandos são executados sobre o diretório corrente, a menos que você especifique outro. Por exemplo, qualquer arquivo ou subdiretório que você criar será em princípio criado no diretório corrente. Sempre que você digitar ls, verá uma lista dos arquivos e diretórios do diretório corrente.

O caractere ponto (.) representa o diretório corrente onde o usuário está num determinado momento. Exemplo: Use o comando ls para mostrar o conteúdo do diretório corrente. $ls

Todos os diretórios do LINUX contém um arquivo chamado “.” (ponto), que é um arquivo especial que representa o diretório corrente (um sinônimo). Sempre que você quiser se referir ao diretório corrente, pode fazê-lo usando um ponto (.).

Outro arquivo especial, chamado “..” (dois pontos) representa o diretório pai do diretório corrente (o diretório ao qual o diretório corrente pertence). Quando precisar se referir ao diretório pai do

2

Page 28: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

diretório corrente, você pode usar dois pontos (..) em vez do nome do diretório.Exemplos:1− Use o comando ls para listar o conteúdo do diretório corrente: $ls

.2− Use o comando ls para listar o conteúdo do diretório pai do

diretório corrente. $ls ..

3.9Diretório RaizEste é o diretório principal do sistema. Dentro dele estão todos

os diretórios do sistema. O diretório Raiz é representado por uma "/", assim se você digitar o comando cd / você estará acessando este diretório.

Nele estão localizados outros diretórios como o /bin, /sbin, /usr, /usr/local, /mnt, /tmp, /var, /home, etc. Estes são chamados de subdiretórios pois estão dentro do diretório "/". A estrutura de diretórios e subdiretórios pode ser, por exemplo, identificada da seguinte maneira: / /bin /usr /mnt /tmp /var

/home A estrutura de diretórios também é chamada de Árvore de

Diretórios porque é parecida com uma árvore de cabeça para baixo. Cada diretório do sistema tem seus respectivos arquivos que são armazenados conforme regras definidas pela FHS (FileSystem Hierarchy Standard - Hierarquia Padrão do Sistema de Arquivos) versão 2.0, definindo que tipo de arquivo deve ser armazenado em cada diretório.

3.10 Diretório SuperiorO diretório superior (Upper Directory) é identificado por .. (2

pontos). Caso estiver no diretório /usr/local e quiser listar os arquivos do

diretório /usr você pode digitar, “ls ..” , este recurso também pode ser usado para copiar, mover arquivos/diretórios, etc.

3.11 Diretório AnteriorO diretório anterior é identificado por "-". É útil para retornar

ao último diretório usado. Se estive no diretório /usr/local e digitar cd /lib, você pode retornar facilmente para o diretório /usr/local usando cd -.

3.12 Caminho na estrutura de diretóriosSão os diretórios que teremos que percorrer até chegar ao

arquivo ou diretório que procuramos. Se desejar ver o arquivo /usr/doc/copyright/GPL você tem duas opções:

1. Mudar o diretório padrão para /usr/doc/copyright com o comando cd /usr/doc/copyright e usar o comando cat GPL

2. Usar o comando "cat" especificando o caminho completo na estrutura de diretórios e o nome de arquivo: cat /usr/doc/copyright/GPL. As duas soluções acima permitem que você veja o arquivo GPL.

A diferença entre as duas é a seguinte:

2

Page 29: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

• Na primeira, você muda o diretório padrão para /usr/doc/copyright (confira digitando pwd) e depois o comando cat GPL. Você pode ver os arquivos de /usr/doc/copyright com o comando "ls".

/usr/doc/copyright é o caminho de diretório que devemos percorrer para chegar até o arquivo GPL. • Na segunda, é digitado o caminho completo para o "cat" localizar

o arquivo GPL: cat /usr/doc/copyright/GPL. Neste caso, você continuará no diretório padrão (confira digitando pwd). Digitando ls, os arquivos do diretório atual serão listados.

O caminho de diretórios é necessário para dizer ao sistema operacional onde encontrar um arquivo na "árvore" de diretórios. 3.12.1 Exemplo de diretório

Um exemplo de diretório é o seu diretório de usuário, todos seus arquivos essenciais devem ser colocados neste diretório. Um diretório pode conter outro diretório, isto é útil quando temos muitos arquivos e queremos melhorar sua organização. Abaixo um exemplo de uma empresa que precisa controlar os arquivos de Pedidos que emite para as fábricas: /pub/vendas - diretório principal de vendas /pub/vendas/mes01-99 - diretório contendo vendas do mês 01/1999 /pub/vendas/mes02-99 - diretório contendo vendas do mês 02/1999 /pub/vendas/mes03-99 - diretório contendo vendas do mês 03/1999 • o diretório vendas é o diretório principal. • mes01-99 subdiretório que contém os arquivos de vendas do mês

01/1999. • mes02-99 subdiretório que contém os arquivos de vendas do mês

02/1999. • mes03-99 subdiretório que contém os arquivos de vendas do mês

03/1999. • mes01-99, mes02-99, mes03-99 são diretórios usados para

armazenar os arquivos de pedidos do mês e ano correspondente. Isto é essencial para organização, pois se todos os pedidos fossem colocados diretamente no diretório vendas, seria muito difícil encontrar o arquivo do cliente "João"

Você deve ter reparado que usei a palavra subdiretório para mes01-99, mes02-99 e mes03-99, porque que eles estão dentro do diretório vendas. Da mesma forma, vendas é um subdiretório de pub.

3.13 Estrutura básica de diretórios do Sistema LinuxO sistema GNU/Linux possui a seguinte estrutura básica de

diretórios: /bin Contém arquivos programas do sistema que são usados

com freqüência pelos usuários. /boot Contém arquivos necessários para a inicialização do

sistema. /cdrom Ponto de montagem da unidade de CD-ROM. /dev Contém arquivos usados para acessar dispositivos

(periféricos) existentes no computador. /etc Arquivos de configuração de seu computador local.

2

Page 30: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

/floppy Ponto de montagem de unidade de disquetes /home Diretórios contendo os arquivos dos usuários. /lib Bibliotecas compartilhadas pelos programas do sistema e

módulos do kernel. /lost+found Local para a gravação de arquivos/diretórios

recuperados pelo utilitário fsck.ext2. Cada partição possui seu próprio diretório lost+found.

/mnt Ponto de montagem temporário. (em alguns distribuições linux o cdrom, floppy, partição Windows estão dentro deste diretório)

/proc Sistema de arquivos do kernel. Este diretório não existe em seu disco rígido, ele é colocado lá pelo kernel e usado por diversos programas que fazem sua leitura, verificam configurações do sistema ou modificar o funcionamento de dispositivos do sistema através da alteração em seus arquivos.

/root Diretório do usuário root. /sbin Diretório de programas usados pelo superusuário (root)

para administração e controle do funcionamento do sistema.

/tmp Diretório para armazenamento de arquivos temporários criados por programas.

/usr Contém maior parte de seus programas. Normalmente acessível somente como leitura.

/var Contém maior parte dos arquivos que são gravados com freqüência pelos programas do sistema, e-mails, spool de impressora, cache, etc.

3.14 Nomes e CaminhosQuando você digita um comando que opera sobre um arquivo

ou diretório, precisa especificar o nome do arquivo ou do diretório desejado. O caminho, de um arquivo ou diretório é a lista de todos os diretórios que formam a ligação entre ele e o diretório raiz.

Você só pode identificar individualmente cada arquivo e diretório por seu nome e caminho, porque seu nome pode ser idêntico ao de outro arquivo em outro local do sistema. Por exemplo, suponha que haja duas contas de usuário, chamadas luciene e alfredo, cada uma contendo um subdiretório chamado vendas. O LINUX pode diferenciar esses dois subdiretórios por seus caminhos. Um deles seria /.../luciene/vendas e o outro seria /.../alfredo/vendas, onde as reticências representam os diretórios intermediários. Embora você possa se referir a um arquivo ou diretório dentro de seu diretório de entrada usando apenas seu nome, o LINUX sempre interpretará o nome do arquivo ou diretório como seu nome e caminho inteiro, porque ele mantém o controle de seu diretório corrente e pode preencher a parte do nome de caminho que falta.

Além do caminho absoluto, você também pode usar o caminho relativo, de um arquivo ou diretório. O caminho relativo não começa com o diretório raiz, mas com o diretório mais próximo do diretório cujo caminho está sendo definido. Para especificar um caminho relativo para seu diretório de entrada, você pode começar o caminho com $HOME ou com um ~ (til), que é um sinônimo para

3

Page 31: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

$HOME. Por exemplo, se seu diretório de entrada é marco, a variável HOME terá o valor /.../marco, onde as reticências representam os diretórios entre o diretório raiz (/) e o diretório marco. Sempre que você digitar $HOME como parte de um nome de caminho, o LINUX o interpretará como o nome de caminho completo de seu diretório de entrada. A variável HOME funciona em todos os shells. Em C Shell, você pode também usar o caractere ~ (til) no nome de caminho para representar o diretório de entrada. C Shell define o ~ exatamente como o Bourne Shell define a variável HOME.

Para especificar um caminho a partir do diretório corrente, você pode iniciar o caminho com um . (que representa o diretório corrente), ou com o nome do primeiro subdiretório naquele caminho. O ponto é opcional neste caso porque se o nome de caminho não começar com uma /, o LINUX considera que você quer que ele comece com o diretório corrente.

Se você já tiver mudado de diretório algumas vezes, talvez não esteja seguro de qual é o diretório corrente no momento. Para descobrir, use o comando ls e poderá se lembrar do nome do diretório pela lista dos arquivos que ele contém. Entretanto, uma maneira mais simples de saber qual o diretório corrente é digitar pwd, que será apresentado mais adiante. O comando pwd imprime o caminho completo do diretório corrente.

Exemplo: Use o comando pwd para mostrar o caminho do diretório corrente

$pwd/home/guest$

3.15 Nomes de arquivos e diretóriosAs convenções usadas para dar nomes a arquivos e a diretórios

estão descritas abaixo. É aconselhável dar nomes descritivos e sugestivos aos arquivos,

e diretórios; Os nomes dos arquivos devem começar com uma letra. Evite usar

+,- ou . como primeiro caractere; Evite usar caracteres especiais, pois estes têm um significado

diferente para a Shell. Os caracteres especiais do Shell são os seguintes: ? @ # $ ^ & * ( ) ‘ [ ] \ | ; ‘ “ <> ;

Não use espaços nos nomes dos arquivos. O Shell interpreta os espaços como delimitadores nas linhas de comandos. Ao invés de espaços use um ponto (.) ou um

O LINUX faz diferença entre letras maiúsculas e minúsculas. Por exemplo, report, Report, REPORT e rePort são todos nomes distintos de arquivos;

Os nomes de arquivos devem ser exclusivos dentro de cada diretório. Entretanto, o mesmo nome de arquivo pode ser usado em diretórios diferentes;

Os nomes dos arquivos podem ter no máximo 14 caracteres de comprimento (em alguns sistemas este tamanho pode chegar a 256 caracteres);

Podem ser usadas extensões nos nomes de arquivos a fim dar um

3

Page 32: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

melhor significado aos seus nomes. A extensão descritiva (sufixo) é geralmente precedida por um ponto. Por exemplo, a extensão .c é usada para identificar os programas em linguagem C e .sh para se referir aos programas em Shell;

Identificado os arquivos pela cor:

Em verde : arquivos executáveis Em azul : diretóriosEm branco: arquivos

Em azul claro: atalhosEm amarelo: dispositivos (dev device)Em vermelho: bibliotecas e arquivos empacotados ou compactados

3.16 Caracteres Especiais do Shell – ou CoringasAlguns caracteres têm significado especial para o Shell. Esses

caracteres são interpretados quando o Shell encontra-os durante o processamento da linha de comando.

3.16.1 Substituição do Nome do Arquivo

Quatro caracteres especiais permitem a referência a grupos de arquivos ou diretórios em uma linha de comando. Este é um recurso que permite que você faça a filtragem do que será listado, copiado, apagado, etc. Estes caracteres são chamados Meta caracteres ou Coringas.

Asterisco O * substitui qualquer conjunto de caracteres, ou seja, faz referência a um nome completo, ou ao restante de um arquivo ou diretório.

Ponto de interrogação O caractere ? substitui qualquer letra numa determinada posição.

Colchetes O símbolo [ ] contém uma lista de caracteres. Um dos caracteres dentro do colchetes será substituído. Um hífen separando os caracteres que estão entre colchetes indica um intervalo. Um ! dentro dos colchetes indica o sentido da procura invertido. [a-z] [0-9] - Faz referência a caracteres de a até z seguido de um

caractere de 0 até 9. [a,z] [1,0] - Faz a referência aos caracteres a e z seguido de um

caractere 1 ou 0 naquela posição. [a-z,1,0] - Faz referência aos caracteres de a até z ou 1 ou 0

naquela posição. A procura de caracteres é "Case Sensitive" assim se você

deseja que sejam localizados todos os caracteres alfabéticos você deve usar [a-z,A-Z].

Caso a expressão seja seguida de um ^, faz referência a qualquer caractere exceto o da expressão. Por exemplo, [^abc] faz referência a qualquer caractere exceto a, b e c.

Chaves O símbolo { } – Expande e gera strings para pesquisa de diversos padrões de um arquivo/diretório.

X{ab,01} - Faz referência à seqüência de caracteres Xab ou X01

3

Page 33: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

X{a-z,10} Faz referencia a seqüência de caracteres de Xa até Xz e X10. O que diferencia este método de expansão dos demais é que a

existência do arquivo/diretório é opcional para geração do resultado. Isto é útil para a criação de diretórios. Lembrando que os 4 tipos de curingas ("*", "?", "[]", "{}") podem ser usados juntos.

Esses caracteres especiais poupam tempo de digitação. O mais importante é que eles podem ser usados para fazer referência a arquivos cujo nome não se conhece exatamente.

Para entender melhor vamos a prática: Vamos dizer que tenha 5 arquivo no diretório /usr/teste:

teste1.txt, teste2.txt, teste3.txt, teste4.new, teste5.new. Caso deseje listar todos os arquivos do diretório /usr/teste

você pode usar o coringa "*" para especificar todos os arquivos do diretório:

cd /usr/teste e ls * ou ls /usr/teste/*. Não tem muito sentido usar o comando ls com "*" porque todos

os arquivos serão listados se o ls for usado sem nenhum Coringa. Agora para listar todos os arquivos teste1.txt, teste2.txt,

teste3.txt com exceção de teste4.new, teste5.new, podemos usar inicialmente 3 métodos: 1. Usando o comando ls *.txt que pega todos os arquivos que

começam com qualquer nome e terminam com .txt. 2. Usando o comando ls teste?.txt, que pega todos os arquivos que

começam com o nome teste, tenham qualquer caractere no lugar do coringa ? e terminem com .txt. Com o exemplo acima teste*.txt também faria a mesma coisa, mas se também tivéssemos um arquivo chamado teste10.txt este também seria listado.

3. Usando o comando ls teste[1-3].txt, que pega todos os arquivos que começam com o nome teste, tenham qualquer caractere entre o número 1-3 no lugar da 6a letra e terminem com .txt. Neste caso se obtém uma filtragem mais exata, pois o coringa ? especifica qualquer caractere naquela posição e [] especifica números, letras ou intervalo que será usado.

Agora para listar somente teste4.new e teste5.new podemos usar os seguintes métodos: • ls *.new que lista todos os arquivos que terminam

com .new • ls teste?.new que lista todos os arquivos que começam

com teste, contenham qualquer caractere na posição do coringa ? e terminem com .new.

• ls teste[4,5].* que lista todos os arquivos que começam com teste

contenham números de 4 e 5 naquela posição e terminem com qualquer extensão.

Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de cada um. O que pretendi fazer aqui foi mostrar como especificar mais de um arquivo de uma só vez. O uso de curingas será útil ao copiar arquivos, apagar, mover, renomear, e nas mais diversas partes do sistema. Alias esta é uma característica

3

Page 34: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

do GNU/Linux: permitir que a mesma coisa possa ser feita com liberdade de várias maneiras diferentes. Outros Exemplos: $ ls *.new Lista todos os arquivos com extensão .new :$ ls *[1 - 5] Lista todos os arquivos cujo nome termine com um

numero entre 1 e 5 :$ ls f?? Lista todos os arquivos cujo nome tem três caracteres e

começam com f :

3.16.2 Marcação do Caractere Especial

Para usar literalmente um caractere especial sem que o Shell interprete seu significado ele deve ser marcado. O Shell trata um caractere especial marcado como um caractere normal.

Aspas Quando se coloca um caractere especial entre aspas “ “ , o Shell ignora todos os caracteres especiais exceto o cifrão ($), o acento grave (‘) e a barra invertida ( \);

Apóstrofe O apóstrofe é mais restritivo. Todos os caracteres especiais entre apóstrofes são ignorados;

Barra invertida Geralmente, a barra invertida faz o mesmo que colocar um caractere entre apóstrofes. Quando uma barra invertida é usada, ela deve preceder cada caractere a ser marcado;

Por exemplo, se você quiser buscar por um asterisco (*) em seu arquivo /etc/shadow, pode tentar o seguinte comando.

# grep * /etc/shadowInfelizmente, esse comando busca pelo nome de cada arquivo

no diretório atual, no arquivo /etc/shadow.O problema é que o asterisco é um curinga, que busca por

quase tudo, dependendo do contexto. É onde a barra invertida pode ajudar. Quando você coloca a barra invertida na frente de um caractere especial, ela “escapa” o significado daquele caractere. Em outras palavras, de fato, o seguinte comando busca por asteriscos no arquivo /etc/shadow:

# grep \* /etc/shadowA barra invertida é jeitosa para outras situações, tal como

listar diretórios de duas palavras, como My Documents da Microsoft. Por exemplo, se você tiver montado um drive Microsoft Windows a partir de um computador remoto no diretório /mnt/win1., pode tentar listar os arquivos no diretório com o seguinte comando.

# ls /mnt/win1/My\ DocumentsAcrescentando a barra invertida o Shell ignora o espaço em

branco.

3.17 ComandosComandos são ordens que passamos ao sistema operacional

para executar uma determinada tarefa. Cada comando tem uma função específica, devemos saber a

função de cada comando e escolher o mais adequado para fazer o que desejamos, por exemplo: • ls - Mostra arquivos de diretórios • cd - Para mudar de diretório

Este apostila tem uma lista de vários comandos organizados por categoria com a explicação sobre o seu funcionamento e as

3

Page 35: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

opções aceitas (incluindo alguns exemplos). É sempre usado um espaço depois do comando para separá-lo

de uma opção ou parâmetro que será passado para o processamento. Um comando pode receber opções e parâmetros:

Opções: As opções são usadas para controlar como o comando será executado, por exemplo, para fazer uma listagem mostrando o dono, grupo, tamanho dos arquivos você deve digitar ls -l. Opções podem ser passadas ao comando através de um "-" ou "--":

- Opção identificada por uma letra. Podem ser usadas mais de uma opção com um único hífen. O comando ls -l -a é a mesma coisa de ls -la

-- Opção identificada por um nome. O comando ls --all é equivalente a ls -a.

Pode ser usado tanto "-" como "--", mas há casos em que somente "-" ou "--" esta disponível.

Parâmetros: Um parâmetro identifica o caminho, origem, destino, entrada padrão ou saída padrão que será passada ao comando. Se você digitar: ls /usr/doc/copyright, /usr/doc/copyright será o parâmetro passado ao comando ls, neste caso queremos que ele liste os arquivos do diretório /usr/doc/copyright . É normal errar o nome de comandos, mas não se preocupe, quando isto acontecer o sistema mostrará a mensagem command not found (comando não encontrado) e voltará ao aviso de comando. As mensagens de erro não fazem nenhum mal ao seu sistema, somente dizem que algo deu errado para que você possa corrigir e entender o que aconteceu. No GNU/Linux, você tem a possibilidade de criar comandos personalizados usando outros comandos mais simples (isto será visto mais adiante). Os comandos se encaixam em duas categorias: Comandos Internos e Comandos Externos.

Por exemplo: "ls -la /usr/doc", ls é o comando, -la é a opção passada ao comando, e /usr/doc é o diretório passado como parâmetro ao comando ls.

Os comandos podem ser executados em seqüência (um após o término do outro) se os separarmos com “ ; “ (ponto e virgula) . Por exemplo: ls ; pwd; date; echo teste.

3.17.1 Comandos Internos

São comandos que estão localizados dentro do interpretador de comandos (normalmente o Bash) e não no disco. Eles são carregados na memória RAM do computador junto com o interpretador de comandos.

Quando executa um comando, o interpretador de comandos verifica primeiro se ele é um Comando Interno caso não seja é verificado se é um Comando Externo.

Exemplos de comandos internos são: cd, exit, echo, bg, fg, source, help

3.17.2 Comandos Externos

São comandos que estão localizados no disco. Os comandos são procurados no disco usando o path e executados assim que encontrados.

3

Page 36: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

3.17.3 Aviso de comando (Prompt)

Aviso de comando (ou Prompt), é a linha mostrada na tela para digitação de comandos que serão passados ao interpretador de comandos para sua execução.

A posição onde o comando será digitado é marcada um "traço" piscante na tela chamado de cursor. Tanto em shells texto como em gráficos é necessário o uso do cursor para sabermos onde iniciar a digitação de textos e nos orientarmos quanto à posição na tela.

O aviso de comando do usuário root é identificado por uma "#" (tralha, cerquilha), e o aviso de comando de usuários é identificado pelo símbolo "$". Isto é padrão em sistemas UNIX.

Você pode retornar comandos já digitados pressionando as teclas Seta para cima / Seta para baixo.

A tela pode ser rolada para baixo ou para cima segurando a tecla SHIFT e pressionando PGUP ou PGDOWN. Isto é útil para ver textos que rolaram rapidamente para cima.

Abaixo algumas dicas sobre a edição da linha de comandos (não é necessário se preocupar em decorá-los): • Pressione a tecla Back Space ("←") para apagar um caractere à

esquerda do cursor. • Pressione a tecla Del para apagar o caractere acima do cursor. • Pressione CTRL+A para mover o cursor para o inicio da linha de

comandos. • Pressione CTRL+E para mover o cursor para o fim da linha de

comandos. • Pressione CTRL+U para apagar o que estiver à esquerda do

cursor. O conteúdo apagado é copiado para uso com CTRL+y. • Pressione CTRL+K para apagar o que estiver à direita do cursor.

O conteúdo apagado é copiado para uso com CTRL+y. • Pressione CTRL+L para limpar a tela e manter o texto que estiver

sendo digitado na linha de comando (parecido com o comando clear).

• Pressione CTRL+Y para colocar o texto que foi apagado na posição atual do cursor.

3.17.4 Interpretador de comandos

Também conhecido como "Shell". É o programa responsável em interpretar as instruções enviadas pelo usuário e seus programas ao sistema operacional (o kernel). Ele que executa comandos lidos do dispositivo de entrada padrão (teclado) ou de um arquivo executável. É a principal ligação entre o usuário, os programas e o kernel. O GNU/Linux possui diversos tipos de interpretadores de comandos, entre eles posso destacar o bash, ash, csh, tcsh, sh, etc. Entre eles o mais usado é o bash. O interpretador de comandos do DOS, por exemplo, é o command.com.

Os comandos podem ser enviados de duas maneiras para o interpretador: interativa e não-interativa:

Interativa Os comandos são digitados no aviso de comando e passados ao interpretador de comandos um a um. Neste modo, o computador depende do usuário para executar uma tarefa, ou próximo comando.

3

Page 37: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Não-interativa São usados arquivos de comandos criados pelo usuário (scripts) para o computador executar os comandos na ordem encontrada no arquivo. Neste modo, o computador executa os comandos do arquivo um por um e dependendo do término do comando, o script pode checar qual será o próximo comando que será executado e dar continuidade ao processamento.

Este sistema é útil quando temos que digitar por várias vezes seguidas um mesmo comando ou para compilar algum programa complexo.

O Shell Bash possui ainda outra característica interessante: A complementação dos nomes. Isto é feito pressionando-se a tecla TAB. Por exemplo, se digitar "ls tes" e pressionar <tab>, o Bash localizará todos os arquivos que iniciam com "tes" e completará o restante do nome. Caso a complementação de nomes encontre mais do que uma expressão que satisfaça a pesquisa, ou nenhuma, é emitido um beep. Se você apertar novamente a tecla TAB imediatamente depois do beep, o interpretador de comandos irá listar as diversas possibilidades que satisfazem a pesquisa, para que você possa escolher a que lhe interessa. A complementação de nomes funciona sem problemas para comandos internos. Exemplo: ech (pressione TAB). ls /vm(pressione TAB)

3.17.5 Terminal Virtual (console)

Terminal (ou console) é o teclado e tela conectados em seu computador. O GNU/Linux faz uso de sua característica multi-usuária usando os "terminais virtuais". Um terminal virtual é uma segunda seção de trabalho completamente independente de outras, que pode ser acessada no computador local ou remotamente via telnet, rsh, rlogin, etc.

No GNU/Linux, em modo texto, você pode acessar outros terminais virtuais segurando a tecla ALT e pressionando F1 a F6. Cada tecla de função corresponde a um número de terminal do 1 ao 6 (o sétimo é usado por padrão pelo ambiente gráfico X). O GNU/Linux possui mais de 63 terminais virtuais, mas apenas 6 estão disponíveis inicialmente por motivos de economia de memória RAM (cada terminal virtual ocupa aproximadamente 350 Kb de memória RAM, desative a quantidade que não estiver usando para liberar memória RAM para uso de outros programas!) .

Se estiver usando o modo gráfico, você deve segurar CTRL+ ALT enquanto pressiona uma tela de <F1> a <F6>.

Um exemplo prático: Se você estiver usando o sistema no Terminal 1 com o nome "joao" e desejar entrar como "root" para instalar algum programa, segure ALT enquanto pressiona <F2> para abrir o segundo terminal virtual e faça o login como "root". Será aberta uma nova seção para o usuário "root" e você poderá retornar a hora que quiser para o primeiro terminal pressionando ALT+<F1>.

3

Page 38: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

4 Fundamentos do LinuxAbaixo temos uma relação de comandos básicos para do Linux,

seguidos de uma descrição e exemplos. Porem, assim como conhecer os comandos do Linux, é importante também saber como acessar seus recursos de ajuda, pois isso te desobriga de decorar as seqüências das funcionalidades extras. Sabendo usar todos os recursos, você certamente terá boa produtividade em suas tarefas no Linux.

A melhor forma de conhecer os parâmetros adicionais de cada 3

Page 39: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

comando é consultando as informações de ajuda. Para isso, pode-se usar o recurso do comando man (manual), com a seguinte sintaxe: man [comando] . Exemplo: $ man pwd ; $ man cp

Também é possível utilizar o comando help. Para usar o help e obter detalhes do comando a sintaxe é: [comando] --help. Exemplo: $ pwd --help; $ cp –help

Ou ainda o comando info. Exemplo: $ info pwd ; $ info cp

4.1Comandos para manipulação de diretórios

4.1.1 ls - (ou dir) Lista diretórios e seus conteúdos.

O comando ls (list) é versátil. Ele não apenas permite que você relacione os arquivos e diretórios em seu diretório atual, mas com as opções adequadas, também é possível encontrar as permissões e tamanho de um arquivo. O comando permite que você verifique a propriedade, diferencie entre tipos de arquivos e classifique o resultado de várias maneiras.

Podemos utilizar o ls acompanhado ou não das opções de listagem (flags). O retorno dependerá das opções fornecidas, porém será sempre uma listagem dos arquivos, diretórios, links simbólicos e hard links de um diretório qualquer.

Normalmente o conteúdo de um diretório é listado em ordem alfabética, um item por linha. As diversas opções do comando ls permitem adaptar o formato da listagem.

Se nada for especificado em nomes todos os itens do diretório corrente são listados. Entretanto em nomes é possível determinar máscaras (filtros) para selecionar padrões de nomes de itens a serem listados.

ls [opções] [caminho/arquivo] [caminho1/arquivo1] ...

onde: caminho/arquivo Diretório/arquivo que será listado. caminho1/arquivo1 Outro Diretório/arquivo que será listado. Podem

ser feitas várias listagens de uma só vez. opções -a (all) Lista todos os arquivos (inclusive os ocultos – que

começam com ponto) de um diretório. -d (directory) Lista os nomes dos diretórios ao invés do conteúdo. -f Não classifica a listagem. -F Insere um caractere após arquivos executáveis ('*'), diretórios

('/'), soquete ('='), link simbólico ('@') e pipe ('|'). Seu uso é útil para identificar de forma fácil tipos de arquivos nas listagens de diretórios.

-G Oculta a coluna de grupo do arquivo. -h Mostra o tamanho dos arquivos em Kbytes, Mbytes, Gbytes. -l Usa o formato longo para listagem de arquivos. Lista as

permissões, data de modificação, donos, grupos, etc. -r Lista em ordem alfabética reversa, ou em ordem de hora/data-R Lista diretórios e sub-diretórios recursivamente. -s Mostra o tamanho em blocos de cada item;-t Ordena os itens por hora/data de modificação;

3

Page 40: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

-u Usada em conjunto com - t para ordenar pela hora/data do último acesso, ao invés de pela última modificação;

-c Usada em conjunto com - t para ordenar pela hora/data da última modificação do item na tabela de arquivos do Sistema de Arquivos;

-x Lista em várias colunas, ordenando os itens em linhas ao invés de em colunas;

--full-time Lista data e hora completa. Classificação da listagem. A listagem pode ser classificada usando-se as seguintes opções: -f Não classifica, e usa -au para listar os arquivos. -r Inverte a ordem de classificação. -c Classifica pela data de alteração. -X Classifica pela extensão. -U Não classifica, lista os arquivos na ordem do diretório.

Uma listagem feita com o comando ls -la normalmente é mostrada da seguinte maneira:

-rwxr-xr-- 1 gleydson user 8192 nov 4 16:00 teste

Abaixo as explicações de cada parte: -rwxr-xr-- São as permissões de acesso ao arquivo teste. A

primeira letra (da esquerda) identifica o tipo do arquivo, se tiver um d é um diretório, se tiver um "-" é um arquivo normal.

As permissões de acesso são explicadas em detalhes no capítulo: permissões de acesso a arquivos e diretórios.1 Se for um diretório, mostra a quantidade de subdiretórios

existentes dentro dele. Caso for um arquivo, será 1. gleydson Nome do dono do arquivo teste. user Nome do grupo que o arquivo teste pertence. 8192 Tamanho do arquivo (em bytes). nov Mês da criação/ última modificação do arquivo. 4 Dia que o arquivo foi criado. 16:00 Hora em que o arquivo foi criado/modificado. Se o arquivo

foi criado há mais de um ano, em seu lugar é mostrado o ano da criação do arquivo.

teste Nome do arquivo.

Caso o caminho não seja informado, será considerado o diretório atual. Seguido do caractere coringa “ * “ serve para indicar que um destino é igual a “todos” os arquivos e diretórios. Alem do asterisco podem ser usados outros caracteres coringas como ?, \, [ ]. Exemplos do uso do comando ls: $ ls Lista o conteúdo do diretório corrente, em colunas, sem

mostrar os atributos dos arquivos listados.$ ls /bin /sbin Lista os arquivos do diretório /bin e /sbin $ ls -a Lista os diretórios, arquivos ocultos e executáveis). $ ls -l Lista o conteúdo do diretório corrente detalhadamente,

cada arquivo em uma linha, mostrando os atributos dos arquivos listados).

4

Page 41: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

$ ls -la /bin Listagem completa dos arquivos do diretório /bin inclusive os ocultos.

$ ls –l | more Idem anterior, paginando$ ls -R Lista os arquivos do diretório e subdiretórios, inclusive ocultos.$ ls .. Lista o conteúdo do diretório acima “ .. “.$ ls –l /usr/local | more Lista o diretório especificado, como ls –l,

paginando.$ ls –lh Lista o diretório exibindo o tamanho em K, M ou G.$ ls *a.* Mostrará somente os arquivos que terminam com a letra

“a” antes do “.”.$ ls a???.* Mostrará todos os arquivos que comecem com a letra

“a” e que após a letra “a” existam exatamente 3 caracteres.)

$ ls ????a.?? Mostrará arquivos que tenham exatamente 4 caracteres antes da letra “a”. Os arquivos deverão terminar com a letra “a” e Ter extensão com exatamente 2 caracteres.

$ ls * Mostrará todos os arquivos.$ ls *.a* Mostrará todos os arquivos cuja extensão comece com “a”.

4.1.2 cd – Mudando o diretório de trabalho

O comando cd (change directory) é utilizado para mudar o diretório de trabalho corrente. Não há opções para este comando. Se você não especificar um diretório o comando cd fará com que o seu diretório de entrada (home directory) se torne o seu diretório corrente. Se for um subdiretório do seu diretório corrente, basta informar o nome dele. Caso contrário você pode informar o nome relativo ou absoluto do diretório para o qual você quer mudar.

O Linux, assim como qualquer Unix, utiliza-se de barras comuns e não invertidas como em outros sistemas, para informar sobre a árvore de diretórios.

Você precisa ter a permissão de execução para entrar no diretório.

cd [/diretório/caminho de destino]

onde: diretório - diretório que deseja entrar. Exemplos: Usando cd sem parâmetros ou cd ~, você retornará ao seu diretório de usuário (diretório home). $ cd ~ retornará ao diretório de entrada (diretório home do usuário)$ cd / retornará ao diretório raiz. $ cd - retornará ao diretório anteriormente acessado. $ cd .. sobe um diretório. $ cd ../.. sobe dois diretórios$ cd ../[diretório] sobe um diretório e entra imediatamente no

próximo (por exemplo, quando você está em /usr/sbin, você digita cd ../bin, o comando cd retorna um diretório (/usr) e entra imediatamente no diretório bin (/usr/bin).

4

Page 42: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

4.1.3 pwd – Identificação do diretório corrente

O comando pwd (present working directory) retorna o nome do diretório corrente ou de diretório de trabalho (working directory) identificando o caminho completo do diretório a partir da raiz. Não possui nenhuma opção ou argumento. Você pode utilizá-lo para se situar no sistema de arquivos. Por exemplo, é sempre útil verificar o diretório corrente antes de criar ou remover arquivos e diretórios. Do mesmo modo, o pwd é útil para confirmar o diretório corrente após várias trocas de diretórios.

4.1.4 mkdir – Criando diretórios

O comando mkdir (make directory) é utilizado para criar diretórios no sistema. Um diretório é usado para armazenar arquivos de um determinado tipo. O diretório pode ser entendido como uma pasta onde você guarda seus papeis (arquivos). Nos diretórios podemos agrupar informações afins, isto é, arquivos que possuem alguma inter-relação. O nome do diretório deve ser significativo e permitir um acesso e uma localização rápida dos arquivos armazenados no seu sistema de arquivos.

Os nomes dos diretórios a serem criados são passados como argumentos para o comando. Estes nomes podem ter até 255 caracteres em algumas versões do Sistema Operacional UNIX, e devem ser únicos, isto é, não pode haver dois diretórios com mesmo nome dentro de um mesmo subdiretório, nem mesmo um arquivo e um diretório iguais em um mesmo subdiretório.

Os novos diretórios normalmente são criados com modo de permissão 777

(permissão para leitura, escrita e execução).

mkdir [opções] [caminho/diretório] [caminho1/diretório1]

onde: caminho Caminho onde o diretório será criado. diretório Nome do diretório que será criado. opções: -m (modo) Especifica o modo de permissão de acesso para o

diretório que está sendo criado;-p Cria os diretórios pai citados no nome do diretório que está

sendo criado;

Para criar um novo diretório, você deve ter permissão de gravação. Por exemplo, para criar um diretório em /tmp com o nome de teste que será usado para gravar arquivos de teste, você deve usar o comando "mkdir /tmp/teste".

Podem ser criados mais de um diretório com um único comando (mkdir /tmp/teste /tmp/teste1 /tmp/teste2).

Exemplos:1. Crie um diretório chamado teste com o seguinte modo de

permissão : 711$mkdir - m 711 teste$ls - l

4

Page 43: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

total 1drwx--x-- x 2 guest users 1024 May 15 21:27 teste/

2. Crie um diretório chamado curso com um diretório filho chamado aula1$mkdir - p curso/aula1$ls - ltotal 2drwx--x-- x 2 guest users 1024 May 15 21:27 teste/drwxr- xr- x 3 guest users 1024 May 15 21:33 curso/$ls - l curso total 1drwxr- xr- x 2 guest users 1024 May 15 21:33 aula1/

Notas: As opções -p e -m não estão disponíveis em todos os sistemas; Veja comando umask para alterar permissões padrão na criação

de diretórios4.1.5 rmdir – Removendo diretórios

O comando rmdir (remove directory) é utilizado para remover um ou mais diretórios vazios. O diretório que será removido deve estar vazio e não pode ser o diretório corrente. Apenas o usuário que criou o diretório ou um superusuário pode remover um diretório, a não ser que o diretório tenha acesso de gravação para outros usuários. É possível apagar vários níveis de diretórios, se o diretório que você remover apagar os outros. Os nomes dos diretórios podem ser especificados com caminhos absolutos ou relativos.

rmdir [caminho/diretório] [caminho1/diretório1]

onde: caminho Caminho do diretório que será removido. diretório Nome do diretório que será removido. Opções:-p Remove diretórios citados e respectivos diretórios pai que

ficarem vazios com a remoção;

Exemplo: Remova o diretório aula1, se o diretório pai ficar vazio remova - o :

$rmdir -p curso/aula1

É necessário que esteja um nível acima do diretório(s) que será(ão) removido(s). Para remover diretórios que contenham arquivos, use o comando rm com a opção –r.

4.2- Comandos para manipulação, gerenciamento e configuração de arquivos e/ou diretórios

4.2.1 touch – Criando arquivos vazios

O comando touch é utilizado para criar um arquivo vazio. Há ocasiões em que você simplesmente precisa configurar um arquivo

4

Page 44: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

vazio em Linux. Por exemplo, antes de poder ativar a cota para um usuário ou um grupo, é preciso criar um arquivo vazio.

O comando touch também pode ser usado para mudar ou atualizar a data e a hora que um arquivo ou diretório foi criado.

touch [opções] [arquivos]

Onde: arquivos Arquivos que serão criados ou terão sua data/hora modificados. opções -t MMDDhhmm[ANO.segundos] Usa Minutos (MM), Dias (DD),

Horas (hh), minutos (mm) e opcionalmente o ANO e segundos para modificação do(s) arquivos ao invés da data e hora atual.

-a, --time=atime Faz o touch mudar somente a data e hora do acesso ao arquivo.

Exemplos: $ touch teste Cria o arquivo teste caso ele não existir. $ touch -t 10011230 teste Altera da data e hora do arquivo para

01/10 e 12:30. $ touch -t 120112301999.30 teste Altera da data, hora ano, e

segundos do arquivo para 01/12/1999 e 12:30:30.

$ touch -t 12011200 * Altera a data e hora do arquivo para 01/12 e 12:00.

4.2.2 cat – Visualizando o conteúdo de um arquivo

O comando concatenador (cat) é utilizado para exibir o conteúdo de um arquivo binário ou texto na saída padrão, que inicialmente será seu monitor. É possível utilizar o cat para criar, exibir e juntar arquivos. Quando se utiliza o cat para concatenar arquivos, os arquivos da origem permanecem intactos.

cat [opções] [diretório/arquivo] [diretório1/arquivo1]

Ondediretório/arquivo Localização do arquivo que deseja visualizar o conteúdo. opções -n Mostra o número das linhas enquanto o conteúdo do arquivo é mostrado. -s Não mostra mais que uma linha em branco entre um parágrafo e outro. - Lê a entrada padrão.

O comando cat trabalha com arquivos texto. Use o comando zcat para ver diretamente arquivos compactados com gzip. Exemplo: $ cat –n /etc/mtools.conf |less

$ cat -n .bash_profiles

4.2.3 tac - Visualizando o conteúdo de um arquivo reversamente

4

Page 45: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Mostra o conteúdo de um arquivo binário ou texto (como o cat) só que em ordem inversa.

tac [opções] [diretório/arquivo] [diretório1/arquivo1]

onde:diretório/arquivo - Localização do arquivo que deseja visualizar o conteúdo opções -s [string] Usa o [string] como separador de registros. - Lê a entrada padrão. Exemplo: $ tac /etc/mtools.conf |less

4.2.4 rm - Removendo arquivos e/ou diretórios

o comando rm remove arquivos. Também pode ser usado para apagar diretórios e subdiretórios vazios ou que contenham arquivos.

rm[opções][caminho][arquivo/diretório] [caminho1][arquivo1/diretório1]

onde: caminho Localização do arquivo que deseja apagar. Se omitido,

assume que o arquivo esteja no diretório atual. arquivo/diretório Arquivo que será apagado. opções -i Pergunta antes de remover, esta é ativada por padrão. -v Mostra os arquivos na medida em que são removidos. -r Usado para remover arquivos em subdiretórios. Esta opção

também pode ser usada para remover subdiretórios. -R Remove recursivamente o conteúdo do diretório não

diferenciando arquivos ou subdiretórios e seus respectivos conteúdos.

-f Remove os arquivos sem perguntar. -- arquivo Remove arquivos/diretórios que contém caracteres

especiais. O separador "--" funciona com todos os comandos do Shell e permite que os caracteres especiais como "*", "?", "-", etc. sejam interpretados como caracteres comuns.

Use com atenção o comando rm, uma vez que os arquivos e diretórios forem apagados, eles não poderão ser mais recuperados. Exemplos: $ rm teste.txt Apaga o arquivo teste.txt no diretório atual. $ rm *.txt Apaga todos os arquivos do diretório atual que terminam com .txt. $ rm *.txt teste.novo Apaga todos os arquivos do diretório atual

que terminam com .txt e também o arquivo teste.novo.

$ rm -rf /tmp/teste/* Apaga todos os arquivos e sub-diretórios do diretório /tmp/teste mas mantém o sub-diretório /tmp/teste.

$ rm -rf /tmp/teste Apaga todos os arquivos e sub-diretórios do diretório /tmp/teste, inclusive /tmp/teste.

$ rm -f -- --arquivo-- Remove o arquivo de nome --arquivo--.

4

Page 46: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

$ rm * -f Remove todos os arquivos (*), sem solicitar confirmação (-f).$ rm ../* -f Remove todos os arquivos do diretório acima ( ../* ),

sem solicitar confirmação ( -f ).

4.2.5 cp – Copiando arquivos

O comando cp (copy) copia, isto é, cria uma cópia de um arquivo com outro nome ou em outro diretório sem afetar o arquivo original. Você pode usar esse comando para criar cópias de segurança de arquivos importantes ou para copiar arquivos que queira modificar. Se há algum arquivo que você quer ter em mais de um diretório, pode usar o comando cp para copiá-lo para outros diretórios.

Na linha de comando, arquivo - origem é o nome do arquivo que você quer copiar e arquivo - destino é o nome que você quer dar à cópia. Lembre - se: se você fizer uma cópia de um arquivo no mesmo diretório, ela não poderá ter o mesmo nome de arquivo - origem. Com este comando você pode acidentalmente perder arquivos se já existir um arquivo com o nome arquivo -destino, neste caso o comando cp escreve o novo arquivo por cima do antigo.

cp [opções] [origem] [destino]

onde: origem Arquivo que será copiado. Podem ser especificados mais

de um arquivo para ser copiado usando "Curingas". destino O caminho ou nome de arquivo onde será copiado. Se o

destino for um diretório, os arquivos de origem serão copiados para dentro do diretório.

opções -i Pergunta antes de substituir um arquivo existente. -f Não pergunta, substitui todos os arquivos caso já exista. -r Copia recursivamente arquivos dos diretórios e subdiretórios

da origem para o destino. É recomendável usar -R ao invés de -r.

-R Copia recursivamente arquivos e sub-diretórios (como a opção -r) e também os arquivos especiais FIFO e dispositivos.

-v Mostra os arquivos enquanto estão sendo copiados. -s Cria link simbólico ao invés de copiar. -l Faz o link no destino ao invés de copiar os arquivos. -p Preserva atributos do arquivo, se for possível. -u Copia somente se o arquivo de origem é mais novo que o

arquivo de destino ou quando o arquivo de destino não existe. O comando cp copia arquivos da ORIGEM para o DESTINO.

Ambos origem e destino terão o mesmo conteúdo após a cópia. Exemplos: $ cp teste.txt teste1.txt Copia o arquivo teste.txt para teste1.txt. $ cp teste.txt /tmp Copia o arquivo teste.txt para dentro do diretório /tmp. $ cp * /tmp Copia todos os arquivos do diretório atual para /tmp.

4

Page 47: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

$ cp /bin/* . Copia todos os arquivos do diretório /bin para o diretório em que nos encontramos no momento.

$ cp [/caminho/arquivo(1) .. arquivo(n)] [/caminho] Copia N arquivos ao mesmo tempo.

$ cp * [/caminho/diretório] Copia todos os arquivos do diretório atual para o diretório especificado.

$ cp ../diretório-mesmo-nível/* . Copia tudo do diretório de mesmo nível do atual (../diretório-mesmo-nível/*) para o diretório corrente ( . ).

$ cp * .. Copia tudo do diretório corrente (*) para o diretório acima (..).$cp -R Copia todo o conteúdo do diretório, inclusive subdiretórios.$ cp -R /bin /tmp Copia o diretório /bin e todos os arquivos/sub-

diretórios existentes para o diretório /tmp. $ cp -R /bin/* /tmp Copia todos os arquivos do diretório /bin

(exceto o diretório /bin) e todos os arquivos/subdiretórios existentes dentro dele para /tmp.

$ cp -R /bin /tmp Copia todos os arquivos e o diretório /bin para /tmp. $ cp –u file1 file2 Se você já tiver um arquivo chamado file2 e

file1 for mais novo, esse comando sobre grava o seu conteúdo sem informar.

$ cp arq ‘teste de cópia’ $ cp arq teste\ de\ cópiaCopia o arquivo arq para um chamado

“teste de cópia”. Observe que foi utilizada a aspa ou a barra invertida para desconsiderar os espaços em branco.

4.2.6 mv – Movendo ou Renomeando arquivos

O comando mv (move) funciona com arquivos da mesma maneira como funciona com diretórios. Pode-se usar mv para renomear um arquivo ou para movê-lo para outro diretório, dependendo dos argumentos que você utilizar. O processo é semelhante ao do comando cp mas o arquivo de origem é apagado após o término da cópia.

Na linha de comando, a origem é o nome do arquivo cujo nome você deseja mudar, e o destino o novo nome para este arquivo. Se arquivo destino já existir, mv primeiro remove o arquivo já existente e depois renomeia arquivo origem com o novo nome. Para evitar este problema, você tem duas opções:

1. Examinar o conteúdo do diretório antes de renomear um arquivo, para verificar se o novo nome que você deseja atribuir já existe;

2. Usar a opção -i (interactive) (presente em alguns sistemas) que permite uma confirmação da remoção de um arquivo antes do comando mv removê-lo.

Se arquivo destino for o nome de um diretório presente no diretório corrente, então o comando mv entende que arquivo origem deve ser movido para o diretório arquivo destino, e não que este deve ser eliminado e substituído por arquivo origem.

4

Page 48: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Se você mover um arquivo para um novo diretório, o arquivo terá o mesmo nome da origem, a menos que você especifique o novo nome também, dando o nome do caminho (relativo ou absoluto) antes do nome do arquivo.

mv [opções] [origem] [destino]

Onde: origem Arquivo/diretório de origem. destino Local onde será movido ou novo nome do arquivo/diretório. opções -f Substitui o arquivo de destino sem perguntar. -i Pergunta antes de substituir. É o padrão. -v Mostra os arquivos que estão sendo movidos. -u Move somente arquivos antigos, ou novos arquivos.

Exemplos: $ mv teste.txt teste1.txt Muda o nome do arquivo teste.txt para teste1.txt. $ mv teste.txt /tmp Move o arquivo teste.txt para /tmp. Lembre-se

que o arquivo de origem é apagado após ser movido.

$ mv teste.txt teste.new (supondo que teste.new já exista) Copia o arquivo teste.txt por cima de teste.new e apaga teste.txt após terminar a cópia.

$ mv teste* Dir1/ Move múltiplos arquivos para o diretório Dir1$ mv [/caminho1/arquivo1] [/caminho2/arquivo2] Move o

arquivo, renomeando.$ mv [/caminho/arquivo(1) .. arquivo(n)] [/caminho] Move N

arquivos do caminho-origem para o caminho destino

4.2.7 file – Identificando arquivos

Você já deve ter percebido em alguma oportunidade que alguns arquivos não podem ser listados na tela do micro, pois possuem códigos executáveis ou outros dados não adequados para serem mostrados na tela. O micro pode até mesmo ficar "preso" como resultado da tentativa de exibir um arquivo desses. O comando file pode ser utilizado para verificar o tipo de um arquivo, sem que seja preciso listá-lo para saber seu conteúdo.

O comando file toma como argumentos uma lista de nomes de arquivos ou diretórios (ou caminhos relativos/absolutos) especificados na linha de comando, e examina- os, relatando que tipo de arquivo são: arquivo de texto, de programa em C, diretório, etc.

file [opções] [alvo]

opções-f Usado para verificar uma lista de nomes contida dentro de um

diretório. Assim você não precisa passar todos os arquivos que você deseja investigar na linha de comando;

4

Page 49: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Exemplos:1. Descubra o tipo do arquivo curso

$ file cursocurso : Directory$

2. Descubra o tipo de cada arquivo contido no arquivo teste.file :$ file - f teste.file curso : Directory teste : Directorytexto : ascii text$

4.2.8 more – Paginando a saída padrão

Permite fazer a paginação de arquivos ou da entrada padrão. O comando more pode ser usado como comando para leitura de arquivos que ocupem mais de uma tela. Quando toda a tela é ocupada, o more efetua uma pausa e permite que você pressione Enter ou espaço para continuar avançando no arquivo sendo visualizado. Para sair do more pressione q.

more [arquivo]

Onde: arquivo É o arquivo que será paginado.

Para visualizar diretamente arquivos texto compactados pelo gzip .gz use o comando zmore.

Exemplos: $ more /etc/passwd$ more /etc/inittab$ cat /etc/passwd|more

4.2.9 less – Paginando a saída padrão

Permite fazer a paginação de arquivos ou da entrada padrão. O comando less pode ser usado como comando para leitura de arquivos que ocupem mais de uma tela. Quando toda a tela é ocupada, o less efetua uma pausa (semelhante ao more) e permite que você pressione Seta para Cima e Seta para Baixo ou PgUP/PgDown para fazer o rolamento da página. Para sair do less pressione q.

less [arquivo]

Onde: arquivo É o arquivo que será paginado.

Para visualizar diretamente arquivos texto compactados pelo utilitário gzip (arquivos .gz), use o comando zless.

Exemplos: $ less /etc/passwd, $ cat /etc/passwd|less

4.2.10 sort – Ordenando um texto

4

Page 50: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

O comando sort é utilizado para organizar as linhas de um arquivo texto ou da entrada padrão. A organização é feita por linhas e as linhas são divididas em campos que é a ordem que as palavras aparecem na linha separadas por um delimitador (normalmente um espaço).

sort [opções] [arquivo]

Onde: Arquivo É o nome do arquivo que será organizado. Caso não for

especificado, será usado o dispositivo de entrada padrão (normalmente o teclado ou um "|").

opções -b Ignora linhas em branco. -d Somente usa letras, dígitos e espaços durante a organização. -f Ignora a diferença entre maiúsculas e minúsculas. -r Inverte o resultado da comparação. -n Caso estiver organizando um campo que contém números, os

números serão organizados na ordem aritmética. Por exemplo, se você tiver um arquivo com os números 100 10 50Usando a opção -n, o arquivo será organizado desta maneira: 10 50 100Caso esta opção não for usada com o sort, ele organizará como uma listagem alfabética (que começam de a até z e do 0 até 9) 10 100 50

-c Verifica se o arquivo já esta organizado. Caso não estiver, retorna a mensagem "disorder on arquivo".

-o arquivo Grava a saída do comando sort no arquivo. -m arquivo1 arquivo2 Combina o conteúdo de arquivo1 e

arquivo2 gerando um único arquivo. Os dois arquivos precisam estar ordenados antes de se utilizar esta opção.

-t caractere Usa caractere como delimitador durante a organização de linhas. Por padrão é usado um espaço em branco como delimitador de caracteres.

+num1 -num2 Especifica qual o campo dentro na linha que será usado na organização. O(s) campo(s) usado(s) para organização estará entre +num1 e +num2. O delimitador padrão utilizado é um espaço em branco (use a opção -t para especificar outro). A contagem é iniciada em "0". Caso não for especificada, a organização é feita no primeiro campo. Caso -num2 não seja especificado, a organização será feita usando a coluna +num1 até o fim da linha.

Abaixo, exemplos de uso do comando sort: $ sort texto.txt Organiza o arquivo texto.txt em ordem crescente.

5

Page 51: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

$ sort texto.txt –r Organiza o conteúdo do arquivo texto.txt em ordem decrescente.

$ cat texto.txt|sort Faz a mesma coisa que o primeiro exemplo, só que neste caso a saída do comando cat é redirecionado a entrada padrão do comando sort.

$ sort -f texto.txt Ignora diferenças entre letras maiúsculas e minúsculas durante a organização.

$ sort +1 -3 texto.txt Organiza o arquivo texto.txt usando como referência a segunda até a quarta palavra (segundo ao quarto campo) que constam naquela linha.

$ sort -t : +2 -3 passwd Organiza o arquivo passwd usando como referência a terceira até a quarta palavra (terceiro ao quarto campo). Note que a opção -t especifica o caractere ":" como delimitador de campos ao invés do espaço. Neste caso, o que estiver após ":" será considerado o próximo campo.

4.2.11 head – Verificando o ínicio de um arquivo

Utilizamos o comando head para verificar as 10 primeiras linhas de um arquivo texto.

head [opções]

Onde: -c [numero] Mostra o [numero] de bytes do inicio do arquivo. -n [numero] Mostra o [numero] de linhas do inicio do arquivo.

Caso não for especificado, o head mostra as 10 primeiras linhas.

Exemplos: $ head teste.txt, $ head -n 20 teste.txt.

4.2.12 tail - Verificando o final de um arquivo

Utilizamos o comando tail para verificar as últimas 10 linhas de um arquivo texto.

tail [opções]

Onde: -c [numero] Mostra o [numero] de bytes do final do arquivo. -n [numero] Mostra o [numero] de linhas do final do arquivo.

Exemplos: $ tail teste.txt, $ tail -n 20 teste.txt

4.2.13 ln – Criando um link

Cria links para arquivos e diretórios no sistema. O link é um mecanismo que faz referência (um ponteiro) a outro arquivo ou

5

Page 52: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

diretório em outra localização. O link em sistemas GNU/Linux faz referência real ao arquivo/diretório podendo ser feita cópia do link (será copiado o arquivo alvo), entrar no diretório (caso o link faça referência a um diretório), etc.

ln [opções] [origem] [link]

Onde: origem Diretório ou arquivo de onde será feito o link. link Nome do link que será criado. opções -s Cria um link simbólico. Usado para criar ligações com o arquivo

ou diretório de destino. -v Mostra o nome de cada arquivo antes de fazer o link. -d Cria um hard link para diretórios. Somente o root pode usar esta opção.

Existem 2 tipos de links: simbólicos e hardlinks. • O link simbólico cria um arquivo especial no disco (do tipo link)

que tem como conteúdo o caminho para chegar até o arquivo alvo (isto pode ser verificado pelo tamanho do arquivo do link). Use a opção -s para criar links simbólicos.

• O hardlink faz referência a uma “cópia linkada” do arquivo original, desta forma ele será perfeitamente idêntico, inclusive nas permissões de acesso, ao arquivo original, possuindo assim uma cópia do conteúdo além do apontador para o original, assim qualquer alteração feita no conteúdo do arquivo estará automaticamente atualizando o link. Ao contrário dos links simbólicos, não é possível fazer um hardlink para um diretório ou fazer referência a arquivos que estejam em partições diferentes.

Observações: • Se for usado o comando rm com um link, somente o link será

removido. • Se for usado o comando cp com um link, o arquivo original será

copiado ao invés do link. • Se for usado o comando mv com um link, a modificação será feita

no link. • Se for usado um comando de visualização (como o cat), o arquivo

original será visualizado.

Exemplos: $ ln -s /dev/ttyS1 /dev/modem Cria o link /dev/modem para o arquivo

/dev/ttyS1. $ ln -s /tmp ~/tmp Cria um link ~/tmp para o diretório /tmp.

4.2.14 find – Encontrando arquivos e diretórios pelo file system

O comando find procura recursivamente por arquivos/diretórios no disco. A busca recursiva faz com que a procura ocorra não apenas nos diretórios especificados, mas em todos os seus subdiretórios. find pode procurar arquivos através de sua data de modificação, tamanho, etc através do uso de opções. find, ao

5

Page 53: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

contrário de outros programas, usa opções longas através de um "-".

find [diretório] [opções/expressão]

Onde: diretório Inicia a procura neste diretório, percorrendo seu sub-diretórios. opções/expressão -name [expressão] Procura pelo nome [expressão] nos nomes de

arquivos e diretórios processados. -amin [num] Procura por arquivos que foram acessados [num]

minutos atrás. Caso for antecedido por "-", procura por arquivos que foram acessados entre [num] minutos atrás até agora.

-atime [num] Procura por arquivos que foram acessados [num] dias atrás. Caso for antecedido por "-", procura por arquivos que foram acessados entre [num] dias atrás e a data atual.

-group [nome] Procura por arquivos que possuam a identificação de nome do grupo igual a [nome].

-user [nome] Procura por arquivos que possuam a identificação de nome do usuário igual a [nome].

-mmin [num] Procura por arquivos que tiveram seu conteúdo modificado há [num] minutos. Caso for antecedido por "-", procura por arquivos que tiveram seu conteúdo modificado entre [num] minutos atrás até agora.

-mtime [num] Procura por arquivos que tiveram seu conteúdo modificado há [num] dias. Caso for antecedido por "-", procura por arquivos que tiveram seu conteúdo modificado entre [num] dias atrás até agora.

-nouser Procura por arquivos que não correspondam à identificação do usuário atual.

-nogroup Procura por arquivos que não correspondam à identificação do grupo do usuário atual.

-perm [modo] Procura por arquivos que possuam os modos de permissão [modo]. Os [modo] de permissão pode ser numérico (octal) ou literal.

-size [num] Procura por arquivos que tiverem o tamanho [num]. [num] pode ser antecedido de "+" ou "-" para especificar um arquivo maior ou menor que [num]. A opção -size pode ser seguida de: b - Especifica o tamanho em blocos de 512 bytes. É o padrão caso [num] não seja acompanhado de nenhuma letra. c - Especifica o tamanho em bytes. k - Especifica o tamanho em Kbytes.

A maior parte dos argumentos numéricos podem ser precedidos por "+" ou "-". Para detalhes sobre outras opções e argumentos, consulte a página de manual.

Uma última observação sobre o find, é que ele, dependendo do ponto de partida da pesquisa, pode demorar muito até retornar alguma saída, ou não retornar nada se não for encontrado o alvo da pesquisa. Isso se dá devido ao find pesquisar cada arquivo e

5

Page 54: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

subdiretórios existentes a partir do pondo de partida da pesquisa recursivamente.

Exemplo: $ find / -name grep Procura no diretório raiz e sub-diretórios um

arquivo/diretório chamado grep. $ find / -name grep -maxdepth 3 Procura no diretório raiz e sub-

diretórios até o 3o. nível, um arquivo/diretório chamado grep.

$ find . -size +1000k Procura no diretório atual e sub-diretórios um arquivo com tamanho maior que 1000 kbytes (1Mbyte).

$ find / -mmin 10 Procura no diretório raiz e sub-diretórios um arquivo que foi modificado há 10 minutos atrás.

$ find / -links 4Procura no diretório raiz e sub-diretórios, todos os arquivos que possuem 4 links como referência.

4.2.15 locate – Encontrando arquivos

Esse comando tem a função, assim como o find, de localizar arquivos. Porém, o find pode ser, em certas circunstâncias, um programa de demorará a retornar algo. Para agilizar a ação de encontrar arquivos foi criado um banco de dados chamado locatedb localizado em /var/lib que possui os nomes dos arquivos guardados como registros. Dessa maneira, o comando locate não procura por todo o file system e sim apenas em seu banco de dados. O comando utilizado para atualizar o banco de dados do locatedb é o updatedb sem flags.

locate [arquivo]

4.2.16 grep – Procurando nos arquivos

O comando grep procura uma seqüência de caracteres em um ou mais arquivos, ou no dispositivo de entrada padrão linha por linha. A ação especificada pelas opções é executada em cada linha que contém a seqüência de caracteres procurada. A saída será a linha do arquivo em que o trecho foi encontrado.

Se mais de um arquivo for indicado como argumento do comando, o grep antecede cada linha de output que contém a seqüência de caracteres com o nome do arquivo e dois pontos. O nome do arquivo é mostrado para cada ocorrência da seqüência de caracteres em um determinado arquivo. A opção -l é usada para mostrar apenas uma vez o nome do arquivo que contém várias ocorrências da seqüência de caracteres.

grep [expressão] [arquivo] [opções]

Onde: expressão palavra ou frase que será procurada no texto. Se

tiver mais de 2 palavras você deve identificá-la com aspas "" caso contrário o grep assumirá que a segunda palavra é o arquivo!

arquivo Arquivo onde será feita a procura. opções

5

Page 55: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

-A [número] Mostra o [número] de linhas após a linha encontrada pelo grep.

-B [número] Mostra o [número] de linhas antes da linha encontrada pelo grep.

-f [arquivo] Especifica que o texto que será localizado, esta no arquivo [arquivo].

-h Não mostra os nomes dos arquivos durante a procura. -i Ignora diferença entre maiúsculas e minúsculas no texto

procurado e arquivo. -r Procura recursivamente-n Mostra o nome de cada linha encontrada pelo grep. -U Trata o arquivo que será procurado como binário.

Se não for especificado o nome de um arquivo ou se for usado um hífen "-", grep procurará a string no dispositivo de entrada padrão. O grep faz sua pesquisa em arquivos texto. Use o comando zgrep para pesquisar diretamente em arquivos compactados com gzip, os comandos e opções são as mesmas.

Exemplos: $ grep "capitulo" texto.txt, $ ps ax|grep inetd, $ grep "capitulo" texto.txt -A 2 -B 2.

4.2.17 nl – Visualizando e numerando um arquivo

Mostra o número de linhas junto com o conteúdo de um arquivo.

nl [opções] [arquivo]

Onde: -f [opc] Faz a filtragem de saída de acordo com [opc]:

a Numera todas as linhas. t Não numera linhas vazias. n Numera linhas vazias. texto Numera somente linhas que contém o [texto].

-v [num] Número inicial (o padrão é 1). -i [num] Número de linhas adicionadas a cada linha do arquivo (o

padrão é 1).

Exemplos: $ nl /etc/passwd, $ nl -i 2 /etc/passwd

4.2.18 cmp – Comparando arquivos

Compara dois arquivos de qualquer tipo (binário ou texto). Os dois arquivos especificados serão comparados e caso exista diferença entre eles, é mostrado o número da linha e byte onde ocorreu à primeira diferença na saída padrão (tela) e o programa retorna o código de saída 1.

cmp [arquivo1] [arquivo2] [opções]

Opções: arquivo1/arquivo2 Arquivos que serão comparados.

5

Page 56: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

opções -l Mostra o número do byte (hexadecimal) e valores diferentes de

bytes (octal) para cada diferença. -s Não mostra nenhuma diferença, só retorna o código de saída

do programa.

Use o comando zcmp para comparar diretamente arquivos binários/texto compactados com gzip.

Exemplo: $ cmp teste.txt teste1.txt.

4.2.19 wc – Contando palavras em um texto

O comando wc (Word count) é utilizado para contar o número de palavras, bytes e linhas em um arquivo ou entrada padrão. Se as opções forem omitidas, o wc mostra a quantidade de linhas, palavras, e bytes.

wc [opções] [arquivo]

Onde: arquivo Arquivo que será verificado pelo comando wc. opções -c Mostra os bytes do arquivo. -w Mostra a quantidade de palavras do arquivo. -l Mostra a quantidade de linhas do arquivo.

A ordem da listagem dos parâmetros é única, e modificando a posição das opções não modifica a ordem que os parâmetros são listados. Exemplo: $ wc /etc/passwd Mostra a quantidade de linhas, palavras e letras

(bytes) no arquivo /etc/passwd. $ wc -w /etc/passwd Mostra a quantidade de palavras. $ wc -l /etc/passwd Mostra a quantidade de linhas. $ wc -l -w /etc/passwd Mostra a quantidade de linhas e palavras

no arquivo /etc/passwd

4.3Comandos Diversos4.3.1 clear – Limpando a tela

Limpa a tela e posiciona o cursor no canto superior esquerdo do vídeo.

clear

4.3.2 cal – Calendário

Mostra um calendário do mês atual.

cal

Exemplo: $ cal cal [ano] (mostra os 12 meses de um determinado ano) Exemplo: $ cal 2007

5

Page 57: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

cal MM YYYY (Exibe a data no formato especificado)cal 01 2000 (Exibe o calendário do mês de Janeiro no ano 2000)

4.3.3 history – Histórico dos comandos

Lista os últimos 500 comandos que você digitou

history

4.3.4 date

Permite ver/modificar a Data e Hora do Sistema. Você precisa estar como usuário root para modificar a data e hora. Muitos programas do sistema, arquivos de registro (log) e tarefas agendadas funcionam com base na data e hora fornecidas pelo sistema, assim esteja consciente das modificações que a data/hora pode trazer a estes programas (principalmente em se tratando de uma rede com muitos usuários).

Para ver a data atual digite apenas: date

Para modificar digite: date MesDiaHoraMinuto[AnoSegundos]

Onde: MesDiaHoraMinuto[AnoSegundos] São respectivamente os números

do mês, dia, hora e minutos sem espaços. Opcionalmente você pode especificar o Ano (com 2 ou 4 dígitos) e os Segundos.

+[FORMATO] Define o formato da listagem que será usada pelo comando date. Os seguintes formatos são os mais usados: %d - Dia do Mês (00-31). %m - Mês do Ano (00-12). %y - Ano (dois dígitos). %Y - Ano (quatro dígitos). %H - Hora (00-24). %I - Hora (00-12). %M - Minuto (00-59). %j - Dia do ano (1-366). %p - AM/PM (útil se utilizado com %d). %r - Formato de 12 horas completo (hh:mm:ss AM/PM). %T - Formato de 24 horas completo (hh:mm:ss). %w - Dia da semana (0-6).

Exemplos:Se quiser mudar a Data para 25/12 e a hora para 08:15 digite:

date 12250815 Para mostrar somente a data no formato dia/mês/ano: date +

%d/%m/%Y

4.3.5 echo

Mostra mensagens. Este comando é útil na construção de scripts para mostrar mensagens na tela para o usuário acompanhar sua execução.

5

Page 58: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

echo [mensagem]

A opção -n pode ser usada para que não ocorra o salto de linha após a mensagem ser mostrada.

4.3.6 cut

Mostra seções de cada linha do arquivo dependendo das opções passadas ao programa.

cut [opções] [arquivo]

Onde: arquivo Arquivo que será verificado pelo comando cut. opções -b [bytes] Mostra somente a lista de [bytes] do arquivo. -c [numero] Mostra somente o [número] de caracteres no

arquivo. É semelhante à opção "-b" mas tabs e espaços são tratados como qualquer caractere.

-f [campos] Mostra somente a lista de [campos]. -d [delimitador] Para uso com a opção -f, os campos são

separados pelo primeiro caractere em [delimitador] ao invés de tabulações.

-s Para uso com a opção -f, somente mostra linhas que contém o caractere separador de campos.

Devem ser especificadas opções para o funcionamento deste comando. Os bytes, campos e delimitadores podem ser especificados através de intervalos de caracteres (usando a-z), através de vírgulas (a,b,d) ou da combinação entre eles.

Exemplos:$ cut -b 1,3 /etc/passwd - Pega a primeira e terceira letra (byte)

de cada linha do arquivo /etc/passwd $ cut -b 1,3-10 /etc/passwd Pega a primeira letra (byte) e terceira

a décima letra de cada linha do arquivo /etc/passwd.

$ cut -c 1,3-10 /etc/passwd Pega o primeiro caractere e terceiro ao décimo caractere de cada linha do arquivo /etc/passwd.

4.3.7 who

Mostra quem está atualmente conectado no computador. Este comando lista os nomes de usuários que estão conectados em seu computador, o terminal e data da conexão.

who [opções]

opções -H Mostra o cabeçalho das colunas. -i, -u, --idle Mostra o tempo que o usuário está parado em Horas:Minutos.

5

Page 59: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

-m, i am Mostra o nome do computador e usuário associado ao nome. É equivalente a digitar who i am ou who am i.

-q Mostra o total de usuários conectados aos terminais. -T, -w, --mesg Mostra se o usuário pode receber mensagens via talk (conversação).

+ O usuário recebe mensagens via talk - O usuário não recebe mensagens via talk. ? Não foi possível determinar o dispositivo de terminal onde

o usuário está conectado.

4.3.8 whoami

Mostra o nome que usou para se conectar ao sistema. É útil quando você usa várias contas e não sabe com qual nome entrou no sistema.

whoami

4.3.9 w

Mostra quem está conectado no sistema e o que cada um está fazendo.

w [opções][usuário]

onde: usuário Nome do usuário que deseja ver os detalhes. Se o usuário

não for digitado, o comando w mostra detalhes de todos os usuários conectados no sistema.

opções -h Não mostra o cabeçalho -u Ignora os nomes de usuários enquanto verifica os processos

atuais e tempos de CPU. -f Mostra ou oculta o campo FROM na listagem.

4.3.10 su

Permite o usuário mudar sua identidade para outro usuário sem fazer o logout. Útil para executar um programa ou comando como root sem ter que abandonar a seção atual.

su [usuário]

Onde: usuário é o nome do usuário que deseja usar para acessar o sistema. Se não digitado, é assumido o usuário root.

Será pedida a senha do superusuário para autenticação. Digite exit quando desejar retornar a identificação de usuário anterior.

4.3.11 reboot

Reinicia o computador.

4.3.12 halt

5

Page 60: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Desliga a máquina. Exemplo: $ halt

4.3.13 shutdown

Desliga/reinicia o computador imediatamente ou depois de determinado tempo (programável) de forma segura. Todos os usuários do sistema são avisados que o computador será desligado. Este comando somente pode ser executado pelo usuário root ou quando é usada a opção-a pelos usuários cadastrados no arquivo /etc/shutdown.allow que estejam logados no console virtual do sistema.

shutdown [opções] [hora] [mensagem]

onde:hora Momento que o computador será desligado. Você pode

usar HH:MM para definir a hora e minuto, MM para definir minutos, +SS para definir após quantos segundos, ou now para imediatamente (equivalente a +0).

O shutdown criará o arquivo /etc/nologin para não permitir que novos usuários façam login no sistema (com exceção do root). Este arquivo é removido caso a execução do shutdown seja cancelada (opção -c) ou após o sistema ser reiniciado.

mensagem Mensagem que será mostrada a todos os usuários alertando sobre o reinicio/desligamento do sistema.

opções -h Inicia o processo para desligamento do computador. -r Reinicia o sistema -c Cancela a execução do shutdown. Você pode acrescentar uma

mensagem avisando aos usuários sobre o fato. -t [num] Faz com que o shutdown envie um sinal de término aos

processos e aguarde [num] segundos antes de enviar o sinal KILL.

O shutdown envia uma mensagem a todos os usuários do sistema alertando sobre o desligamento durante os 15 minutos restantes e assim permite que finalizem suas tarefas. Após isto, o shutdown muda o nível de execução através do comando init para 0 (desligamento), 1 (modo monousuário), 6 (reinicialização). É recomendado utilizar o símbolo "&" no final da linha de comando para que o shutdown seja executado em segundo plano.

Quando restarem apenas 5 minutos para o reinicio/desligamento do sistema, o programa login será desativado, impedindo a entrada de novos usuários no sistema.

O programa shutdown pode ser chamado pelo init através do pressionamento da combinação das teclas de reinicialização CTRL+ALT+DEL alterando-se o arquivo /etc/inittab. Isto permite que somente os usuários autorizados (ou o root) possam reinicializar o sistema. Exemplos: $ shutdown -h now Desligar o computador imediatamente. $ shutdown -r now Reinicia o computador imediatamente.

6

Page 61: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

$ shutdown 19:00 A manutenção do servidor será iniciada às 19:00" - Faz o computador entrar em modo monousuário (init 1) às 19:00 enviando a mensagem A manutenção do servidor será iniciada às 19:00 a todos os usuários conectados ao sistema.

$ shutdown -r 15:00 O sistema será reiniciado às 15:00 horas" - Faz o computador ser reiniciado (init 6) às 15:00 horas enviando a mensagem O sistema será reiniciado às 15:00 horas a todos os usuários conectados ao sistema.

$ shutdown -r 20 Faz o sistema ser reiniciado após 20 minutos. $ shutdown -c Cancela a execução do shutdown. $ shutdown -t 30 -r 20 Reinicia o sistema após 20 minutos, espera

30 segundos após o sinal de término para enviar o sinal KILL a todos os programas abertos.

4.3.14 talk

Inicia conversa com outro usuário em uma rede local ou Internet. Talk é um programa de conversação em tempo real onde uma pessoa vê o que a outra escreve.

talk [usuário] [tty] ou talk [usuário@host]

Onde: usuário Nome de login do usuário que deseja iniciar a

conversação. Este nome pode ser obtido com o comando who.tty O nome de terminal onde o usuário está conectado, para

iniciar uma conexão local. usuário@host Se o usuário que deseja conversar estiver conectado

em um computador remoto, você deve usar o nome do usuário@hosname do computador.

Após o talk ser iniciado, ele verificará se o usuário pode receber mensagens, em caso positivo, ele enviará uma mensagem ao usuário dizendo como responder ao seu pedido de conversa.

Para poder fazer a rolagem para cima e para baixo no talk, pressione CTRL+P(Previous - Tela anterior) e CTRL+N (Next - Próxima tela). Você deve ter o daemon do talk instalado (talkd) para receber requisições de conversa.

Você deve autorizar o recebimento de talks de outros usuários para que eles possam se comunicar com você, para detalhes veja o comando mesg.

4.3.15 mesg

Permite ou não o recebimento de requisições de talk de outros usuários.

mesg [y/n] 6

Page 62: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Onde: y permite que você receba "talks" de outros usuários. Digite mesg para saber se você pode ou não receber "talks" de

outros usuários. Caso a resposta seja "n" você poderá enviar um talk para alguém, mas o seu sistema se recusará em receber talks de outras pessoas.

É interessante colocar o comando mesg y em seu arquivo de inicialização bash_profile para permitir o recebimento de "talks" toda vez que entrar no sistema.

5 Editor de texto VI

5.1Editor do UNIX

O editor de textos que era originalmente fornecido com o UNIX chamava-se ed, e era orientado por linha, isto é, editava somente uma linha por vez. Como o ed era pouco amigável, foi desenvolvido um novo editor de linha, chamado ex. O editor ex continha os comandos do ed e mais alguns comandos novos. Um destes comandos era o vi, que permitia ao usuário exibir o arquivo que estava sendo editado em uma janela do tamanho da tela do terminal. Portanto o editor vi nada mais é que um ex que exibe textos em telas inteiras em vez de apenas uma linha por vez.

O editor vi não objetiva formatar textos: negritos, identações, justificação, etc. O editor vi foi projetado para trabalhar em conjunto com formatadores de texto. Na prática o vi é muito usado para editar textos que não necessitam de formatação em nenhum momento, como por exemplo, códigos fonte de programas em alguma linguagem de programação.

O Editor “Vim” (VI Improved) é um dos editores mais usados no mundo unix/linux, ele é uma versão melhorado do editor de texto vi, um dos mais antigos editores de texto criados.

O Editor Vim é um editor de texto altamente configurável construído para possibilitar uma edição de texto de maneira eficiente. Ele não é um formatador de textos, isto é, não trabalha com justificação ou formatação de caracteres (bold, itálico, etc),

6

Page 63: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

portanto o texto produzido com o vim não tem uma aparência muito agradável.

Geralmente os sistemas unix/linux possuem um link simbólico /bin/vi apontando para o executável /usr/bin/vim. Na maioria das vezes as pessoas utilizam o “vim” pensando estar utilizando o “vi”.

Neste capítulo vamos aprender alguns comandos do vim, suficientes para que você entenda o funcionamento do editor e consiga editar arquivos simples.

5.2Modos de Operação do VIM

No vim temos vários "modos", que são estados do editor. São eles:

Modo tecla rodapé descrição

de Inserção de texto

i -- INSERT -- inserção de texto

de Comandos <ESC>

comandos de manipulação de texto

Linha de comando

: : comandos de manipulação arquivo

Visual v -- VISUAL -- seleção visual de textoBusca / / busca de padrões no textoReposição R -- REPLACE -- inserção sobrescrevendo

* os modos foram colocados em ordem de importância de uso da grande maioria dos usuários.

* para acessar qualquer um desses modos tecle 2ª coluna da tabela, na dúvida aperte <ESC> antes da sua tecla de acesso.

* para identificar em qual modo você está, olhe no rodapé da tela! (3ª coluna da tabela)

Modo de comando: Neste modo, o editor reconhece e executa comandos. Quando o editor é chamado, ele fica inicialmente neste modo. Pressione a tecla esc para confirmar o modo de comando. No modo escape os caracteres comuns (letras, números e sinais de pontuação) têm um significado especial e quase todos os caracteres funciona m como comandos; portanto, existem muitos comandos. A maioria deles é fácil de memorizar: a, A, i, I, o, O. Alguns comandos servem para passar para o modo insert, outros para movimentar o cursor sobre as linhas do texto, alterar trechos do texto, buscar palavras, etc.

Modo Inserção de texto (insert): Neste modo, o editor permite a entrada de texto e não reconhece os comandos. Neste modo o vi funciona como uma máquina de escrever, com a diferença de que você pode retroceder sobre o texto já digitado para corrigir eventuais erros. Cada caracter que for digitado aparecerá na tela exatamente como foi digitado. Neste modo não é possível mover-se dentro de uma linha, ou entre as linhas do texto.

No modo Linha de Comando (last line) você digita os comandos em uma linha especial que aparece no final da tela quando se digita : (dois pontos) no modo escape. Parte dos

6

Page 64: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

comandos do modo escape possuem similares no modo last line, como por exemplo os comandos de edição, que veremos mais adiante. Os comandos no modo last line devem ser seguidos por ENTER, contrariamente ao que acontece no modo escape.

5.3O Buffer de edição

Quando você edita um arquivo com o vi, na verdade você não está alterando o arquivo em si. As alterações feitas são aplicadas em um buffer (uma área na memória, que passa a conter o arquivo sendo editado). Quando você quiser que as alterações fiquem permanentemente aplicadas ao arquivo, é necessário copiar o conteúdo do buffer para o disco, usando o comando write (w) no modo last line. Portanto, se o comando write não for executado antes de deixar o vi, as alterações contidas no buffer não serão aplicadas ao arquivo que está no disco.

5.4 Comandos básicos do VIM (vi ou vim)

O editor vi contém um grande número de comandos para realizar uma grande variedade de tarefas especiais de edição, movimentação do cursor e outras. Na verdade seria impossível tentar aprender todos os comandos de uma vez. Vamos portanto aprender inicialmente como criar um arquivo, inser ir e editar o texto, e gravar o arquivo em disco. Os comandos mais elaborados não serão abordados neste curso.

5.4.1 Chamando o VIM:

Basta executar o comando vi, passando como argumento o nome do arquivo que se deseja criar:

[user@domain ~]$ vi abre o vim vazio, sem arquivo [user@domain ~]$ vi arquivo abre o arquivo "arquivo", se ele não existir, o cria[user@domain ~]$ vi arquivo + abre com cursor no fim do arquivo[user@domain ~]$ vi arquivo +10 abre com cursor na linha 10[user@domain ~]$ vi arquivo +/linux abre com cursor na 1ª ocorrência de "linux"

Quando um novo arquivo é criado o vi apresenta uma tela com 23 linhas e 80 colunas. O nome do arquivo aparece entre aspas no canto inferior esquerdo da tela, seguido pela mensagem "[New File]".

Dessa mesma maneira é possível editar um arquivo já existente. Neste caso, no canto inferior esquerdo da tela, à frente do nome do arquivo, aparecerá uma mensagem indicando quantas linhas e quantos caracteres o arquivo possui.

Em cada linha onde não tiver sido digitado nada até o momento, aparecerá um ~ (til), indicando que a linha é uma linha nula. Uma linha nula não é o mesmo que uma linha preenchida com espaços.

5.4.2 Editando:

6

Page 65: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Ao entrar no vim, ele está no modo de comandos (ESC escape). Como saber? Olhe no rodapé a tela. Nada na última linha.

Neste modo os caracteres têm significado especial, isto é, são comandos. Para poder introduzir o texto é necessário passar para o modo insert.

No modo escape o vi é sensível a maiúsculas e minúsculas, isto é, digitar o comando “a” é diferente de digitar o comando “A”.

Os comandos do modo escape que mudam o modo de operação do vi para o modo insert são: a, A, i, I, o, O (você verá que aparecerá um -- INSERT --" no rodapé). Cada um deles permite que a inserção de texto ocorra em posições distintas do arquivo. Isto é irrelevante se o arquivo editado está totalmente vazio (só possui linhas nulas).

a (append) Inclui texto após o cursor;A (append) Inclui o texto ao final da linha corrente, não

importando em que posição o cursor está na linha;i (insert) Insere texto antes do cursor;I (insert) Insere o texto no início da linha corrente, não

importando em que posição o cursor está na linha;o (open) Abre uma nova linha abaixo da linha corrente e

coloca o cursor no início desta nova linha;O (open) Abre uma nova linha acima da linha corrente e

coloca o cursor no início desta nova linha;Para parar de editar aperte a tecla <ESC>

Enquanto está digitando o texto, você pode utilizar a tecla backspace para retroceder sobre a linha corrente e corrigir eventuais erros, mas o backspace só funciona na linha corrente. Para movimentar o cursor para outras linhas do texto é necessário passar para o modo escape, teclando ESC, e a movimentação do cursor pode então ser realizada utilizando as setas ←↑→↓, ou ainda as teclas h, j, k, e l (em minúsculo):

l Equivale à seta →; De fato faz o mesmo que a barra de espaços, e no modo escape serve para avançar adiante na linha;

h Equivale à seta ←; De fato faz o mesmo que backspace, e no modo escape serve para retornar na linha;

j Para mover o cursor para a linha de baixo. Equivale à seta ↓ ;

k Para mover o cursor para a linha de cima. Equivale à seta ↑ ;

O vi não distribui o texto automaticamente pelas linhas. Quando uma linha é digitada além das 80 colunas que normalmente são apresentadas na tela, aparentemente o vi faz um rearranjo no tamanho da linha, mas de fato isto deve ser feito manualmente, digitando ENTER na posição da linha onde deseja-se encerrá-la.

5.4.3 Salvando/Saindo do Vim:

6

Page 66: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Lembre-se que as alterações que você está promovendo estão sendo armazenadas no buffer de edição. Para gravar estas alterações você deve utilizar o comando last line write. No modo escape, digite : (dois pontos), para entrar no modo last line. Aparecerá um sinal : no canto inferior esquerdo da tela. Digite w (ou write) e pressione ENTER. Após ter sido concluída a gravação, o cursor voltará à posição que estava antes de entrar no modo last line.

Sair do vi significa encerrar a execução do editor, e consequentemente abandonar o buffer de edição. Existe mais de uma maneira de encerrar o vi. Na primeira delas você pode utilizar o comando last line quit. Entre no modo last line e então digite q (quit). Se o arquivo não possuir nenhuma alteração no buffer de edição que ainda não esteja no disco o vi encerrará imediatamente. Porém se existir alguma alteração que ainda não foi salva em disco, aparecerá uma mensagem indicativa, e você poderá optar por encerrar o editor sem gravar as alterações usando o comando q!.

Para salvar as alterações antes de encerrar o vi, você tem três alternativas. Primeiro você pode utilizar o comando last line wq (write then quit). Outra opção é utilizar o comando last line x, que faz a gravação automaticamente se houver alguma alteração que ainda não tiver sido salva em disco. E finalmente você pode utilizar o comando escape ZZ, que faz o mesmo que last line x.

Resumo dos comandosobs: antes de executar os comandos seguintes, aperte <ESC>

para ir ao modo de comandos, e é claro, após, um <ENTER><F12> saída forçada, salva e sai.:w salva o documento:w nome_do_arquivo salva o arquivo corrente como nome_do_arquivo.:q sai do vim:wq ou :x ou ZZ salva e sai:w! salva forçado:q! sai do vim sem salvar (forçado):wq! salva e sai forçado

5.4.4 Copiando e Colando

5.4.4.1 usando o mouse:No modo de Inserção mesmo, note que o cursor do teclado

(esse tracinho piscando na tela), está numa posição, e o cursor do mouse (mexa o mouse para que ele se mova) está em outra posição.

Selecione uma parte do texto com o mouse, segurando o botão esquerdo.

Ao colar, o texto selecionado com o MOUSE será colocado a partir do cursor do TECLADO. Experimente. dependendo do mouse, a colagem se faz:

- apertando o botão direito

6

Page 67: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

- segurando o botão esquerdo e apertando o direito ao mesmo tempo

- apertando o botão do meio (mouse de 3 botões)Tente, o seu será umas das 3 alternativas acima.

5.4.4.2 usando o modo visual:Entre no modo visual ( <ESC>v ), e simplesmente aperte as

setas do teclado, movendo o cursor do TECLADO e selecionando o texto desejado.

Volte para o modo de comandos ( <ESC> ) e posicione o cursor do TECLADO no lugar onde você quer colar o texto selecionado. o comando de colagem é o "p" de Paste.

5.4.4.3 Mais subcomandos para copiar e colar:yy Copia a linha onde o cursor se encontra.:nyy Copia as próximas “n” linhas a partir da posição atual do cursor.:p Cola o que foi copiado na linha abaixo do cursor atual.

5.4.5 Apagando (deletando):

Como no tópico anterior, use o modo visual ( <ESC>v ) para selecionar o texto desejado. Para apagá-lo, digite "d", de Delete.

Com o linux no modo texto, a tecla Delete do teclado também funciona para apagar texto.

5.4.6 Outros Comandos

5.4.6.1 Subcomandos para alteração de TEXTO:

x deleta um caractere que esta sobre o cursordw deleta a palavra, do inicio da posição do cursor ate o fimdd deleta a linha inteira onde o cursor estiver colocando-a no bufferndd deleta “n” linhas a partir da posição atual do cursor (n número de linhas)D deleta a linha a partir da posição do cursor em dianterx substitui o caractere sob o cursor pelo especificado x (é opcional

indicar o caractere) Rtexto substitui o texto corrente pelo texto indicado (opcional indicar o

texto adicionado) cw substitui a palavra corrente. Pode-se inserir o novo conteúdo da

palavra automaticamente. cc substitui a linha corrente. Pode-se inserir o novo conteúdo da linha

automaticamente. C substitui restante da linha corrente. Pode-se inserir o texto logo

após o comando u desfaz a ultima modificação U desfaz todas as modificações J une a linha corrente a próxima :s/velho/novo Substitui a primeira ocorrência de "velho" por "novo" na linha corrente.

6

Page 68: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

:% s/velho/novo Substitui em todo o arquivo (%) a primeira ocorrência de "velho" por "novo" em cada linha.

:% s/velho/novo/g Substitui em todo o arquivo (%), todas (g) as ocorrências de "velho" por "novo".

:% s/velho/novo/gc Igual ao anterior, mas pedindo confirmação para cada substituição.:% s/./u&/gc Converte para maiúsculas (u) o primeiro caracter (.) de cada linha.:e nome_do_arquivo Abrir arquivo nome_do_arquivo.:r nome_do_arquivo Insere o arquivo nome_do_arquivo no ponto onde está o

cursor.

5.4.6.2 Subcomandos para a localização de TEXTO: :/palavra procura pela palavra ou caractere acima ou abaixo do texto,

marcando todas as ocorrências da palavra informada:+/palavra Marca todas as ocorrências da palavra informada e posiciona o

curso na próxima ocorrência/ Procura o padrão de caracteres digitado em todo o texto corrente.:?palavra move para a ocorrência anterior da palavra (para repetir a busca usar n)?palavra? procura a “palavra" no texto aciman repete o último comando utilizado / ou ?N repete o último comando / ou ? na direção reversa Ctrl + g mostra o nome do arquivo, o numero da linha corrente e o total de linhas

5.4.6.3 Subcomandos para movimentação pelo texto: Enter move uma linha para baixoBackspace move um caracter a esquerdaEspaço move um caractere a direitaCtrl + f passa para a tela seguinte Ctrl + b passa para a tela anterior Ctr - d avanca um telaCtrl - u retorna uma telactrl-l limpa a telaH move o cursor para a primeira linha da tela M move o cursor para o meio da tela L move o cursor para a última linha da tela h move o cursor para caractere a esquerda j move o cursor para a linha abaixo k move o cursor para alinha acima l move o cursor para o caracter a direita w move cursor para início da próxima palavra (ignora pontuação) W move cursor para inicio da próxima palavra (não ignora pontuação) b move cursor para inicio da palavra anterior (ignora pontuação) B move cursor para inicio da palavra anterior (não ignora pontuação) 0 (zero) move cursor para inicio da linha corrente ^ move cursor para o primeiro caracter não branco da linha $ move cursor para o fim da linha corrente nG move para a linha ¨G¨ G move para a última linha do arquivo

6

Page 69: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

6 Segurança

6.1Acesso a Diretórios e Arquivos

Todos os arquivos em um sistema LINUX fazem parte de um mesmo sistema de arquivos e, a princípio, podem ser acessados por qualquer usuário daquele sistema. Entretanto há uma maneira de restringir o acesso aos arquivos e diretórios para que somente determinados usuários possam acessá-los. A cada arquivo e diretório é associado um conjunto de permissões. Essas permissões determinam quais usuários podem ler, e escrever (alterar) um arquivo e, no caso de ser um arquivo executável, quais usuários podem executá-lo. Se um usuário tem permissão de execução para um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse um programa.

Quando um usuário cria um arquivo ou um diretório, o LINUX determina que ele é o proprietário (owner) daquele arquivo ou diretório. O esquema de permissões do LINUX permite que o proprietário determine quem tem acesso e em que modalidade eles poderão acessar os arquivos e diretórios que ele criou. O superusuário, entretanto, tem acesso a qualquer arquivo ou diretório do sistema de arquivos

6.2Permissões de acesso a arquivos e diretórios

A permissão de acesso protege o sistema de arquivos Linux do acesso indevido de pessoas ou programas não autorizado.

A permissão de acesso do GNU/Linux também impede que um programa mal intencionado, por exemplo, apague um arquivo que não deve, envie arquivos para outra pessoa ou forneça acesso da rede para que outros usuários invadam o sistema. O sistema GNU/Linux é muito seguro e como qualquer outro sistema seguro e confiável impede que usuários iniciantes (ou mal intencionados) instalem programas enviados por terceiros sem saber para que eles realmente servem e causem danos irreversíveis em seus arquivos, seu micro ou sua empresa.

6

Page 70: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

6.3Donos, grupos e outros usuários

O princípio da segurança no sistema de arquivos GNU/Linux é definir o acesso aos arquivos por donos, grupos e outros usuários:

dono – (owner) - É a pessoa que criou o arquivo ou o diretório. O nome do dono do arquivo/diretório é o mesmo do usuário usado para entrar no sistema GNU/Linux. Somente o dono pode modificar as permissões de acesso do arquivo.

As permissões de acesso do dono de um arquivo somente se aplicam ao dono do arquivo/diretório. A identificação do dono também é chamada de user id (UID).

A identificação de usuário e o nome do grupo que pertence são armazenadas respectivamente nos arquivos /etc/passwd e /etc/group. Estes são arquivos textos comuns e podem ser editados em qualquer editor de texto, mas tenha cuidado para não modificar o campo que contém a senha do usuário encriptada (que pode estar armazenada neste arquivo caso não estiver usando senhas ocultas).

grupo – (group) - Para permitir que vários usuários diferentes tivessem acesso a um mesmo arquivo (já que somente o dono poderia ter acesso ao arquivo), este recurso foi criado. Cada usuário pode fazer parte de um ou mais grupos e então acessar arquivos que pertençam ao mesmo grupo que o seu (mesmo que estes arquivos tenham outro dono).

Por padrão, quando um novo usuário é criado, o grupo ele pertencerá será o mesmo de seu grupo primário. A identificação do grupo é chamada de gid (group id).

Um usuário pode pertencer a um ou mais grupos. Para detalhes de como incluir o usuário em mais grupos veja Adicionando um novo grupo a um usuário

outros – (others) - É a categoria de usuários que não são donos ou não pertencem ao grupo do arquivo.

Cada um dos tipos acima possui três tipos básicos de permissões de acesso que serão vistas a seguir.

6.4 Tipos de Permissões de acesso

Quanto aos tipos de permissões que se aplicam ao dono, grupo e outros usuários, temos 3 permissões básicas:

r - Permissão de leitura (read) para arquivos. Caso for um diretório, permite listar seu conteúdo (através do comando ls, por exemplo).

w - Permissão de gravação/escrita (write) para arquivos. Caso for um diretório, permite a criação de arquivos ou outros diretórios dentro dele.

Para que um arquivo/diretório possa ser apagado, é necessário o acesso a gravação.

x - Permite executar (execute) um arquivo (caso seja um programa executável). Caso seja um diretório, permite que seja acessado através do comando cd.

As permissões de acesso a um arquivo/diretório podem ser visualizadas com o uso do comando ls -la. As 3 letras (rwx) são agrupadas da seguinte forma:

-rwxrwxrwx gleydson users teste

7

Page 71: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

A primeira letra diz qual é o tipo do arquivo. Caso tiver um "d" é um diretório, um "l" um link a um arquivo no sistema (veja ln, Seção 10.4 para detalhes) , um "-" quer dizer que é um arquivo comum, etc.

Da segunda a quarta letra (rwx) dizem qual é a permissão de acesso ao dono do arquivo. Neste caso gleydson ele tem a permissão de ler (r - read), gravar (w - write) e executar (x - execute) o arquivo teste.

Da quinta a sétima letra (rwx) diz qual é a permissão de acesso ao grupo do arquivo. Neste caso todos os usuários que pertencem ao grupo users têm a permissão de ler (r), gravar (w), e também executar (x) o arquivo teste.

Da oitava a décima letra (rwx) diz qual é a permissão de acesso para os outros usuários . Neste caso todos os usuários que não são donos do arquivo teste têm a permissão para ler, gravar e executar o programa.

6.5 Etapas para acesso a um arquivo/diretório

O acesso a um arquivo/diretório é feito verificando primeiro se o usuário que acessará o arquivo é o seu dono, caso seja, as permissões de dono do arquivo são aplicadas. Caso não seja o do no do arquivo/diretório, é verificado se ele pertence ao grupo correspondente, caso pertença, as permissões do grupo são aplicadas. Caso não pertença ao grupo, são verificadas as permissões de acesso para os outros usuários que não são donos e não pertencem ao grupo correspondente ao arquivo/diretório.

Após verificar aonde o usuário se encaixa nas permissões de acesso do arquivo (se ele é o dono, pertence ao grupo, ou outros usuários), é verificado se ele terá permissão acesso para o que deseja fazer (ler, gravar ou executar o arquivo), caso não tenha, o acesso é negado, mostrando uma mensagem do tipo: "Permission denied" (permissão negada).

O que isto que dizer é que mesmo que você seja o dono do arquivo e definir o acesso do dono (através do comando chmod) como somente leitura (r) mas o acesso dos outros usuários como leitura e gravação, você somente poderá ler este arquivo mas os outros usuários poderão ler/gravá-lo.

As permissões de acesso (leitura, gravação, execução) para donos, grupos e outros usuários são independentes, permitindo assim um nível de acesso diferenciado.

Lembre-se: Somente o dono pode modificar um arquivo/diretório!

6.6Exemplos práticos de permissões de acesso

Abaixo dois exemplos práticos de permissão de acesso. Os dois exemplos são explicados passo a passo para uma perfeita compreensão do assunto.

6.6.1 Exemplo de acesso a um arquivo

Abaixo um exemplo e explicação das permissões de acesso a um arquivo no GNU/Linux (obtido com o comando ls –la):

7

Page 72: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

-rwxr-xr-- 1 gleydson user 8192 nov 4 16:00 teste

-rwxr-xr-- Estas são as permissões de acesso ao arquivo teste. Um conjunto de 10 letras que especificam o tipo do arquivo, permissão do dono do arquivo, grupo do arquivo e outros usuários. Veja a explicação detalhada sobre cada uma abaixo:

-rwxr-xr-- A primeira letra (do conjunto das 10 letras) determina o tipo do arquivo. Se a letra for um d é um diretório, e você poderá acessá-lo usando o comando cd. Caso for um l é um link simbólico para algum arquivo ou diretório no sistema. Um - significa que é um arquivo normal.

-rwxr-xr-- Estas 3 letras (da segunda a quarta do conjunto das 10 letras) são as permissões de acesso do dono do arquivo teste. O dono (neste caso gleydson) tem a permissão para ler (r), gravar (w) e executar (x) o arquivo teste.

-rwxr-xr-- Estas 3 letras (da quinta a sétima do conjunto das 10 letras) são as permissões de acesso dos usuários que pertencem ao grupo user do arquivo teste. Os usuários que pertencem ao grupo user tem a permissão somente para ler (r) e executar (x) o arquivo teste não podendo modificá-lo ou apagá-lo.

-rwxr-xr-- Estas 3 letras (da oitava a décima) são as permissões de acesso para usuários que não são donos do arquivo teste e que não pertencem ao grupo user. Neste caso, estas pessoas somente terão a permissão para ver o conteúdo do arquivo teste.

gleydson Nome do dono do arquivo teste. user Nome do grupo que o arquivo teste pertence. teste Nome do arquivo.

6.6.2 Exemplo de acesso a um diretório

Abaixo um exemplo com explicações das permissões de acesso a um diretório no GNU/Linux:

drwxr-x--- 2 gleydson user 1024 nov 4 17:55 exemplo

drwxr-x--- Permissões de acesso ao diretório exemplo. É um conjunto de 10 letras que especificam o tipo de arquivo, permissão do dono do diretório, grupo que o diretório pertence e permissão de acesso a outros usuários. Veja as explicações abaixo:

drwxr-x--- A primeira letra (do conjunto das 10) determina o tipo do arquivo. Neste caso é um diretório porque tem a letra d.

drwxr-x--- Estas 3 letras (da segunda a quarta) são as permissões de acesso do dono do diretório exemplo. O dono do diretório (neste caso gleydson) tem a permissão para listar arquivos do diretório (r), gravar arquivos no diretório (w) e entrar no diretório (x).

drwxr-x--- Estas 3 letras (da quinta a sétima) são as permissões de acesso dos usuários que pertencem ao grupo user. Os usuários que pertencem ao grupo user têm a permissão somente para listar arquivos do diretório (r) e entrar no diretório (x) exemplo.

drwxr-x--- Estas 3 letras (da oitava a décima) são as permissões de acesso para usuários que não são donos do diretório exemplo e que não pertencem ao grupo user. Com as permissões

7

Page 73: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

acima, nenhum usuário que se encaixe nas condições de dono e grupo do diretório tem a permissão de acessá-lo.

gleydson Nome do dono do diretório exemplo. user Nome do grupo que diretório exemplo pertence. exemplo Nome do diretório.

OBSERVAÇÕES: O usuário root não tem nenhuma restrição de acesso ao

sistema. Se você tem permissões de gravação no diretório e tentar

apagar um arquivo que você não tem permissão de gravação, o sistema perguntará se você confirma a exclusão do arquivo apesar do modo leitura. Caso você tenha permissões de gravação no arquivo, o arquivo será apagado por padrão sem mostrar nenhuma mensagem de erro (a não ser que seja especificada a opção -i com o comando rm).

Por outro lado, mesmo que você tenha permissões de gravação em um arquivo, mas não tenha permissões de gravação em um diretório, a exclusão do arquivo será negada.

Isto mostra que é levado mais em consideração a permissão de acesso do diretório do que as permissões dos arquivos e sub-diretórios que ele contém. Este ponto é muitas vezes ignorado por muitas pessoas e expõem seu sistema a riscos de segurança. Imagine o problema que algum usuário que não tenha permissão de gravação em um arquivo mas que a tenha no diretório pode causar em um sistema mal administrado.

6.7 A conta root

A conta root é também chamada de super usuário, este é um login que não possui restrições de segurança. A conta root somente deve ser usada para fazer a administração do sistema, e usada o menor tempo possível.

Qualquer senha que criar deverá conter de 6 a 8 caracteres, e também poderá conter letras maiúsculas e minúsculas, e também caracteres de pontuação. Tenha um cuidado especial quando escolher sua senha root, porque ela é a conta mais poderosa. Evite palavras de dicionário ou o uso de qualquer outros dados pessoais que podem ser adivinhados.

Se qualquer um lhe pedir senha root, seja extremamente cuidadoso. Você normalmente nunca deve distribuir sua conta root, a não ser que esteja administrando um computador com mais de um administrador do sistema.

Utilize uma conta de usuário normal ao invés da conta root para operar seu sistema. Porque não usar a conta root? Bem, uma razão para evitar usar privilégios root é por causa da facilidade de se cometer danos irreparáveis como root. Outra razão é que você pode ser enganado e rodar um programa Cavalo de Tróia -- que é um programa que obtém poderes do super usuário para comprometer a segurança do seu sistema sem que você saiba.

6.8Modo de permissão

6.8.1 Formato octal

7

Page 74: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

O modo octal é um conjunto de oito números onde cada número define um tipo de acesso diferente.

É mais flexível gerenciar permissões de acesso usando o modo octal ao invés do comum, pois você especifica diretamente a permissão do dono, grupo e outros ao invés de gerenciar as permissões de cada um separadamente. Abaixo a lista de permissões de acesso octal:

r w x0 0 0 0 Nenhuma permissão de acesso1 0 0 1 Permissão de execução2 0 1 0 Permissão de gravação3 0 1 1 Permissão de gravação e execução4 1 0 0 Permissão de leitura5 1 0 1 Permissão de leitura e execução6 1 1 0 Permissão de leitura e gravação7 1 1 1 Permissão de leitura, gravação e

execução

O uso de um destes números define a permissão de acesso do dono, grupo ou outros usuários . Um modo fácil de entender como as permissões de acesso octais funcionam, é através do modo 421.

421 4 = Ler 2 = Gravar 1 = Executar * Basta agora fazer a soma das permissões para Dono, Grupo e Outros.

• Somente permissão de execução, use 1. • Somente a permissão de leitura, use 4. • Somente permissão de gravação, use 2. • Permissão de leitura/gravação, use 6 (equivale a 2+4 /

Gravar+Ler). • Permissão de leitura/execução, use 5 (equivale a 1+4 /

Executar+Ler). • Permissão de execução/gravação, use 3 (equivale a 1+2 /

Executar+Gravar). • Permissão de leitura/gravação/execução, use 7 (equivale a

1+2+4 / Executar+Gravar+Ler). 6.8.2 Formato simbólico do modo de permissões

O formato simbólico usa letras e símbolos para indicar o modo de permissão. Ele é composto de três elementos:

Tipo de usuário:u Usuário ( Proprietário )g Grupo o Outros a Todos

Ação: A ação significa como serão alteradas as permissões.+ Acrescenta permissão(ões)- Remove permissão(ões)= Atribui a permissão explicitamente

Os operadores + e - acrescentam e removem as permissões relativas ao modo de permissão corrente. O operador = reinicializa todas as permissões explicitamente (exatamente como indicado).

7

Page 75: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Tipo de permissão r Leituraw Gravaçãox Execução

A combinação desses três elementos forma o modo de permissão no formato simbólico.

6.9 chmod – Alterando o permissionamento de arquivos e diretórios

O comando chmod (change mode)muda a permissão de acesso a um arquivo ou diretório. Com este comando você pode escolher se usuário ou grupo terá permissões para ler, gravar, executar um arquivo ou arquivos. Sempre que um arquivo é criado, seu dono é o usuário que o criou e seu grupo é o grupo do usuário.

chmod [opções] [permissões] [diretório/arquivo]

Onde: diretório/arquivo Diretório ou arquivo que terá sua permissão mudada. opções -R Muda permissões recursivamente de acesso do

diretório/arquivo no diretório atual e subdiretórios. ugoa+-=rwx

• ugoaControla que nível de acesso será mudado. Especificam, em ordem, usuário (u), grupo (g), outros (o), todos (a).

• +-= + coloca a permissão, - retira a permissão do arquivo e = define a permissão exatamente como especificada.

• Rwx r permissão de leitura do arquivo. w permissão de gravação. x permissão de execução (ou acesso a diretórios).

chmod não muda permissões de links simbólicos, as permissões devem ser mudadas no arquivo alvo do link. Também podem ser usados códigos numéricos octais para a mudança das permissões de acesso a arquivos/diretórios.

DICA: É possível copiar permissões de acesso do arquivo/diretório, por exemplo, se o arquivo teste.txt tiver a permissão de acesso r-xr----- e você digitar chmod o=u, as permissões de acesso dos outros usuários (o) serão idênticas ao do dono (u). Então a nova permissão de acesso do arquivo teste.txt será r-xr--r-x

Exemplos de permissões de acesso: chmod g+r * Permite que todos os usuários que pertençam ao

grupo dos arquivos (g) tenham (+) permissões de leitura (r) em todos os arquivos do diretório atual.

chmod o-r teste.txt Retira (-) a permissão de leitura (r) do arquivo teste.txt para os outros usuários (usuários que não são donos e não pertencem ao grupo do arquivo teste.txt).

chmod uo+x teste.txt Inclui (+) a permissão de execução do arquivo teste.txt para o dono e outros usuários do arquivo.

7

Page 76: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

chmod a+x teste.txt Inclui (+) a permissão de execução do arquivo teste.txt para o dono, grupo e outros usuários.

chmod a=rw teste.txt Define a permissão de todos os usuários exatamente (=) para leitura e gravação do arquivo teste.txt.

chmod go-x teste Retira (-) a permissão de execução (x) do arquivo teste para o grupo e dos outros usuários.

chmod 764 teste Os números são interpretados da direita para a esquerda como permissão de acesso aos outros usuários (4), grupo (6), e dono (7). O exemplo acima faz os outros usuários (4) terem acesso somente leitura (r) ao arquivo teste, o grupo (6) ter a permissão de leitura e gravação (w), e o dono (7) ter permissão de leitura, gravação e execução (rwx) ao arquivo teste.

chmod 40 teste Define a permissão de acesso dos outros usuários (0) como nenhuma, e define a permissão de acesso do grupo (4) como somente leitura (r). Note usei somente dois números e então a permissão de acesso do dono do arquivo não é modificada (leia as permissões de acesso da direita para a esquerda!).

chmod 751 teste Define a permissão de acesso dos outros usuários (1) para somente execução (x), o acesso do grupo (5) como leitura e execução (rx) e o acesso do dono (7) como leitura, gravação e execução (rwx).

6.10 chgrp –Alterando o grupo

O comando chgrp (change group) muda a identificação do grupo de um arquivo ou diretório. Pode ser utilizado para conceder permissão de leitura e escrita para outro grupo que não o seu, sem ter que conceder as mesmas permissões para todos os demais usuários. Você só poderá mudar o grupo do arquivo que você mesmo criou. Além de você somente o superusuário poderá fazer isso.

chgrp [opções] [grupo] [arquivo/diretório]

Onde: grupo Novo grupo do arquivo/diretório. arquivo/diretório Arquivo/diretório que terá o grupo alterado. opções -R Altera os grupos de arquivos/subdiretórios do diretório atual.

Exemplo: Mude o grupo do arquivo memo1 para users2 :

$ ls - l memo1 -rw- r --r-- 1 guest users 984 May 12 11:02 memo1$ chgrp users2 memo1$ ls - l memo1 -rw- r --r-- 1 guest users2 984 May 12 11:02 memo1$

7

Page 77: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

6.11 chown – Alterando o dono

O comando chown (change owner) é usado para mudar a identificação de proprietário associada a um arquivo/diretório. Você só poderá aplicar este comando aos arquivos que você mesmo criou. Além de você somente o superusuário poderá fazê-lo. Observe que uma vez que você tenha alterado a identificação de proprietário que está associada a um arquivo, você não é mais o proprietário, e não poderá mais fazer a alteração inversa.

Opcionalmente pode também ser usado para mudar o grupo.

chown [opções] [dono.grupo] [diretório/arquivo]

onde: dono.grupo Nome do dono.grupo que será atribuído ao diretório/

arquivo. O grupo é opcional. diretório/arquivo Diretório/arquivo que o dono.grupo será modificado. opções -R Altera dono e grupo de arquivos no diretório atual e subdiretórios.

O dono.grupo pode ser especificado usando o nome de grupo ou o código numérico correspondente ao grupo (GID).

Exemplos:chown joão teste.txt Muda o dono do arquivo teste.txt para joão. chown joão.users teste.txt Muda o dono do arquivo teste.txt para

joão e seu grupo para users. chown -R joao.users * Muda o dono/grupo dos arquivos do

diretório atual e sub-diretórios para joão/users (desde que você tenha permissões de gravação no diretórios e sub-diretórios).

6.12 umask – Mudando as permissões padrão

O comando umask (user mask) define ou muda o modo padrão de permissões iniciais do dono, grupo e outros usuários que o arquivo/diretório receberá quando for criado ou copiado. No comando, número é um número octal de três dígitos, como visto no comando chmod. Entretanto aqui você especifica de maneira inversa, isto é, em chmod se você utilizar número igual a 777, você estará concedendo autorização de leitura + escrita + execução para você mesmo, para o grupo e para todos os demais usuários. Com o comando umask se você especificar número igual a 777, você estará negando acesso a todas as classes em qualquer modo. De fato, a permissão que será concedida é dada pela diferença entre a permissão padrão original, que é 777, para diretórios e 666 para arquivos, e a permissão especificada em umask. Por Exemplo:

Diretórios: Permissão padrão 777 (rwxrwxrwx) Valor em umask 023 Novas permissões 754 (rwxr -xr-- )

Arquivos: Permissão padrão 666 (rw-rw- rw-) Valor em umask 022 Novas permissões 644 (rw-r --r --)

7

Page 78: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Sem especificar um número umask mostrará o valor corrente da máscara de permissões. Os arquivos e diretórios criados antes do uso do comando permanecem com as permissões inalteradas.

Digite umask sem parâmetros para retornar o valor de sua umask atual.

A umask tem efeitos diferentes caso o arquivo que estiver sendo criado for binário (um programa executável) ou texto. Veja a tabela a seguir para ver qual é a mais adequada a sua situação:

umask

Arquivo DiretórioBinári Text

0 r-x rw- rwx1 r-- rw- rw-2 r-x r-- r-x3 r-- r-- r--4 --x -w- -wx5 --- -w- -w-6 --x --- --x7 --- --- ---

Um arquivo texto criado com o comando umask 012;touch texto.txt receberá as permissões -rw-rw-r--, pois 0 (dono) terá permissões rw-, 1 (grupo), terá permissões rw- e 2 (outros usuários) terão permissões r--. Um arquivo binário copiado com o comando umask 012;cp /bin/ls /tmp/ls receberá as permissões -r-xr--r-x (confira com a tabela acima).

Por este motivo é preciso um pouco de atenção antes de escolher a umask, um valor mal escolhido poderia causar problemas de acesso a arquivos, diretórios ou programas não sendo executados. O valor padrão da umask na maioria das distribuições atuais é 022.

A umask é de grande utilidade para programas que criam arquivos/diretórios temporários, desta forma pode-se bloquear o acesso de outros usuários desde a criação do arquivo, evitando recorrer ao chmod.

umask [permissão]

Exemplos :1- Mostrar o valor atual da máscara de permissões:

$ umask022 $

2- Mudar o valor da máscara para que os novos arquivos tenham a seguinte permissão : proprietário com acesso a leitura e escrita, grupo com acesso a leitura e execução e outro somente para leitura :

$ umask 012

6.13 id - A identificação do usuário/grupo

O comando id mostra o número e o nome que identifica o usuário e seu grupo. As informações do grupo (GID) e dos usuários (UID) mostradas pelo comando id são tiradas do arquivo /etc/passwd. Se o nome de um grupo não for mostrado é porque o

7

Page 79: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

grupo primário do usuário que está definido no arquivo /etc/passwd não existe no arquivo /etc/group.

id

Exemplo: Mostrar a identificação do usuário e do grupo a que pertence:$ idUID=528 (guest) GID=100 (users) GROUPS=100 (users)

6.14 newgrp - Participação em grupos

Um usuário pode pertencer a mais de um grupo ao mesmo tempo, contanto que ele esteja como membro de cada um desses grupos no arquivo /etc/group. Entretanto, o número de identificação de grupo especificado no arquivo /etc/passwd continuará valendo como o grupo primário do usuário. Esta identificação está associada aos arquivos e diretórios criados pelo usuário.

Ser um membro de um grupo significa ter acesso aos arquivos e diretórios pertencentes aos demais membros do mesmo grupo. O comando id mostra a identificação do usuário e do grupo. Os arquivos pertencentes a grupos diferentes do grupo primário do usuário, mas de grupos aos quais o usuário pertence, podem ser acessados com o uso dos seguintes comandos:

chgrp Que modifica a identificação de grupo associada a um arquivo ou diretório;

newgrp Que modifica temporariamente a vinculação de um usuário a um grupo. Os arquivos e diretórios criados depois que o usuário muda para outro grupo, refletem o "novo" grupo.

newgrp [grupo]

O comando newgrp muda temporariamente o grupo ao qual você pertence, dando-lhe acesso a todos os arquivos e diretórios acessíveis aos membros do novo grupo. Para que você possa mudar de identidade de grupo, seu nome de usuário deve estar no arquivo /etc/group para o grupo ao qual você deseja mudar. Sem argumentos o comando retorna o nome do grupo ao que você está vinculado.Exemplo : Mude o grupo corrente para users2 :$ idUID=528( guest ) GID=100( users ) GROUPS=100( users )$ newgrp users2$ idUID=528( guest ) GID=200( users2 ) GROUPS=200( users2 )$

7

Page 80: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

7 Redirecionamentos e Pipe

7.1Entrada e Saída dos comandos

Os operadores de redirecionamento do Shell são usados, assim como em qualquer sistema, para direcionar a saída ou a entrada dos programas.

Quase todos os comandos do LINUX usam uma entrada e produzem uma saída. A entrada para um comando são os dados sobre os quais o comando irá operar. Esses dados podem vir de um arquivo especificado pelo usuário, de um arquivo de sistema do LINUX, do terminal (do teclado) ou da saída de outro comando. A saída de um comando é o resultado da operação que ele realiza sobre a entrada. A saída do comando pode ser impressa na tela do terminal, enviada a um arquivo, ou servir de entrada para outro comando.

Nas seções seguintes você vai aprender a manipular estas entradas e saídas, para poder criar e ler arquivos durante o uso de alguns comandos, e também aprenderá a encadear comandos,

8

Page 81: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

fazendo com que um comando utilize como entrada a saída de outro.

7.2 Entrada e Saída Padrão:

Alguns comandos têm apenas uma fonte possível para a entrada; por exemplo, o comando date sempre utiliza o sistema interno de relógio para indicar a data e hora. Outros comandos exigem que você especifique uma entrada. Se não especificar uma fonte de entrada juntamente com esses comandos, o LINUX considera que ela virá do teclado, isto é, ele esperará que você digite a entrada. Por isso o teclado é chamado de entrada padrão.

As informações do teclado são utilizadas no processamento, e para sua facilidade o LINUX também ecoa (apresenta na tela) o que você digitar. Desta forma, você pode certificar-se de ter digitado os comando corretamente.

Normalmente, quase todos os comandos enviam suas saídas para a tela do terminal, que é chamada de saída padrão. Como com as entradas, você também pode redirecionar as saídas dos comandos para outro destino que não é a saída padrão, por exemplo, para arquivos ou para a entrada de outros comandos.

Alguns comandos, como rm, mv e mkdir não produzem nenhuma saída. Entretanto esses comandos e muitos outros podem apresentar mensagens de erro na tela se não obtiverem sucesso no seu processamento. Isto ocorre porque a tela do terminal também é a saída de erros padrão, isto é, o local para onde são enviadas as mensagens de erro. As mensagens de erro dos comandos não devem ser confundidas com as saídas dos comandos.

A Shell do LINUX redireciona a fonte e o destino da entrada, de modo que o comando não percebe se a entrada padrão está direcionada para o teclado do terminal ou para um arquivo. Da mesma forma, o comando não percebe se a saída padrão está direcionada para a tela do terminal, para um arquivo ou para a entrada de outro comando.

7.3 Redirecionamento de E/S

Há três métodos básicos para redirecionar a entrada ou saída de um comando. Uma delas é simplesmente fornecer como argumento para o comando o nome do arquivo que deve ser usado como entrada ou saída para o comando. Este método funciona com alguns comandos, como por exemplo, cat, pg e outros. Já comandos como o pwd não podem receber um arquivo como argumento. Mesmo com os filtros (classe de comandos a qual pertencem o cat e o pg) nem sempre é possível especificar a saída.

Outro método para redirecionar a entrada ou saída é utilizar os símbolos de redirecionamento. Como muitos comandos podem receber arquivos de entrada sob a forma de argumentos, os símbolos de redirecionamento são mais utilizados para direcionar a saída dos comandos.

Um terceiro método de redirecionar entradas e saídas é usando pipes, que enviam a saída de um comando para outro, ou seja, a saída de um comando serve como entrada para outro comando.

8

Page 82: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

7.4 Símbolos de redirecionamento

Os caracteres especiais utilizados na linha do comando para fazer o Shell redirecionar a entrada, saída ou erro do programa estão listados e descritos a seguir. O Shell interpreta esses caracteres antes do comando ser executado.

7.4.1 < Redirecionamento de entrada

O símbolo < (menor que) faz com que a entrada padrão seja direcionada a um arquivo. Em muitos casos, especificar < funciona exatamente como especificar o nome do arquivo como argumento do comando.

comando < arquivo

Por exemplo:$ cat Arquivo.teste$ cat < Arquivo.testeproduzirão exatamente o mesmo efeito.

7.4.2 > Redirecionamento de saída

O símbolo > (maior que) redireciona a saída de um programa/comando/script para algum dispositivo ou arquivo ao invés do dispositivo de saída padrão (tela). Quando é usado com arquivos, este redirecionamento cria ou substitui o conteúdo do arquivo.

Por exemplo, você pode usar o comando ls para listar arquivos e usar ls > listagem para enviar a saída do comando para o arquivo listagem. Use o comando cat para visualizar o conteúdo do arquivo listagem.

O mesmo comando pode ser redirecionado para o segundo console /dev/tty2 usando: ls >/dev/tty2, o resultado do comando ls será mostrado no segundo console (pressione ALT e F2 para mudar para o segundo console e ALT e F1 para retornar ao primeiro).

comando > arquivo ou comando >> arquivo

Exemplo : Guarde no arquivo data.de.hoje a saída do comando date :

$ date > data.de.hoje$ cat data.de.hojeMon May 20 10:10:28 WST 1996

7.4.3 >>

Redireciona a saída de um programa/comando/script para algum dispositivo ou final de arquivo ao invés do dispositivo de saída padrão (tela). A diferença entre este redirecionamento duplo e o simples, é se caso for usado com arquivos, adiciona (anexa) a saída do comando ao final do arquivo existente ao invés de substituir seu conteúdo.

Por exemplo, você pode acrescentar a saída do comando ls ao arquivo listagem do capítulo anterior usando ls / >>listagem. Use o comando cat para visualizar o conteúdo do arquivo listagem.

8

Page 83: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

comando >> arquivo ou comando >> arquivo

Exemplo: Acrescente ao arquivo data.de.hoje a saída do comando who :

$ who >> data.de.hoje$ cat data.de.hojeMon May 20 10:10:28 WST 1996guest tty1 May 20 08:52

7.4.4 <<

Este redirecionamento serve principalmente para marcar o fim de exibição de um bloco. Este é especialmente usado em conjunto com o comando cat, mas também tem outras aplicações.

comando << arquivo ou comando >> arquivo

Por exemplo: cat << finaleste arquivoserá mostradoaté que a palavra final seja localizada no inicio da linhafinal

7.4.5 | (pipe)

Os símbolos de redirecionamento permitem realizar mais de uma operação em um mesmo arquivo. Somente com esses símbolos você já tem condições de realizar tudo o que quiser sobre um arquivo. Suponha, entretanto, que você queira fazer um conjunto de operações diferentes em um mesmo arquivo. Cada operação implicaria a criação de um novo arquivo, sendo que o único propósito desses arquivos seria servir como entrada para outro comando. Entretanto, tudo o que importa é o resultado final. Para situações como essas o LINUX possui outra maneira de redirecionar entradas e saídas: os pipes.

O pipe ( | ) envia a saída de um comando para a entrada do próximo comando para continuidade do processamento. Os dados enviados são processados pelo próximo comando que mostrará o resultado do processamento.

comando 1 | comando 2

Você pode usar vários pipes em uma linha de comando, de maneira que é possível combinar tantos comandos quantos necessários, bastando intercalá-los por símbolos de pipe. Uma seqüência de comandos encadeados desta maneira é chamada de pipeline.

Existem algumas regras básicas para compor um pipeline em uma linha de comandos LINUX. Essencialmente essas regras são o endosso da intuição de um usuário um pouco mais experiente, que facilmente percebe que em um pipeline não pode haver "vazamentos" nem "entupimentos" do pipe, isto é, não pode haver no meio do pipeline um comando que não produza saídas (como é o caso do mkdir ou rm), ou um comando que não aceite entradas

8

Page 84: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

(como é o caso do date e pwd). O primeiro comando do pipeline deve ser um produtor de saída, obviamente.Exemplo: $ ls –la | more esta linha de comando faz a listagem longa de

arquivos que é enviado ao comando more (que tem a função de efetuar uma pausa a cada 25 linhas do arquivo).

$ ls | grep arq | wc –l esta linha de comando conta o número de arquivos que começam com a substring ‘arq’ no diretório corrente :

$ who | wc –l esta linha de comando conta o número de usuários que estão presentes no sistema neste momento.

Outro exemplo é o comando "locate find|grep bin/", neste comando todos os caminhos/arquivos que contém find na listagem serão mostrados (inclusive man pages, bibliotecas, etc.), então enviamos a saída deste comando para grep bin/ para mostrar somente os diretórios que contém binários. Mesmo assim a listagem ocupe mais de uma tela, podemos acrescentar o more: locate find | grep bin/ | more.

Podem ser usados mais de um comando de redirecionamento (<, >, |) em um mesmo comando.

7.4.6 Diferença entre o "|" e o ">"

A principal diferença entre o "|" e o ">", é que o Pipe envolve processamento entre comandos, ou seja, a saída de um comando é enviada a entrada do próximo e o ">" redireciona a saída de um comando para um arquivo/dispositivo.

Você pode notar pelo exemplo acima (ls –la | more) que ambos ls e more são comandos porque estão separados por um "|"! Se um deles não existir ou estiver digitado incorretamente, será mostrada uma mensagem de erro.

Um resultado diferente seria obtido usando um ">" no lugar do "|"; A saída do comando ls -la seria gravada em um arquivo chamado more.

7.4.7 tee – Redirecionamentos multiplos

O comando tee "divide" a saída de um comando e redireciona-a para múltiplos destinos: para um arquivo especificado e para a saída padrão (tela). O comando tee em geral é utilizado como um pedaço de um pipeline. Se não estiver em um pipeline, o comando tee se comporta de maneira semelhante ao comando cat: recebendo linhas na entrada e ecoando-as na saída.

tee [opções] arquivo

comando | tee [arquivo]

Opções:-a Faz a saída ser anexada aos arquivos especificados, em vez de

substituir seus conteúdos;

Exemplos:

8

Page 85: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

$ ls –la | tee listagem.txt A saída do comando será mostrada normalmente na tela e ao mesmo tempo gravada no arquivo listagem.txt.

$ ls | grep arq | tee nomes | wc –l Este comando conta o número de arquivos que começam com a substring ‘arq’ no diretório corrente e guarde os arquivos encontrados no arquivo nomes.

$ cat < arq2 | grep Linux | tee resp | wc –l Este comando conta o número de ocorrências da cadeia “Linux” no arquivo arq2, guarde as ocorrências no arquivo resp.

7.5 Redirecionamento de erro padrão

A entrada e a saída padrão possuem números de arquivos atribuídos no Shell. A entrada padrão está associada ao número 0 e a saída padrão ao número 1. A saída de erro padrão é para onde os programas enviam suas mensagens de erros. Ela também possui um número, o 2. A mensagem de erro gerada por um comando é normalmente direcionada pelo Shell para a saída de erro padrão, que é a mesma da saída padrão e envia a mensagem de erro para a tele do nosso monitor.

A saída de erro padrão também pode ser redirecionada para um arquivo, utilizando o símbolo >. Uma vez que este símbolo também é utilizado para redirecionar a saída padrão, é necessário fazer uma distinção mais detalhada para evitar ambigüidade.

Os descritores de arquivos a seguir especificam a entrada padrão, saída padrão e saída de erro padrão:

0 Entrada padrão;1 Saída padrão;2 Saída de erro padrão;

O descritor do arquivo deve ser colocado imediatamente antes dos caracteres de redirecionamento. Por exemplo, 1> indica a saída padrão, enquanto 2> indica a saída de erro padrão. Assim, o comando mkdir temp 2> errfile faz o Shell direcionar qualquer mensagem de erro para o arquivo errfile. As indicações da entrada padrão (0>) e saída padrão (1>) são necessárias apenas para evitar ambigüidade.

Exemplo:$ find / -name meu.arquivo > find.res p 2> find.erro$ cat find.resp/home/guest/meu.arquivo$cat find.errofind : /guest/1/fd : permission deniedfind : /guest/adm/.netscape : permission denied$

8

Page 86: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

8 Gerenciamento da execução de comandos/programas

8.1Processos

Cada vez que você executa um comando, um processo é iniciado. Processo é o nome oficial de um comando que está sendo executado. A cada processo é designado um número único, e o computador controla a distribuição do tempo de processamento entre os processos que estão rodando, baseado neste número. Como o LINUX só dispõe de um único processador, ele trabalha em cada processo durante um tempo muito curto e depois passa para outro processo, parecendo assim que todos os processos estão rodando simultaneamente. Desta forma, cada processo é executado com relativa rapidez e os usuários não precisam esperar o término dos outros processos para que o seu seja executado.

O processo associado a cada comando permanece ativo apenas até o encerramento da execução do comando. Você pode ter controle sobre os processos que estão rodando, listando-os, parando-os ou matando-os.

8.2 Estrutura de processos

Semelhante ao sistema de arquivos, a organização dos processos é hierárquica. Apresenta pais e filhos, e até mesmo um processo raiz. O processo pai cria o processo filho, que também pode criar outros processos. O termo nascer (spawn) é utilizado para indicar a criação de processos. O primeiro processo iniciado quando o sistema é inicializado é o init. Semelhante ao diretório raiz, no sistema de arquivos, este processo é o ancestral de todos os processos.

8.3Processos do usuário

Enquanto estiver em uma sessão LINUX, você está necessariamente rodando ao menos um processo, aquele associado ao seu shell (sh, para Bourne Shell ou csh, para C Shell). Se você executar qualquer comando, ele se torna um processo, que é criado pela shell, e recebe um número de processo. Neste instante, o processo pai, que é o processo associado ao seu shell, se torna inativo e dizemos que está dormindo ( sleeping ).

8

Page 87: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

O processo associado ao comando que você está executando é chamado de processo corrente. Ao terminar de executar o comando este processo "morre", e o seu processo pai reassume o controle - este é o processo associado ao seu shell. Quando nenhum comando está sendo executado, o processo corrente é o associado ao seu shell.

Você pode listar todos os seus processos que estão rodando em um determinado momento, usando o comando ps, que veremos logo mais adiante, e daí descobrir o número de um determinado processo (o process - id ou PID), que é a informação mais importante para você controlá-lo.

8.4Executando um comando/programa

Para executar um comando, é necessário que ele tenha permissões de execução.

No aviso de comando #(root) ou $(usuário), digite o nome do comando e tecle Enter. O programa/comando é executado e receberá um número de identificação (chamado de PID - Process Identification), este número é útil para identificar o processo no sistema e assim ter um controle sobre sua execução (será visto mais adiante neste capítulo).

Todo o programa recebe uma identificação de usuário (UID) quando é executado o que determina quais serão suas permissões de acesso durante sua execução. O programa normalmente usa o UID do usuário que o executou ou o usuário configurado pelo bit de permissão de acesso SUID caso estiver definido. Existem também programas que são executados como root e modificam sua identificação de usuário para algum que tenha menos privilégios no sistema (como o Apache, por exemplo). Todo o programa executado no GNU/Linux roda sob o controle das permissões de acesso.

Exemplos de comandos: ls, df, pwd.

8.5 path

Path é o caminho de procura dos arquivos/comandos executáveis. O path (caminho) é armazenado na variável de ambiente PATH. Você pode ver o conteúdo desta variável com o comando echo $PATH.

Por exemplo, o caminho /usr/local/bin:/usr/bin:/bin:/usr/bin/X11 significa que se você digitar o comando ls, o interpretador de comandos iniciará a procura do programa ls no diretório /usr/local/bin, caso não encontre o arquivo no diretório /usr/local/bin ele inicia a procura em /usr/bin, até que encontre o arquivo procurado.

Caso o interpretador de comandos chegue até o último diretório do path e não encontre o arquivo/comando digitado, é mostrada a seguinte mensagem:

bash: ls: command not found (comando não encontrado). O caminho de diretórios vem configurado na instalação do

Linux, mas pode ser alterado no arquivo /etc/profile. Caso deseje alterar o caminho para todos os usuários, este arquivo é o melhor lugar, pois ele é lido por todos os usuários no momento do login.

8

Page 88: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Caso um arquivo/comando não esteja localizado em nenhum dos diretórios do path, você deve executá-lo usando um ./ na frente do comando.

Se deseja alterar o path para um único usuário, modifique o arquivo .bash_profile em seu diretório de usuário (home).

OBSERVAÇÃO: Por motivos de segurança, não inclua o diretório atual $PWD no path.

8.6 Tipos de Execução de comandos/programas

Um programa pode ser executado de duas formas: Primeiro Plano - Também chamado de foreground. Quando você

deve esperar o término da execução de um programa para executar um novo comando. Somente é mostrado o aviso de comando após o término de execução do comando/programa.

Segundo Plano - Também chamado de background. Quando você não precisa esperar o término da execução de um programa para executar um novo comando. Após iniciar um programa em background , é mostrado um número PID (identificação do Processo) e o aviso de comando é novamente mostrado, permitindo o uso normal do sistema.

O programa executado em background continua sendo executado internamente. Após ser concluído, o sistema retorna uma mensagem de pronto acompanhado do número PID do processo que terminou.

Para iniciar um programa em primeiro plano, basta digitar seu nome normalmente. Para iniciar um programa em segundo plano, acrescente o caractere "&" após o final do comando.

OBS: Mesmo que um usuário execute um programa em segundo plano e saia do sistema, o programa continuará sendo executado até que seja concluído ou finalizado pelo usuário que iniciou a execução (ou pelo usuário root).

Exemplo: find / -name boot.b & O comando será executado em segundo plano e deixará o

sistema livre para outras tarefas. Após o comando find terminar, será mostrada uma mensagem.

8.7 Executando comandos/programas em seqüência

Quando uma linha do comando é informada, a shell cria um processo para executar o comando e passa para o estado sleeping até o processo se encerrar, devolvendo o controle ao processo da shell. O usuário não pode iniciar outros comandos enquanto o processo corrente estiver em execução. Ao invés de informar comandos separadamente e aguardar a vez de cada um ser executado, múltiplos comandos podem ser informados em uma única linha do comando, utilizando um ponto e vírgula (;) como separador entre os comandos.

O ponto e vírgula (;) permite a execução serial de múltiplos comandos em uma única linha do comando. Cada comando é separado do próximo por ponto e vírgula. O <ENTER> assinala o fim da linha do comando. Os espaços antes e depois do ponto e vírgula não são importantes, embora sejam geralmente utilizados por

8

Page 89: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

convenção. Os comandos são executados na sequência especificada na linha do comando.Por exemplo: $ who ; date > arq

guest tty1 May 20 09:56$ cat arqMon May 20 10:10:28 WST 1996$

8.8Agrupando comandos

Múltiplos comandos podem também serem agrupados quando colocados entre parênteses ( ). O ponto e vírgula ainda é utilizado para separar os comandos. O shell trata cada grupo de comandos entre parênteses como uma tarefa simples e divide os processos filhos quando necessário. A ordem da execução do programa é mantida. O agrupamento de comandos é geralmente utilizado quando se deseja saída combinada de múltiplos comandos.Por exemplo: $ ( who ; date ) > arq

$ cat arqguest tty1 May 20 09:56Mon May 20 10:10:28 WST 1996$

8.9foreground e "background"

Tipicamente, o shell permanece inativo durante a execução de um comando. Não podendo ser executado outro comando enquanto o comando anterior não tenha sido concluído e o shell exiba outro prompt do comando. Esta maneira de executar os comandos é chamada de execução em foreground. Nesta modalidade um programa que leva muito tempo para ser executado resulta na diminuição de produtividade, uma vez que o usuário aguarda o encerramento do programa, para somente depois executar outro comando ou programa.

Como alternativa, os comandos podem ser executados em background. Que é uma maneira de executar comandos que permite que o programa seja executado (em background, ou "em bg"), sem indisponibilizar o shell, onde você pode continuar executando comandos ou programas e foreground. A execução em background é geralmente utilizada em programas que levam muito tempo para serem executados. O símbolo & ao final de um comando leva o shell a executar o comando em background. O PID (número de identificação do processo) é exibido automaticamente, indicando que o processo foi iniciado, e em seguida é apresentado um novo prompt do shell. O processo em background é executado quando a carga de serviço do sistema permite. A saída do processo continua sendo enviada à saída padrão, a menos que seja redirecionada para um arquivo, por exemplo, o que é frequentemente utilizado.

Exemplo: Procure a partir da raiz, todos os arquivos com extensão .c, desvie os erros para find.erro e a resposta para find.resp. Execute em background:

$ ( find / -name *.c > find.resp 2> find.erro )& [ 1 ] 220$

8

Page 90: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

8.10 ps – Consultando informações sobre os processos

Algumas vezes é útil ver quais processos estão sendo executados no computador. O comando ps exibe informações sobre processos ativos de acordo com as opções selecionadas. Os cabeçalhos de colunas de informações apresentadas dependem das opções especificadas. Por exemplo, a opção - f exibe oito colunas de informações; a opção - l exibe 15 colunas. As descrições de cada coluna estão abaixo. Podem ser combinadas múltiplas opções. Algumas opções aceitam listas de parâmetros. Se não forem especificadas opções, são exibidas informações sobre processos rodando debaixo da identificação do usuário e associados apenas ao terminal corrente. A saída, neste caso, contém a identificação do processo, identificador do terminal, tempo de execução cumulativo e nome do comando.

ps [opções]

Onde: opções -a Mostra os processos criados por você e de outros usuários do sistema. -x Mostra processos que não são controlados pelo terminal. -u Mostra o nome de usuário que iniciou o processo e hora em

que o processo foi iniciado. -m Mostra a memória ocupada por cada processo em execução. -f Mostra a árvore de execução de comandos (comandos que são

chamados por outros comandos).-l Exibe uma lista com 15 colunas de informações;-t term Exibe informações de processos para o terminal

especificado;-e Mostra variáveis de ambiente no momento da inicialização do processo. -w Mostra a continuação da linha atual na próxima linha ao invés

de cortar o restante que não couber na tela. --sort:[coluna] Organiza a saída do comando ps de acordo com a

coluna escolhida. Você pode usar as colunas pid, utime, ppid, rss, size, user, priority. Pode ser especificada uma listagem em ordem inversa especificando --sort:[-coluna].

Cabeçalhos da Coluna:F Valor em octal que dá maiores informações sobre a situação

corrente do processo;S Nesta coluna é apresentado o estado do processo, conforme a seguir:

O - Não existente;S - Adormecido (sleeping); R - Rodando (running);I - Intermediário; Z - Interrompido;T - Terminado;B - Esperando (blocked);

9

Page 91: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

UID Identificação do usuário proprietário do processo;PID Identificação do processo;PPID Identificação do processo pai;C Taxa de utilização do processador (CPU);PRI Prioridade do processo (valores mais altos indicam prioridades

mais baixas);NI Valor utilizado na computação da prioridade. Pode ser atribuído

pelo usuário, através do comando nice;ADDR Endereço da memória do processo;SZ Tamanho do processo (em páginas ou blocos) na memória;WCHAN Evento pelo qual o processo está esperando, e por isso

está em sleeping ou em waiting. Se estiver em branco, o processo está em execução;

STIME Hora do início da execução do processo;TTY Terminal controlador;TIME Tempo de execução cumulativo do processo;CMD Nome do comando e argumentos associados ao processo;

As opções acima podem ser combinadas para resultar em uma listagem mais completa. Você também pode usar pipes "|" para filtrar a saída do comando ps.

Ao contrário de outros comandos, o comando ps não precisa do hífen "-" para especificar os comandos. Isto porque ele não utiliza opções longas e não usa parâmetros.

Exemplos: $ ps ax|grep inetd$ ps auxf$ ps auxw

1- Mostre o status dos processos:$ psPID TTY STAT TIME COMMAND152 v01 S 0:00 - bash225 v01 R 0:00 ps

2- Mostre o status dos processos do usuário guest:$ ps - u guestUSER PID %CPU %MEM SIZE RSS TTY STAT START TIME

COMMAND528 152 0.0 1.6 368 532 v01 S 09:47 0:00 -bash528 226 0.0 0.6 73 216 v01 R 19:15 0:00 ps

Notas: As opções e colunas aqui descritas podem variar para alguns sistemas.

8.11 top - Consultando informações dinamicamente

Mostra os programas em execução ativos, parados, tempo usado na CPU, detalhes sobre o uso da memória RAM, Swap, disponibilidade para execução de programas no sistema, etc.

O comando top nos dá a mesma saída do ps, porém fica permanentemente exibindo os processos em execução em seu computador, os recursos utilizados por eles e atualizando-os regularmente em intervalos de 5 segundos por padrão. Para sair do top, pressione a tecla q.

top [opções]

9

Page 92: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Onde: -d [tempo] Atualiza a tela após o [tempo] (em segundos). -s Diz ao top para ser executado em modo seguro. -i Inicia o top ignorando o tempo de processos zumbis. -c Mostra a linha de comando ao invés do nome do programa.

A ajuda sobre o top pode ser obtida dentro do programa pressionando a tecla h ou pela página de manual (man top).

Abaixo algumas teclas úteis: Espaço Atualiza imediatamente a tela. CTRL+L Apaga e atualiza a tela. h Mostra a tela de ajuda do programa. É mostrada toda a tecla

que podem ser usadas com o top. i Ignora o tempo ocioso de processos zumbis. q Sai do programa. k Finaliza um processo - semelhante ao comando kill. Você será

perguntado pelo número de identificação do processo (PID). Este comando não estará disponível caso esteja usando o top com a opção -s.

n Muda o número de linhas mostradas na tela. Se 0 for especificado, será usada toda a tela para listagem de processos.

8.12 Controle de execução de processos

Abaixo alguns comandos e métodos úteis para o controle da execução de processos no GNU/Linux.

8.12.1 Interrompendo a execução de um processo

Para cancelar a execução de algum processo rodando em primeiro plano, basta pressionar as teclas CTRL+C. A execução do programa será cancelada e será mostrado o aviso de comando. Você também pode usar o comando kill, para interromper um processo sendo executado.

8.12.2 Parando momentaneamente a execução de um processo

Para parar a execução de um processo rodando em primeiro plano, basta pressionar as teclas CTRL+Z. O programa em execução será pausado e será mostrado o número de seu job e o aviso de comando.

Para retornar a execução de um comando pausado, use fg ou bg.

O programa permanece na memória no ponto de processamento em que parou quando ele é interrompido. Você pode usar outros comandos ou rodar outros programas enquanto o programa atual está interrompido.

8.12.3 jobs

Job é qualquer seqüência de comandos. O recurso de controle de job permite ao usuário suspender, reiniciar ou encerrar jobs,

9

Page 93: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

como também mudar jobs entre a execução em background e foreground.

Os jobs apresentam os seguintes estados :Foreground: O job é processado imediatamente antes do controle

retornar ao shell e outro prompt do shell seja exibido.

Background: O job é executado e o shell retorna imediatamente o controle ao usuário enquanto o sistema continua a processar o job.

Interrompido (Suspenso):É o job que está parado temporariamente. Este job pode ser reiniciado ou encerrado.

Concluído (Killed): Job que está parado e concluído. Este job não pode ser reiniciado.

jobs [-opções] Lista o status de todos os jobs.

Opções :-l Lista completa de todos os jobs incluindo PDIs-p Exibe somente PDIs associados com jobs em execução.fg id_job Coloca o job em foreground<^z> Suspende job em foregroundbg id_job Coloca o job indicado em background stop id_job Suspende o job indicado em background kill id_job Encerra o job indicado

O número de identificação de cada processo parado ou em segundo plano (job), é usado com os comandos fg e bg. Um processo interrompido pode ser finalizado usando-se o comando kill %[num], onde [num] é o número do processo obtido pelo comando jobs. Exemplos:1-Execute um job em background. Observe o que a identificação do job e o número do PID são exibidos :

$ sleep 300& [ 1 ] 3105

2-Liste os jobs correntes. A saída do comando inclui o número do job entre [ ], o status do job (corrente,anterior,em execução, interrompido,concluído) e a linha do comando. O sinal ( + ) após o número do job indica o job corrente; o sinal ( - ) indica o job anterior..

$ jobs [ 1 ]+ running sleep 300&

3-Mude o job para foreground utilizando o número do job :$ fg %sleep

4-Suspenda o job em foreground corrente. Observe o status Stopped no display:

<CTRL z >[ 1 ]+Stopped sleep 300&

5-Mude o job contendo a sequência de caracteres “sleep” para background:

$ bg %sleep[ 1 ] sleep 300&

8.12.4 fg - foreground

9

Page 94: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Permite fazer um programa rodando em segundo plano ou parado, rodar em primeiro plano. Você deve usar o comando jobs para pegar o número do processo rodando em segundo plano ou interrompida, este número será passado ao comando fg para ativá-lo em primeiro plano.

fg [número]

Onde número é o número obtido através do comando jobs. Caso seja usado sem parâmetros, o fg utilizará o último

programa interrompido (o maior número obtido com o comando jobs). Exemplo: fg 1.

8.12.5 bg - background

Permite fazer um programa rodando em primeiro plano ou parado, rodar em segundo plano. Para fazer um programa em primeiro plano rodar em segundo, é necessário primeiro interromper a execução do comando com CTRL+ Z, será mostrado o número da tarefa interrompida, use este número com o comando bg para iniciar a execução do comando em segundo plano.

bg [número]

Onde: número é o número do programa obtido com o pressionamento das teclas CTRL+Z ou através do comando jobs.

8.12.6 kill

Depois que um processo está em execução, independente de seu estado podemos ter a necessidade de interrompê-lo. A esta ação chamamos de “matar” um processo, e o comando que utilizamos para isto é o kill.

O comando kill permite enviar “sinais” que alteram o comportamento do processo em um determinado momento. Podemos utilizar a flag “-l” para que o comando kill nos forneça a relação completa dos sinais disponíveis e o número correspondente de cada um deles.

kill [opções] [sinal] [número]

Onde: número É o número de identificação do processo obtido com o

comando ps. Também pode ser o número após o sinal de % obtido pelo comando jobs para matar uma tarefa interrompida.

sinal Sinal que será enviado ao processo. Se omitido usa -15 como padrão. opções -9 Envia um sinal de destruição ao processo ou programa. Ele é

terminado imediatamente sem chances de salvar os dados ou apagar os arquivos temporários criados por ele.

-l Enumera os nomes dos sinais Você precisa ser o dono do processo ou o usuário root para

terminá-lo ou destruí-lo. Você pode verificar se o processo foi

9

Page 95: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

finalizado através do comando ps. Os tipos de sinais aceitos pelo GNU/Linux são explicados em detalhes em Sinais do Sistema.Exemplo:

$ psPID TTY STAT TIME COMMAND152 v01 S 0:00 bash230 v01 R 0:00 ps231 v01 S 0:00 sleep 30$ kill 231$ psPID TTY STAT TIME COMMAND152 v01 S 0:00 bash230 v01 R 0:00 ps[ 1 ]+Terminated sleep 30$

8.12.7 killall

Tem a mesma funcionalidade do comando kill, porém pode ser utilizado para atuar em vários processos ao mesmo tempo e permite finalizar processos através do nome.

killall [opções] [sinal] [processo]

Onde: processo Nome do processo que deseja finalizar sinal Sinal que será enviado ao processo (pode ser obtido usando a opção -i). opções -i Pede confirmação sobre a finalização do processo. -l Lista o nome de todos os sinais conhecidos. -q Ignora a existência do processo. -v Retorna se o sinal foi enviado com sucesso ao processo. -w Finaliza a execução do killall somente após finalizar todos os processos.

Os tipos de sinais aceitos pelo GNU/Linux são explicados em detalhes em Sinais do Sistema. Exemplo: killall -HUP inetd

8.12.8 Fechando um programa quando não se sabe como sair

Muitas vezes quando se esta iniciando no GNU/Linux você pode executar um programa e talvez não saber como fechá-lo. Este capítulo do guia pretende ajudá-lo a resolver este tipo de problema.

Isto pode também ocorrer com programadores que estão construindo seus programas e por algum motivo não implementam uma opção de saída, ou ela não funciona!

Em nosso exemplo vou supor que executamos um programa em desenvolvimento com o nome contagem que conta o tempo em segundos a partir do momento que é executado, mas que o

9

Page 96: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

programador esqueceu de colocar uma opção de saída. Siga estas dicas para finalizá-lo:

Normalmente todos os programas UNIX (o GNU/Linux também é um Sistema Operacional baseado no UNIX) podem ser interrompidos com o pressionamento das teclas <CTRL> e <C>. Tente isto primeiro para finalizar um programa. Isto provavelmente não vai funcionar se estiver usando um Editor de Texto (ele vai entender como um comando de menu). Isto normalmente funciona para comandos que são executados e terminados sem a intervenção do usuário.

Caso isto não der certo, vamos partir para a força! Mude para um novo console (pressionando <ALT> e <F2>), e

faça o login como usuário root . Localize o PID (número de identificação do processo) usando o

comando: ps ax, aparecerão várias linhas cada uma com o número do processo na primeira coluna, e a linha de comando do programa na última coluna. Caso aparecerem vários processos você pode usar ps ax|grep contagem, neste caso o grep fará uma filtragem da saída do comando ps ax mostrando somente as linhas que tem a palavra "contagem". Para maiores detalhes, veja o comando grep.

Feche o processo usando o comando kill PID, lembre-se de substituir PID pelo número encontrado pelo comando ps ax acima.

O comando acima envia um sinal de término de execução para o processo (neste caso o programa contagem). O sinal de término mantém a chance do programa salvar seus dados ou apagar os arquivos temporários que criou e então ser finalizado, isto depende do programa.

Alterne para o console onde estava executando o programa contagem e verifique se ele ainda está em execução. Se ele estiver parado mas o aviso de comando não está disponível, pressione a tecla <ENTER>. Freqüentemente acontece isto com o comando kill, você finaliza um programa mas o aviso de comando não é mostrado até que se pressione <ENTER>.

Caso o programa ainda não foi finalizado, repita o comando kill usando a opção -9: kill -9 PID. Este comando envia um sinal de DESTRUIÇÃO do processo, fazendo-o terminar "na marra"!

Uma última dica: todos os programas estáveis (todos que acompanham as boas distribuições GNU/Linux) têm sua opção de saída. Lembre-se que quando finaliza um processo todos os dados do programa em execução podem ser perdidos (principalmente se estiver em um editor de textos), mesmo usando o kill sem o parâmetro -9.

Procure a opção de saída de um programa consultando o help on line, às páginas de manual, a documentação que acompanha o programa, info pages.

8.12.9 Eliminando caracteres estranhos

As vezes quando um programa mal comportado é finalizado ou quando você visualiza um arquivo binário através do comando cat, é possível que o aviso de comando (prompt) volte com caracteres estranhos.

9

Page 97: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

Para fazer tudo voltar ao normal, basta digitar reset e teclar ENTER. Não se preocupe, o comando reset não reiniciará seu computador (como o botão reset do seu computador faz), ele apenas fará tudo voltar ao normal.

Note que enquanto você digitar reset aparecerão caracteres estranhos ao invés das letras. Não se preocupe! Basta digitar corretamente e bater ENTER e o aviso de comando voltará ao normal.

9 Compactadores Esta seção explica o que são e como usar programas

compactadores no GNU/Linux, as características de cada um, como identificar um arquivo compactado e como descompactar um arquivo compactado usando o programa correspondente.

A utilização de arquivos compactados é método útil principalmente para reduzir o consumo de espaço em disco ou permitir grandes quantidades de texto serem transferidas para outro computador através de disquetes.

9.1O que fazem os compactadores/descompactadores?

Compactadores são programas que diminuem o tamanho de um arquivo (ou arquivos) através da substituição de caracteres repetidos. Para entender melhor como eles funcionam, veja o próximo exemplo:

compactadores compactam e deixam arquivos compactados.

-- após a compactação da frase --

9

Page 98: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

%dores %m e deixam arquivos %dosO que aconteceu realmente foi que a palavra compacta se

encontrava 3 vezes na frase acima, e foi substituída por um sinal de %. Para descompactar o processo seria o contrário: Ele substituiria % por compacta e nós temos a frase novamente restaurada.

Você deve ter notado que o tamanho da frase compactada caiu quase pela metade. A quantidade de compactação de um arquivo é chamada de taxa de compactação. Assim se o tamanho do arquivo for diminuído a metade após a compactação, dizemos que conseguiu uma taxa de compactação de 2:1 (lê-se dois para um), se o arquivo diminuiu 4 vezes, dizemos que conseguiu uma compactação de 4:1 (quatro para um) e assim por diante.

Para controle dos caracteres que são usados nas substituições, os programas de compactação mantém cabeçalhos com todas as substituições usadas durante a compactação. O tamanho do cabeçalho pode ser fixo ou definido pelo usuário, depende do programa usado na compactação.

Este é um exemplo bem simples para entender o que acontece durante a compactação, os programas de compactação executam instruções muito avançadas e códigos complexos para atingir um alta taxa de compactação.

Observações: Não é possível trabalhar diretamente com arquivos

compactados! É necessário descompactar o arquivo para usá-lo. Note que alguns programas atualmente suportam a abertura de arquivos compactados, mas na realidade eles apenas simplificam a tarefa descompactando o arquivo, abrindo e o recompactando assim que o trabalho estiver concluído.

Arquivos de texto têm uma taxa de compactação muito melhor que arquivos binários, porque possuem mais caracteres repetidos. É normal atingir taxas de compactação de 10 para 1 ou mais quando se compacta um arquivo texto. Arquivos binários, como programas, possuem uma taxa de compactação média de 2:1.

Note que também existem programas compactadores especialmente desenvolvidos para compactação de músicas, arquivos binários, imagens, textos.

9.2Tipos de compactação

Existem basicamente dois tipos de compactação, a compactação sem perdas e a compactação com perdas.

Os exemplos a seguir tentam explicar de forma simples os conceitos envolvidos.

A compactação sem perdas, como o próprio nome diz não causa nenhuma perda nas informações contidas no arquivo. Quando você compacta e descompacta um arquivo, o conteúdo é o mesmo do original.

A compactação com perdas é um tipo específico de compactação desenvolvido para atingir altas taxas, porém com perdas parciais dos dados. É aplicada a tipos de arquivos especiais,

9

Page 99: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

como músicas e imagens ou arquivos que envolvam a percepção humana.

Sabe-se que o ouvido humano não é tão sensível a determinados sons e freqüências, então a compactação de um arquivo de música poderia deixar de gravar os sons que seriam pouco percebidos, resultando em um arquivo menor. Uma compactação do tipo ogg ou mp3 utiliza-se destes recursos. O arquivo resultante é muito menor que o original, porém alguns dados sonoros são perdidos. Você só notaria se estivesse reproduzindo a música em um equipamento de alta qualidade e se tivesse um ouvido bem aguçado. Para efeitos práticos, você está ouvindo a mesma música e economizando muito espaço em disco.

Outro exemplo de compactação com perdas são as imagens jpg. Imagine que você tem uma imagem com 60000 tons de cor diferentes, mas alguns tons são muito próximos de outros, então o compactador resume para 20000 tons de cor e a imagem terá 1/3 do tamanho original e o nosso olho conseguirá entender a imagem sem problemas e quase não perceberá a diferença. Exemplos de extensões utilizadas em imagens compactadas são jpg, png, gif.

Apesar das vantagens da grande taxa de compactação conseguida nos processos com perdas, nem sempre podemos utilizá-lo. Quando compactamos um texto ou um programa, não podemos ter perdas, senão o nosso texto sofre alterações ou o programa não executa. Nem mesmo podemos tem perdas quando compactamos imagens ou musicas que serão utilizadas em processos posteriores de masterização, mixagem ou impressão em alta qualidade.

9.3 Extensões de arquivos compactados

As extensões identificam o tipo de um arquivo e assim o programa o programa necessário para trabalhar com aquele tipo de arquivo. Existem dezenas de extensões que identificam arquivos compactados. Quando um arquivo (ou arquivos) é compactado, uma extensão correspondente ao programa usado é adicionada ao nome do arquivo (caso o arquivo seja compactado pelo gzip receberá a extensão .gz, por exemplo). Ao descompactar acontece o contrário: a extensão é retirada do arquivo. Abaixo segue uma listagem de extensões mais usadas e os programas correspondentes:• .gz Arquivo compactado pelo gzip. Use o programa gzip para

descompactá-lo.• .bz2 Arquivo compactado pelo bzip2. Use o programa bzip2

para descompactá-lo.• .Z Arquivo compactado pelo programa compress. Use o programa

uncompress para descompactá-lo. • .zip Arquivo compactado pelo programa zip. Use o programa

unzip para descompactá-lo. • .rar Arquivo compactado pelo programa rar. Use o programa

rar para descompactá-lo. • .tar.gz Arquivo compactado pelo programa gzip no utilitário de

arquivamento tar. Para descompactá-lo, você pode usar o gzip e depois o tar ou somente o programa tar usando a opção -z.

• .tgz Abreviação de .tar.gz. • .tar.bz2 Arquivo compactado pelo programa bzip2 no

utilitário de arquivamento tar. Para descompactá-lo, você pode 9

Page 100: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

usar o bzip2 e depois o tar ou somente o programa tar usando a opção -j.

• .tar.Z Arquivo compactado pelo programa compress no utilitário de arquivamento tar. Para descompactá-lo, você pode usar o uncompress e depois o tar ou somente o programa tar usando a opção -Z.

9.4 gzip

É praticamente o compactador padrão do GNU/Linux, possui uma ótima taxa de compactação e velocidade. A extensão dos arquivos compactados pelo gzip é a .gz, na versão para DOS, Windows NT é usada a extensão .z.

gzip [opções] [arquivos]

Onde: arquivos Especifica quais arquivos serão compactados pelo gzip.

Caso seja usado um -, será assumido a entrada padrão. Curingas podem ser usados para especificar vários arquivos de uma só vez.

Opções -d [arquivo] Descompacta um arquivo. -f Força a compactação, compactando até mesmo links. -l [arquivo] Lista o conteúdo de um arquivo compactado pelo gzip. -r Compacta diretórios e subdiretórios. -c [arquivo] Descompacta o arquivo para a saída padrão. -t [arquivo] Testa o arquivo compactado pelo gzip. -[num], --fast, --best Ajustam a taxa de compactação/velocidade

da compactação. Quanto melhor a taxa menor é a velocidade de compactação e vice-versa. A opção --fast permite uma compactação rápida e tamanho do arquivo maior. A opção --best permite uma melhor compactação e uma velocidade menor. O uso da opção -[número] permite especificar uma compactação individualmente usando números entre 1 (menor compactação) e 9 (melhor compactação). É útil para buscar um bom equilibro entre taxa de compactação/velocidade (especialmente em computadores muito lentos). Quando um arquivo é compactado pelo gzip, é

automaticamente acrescentada a extensão .gz ao seu nome. O gzip também reconhece arquivos compactados pelos

programas zip, compress, compress -H e pack. As permissões de acesso dos arquivos são também armazenadas no arquivo compactado.

Exemplos: gzip -9 texto.txt - Compacta o arquivo texto.txt usando a

compactação máxima (compare o tamanho do arquivo compactado usando o comando ls -la).

gzip -d texto.txt.gz - Descompacta o arquivo texto.txt gzip -c texto.txt.gz - Descompacta o arquivo texto.txt para a tela gzip -9 *.txt - Compacta todos os arquivos que terminam com .txt gzip -t texto.txt.gz - Verifica o arquivo texto.txt.gz.

1

Page 101: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

9.5 zip

Utilitário de compactação compatível com pkzip (do DOS) e trabalha com arquivos de extensão .zip. Possui uma ótima taxa de compactação e velocidade no processamento dos arquivos compactados (comparando-se ao gzip).

zip [opções] [arquivo-destino] [arquivos-origem]

Onde: arquivo-destino Nome do arquivo compactado que será gerado. arquivos-origem Arquivos/Diretórios que serão compactados.

Podem ser usados curingas para especificar mais de um arquivo de uma só vez

opções -r Compacta arquivos e subdiretórios. -e Permite encriptar o conteúdo de um arquivo .zip através de

senha. A senha será pedida no momento da compactação. -f Somente substitui um arquivo compactado existente dentro do

arquivo .zip somente se a versão é mais nova que a atual. Não acrescenta arquivos ao arquivo compactado. Deve ser executado no mesmo diretório onde o programa zip foi executado anteriormente.

-F Repara um arquivo .zip danificado. -[NUM] Ajusta a qualidade/velocidade da compactação. Pode ser

especificado um número de 1 a 9. O 1 permite mínima compactação e máxima velocidade, 9 permite uma melhor compactação e menor velocidade.

-i [arquivos] Compacta somente os [arquivos] especificados. -j Se especificado, não armazena caminhos de diretórios. -m Apaga os arquivos originais após a compactação. -T [arquivo] Procura por erros em um arquivo .zip. Caso sejam

detectados problemas, utilize a opção -F para corrigi- los. -y Armazena links simbólicos no arquivo .zip. Por padrão, os links

simbólicos são ignorados durante a compactação. -k [arquivo] Modifica o [arquivo] para ter compatibilidade total

com o pkzip do DOS. -n [extensão] Não compacta arquivos identificados por [extensão].

Ele é armazenado sem compactação no arquivo .zip, muito útil para uso com arquivos já compactados. Caso sejam especificadas diversas extensões de arquivos, elas devem ser separadas por: - Por exemplo, zip -n .zip:.tgz arquivo.zip *.txt.

-q Não mostra mensagens durante a compactação do arquivo. -u Atualiza/adiciona arquivos ao arquivo .zip -X Não armazena detalhes de permissões, UID, GID e datas dos arquivos. -z Permite incluir um comentário no arquivo .zip.

Caso o nome de arquivo de destino não termine com .zip, esta extensão será automaticamente adicionada. Para a descompactação de arquivos .zip no GNU/Linux, é necessário o uso do utilitário unzip.

Exemplos: zip textos.zip *.txt Compacta todos os arquivos com a extensão .txt

para o arquivo textos.zip (compare o tamanho do arquivo compactado digitando ls -la).

1

Page 102: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

zip -r textos.zip /usr/*.txt Compacta todos os arquivos com a extensão .txt do diretório /usr e sub-diretórios para o arquivo textos.zip.

zip -9 textos.zip * Compacta todos os arquivos do diretório atual usando a compactação máxima para o arquivo textos.zip.

zip -T textos.zip Verifica se o arquivo textos.zip contém erros.

9.6 unzip

Descompacta arquivos .zip criados com o programa zip. Este programa também é compatível com arquivos compactados pelo pkzip do DOS.

unzip [opções] [arquivo.zip] [arquivos-extrair] [-d diretório]

Onde: arquivo.zip Nome do arquivo que deseja descompactar.

Podem ser usados curingas para especificar mais de um arquivo para ser descompactado.

arquivos-extrair Nome dos arquivos (separados por espaço) que serão descompactados do arquivo .zip. Caso não seja especificado, é assumido * (todos os arquivos serão descompactados). Se for usado -x arquivos, os arquivos especificados não serão descompactados. O uso de curingas é permitido.

-d diretório Diretório onde os arquivos serão descompactados. Caso não for especificado, os arquivos serão descompactados no diretório atual.

opções -c Descompacta os arquivos para stdout (saída padrão) ao invés

de criar arquivos. Os nomes dos arquivos também são mostrados (veja a opção -p).

-f Descompacta somente arquivos que existam no disco e mais novos que os atuais.

-l Lista os arquivos existentes dentro do arquivo .zip. -M Efetua uma pausa a cada tela de dados durante o

processamento (a mesma função do comando more). -n Nunca substitui arquivos já existentes. Se um arquivo existe

ele é pulado. -o Substitui arquivos existentes sem perguntar. Tem a função

contrária a opção -n. -P [SENHA] Permite descompactar arquivos .zip usando a

[SENHA]. CUIDADO! qualquer usuário conectado em seu sistema pode ver a senha digitada na linha de comando digitada.

-p Descompacta os arquivos para stdout (saída padrão) ao invés de criar arquivos. Os nomes dos arquivos não são mostrados (veja a opção -c).

-q Não mostra mensagens. -t Verifica o arquivo .zip em busca de erros. -u Idêntico a opção -f só que também cria arquivos que não

existem no diretório. -v Mostra mais detalhes sobre o processamento do unzip.

1

Page 103: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

-z Mostra somente o comentário existente no arquivo. Por padrão o unzip também descompacta sub-diretórios caso o arquivo .zip tenha sido gerado com zip -r.

Exemplos: unzip texto.zip Descompacta o conteúdo do arquivo texto.zip

no diretório atual. unzip texto.zip carta.txt Descompacta somente o arquivo carta.txt

do arquivo texto.zip. unzip texto.zip -d /tmp/texto Descompacta o conteúdo do arquivo

texto.zip para o diretório /tmp/texto. unzip -l texto.zip Lista o conteúdo do arquivo texto.zip. unzip -t texto.zip Verifica o arquivo texto.zip.

9.7 tar

Na verdade o tar não é um compactador e sim um "arquivador" (ele junta vários arquivos em um só), mas pode ser usado em conjunto com um compactar (como o gzip ou zip) para armazená-los compactados. O tar também é muito usado para cópias de arquivos especiais ou dispositivos do sistema. É comum encontrar arquivos com a extensão .tar, .tar.gz, .tgz, .tar.bz2, .tar.Z, .tgZ, o primeiro é um arquivo normal gerado pelo tar e todos os outros são arquivos gerados através tar junto com um programa de compactação (gzip (.gz), bzip2 (.bz2) e compress (.Z).

tar [opções] [arquivo-destino] [arquivos-origem]

Onde: arquivo-destino É o nome do arquivo de destino. Normalmente

especificado com a extensão .tar caso seja usado somente o arquivamento ou .tar.gz/.tgz caso seja usada a compactação (usando a opção -z).

arquivos-origem Especifica quais arquivos/diretórios serão compactados. opções -c Cria um novo arquivo .tar -t Lista o conteúdo de um arquivo .tar -u Atualiza arquivos compactados no arquivo .tar -j Usa o programa bzip2 para processar os arquivos do tar -M, --multi-volume Cria/lista/descompacta arquivos em múltiplos

volumes. O uso de arquivos em múltiplos volumes permite que uma grande cópia de arquivos que não cabe em um disquete, por exemplo, seja feita em mais de um disquete.

-O Descompacta arquivos para a saída padrão ao invés de gravar em um arquivo.

--remove-files Apaga os arquivos de origem após serem processados pelo tar.

-W Tenta verificar o arquivo gerado pelo tar após grava-lo. x Extrai arquivos gerados pelo tar -X [ARQUIVO] Tenta apagar o [ARQUIVO] dentro de um arquivo

compactado .tar. -Z Usa o programa compress durante o processamento dos arquivos. -z Usa o programa gzip durante o processamento dos arquivos.

1

Page 104: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

A extensão precisa ser especificada no arquivo de destino para a identificação correta: • Arquivos gerados pelo tar precisam ter a extensão .tar • Caso seja usada a opção -j para compactação, a extensão deverá

ser .tar.bz2 • Caso seja usada a opção -z para compactação, a extensão deverá

ser .tar.gz ou .tgz • Caso seja usada a opção -Z para a compactação, a extensão

deverá ser .tar.Z ou .tgZ É importante saber qual o tipo de compactador usado durante

a geração do arquivo .tar pois será necessário especificar a opção apropriada para descompacta-lo

Exemplos: tar -cf index.txt.tar index.txt Cria um arquivo chamado

index.txt.tar que armazenará o arquivo index.txt. Você pode notar digitando ls -la que o arquivo index.txt foi somente arquivado (sem compactação), isto é útil para juntar diversos arquivos em um só.

tar -xf index.txt.tar Desarquiva o arquivo index.txt criado pelo comando acima.

tar -czf index.txt.tar.gz index.txt O mesmo que o exemplo de arquivamento anterior, só que agora é usado a opção -z (compactação através do programa gzip). Você agora pode notar digitando ls -la que o arquivo index.txt foi compactado e depois arquivado no arquivo index.txt.tar.gz (você também pode chama-lo de index.txt.tgz que também identifica um arquivo .tar compactado pelo gzip)

tar -xzf index.txt.tar.gz Descompacta e desarquiva o arquivo index.txt.tar.gz criado com o comando acima.

gzip -dc index.tar.gz | tar -xf Faz o mesmo que o comando acima só que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.gz e envia a saída do arquivo descompactado para o tar que desarquivará o arquivo index.txt.

tar -cjf index.txt.tar.bz2 index.txt Arquiva o arquivo index.txt em index.txt.tar.bz2 compactando através do bzip2 (opção -j).

tar -xjf index.txt.tar.bz2 Descompacta e desarquiva o arquivo index.txt.tar.bz2 criado com o comando acima.

bzip2 -dc index.txt.tar.bz2 | tar -xf Faz o mesmo que o comando acima só que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.bz2 e envia a saída do arquivo descompactado para o tar que desarquivará o arquivo index.txt.

tar -t index.txt.tar Lista o conteúdo de um arquivo .tar. tar -tz index.txt.tar.gz Lista o conteúdo de um arquivo

.tar.gz.

9.8 bzip2

É um novo compactador que vem sendo cada vez mais usado porque consegue atingir a melhor compactação em arquivos texto

1

Page 105: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

se comparado aos já existentes (em conseqüência sua velocidade de compactação também é menor; quase duas vezes mais lento que o gzip). Suas opções são praticamente as mesmas usadas no gzip, e você também pode usá-lo da mesma forma. A extensão dos arquivos compactados pelo bzip2 é a .bz2

bzip2 [opções] [arquivos]

Onde: arquivos Especifica quais arquivos serão compactados pelo bzip2.

Caso seja usado um -, será assumido a entrada padrão. Curingas podem ser usados para especificar vários arquivos de uma só vez.

Opções -d [arquivo] Descompacta um arquivo. -f Força a compactação, compactando até mesmo links. -l [arquivo] Lista o conteúdo de um arquivo compactado pelo bzip2. -r Compacta diretórios e subdiretórios. -c [arquivo] Descompacta o arquivo para a saída padrão. -t [arquivo] Testa o arquivo compactado pelo bzip2. -[num], --fast, --best Ajustam a taxa de compactação/velocidade

da compactação. Quanto melhor a taxa menor é a velocidade de compactação e vice-versa. A opção --fast permite uma compactação rápida e um arquivo de tamanho maior. A opção --best permite uma melhor compactação e uma velocidade menor. O uso da opção -[número] permite especificar uma compactação individualmente usando números entre 1 (menor compactação) e 9 (melhor compactação). É útil para buscar um bom equilibro entre taxa de compactação e/ou velocidade (especialmente em computadores muito lentos).

Quando um arquivo é compactado pelo bzip2, é automaticamente acrescentada a extensão .bz2 ao seu nome. As permissões de acesso dos arquivos são também armazenadas no arquivo compactado.

Exemplos:bzip2 -9 *.txt Compacta todos os arquivos que terminam com .txt bzip2 -t texto.txt.bz2 Verifica o arquivo texto.txt.bz2.

9.9rar

O rar é um compactador desenvolvido por Eugene Roshal e possui versões para GNU/Linux, DOS, Windows, OS/2 e Macintosh. Trabalha com arquivos de extensão .rar e permite armazenar arquivos compactados em vários disquetes (múltiplos volumes). Trata-se de um produto comercial, mas decidi coloca-lo aqui porque possui boas versões Shareware e pode ser muito útil em algumas situações.

rar [ações] [opções] [arquivo-destino.rar] [arquivos-origem]

Onde: arquivo-destino.rar É o nome do arquivo de destino

1

Page 106: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

arquivos-origem Arquivos que serão compactados. Podem ser usados curingas para especificar mais de um arquivo.

ações a Compacta arquivos x Descompacta arquivos d Apaga arquivos especificados t Verifica o arquivo compactado em busca de erros. r Repara um arquivo .rar danificado l Lista arquivos armazenados no arquivo compactado u Atualiza arquivos existentes no arquivo compactado. m Compacta e apaga os arquivos de origem (move). e Descompacta arquivos para o diretório atual p Mostra o conteúdo do arquivo na saída padrão s Converte um arquivo .rar normal em arquivo auto-extráctil.

Arquivos auto-extrácteis são úteis para enviar arquivos a pessoas que não tem o programa rar. Basta executar o arquivo e ele será automaticamente descompactado (usando o sistema operacional que foi criado). Note que esta opção requer que o arquivo default.sfx esteja presente no diretório home do usuário. Use o comando find para localizá-lo em seu sistema.

opções o+ Substitui arquivos já existentes sem perguntar o- Não substitui arquivos existentes sfx Cria arquivos auto-extrácteis. Arquivos auto-extrácteis são

úteis para enviar arquivos a pessoas que não tem o programa rar. Basta executar o arquivo e ele será automaticamente descompactado. Note que este processo requer que o arquivo default.sfx esteja presente no diretório home do usuário. Use o comando find para localizá-lo em seu sistema.

y Assume sim para todas as perguntas r Inclui subdiretórios no arquivo compactado x [ARQUIVO] Processa tudo menos o [ARQUIVO]. Pode ser usados curingas v[TAMANHO] Cria arquivos com um limite de tamanho. Por padrão,

o tamanho é especificado em bytes, mas o número pode ser seguido de k (kilobytes) ou m(megabytes). Exemplo: rar a -v1440k .. ou rar a -v10m ..

p [SENHA] Inclui senha no arquivo. CUIDADO, pessoas conectadas em seu sistema podem capturar a linha de comando facilmente e descobrir sua senha.

m [0-5] Ajusta a taxa de compactação/velocidade de compactação. 0 não faz compactação alguma (mais rápido) somente armazena os arquivos, 5 é o nível que usa mais compactação (mais lento).

ed Não inclui diretórios vazios no arquivo isnd Ativa emissão de sons de alerta pelo programa ierr Envia mensagens de erro para stderr inul Desativa todas as mensagens ow Salva o dono e grupo dos arquivos. ol Salva links simbólicos no arquivo ao invés do arquivo físico que

o link faz referência. mm[f] Usa um método especial de compactação para arquivos

multimídia (sons, vídeos, etc). Caso for usado mmf, força o uso

1

Page 107: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

do método multimídia mesmo que o arquivo compactado não seja deste tipo.

Os arquivos gerados pelo rar do GNU/Linux podem ser usados em outros sistemas operacionais, basta ter o rar instalado. Quando é usada a opção -v para a criação de múltiplos volumes, a numeração dos arquivos é feita na forma: arquivo.rar, arquivo.r00, arquivo.r01, etc, durante a descompactação os arquivos serão pedidos em ordem. Se você receber a mensagem cannot modify volume durante a criação de um arquivo .rar, provavelmente o arquivo já existe. Apague o arquivo existente e tente novamente.

Exemplos: rar a texto.rar texto.txt Compacta o arquivo texto.txt em um

arquivo com o nome texto.rar rar x texto.rar Descompacta o arquivo texto.rar rar a -m5 -v1400k textos.rar * Compacta todos os arquivos do

diretório atual, usando a compactação máxima no arquivo textos.rar. Note que o tamanho máximo de cada arquivo é 1440 para ser possível grava-lo em partes para disquetes.

rar x -v -y textos.rar Restaura os arquivos em múltiplos volumes criados com o processo anterior. Todos os arquivos devem ter sido copiados dos disquetes para o diretório atual antes de prosseguir. A opção -y é útil para não precisar-mos responder yes a toda pergunta que o rar fizer.

rar t textos.rar Verifica se o arquivo textos.rar possui erros. rar r textos.rar Repara um arquivo .rar danificado.

9.10 zcat

O comando zcat tem a mesma função e a sintaxe do comando cat, exceto que este é feito para exibir o conteúdo de arquivos compactados como se não o fossem.

zcat [opções] [arquivo compactado]

9.11 zgrep

O comando zgrep tem a mesma função e a sintaxe do comando grep, exceto por ter sido criado para procurar trechos em arquivos textos compactados.

zgrep [opções] [expressão] [arquivo compactado]

9.12 zcmp

O comando zcmp tem a mesma função e a sintaxe do comando cmp, exceto que este é feito para comparar o conteúdo de arquivos compactados.

zcmp [opções] [arquivo compactado1] [arquivo compactado2]

1

Page 108: APOSTILA SISTEMA OPERACIONALtele.sj.ifsc.edu.br/~tisemp/SOP_tecnico/Apostila_Linux_2009_2.pdf · Guia Foca GNU/Linux ... Linux – Curso de Introdução ao Linux – DCT – UFMS

9.13 zless e zmore

O comando zless e zmore tem a mesma função e a sintaxe do comando less e more, exceto que este é feito para visualizar o conteúdo de arquivos textos compactados sem precisar descompactar o arquivo.

zless ou zmore [arquivo compactado]

1