Buscar

Sistemas Operacionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 64 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 64 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 64 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CURSO TÉCNICO EM INFORMÁTICA PARA INTERNET
 PROF. GENILSON ISRAEL DA SILVA
 SISTEMAS OPERACIONAIS
Campus Barbacena
SUDESTE DE MINAS GERAIS
Sumário
Palavras do Professor...........................................................................................................................6
Apresentação da Disciplina..................................................................................................................7
Capítulo 1 – Introdução........................................................................................................................8
O Linux............................................................................................................................................8
Algumas Características do Linux:.............................................................................................9
Distribuições do Linux...................................................................................................................11
Debian.......................................................................................................................................11
Ubuntu.......................................................................................................................................12
Slackware..................................................................................................................................12
SuSE..........................................................................................................................................12
Red Hat Enterprise Linux.........................................................................................................12
Fedora........................................................................................................................................12
Software Livre...............................................................................................................................13
Além do Software.....................................................................................................................14
Para quem está migrando (ou pensando em migrar) do Windows para o Linux...........................15
Capítulo 2 – Conhecendo o Shell.......................................................................................................15
Terminal Virtual (console).............................................................................................................16
Primeiro contato com o shell.........................................................................................................16
Comandos do Prompt.....................................................................................................................18
cd...............................................................................................................................................19
ls................................................................................................................................................19
cp...............................................................................................................................................20
mv..............................................................................................................................................20
mkdir.........................................................................................................................................21
rm..............................................................................................................................................21
rmdir..........................................................................................................................................21
df...............................................................................................................................................22
du...............................................................................................................................................22
cat..............................................................................................................................................22
touch..........................................................................................................................................22
Desligando.....................................................................................................................................23
Informações sobre o hardware.......................................................................................................23
Rede...............................................................................................................................................23
Localizando arquivos e diretórios..................................................................................................24
Instalando e removendo aplicativos...............................................................................................24
Comandos Internos........................................................................................................................29
Comandos Externos.......................................................................................................................29
Curingas.........................................................................................................................................30
Redirecionamentos e Pipe..............................................................................................................31
Capítulo 3 – Arquivos e diretórios......................................................................................................32
Diretórios.......................................................................................................................................32
Diretório Raiz............................................................................................................................34
Diretório atual...........................................................................................................................35
Diretório home..........................................................................................................................35
Diretório Superior.....................................................................................................................35
Diretório Anterior......................................................................................................................36
Caminho na estrutura de diretórios...........................................................................................36
Estrutura básica de diretórios do Sistema Linux.......................................................................36
Arquivos.........................................................................................................................................37
Extensão de arquivos.....................................................................................................................37
Tamanho de arquivos................................................................................................................38
Arquivo texto e binário.............................................................................................................38
Manipulando arquivos no Shell.....................................................................................................39
O editor VIM.............................................................................................................................39
O editor Nano............................................................................................................................44
Exibindo o início e o fim de arquivos texto..............................................................................45Compactação e descompactação de arquivos e diretórios.............................................................46
Conhecendo o tar......................................................................................................................46
O tipo .tar.gz..............................................................................................................................48
Conhecendo o zip/unzip............................................................................................................49
Capítulo 4 – Discos e partições..........................................................................................................50
Sistemas de arquivos......................................................................................................................50
Partições.........................................................................................................................................50
Montando e desmontando partições..............................................................................................52
O arquivo fstab...............................................................................................................................56
Capítulo 5 – Administração de usuários.............................................................................................56
Tipos de usuário.............................................................................................................................57
Superusuário (sudo) ou administrador......................................................................................57
Usuários de sistemas.................................................................................................................58
Usuários comuns.......................................................................................................................58
Permissões.....................................................................................................................................58
Atribuindo permissões..............................................................................................................60
A notação octal..........................................................................................................................61
Criando usuários............................................................................................................................61
Criando grupos...............................................................................................................................61
Alterando dono e grupo de um arquivo.........................................................................................62
Referências.........................................................................................................................................64
Palavras do Professor
Prezado aluno,
Nós somos criaturas de hábito. Normalmente demonstramos uma certa resistência ao ter que mudar
a forma como normalmente fazemos as coisas. Contudo, também somos altamente adaptáveis. Com
boa vontade e dedicação não há nada que não consigamos fazer. Assim, é comum que muitas
pessoas demonstrem a princípio uma certa resistência ao utilizar uma distribuição Linux. Sem nem
mesmo se esforçar já bradam aos quatro ventos que é “um sistema ruim”, “difícil”, “todo diferente”,
“só para nerd”, dentre outras bobagens.
O MacOS é o sistema utilizado nos Macbooks da Apple. Você já deve ter ouvido falar deles. São
muito bonitos e possuem perfeita integração com o sistema operacional, por isso entregam uma
experiência de uso muito superior. Os usuários de produtos da Apple geralmente são fortes
defensores da marca (sim, a Apple fabrica tanto o hardware quanto o software).
Ter um Macbook é de certa forma um sinal de status. Então, mesmo que o sistema operacional seja
diferente, um usuário que tenha se acostumado com o Windows vai quebrar a cabeça com o sistema,
mas não vai desistir. Você já ouviu alguém falar que MacOS é “muito difícil”? Não, porque
normalmente as pessoas estão mais abertas a dedicar um pouco mais de seu tempo para aprender a
utilizá-lo.
Uma pergunta que muitos fazem é: qual é o melhor sistema operacional? Windows ou Linux? Eu
costumo dizer que não há uma resposta definitiva, uma vez que isso depende muito de qual será o
uso. Considerando uma série de características que para mim são importantes, o Linux é sem
dúvidas o melhor. Contudo, pode ser que as características consideradas por outro usuário sejam
outra completamente diferentes!
Como aluno do curso Técnico em Informática para Internet, você acabará se deparando com o uso
do Linux em muitas ocasiões. Quando precisar, por exemplo, instalar um servidor Web, banco de
dados, PHP, etc., os conhecimentos adquiridos nesta disciplina serão de fundamental importância.
Dedique-se agora a aprender um pouco mais sobre o uso do Linux, principalmente utilizando linha
de comando. 
Algumas distribuições Linux, como o Ubuntu por exemplo, prezam pela facilidade de uso e trazem
interfaces muito amigáveis. Já possuem diversos software pré-instalados, bem como diversas
rotinas de configuração prontas, no intuito de facilitar a vida do usuário. Tudo o que você precisa
fazer é dar uma chance ao software livre. Depois de se acostumar, você dificilmente vai querer
outra coisa :)
Prof. Genilson
4
Apresentação da Disciplina
Na disciplina de Sistemas Operacionais serão abordados conceitos básicos do uso de distribuições
Linux, com um foco maior no uso em modo texto, ou seja, utilizando linha de comando. Será
utilizado como base o sistema Ubuntu Linux, que é uma derivação do Debian. Por isso, os
comandos utilizados podem variar caso seja utilizada uma distribuição diferente, mas normalmente
isso não acontece.
Esta apostila é uma adaptação de artigos, tutoriais e livros listados na seção Referências.
No capítulo 1, veremos o que são Distribuições Linux. No capítulo 2 nos familiarizaremos um
pouco com o uso da linha de comando, aprendendo mais sobre comandos básicos do Prompt para a
execução de tarefas básicas. No capítulo 3 aprenderemos sobre a árvore de diretórios do Linux e
como podemos manipular arquivos e diretórios pela linha de comando. No capítulo 4 entenderemos
o que são partições de um disco rígido e como são utilizadas dentro do Linux. Não menos
importante, é o gerenciamento de usuários e permissões, apresentados no capítulo 05.
No capítulo 6, que não integra a apostila, será apresentado o Sistema Operacional Ubuntu Linux,
com foco na utilização pela interface gráfica.
É importante que você se aprofunde ao máximo nesse assunto. Mãos à obra, e bons estudos!
5
Capítulo 1 – Introdução
O Linux
Tudo começou em 1991, quando Linus Torvalds começou a trabalhar no desenvolvimento de um
sistema Unix para rodar em seu 386. Na época, o único sistema similar era o Minix, um sistema
operacional para uso acadêmico, que era bastante limitado. No início, Linus usava o Minix para
rodar o editor, compiladores e outras ferramentas de desenvolvimento que utilizava para
desenvolver o kernel Linux, mas, a partir de um certo ponto, ele passou a usar o próprio Linux. Ou
seja, depois de um breve período de encubação dentro do Minix, o Linux passou a ser desenvolvido
dentro do próprio Linux. :)
De início, o kernel Linux era um projeto muito pequeno, o hobby de um único programador.
Entretanto, ele tinha uma grande vantagem em relação aos sistemas UNIX que o precederam: o
simples fato de ser disponibilizado sob a licença GPL. Isso permitiu que outros programadores
adotassem o projeto, passando a contribuir com melhorias e correções. Subitamente, toda a
demanda acumulada em relação a um sistema Unix para micros PC foi canalizada em torno do
Linux, fazendocom que o sistema passasse a crescer em um ritmo cada vez mais acelerado,
chegando ao que temos nos dias de hoje.
Embora o kernel seja o componente mais importante do sistema (e também o mais complexo), ele
não é o único. Qualquer sistema operacional moderno é a combinação de um enorme conjunto de
drivers, bibliotecas, aplicativos e outros componentes. O kernel é apenas uma base sobre a qual
todos eles rodam.
Além do período de incubação dentro do Minix, o Linux se beneficiou de diversos outros projetos
anteriores, tais como o X (responsável pela interface gráfica) e inúmeros utilitários, bibliotecas,
linguagens de programação, compiladores e assim por diante. A eles se soma uma grande lista de
interfaces e aplicativos que surgiram nos anos seguintes, tais como o GNOME, o KDE, o Firefox e
o OpenOffice.
O Linux é um sistema Operacional de código aberto distribuído gratuitamente pela Internet. Seu
código fonte é liberado como Free Software (software livre), sob licença GPL. O aviso de copyright
do kernel feito por Linus descreve detalhadamente isto e nem mesmo ele pode fechar o sistema para
que seja usado apenas comercialmente.
Isto quer dizer que você não precisa pagar nada para usar o Linux, e não é crime fazer cópias para
instalar em outros computadores, nós inclusive incentivamos você a fazer isto. Ser um sistema de
código aberto pode explicar a performance, estabilidade e velocidade em que novos recursos são
adicionados ao sistema.
O requisito mínimo para rodar o Linux depende do kernel que será usado:
 2.2.x - Computador 386 SX com 2 MB de memória
 2.4.x - Computador 386 SX com 4MB de memória
 2.6.x - Computador 486 DX com no mínimo 8MB
