75
1 Universidade Federal de Santa Maria Centro de Ciências Rurais Departamento de Engenharia Rural Linux básico : distribuição DEBIAN Série Didática Santa Maria, agosto de 2007. Prof. Rudiney Soares Pereira Núcleo de Desenvolvimento de Informações e Geotecnologias Laboratório de Sensoriamento Remoto

Linux Basico

Embed Size (px)

Citation preview

Page 1: Linux Basico

1

Universidade Federal de Santa Maria

Centro de Ciências Rurais

Departamento de Engenharia Rural

Linux básico : distribuição DEBIAN

Série Didática

Santa Maria, agosto de 2007.

Prof. Rudiney Soares Pereira

Núcleo de Desenvolvimento de Informações e Geotecnologias

Laboratório de Sensoriamento Remoto

Page 2: Linux Basico

2

P436l

Pereira, Rudiney Soares, 1958-

Linux básico : distribuição DEBIAN / por Rudiney Soares Pereira. – Santa Maria:

UFSM/Departamento Engenharia Rural/Laboratório de Sensoriamento Remoto,

2007. (Caderno didático)

75 f. : il.

1. Linux 2. Sistema operacional 3. Distribuição DEBIAN 4. Computação I. Título

II. Série

CDU: 004.451.9LINUX

Ficha catalográfica elaborada por

Luiz Marchiotti Fernandes CRB-10/1160

Biblioteca Setorial do Centro de Ciências Rurais/UFSM

Page 3: Linux Basico

3

Page 4: Linux Basico

4

S U M Á R I O

1. Introdução ....................................................................................................................... 6

2. Distribuições LINUX ...................................................................................................... 6

3. Características ............................................................................................................... 6

3.1. Free software ................................................................................................................... 6

3.2. Modularidade .................................................................................................................. 7

3.3. Multitasking (multitarefa) ................................................................................................ 7

3.4. Multiuser (multiusuário) ................................................................................................. 7

3.5. Portabilidade .................................................................................................................. 7

3.6. Multiprocessamento ....................................................................................................... 7

4. Estrutura organizacional ............................................................................................ 7

4.1.Kernel ............................................................................................................................. 7

4.1.1.Versões do kernel ........................................................................................................ 7

4.2.Shell ................................................................................................................................ 8

4.3.Processos ........................................................................................................................ 8

4.3.1.Processos interativos .................................................................................................... 8

4.3.2.Processos batch ........................................................................................................... 8

4.3.3.Processos deamons ...................................................................................................... 8

4.3.4.Atributos ....................................................................................................................... 9

4.4.Tipos de arquivos e estruturas ........................................................................................ 9

4.4.1.Arquivos ordinários (arquivos comuns) ....................................................................... 9

4.4.2.Arquivos diretórios ...................................................................................................... 10

4.4.2.1.Hierarquia de arquivos ............................................................................................ 10

4.4.2.2.Estrutura hierárquica .............................................................................................. 10

4.4.3.Arquivos especiais ...................................................................................................... 12

5. Conexão e desconexão com o sistema .................................................................... 12

5.1.Conexão com o sistema ................................................................................................. 12

5.2.Desconexão com o sistema ........................................................................................... 13

6. Criação e exclusão de usuários ................................................................................ 13

7. Comandos ..................................................................................................................... 15

7.1.Manipulação de arquivos e diretórios ............................................................................. 15

7.2.Manipulação e filtragem de texto ................................................................................... 27

Page 5: Linux Basico

5

7.3.Pesquisa em informações ............................................................................................... 34

7.4.Comandos de terminal ................................................................................................... 37

7.5.Comandos de administração do sistema ........................................................................ 51

7.6.Formato padrão de uma linha de comando .................................................................... 52

7.7.Comparação entre os comandos DOS e LINUX ............................................................... 53

8. Redirecionamento, filtros e pipes ............................................................................ 54

8.1.Redirecionamento .......................................................................................................... 54

8.2.Filtros ............................................................................................................................. 55

8.3.Pipes .............................................................................................................................. 56

9. Montando e desmontando dispositivos ................................................................... 57

9.1.Discos ............................................................................................................................ 57

9.2.Montando a partição ..................................................................................................... 57

10.Pacotes DEB ................................................................................................................ 60

10.1.Editando o arquivo sources.list ................................................................................... 61

10.2.Atualizando o sistema com o apt-get ......................................................................... 61

10.3.O pacote Synaptic ...................................................................................................... 63

11.Permissões nos arquivos e diretórios .................................................................... 71

11.1.Alteração das permissões .......................................................................................... 72

11.2.Alteração do grupo e dono ........................................................................................ 74

12.Referências para consulta ...................................................................................... 75

Page 6: Linux Basico

6

1. Introdução

O objetivo deste material é servir de consulta à usuários iniciantes no mundo do

software livre. Não tem o propósito de ser um documento completo e, certamente é possibilitar

um contato inicial com o LINUX, com ênfase na distribuição DEBIAN. Sua organização passa por

considerações gerais sobre software livre, estrutura organizacional dos sistemas operacionais

LINUX, distribuições existentes, gerenciamento de usuários no sistema, comandos, montagem

de dispositivos e gerenciamento do sistema com atualizações de pacotes DEBIAN.

Linux é um Sistema Operacional baseado em LINUX assim como o AIX da IBM, Solaris,

SunOS, BSD e outros.

Os direitos autorais pertencem a Linus Torvalds (Linux = Linus + LINUX) e outros

colaboradores porém, pode ser livremente distribuído sob os termos da GNU (General Public

License - GPL). Essa licença preserva os direitos autorais do software, mas assegura a

distribuição dos programas com código-fonte.

Linux em si é apenas o Kernel (Núcleo) do sistema operacional, a parte que controla o

hardware, gerencia arquivos, separa processos, entre outras funções.

Existem diversas combinações de Linux com vários utilitários e aplicativos de modo a

formar um sistema operacional completo. Cada uma dessas combinações é chamada de

distribuição.

2. Distribuições LINUX

Distribuições são sistemas originados pelo trabalho de comunidades, universidades,

usuários e empresas que transformam/adaptam o Linux com a adição de facilidades e/ou

recursos. Isso, se dá pela introdução de aplicativos e/ou utilitários desenvolvidos e

disponibilizados em CD/DVD aos interessados, juntamente a documentação/suporte, manuais e

tutoriais.

Dentre muitas distribuições, podemos citar:

Debian, Redhat, Conectiva, Caldera, Mandrake, Slackware, Suse, Tech Linux, Turbo

Linux, Ubuntu Linux, Mandriva, entre outras.

Para uma lista mais detalhada, consulte os sítios:

http://distrowatch.com/, http://pt.wikipedia.org/wiki/Linux

3. Características

O sistema operacional LINUX apresenta seis características que lhe são muito

peculiares. Dentre estas, pode-se citar que é um software livre (free software), possui

modularidade, é multitarefa, multiusuário, é portável e permite multiprocessamento. Abaixo,

breve descrição destas características.

3.1 Free Software: tem todo seu código fonte(incluindo o Kernel, drivers, bibliotecas, etc.)

aberto para qualquer um.

Page 7: Linux Basico

7

3.2 Modularidade: O LINUX é o único em seu desenho modular, que permite usuários

adicionar ou remover partes para adaptá-lo as suas necessidades específicas.

3.3 Multitasking (multitarefa): a capacidade de Multitasking do LINUX permite que mais de

uma tarefa seja realizada simultaneamente.

3.4 Multiuser (Multiusuário): um sistema multiusuário permite que vários usuários utilizem o

computador simultaneamente.

3.5 Portabilidade: a portabilidade é a possibilidade dos softwares que operam em uma

máquina operarem em uma outra diferente.

3.6 Multiprocessamento: o LINUX foi aprimorado para trabalhar em máquinas de grande

porte, suportando assim a utilização de vários processadores em um único computador, e

com a possibilidade de compartilhamento do processamento entre vários usuários ao

mesmo tempo.

4. Estrutura Organizacional

A estrutura organizacional pode ser dividida em 4 partes principais: Kernel, Shell,

processos e estrutura de arquivos.

4.1 Kernel

É a base do Sistema Operacional, suporta os programas dos usuários e programas

utilitários como compiladores, links, sistemas de controle, código fonte, etc. e, implementa as

seguintes funções:

Escalonamento de processos;

Gerenciamento de memória;

Gerenciamento de dispositivos;

Gerenciamento de arquivos;

Interface de chamada do sistema;

Interface de controle do operador.

4.1.1 Versões do Kernel

Convenção para distinguir as versões estáveis das não estáveis:

Versão v.x.y,

onde:

v : número da versão.

Page 8: Linux Basico

8

x : número par versão estável

: número impar versão não estável (versões para beta teste características

novas sendo acrescentadas todo o tempo)

y : correções de bugs, nenhuma característica nova implementada.

De tempos em tempos o Kernel apresenta-se como uma performance confiável

passando a ser denominado como uma Kernel estável. O desenvolvimento continua em uma

nova versão do Kernel.

Kernel é mudado conforme novos devices e/ou drivers são adicionados e erros são

corrigidos.

4.2 Shell

Shell é o programa que conecta e interpreta os comandos digitados por um usuário. Ele

é o mediador entre o usuário e o sistema LINUX usado para interpretar os comandos. Esse

programa lê os comandos digitados pelo usuário e os executa utilizando os serviços e/ou outros

programas do sistema operacional.

Dentre os Shells mais conhecidos pode-se citar:

sh Bourne Shell – o mais tradicional(prompt $);

Bash Bourne – Again Shell – Shell padrão do Linux;

ksh Korn Shell – muito utilizado atualmente;

csh C Shell – considerado o mais poderoso – largamente utilizado(prompt %);

rsh Remote Shell – Shell remoto;

Rsh Restricted Shell – versão restrita do sh

4.3 Processos

Um processo é um simples programa que está rodando em seu espaço de

endereçamento virtual próprio. Os processos são executados em background ou foreground e

podem ser divididos em três grupos principais: interativos, batch e deamons.

4.3.1 Processos interativos: são iniciados a partir de, e controlados por, uma sessão terminal.

4.3.2 Processos batch (ou em lote): não são associados a nenhum terminal. Ao invés disso são

submetidos a uma fila, da qual jobs (trabalhos/instruções) são executados seqüencialmente.

4.3.3 Processos deamons: são processos servidores, inicialmente iniciados durante o boot, que

rodam continuamente enquanto o sistema estiver ativo, esperando, em background, até que

um processo requisite seus serviços.

Page 9: Linux Basico

9

4.3.4 Atributos

Process ID (PID)

Parent Process ID (PPID)

TTY

UID real e efetiva (RUID, EUID)

GID real e efetiva (RGID, EGID)

Process ID, PID é um número que identifica unicamente esse processo e é usado para

referir-se a ele.

Parent Process ID, PID é o “pai” do processo, ou seja, o processo que o criou.

TTY é o dispositivo de terminal associado com o processo.

UID real de um processo é o UID do usuário que o criou. O UID efetivo, é o UID que é

utilizado para determinar o acesso do processo a recursos do sistema. Usualmente, RUID e

EUID são os mesmos, e o processo tem os mesmos acessos que o usuário que os disparou.

GID real e efetivo de um processo é o grupo primário ou corrente do usuário.

4.4 Estrutura de Arquivos

Arquivos são centrais para o LINUX de uma maneira não encontrada em outros sistemas

operacionais.

O LINUX tem uma organização de diretórios hierárquica em forma de árvore conhecida

como filesystem. A base desta árvore é um diretório chamado root directory. Em sistemas

LINUX, todo espaço em disco disponível é combinado em uma única árvore de diretórios abaixo

do “/” (root).

O acesso a arquivos é organizado através de propriedades e proteções. Toda segurança

do sistema depende, em grande parte, da combinação entre a propriedade e proteções

fixadas/estabelecidas em seus arquivos e suas contas de usuários e grupos.

Resumindo:

Tudo em LINUX é um arquivo;

O LINUX tem uma organização de diretórios hierárquica chamada filesystem;

O acesso a arquivos é organizado através de propriedades e proteções.

4.4 Tipos de arquivos e estruturas

Existem três tipos de arquivos no LINUX: os arquivos ordinários (comuns), os arquivos

diretórios

4.4.1 Arquivos Ordinários (ou arquivos comuns)

São arquivos que contém dados binários ou caracteres ASCII. Consiste de uma string de

bytes de dados. Por exemplo, um arquivo criado através de um editor de texto é um arquivo do

Page 10: Linux Basico

10

tipo ordinário. Uma subclasse de arquivos ordinários são os arquivos hidden (oculto). O nome

dos arquivos hidden inicia sempre com um ponto (.profile, .kshrc) e possue funções especiais.

Esses arquivos ocultos recebem a denominação de hidden porque normalmente não podem ser

vistos em uma consulta a um diretório.

4.4.2 Arquivos Diretórios

São responsáveis pela manutenção da estrutura hierárquica do sistema de arquivos. As

informações são armazenadas em arquivos ordinários agrupados em diretórios, que por sua

vez também são agrupados em outros diretórios.

Todo diretório contém os nomes de arquivos "." e ".." , que corresponde

respectivamente ao próprio diretório e ao seu diretório pai. Todo usuário possui um diretório

default (home directory), e quando ele se conecta ao sistema o LINUX, automaticamente o

posiciona neste diretório.

4.4.2.1 Hierarquia de arquivos

Como foi dito anteriormente os arquivos diretórios são organizados hierarquicamente

em forma de árvore em que a base é chamada de root. Esta árvore pode ser facilmente

observada na figura 1.

4.4.2.2 Estrutura da árvore de diretórios

A árvore de diretórios é constituída por: bin, boot, cdrom, dev, etc, home, initrd, lib,

media, mnt, opt, proc, root, sbin, selinux, srv, sys, tmp, usr e var. Alguns desses como srv,

proc, selinux, sys são temporários e podem ser extintos por ocasião do momento de

desconexão ou pela intalação de alguns aplicativos como por exemplo “reconstructor” ou

“isomaster” que são aplicações utilizadas para a construção de novas distribuições. A figura 1

apresenta essa estrutura da árvore de diretórios.

Page 11: Linux Basico

11

Figura 1: Estrutura da árvore de diretórios

Tabela 1: Estrutura de diretórios do Linux

Diretório Descrição dos arquivos que estão nesse diretório

/ Diretório raiz do sistema de arquivos. é abaixo dele que se situam todos os

outros.

/bin Arquivos executáveis de comandos essenciais.

/boot Arquivos estáticos necessários à inicialização do sistema.

/dev Arquivos de dispositivos (drives) do sistema.

/etc Arquivos de configuração do sistema.

/home Lugar onde ficam os diretórios locais(diretórios pessoais) dos usuários.

/lib Arquivos de bibliotecas essenciais ao sistema, utilizados pelos programas em

/bin.

/mnt Usualmente é o ponto de montagem de dispositivos(drives) na máquina.

/proc Informações do kernel e dos processos.

/root Diretório local do superusuário.

/sbin Arquivos essenciais (comandos especiais) ao sistema. Normalmente só o

superusuário tem acesso a estes arquivos.

/tmp Diretório de arquivos temporários.

/usr Arquivos pertencentes aos usuários. ( é a segunda maior hierarquia de

diretórios presente no Linux, só perdendo para o diretório raiz).

Page 12: Linux Basico

12

4.4.3 Arquivos Especiais

O LINUX trata todos os dispositivos físicos do sistema como arquivos especiais. Cada

dispositivo do computador, tais como: terminais, unidades de fita, disco e impressoras, possui

um arquivo especial associado à ele. Estes arquivos estão localizados no diretório /dev, e não

referenciam dados, eles possuem especificações sobre o tipo de dispositivo, como terminal ou

impressora, e suas características, como configuração, densidade de gravação, etc. Os

arquivos especiais podem ser acessados da mesma forma que os arquivos ordinários.

Obs:

1. O nome do arquivo pode possuir até 255 caracteres, em sistemas BSD, ou até 14

caracteres, em sistemas System V.

2. Alguns caracteres não devem ser usados por possuírem significado especial para o

LINUX, são eles: "/", "*", "?", "[", "]", ">", "<", "-", "$", "'","""", "&", "!" e “\”.

3. Para quem está acostumado com o DOS, notará algumas diferenças como os nomes de

arquivos, que no DOS tem apenas 8 caracteres de nome e 3 de extensão. No LINUX não

existe esse limite, podendo ter várias formas finais de apresentação. Os arquivos no

LINUX não possuem extensões, porém podemos incluir um ponto seguido de uma

seqüência de caracteres no nome de qualquer arquivo, embora, esta pseudo extensão,

não possua nenhum significado especial para os comandos LINUX.

Exemplo: trabalho.txt.zip.tar

5. Conexão e Desconexão com o Sistema

Entende-se por conexão e desconexão do sistema a ação que o usuário executa junto

ao sistema, com o objetivo de acessar a sua área de trabalho e demais aplicações

disponibilizadas pelo sistema operacional entre elas as compreendidas e relacionadas a leitura,

escrita e execução de arquivos ressalvadas as permissões de acesso.

5.1 Conexão com o sistema

A conexão ao sistema necessita de dois elementos básicos: uma identificação de

usuário (login) e uma senha (password) de acesso.

Caso ocorra algum erro na digitação do login ou da password, o sistema responde com a

mensagem 'login incorrect' e proporciona uma nova oportunidade ao usuário de se conectar.

Havendo sucesso o shell apresenta um prompt, indicando que está pronto para receber

comandos do usuário. O prompt apresentado depende do shell que se está utilizando, no

Bourne Shell e Korn Shell o prompt é o caracter "$" enquanto que, no C Shell, é o caracter "%".

Em qualquer uma das situações, o prompt do usuário root, será representado pelo caracter

“#”.

Page 13: Linux Basico

13

5.2 Desconexão do sistema

A desconexão do sistema pode ser obtida através do comando logout, da seqüência de

teclas digitadas [Ctrl+D], ou ainda, executar o comando exit.

Atenção: No sistema operacional LINUX as letras maiúsculas e minúsculas, são tratadas como

caracteres distintos ou seja, são case sensitive.

6. Criação e exclusão de usuários e grupos

Uma conta de usuário é um conjunto de duas informações a citar: nome de acesso

(login) e uma senha (password), que possibilitam ao usuário acessar a sua área do sistema.

Devido a essa característica, um mesmo usuário pode ter várias contas com a ressalva de que

sejam criadas com nomes de acesso (login) diferentes.

Exite basicamente dois tipos de contas: a primeira delas denominada de “usuário” que

permite o acesso e o uso das ferramentas do sistema e, o segundo tipo, a conta denominada

de “superusuário” que permite realizar configurações no sistema. Assim, a conta com

privilégios de superusuário necessita de senha, preferencialmente, diferente da senha para a

conta “usuário” pois, somente assim, resguardam-se aspectos de segurança do sistema e a

possibilidade de que apenas um “superusuário” possa configurar o sistema.

Um “grupo” é basicamente um conjunto de usuários cujas contas possuem acessos

específicos no sistema ou seja, é possível definir para o grupo de usuários um conjunto de

aplicações e/ou arquivos em comum, que essas contas “usuários” terão acesso ao uso

considerando níveis de restrição/permissão.

Existem algumas formas de criar e manter usuários em um sistema, porém todas elas,

necessitam privilégios de superusuário. Uma das formas é a utilização da linha de comando no

terminal console (texto), com o comando “adduser”. Por exemplo, para criar um usuário

denominado “geomatica”, no terminal, digita-se como superusuário (#), o seguinte comando:

# adduser geomatica

Para definirmos a senha desse usuário, que, assim permitirá o acesso as

aplicações/arquivos comuns, digita-se:

# passwd geomatica

No exemplo abaixo, identificamos algumas informações importantes como: a) a

sentença “rudiney@katrina:~$” identifica usuário denominado “rudiney” na máquina

denominada “katrina”. A seqüência “:~$” significa que o usuário “rudiney” está em sua área

de trabalho.

Ainda, para criarmos o usuário “geomatica”, é necessário que se tenha privilégios de

“superusuário” por isso, digita-se “su -”. Após, o sistema solicitará a senha com a sentença

Page 14: Linux Basico

14

“Password:”. Digitada a senha, então, o usuário “rudiney” inicialmente logado, agora passa a

ter os privilégios de “superusuário”. O que caracteriza essa situação é a sentença

“katrina:~#”.

Então, executa-se o comando adduser geomatica.

rudiney@katrina:~$ su -

Password:

katrina:~# adduser geomatica

Adding user 'geomatica' ...

Adding new group 'geomatica' (1002) ...

Adding new user 'geomatica' (1002) with group 'geomatica' ...

Creating home directory '/home/geomatica' ...

Copying files from '/etc/skel' ...

Enter new LINUX password:

Retype new LINUX password:

passwd: senha atualizada com sucesso

Modificando as informações de usuário para geomatica

Informe o novo valor ou pressione ENTER para aceitar o padrão

Nome Completo []:

Número da Sala []:

Fone de Trabalho []:

Fone Doméstico []:

Outro []:

A informação está correta? [s/N]

katrina:~#

A senha “password” pode conter qualquer caractere porém, é desejável por questões de

segurança, que ela possua no mínimo 6 caracteres. O preenchimento dos demais dados como:

Nome Completo[], Número da Sala[], Fone de trabalho[], Fone Doméstico[] e Outro[], é de

caráter opcional.

Com isto, a nova conta estará criada. Uma linha será incluída no arquivo /etc/passwd

com os dados do novo usuário, incluindo o seu diretório de trabalho (/home/geomatica), sendo

colocado o /bin/bash como o interpretador de comandos padrão, entre outros dados.

Do mesmo modo, para remover contas de usuários basta digitar o comando:

# userdel -r usuario

No exemplo acima, o “usuario” é geomatica. Com esse comando, subtrai-se da área

/home, o usuário “geomatica” com todo o seu conteúdo. Também, os dados do arquivo

/etc/passwd.

O comando de texto groupadd cria um novo grupo. Para remover um grupo, basta

executar o comando groupdel.

Page 15: Linux Basico

15

Há dois modos de incluir usuários em um grupo pelo modo texto: a) utilizando o

comando usermod ou b) diretamente no arquivo /etc/group.

Para incluir novos usuários em um grupo, deve-se editar diretamente o arquivo. Por

exemplo, se existir um grupo denominado “grandeteste”, pode-se adicionar usuários “teste” e

“geomatica” usando o comando usermod assim, teremos a seqüência:

a) usando o comando usermod:

# usermod -G grandeteste teste

# usermod -G geomatica

b) editando o arquivo /etc/group com um editor de texto, por exemplo o vi ou vim:

grandeteste:x:504:teste,geomatica

Dessa forma, os usuários teste e geomatica foram incluídos no grupo grandeteste. No

entanto, o comando usermod só permite a inclusão de um usuário por vez.

A inclusão de vários grupos, deve ser cuidadosamente manipulada pois, essa ação,

apaga a configuração anterior.

7. Comandos

Os comandos podem ser subdivididos em agrupamentos com as finalidades:

manipulação de arquivos e diretórios, manipulação e filtragem de texto, pesquisa em

informações, comandos de terminal e comandos de administração de sistema.

7.1. Manipulação de arquivos e diretórios

ls

O comando ls exibe arquivos ou o conteúdo de um ou vários diretórios.

Sintaxe:

$ ls [opções] [arquivo]

Opções:

-a: Exibe arquivos ocultos;

-A: Não exibe os diretórios . e ..;

--author: Mostra o autor (criador) de cada arquivo;

-b: Exibe caracteres de escape octais no lugar dos caracteres que não podem ser vistos,

Page 16: Linux Basico

16

como o espaço em branco;

--block-size=[tamanho]: Exibe o tamanho dos arquivos em múltiplos do número de

bytes especificado nesse parâmetro;

-B: Não exibe arquivos de backup (terminados com ~);

-c: Lista os arquivos por ordem da data da última modificação;

-C: Exibe a listagem em colunas;

--color=[quando]: Controla quando as cores devem ser usadas para distinguir os tipos

de arquivos. Os valores aceitos são:

. never: Não usa cores pra nenhum tipo de arquivo;

. always: Usar cores para todo tipo de arquivo;

. auto: Seleciona quais arquivos serão exibidos em cores.

-d: Exibe o diretório especificado, e não o seu conteúdo;

-f: Ativa os parâmetros -a e -U e desabilita os parâmetros -l, -s e -t;

-F: Acrescenta um caracter gráfico ao final de cada arquivo para identificar o seu tipo;

-G: Não exibe informações dos grupos a que os arquivos pertencem;

-h: Exibe os tamanhos dos arquivos em uma forma legível (2K, 21M, 1G);

--si: Semelhante ao -h, mas usa múltiplos de 1000 bytes ao invés de 1024;

-H: Exibe os arquivos para os quais os links simbólicos apontam, ao invés de listar só o

link;

-i: Exibe o número de índice (I-node) dos arquivos;

-I: Não exibe entradas que contiverem o padrão informado;

-k: Equivalente a --block-size=1k;

-l: Listagem detalhada, com diversas informações sobre os arquivos;

-L: Quando listar links simbólicos, lista o local para onde o link aponta, e não o link

propriamente dito;

-m: Lista os arquivos em linhas, separando cada item com uma vírgula;

-n: O mesmo que o parâmetro -l, mas mostra as UID's e GID's ao invés dos nomes dos

grupos;

-o: O mesmo que o parâmetro -l, mas não exibe as informações sobre o grupo;

-p: Adiciona um caracter para identificar o tipo do arquivo. O mesmo que -F, mas não

utiliza o caracter * (asterisco);

-Q: Exibe os nomes das entradas entre " (aspas duplas);

-r: Organiza a lista na ordem inversa;

-R: Lista recursivamente o conteúdo dos diretórios e subdiretórios do diretório atual;

-s: Exibe o tamanho de cada arquivo, em múltiplos de blocos (especificados com o

parâmetro --block-size=[tamanho]);

-S: Organiza a lista de acordo com o tamanho do arquivo;

-t: Lista pela data de modificação;

-u: Organiza a listagem pela data do último acesso;

-U: Não organiza a listagem, exibindo os arquivos na seqüência em que estão gravadas

no diretório;

-w: Ajusta o tamanho da tela para o número de colunas especificado;

-X: Organiza a listagem em ordem alfabética;

Page 17: Linux Basico

17

-1: Lista apenas um arquivo por linha;

Em [arquivo], devemos informar quais arquivos (arquivos, diretórios, dispositivos, links,

etc.) devem ser listados. Se não for informado nada, será listado o conteúdo do diretório atual

(.).

Pode-se também utilizar curingas para filtrar os arquivos que serão listados. Por

exemplo, podemos usar ls *.doc para listar somente os arquivos terminados em .doc.

cd

O comando cd, sigla de change directory (selecionar diretório), serve para acessar um

determinado diretório.

Sintaxe:

$ cd [diretório]

Lembrando a lista dos diretórios do sistema:

..: Diretório acima do atual. Se você estiver no diretório /home/aluno/ e quiser acessar o

diretório /home/, digite cd ... Se quiser acessar o diretório /home/ana/, digite cd ../ana/;

~: Diretório pessoal do usuário atual, ou seja, /home/[usuário]/;

-: Diretório anterior. Se você estava no diretório /etc/ e mudou para o diretório /home/,

digite cd - para voltar ao diretório /etc/.

Se for usado sem parâmetro, ou seja, apenas cd, você será redirecionado para o

diretório pessoal do usuário atual.

mkdir

O comando mkdir, abreviatura de make directory (criar diretório), é usado para criar

um novo diretório.

Sintaxe:

$ mkdir [opções] [novo diretório]

Opções:

-m: Especifica as permissões que do novo diretório terá;

-p: Cria todos os diretórios e subdiretórios necessários;

-v: Exibe uma mensagem para cada diretório criado.

Page 18: Linux Basico

18

Em [novo diretório] devemos colocar os diretórios que queremos criar. Não é necessário

digitar o caminho completo, caso queiramos criar um diretório dentro do diretório atual.

Podemos criar vários diretórios com um único comando, bastando separá-los com espaços. Se

quiser que o nome do novo diretório tenha espaços em branco, escreva-o entre aspas duplas,

dessa forma:

$ mkdir /home/ana/"diretório com espaços em branco"

rmdir

Esse comando é utilizado para apagar um diretório vazio.

Sintaxe:

$ rmdir [opções] [diretório]

Opções:

-p: Remove os diretórios-pai do diretório selecionado, se possível. Assim, o comando

rmdir -p a/b/c/ vai apagar o diretório a/b/c/, depois o diretório a/b/ e por fim o diretório a/, se

possível;

-v: Mostra os detalhes da remoção dos diretórios.

Podem ser especificados mais de um diretório por vez. O rmdir só remove diretório

vazios.

pwd

O pwd, sigla de print working directory (exibir diretório de trabalho), exibe o diretório

atual. É equivalente a echo $PWD.

Uso:

$ pwd

cat

O comando cat concatena arquivos e imprime na saída padrão (exibe na tela). Em

arquivos, usamos o cat para listar seu conteúdo na tela. Com o uso de direcionadores,

podemos usá-lo para unir diferentes arquivos em um só, dentre outra funções.

Sintaxe:

Page 19: Linux Basico

19

$ cat [opções] [arquivo]

Opções:

-b: Numera as linhas, com exceção das linhas em branco;

-E: Mostra um "$"? (cifrão) para indicar fim de linha;

-n: Numera todas as linhas, incluindo as em branco;

-s: Não mostra mais do que uma linha em branco. Se houver duas ou mais linhas em

branco consecutivas, elas são truncadas e apenas uma é mostrada;

-T: Substitui tabulações pelos caracteres "^I"?;

-v: Substitui os caracteres não imprimíveis por símbolos, exceto tabulações e final de

linha.

Exemplos de uso:

$ cat [arquivo1 arquivo2 arquivo3 ... arquivoN] > [arquivo]

Isso pode ser usado em qualquer tipo de arquivo, inclusive arquivos binários. É prática

comum utilizar isso para juntar arquivos de vídeo grandes, como filmes, que muitas vezes são

divididos em várias partes.

Veja no exemplo abaixo, como unir as 2 partes do filme Harmatia em um único arquivo:

$ cat the-harmatia_part-1.mpeg the-harmatia_part-2.mpeg > the-harmatia.mpeg

Vale lembrar que tal procedimento não é corretamente executado com arquivos AVI.

tac

O tac faz o mesmo que o cat, mas exibe o arquivo pela ordem inversa, ou seja,

começando pela última linha e terminando com a primeira.

Uso:

$ tac [arquivo]

touch

O comando touch é usado atualizar as informações sobre as datas de último acesso e

última modificação de um arquivo.

Sintaxe:

$ touch [opções] [arquivo]

Page 20: Linux Basico

20

Se o arquivo não existir, ele é criado, por padrão. Isso faz o touch ser muito utilizado

para criar arquivos vazios, através do comando touch [arquivo].

Opções:

-a: Modifica apenas a data do último acesso;

-c: Não cria arquivos, caso eles não existam;

-m: Modifica apenas a data de modificação;

-t: A data e hora a ser utilizada para o último acesso ou última modificação. O formato

utilizado é MMDDhhmm (mês, dia, hora e minuto);

cp

O cp, abreviação de copy (copiar), é utilizado para copiar arquivos e diretórios de um

local para outro, com o mesmo nome ou com nome diferente.

Sintaxe:

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

-b: Cria um arquivo dos arquivos de destino se eles estiverem para ser sobrescritos;

-P: Quando tratar de links simbólicos, copia o link, e não o local para onde o link aponta;

-f: Operação forçada. Se um dos arquivos de destino não puder ser aberto, apaga-o e

repete a operação;

-i: Pede confirmação antes de sobrescrever um arquivo;

-L: Quando tratar de links simbólicos, copia o local para o onde o link aponta, e não o

link;

-p: Preserva as propriedades do arquivo (permissões, dono e datas);

--preserve=[propriedade]: Escolhe quais propriedades preservar, separadas por vírgula.

Podem ser:

. mode: Preserva as permissões;

. ownership: Preserva a informação de dono do arquivo;

. timestamp: Preserva as datas de acesso e modificação.

--no-preserve=[propriedade]: Escolhe quais propriedades não devem ser preservadas.

As opções são as mesmas que do parâmetro --preserve;

-R ou -r: Modo recursivo, copia todos os arquivos e subdiretórios do diretório

especificado. Esse parâmetro deve ser usado para copiar diretórios inteiros;

--target-directory=[diretório]: Especifica para qual diretório devem ser copiados os

arquivos/diretórios especificados;

-u: Copia apenas os arquivos novos. Se um arquivo que estiver sendo copiado já existir

Page 21: Linux Basico

21

no diretório de destino, sua cópia será ignorada;

-v: Mostra os detalhes da cópia dos arquivos.

Exemplos de uso:

Para copiar o arquivo file.gz para o diretório /tmp/:

$ cp file.gz /tmp

Para para fazer uma cópia do arquivo file.gz com o nome file-copia.gz:

$ cp file.gz file-copia.gz

Para copiar os arquivos file1, file2 e file3 para o diretório /home/ana/doc/:

$ cp file1 file2 file3 /home/ana/doc

Para copiar o diretório img/ para o diretório /tmp/upload/:

$ cp -r img /tmp/upload

Para copiar os arquivos file1, file2 e file3 e o diretório img/ para o diretório /tmp/upload/:

$ cp -r file1 file2 fil3 img /tmp/upload

mv

Utilizamos o mv mover ou renomear arquivos.

Sintaxe:

$ mv [opções] [destino]

Opções:

-b: Cria um backup dos arquivos de destino, se eles forem sobrescritos;

-f: Força as operações, sem fazer perguntas caso seja necessário sobrescrever arquivos

e outros;

-i: Modo interativo, pede confirmação para sobrescrever arquivos;

--target-directory=[diretório]: especifica o diretório de destino para os arquivos;

-u: Só move os arquivos novos. Se o arquivo que está sendo movido já estiver presente

no diretório de destino, ele é ignorado;

-v: Mostra os detalhes do processo de movimentação.

Page 22: Linux Basico

22

Exemplos de uso:

Para mover o arquivo file1 para o diretório /home/ana/doc/:

$ mv file1 /home/ana/doc

Para mover o diretório /home/ana/doc/ para /tmp/upload/:

$ mv /home/ana/doc /tmp/upload

Para renomear o arquivo package.tar.gz para pacote.tar.gz:

$ mv package.tar.gz pacote.tar.gz

Para mover o arquivo file1 e o diretório img/ para o diretório /tmp/upload/:

$ mv file1 img /tmp/upload

rm

O rm é utilizado para excluir arquivos.

Sintaxe:

$ rm [opções] [arquivo]

Opções:

-f: Modo forçado, não pede confirmação para realizar as operações;

-i: Pede confirmação antes de remover qualquer arquivo;

-R, -r: Exclui recursivamente todo o conteúdo do diretório e o próprio diretório. Quando

quiser excluir um diretório que não está vazio, utilize esse parâmetro;

-v: Mostra os detalhes das exclusões.

ln

Esse é o comando utilizado para criar links, simbólicos ou absolutos.

Sintaxe:

$ ln [opções] [alvo] [nome do link]

Opções:

Page 23: Linux Basico

23

-b: Se houver um arquivo com o mesmo nome do link que está sendo criado no diretório

de destino, cria um backup do arquivo existente;

-d: Permite ao administrador do sistema (root) criar um hardlink (link absoluto) para um

diretório;

-f: Força a criação dos links;

-n: Trata um link simbólico pra um diretório como se fosse um arquivo normal;

-i: Pergunta antes de remover arquivos existentes;

-s: Cria um link simbólico;

--target-directory=[diretório]: Especifica em qual diretório o link deve ser criado;

-v: Exibe o nome de cada link antes de criá-lo.

Exemplos de uso:

Se você quiser criar um link simbólico para o arquivo /home/ana/doc/ no diretório atual,

com o mesmo nome do diretório real (no caso, doc):

$ ln -s /home/ana/doc

Se você quiser fazer a mesma coisa, mas preferir que o link criado tenha o nome

"documentos":

$ ln -s /home/ana/doc documentos

Se você quiser criar um link absoluto (hardlink), oculte o parâmetro -s:

$ ln /home/ana/doc

cmp

Esse comando é utilizado para comparar dois arquivos e mostrar a primeira diferença

entre eles. Use para certificar-se de que dois arquivos possuem ou não o mesmo conteúdo.

Sintaxe:

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

Opções:

-b: Imprime os bytes que são diferentes entre si;

-i [n]: Não considera os primeiros [n] bytes de cada arquivo;

-l: Mostra os número dos bytes e os valores diferentes;

-s: Não mostra nenhum detalhe, apenas sai com status 1 se alguma diferença for

encontrada.

Page 24: Linux Basico

24

Exemplos de uso:

Vamos comparar os arquivos file1 e file2:

$ cmp file1 file2

file1 file2 differ: byte 10, line 2

diff

Esse comando compara dois arquivos de texto e mostra as diferenças entre eles.

Sintaxe:

$ diff [opções] [arquivo1] [arquivo2]

Opções:

-i: Ignora as diferenças de letras maiúsculas/minúsculas;

-E: Ignora as diferenças de tabulação;

-b: Ignora diferenças na quantidade de espaço em branco;

-w: Ignora qualquer espaço em branco;

-B: Ignora linhas em branco a mais ou a menos;

-a: Compara os arquivos como arquivos de texto, ainda que não sejam;

-u [n]: Mostra [n] linhas do conteúdo final do arquivo1, adicionadas as diferenças do

arquivo2;

-q: Mostra apenas se o conteúdo dos arquivos são ou não diferentes;

-y: Mostra os arquivos em duas colunas, indicando as diferenças;

-t: Expande as tabulações, convertendo-as em espaços, na saída;

-r: Compara recursivamente todo o conteúdo de um diretório;

-S [arquivo]: Quando comparar diretórios, inicia a comparação pelo arquivo

especificado.

Exemplos de uso:

Vamos considerar os arquivos file1 e file2, com o seguinte conteúdo:

$ cat file1

5 f j 33

diferença

2 a c 1

1 t 4 f

6 b c _

Page 25: Linux Basico

25

10 i r 3

$ cat file2

5 f j 33

2 a c 1

1 t 4 f

6 b c _

10 i r 3

outra diferença

Aplicando o diff nos dois arquivos, temos o seguinte retorno:

$ diff file1 file2

2d1

< diferença

6a6

> outra diferença

O diff exibe informações sobre o que é necessário fazer para que o conteúdo de file1

seja igual ao de file2. Nesse caso, 2d1 quer dizer que a diferença foi encontrada na linha 2, e

que é necessário apagar (d = delete) a palavra diferença do arquivo file1. O 6a6 nos diz que a

diferença foi encontrada na linha 6, e que é necessário adicionar (a = add) a linha outra

diferença no arquivo file1.

O parâmetro -y exibe esses parâmetros de forma mais clara:

$ diff -y file1 file2

5 f j 33 5 f j 33

diferença <

2 a c 1 2 a c 1

1 t 4 f 1 t 4 f

6 b c _ 6 b c _

10 i r 3 10 i r 3

> outradiferença

Veja que os sinais de maior e menor (>, <) sempre apontam para a linha que é

diferente. Se a diferença estiver no primeiro arquivo, listado à esquerda, ela deve ser apagada.

Se a diferença estiver no segundo arquivo, listado à direita, ela deve ser adicionada.

O diff, quando usado em conjunto com o utilitário patch, fornece uma grande

funcionalidade para atualizações. Um grande exemplo é o código-fonte do kernel Linux. Ao

invés de gravar a nova versão do kernel inteira, é possível gravar a penas as diferenças entre

eles, algo como:

Page 26: Linux Basico

26

$ diff [kernel-antigo] [kernel-novo] > diferenças.diff

E depois utilizar o utilitário patch para gravar as diferenças no kernel-antigo, fazendo-o

ficar com o mesmo conteúdo de kernel-novo. A grande vantagem é que não é necessário o

usuário baixar todo o kernel, que é muito grande, mas apenas o arquivo com as diferenças,

bem pequeno.

patch

Utilizamos esse comando para atualizar as diferenças geradas através do comando diff.

Suponhamos os arquivos file1 e file2, que são diferentes. Podemos criar as diferenças entre os

dois arquivos com o comando diff:

$ diff file1 file2 > file.diff

Esse comando gera um arquivo file.diff com as diferenças entre os arquivos file1 e file2.

Podemos agora usar o comando patch para aplicar as diferenças no arquivo file1,

fazendo seu conteúdo ficar igual ao de file2:

$ patch file1 file.diff

Sintaxe:

$ patch [opções] [arquivo] [arquivo de patch] (para arquivos)

$ patch [opções] < [arquivo de patch] (para diretórios)

Opções:

-p [n]: Nível do diretório onde será aplicado o patch. Se [n] for 0, o patch será aplicado

no diretório atual. Se for 1, será aplicado no diretório acima (..), se 2, 2 diretórios acima (../..) e

assim por diante;

-b: Cria cópias dos arquivos originais antes de aplicar o patch;

-binary: Lê e grava usando o modo binário;

-d [diretório]: Muda para o diretório especificado antes de aplicar o patch;

-E: Remove arquivos vazios após a aplicação do patch;

-n: Interpreta o arquivo de patch como um .diff normal;

-N: Não desfaz patches já aplicados;

-s: Modo silencioso, não exibe mensagens de erro;

-u: Interpreta o patch em formato unificado. Use isso se o arquivo de patch foi gerado

com diff -u.

Page 27: Linux Basico

27

7.2. Manipulação e filtragem de texto

grep

O grep é utilizado para encontrar padrões em arquivos de texto, ou, em outras palavras,

procura num arquivo todas as linhas que possuem a palavra ou expressão informada e as exibe

na tela.

Sintaxe:

$ grep [expressão] [arquivo]

Assim, se você quiser varrer o arquivo /etc/fstab procurando pelas linhas que contém o

texto "/dev/fd0", digite:

$ grep /dev/fd0 /etc/fstab

/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

Se o padrão informado não for encontrado no arquivo especificado, não é exibida

nenhuma mensagem.

cut

O cut é utilizado para selecionar colunas de texto em um arquivo. Suponhamos que

você tenha um arquivo da seguinte forma:

A1 B1 C1

A2 B2 C2

A3 B3 C3

E precise, por algum motivo, que somente a terceira coluna seja exibida na tela, dessa

forma:

C1

C2

C3

É exatamente isso que o cut fará para nós.

Sintaxe:

$ cut [opções] [arquivo]

Page 28: Linux Basico

28

Opções:

-c: Especifica quais caracteres serão exibidos;

-d: Especifica qual o caracter será usado como delimitador de campo;

-f: Lista dos campos que serão exibidos;

-s: Não exibe as linhas que não contém os delimitadores especificados em -d;

--output-delimiter=[string]: Utiliza a string (seqüência de caracteres) especificada como

o delimitador dos campos na saída.

Exemplos de uso:

Considerando o arquivo lista.txt com o conteúdo mostrado acima, se quisermos exibir

somente o quinto caracter de cada linha, usamos:

$ cut -c 5 lista.txt

1

2

3

Se quisermos exibir os primeiros 5 caracteres, utilizamos -5 ao invés de 5:

$ cut -c -5 lista.txt

A1 B1

A2 B2

A3 B3

Se quisermos exibir do quinto caracter em diante, usamos 5-, assim:

$ cut -c 5- lista.txt

1 C1

2 C3

3 C3

Por fim, para exibir do segundo até o sexto caracter:

$ cut -c 2-6 lista.txt

1 B1

2 B2

3 B3

Repare agora que o delimitador de cada coluna é o espaço em branco. Assim, se

quisermos exibir apenas o primeiro campo, usamos:

Page 29: Linux Basico

29

$ cut -f1 -d' ' lista.txt

A1

A2

A3

O parâmetro -f1 informa que queremos que seja exibido o primeiro campo, enquanto -d'

' (dois acentos agudos separados por espaço) informa que o separador de campos é o espaço

em branco. O parâmetro -d não precisa ser utilizado no caso de o arquivo utilizar TAB

(tabulação) como separador de campos.

Seguindo esse raciocínio, se quisermos exibir os campos 1 e 3, usamos:

$ cut -f1,3 -d' ' lista.txt

A1 C1

A2 C3

A3 C3

Com o uso do direcionador | (pipe) podemos processar o mesmo arquivo várias vezes

com o cut, de modo a podermos fazer um processamento poderoso do arquivo de texto. Além

disso, ele aceita a saída de outros programas como entrada, através do mesmo direcionador |.

head

Usamos esse comando para exibir as linhas iniciais de um arquivo.

Sintaxe:

$ head [opções] [arquivo]

Opções:

-c [-][n]: Sem o - (hífen), mostra os primeiros [n] bytes do arquivo. Com o -, mostra

todos os bytes com exceção dos [n] últimos;

-n [-][n]: Sem o -, mostra as primeiras [n] linhas do arquivo. Com o -, mostra todas as

linhas com exceção das [n] últimas;

-v: Imprime um cabeçalho com o nome do arquivo.

Exemplos de uso:

Para ver as primeiras 5 linhas do arquivo file, faça:

$ head -n 5 file

1

2

Page 30: Linux Basico

30

3

4

5

Se quiser exibir todas as linhas menos as 3 últimas:

$ head -n -3 file

1

2

3

4

5

6

7

more

Usamos esse comando para realizar a paginação de arquivos de texto cujo conteúdo

não cabe na tela.

Sintaxe:

$ more [opções] [arquivo]

Opções:

-d: Exibe as mensagens [Press space to continue, 'q' to quit] (pressione espaço para

continuar, 'q' para sair). Ao se pressionar espaço, a tela rola uma página inteira. Se for

pressionada alguma tecla inválida, é exibida a mensagem [Press 'h' for instructions.] (pressione

'h' para instruções.);

-l: Evita que ocorram pausas toda vez que seja encontrado o caracter "^L" (alimentação

de formulário) no texto;

-s: Se houver múltiplas linhas em branco num arquivo, trunca elas em apenas uma;

+/[padrão]: Começa a mostrar o texto a partir da primeira linha que contém o padrão

informado;

+[número]: Especifica qual linha deve ser a primeira a ser mostrada;

-[número]: Especifica o tamanho da tela, em linhas.

Assim, quando quiser ler um texto muito extenso sem precisar abrir um editor de textos

para isso, use o more. O texto será exibido até ocupar a tela inteira, e então aparecerá um

prompt escrito "--More--(xx%)". Presssione Enter para rolar o texto linha por linha. Se quiser

cancelar a exibição e voltar para o prompt de comando, pressione "q".

Page 31: Linux Basico

31

É possível usar o more para exibir vários arquivos seqüencialmente. Basta informar

todos os arquivos separados por espaço.

less

O less tem a mesma utilidade do more, com a vantagem de poder rolar o texto exibido

para cima e para baixo através do uso dos direcionais, além de contar com um localizador de

texto. Para digitar o padrão que você deseja procurar precedido de / (barra).

Sintaxe:

$ less [arquivo]

sort

Usamos esse comando para classificar as linhas de um arquivo de texto.

Sintaxe:

$ sort [opções] [arquivo]

Opções:

-b: Ignora linhas em branco;

-d: Descarta quaisquer linhas iniciadas com caracteres que não sejam espaço em

branco ou alfanuméricos;

-f: Ignora a diferença entre caracteres maiúsculos e minúsculos;

-r: Exibe a lista na ordem inversa;

-n: Organiza os números na ordem aritmética. Sem essa opção, a seqüência de

caracteres 100, 10, 50 seria exibida na ordem 10, 100, 50. Com a opção -n, eles são exibidos

na ordem 10, 50, 100;

-c: Verifica se o arquivo já está organizado. Se não estiver, retorna a mensagem disorder

on [arquivo] (desordem em [arquivo]);

-o [arquivo]: Grava a saída do comando sort no arquivo especificado;

-m [arquivo1] [arquivo2]: Combina o conteúdo dos dois arquivos gerando um único

arquivo. Esse comando só funciona se ambos os arquivos já estiverem ordenados;

-i: ignora os caracteres fora da faixa octal ASCII 040-0176;

-t [caracter]: Usa o caracter especificado ao invés de espaço em branco como

delimitador durante a organização das linhas;

+[número 1] +[número 2]: Especifica qual campo (coluna) será usado como referência

na organização. Os campos começam a ser contados de 0, e o separador de campos padrão é

o espaço. Para selecionar outro delimitador, use o parâmetro -t. Os campos serão organizados

Page 32: Linux Basico

32

de [número 1] até [número 2]. Se [número 2] não for especificado, os campos serão

organizados de [número 1] até o final da linha;

-k [número 1] [número 2]: Idêntico ao parâmetro anterior, mas os campos começam a

ser contados de 1.

Exemplos de uso:

Suponha que você tenha um arquivo file.list com o seguinte contéudo:

$ cat file.list

5 f j 33

2 a c 1

1 t 4 f

6 b c _

10 i r 3

Ao usarmos o comando sort, as linhas serão organizadas de acordo com a primeira

coluna:

$ sort file.list

10 i r 3

1 t 4 f

2 a c 1

5 f j 33

6 b c _

Veja, entretanto, que temos um problema aqui: o 10 foi posto antes do 1, seguindo a

ordem alfabética e não aritmética. Para corrigir isso, acrescentamos o parâmetro -n:

$ sort -n file.list

1 t 4 f

2 a c 1

5 f j 33

6 b c _

10 i r 3

Agora, se quisermos organizar as linhas tomando como referência a segunda coluna ao

invés da primeira, fazemos o seguinte:

$ sort +1 file.list

2 a c 1

6 b c _

5 f j 33

10 i r 3

Page 33: Linux Basico

33

1 t 4 f

Podemos obter o mesmo resultado de outra forma:

$ sort -k 2 file.list

2 a c 1

6 b c _

5 f j 33

10 i r 3

1 t 4 f

Por fim, para gravar o resultado no arquivo fileorder.list, basta acrescetar o parâmetro -o

fileorder.list.

tail

Esse comando é utilizando para mostrar as últimas linhas de um arquivo de texto.

Sintaxe:

$ tail [opções] [arquivo]

Opções:

-c [n]: Exibe apenas os últimos [n] bytes do arquivo;

-n [n]: Exibe as últimas [n] linhas do arquivo;

-f: Fica monitorando o arquivo, e exibe todas as novas linhas adicionadas a ele, em

tempo real. Isso é muito utilizado para monitorar arquivos de log.

wc

Conta o número de linhas, palavras, caracteres e bytes nos arquivos.

Sintaxe:

$ wc [opção] [arquivo]

Opções:

-c: Exibe apenas o número de bytes;

-m: Exibe o número de caracteres;

-l: Exibe o número de linhas;

-L: Exibe o comprimento, em caracteres, da maior linha do arquivo;

Page 34: Linux Basico

34

-w: Exibe o número de palavras encontradas.

Se for usado sem argumentos, o wc exibe o número de linhas, palavras e caracteres do

arquivo, respectivamente:

$ wc file.list

20 42 file.list

7.3. Pesquisa e informações

find

O find (procurar, em inglês) é uma ferramenta que utilizamos para localizar arquivos ou

diretórios no sistema de arquivos.

Sintaxe:

$ find [opções] [caminho] [expressão] [ações]

Opções:

-amin [n]: Procura arquivos que foram acessados há [n] minutos atrás;

-anewer [arquivo]: Procura arquivos que foram acessados depois do [arquivo];

-atime [n]: Procura arquivos que foram acessados há [n] dias atrás;

-cmin [n]: Procura arquivos que tiveram seu status alterado há [n] minutos atrás;

-cnewer [arquivo]: Procura arquivos que tiveram seu status alterado depois do

[arquivo];

-empty: Procura arquivos vazios e que sejam como arquivos regulares ou diretórios;

-fstype [tipo]: Procura apenas arquivos que estejam gravados em sistemas de arquivos

do tipo especificado;

-gid [n]: Procura por arquivos cujo GID seja [n];

-group [grupo]: Procura por arquivos que pertençam ao grupo informado;

-inum [n]: Procura o arquivo cujo I-node seja [n];

-mmin [n]: Procura arquivos que foram modificados a [n] minutos atrás;

-mtime [n]: Procura arquivos que foram modificados a [n] dias atrás;

-name [expressão]: Procura arquivos cujo nome coincida com a expressão digitada;

-newer [arquivo]: Procura arquivos que foram modificados depois do [arquivo];

-nouser: Procura arquivos cuja UID não esteja registrada no sistema;

-nogroup: Procura arquivos cuja GID não esteja resgistrada no sistema;

-path [expressão]: Realiza a busca nos diretórios que coincidam com a expressão

informada;

-perm [permissões]: Procura arquivos que contenham as permissões informadas, no

Page 35: Linux Basico

35

modo octal ou literal;

-perm [-/+][permissões]: Aplica as permissões informadas para os arquivos

encontrados;

-regex [expressão]: Localiza os arquivos que coincidirem com a expressão regular

informada. Lembre-se que expressões simples são diferentes de expressões regulares;

-size [n][b/c/k/w]: Localiza os arquivos cujo tamanho seja [n] múltiplos de:

. b: 512 bytes;

. c: 1 byte;

. k: 1 kilobyte;

. w: 2 bytes.

-type [tipo]: Procura por arquivos que sejam de um tipo específico:

. b: dispositivo de bloco;

. c: dispositivo de caracter;

. d: diretório;

. p: duto nomeado (FIFO);

. f: arquivo regular;

. l: link simbólico;

. s: soquete.

-uid [número]: Procura por arquivos cuja UID seja igual ao [número];

-used [n]: Procura por arquivos que tenham sido acessados [n] dias após seu status ter

sido modificado;

-user [usuário]: Procura por arquivos cujo dono seja o [usuário].

O caminho é o diretório dentro do qual se vai realizar a busca. Para buscar em todo o

sistema de arquivos, deve-se colocar /. Se a busca for feita no diretório atual, pode-se ignorar

esse parâmetro.

A expressão deve ser o nome do arquivo que se está procurando, com ou sem curingas.

Essa expressão pode ser omitida dependendo da opção de pesquisa que se esteja utilizando.

Ações:

É possível realizar ações com os arquivos encontrados. Isso é muito útil quando é

necessário realizar uma determinada operação com todos os arquivos do sistema que tenham

determinadas características.

As principais ações que podem ser executados são:

-exec [comando] [prefixo]{}[sufixo] \;: Executa o comando nos arquivos encontrados. O

comando pode ser qualquer programa do sistema. Os caracteres {} são substituídos pelo

nome do arquivo encontrado. [prefixo] e [sufixo] são opcionais;

-ok [comando] [prefixo]{}[sufixo] \;: O mesmo que -exec, mas pergunta para o usuário

Page 36: Linux Basico

36

antes de executar o comando em cada arquivo.

whereis

Localiza o executável, arquivo/diretório de configuração, diretórios de bibliotecas,

arquivos compartilhados, código-fonte e caminho da página de manual do programa

especificado.

Sintaxe:

$ whereis [opções] [programa]

Opções:

-b: Procura apenas pelo executável do programa;

-m: Procura apenas pela páginas de manual;

-s: Procura apenas pelo diretório do código-fonte;

-u: Procura no diretório atual por arquivos que não possuam alguma das entradas

informadas.

Exemplos de uso:

Para ver a localização dos arquivos e diretórios do GIMP, utilizamos o whereis da

seguinte forma:

$ whereis gimp

gimp:/usr/bin/gimp /etc/gimp /usr/lib/gimp /usr/share/gimp

/usr/share/man/man1/gimp.1.gz

Onde:

/usr/bin/gimp: Executável;

/etc/gimp: Diretório contendo os arquivos de configuração;

/usr/lib/gimp: Diretório contendo as bibliotecas;

/usr/share/gimp: Diretório contendo os arquivos compartilhados;

/usr/share/man/man1/gimp.1.gz: Localização da página de manual.

Para saber apenas a localização da página de manual, utilizamos a opção -m:

$ whereis -m gimp

gimp: /usr/share/man/man1/gimp.1.gz

Page 37: Linux Basico

37

which

Exibe o caminho completo para o comando selecionado.

Sintaxe:

$ which [comando]

Exemplos de uso:

Para sabermos o caminho completo para comando grep, usamos:

$ which grep

/bin/grep

uname

Mostra o nome e a versão do kernel em uso.

Sintaxe:

$ uname [opções]

Opções:

-a: Exibe todas as informações;

-s: Exibe apenas o nome do kernel;

-n: Exibe apenas o nome da máquina na rede;

-r: Exibe apenas a série do kernel;

-v: Exibe apenas a versão do kernel;

-m: Exibe apenas a arquitetura de hardware;

-o: Exibe apenas o nome do sistema operacional.

Exemplos de uso:

$ uname -a

Linux geolix-athlon 2.6.8-2-k7 #1 Mon Jan 24 03:29:52 EST 2005 i686 GNU/Linux

7.4. Comandos de administração do sistema

fuser

Esse programa é utilizado para descobrir quais processos estão utilizando determinados

Page 38: Linux Basico

38

arquivos ou soquetes.

Sintaxe:

$ fuser [-a/-s/-c] [-4/-6] [-n [espaço]] [-k [-i] [-[sinal]] ] [-muvf]

Parâmetros:

-a: Mostra todos os arquivos especificados na linha de comando. Por padrão, somente os

arquivos que estão sendo usados por pelo menos um processo são mostrados;

-s: Modo silencioso;

-c: O mesmo que -m, usado para compatilidade com o padrão POSIX;

-4: Procura apenas por sockets de IPv4;

-6: Procura apenas por sockets de IPv6;

-n [espaço]: Especifica o espaço de nomes a usar. Pode ser:

. file: o modo padrão, procura por arquivos;

. udp: procura por portas UDP;

. tcp: Procura por portas TCP:

-k: Matar os processos que estão acessando o arquivo;

-i: Pergunta antes de matar o processo;

-[sinal]: Informa qual o sinal deve ser usado para matar os processos. Só pode ser usado

junto com o parâmetro -k;

-m: Utilize quando estiver se referindo ao um sistema de arquivos montado ou a um

dispositivo de blocos montado;

-u: Exibe o nome do usuário que iniciou o processo que está utilizando o arquivo;

-v: Modo detalhado, com diversas informações sobre os processos.

Exemplos de uso:

Uma utilidade grande desse programa é a seguinte: suponhamos que você queria

desmontar o disquete, e seja surpreendido por uma mensagem de erro, dizendo que o

dispositivo de disquete está ocupado:

$ umount /dev/fd0

umount: /media/floppy0: device is busy

umount: /media/floppy0: device is busy

Se você não conseguir descobrir qual o processo que está "travando" o disquete, você

pode fazer isso utilizando o fuser. Você precisará ser o administrador do sistema.

# fuser -m /dev/fd0

/dev/fd0: 2877

Page 39: Linux Basico

39

Agora, você pode matar o processo:

# kill 2877

Ou, se quiser, pode matar o comando automaticamente com o fuser:

# fuser -m -k /dev/fd0

Se o processo não for encerrado, utilize o sinal -9 para destrui-lo:

# fuser -m -k -9 /dev/fd0

Repare que, nesse caso, utilizamos -m porque se trata de um dispositivo de blocos,

/dev/fd0. Se fosse um arquivo comum, esse parâmetro não seria usado.

Outro uso que pode ser usado por administrador de rede é procurar por processos que

estejam utilizando determinadas portas. Por exemplo, pra saber qual o processo que está

utilizando a porta TCP 445, utilizamos:

# fuser -n tcp 445

445/tcp: 2674

df

Mostra o espaço utilizado de cada partição.

Sintaxe:

$ df [opção] [partição]

Opções:

-a: Inclui na verificação os sistemas de arquivos com 0 blocos;

-B [tamanho]: Usa blocos do tamanho especificado;

-h: Exibe os tamanhos num formato de fácil compreensão (1K, 23M, 2G);

-H: Igual ao -h, mas usa múltiplos de 1000 ao invés de 1024;

-i: Mostra as informações dos inodes;

-k: O mesmo que -B 1K;

-l: Só exibe informações dos sistemas de arquivos locais;

-P: Usa o formato de saída POSIX;

--sync: Executa o sync antes de obter as informações;

-t [tipo]: Só mostra informações dos sistemas de arquivos do tipo especificado;

-T: Mostra qual o tipo do sistema de arquivos de cada partição exibida;

-x [tipo]: Mostra todos os tipos de sistemas de arquivos exceto o tipo especificado aqui.

Page 40: Linux Basico

40

Exemplos de uso:

Um exemplo simples:

$ df -h

Sist. Arq. Tam Usad Disp Uso% Montado em

/dev/hda1 267M 245M 22M 92% /

udev 10M 148K 9,9M 2% /dev

tmpfs 237M 0 237M 0% /dev/shm

/dev/hda 66G 49G 18G 74% /home

/dev/hda8 385M 33M 352M 9% /tmp

/dev/hda5 4,7G 3,8G 951M 81% /usr

/dev/hda6 2,8G 1,8G 1,1G 63% /var

/dev/sda1 488M 488M 0 100% /media/dis

k

du

Esse comando, sigla de disk usage (uso de disco), é usado para estimar o espaço em

disco usado pelos arquivos. Em outras palavras, usamos o du para saber o tamanho dos

arquivos.

Sintaxe:

$ du [opções] [arquivo] Opções:

-a: Exibe o tamanho de todos os arquivos dentro dos subdiretórios do diretório

especificado, e não somente dos arquivos imediatamente dentro do diretório;

--aparent-size: Exibe o tamanho aparente, que pode ser maior ou menor que o tamanho

real, dependendo de fatores com fragmentação, blocos indiretos e similares;

-B [tamanho]: Exibe o tamanho dos arquivos em blocos do tamanho especificado;

-b: Igual a -B 1;

-c: Exibe uma linha com o tamanho total de todos os arquivos contabilizados;

-D: Quando usado para links simbólicos, considera o local para onde o link aponta e não

o link em si. Só considera arquivos;

-h: Mostra os tamanhos de forma comprensível (2K, 32M, 1G);

-H: O mesmo que -h, mas usa blocos de 1000 ao invés de 1024;

-k: O mesmo que -B 1K;

-L: O mesmo que -D, mas considera qualquer tipo de arquivo;

Page 41: Linux Basico

41

-S: Não mostra o tamanho dos subdiretórios;

-s: Mostra apenas o tamanho total de cada item (arquivo ou diretório);

-x: Ignora arquivos que estejam em outro sistema de arquivos;

-X [padrão]: Não contabiliza os arquivos que correspondam ao padrão informado;

-m: O mesmo que -B 1M.

Suponha que você esteja no diretório /home/ana/, que contenha os seguintes arquivos e

diretórios:

$ ls

arquivo_teste Desktop exe iso src tmp

deb doc img music.m3u teste

Se quisermos ver o tamanho do arquivo playlist.m3u:

$ du music.m3u

8 music.m3u

O tamanho é exibido em KB. No caso, o arquivo tem 8 KB.

Se quisermos ver o tamanho do diretório img/:

$ du img

14374 modis/imgs-143-1108-2007

229 modis/espectroradiometria/science_arquivos

229 modis/espectroradiometria/science1_arquivos

2203 modis/espectroradiometria

71919 modis

Veja que o tamanho em KB não é muito confortável. Usamos o parâmetro -h para que os

valores sejam exibidos de uma forma compreensível:

$ du -h modis

15M modis/imgs-143-1108-2007

229K modis/espectroradiometria/science_arquivos

229K modis/espectroradiometria/science1_arquivos

2,2M modis/espectroradiometria

71M modis

Podemos também querer que sejam contabilizados os arquivos dos subdiretórios

modis/espectroradiometria/ e modis/imgs-143-1108-2007/. Nesse caso, usamos o parâmetro -a:

$ du -h -a modis

Page 42: Linux Basico

42

8,1M modis/imgs-143-1108-2007/crefl1_143.A2007223135000-2007223135500.250m.jpg

6,1M modis/imgs-143-1108-2007/crefl1_143.A2007223135500-2007223140000.250m.jpg

15M modis/imgs-143-1108-2007

228K modis/espectroradiometria/science.html

40K modis/espectroradiometria/science_arquivos/x.js

4,0K modis/espectroradiometria/science_arquivos/tree.gif

4,0K modis/espectroradiometria/science_arquivos/quicklink_a.gif

4,0K modis/espectroradiometria/science_arquivos/clear.gif

4,0K modis/espectroradiometria/science_arquivos/emailarticle_a.gif

4,0K modis/espectroradiometria/science_arquivos/0.gif

16K modis/espectroradiometria/science_arquivos/css_gen_v01.css

4,0K modis/espectroradiometria/science_arquivos/a.gif

4,0K modis/espectroradiometria/science_arquivos/nextterm.gif

4,0K modis/espectroradiometria/science_arquivos/space.gif

4,0K modis/espectroradiometria/science_arquivos/arrow_small_a.gif

4,0K modis/espectroradiometria/science_arquivos/citedby_a.gif

4,0K modis/espectroradiometria/science_arquivos/icon_doi.gif

4,0K modis/espectroradiometria/science_arquivos/css_art_v01.css

4,0K modis/espectroradiometria/science_arquivos/0_002.gif

4,0K modis/espectroradiometria/science_arquivos/0_003.gif

4,0K modis/espectroradiometria/science_arquivos/0_004.gif

4,0K modis/espectroradiometria/science_arquivos/0_005.gif

4,0K modis/espectroradiometria/science_arquivos/0_006.gif

4,0K modis/espectroradiometria/science_arquivos/0_007.gif

4,0K modis/espectroradiometria/science_arquivos/0_008.gif

4,0K modis/espectroradiometria/science_arquivos/0_009.gif

4,0K modis/espectroradiometria/science_arquivos/0_010.gif

4,0K modis/espectroradiometria/science_arquivos/0_011.gif

8,0K modis/espectroradiometria/science_arquivos/0_012.gif

4,0K modis/espectroradiometria/science_arquivos/0_013.gif

4,0K modis/espectroradiometria/science_arquivos/exportarticle_a.gif

4,0K modis/espectroradiometria/science_arquivos/gw_ol_rts.gif

4,0K modis/espectroradiometria/science_arquivos/REemail.gif

4,0K modis/espectroradiometria/science_arquivos/prevterm.gif

4,0K modis/espectroradiometria/science_arquivos/sign_minus.gif

4,0K modis/espectroradiometria/science_arquivos/btn_go1.gif

4,0K modis/espectroradiometria/science_arquivos/saveascitationalert_a.gif

4,0K modis/espectroradiometria/science_arquivos/REcor.gif

12K modis/espectroradiometria/science_arquivos/capeslogo.html

4,0K modis/espectroradiometria/science_arquivos/logo.gif

4,0K modis/espectroradiometria/science_arquivos/btn_clear1.gif

4,0K modis/espectroradiometria/science_arquivos/blankhtml.html

4,0K modis/espectroradiometria/science_arquivos/qs_tips.gif

Page 43: Linux Basico

43

4,0K modis/espectroradiometria/science_arquivos/sign_plus.gif

4,0K modis/espectroradiometria/science_arquivos/rsscite.gif

4,0K modis/espectroradiometria/science_arquivos/204e.gif

229K modis/espectroradiometria/science_arquivos

228K modis/espectroradiometria/science1.html

40K modis/espectroradiometria/science1_arquivos/x.js

4,0K modis/espectroradiometria/science1_arquivos/tree.gif

4,0K modis/espectroradiometria/science1_arquivos/quicklink_a.gif

4,0K modis/espectroradiometria/science1_arquivos/clear.gif

4,0K modis/espectroradiometria/science1_arquivos/emailarticle_a.gif

4,0K modis/espectroradiometria/science1_arquivos/0.gif

16K modis/espectroradiometria/science1_arquivos/css_gen_v01.css

4,0K modis/espectroradiometria/science1_arquivos/a.gif

4,0K modis/espectroradiometria/science1_arquivos/nextterm.gif

4,0K modis/espectroradiometria/science1_arquivos/space.gif

4,0K modis/espectroradiometria/science1_arquivos/arrow_small_a.gif

4,0K modis/espectroradiometria/science1_arquivos/citedby_a.gif

4,0K modis/espectroradiometria/science1_arquivos/icon_doi.gif

4,0K modis/espectroradiometria/science1_arquivos/css_art_v01.css

4,0K modis/espectroradiometria/science1_arquivos/0_002.gif

4,0K modis/espectroradiometria/science1_arquivos/0_003.gif

4,0K modis/espectroradiometria/science1_arquivos/0_004.gif

4,0K modis/espectroradiometria/science1_arquivos/0_005.gif

4,0K modis/espectroradiometria/science1_arquivos/0_006.gif

4,0K modis/espectroradiometria/science1_arquivos/0_007.gif

4,0K modis/espectroradiometria/science1_arquivos/0_008.gif

4,0K modis/espectroradiometria/science1_arquivos/0_009.gif

4,0K modis/espectroradiometria/science1_arquivos/0_010.gif

4,0K modis/espectroradiometria/science1_arquivos/0_011.gif

8,0K modis/espectroradiometria/science1_arquivos/0_012.gif

4,0K modis/espectroradiometria/science1_arquivos/0_013.gif

4,0K modis/espectroradiometria/science1_arquivos/exportarticle_a.gif

4,0K modis/espectroradiometria/science1_arquivos/gw_ol_rts.gif

4,0K modis/espectroradiometria/science1_arquivos/REemail.gif

4,0K modis/espectroradiometria/science1_arquivos/prevterm.gif

4,0K modis/espectroradiometria/science1_arquivos/sign_minus.gif

4,0K modis/espectroradiometria/science1_arquivos/btn_go1.gif

4,0K modis/espectroradiometria/science1_arquivos/saveascitationalert_a.gif

4,0K modis/espectroradiometria/science1_arquivos/REcor.gif

12K modis/espectroradiometria/science1_arquivos/capeslogo.html

4,0K modis/espectroradiometria/science1_arquivos/logo.gif

4,0K modis/espectroradiometria/science1_arquivos/btn_clear1.gif

4,0K modis/espectroradiometria/science1_arquivos/blankhtml.html

4,0K modis/espectroradiometria/science1_arquivos/qs_tips.gif

Page 44: Linux Basico

44

4,0K modis/espectroradiometria/science1_arquivos/sign_plus.gif

4,0K modis/espectroradiometria/science1_arquivos/rsscite.gif

4,0K modis/espectroradiometria/science1_arquivos/204e.gif

229K modis/espectroradiometria/science1_arquivos

1,3M modis/espectroradiometria/science.htm

2,2M modis/espectroradiometria

25M modis/MRTLinux.zip

25M modis/tools.asp

3,8M modis/tools1.asp

96K modis/unzip1

220K modis/5839-5845.pdf

16K modis/install1

71M modis

Essa lista ficou muito extensa. Se quisermos exibir somente o tamanho total de cada

diretório, retiramos o parâmetro -a, acrescentamos o parâmetro -s, e nos referenciamos a

modis/* ao invés de modis:

$ du -h -s modis/*

220K modis/5839-5845.pdf

2,2M modis/espectroradiometria

15M modis/imgs-143-1108-2007

16K modis/install1

25M modis/MRTLinux.zip

3,8M modis/tools1.asp

25M modis/tools.asp

96K modis/unzip1

Dessa última forma, porém, o tamanho total do diretório não foi informado. Para isso,

basta acrescentar o parâmetro -c:

$ du -h -s -c modis/*

220K modis/5839-5845.pdf

2,2M modis/espectroradiometria

15M modis/imgs-143-1108-2007

16K modis/install1

25M modis/MRTLinux.zip

3,8M modis/tools1.asp

25M modis/tools.asp

96K modis/unzip1

71M total

Page 45: Linux Basico

45

free

Comando muito utilizado para análise do desempenho do sistema, o free exibe

informações sobre o uso de memória pelo computador.

Sintaxe:

$ free [-b / -k / -m] [-o] [-s delay ] [-t]

Parâmetros:

-b: Exibe as quantidades em bytes;

-k: Exibe as quantidades em kilobytes;

-m: Exibe as quantidades em megabytes;

-o: Não exibe a linha -/+ buffers/cache;

-s [tempo]: Especifica o intervalo de tempo, em segundos, entre as atualizações das

informações. Se esse parâmetro não for usado, é exibida apenas uma informação. Se usado,

vai exibindo as informações indefinidamente no intervalo de tempo definido, até que o usuário

pressione CTRL + C;

-t: Exibe uma linha com os valores totais;

Vejamos o uso mais comum do free:

$ free

total used free shared buffers cached

Mem: 484408 477704 6704 0 64948 148356

-/+ buffers/cache: 264400 220008

Swap: 1421712 828 1420884

Das linhas acima, interpreta-se as seguintes informações:

. Memória RAM total: 484408 KB

. Memória RAM usada: 477704 KB

. Memória RAM livre: 6704 KB

. Informações em buffer: 64948 KB

. Informações em cache: 148356 KB

. Memória swap total: 1421712 KB

. Memória swap usada: 828 KB

. Memória swap livre: 1420884 KB

. Buffers/Cache usados: 264400 KB

. Buffers/Cache livres: 220008 KB

Page 46: Linux Basico

46

A exibição em KB pode não ser muito confortável. Se quiser que os tamanhos sejam

exibidos em MB, utilize o parâmetro -m:

$ free -m

total used free shared buffers cached

Mem: 496 489 7 0 66 145

-/+ buffers/cache: 277 219

Swap: 1906 0 1905

time

Esse é um comando muito útil para medir o desempenho do sistema. Com o time

podemos medir o tempo, em segundos, necessários para executar um processo ou programa.

Sintaxe:

$ time [opções] [comando]

Opções:

-o [arquivo]: Grava as estatísticas coletadas durante a execução do comando para o

arquivo especificado, para análise posterior;

-a: Quando usado junto com o parâmetro -o, não apaga o conteúdo do arquivo ao

gravar as estatísticas;

-v: Exibe os detalhes da execução do comando.

Assim, suponha que você tenha um script de backup, e queira saber quanto tempo ele

demora para ser executado:

$ time backup

real 0m39.054s

user 0m28.560s

sys 0m0.689s

O campo real nos mostra quanto tempo o processo demorou para ser executado. No

caso, 39,054 segundos. O campo user informa quanto tempo a CPU gastou processando

apenas os dados do comando. Nesse exemplo, 28,560 segundos. O campo sys informa qual o

intervalo média de espera da CPU entre cada ciclo de processamento dos dados do comando.

Aqui, o tempo foi de 0,689 segundos.

uptime

Page 47: Linux Basico

47

Mostra o período em que o sistema permaneceu em processamento desde que foi

ligado.

Uso:

$ uptime

O uptime não possui parâmetros. Basta digitar uptime no terminal. Veja um exemplo:

$ uptime

16:40:18 up 7:48, 3 users, load average: 0.43, 0.29, 0.26

Aqui, vemos que o computador esteve ligado por 16:40 horas, mas só esteve em

processamento durante 7:48 horas. Durante esse período, 3 usuários acessaram o sistema, e a

carga média do sistema, que vai de 0 a 1, foi de 0,43 no último 1 minuto, 0,29 nos últimos 5

minutos e 0,26 nos últimos 15 minutos.

dmesg

Esse comando é utilizado para ver as mensagens de inicialização do sistema. Útil para

analisar eventuais mensagens de erro exibidas devido a qualquer problema que esteja

ocorrendo durante a inicialização.

Sintaxe:

Como as mensagens são muito extensas, utilize o more ou o less para visualizar as

informações:

$ dmesg | more

$ dmesg | less

echo

Exibe mensagens na tela. Esse comando é utilizado principalmente para a construção

de scripts de sistema.

Sintaxe:

$ echo [opções] [cadeia de caracteres]

Opções:

-n: Não insere uma nova linha;

-e: Ativa a interpretação de caracteres de escape, listados a seguir:

\NNN: Código ASCII octal do caracter;

Page 48: Linux Basico

48

\\: Barra invertida (\);

\a: Alerta sonoro (beep);

\b: Backspace;

\c: Não exibe a linha de final de arquivo;

\f: Alimentação de formulário (form feed);

\n: Nova linha;

\r: Retorno de carro (carriage return);

\t: Tabulação horizontal;

\v: Tabulação vertical.

Exemplos de uso:

$ echo "Projeto geolix"

Projeto geolix

$ echo -e "Primeira linha\nSegunda linha\n\tTerceira linha com tabulação horizontal"

Primeira linha

Segunda linha

Terceira linha com tabulação horizontal

Com o uso de direcionadores, pode-se usar o echo para inserir texto em arquivos, com a

seguinte sintaxe:

$ echo [mensagem] [> / >>] [arquivo]

Onde > apaga o conteúdo o arquivo, se existir, e >> adiciona o texto no final do

arquivo.

Exemplos de uso:

$ echo -n > /etc/modules

Apaga o conteúdo do arquivo /etc/modules.

$ echo -e "192.168.0.35\tana.geolix.org\tana" >> /etc/hosts

Adiciona a seguinte linha no arquivo /etc/hosts:

192.168.0.35 ana.geolix.org ana

su

Esse comando é utilizado para um usuário assumir os privilégios de outro usuário do

sistema.

Page 49: Linux Basico

49

Sintaxe:

$ su [opções] [usuário]

A digitar o comando é necessário digitar a senha do usuário selecionado. Se nenhum

usuário for especificado, o sistema entende que o usuário quer assumir os privilégios de

administrador do sistema (root).

Uma opção muito útil é o parâmetro -c, que permite executar um comando específico

com os privilégios do usuário selecionado, e ao término da execução perder esses privilégios.

Exemplos de uso:

Um exemplo é a compilação de um pacote. O comando make install, que faz a

instalação propriamente dita do pacote, só pode ser executado pelo usuário root. Assim, temos

que fazer o seguinte:

$ su

password:

# make install

# exit

Ao invés disso, podemos simplesmente digitar:

$ su -c "make install"

password:

O comando será executado e, ao seu término, perdemos os privilégios de administrador

de sistema.

sync

Esse comando é utilizado para gravar os dados armazenados em cache nos locais

apropriados. O uso mais comum é para gravar os dados em unidades de disco removível,

geralmente disquete.

Uso:

O sync não possui parâmetros. Para usá-lo, execute:

$ sync

Page 50: Linux Basico

50

reboot

Reinicia o computador. Por padrão, somente o root pode executar esse comando.

Sintaxe:

# reboot

shutdown

Usado para desligar o sistema. Por padrão, somente o root pode executar o shutdown.

Sintaxe:

# shutdown [opções] [hora] [mensagem de alerta]

Opções:

-t [tempo]: Espera o tempo especificado (em segundos) entre matar os processos e

mudar de nível de execução;

-k: Não desliga o sistema, apenas envia a mensagem de alerta a todos os usuários que

estão conectados;

-r: Reinicia o sistema após o desligamento;

-h: Desliga o computador;

-f: Não roda o utilitário fsck no caso de reiniciar o sistema;

-F: Força o uso do fsck no reinício do sistema;

-c: Cancela um processo de desligamento que esteja sendo executado no momento.

Em [hora] você pode especificar o horário exato para o sistema desligar, como 12:34,

por exemplo, ou então utilizar +[n], para desligar o sistema daqui a [n] minutos. Para desligar o

sistema imediatamente, use +0 ou a palavra now.

A mensagem de alerta será enviada a todos os usuários conectados ao sistema, para

que eles tenham tempo de salvar seus arquivos e se desconectarem.

Exemplos de uso:

O uso mais comum do shutdown é para desligar o sistema o computador

imediatamente:

# shutdown -h now

Page 51: Linux Basico

51

7.5. Comandos de terminal

clear

Limpa a tela do terminal.

Uso:

$ clear

history

O comando history (histórico) mostra a lista dos últimos comandos executados pelo

usuário corrente. Isso é útil quando há a necessidade de executar um comando extenso, com

muitos parâmetros, do qual não consigamos nos lembrar, ou para fazer auditoria.

Sintaxe:

$ history [opções]

Exemplos de uso:

$ history

104 su -

105 exit

106 vim teste.php

107 cp teste.php /var/www/

108 su -

109 su -

110 find / -name my.snf

111 find / -name my.cnf

112 su -

113 man psql

114 psql template1 postgres

115 psql template1

116 zmore /usr/share/doc/postgresql-8.2/README.Debian.gz

117 mysql -u root

118 cat /etc/apt/sources.list

119 su -

120 exit

121 su -

122 visudo

123 su -

Page 52: Linux Basico

52

124 exit

Para executar novamente o comando man psql, basta anotar o seu número, e dar o

comando:

$ !113

Para procurar um determinado comando, use o history em conjunto com o grep.

Considerando um outro exemplo e, um outro trecho resultante do comando history, pode-se

procurar pelo comando normalize, pra ver quais parâmetros devemos usar:

$ history | grep normalize

480 normalize-ogg --bitrate 192 creed_-_say_i.ogg

485 normalize-mp3 --ogg --bitrate 192 creed_-_the_wall.mp3

493 normalize-mp3 --ogg --bitrate 192 vento_aragano.mp3

503 history | grep normalize

Agora, podemos ver os parâmetros que usamos anteriormente.

Existem outros métodos de utilização do history, que podem ser vistos na sua página de

manual:

$ man history

7.6.

1.1

1.2 Formato padrão de uma linha de comando

1.3 Comparação DOS X LINUX

7.6 Formato padrão de uma linha de comando

Geralmente os comando no LINUX, observam letras minúsculas. Assim, o Shell, poderá

interpretar corretamente. Essa observância, é válida também, para o nome de arquivos.

Exemplo: “arquivo.txt” e “ARQUIVO.TXT”, são considerados arquivos distintos.

Os comandos em LINUX, não podem ser abreviados, sendo seu formato padrão,

constituído pelo nome do comando, seguido de opções e argumentos. Dessa forma, pode ser

simplificado em sentença, da seguinte forma:

geomatica@katrina:~$ comando [- opção...] [argumento...]

A opção, ou opções, são letras que redefinem ou modificam a ação do comando,

enquanto que o argumento, ou argumentos, são os objetos que sofrerão a ação do comando.

Page 53: Linux Basico

53

Os nomes dos argumentos devem ser separados por espaços em branco, não podendo

ser utilizada a vírgula. Pode-se porém, digitar mais de um comando em uma única linha, desde

que sejam separados por ponto e vírgula (;).

7.7 Comparação entre os comandos DOS e LINUX

O objetivo é apresentar uma relação de comandos equivalentes no DOS e o seu

correspondente no sistema operacional LINUX.

Tabela 2 – Correspondência entre os comandos DOS e LINUX

Comando do DOS Correspondente no LINUX

ATTRIB chmod

CD cd

CLS clear

COMP diff

COPY cp

DATE date

DEL rm

DELTREE rm –rf

DIR ls

ECHO echo

EDIT vi

EDLIN ed

HELP man

MD mkdir

MORE more

MOVE mv

PRINT lp, lpr

RD rmdir

REN mv

SORT sort

TIME date

TYPE cat

VER uname –a

XCOPY cp –r

Obs.: Esta tabela mostra uma correspondência entre alguns comandos do DOS e os

comandos do LINUX e não uma equivalência. Os comandos do LINUX são, em geral, mais

complexos e poderosos do que os correspondentes no DOS.

Page 54: Linux Basico

54

8. Redirecionamento, filtros e pipes

8.1 Redirecionamento

Normalmente, quando um comando é executado, a saída é direcionada para a tela do

terminal e a entrada direcionada do teclado. Em várias situações, se faz necessário

redirecionar a entrada e/ou saída de um comando. O LINUX permite fazê-lo de maneira simples

e elegante, utilizando símbolos de redirecionamento de entrada e saída:

Tabela 3 - símbolos de Redirecionamento

Símbolo Descrição

> Redireciona a saída. Caso o arquivo já exista, seu conteúdo é sobreposto, caso

contrário o arquivo é criado.

>> Redireciona a saída. Caso o arquivo já exista, seu conteúdo não é sobreposto,

mas sim inserido no final do arquivo.

< Redireciona a entrada.

2> Redireciona a saída de mensagens de erros.

Exemplos:

$ ls -l > diretor.lis

$ cat diretor.lis

$

Redireciona a saída do comando ls da tela para o arquivo diretor.lis.

$ ls -l >> diretor.lis

$ cat diretor.lis

$

Redireciona a saída do comando ls da tela para o final do arquivo diretor.lis.

$ cat < arq.txt

$

Redireciona a entrada do comando cat do teclado para o arquivo arq.txt.

$ date > arq.lis 2> arq.err

$

Redireciona a saída do comando date para o arquivo arq.lis e redireciona qualquer

Page 55: Linux Basico

55

mensagem de erro para arquivo arq.err.

8.2 Filtros

Filtros são comandos ou utilitários que manipulam dados de entrada e geram uma nova

saída. A seguir apresentamos os principais filtros:

Sort:

O comando sort permite ordenar um ou mais arquivos de entrada e gerar um novo

arquivo de saída.

Exemplo:

$ cat alunos.txt

Francisco

LP

Berra

$ sort -o alunos.ord alunos.txt

$ cat alunos.ord

Berra

Francisco

LP

$

Grep

O comando grep (global regular expression printer) procura todas as ocorrências de um

determinado padrão (string) em um ou mais arquivos de entrada. A saída do comando é uma

lista das linhas a onde o padrão foi encontrado.

Exemplo:

$ cat arq.txt

amo

amor

amora

amoroso

clamor

namoro

ramo

$ grep 'moro' arq.txt

amoroso

Page 56: Linux Basico

56

namoro

$

8.3 Pipes

Suponha que você queira utilizar a saída de um comando como entrada de um segundo

comando. Uma maneira é criar um arquivo temporário para armazenar a saída do primeiro

comando, utilizar o mesmo arquivo como entrada no comando seguinte e, posteriormente,

eliminar o arquivo temporário.

Exemplo:

$ who > temp.txt

$ wc -l < temp.txt

10

$ rm temp.txt

$

O comando who, que lista todos os usuários conectados ao sistema, cria o arquivo

temporário temp.txt. O comando wc -l, que conta o número de linhas do arquivo, utiliza o

mesmo arquivo temporário para informar quantos usuários estão conectados ao sistema.

O LINUX permite que esse tipo de processamento seja implementado de forma bastante

simples, utilizando o conceito de pipeline. Através da barra vertical ( | ), ou pipe, a saída de um

comando pode ser direcionada para entrada de um outro comando sem a utilização de

arquivos temporários. A idéia do pipeline pode ser comparada a uma linha de montagem, onde

uma linha de produção fornece insumos para outra linha, sucessivamente.

Exemplos:

$ who | wc -l

10

$ ls -l | grep '\.txt$' | sort | lpr

O comando ls gera uma listagem completa dos arquivos e subdiretórios do diretório de

trabalho. O comando grep seleciona os arquivos que terminam com '.txt', a partir da saída

comando ls. O comando sort ordena os arquivos selecionados pelo grep. Finalmente a lista dos

arquivos é impressa através do comando lpr.

$ ls -l | sort +4n | grep '\.c$'

O comando ls gera uma listagem completa dos arquivos e subdiretórios de trabalho. O

comando sort ordena a saída em função do tamanho de cada arquivo (+4n). O comando pega

Page 57: Linux Basico

57

a saída ordenada e seleciona apenas aqueles que terminem com '.c'.

$ ls -l | sort +8 | grep '^d'

O comando exibe uma lista de subdiretórios ordenados crescentemente.

$ who | sort | tee usuarios.txt | wc -l

O comando tee permite recuperar resultados intermediários de pipes, permitindo,

inclusive, armazenar a saída de um pipe em um arquivo.

9. Montando e Desmontando Dispositivos

Muitos usuários, ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato

de colegas que já usam o Linux, sentem-se incentivados a experimentarem o sistema. A

grande maioria já tem o sistema operacional Windows instalado e decide compartilhar o

computador também com o Linux. Mas quase sempre, o usuário necessita acessar arquivos

presentes na partição do Windows. Isso é perfeitamente possível, através de um processo

conhecido como montagem da partição. Algumas distribuições Linux montam as partições

Windows automaticamente, mas em outras, é necessário que o usuário faça isso

manualmente. Esse processo é simples e será explicado aqui. Os procedimentos a seguir

devem ser executados como usuário root ou outro que tenha permissões de administrador.

9.1 Discos

O primeiro passo é saber como identificar os discos (HD, CD-ROM, disquete) no Linux.

Tais dispositivos, além de outros (como a porta LPT1) são tidas como existentes no diretório

/dev/. O HD é identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador

e assim por diante). O número 0, indica a partição no HD. Com isso, a segunda partição deve

ser identificada como hda1, a terceira como hda2, enfim. No caso de HDs SCSI, as letras hd

devem ser trocadas por sd, ficando da seguinte forma: sda0, sda1, sda2, etc.

No caso do drive de disquete, a sigla para sua identificação é fd0. Se houver outro drive,

este deve ser identificado como fd1. No caso dos CD-ROMS, eles são identificados como HDs.

Assim, se por exemplo, em seu computador há um HD e um CD-ROM, o HD poderá ser

reconhecido como hda e o CD como hdb.

9.2 Montando a partição

Agora que já se sabe o que são e como funcionam os dispositivos no Linux, serão

estudados os comandos mount e umount, que são os responsáveis pela montagem dos

dispositivos. Mas, antes de montar qualquer dispositivo, é preciso saber quais dispositivos

estão ligados a ele. Primeiramente, os arquivos que mapeiam dispositivos estão no diretório

/dev da estrutura de diretórios de seu Linux. Serão mostrados a seguir os dispositivos que são

Page 58: Linux Basico

58

mais freqüentemente utilizados para montagem. A Tabela 4 apresenta os dispositivos mais

usados no cotidiano, com seus respectivos periféricos.

Tabela 4 - Periféricos

Arquivo Mapeia qual periférico

hda Primeiro disco rígido instalado na máquina (master).

hdaX A partição X do primeiro disco rígido instalado. hda1 mapeia a primeira partição

do disco.

hdb O segundo disco rígido/CD-ROM instalado na máquina (slave).

hdbX A partição X do primeiro disco rígido instalado. hdb1 mapeia a primeira partição

do disco.

fd0 O primeiro drive de disquete.

fd1 O segundo drive de disquete.

cdrom O drive de CD-ROM instalado na máquina (caso exista).

Vale aqui uma lembrança: em hd?X, o item X pode variar de acordo com o número de

partições existentes no disco rígido e ? pode variar de acordo com o número de discos rígidos

instalados na máquina.

Para a partição Windows, você deve saber qual das existentes é ela. Em nosso exemplo,

vamos supôr que o Windows está na partição hda0 e o Linux na partição hda1. Tendo ciência

disso, agora é necessário que você crie um diretório no Linux por onde a partição Windows

deverá ser acessada, ou seja, o ponto de montagem. Geralmente, este diretório é criado dentro

da pasta /mnt/ mas pode ser criado em outro. Para o nosso exemplo, vamos chamar este

diretório de win. Assim, seu caminho é /mnt/win.

O próximo passo é comando de montagem:

mount - t [tipo] [caminho da partição] [ponto de montagem]

Em nosso exemplo, o comando acima ficaria assim:

mount -t vfat /dev/hda0 /mnt/win

O tipo indica o sistema de arquivos utilizados na partição. Partições fat e fa32 são

identificados como vfat. No caso de CD-ROM, o tipo deve ser especificado como iso9660. Por

exemplo: mount -t iso9660 /dev/hdb /mnt/cdrom. As partições NTFS podem teriocamente,

serem montadas do mesmo jeito. No entanto, existem problemas de compatibilidade entre o

kernel do Linux e o sistema de arquivos NTFS, motivo pelo qual, a montagem desse tipo de

partição deve seguir procedimentos especiais, que não serão explicadas aqui. Se a partição

Page 59: Linux Basico

59

que você deseja montar for ext2 ou ext3, basta especificar estes nomes como tipo.

No exemplo a seguir, será demonstrado o procedimento para a montagem de um

disquete formatado para Windows:

# mount -t vfat /dev/fd0 /mnt/floppy

Este comando instrui o kernel para que ele inclua o sistema de arquivos encontrado em

/dev/fd0, que é do tipo vfat, disponibilizando-o no diretório /mnt/floppy. Caso haja algum

arquivo no diretório onde foi montado o disquete (ou outro sistema de arquivos), esse

conteúdo ficará indisponível enquanto o sistema de arquivos estiver montado. O diretório

/mnt/floppy referenciará o diretório raiz ("/") do sistema de arquivos montado.

Existem vários tipos de dispositivos que podem ser montados. Na Tabela 5, Tipos de

sistemas de arquivos constam os tipos mais utilizados.

Tabela 5 - Tipos de sistemas de arquivos

Tipo Descrição

vfat Disquete formatado para Windows.

ext2 Disquete formatado para Linux.

ext3 Disquete formatado para Linux.

reiserfs Formato usado para Linux

xfs Formato usado para Linux

jfs Formato usado para Linux

iso9660 CD-ROM.

Dica Para montar dispositivos automaticamente, ou melhor, na hora do boot na

máquina, você deve editar o arquivo /etc/fstab, onde deverá acrescentar uma nova

linha, indicando a montagem do dispositivo. Esta opção é interessante para HDs com mais de

uma partição.

Nota É importante não remover um dispositivo (físico), como um disquete de seu drive,

enquanto ele permanecer montado. Existem operações que são efetuadas quando um

dispositivo é desmontado. Uma delas é a gravação de dados que possam estar no

buffer de armazenamento, esperando ser gravados.

Depois que um sistema de arquivos é montado, pode-se utilizá-lo normalmente. Ao final

da utilização do sistema de arquivos, deve-se desmontá-lo para que se possa, por exemplo,

remover o CD do drive. Para isso é utilizado o comando umount, que desmonta o sistema de

arquivos. A sintaxe do comando umount é:

umount dispositivo

Page 60: Linux Basico

60

ou então:

umount diretório

Normalmente, apenas o superusuário poderá montar e desmontar um sistema de

arquivos. Existe uma maneira simples para que o usuário comum acesse o disquete. São

os comandos do pacote mtools. O mtools é uma coleção de ferramentas que permite ao Linux

manipular arquivos MS-DOS.

Sempre que possível o comando tenta simular o comando equivalente a esse sistema.

Por exemplo, comandos como mdir a: funcionam na unidade de disquetes a: sem qualquer

montagem ou inicialização prévia. Alguns dos comandos suportados pelo pacote mtools são:

mattrib, mbadblocks, mcat, mcd, mclasserase, mcopy, mdel, mdeltree, mdir, mdoctorfat, mdu,

mformat, minfo, mlabel, mmd, mmount, mpartition, mrd, mread, mmove, mren, mshowfat,

mtoolstest, mtype, mwrite, mzip. Para utilizá-los, basta digitar o comando desejado em um

terminal como no exemplo abaixo:

$ mdir

10. Pacotes DEB

O sistema operacional Debian GNU/Linux conta com uma das mais eficientes

ferramentas de atualização do sistema, tanto no que se refere a atualizações críticas de

segurança colocadas em servidores/repositórios pelo pessoal do desenvolvimento, como na

instalação/remoção de programas. É o chamado apt-get.

A tecnologia implementada "engenharia" deste sistema é simples de se entender. O

Debian ao receber um comando da família apt-get, fará a leitura do arquivo

/etc/apt/sources.list onde está a configuração de repositórios que deverão ser consultada para

a realização do comando executado. O arquivo sources.list possui as linhas descrevendo uma

lista de repositórios (oficiais ou não) previamente editados segundo sua preferência ou ainda,

podem estar em um CD/DVD ou na web (mais comum).

O Debian conta com 3 árvores de desenvolvimento: stable, unstable e testing. Ele é

famoso pela sua chatice na busca pela perfeição e estabilidade, por isso da demora de anos

entre o lançamento de uma versão e outra (entre o Woody e o Sarge foram 3 anos, sendo que

o normal entre as outras distros Linux é de 6 meses a 1 ano). Atualmente a versão estável

recebeu o nome Etch, a testing o nome Lenny. Os pacotes baixados a partir da árvores stable,

foram exaustivamente testados, transferindo-se todos os aspectos de confiabilidade de

funcionamento bem como asseguradas as questões relativas a segurança do sistema

operacional.

Na árvore seguinte, encontram-se os pacotes que já se encontram em um nível

adiantado de testes e desenvolvimento (segundo os padrões Debian, não é verdade universal

Page 61: Linux Basico

61

para todas distros, pois muitas delas apresentam pacotes aqui relatados como

unstable/testing, como default em seus lançamentos - o que nunca vai ocorrer no Debian, você

escolhe os seus riscos). O testing, por sua vez, contém pacotes menos testados e com maior

probabilidade de "bugs".

Como eu estava cansado de travamentos, erros e falhas no "outro" sistema, eu sempre

uso apenas pacotes stable, salvo raras exceções e recomendo que o façam também. É o forte

deste sistema operacional: estabilidade.

10.1 Editando o arquivo sources.list

Você pode editar o sources.list com o editor gedit, da seguinte maneira:

# gedit /etc/apt/sources.list

Não vou descrever aqui o por quê destes comandos, pois sei que você já leu o Guia Foca

Linux e já está craque no shell, não? :) Note que deve ser feito como root, portanto preste

atenção. Com grandes poderes, você automaticamente ganha grandes responsabilidades.

Cada linha que você enxerga é um repositório Debian. Caso a linha esteja com um símbolo "#"

na frente, significa que ela será ignorada.

A linha com a referência security updates é especialmente importante, porque é neste

repositório que o pessoal do desenvolvimento lança versões com correção a nível de

segurança. Deixe-a sempre desmarcada. Marque a linha referente ao CD-ROM, pois

geralmente, as atualização serão obtidas direto da web. Adicione as seguintes linhas no

arquivo:

deb http://ftp.br.debian.org/debian/ etch main

deb http://ftp.us.debian.org/debian/ etch main

São os repositórios brasileiro e norte-americano da árvore stable. Eu prefiro sempre

deixar dois ou três servidores em aberto, porque você não fica sem o pacote desejado caso

algum deles esteja fora do ar. Mais repositórios você encontra na página oficial do projeto.

Salve o arquivo.

10.2 Atualizando o sistema com o apt-get

Primeiro comando: o apt-get update

Page 62: Linux Basico

62

Entre em um terminal, como root, e digite:

# apt-get update

O sistema procurará nos repositórios os pacotes que eles contém e formará uma lista

para sua análise.

Agora que sua lista de pacotes está sincronizada com os repositórios Debian,

experimente o próximo comando:

# apt-get install gnome-audio

Significa que que o apt-get vai carregar o binário gnome-audio (pacote), verificar suas

dependências e depois instalá-lo para você. Este pacote é o responsável por eventos de som

no Gnome, pode instalá-lo sem problemas.

Mais um comando para sua lista:

# apt-get remove gnome-audio

Este comando, por sua vez, removerá aquele pacote de seu sistema. Se quiser que até

arquivos de configuração sejam removidos:

# apt-get remove --purge gnome-audio

Vamos atualizar seu sistema agora, com novas versões de pacotes transferidas para a

árvore stable, bem como as de segurança:

# apt-get dist-upgrade

Dependendo da versão instalada em sua máquina, ao executar este comando, fará com

que o processo de atualização irá requerer muitos megabytes para atualizar. Vai depender da

data de lançamento da versão que está sendo usada e da data que var ser realizada a

atualização.

Caso o usuário não saiba o nome do pacote, pode ser aplicado então o comando abaixo:

# apt-cache search games

Page 63: Linux Basico

63

10.3 O synaptic

Caso não tenha se sentido confortável com o terminal de comandos, o Gnome oferece

um “front-end” para o apt-get chamado Synaptic. Instale-o primeiramente:

# apt-get install synaptic

Depois da instalação ele já aparece no seu menu "Sistema". Lá você vai ver,

graficamente, tudo o que acontece e pode dar uma passeada nas seções de pacotes, muito

bem organizadas. Para instalar um pacote, basta clicar com o mouse em cima do quadrado à

esquerda de seu nome e seleciona: marcar para instalação. Pronto, simples e prático.

Caso se queira maiores detalhes sobre o apt, digite no terminal o comando:

# man apt-get

Esse comando apresenta um manual completo de uso do apt-get com opções e

argumentos.

NOME

apt-get - APT pacote utilitário – interface linha de comando

SINOPSE

apt-get [-hvs] [-o=config string] [-c=file] {[update] | [upgrade] | [dselect-upgrade] |

[install pkg...] | [remove pkg...] | [purge pkg...] | [source pkg...] | [build-dep pkg...]

| [check] | [clean] | [autoclean] | [autoremove]}

DESCRIÇÃO

apt-get é uma ferramenta por linha de comando para obtenção de pacotes, e pode ser

considearda pelos usuários de “back-end” para outras ferramentas usando a biblioteca APT.

Outras interfaces em modo terminal existem com “front-end”, como o dselect, o aptitude,

synaptic, gnome-apt e o wajig.

A opção -h ou --help, apresenta informações sobre a funcionalidade dos argumentos

mostrados abaixo.

Argumentos

update

É usado para resincronizar os índices dos pacotes a partir de suas fontes. Os índices são

avaliados para os pacotes obtidos de localização específica em /etc/apt/sources.list. Por

exemplo, quando estiver usando um arquivo Debian, esse comando faz uma varredura e

retorna arquivos Packages.gz disponíveis. Uma atualização mostra os pacotes novos e

Page 64: Linux Basico

64

atualizados. Essa opção update, deve ser sempre executada antes das opções upgrade e dist-

upgrade.

upgrade

É usado para instalar versões mais recentes de todos os pacotes atualmente instalados

a partir do /etc/apt/sources.list. Em nenhuma circunstância, pacotes instalados no sistema,

serão removidos a não ser que as novas versões apresentem alterações nas suas

dependências. Assim, uma atualização com update deve ser efetuada antes, com o objetivo de

ser reconhecido pelo sistema uma nova atualização.

dselect-upgrade

O deselect-upgrade é usado em conjunção com o front-end, deselect. O deselect-

upgrade segue as alterações pelo deselect para os pacotes e permite ações necessárias para

realizar remoção de pacotes antigos e instalação de novos.

dist-upgrade

O dist-upgrade permite realizar uma atualização de sistema de forma inteligente

alterando quando necessário as novas versões dos pacotes. O arquivo sources.list do diretório

/etc/apt/ deverá conter uma lista de localizações dos pacotes desejados. Essas preferências do

usuário devem ser editadas nesse arquivo antes de executar esta opção.

install

A opção install é seguida de um ou mais nomes de pacotes desejados para a instalação.

Cada pacote tem um nome, e não é completamente qualificado por um nome de

arquivo (por instância, no sistema Debian GNU/Linux, libc6 pode ser o argumento provido, e

não libc6_1.9.6-2.db). Todos os pacotes requeridos por um pacote específico para instalação

deverá ser recuperado e instalado. O arquivo /etc/apt/sources.list é usado para localizar o

pacote desejado. Uma versão específica do pacote pode ser instalada utilizando-se o nome

completo do pacote evidenciando-se no nome a sua versão (estável, teste, instável).

remove

O remove, é idêntico ao install, exceto que os pacotes são removidos se estiverem

instalados. Se um sinal de “+” estiver associado ao nome do pacote separado antecedido por

um espaço, o pacote deverá ser instalado se não foi removido.

purge

A opção purge é idêntica ao remove exceto que os pacotes serão removidos com todas

suas dependências e arquivos ligados, entre esses, aqueles arquivos de configuração dos

Page 65: Linux Basico

65

pacotes removidos.

source

O argumento source faz com que o apt-get faça o download dos pacotes fontes. O APT

deverá examinar os pacotes disponíveis para decidir qual pacote fonte deverá ser procurado.

Isto, fará a busca de pacotes em versões mais recentes para fazer o download do código fonte.

Os pacotes fontes, são obtidos a partir da edição de linhas no arquivo sources.list iniciadas por

deb-src. Quando utilizada a opção --compile, o pacote deverá ser compilado para um pacote

binário com a extensão .deb usando-se o dpkg-buildpackage. Se for utilizada a opção –

download-only, o pacote não será descompactado.

build-dep

O build-dep faz com que o apt-get instale ou remova pacotes satisfazendo e

considerando as dependências para um pacote fonte.

check

É uma ferramenta de diagnóstico; ela atualiza o cache e verifica dependências

quebradas.

clean

O clean apaga o respositório local dos pacotes instalados. Isso faz com que seja liberado

espaço de disco.

autoclean

Da mesma maneira que o clean, o autoclean, remove do repositório local os pacotes. A

diferença está que esse, somente remove os arquivos de pacote que não foram totalmente

baixados e são largamente utilizados.

autoremove

O autoremove é usado para remover pacotes que foram automaticamente instalados

para satisfazer dependências para alguns pacotes não mais necessários.

OPÇÕES

Toda a linha de comando pode ser estabelecida usando um arquivo de configuração, em

Page 66: Linux Basico

66

que as descrições indicam as opções de configuração fixadas. Para opções boolean você pode

sobreescrever o arquivo config usando -f, --no-f, -f=no ou outras variações.

-d, --download-only

Realiza somente o download; os arquivos são somente recuperados (download) sem

serem descompactados ou instalados.

-f, --fix-broken

Fixa. Confere a correção ao sistema de dependências quebradas. Essa opção quando

usada com os argumentos install/remove, pode omitir pacotes para permitir a solução no APT.

Qualquer pacote terá o problema completamente corrigido. Existe a possibilidade que

estrutura de dependências possa estar corrompida e, nesse caso, é necessário uma

intervenção manual para corrigir essa situação. Para isso, geralmente utiliza-se o comando

dpkg --remove para eliminar alguns pacotes com problemas.

-m, --ignore-missing, --fix-missing

Ignora pacotes conflitantes; Se esses pacotes não puderem ser recuperados ou falhar a

verificação da sua integridade depois de recuperados (arquivos de pacotes corrompidos), use a

opção -f que deverá produzir um erro para algumas das situações.

--no-download

Desabilita o download de pacotes. Isto é melhor usado com --ignore-missing para forçar

o APT a usar somente os pacotes .deb já utilizados.

-q, --quiet

Silencioso; produz uma saída para logging, omitindo indicadores de progresso. Pode-se

usar a opção -q=# onde o # é o nível (número) que se deseja para produzir uma saída.

-s, --simulate, --just-print, --dry-run, --recon, --no-act

Sem ação; executa uma simulação de eventos que deverá ocorrer no sistema mas sem

executar alterações no sistema instalado. Simula impressões com a saída de uma série de

linhas cada uma, representando uma operação dpkg, configura(conf), remove (remv), unpack

(inst). Sinais de raiz quadrada, indicam pacotes quebrados que são de ocorrências raras.

Page 67: Linux Basico

67

-y, --yes, --assume-yes

Automatiza o prompt para yes; assume “yes” como resposta para todos os prompts e

execuções de processamentos não interativos.

-u, --show-upgraded

Mostra pacotes atualizados; Apresenta uma lista de todos os pacotes que foram

atualizados.

-V, --verbose-versions

Mostra as versões completas para os pacotes instalados e atualizados.

-b, --compile, --build

Compila os pacotes fontes depois de executar o downloads deles.

--ignore-hold

Ignora pacotes; Isso faz com que o apt-get ignore um pacote substituído. Deve ser

utilizado em conjunção com o dist-upgrade para sobreescrever um número grande e

indesejado.

--no-upgrade

Não atualiza pacotes; Quando usado em conjunção com o install, a opção no-upgrade

fará com que os pacotes não sofram atualizações se eles já estiverem instalados.

--force-yes

Força “yes”; Essa opção pode ser perigosa pois deverá fazer com que o apt continue o

processo sem solicitar intervenção do usuário. Isso, não deve ser usado a não ser em situações

muito especiais.

--print-uris

Page 68: Linux Basico

68

Em vez de buscar os arquivos, são mostradas as usas URIs. Cada URI terá seu caminho,

o nome do arquivo de destino, o tamanho e o md5 (chave para verificação de integridade).

Observe que o nome do arquivo a ser escrito não necessariamente será o mesmo existente no

sítio remoto. Essa opção também funciona com os argumentos source e update. Quando usado

com o comando update, o MD5 e o tamanho não são incluídos, faz com que o usuário deva

fazer a descompressão dos arquivos.

--purge

Use purge em vez de remove, para qualquer pacote a ser removido. Um asterisco

deverá aparecer ao lado do pacote a ser eliminado.

--reinstall

Reinstala pacotes que sempre estiveram instalados na versão mais recente.

--list-cleanup

Essa opção padrão (default) ligada, use --no-list-cleanup para tornar desligado. Quando

ligado (on) o apt-get deverá automaticamente gerenciar os conteúdos de /var/lib/apt/lists para

assegurar que esses arquivos obsoletos seja apagados. Por essa razão, somente o torne

desligado, se constantemente for alterada a lista de configuração.

-t, --target-release, --default-release

Essa opção controla a entrada padrão. É um controle sobre qual distribuição dos

pacotes deve ser instalados. Exemplo: -t unstable.

--trivial-only

Somente para operações triviais, assume a opção “yes”. Logicamente, isso pode estar

relacionado com a resposta “yes” para qualquer prompt.

--no-remove

Se algum pacote deve ser removido o apt-get imediatamente aborta sem o prompt.

--auto-remove

Page 69: Linux Basico

69

Se o comando for instalar ou remover, as ações deste argumento de comando deverá

remover dependências e pacotes não utilizados.

--only-source

Somente tem o significado para os argumentos do comando source e build-dep. Indica

que os nomes que iniciam com o nome fonte, não serão mapeados para a tabela binária. Isso

significa que esta opção é específica, que será aceita somente para nome de pacotes como

argumentos.

--diff-only, --dsc-only, --tar-only

Faz o download somente o diff, dsc, ou arquivo tar de um arquivo fonte.

--arch-only

Somente processa a dependência da arquitetura, construindo as dependências.

--allow-unauthenticated

Ignora se os pacotes não são autenticados.

-h, --help

Mostra um pequeno resumo de uso.

-v, --version

Mostra a versão do programa.

-c, --config-file

Arquivo de configuração; Especificar um arquivo de configuração para uso. O programa

deverá ler a configuração padrão e essa, o arquivo de configuração.

-o, --option

Page 70: Linux Basico

70

Estabelece uma opção de configuração; Essa deverá estabelecer uma opção de

configuração arbitrária.

ARQUIVOS

/etc/apt/sources.list

Determinar de onde os pacotes devem ser buscados.

/etc/apt/apt.conf

Arquivo de configuração do APT.

/etc/apt/apt.conf.d/

Fragmentos do arquivo de configuração do APT.

/etc/apt/preferences

Arquivo de preferências versão. Esse arquivo poderá especificar o “pinning”, isto é, a

preferência para buscar certos pacotes de uma fonte separada ou de uma versão diferente de

uma distribuição.

/var/cache/apt/archives/

Área de armazename o dos arquivos de pacotes baixados.

/var/cache/apt/archives/partial/

Área de armazenamento transitória para os pacotes.

/var/lib/apt/lists/

Área que armazena a informação para o estado de cada pacote fonte especificado em

sources.list.

/var/lib/apt/lists/partial/

Page 71: Linux Basico

71

Área para armazenamento da informação do estado temporário.

11. Permissões

Cada arquivo no LINUX apresenta três níveis de proteção definidos por três categorias

de usuários. Todo arquivo ou diretório tem um dono (user) e pertence a um grupo (group).

Qualquer usuário do sistema que não seja o dono do arquivo e não pertença ao grupo do

arquivo enquadra-se na categoria outros (others). O administrador do sistema, o chamado

superusuário (root), não pertence a nenhuma das categorias acima, tendo acesso irrestrito a

todos os arquivos do sistema.

Para cada categoria de usuário, existem três tipos de acesso que podem ser concedidos:

leitura (read), escrita (write) e execução (execute). O sistema LINUX não faz distinção entre os

acessos de escrita e a eliminação, ou seja, um arquivo que pode ser alterado também pode ser

eliminado.

As tabelas abaixo mostram as permissões para arquivos e diretórios:

Tabela 6: Permissões de arquivos

Arquivos Descrição

r Permissão para ler e copiar o arquivo.

w Permissão para alterar ou eliminar o arquivo.

x Permissão para executar o arquivo.

Tabela 7 - Permissões de diretórios

Diretórios Descrição

r Permissão para ler o conteúdo do diretório (listar o nome dos arquivos).

w Permissão para criar, remover e renomear arquivos no diretório.

x Permissão de busca: O usuário que não possuir esta permissão não poderá

se posicionar no diretório nem acessar os arquivos na árvore abaixo deste

diretório.

Através da opção -l do comando ls podemos visualizar o código de proteção dos

arquivos. Este código está representado pelos 9 caracteres que seguem o tipo de cada arquivo

(primeiro caractere). Os três primeiros caracteres correspondem a proteção para o dono (user)

do arquivo, os três próximos definem a proteção para a categoria grupo (group) e os últimos

três caracteres especificam a proteção do arquivo em relação ao demais usuários (other).

Então, as setenças abaixo, significam:

Page 72: Linux Basico

72

-rwxrwxrwx – é um arquivo no qual usuários, grupos e outros possuem acesso para

leitura, escrita e execução.

-rwxr-xr-x – é um arquivo no qual só o usuário possue todas as permissões de leitura,

escrita e execução. No entanto, grupos e outros usuários, só possuem permissões para leitura

e execução.

Exemplo: Usando o comando ls com a opção -al:

$ ls -al

rudiney@katrina:~/cnpq$ ls -al

total 3213

drwxr-xr-x 3 rudiney rudiney 176 2007-08-10 17:28 .

drwxr-xr-x 74 rudiney rudiney 3504 2007-08-19 17:39 ..

-rw-r--r-- 1 rudiney rudiney 350208 2007-08-04 16:48 ana.doc

drwxr-xr-x 8 rudiney rudiney 280 2007-08-10 17:28 PROJETO_CNPQ

-rw-r--r-- 1 rudiney rudiney 1408512 2007-08-04 16:52 renata.doc

$

No exemplo acima, o comando aplicado no diretório “cnpq” do usuário “rudiney” na

máquina “katrina”, mostra algumas informações. Para o arquivo “ana.doc” o usuário “rudiney”

(dono do arquivo), no grupo “rudiney” pode ler e alterar, porém não pode executar. Para o

arquivo “renata.doc” o usuário “rudiney” (dono do arquivo) possui acesso para leitura e escrita

mas, não tem acesso para execução, enquanto grupo “rudiney” e outros, só possuem acesso

para leitura.

A proteção assinalada ao arquivo diretório determina o primeiro nível de proteção para

todos os arquivos deste diretório e tem prioridade sobre as proteções associadas

individualmente a cada arquivo. Por exemplo, caso um usuário não tenha permissão de escrita

em um arquivo diretório, não poderá eliminar nenhum arquivo deste diretório, ainda que as

proteções dos arquivos indiquem o contrário.

11.1 Alteração das Permissões

Para alterarmos as permissões em um arquivo utilizamos o comando chmod (change

file mode). Ele possui dois formatos:

Formato 1

$ chmod [ugoa] [+=-] [rwx ugo] arquivos

A letra u representa os privilégios do dono do arquivo; a letra g os privilégios do grupo e

a letra o os privilégios dos demais usuários. A letra a (all) representa todas as categorias de

Page 73: Linux Basico

73

usuários. O sinal + significa a adição de um privilégio e o sinal - a retirada de um privilégio.

As opções r, w e x representam respectivamente as permissões de leitura,

escrita(alteração) e execução. Podemos alterar vários privilégios em um único comando,

separando-os por vírgulas. Classes de usuários e níveis de proteção que não forem

especificados no comando não serão alterados.

Exemplo:

$ ls -l

-rw-rw-rw- 1 ana alunos 138 Ago 14 16:15 arquivo

$ chmod g-w,o-rw arquivo

$ ls -l

-rw-r----- 1 ana alunos 138 Ago 14 16:30 arquivo

$

Formato 2

$ chmod nnn arquivo

Onde nnn é o código em hexadecimal que representa os tipos de acesso concedidos à

cada categoria de usuário. Cada permissão tem um número associado:

execute = 1

write = 2

read = 4.

A tabela abaixo ilustra as combinações possíveis:

Tabela 8 - Representação de permissões através de número hexadecimal.

Número em

hexadecimal

Permissões Descrição

0 --- Nenhum acesso permitido.

1 --x Acesso para execução

2 -w- Acesso para escrita

3 -wx Acesso para escrita e execução

4 r-- Acesso para leitura

5 r-x Acesso para leitura e execução

6 rw- Acesso para leitura e execução

7 rwx Acesso para leitura, escrita e execução

Page 74: Linux Basico

74

Exemplo:

$ ls -l

-rw-rw-rw- 1 ana alunos 138 Ago 14 16:15 arquivo

$ chmod 640 arquivo

$ ls -l

-rw-r----- 1 ana alunos 138 Ago 14 16:30 arquivo

$

11.2 Alteração do Grupo e Dono

Se você é membro de mais de um grupo, você pode eventualmente precisar alterar o

grupo de um arquivo. Isto é feito através do comando chgrp. Sua sintaxe é:

$ chgrp grupo arquivo

Exemplos:

$ ls -l arquivo

-rw-r----- 1 ana alunos 138 Ago 14 16:15 arquivo

$ chgrp monitores arquivo

$ ls -l arquivo

-rw-r----- 1 ana monitores 138 Ago 14 16:25 arquivo

$

Caso se deseja pesquisar quais grupos existem no sistema, pode-se utilizar o comando

cat /etc/group da seguinte forma:

$ cat /etc/group

É importante ressaltar que para utilizar o comando chgrp, o usuário deve pertencer ao

novo grupo especificado e ser o dono do arquivo, ou então o superusuário.

Enquanto o comando chgrp permite a alteração do grupo do arquivo, o comando chown

permite alterar o seu owner (dono).

# chown dono arquivo

Page 75: Linux Basico

75

Exemplos:

# ls -l arquivo

-rw-r----- 1 ana alunos 138 Jan 14 16:15 arquivo

# chown luiz arquivo

# ls -l arquivo

-rw-r----- 1 paulo alunos 138 Jan 14 16:25 arquivo

#

Este comando só pode ser utilizado pelo superusuário, pois só ele tem acesso a todas as

contas e usernames do sistema.

12. Referências para consulta

Como o Linux é um software gratuito, existem vários sites com manuais e explicações

gratuitas sobre o mesmo, ou seja, grande parte dos assuntos discutidos sobre o Linux pode ser

encontrada nestes sites.

Abaixo podemos conferir alguns desses sites:

1. http://focalinux.cipsga.org.br/ : site com vários manuais para downloads.

2. http://www.linux.org/ : site oficial do Linux onde todas as distribuições podem ser

baixadas gratuitamente sem dificuldades.

3. http://www.softwarelivre.gov.br/links : site com vários links importantes sobre o

Linux.

4. http://www.debian.org : site oficial de suporte da distribuição DEBIAN com um

conjunto de informações e documentação muito completa sobre esta distribuição.

5. http://www.rau-tu.unicamp.br/linux/ : site de perguntas e respostas sobre Linux.

Caso não encontre a resposta no site, você pode formular e enviar sua pergunta e

aguardar uma resposta de um colaborador.

6. http://www.dicas-l.com.br : site de dicas sobre linux atualizado diariamente.

Possui lista de usuários, área de documentação e pesquisa sobre soluções de

problemas.