Para espaço em disco é requerido 500MB para uma instalação básica usando modo texto com
suporte a rede. Claro que não é considerada a execução de ambiente gráfico ou serviços de rede em
produção, que neste caso é exigido mais memória RAM e espaço em disco para armazenamento de
dados de programas e usuários.
6
O sistema segue o padrão POSIX que é o mesmo usado por sistemas UNIX e suas variantes. Assim,
aprendendo o Linux você não encontrará muita dificuldade em operar um sistema do tipo UNIX,
FreeBSD, HPUX, SunOS, etc., bastando apenas aprender alguns detalhes encontrados em cada
sistema.
O código fonte aberto permite que qualquer pessoa veja como o sistema funciona (útil para
aprendizado), corrigir algum problema ou fazer alguma sugestão sobre sua melhoria, esse é um dos
motivos de seu rápido crescimento, do aumento da compatibilidade de periféricos (como novas
placas sendo suportadas logo após seu lançamento) e de sua estabilidade.
Outro ponto em que ele se destaca é o suporte que oferece a placas, CD/DVD-RWs, BluRay e
outros tipos de dispositivos de última geração e mais antigos (a maioria deles já ultrapassados e
sendo completamente suportados pelo sistema operacional). Este é um ponto forte para empresas
que desejam manter seus micros em funcionamento e pretendem investir em avanços tecnológicos
com as máquinas que possui.
O Linux é desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fazendo sua
contribuição ou mantendo alguma parte do kernel gratuitamente. Linus Torvalds ainda trabalha em
seu desenvolvimento e na coordenação dos grupos de trabalho do kernel.
O suporte ao sistema também se destaca como sendo mais eficiente e rápido do que qualquer
programa comercial disponível no mercado. Existem milhares de consultores e empresas
especializadas no suporte e treinamento espalhados ao redor do mundo. Outra opção de suporte é
através da comunidade Linux; você pode se inscrever em uma lista de discussão e relatar sua dúvida
ou alguma falha, e sua mensagem será vista por centenas de usuários na Internet e algum deles irá te
ajudar ou avisará as pessoas responsáveis sobre a falha encontrada para devida correção.
Segundo o http://www.top500.org/ (que mantém um rank atualizado dos 500 supercomputadores
mais poderosos do mundo), em novembro de 2015 nada menos do que 494 dos 500
supercomputadores mais poderosos rodavam diferentes versões do Linux
(http://www.top500.org/statistics/list/). Dos restantes, 6 rodavam outros sistemas Unix. Nenhum
rodava Windows.
Algumas Características do Linux:
• É livre e desenvolvido voluntariamente por programadores experientes, hackers, e
contribuidores espalhados ao redor do mundo que têm como objetivo a contribuição para a
melhoria e crescimento deste sistema operacional. Muitos deles estavam cansados do
excesso de propaganda (Marketing) e baixa qualidade de sistemas comerciais existentes
• Também recebe apoio de grandes empresas como IBM, Sun, HP, etc. para seu
desenvolvimento
• Convivem sem nenhum tipo de conflito com outros sistemas operacionais (com o DOS,
Windows, OS/2) no mesmo computador.
• Multiusuário
• Suporte a nomes extensos de arquivos e diretórios (255 caracteres)
• Modularização - O Linux somente carrega para a memória o que é usado durante o
processamento, liberando totalmente a memória assim que o programa/dispositivo é
finalizado
• Suporte nativo a rede e tecnologias avançadas como: balanceamento de carga, ips alias,
7
failover, vlans, bridge, trunking, OSPF, BGP
• Não há a necessidade de se reiniciar o sistema após modificação da configuração de
qualquer periférico ou parâmetros de rede. A reinicialização somente é necessária no caso de
uma instalação interna de um novo periférico, falha em algum hardware (queima do
processador, placa-mãe, etc.)
• Suporte nativo a virtualização, onde o Linux se destaca como plataforma preferida para
execução de múltiplos sistemas operacionais com performance e segurança
• O crescimento e novas versões do sistema não provocam lentidão, pelo contrário, a cada
nova versão os desenvolvedores procuram buscar maior compatibilidade, acrescentar
recursos úteis e melhor desempenho do sistema (como o que aconteceu na passagem do
kernel 2.0.x para 2.2.x, da 2.2.x para a 2.4.x e da 2.4.x para a 2.6.x)
• O GNU/Linux é distribuído livremente e licenciado de acordo com os termos da GPL
• Acessa corretamente discos formatados pelo DOS, Windows, Novell, OS/2, NTFS, SunOS,
Amiga, Atari, Mac, etc.
• O Linux é muito menos vulnerável a vírus. Devido à separação de privilégios entre
processos e respeitadas as recomendações padrão de política de segurança e uso de contas
privilegiadas (como a de root, como veremos adiante), programas como vírus se tornam
inúteis pois têm sua ação limitada pelas restrições de acesso do sistema de arquivos e
execução. Claro que se o usuário inadvertidamente der permissão para que um script
malicioso seja executado, o estrago será feito
• Qualquer programa (nocivo ou não) poderá alterar partes do sistema que possui permissões
(será abordado como alterar permissões e tornar seu sistema mais restrito no decorrer do
guia). Frequentemente são criados exploits que tentam se aproveitar de falhas existentes em
sistemas desatualizados e usá-las para causar danos. Erroneamente este tipo de ataque é
classificado como vírus por pessoas mal-informadas e são resolvidas com sistemas bem
mantidos. Em geral, usando uma boa distribuição que tenha um eficiente sistema de
atualização e que seja bem configurada, você terá 99.9% de tranquilidade
• Suporte a dispositivos Plug-and-Play
• Suporte nativo a pendrives, dispositivos de armazenamento e cartões de memória.
• Os sistemas de arquivos usados pelo GNU/Linux (Ext2, Ext3, reiserfs, xfs, jfs) organiza os
arquivos de forma inteligente evitando a fragmentação e tornando-o um poderoso sistema
para aplicações multiusuário exigentes e gravações intensivas
• Por ser um sistema operacional de código aberto, você pode ver o queo código fonte
(instruções digitadas pelo programador) faz e adaptá-lo às suas necessidades ou de sua
empresa. Esta característica é uma segurança a mais para empresas sérias e outros que não
querem ter seus dados roubados
• Suporte a diversos dispositivos e periféricos disponíveis no mercado, tanto novos como
obsoletos
• Empresas especializadas e consultores especializados no suporte ao sistema espalhados por
todo o mundo.
8
Distribuições do Linux
Só o kernel GNU/Linux não é suficiente para se ter um sistema funcional, mas é o principal.
Existem grupos de pessoas, empresas e organizações que decidem “distribuir” o Linux junto com
outros aplicativos (como, por exemplo, editores gráficos, planilhas, bancos de dados, ambientes de
programação, formatação de documentos, firewalls, etc).
Este é o significado essencial de distribuição. Cada distribuição tem sua característica própria, como
o sistema de instalação, o objetivo, a localização de programas, nomes de arquivos de configuração,
etc. A escolha de uma distribuição é pessoal e depende das necessidades de cada um.
Algumas distribuições bastante conhecidas são: Ubuntu, Debian, Slackware, Red Hat, Gentoo, Suse
todas usando o SO Linux como kernel principal (Debian é uma distribuição independente de kernel
e pode ser executada sob outros kernel, como o GNU hurd ou o kernel BSD).
A escolha de sua distribuição deve ser feita com muita atenção, não adianta perguntar em canais de
IRC sobre qual é a melhor distribuição, ser levado pelas propagandas, pelo vizinho, etc. O melhor
caminho para a escolha da distribuição, acredito eu, seria perguntar as características de cada uma e
porque essa pessoa gosta dela em vez de perguntar qual é a melhor, porque uma distribuição que
atenda às necessidades de um usuário pode não ser a melhor para lhe atender.
Segue abaixo as características de algumas distribuições seguidas do site principal e endereço para
download:
Debian
http://www.debian.org/ - Distribuição desenvolvida e atualizada através do esforço de voluntários
espalhados ao redor do mundo, seguindo o estilo de desenvolvimento GNU/Linux. Por este motivo,
foi adotada como a distribuição oficial do projeto GNU. Possui suporte a língua Portuguesa, é a
única que tem suporte a 14 arquiteturas diferentes (i386, IA64, AMD64, Alpha, Sparc, PowerPc,
Macintosh, Arm, etc.) e aproximadamente 15 sub arquiteturas. A instalação da distribuição pode ser
feita tanto através de Disquetes, CD-ROM, Tftp, Ftp, NFS ou através da combinação de vários
destes em cada etapa de instalação.
ftp://ftp.debian.org/ - Endereço para download.
Ubuntu
http://www.ubuntu.com/ - Variante da distribuição Debian voltada a interação mais amigável com o
usuário final e facilidade de instalação. Atualmente é a melhor para usuários que tem o primeiro
contato com o Linux. Conta tanto com a instalação do sistema em HD e execução através de Live
CD. No decorrer dessa apostila, será considerado o sistema operacional Ubuntu, podendo os
comandos variar de acordo com a distribuição.
http://www.ubuntu.com/getubuntu/download/ - Endereço para download do Ubuntu.
9
Slackware
http://www.slackware.com/ - Distribuição desenvolvida por Patrick Volkerding, objetiva alcançar
facilidade de uso e estabilidade como prioridades principais. Foi a primeira distribuição a ser
lançada no mundo e costuma trazer o que há de mais novo enquanto mantém uma certa tradição,
provendo simplicidade, facilidade de uso e com isso flexibilidade e poder.
Desde a primeira versão lançada em Abril de 1993, o Projeto Slackware Linux tem buscado
produzir a distribuição Linux mais UNIX-like, ou seja, mais parecida com UNIX. O Slackware
segue os padrões Linux como o Linux File System Standard, que é um padrão de organização de
diretórios e arquivos para as distribuições.
http://ftp.slackware-brasil.com.br/ - Ftp da distribuição Slackware.
SuSE
http://www.suse.com/ - Distribuição comercial Alemã com a coordenação sendo feita através dos
processos administrativos dos desenvolvedores e de seu braço norte-americano. O foco da Suse é o
usuário com conhecimento técnico no Linux (programador, administrador de rede, etc.) e não o
usuário iniciante no Linux. Preferencialmente a administração deve ser feita usando o Yast, mas
também pode ser feita manualmente através de alteração dos arquivos de configuração.
Possui suporte as arquiteturas Intel x86 e Alpha. Sua instalação pode ser feita via CD-ROM ou CD-
DVD (é a primeira distribuição com instalação através de DVD).
ftp://ftp.suse.com/ - Ftp da distribuição SuSE.
Red Hat Enterprise Linux
http://www.redhat.com/ - Distribuição comercial suportada pela Red Hat e voltada a servidores de
grandes e médias empresas. Também conta com uma certificação chamada RHCE específica desta
distro.
Ela não está disponível para download, apenas vendida a custos a partir de 179 dólares (a versão
workstation) até 1499 dólares (advanced server).
Fedora
https://getfedora.org/pt/ - O Fedora Linux é a distribuição de desenvolvimento aberto patrocinada
pela RedHat e pela comunidade, originada em 2002 e baseada em versão da antiga linha de
produtos RedHat Linux. Esta distribuição não é suportada pela Red Hat como distribuição oficial
(ela suporta apenas a linha Red Hat Enterprise Linux), devendo obter suporte através da
comunidade ou outros meios.
A distribuição Fedora dá prioridade ao uso do computador como estação de trabalho. Além de
10
contar com uma ampla gama de ferramentas de escritório possui funções de servidor e aplicativos
para produtividade e desenvolvimento de softwares. Considerado um dos sistemas mais fáceis de
instalar e utilizar, inclui tradução para português do Brasil e suporte às plataformas Intel e 64 bits.
https://admin.fedoraproject.org/mirrormanager/ - Mirrors para download da distribuição Fedora.
Software Livre
Por “software livre” devemos entender aquele software que respeita a liberdade e senso de
comunidade dos usuários. Grosso modo, os usuários possuem a liberdade de executar, copiar,
distribuir, estudar, mudar e melhorar o software. Assim sendo, “software livre” é uma questão de
liberdade, não de preço. Para entender o conceito, pense em “liberdade de expressão”, não em
“cerveja grátis”.
Com essas liberdades, os usuários (tanto individualmente quanto coletivamente) controlam o
programa e o que ele faz por eles. Quando os usuários não controlam o programa, o programa
controla os usuários. O desenvolvedor controla o programa e, por meio dele, controla os usuários.
Esse programa não-livre e “proprietário” é, portanto, um instrumento de poder injusto.
Um programa é software livre se os usuários possuem as quatro liberdades essenciais:
• A liberdade de executar o programa como você desejar, para qualquer propósito (liberdade
0).
• A liberdade de estudar como o programa funciona, e adaptá-lo às suas necessidades
(liberdade 1). Para tanto, acesso ao código-fonte é um pré-requisito.
• A liberdade de redistribuir cópias de modo que você possa ajudar ao próximo (liberdade 2).
• A liberdade de distribuir cópias de suas versões modificadas a outros (liberdade 3). Desta
forma, você pode dar a toda comunidade a chance de beneficiar de suas mudanças. Para
tanto, acesso ao código-fonte é um pré-requisito.
Um programa é software livre se os usuários possuem todas essas liberdades. Portanto, você deve
ser livre para redistribuir cópias, modificadas ou não, gratuitamente ou cobrando uma taxa pela
distribuição, a qualquer um, em qualquer lugar. Ser livre para fazer tudo isso significa (entre outras
coisas) que você não deve ter que pedir ou pagar pela permissão para fazê-lo.
Você também deve ter a liberdade de fazer modificações e usá-las privativamente ou em seu
trabalho ou lazer,sem sequer mencionar que eles existem. Se publicar suas modificações, você não
deve ser obrigado a avisar ninguém em particular, ou de qualquer modo em particular.
A liberdade de executar o programa significa que qualquer tipo de pessoa ou organização é livre
para usá-lo em qualquer tipo de sistema computacional, ou para qualquer tipo de trabalho e
propósito, sem que seja necessário comunicar ao desenvolvedor ou qualquer outra entidade
específica. Nessa liberdade, é o propósito do usuário que importa, não aquele do desenvolvedor;
você, como usuário, é livre para rodar o programa para seus propósitos e, caso você o distribua a
outra pessoa, ela também será livre para executá-lo com os propósitos dela, mas você não é
intitulado a impor seus propósitos sobre ela.
Para que as liberdades 1 e 3 (a liberdade de modificar e a liberdade de publicar versões
modificadas) façam sentido, você deve ter acesso ao código-fonte do programa. Consequentemente,
acesso ao código-fonte é uma condição necessária para o software livre. Código-fonte
11
“obscurecido” não é código-fonte real e não conta como código-fonte.
A liberdade 1 inclui a liberdade de usar sua versão modificada em lugar da original. Se um
programa é entregue num produto projetado para rodar a versão de outra pessoa, mas se recusa a
rodar a sua — prática conhecida como “tivoização”, “travamento” ou ainda (na terminologia
perversa de seus praticantes) como “boot seguro” - a liberdade 1 se torna ficção teórica ao invés de
liberdade prática. Isso não é suficiente. Em outras palavras, esses binários não são software livre
mesmo que o código-fonte a partir do qual foram compilados seja livre.
Para que essas liberdades sejam reais, elas devem ser permanentes e irrevogáveis desde que você
não faça nada de errado; se o desenvolvedor do software tiver o poder de revogar a licença, ou
adicionar restrições retroativamente a seus termos, sem que você faça nada errado para dar um
motivo, o software não é livre.
Todavia, certas regras sobre a maneira de distribuir o software são aceitáveis, quando elas não
entram em conflito com as liberdades centrais. Por exemplo, o copyleft (apresentado de maneira
muito simples) é a regra de que, quando redistribuindo um programa, você não pode adicionar
restrições que neguem as liberdades centrais de outras pessoas. Essa regra não entra em conflito
com as liberdade centrais; na verdade, ela as protege.
“Software livre” não significa “não comercial”. Um programa livre deve estar disponível para uso
comercial, desenvolvimento comercial e distribuição comercial. Desenvolvimento comercial de
software livre deixou de ser incomum; tais software livre comerciais são muito importantes. Você
pode ter pago dinheiro por suas cópias de software livre, ou você pode tê-las obtido a custo zero,
mas independentemente de como você conseguiu suas cópias, você sempre deve ter a liberdade para
copiar e mudar o software, ou mesmo para vender cópias.
Se uma modificação constitui ou não um aperfeiçoamento é uma questão subjetiva. Se o seu direito
de modificar um programa é limitado, fundamentalmente, a mudanças que outra pessoa considere
um aperfeiçoamento, o programa não é livre.
Quando falamos sobre software livre, é melhor evitar termos como “dado” ou “de graça”, porque
estes termos implicam que a questão é o preço, e não a liberdade. 
Além do Software
Manuais de software devem ser livres pelas mesmas razões que software deve ser livre, e porque
manuais são, com efeito, parte do software.
Os mesmos argumentos também fazem sentido para outros tipos de trabalhos de uso prático — isto
é, trabalhos que englobam conhecimento útil, como obras educativas e de referência. A Wikipédia é
o exemplo mais conhecido.
Qualquer tipo de obra pode ser livre, e a definição de software livre pode ser estendida para a
definição de obras culturais livres, aplicável a qualquer tipo de obra.
Código Aberto?
Outro grupo começou a usar o termo “código aberto” (do inglês open source) com um significado
parecido (mas não idêntico) ao de “software livre”. Nós preferimos o termo “software livre” porque,
uma vez que você tenha ouvido que ele se refere à liberdade ao invés do preço, ele traz à mente a
liberdade. A palavra “aberto” nunca se refere à liberdade.
12
Para quem está migrando (ou pensando em migrar) do Windows para o Linux
Em sistemas GNU/Linux, a conta root não tem restrições de acesso ao sistema e pode fazer tudo o
que quiser. É equivalente ao usuário normal do Windows (que normalmente é um usuário
administrador). Use a conta root somente para manutenções no sistema e instalação de programas,
qualquer movimento errado pode comprometer todo o sistema.
No GNU/Linux os diretórios são separados por uma “/” e não por uma “\” como acontece no
DOS. Da mesma forma, o diretório raiz no Linux é identificado pela “/”, enquanto que no
Windows é utilizada uma letra para a unidade. Veja um exemplo de caminho para o diretório teste,
existente na raiz, em cada um dos sistemas:
Windows: C:\teste
Linux: /teste
Os comandos são case sensitive, o que significa que ele diferencia as letras maiúsculas de
minúsculas em arquivos e diretórios. O comando ls e LS são completamente diferentes.
A instalação de pacotes é feita de forma diferente do Windows, normalmente através de repositórios
próprios da distribuição Linux. Não é necessário baixar o software de algum site qualquer para
instalar, pois existem ferramentas que fazem uma busca nos repositórios e já instalam o software
solicitado e todas as suas dependências (outros softwares dos quais dependam para funcionar).
Sempre que tiver dúvidas sobre a utilização de algum comando, basta digitar no terminal “man
comando” e você terá acesso ao manual do comando, explicando para que serve cada parâmetro e
como utilizá-lo. O parâmetro --help traz uma ajuda rápida, com a assinatura do comando, ou
seja, sua descrição e quais parâmetros possui. Basta usar “comando --help”.
Capítulo 2 – Conhecendo o Shell
Shell é o programa responsável por interpretar as instruções enviadas pelo usuário e seus programas
ao sistema operacional (o kernel). É ele que executa comandos lidos do dispositivo de entrada
padrão (teclado) ou de um arquivo executável. É a principal ligação entre o usuário, os programas e
o kernel. O GNU/Linux possui diversos tipos de interpretadores de comandos, entre eles podemos
destacar o bash, ash, csh, tcsh, sh, etc. Entre eles o mais usado é o bash. O interpretador de
comandos do DOS, por exemplo, é o command.com.
Os comandos podem ser enviados de duas maneiras para o interpretador: interativa e não-interativa:
Interativa: os comandos são digitados no prompt de comando e passados ao interpretador de
comandos um a um. Neste modo, o computador depende do usuário para executar uma tarefa, ou
próximo comando.
Não-interativa: são usados arquivos criados pelo usuário com sequências de comandos (scripts), de
forma que o computador execute-os na ordem encontrada no arquivo. Neste modo, o computador
executa os comandos do arquivo um por um, executando o próximo quando o anterior é finalizado.
Este sistema é útil quando temos que digitar por várias vezes seguidas um mesmo comando para
executar tarefas repetitivas. Assim, o script será responsável por executar esse conjunto de
instruções quando for necessário.
13
O shell bash possui ainda outra característica interessante: a completação dos nomes. Isto é feito ao
pressionar-se a tecla TAB. Por exemplo: o comando “ls” é utilizado para listar arquivos e
diretórios em uma determinada localização do disco. Ao digitar “ls tes” e pressionar <tab>, caso
a completação de nomes encontre mais do que uma expressão que satisfaça apesquisa, ou
nenhuma, é emitido um beep. Se for apertada novamente a tecla TAB imediatamente depois do
beep, o interpretador de comandos listará as diversas possibilidades que satisfaçam a pesquisa, para
que se possa escolher a correta (ou outro bip caso não exista mesmo uma opção). Para escolher uma
opção, basta digitar a próxima letra do nome do arquivo ou diretório que você deseja acessar. Esse
processo é repetido até que não haja mais opções ambíguas (ou seja, com mesma sequência de
caracteres no nome). A completação de nomes funciona sem problemas para comandos internos. No
Windows há algo parecido, porém muito menos eficiente e funcional (normalmente é listado o
primeiro arquivo encontrado, sem se preocupar com a ambiguidade encontrada quando mais de um
arquivo possui nomes com mesma sequência de caracteres no início.
Terminal Virtual (console)
Terminal (ou console) é o teclado e tela conectados em seu computador. O GNU/Linux faz uso de
sua característica multiusuária usando os “terminais virtuais”. Um terminal virtual é uma seção de
trabalho completamente independente de outras, que pode ser acessada no computador local ou
remotamente via telnet, rsh, rlogin, etc.
No GNU/Linux, em modo texto, você pode acessar outros terminais virtuais segurando a tecla ALT
e pressionando F1 a F6. Cada tecla de função corresponde a um número de terminal do 1 ao 6 (o
sétimo é usado por padrão pelo ambiente gráfico X). O GNU/Linux possui mais de 63 terminais
virtuais, mas apenas 6 estão disponíveis inicialmente por motivos de economia de memória RAM.
Se estiver usando o modo gráfico, você deve segurar CTRL+ ALT enquanto pressiona uma tela de
<F1> a <F6>. Para voltar ao modo gráfico, pressione CTRL+ALT+ <F7>.
Um exemplo prático: Se você estiver usando o sistema no Terminal 1 com o nome joao e desejar
entrar como root para instalar algum programa, segure ALT enquanto pressiona <F2> para abrir o
segundo terminal virtual e faça o login como root. Será aberta uma nova seção para o usuário
root e você poderá retornar a hora que quiser para o primeiro terminal pressionando ALT+<F1>. 
Primeiro contato com o shell
A figura 1.1 mostra como é um terminal de comandos (ou prompt de comandos). 
genilson: norme do usuário
arch_gen: é o nome do host (computador). O @ (ou at, que em inglês significa “em”) indica que
o usuário “genilson” está no host “arch_gen”.
~: Abreviação para a pasta do usuário, ou seja, indica que o local atual é o diretório home do
usuário “genilson”.
$: Indica tratar-se de um usuário comum. O usuário root é representado por “#”.
14
Figura 2.1 – Um prompt de comando
Agora que entendemos o significado do prompt que aparece, vamos testar alguns comandos e ver o
que acontece:
genilson@arch_gen:~$ pwd
/home/genilson
genilson@arch_gen:~$ whoami
genilson
genilson@arch_gen:~$ date
Ter Janeiro 10 12:19:01 BRT 2016
genilson@arch_gen:~$
Ao executar o comando pwd, o retorno foi exatamente o diretório que estamos atualmente
chamando de current.
O comando whoami exibe o nome do usuário atual que estamos usando e o date retorna a data
atual. Não se preocupe ainda com os poderes de administrador sudo, veremos isso mais adiante.
Sempre que quisermos digitar algum comando que já tenha sido executado antes, podemos fazer
uso da tecla direcional para cima ou direcional para baixo. Isso possibilita navegarmos por uma lista
de comandos que já foram executados.
Existe a opção de vermos essa lista completa, graças ao history, que cria um histórico
memorizando tudo o que já digitamos no shell:
15
genilson@arch_gen:~$ history
1 pwd
2 whoami
3 date
4 history
genilson@arch_gen:~$
Outra recomendação para um uso mais produtivo do shell é utilizar a tecla tab, que possui a função
de autocompletar, explicada anteriormente.
Comandos do Prompt
Apesar de a interface gráfica ser muito mais fácil de usar, é bom você ter, pelo menos, uma boa
noção de como as coisas funcionam pelo prompt de comando. Isso vai lhe dar um domínio muito
maior sobre o sistema.
Comandos são ordens que passamos ao sistema operacional para executar uma determinada tarefa.
Um comando pode ter argumentos (ou parâmetros), que podem ser opcionais ou obrigatórios.
Sempre que você digitar um comando que exija algum argumento específico sem fornecer o
argumento, será exibida uma mensagem de help resumida indicando o uso correto do comando.
Argumentos opcionais servem para executar ações específicas. Argumentos obrigatórios são
especificações necessárias à execução do comando. Via de regra, o uso se dá sempre da seguinte
forma:
comando argumento1 argumento2 argumentoN
Repare que há sempre um espaço entre o comando e seus argumentos. Assim, caso em um dos
argumentos você tente especificar algo com espaço em branco, serão considerados dois argumentos
separados. Este é um erro muito comum entre os iniciantes.
Exemplo: Para listar o que está na pasta etc, o usuário digita “ls / etc”. O comando ls
entenderá que precisa listar dois diretórios, sendo o primeiro a raiz (/) e o segundo o etc. O
comando correto é: “ls /etc”.
Em vários tipos de documentação sobre Linux, você verá receitas (tutoriais) com longas listas de
comandos que devem ser digitados para configurar ou alterar algo. Em muitos casos existe algum
utilitário gráfico que permite fazer o mesmo, mas os autores geralmente preferem dar a receita de
como fazer via linha de comando, pois nem todo mundo terá os utilitários à mão e muitas vezes
existem diferenças entre as opções disponíveis nas diferentes distribuições. Ou seja, aprendendo a
fazer via linha de comando, muito provavelmente será necessário aprender apenas uma vez. Vamos
então a um guia rápido dos comandos básicos do terminal:
cd
cd [DIRECTORY]
16
Começando do básico, o comando “cd” (change directory) permite navegar entre os diretórios. Ao
abrir o terminal, você começa dentro do seu diretório home (como “/home/genilson”) e pode
acessar outros diretórios diretamente, especificando-os no comando, como em “cd /etc” ou “cd
/mnt/cdrom”.
O “.” representa o diretório atual e “..” representa o diretório superior.
Para subir um diretório na estrutura de diretórios, use “cd ..” e, para voltar ao home, digite
simplesmente “cd”, sem parâmetro algum, ou “cd ~”. Lembre-se que o “~” referencia o diretório
home do usuário atual. Sempre que quiser confirmar em qual diretório está, use o comando “pwd”.
Um caminho pode ser absoluto ou relativo. O caminho absoluto é aquele que começa a partir da raiz
da árvore de diretórios (ou seja, a /). Relativo, é o caminho que começa a partir da localização atual.
Por exemplo: um arquivo teste.txt existente no diretório home do usuário genilson, possui
o seguinte caminho absoluto:
/home/genilson/teste.txt
Porém, para o usuário que estiver dentro do diretório /home, o caminho relativo será:
genilson/teste.txt
Para o usuário que estiver dentro do diretório /home/genilson, o caminho relativo será:
./teste.txt
Lembre-se de que o ponto representa o diretório atual.
Agora, suponhamos que o arquivo teste estivesse dentro do diretório /home, e o usuário estivesse
dentro do diretório /home/genilson. O arquivo poderia ser referenciados pelos seguintes
caminhos, respectivamente absoluto e relativo:
/home/teste.txt
../teste.txt
ls
ls [OPTION]... [FILE]...
Em seguida temos o “ls”, que serve para listar os arquivos dentro da pasta. Na maioria das
distribuições, a listagem aparece colorida, permitindo diferenciar as pastas e os diferentes tipos de
arquivos. As pastas aparecem em azul, os links em azul claro, os arquivos compactados em
vermelho, as imagens em rosa, os executáveis em verde e os arquivos de texto e outros formatos em
preto (ou em branco, de acordo com o esquema de cores usado).
Para incluiros arquivos ocultos (que no Linux começam com "."), use “ls -a”. Para ver mais
detalhes sobre cada arquivo, incluindo o tamanho, permissões de acesso e dono, use “ls -lh”.
Para incluir os ocultos, adicione o “a”, como em “ls -lha”. A ordem dos parâmetros não altera o
resultado do comando. Tanto faz digitar “ls -lha” ou “ls -alh”, você pode simplesmente
decorar os parâmetros na ordem que achar mais fácil de lembrar.
17
cp
cp [OPTION]... SOURCE... DIRECTORY
Para copiar arquivos de uma pasta para outra usamos o “cp”, especificando o nome do arquivo e a
pasta para onde ele vai, como em “cp arquivo.zip /mnt/sda1/”. Se você quiser copiar um
arquivo que está em outra pasta para o diretório atual, inclua a localização completa do arquivo e
em seguida o “.” (que representa o diretório atual), como em “cp
/mnt/cdrom/video.avi .”.
Você pode também usar o "*" como curinga para copiar vários arquivos. Para copiar todos os
arquivos da pasta atual para a pasta “/mnt/hda6”, por exemplo, use “cp * /mnt/hda6”.
Por default, o comando cp omite diretórios (ou se preferir, pastas), além de alterar as permissões
dos arquivos ou pastas copiados. Por exemplo: quando o usuário root copia para o seu diretório
algum arquivo de outro usuário do sistema, o dono do arquivo copiado é alterado para root. Um
parâmetro bastante útil é o "-a", que faz com que o cp sempre copie recursivamente (ou seja, copie
todos os arquivos, pastas e subpastas), mantenha as permissões originais e preserve os links
simbólicos (um link simbólico é um atalho) que encontrar pelo caminho. Para copiar uma pasta do
CD-ROM para o diretório atual, por exemplo, você poderia usar “cp -a
/mnt/cdrom/musicas .”.
mv
mv [OPTION]... SOURCE... DIRECTORY
O “cp” faz par com o “mv”, que serve tanto para mover quanto para renomear arquivos. Não há um
comando exclusivamente para renomear um arquivo ou pasta. Para mover o arquivo foto.png
para a pasta “/mnt/hda6/”, o comando seria “mv foto.png /mnt/hda6/”. Note que não
foi especificado o nome do arquivo de destino, sendo mantido então o nome original. A foto
deixaria de existir na localização antiga, sendo movida para a nova localização. Para renomear um
arquivo, basta especificar o novo nome no local de destino, como em “mv foto.png
/mnt/hda6/outronome.pgn”.
mkdir
mkdir [OPÇÃO]... DIRETÓRIO...
Para criar diretórios, usamos o comando “mkdir”, como em “mkdir arquivos” (que cria o
diretório arquivos dentro do diretório atual) ou “mkdir /mnt/sda6/arquivos”, que cria o
diretório arquivos dentro de /mnt/sda6. É possível também criar pastas recursivamente
(criando todas as pastas necessárias até chegar a que você pediu) adicionando o parâmetro “-p”
como em “mkdir -p /mnt/hda6/arquivos/novos/2016”. Assim, mesmo que a pasta
“arquivos” e a pasta “novos” não existam, elas serão criadas. Sem o parâmetro “-p”, será
18
emitido um erro, informando que o local onde você deseja criar o diretório não existe.
rm
rm [OPTION]... [FILE]...
Em seguida temos o rm, que serve tanto para remover arquivos quanto diretórios, de acordo com os
parâmetros usados. Para remover um arquivo simples, basta usá-lo diretamente, como em “rm
arquivo”. Para que ele remova sem pedir a confirmação, adicione o parâmetro “-f”, como em
“rm -f arquivos”. Para remover uma pasta e todos os arquivos e diretórios dentro dela,
adicione o parâmetro "-r", como em “rm -rf arquivos”. Se você tentar excluir um diretório
sem fornecer a opção “-r”, receberá uma mensagem de erro.
Tome cuidado ao usar o “-rf”, pois ele não pede confirmação, e deleta os arquivos e pastas
recursivamente. Respire fundo e verifique se realmente está deletando a pasta certa antes de
confirmar o comando. Você provavelmente já ouviu falar (se não ouviu, ainda vai ouvir) do
comando “rm -rf /”. Pelo que já estudamos, o que esse comando faz? Você sabe dizer? Pois é,
como mandamos remover a raiz (/), incluindo os diretórios, de forma recursiva (-r), todo o
conteúdo da estrutura de diretórios do sistema será apagado, sem confirmação, sem mensagem de
alerta, nada. Seu sistema irá todo para o espaço, com apenas um comando.
É possível também usar caracteres curingas na hora de remover arquivos. Esses caracteres
substituem uma sequência qualquer de outros caracteres. Quando um arquivo ou diretório
corresponde a uma expressão com caractere coringa, dizemos que a expressão “casou” com o
arquivo. Então, para remover todos os arquivos que possuírem a extensão “.jpg”, use “rm -f
*.jpg”. Para remover todos os arquivos que começarem com “img”, use “rm -f img*”. Você
pode usar também o "?" quando quiser usar o curinga para apenas um caractere específico. Se você
quiser remover os arquivos “doc1.txt”, “doc2.txt” e “doc3.txt”, você poderia usar o
comando “rm -f doc?.txt”.
rmdir
rmdir [OPÇÃO]... DIRETÓRIO...
Temos também o comando rmdir, uma variação do mkdir, que permite remover diretórios. A
diferença entre ele e o “rm -rf” é que o “rmdir” só remove diretórios vazios. Acostume-se a
usá-lo no lugar do “rm -rf” ao deletar uma pasta que acha que está vazia, assim você evita
acidentes.
df
df [OPÇÃO]... [ARQUIVO]...
Para verificar o espaço em disco disponível, use o “df”. Ele mostra o espaço disponível (assim
19
como outras informações, incluindo a capacidade e o diretório de montagem) de cada uma das
partições do sistema, incluindo pendrives e outros dispositivos de armazenamento que estejam
montados. Ele faz par com o “free”, que permite checar rapidamente o uso da memória RAM
(ignore a primeira linha e veja diretamente a linha "-/+ buffers/cache", que mostra o uso
real, descartando o usado pelo cache de disco).
du
du [OPTION]... [FILE]...
Outro comando útil é o du, que permite ver uma lista com o espaço ocupado por pasta dentro do
diretório atual. Para facilitar, use sempre o “du -h”, que exibe o tamanho dos arquivos de forma
amigável, escrevendo "2,8G" em vez de "2876322", por exemplo. A opção “-s” mostra o valor
somado dos tamanhos de todos os diretórios e arquivos dentro do diretório analisado.
Você também pode executar uma fila de comandos de uma vez. Basta separá-los por ponto e
vírgula, como em “ls; pwd” ou “cd /mnt/arquivos; ls”.
cat
cat [OPÇÃO]... [ARQUIVO]…
O comando cat permite que seja exibido o conteúdo de um arquivo. Se for um arquivo texto, o
conteúdo será mostrado de forma legível na tela. Se for um arquivo binário, como um arquivo de
música por exemplo, será mostrado na tela um conjunto de caracteres inteligíveis.
touch
touch [OPTION]... FILE...
O comando touch serve basicamente para alterar o timestamp de um arquivo. O timestamp são as
datas de criação e alteração do arquivo. Quando o arquivo não existe, ele é criado, e por isso, o
touch é muito utilizado para criar arquivos vazios, como em:
touch teste.txt
Se você executar um “cat teste.txt” verá que o arquivo não possui conteúdo algum.
Desligando
Assim como no Windows, você precisa desligar o sistema corretamente para evitar perda de
20
arquivos e danos à estrutura das partições (sem falar em evitar o chato fsck no boot seguinte).
Além das opções nos menus do KDE ou GNOME, você pode desligar via terminal, usando os
comandos halt (desligar) e reboot (reiniciar). Existe também o Ctrl+Alt+Del, que se executado
em um dos terminais de texto puro reinicia o micro e, se pressionado dentro do ambiente gráfico
abre (na maioria das distribuições) o diálogo com as opções de desligar e reiniciar.
Informações sobre o hardware
A pasta “/proc” armazena informações sobre o hardware e sobre a configuração do sistema.
Embora seja possível ver o conteúdo dos arquivos usando qualquer editor de texto (como no caso
do “cat /proc/cpuinfo”), a maiorparte das informações são crípticas demais para qualquer
ser humano normal.
Se você quer apenas descobrir qual é o chipset da placa wireless ou da placa de som, por exemplo,
pode ver uma listagem resumida do hardware da máquina usando o comando lspci. Para os
dispositivos USB (que não aparecem na lista do lspci), temos o lsusb.
O comando lshw mostra uma longa lista de detalhes sobre a máquina, lembrando um pouco o
gerenciador de dispositivos do Windows, porém em modo texto. Complementando, temos o
clássico “uname -a”, que permite verificar rapidamente qual versão do kernel está sendo usada.
Rede
O comando básico para gerenciar a configuração de rede no Linux é o ifconfig. Quando
chamado sem argumentos, ele mostra a configuração atual da rede (o que o torna uma opção rápida
para verificar qual endereço IP seu PC está usando, ou se ele obteve a configuração corretamente a
partir do servidor DHCP), mas ele pode ser usado também para alterar a configuração da rede
rapidamente. Ao digitar “ifconfig eth0 192.168.1.2/24”, por exemplo, você troca o
endereço da placa de rede eth0.
Ele é complementado pelo iwconfig, que se aplica às placas wireless. Ao chamá-lo sem
argumentos, ele mostra a configuração atual, incluindo o SSID da rede, o endereço MAC do ponto
de acesso, a qualidade do sinal e a velocidade atual de transmissão, mas ele pode ser usado também
para configurar a rede Wi-Fi manualmente.
Localizando arquivos e diretórios
O comando which, busca executáveis e mostra sua localização. Executáveis são “comandos”
disponíveis no sistema.
O comando find permite localizar arquivos, vasculhando os diretórios em busca de arquivos que
casem com a expressão utilizada (no caso do uso de caracteres curingas), ou com o nome do
arquivo especificado. Quando utilizados caracteres curingas, é importante que a expressão esteja
21
entre aspas. Embora seja lento ao procurar em diretórios com muitos arquivos e subdiretórios, o
find é eficiente se você souber previamente onde procurar. Por exemplo, o diretório "/etc"
concentra as configurações do sistema. Se você estiver procurando pelo arquivo “smb.conf”
(onde é armazenada a configuração do Samba), você poderia pesquisar diretamente no diretório
/etc, usando o comando “find /etc -name smb.conf”. Podem também ser utilizados
caracteres curingas para casar expressões, desde que as expressões estejam entre aspas. Para buscar
todos os arquivos que comecem com smb no diretório /etc, onde também seria encontrado o
mesmo arquivo smb.conf, o comando poderia ser “find /etc -name “smb*””. Para
buscar todos os arquivos mp3 dentro da partição hda6, você poderia utilizar “find /mnt/hda6
-name “*.mp3””.
Note que além do diretório onde ele vai procurar (/etc no exemplo), você deve usar o parâmetro
“-name” antes de indicar o nome do arquivo que está procurando. Omitindo o diretório, ele
simplesmente procura dentro do diretório atual.
Assim como outros comandos do terminal, o find pode ser usado de forma mais amigável através
de ferramentas gráficas. No KDE, por exemplo, você pode usar o kfind. Através dele você pode
procurar pelo nome ou tipo de arquivo (você pode fazer uma busca incluindo apenas arquivos de
imagem, por exemplo), procurar dentro de pastas específicas ou localizar arquivos pertencentes a
um determinado usuário ou grupo do sistema, ou até mesmo procurar por arquivos modificados
recentemente.
Assim como no caso dos nomes de arquivos, você pode completar os comandos usando a tecla
TAB, o que reduz a necessidade de realmente decorá-los. Outra dica é usar o comando apropos
para ajudar a localizar comandos quando você tem apenas uma vaga ideia do nome. Basta chamá-lo
incluindo algumas letras que façam parte do comando (não importa se do começo ou do final),
como em “apropos keyg” ou “apropos ogg”. Ele mostra uma lista com todos os comandos
que contêm em seu nome os caracteres especificados, acompanhados de uma pequena descrição.
Instalando e removendo aplicativos
No mundo Linux, os programas são distribuídos na forma de pacotes. Esses pacotes possuem
metadados que contém informações tais como nome do aplicativo e descrição, bem como todas as
dependências que ele possui. As dependências de um pacote são outros pacotes dos quais ele
dependa para funcionar. Para instalação, atualização e remoção de aplicativos, distribuições
GNU/Linux utilizam um gerenciador de pacotes, responsável por gerenciar todo o processo de
instalação, atualização e remoção de aplicativos, cuidando inclusive de instalar as dependências
necessárias. Sem um gerenciador de pacotes, seria necessário instalar cada uma das dependências
manualmente! Esse gerenciador varia de distribuição para distribuição, e na maioria das vezes
possui também uma ferramenta gráfica para facilitar seu uso.
O objetivo desta seção é demonstrar o uso do gerenciador de pacotes APT (Advanced Packaging
Tool) no terminal.
O APT possui duas interfaces que funcionam basicamente da mesma forma mas possuem algumas
diferenciações em seu uso: o comando apt-get e o aptitude. O aptitude é um pouco mais
amigável, e já realiza algumas tarefas automaticamente. Por exemplo, ao remover um pacote, o
aptitude remove junto as suas dependências que não forem mais úteis ao sistema. Já com o
apt-get, será necessário executar um comando separadamente para que as dependências sem uso
22
sejam removidas. Em algumas distribuições, o aptitude já vem instalado por padrão, mas é
comum ser necessário instalá-lo utilizando o apt-get. Em tempo, o APT é um gerenciador de
pacotes do Debian e de distribuições derivadas. Outras distribuições utilizarão outros gerenciadores
de pacotes, como por exemplo, o pacman utilizado pelo, Arch, portage utilizado pelo Gentoo, o yum
do CentOS, o RPM do Red Hat, etc.
Antes de prosseguir, vamos entender algumas opções do apt-get:
• update: atualiza a lista de pacotes;
• upgrade: atualiza todo o sistema, porém não instala novos dependências necessárias nem
remove softwares já instalados.
• dist-upgrade: atualiza todo o sistema, se necessário instalando novas dependências ou
removendo alguns pacotes que não seja mais necessários.
• install: instala um novo programa;
• remove: desinstala um programa, porém mantém seus arquivos de configuração;
• purge: desinstala um programa e remove seus arquivos de configuração do sistema.
Para entender melhor como funciona o apt-get, vamos fazer a instalação do apache webserver.
Como os pacotes são baixados de um repositório, onde frequentemente ocorrem adição e
atualização de pacotes, é necessário antes de mais nada atualizar a lista de pacotes do sistema, de
forma que o apt-get possua localmente uma lista de pacotes (e suas versões) sincronizada com a
lista do repositório, evitando inconsistências. Veja nas imagens abaixo como é feita na prática a
atualização da lista de pacotes e a instalação do apache2. Como se trata de uma tarefa
administrativa, ela também precisa ser executada com privilégios de root, ou seja, utilizando o
sudo. Por agora, não se preocupe com isso. Você entenderá melhor o conceito de permissões e
tipos de usuários no Capítulo 5, que trata do gerenciamento de usuários.
Observe que na figura 2.2 é feita a atualização da lista de pacotes, e na figura 2.3 a finalização da
atualização, informando a quantidade de dados obtidos.
Na figura 2.4 o apache é instalado. Estão destacados os pontos que informam os pacotes que serão
instalados como dependências, as sugestões de pacotes (que podem ser interessantes, mas não
necessários) e a quantidade de dados a ser baixada.
A figura 2.5 mostra a finalização da instalação, quando o servido apache já é automaticamente
iniciado
Na figura 2.6 é mostrada a remoção do pacote apache2. Note que, durante aremoção do pacote, o
apt informa que os pacotes instalado automaticamente não serão removidos, e que para isso, deve-se
usar a opção autoremove do apt-get (o procedimento deve ser realizado imediatamente após
o purge). Observe também que antes de proceder à remoção, o apt-get solicita confirmação do
usuário.
Por fim, na figura 2.7 é mostrada a execução do comando “apt-get autoremove”:
23
Figura 2.2 – Atualização da lista de pacotes do APT
Figura 2.3 – Finalização da atualização da lista de pacotes
24
Figura 2.4 – Instalação do apache
Figura 2.5 – Finalização da instalação do apache
25
Figura 2.6 – Removendo o apache 2
Figura 2.7 – Execução do processo autoremove
26
Sempre que quiser obter mais informações sobre um pacote, basta usar o comando apt-cache
com as opções show e search:
apt-cache show apache2
apt-cache search apache2
Comandos Internos
São comandos que estão localizados dentro do interpretador de comandos (normalmente o Bash) e
não no disco. Eles são carregados na memória RAM do computador junto com o interpretador de
comandos.
Quando executa um comando, o interpretador de comandos verifica primeiro se ele é um Comando
Interno caso não seja é verificado se é um Comando Externo.
Exemplos de comandos internos são: cd, exit, echo, bg, fg, source, help
Comandos Externos
São comandos que estão localizados no disco. Os comandos são procurados no disco usando a
ordem do PATH e executados assim que encontrados. Path é o caminho de procura dos
arquivos/comandos executáveis. O path (caminho) é armazenado na variável de ambiente PATH.
Curingas
Curinga (ou referência global) é um recurso usado para especificar um ou mais arquivos ou
diretórios do sistema de uma só vez. Este recurso permite que você faça a filtragem do que será
listado, copiado, apagado, etc. São usados 4 tipos de curingas no GNU/Linux:
• "*" - Faz referência a um nome completo/restante de um arquivo/diretório.
• "?" - Faz referência a uma letra naquela posição.
• [padrão] - Faz referência a uma faixa de caracteres de um arquivo/diretório. Padrão pode
ser:
• [a-z][0-9] - Faz referência a caracteres de a até z seguido de um caractere de 0
até 9.
• [a,z][1,0] - Faz a referência aos caracteres a e z seguido de um caractere 1 ou 0
naquela posição.
• [a-z,1,0] - Faz referência a intervalo de caracteres de a até z ou 1 ou 0 naquela
posição.
A procura de caracteres é “case Sensitive” assim se você deseja que sejam localizados todos os
27
caracteres alfabéticos você deve usar [a-zA-Z].
Caso a expressão seja precedida por um ^, que é um sinal de negação, o resultado será o contrário
do especificado pela expressão. Por exemplo, [^abc] faz referência a qualquer caractere, exceto a,
b e c.
Vamos dizer que haja arquivos no diretório /usr/teste: teste1.txt, teste2.txt,
teste3.txt, teste4.new, teste5.new.
Caso deseje listar todos os arquivos do diretório /usr/teste você pode usar o coringa "*":
cd /usr/teste; ls *
ou
ls /usr/teste/*.
Como todos os arquivos serão listados se o ls for usado sem nenhum coringa, não tem muito
sentido usar o comando ls com "*".
Agora, para listar apenas os arquivos teste1.txt, teste2.txt, teste3.txt, podemos
usar inicialmente 3 métodos:
• Usando o comando ls *.txt que pega todos os arquivos que começam com qualquer
nome e terminam com .txt.
• Usando o comando ls teste?.txt, que pega todos os arquivos que começam com o
nome teste, tenham qualquer caractere no lugar do coringa ? e terminem com .txt. Repare
que se também tivéssemos um arquivo chamado teste10.txt, ele não seria listado.
• Usando o comando ls teste[1-3].txt, que pega todos os arquivos que começam
com o nome teste, tenham qualquer caractere entre o número 1-3 no lugar da 6ª letra e
terminem com .txt. Neste caso se obtém uma filtragem mais específica.
Para listar somente teste4.new e teste5.new podemos usar os seguintes métodos:
ls *.new que lista todos os arquivos que terminam com .new
ls teste?.new que lista todos os arquivos que começam com teste, contenham qualquer
caractere na posição do coringa ? e terminem com .new.
ls teste[4,5].* que lista todos os arquivos que começam com teste, contenham números de
4 e 5 naquela posição e terminem com qualquer extensão.
Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de cada um.
Redirecionamentos e Pipe
“>”
O caractere “>” redireciona a saída padrão de um programa/comando/script para algum dispositivo
ou arquivo ao invés do dispositivo de saída padrão (tela). Quando é usado com arquivos, este
redirecionamento cria ou substitui o conteúdo do arquivo, ou seja, o conteúdo existente
anteriormente no arquivo é perdido.
Por exemplo, você pode usar o comando ls para listar arquivos e usar “ls > listagem.txt”
para enviar a saída do comando para o arquivo listagem.txt, em vez de mostrá-la na tela.
28
Depois disso você pode usar o comando cat para visualizar o conteúdo do arquivo listagem.
Para redirecionar somente a saída de erros de algum comando, use “2> /tmp/erros.txt”.
Essa técnica é útil, por exemplo, para criação de logs de erro ao executar uma tarefa. Dessa forma, a
saída padrão do comando é exibida na tela e os erros são escritos no arquivo erros.txt.
O comando cat, visto anteriormente, é muito utilizado também para concatenar arquivos. Exemplo
de um uso interessante: suponha que você possua dois arquivos de áudio, o audio1.mp3 e o
audio2.mp3, e queira uni-los em um único arquivo .mp3. O cat resolveria isso facilmente:
“cat audio1.mp3 audio2.mp3 > audio_unico.mp3”.
Interessante, não? :)
“>>”
Os caracteres “>>” tem a mesma função, ou seja, redirecionam a saída padrão de um
programa/comando/script para algum dispositivo ou arquivo ao invés da saída padrão. Porém, caso
o arquivo já exista, as linhas são adicionadas ao final do arquivo. Nesse redirecionamento duplo, o
arquivo será criado caso não exista, porém não terá seu conteúdo apagado caso exista, sendo apenas
atualizado.
Por exemplo: para adicionar o conteúdo do arquivo1.txt ao arquivo2.txt, pode-se fazer
“cat arquivo1.txt >> arquivo2.txt”.
“|” (Pipe)
O pipe envia a saída de um comando para a entrada do próximo comando para continuidade do
processamento, ou seja, com ele é possível alimentar a entrada de um comando com a saída de um
anterior. Os dados enviados são processados pelo próximo comando que mostrará o resultado do
processamento.
Por exemplo, o comando “ls -la | more” faz a listagem longa de arquivos do diretório atual,
que é então enviada ao comando more, que tem a função de efetuar uma pausa a cada 25 linhas do
arquivo.
Outro exemplo é o comando “cat listagem.txt | wc -l”. O comando “wc” permite fazer
contagens em um arquivo texto. Podem ser contatadas linhas, bytes ou palavras de um arquivo.
Assim, o comando cat imprime o conteúdo do arquivo, porém o “|” faz com que esse conteúdo,
em vez de ser enviado para a tela, seja enviado como entrada para o comando “wc -l”, que conta
as linhas do arquivo. A saída desses comandos, mostrada na tela, será simplesmente o número de
linhas existentes no arquivo listagem.txt.
Capítulo 3 – Arquivos e diretórios
Diretórios
Diretório é o local utilizado para armazenar conjuntos arquivos para melhor organização e
localização. O nome diretório, como o arquivo, também é “case Sensitive” (diretório /teste é
completamente diferente do diretório /Teste).
29
Não podem existir dois arquivos com o mesmo nome em um diretório, ou um subdiretório com um
mesmo nome de um arquivo em um mesmo diretório.
No Windows temos os arquivos do sistema concentrados nas pastas "Windows" e "Arquivos de
programas", podendo o usuário criar e organizar suas pastas da forma que quiser.
No Linux, é basicamente o contrário. O diretório raiz(como se fosse o C:\ do Windows) está
tomado pelas pastas do sistema e espera-se que o usuário armazene seus arquivos pessoais dentro da
sua pasta no diretório “/home”. Naturalmente, é possível ajustar as permissões de uma maneira que
se possa salvar arquivos em outros locais, mas isso nem sempre é uma boa ideia.
No Linux os discos e partições não aparecem necessariamente como unidades diferentes, como o
C:\, D:\ e E:\ do Windows. Tudo faz parte de um único diretório, chamado diretório raiz ou
simplesmente “/”. Porém, algumas distribuições Linux facilitam bastante as coisas e listam as
unidades de disco já montadas no gerenciador de arquivos, de forma que possam ser acessadas com
apenas dois cliques.
Figura 3.1 – Gerenciador de arquivos do Gnome
A pasta “/usr/bin” (bin de binário) armazena cerca de 2.000 programas e atalhos para
programas em uma instalação típica do sistema. Como os executáveis de quase todos os programas
instalados são armazenados nela, o número só faz crescer conforme você instala novos pacotes.
Outro diretório com um enorme volume de arquivos é o “/usr/lib”, onde ficam armazenadas as
bibliotecas usadas pelos programas. A função destas bibliotecas lembra um pouco a dos arquivos
.dll no Windows. As bibliotecas com extensão ".a" são bibliotecas estáticas, que fazem parte de um
programa específico, enquanto as terminadas em “.so.versão” (xxx.so.1, yyy.so.3, etc.) são
bibliotecas compartilhadas, usadas por vários programas. Elas são gerenciadas de maneira
automática pelo gerenciador de pacotes; quando uma biblioteca é atualizada, por exemplo, são
deixados links apontando para a nova versão, o que permite que os aplicativos que utilizavam a
versão antiga continuem funcionando.
Outras pastas dignas de nota são a “/usr/local”, que é reservada a programas e scripts que você
instalar manualmente; a “/usr/sbin”, que é reservada a executáveis que podem ser usados
30
apenas pelo root (similar à pasta “/sbin”) e a “/usr/src”, que é usada para armazenar o
código-fonte de programas e também o código-fonte do kernel (caso disponível). 
Subindo de novo, a pasta “/boot” armazena o kernel e alguns arquivos usados na fase inicial do
boot. Além do kernel, ela armazena também a configuração do gerenciador de boot, responsável
pelas opções mostradas na tela de boot e as opções de inicialização aplicadas a cada uma. 
Logo a seguir temos o diretório “/dev”, que é de longe o exemplo mais exótico de estrutura de
diretório no Linux. Todos os arquivos contidos aqui, como, por exemplo, “/dev/sda”,
“/dev/fd”, etc., não são arquivos armazenados no HD, mas sim ponteiros para dispositivos de
hardware. Tudo no Linux se resume a arquivos. O arquivo “/dev/psaux” contém as informações
enviadas pelo mouse, enquanto o “/dev/sr0” permite acessar o drive de CD, por exemplo. Essa
organização visa facilitar a vida dos programadores, que podem acessar o hardware do micro
simplesmente fazendo seus programas lerem e gravarem em arquivos, deixando que o kernel se
encarregue da parte complicada.
Ele é complementado pelo diretório “/proc”, que não armazena arquivos, mas sim informações
sobre o hardware e sobre a configuração do sistema. Estas informações são usadas por utilitários de
detecção e configuração do sistema, mas podem ser úteis também quando você quer checar alguma
configuração manualmente. O comando “cat /proc/net/dev” mostra informações sobre as
interfaces de rede, o “cat /proc/cpuinfo” mostra informações sobre o processador e assim
por diante.
O diretório “/proc” faz par com o “/sys”, uma novidade introduzida a partir do kernel 2.6, que
agrupa informações sobre os dispositivos instalados, incluindo o tipo, fabricante, capacidade,
endereços usados e assim por diante. Estas informações são geradas automaticamente pelo kernel e
permitem que os serviços responsáveis pela detecção de hardware façam seu trabalho, configurando
impressoras e criando ícones no desktop para acesso ao pendrive, por exemplo.
O diretório “/etc” concentra os arquivos de configuração do sistema, substituindo de certa forma
o registro do Windows. A vantagem é que, enquanto o registro é uma espécie de caixa-preta, os
scripts e arquivos de configuração do diretório "/etc" são desenvolvidos justamente para facilitar
a edição manual. É bem verdade que na maioria dos casos isto não é necessário, graças aos vários
utilitários de configuração disponíveis, mas a possibilidade continua existindo.
Os arquivos recebem o nome dos programas, seguidos geralmente da extensão “.conf”. A boa
notícia é que, ao contrário do registro do Windows, os arquivos do “/etc” não se corrompem
sozinhos e é fácil fazer cópias de segurança, caso necessário. 
Concluindo, o diretório “/mnt” (de “mount”) recebe este nome justamente por servir de ponto de
montagem para o drive óptico (“/mnt/cdrom” ou “/mnt/dvd”) e outros dispositivos de
armazenamento. Na maioria das distribuições atuais ele é substituído pelo diretório “/media”, que
tem a mesma função. O nome dado ao dispositivo normalmente é utilizado na montagem. Um
pendrive com nome “genilson” será montado em /media/genilson.
Na verdade, o uso do diretório “/media” ou “/mnt” é apenas uma convenção. Você pode
perfeitamente montar o seu pendrive dentro da pasta “/home/fulano/pendrive”, por
exemplo, desde que faça a montagem de forma manual. Os diretórios padrão de montagem das
partições são configuráveis através do arquivo “/etc/fstab”, que é um dos arquivos básicos de
configuração do sistema.
31
Diretório Raiz
Este é o diretório principal do sistema. Dentro dele estão todos os outros diretórios. O diretório raiz
é representado por uma “/”. Assim, se você digitar o comando “cd /”, será levado ao diretório
raiz.
Nele estão localizados outros diretórios como o /bin, /sbin, /usr, /usr/local, /mnt,
/tmp, /var, /home, etc. Estes são chamados de subdiretórios pois estão dentro do diretório “/”.
A estrutura de diretórios e subdiretórios pode ser identificada da seguinte maneira:
• /
• /bin
• /sbin
• /usr
• /usr/local
• /mnt
• /tmp
• /var
• /home
A estrutura de diretórios também é chamada de Árvore de Diretórios porque é parecida com uma
árvore de cabeça para baixo. Cada diretório do sistema tem seus respectivos arquivos que são
armazenados conforme regras definidas pela FHS (FileSystem Hierarchy Standard - Hierarquia
Padrão do Sistema de Arquivos), definindo que tipo de arquivo deve ser armazenado em cada
diretório. 
Diretório atual
É o diretório em que nos encontramos no momento. Você pode digitar pwd para verificar qual é seu
diretório atual.
O diretório atual também é identificado por um "." (ponto). O comando “ls .” pode ser usado
para listar seus arquivos (é claro que isto é desnecessário porque se não digitar nenhum diretório, o
comando “ls” listará o conteúdo do diretório atual).
Diretório home
Também chamado de diretório de usuário. Em sistemas GNU/Linux cada usuário (inclusive o root) 
possui seu próprio diretório onde poderá armazenar seus programas e arquivos pessoais. Este 
diretório está localizado em “/home/[login]”. Se o seu login for “joao” o seu diretório home 
será /home/joao. O diretório home do usuário logado também é identificado por um ~ (til), 
então você pode digitar tanto o comando “ls /home/joao” como “ls ~” para listar os 
arquivos de seu diretório home.
32
O diretório home do usuário root (na maioria das distribuições GNU/Linux) está localizado em
/root, ou seja, diretamente na raiz.
Diretório Superior
O diretório superior é identificado por “..” (2 pontos, sem aspas). Por exemplo, caso o usuário
esteja no diretório /usr/local e quiser listar os arquivos do diretório “/usr”, poderá digitar
“ls ..”. Este recurso também pode ser usado

Outros materiais