Você está na página 1de 19

UNIDADE 1 – ABORDAGEM INICIAL

1.1 – História do Sistema UNIX


Não há como falar em Linux sem antes conhecer o sistema que serviu de base para o
desenvolvimento dessa plataforma: o UNIX. O sistema UNIX surgiu na década de 1960 quando
profissionais ligados à área de desenvolvimento de softwares se juntaram para criar um novo
sistema operacional. A ele foi dado, primeiramente, o nome Multics (Multiplexed Information and
Computing Service). Contudo, o custo para manutenção deste sistema era alto e depois de nove
anos chegaram à conclusão que seria melhor abandonar o projeto. No mesmo ano, em 1969, um dos
participantes do projeto, chamado Ken Thompson começou a criar um sistema de interpretação de
comandos, junto com seu colega Dennis Ritchie, cujo objetivo era rodar programas. Esse sistema se
chamava “UNIX” e possuía uma capacidade como nenhum outro na época. Com o passar dos anos,
as máquinas onde os sistemas eram desenvolvidos foram sendo aperfeiçoadas, atualizadas e
modernizadas, provocando com isso, mudanças também no desenvolvimento do UNIX. Após a
criação do sistema, em 1973 aconteceu um fato importantíssimo para a história do UNIX, o
desenvolvimento da linguagem de programação em “C” em computadores PDP, ou seja, o sistema
poderia ser portado para outros hardwares e suas mudanças passariam a ser mais fáceis de resolver.
Nos anos seguintes, foram sendo criadas outras versões do UNIX por várias plataformas, além de
servir como base para muitos programadores melhorarem ou criarem novas plataformas de código
aberto ou fechado.

1.2 - História do Linux


No começo da década de 90, um estudante de computação da universidade de Helsink, na Finlândia,
chamado Linus Torvalds, começou a desenvolver um sistema operacional na qual nomeou de Linux.
Enviou uma mensagem para uma lista de discussão na internet, a Usenet, dizendo que aqueles que
usavam o programa Minix poderiam se beneficiar de um novo sistema operacional livre que ele
acabara de desenvolver.
O Minix foi um programa desenvolvido por Andrew Tannenbaum no intuito de ajudar no ensino da
disciplina de Sistemas Operacionais, na qual ele lecionava. Era baseado no sistema Unix e rodava
em alguns microcomputadores da época, mas era extremamente limitado
A princípio, o objetivo de Linus era desenvolver "um Minix melhorado". Depois de ter
desenvolvido este pequeno kernel, Linus o colocou sob a licença GNU e deixou seu código fonte à
disposição de todos na internet.
A partir da mensagem deixada na lista de discussão, houve o interesse de muitos acadêmicos e
programadores do mundo todo que passaram a contribuir para o desenvolvimento do projeto, sendo
que cada melhoria realizada era distribuída pela internet e, imediatamente, incorporada ao núcleo do
Linux.
Apenas para efeito de comparação, destacamos abaixo as características do sistema Linux e do
sistema operacional Windows desenvolvido pela Microsoft.
Sistema Linux – É um sistema de código aberto, desenvolvido por programadores voluntários com
o único objetivo: torná-lo melhor. Além de ser gratuito, há a possibilidade de o usuário instalar em
quantas máquinas quiser, sem pagar nada por isso. O Linux é um sistema que pode ser adaptado às
necessidades do usuário, propiciando maior agilidade no momento de adaptações e possíveis
correções.
Sistema Windows – É um software de código fechado, ou seja, para poder usufruí-lo é preciso
adquirir uma licença de uso para cada uma das máquinas na qual o usuário pretende instalá-lo.
Contudo, as atualizações do Windows só podem ser realizadas por profissionais da própria
Microsoft, fazendo com que não seja possível uma solução imediata de problemas que possam
surgir durante o uso da plataforma.
1.3 - Projeto GNU
O Projeto GNU está intimamente ligado ao desenvolvimento do Sistema Linux. Ele foi criado em
1984 por Richard Stallman com o objetivo de recuperar o espírito cooperativo que prevalecia na
comunidade de informática em sua origem.
Com isso, buscava criar um sistema operacional que fosse completamente livre, podendo ser usado,
modificado ou redistribuído por qualquer pessoa, desde que fossem garantidos a todos os mesmos
direitos de uso.
O programa deveria ser compatível com o Unix, mas sem usar seu código fonte. Assim o nome
escolhido, além de representar o mamífero Gnu, como é visto em seu logotipo abaixo, também
significa a sigla GNU is Not Unix, ou seja, GNU não é Unix.
Os programadores do projeto acreditavam que um sistema operacional não era apenas um kernel
(núcleo), ou seja, apenas um controlador do sistema, além de ser um núcleo, ele também incluía
compiladores, editores, formatadores de texto, software de e-mail e muitas outras especificidades.
Assim, escrever um sistema operacional completo seria uma tarefa grande que exigiria muito
tempo.
Foi então que em 1991, Linus Torvalds surge com seu Linux, que se encaixava perfeitamente no
projeto GNU. Com o passar dos anos o sistema passou a funcionar de forma satisfatória e cada vez
mais com qualidade, uma vez que o projeto não pretendia se limitar apenas a sistemas operacionais
e sim a fornecer uma gama completa de softwares, como editores de texto, ambientes de
programação, servidores gráficos, gerenciadores de janela, browsers, banco de dados, entre outros.
Na época já existiam muitos softwares. Alguns procedentes do próprio projeto GNU e outros
programas criados fora do projeto GNU e que também ganhavam destaque, como o 'X', 'TecX',
aplicativos 'BSD', 'SenMail' (conhecido hoje por 'Postix' e 'Qmail'), Apache, 'AIX' (da IBM), e
outros, todos eles livres, usando licenças diferentes.
Esses programas eram bem conceituados, confiáveis e muito usados. Porém, encontravam-se
dispersos, sem um núcleo que pudesse reuni-los e formar um sistema operacional completo. O
kernel Linux veio para tornar realidade um sonho que há muito tempo vinha sendo perseguido sem
sucesso.
Atualmente, com a grande divulgação do Linux, surgiram muitos outros projetos livres que
conquistaram não apenas o usuário, mas outros sistemas operacionais compatíveis com Unix.
Alguns exemplos são o 'KDE', 'Gnome' e o 'Gimp'. Tudo isso graças ao sistema de código aberto,
onde é possível a criação de um sistema operacional forte, versátil e utilizável em pouco tempo.

1.4 – Características do Linux (Kernel)


Como vimos anteriormente, o Linux é um kernel de sistema operacional utilizado pela GNU/Linux.
Além de ser mais um resultado das invenções que partem de um software livre, é ele quem faz a
conexão entre o hardware e os programas que rodam e suportam cada vez mais arquiteturas e novos
hardwares.
Conheça agora as principais características e as partes mais importantes do Linux (kernel):
1. Multitarefa e multiusuário;
2. Proteção entre processos executados na memória RAM;
3. Suporte a mais de 63 terminais virtuais (consoles);
4. Modularização: o Linux somente carrega na memória o que é usado durante o
processamento, liberado totalmente a memória assim que o programa disponibilizado é
finalizado;
5. Devidos à modularização, os drivers dos periféricos e recursos do sistema podem ser
carregados e removidos completamente da memória RAM a qualquer momento;
6. Acessa sem problemas discos formatados em outros tipos de formatos e de diferentes
plataformas;
7. Suporte a vários protocolos de redes;
8. Suporte a dispositivos infravermelhos, USB, plug-and-play e rádio amador;
9. Roteamento;
10. Pode ser executado em 10 arquiteturas diferentes (Intel 32, 64 bits, Macintosh, Sparc, entre
outros).
A seguir você poderá compreender de uma forma básica e prática o que é o kernel, através da
experiência de Jorge Alberto Corso, um professor da cidade de São Bernardo do Campo - SP, em
que ele traça uma analogia muito interessante com uma outra máquina: o carro.
Trata-se de duas máquinas, uma mecânica, outra eletrônica:

CARRO (mecânica) KERNEL (eletrônica)

Para o carro movimentar-se ele precisa Para o microcomputador funcionar, ele


de um motor. precisa se um programa básico - um
software chamado sistema operacional.

Existem vários tipos de motores: Existem vários tipos de sistemas


motores para carro de corrida, para operacionais, Linux, Windows, UNIX, etc.
carro de passeio, etc.

Mesmo para um mesmo fabricante de Existe um Linux para cada tipo de


motor, existem vários modelos para um computador, main-frame, PC, Macintosh.
único fim, por exemplo: motor 1.0,
motor 1.6.

Quando aprendemos a dirigir um carro Quando usamos Linux, temos um outro


de passeio, aprendemos o software que faz a mediação (interface)
funcionamento básico: direção, pedais entre o kernel e o usuário que se chama
para acelerar, trocar de marcha, frear. ‘Shell’. Existem vários ‘Shells’ (csh, ksh,
Ou seja, não atuamos diretamente no bsh, bash, etc). Mas o importante é que
motor, mas através de comandos para são os mesmos, independente do kernel
fazê-lo funcionar. (motor) em uso, afinal os pedais e direção
são sempre iguais seja em um motor 1.0
ou 1.6.

Para alguns acessórios funcionarem em Para que o Linux funcione perfeitamente,


um carro devemos adequar o motor ou em alguns casos é necessário instalarmos
algum componente dele para que isto algum módulo específico, entenda módulo
aconteça, por exemplo, um ar- como um software preparado para uma
condicionado exigirá uma bateria com finalidade específica e que não é comum a
maior amperagem. todos os equipamentos, por exemplo, um
módulo para a placa de rede de nosso
microcomputador.
No entanto, o kernel do Linux é formado por diferentes partes, como por exemplo, o gerenciador de
memória, controle de dispositivos de hardware, controle de sistemas de arquivo, gerenciador de
redes, entre outros.
Contudo, as partes mais importantes do kernel, isto é, nada funciona sem elas, são: o gerenciador de
memória e o gerenciador de processos.

O gerenciador de memória é responsável pela atribuição de áreas de memória e áreas de troca


(swap) para os processos, para os demais componentes do kernel e para o cache de disco. Já o
gerenciador de processos, cria processos e implementam multitarefas, através da troca de processos
ativos.
No nível mais baixo, o kernel contém controladores (drivers) para cada tipo de hardware suportado.
Uma vez que existem inúmeros hardwares, o número de controladores é proporcional.
Sendo assim, cada membro de uma determinada classe de hardwares tem a mesma interconexão
com o resto do núcleo, apenas se diferem no que é necessário para implementar suas características
específicas.
1.5 – Distribuições
Com o objetivo de fazer do Linux um sistema operacional funcional, algumas organizações,
indivíduos e grupos do mundo todo criaram características diferentes, o que chamamos de
Distribuições Linux.
Uma distribuição Linux é um pacote com uma versão do kernel junto com um grande número de
programas, instaladores e ferramentas para configuração.
Cada distribuição tem seu público alvo e finalidades, o que diferencia uma da outra é a maneira
como são organizados e pré-configurados os aplicativos que cada uma contém, ou seja, as principais
diferenças estão em seu sistema de pacotes, estruturas dos diretórios e em sua biblioteca básica.
A evolução rápida do sistema pode gerar alguns problemas, como não conseguir conectar a internet,
por exemplo. Isso geralmente acontece quando o usuário instala uma versão muito antiga do
sistema.
Os principais distribuidores costumam lançar novas versões a cada semestre e, por ser gratuito ou a
um custo muito baixo, não faz sentido optar por essas versões antigas.
Conheça algumas das distribuições mais utilizadas pelo Linux:
– Ubuntu: Sistema Operacional com base em Linux, perfeito para notebooks, desktops e
servidores. Contém todos os aplicativos necessários como navegador web, programas de
apresentação, edição de texto, planilha eletrônica, comunicador instantâneo e muitos outros.
– Debian: É a distribuição oficial GNU. O Debian, por não ser uma empresa comercial, ainda
mantém o prestígio do início do desenvolvimento do Linux, pois é mantida por
desenvolvedores voluntários de todo o mundo que estão constantemente melhorando a
distribuição. O Debian conta com excelente gerenciador de pacotes que permite upgrades
rápidos e simples.
– RedHat: Tornou-se famosa pela fácil instalação e é atualmente uma das distribuições mais
usadas no mundo, com ótimos gerenciadores de pacotes. Porém, é a campeã de bugs. São
necessárias muitas atualizações para se tornar confiável.
UNIDADE 2 – INICIANDO NO AMBIENTE GRÁFICO
2.1 - Ambiente gráfico e linhas de comando Linux
Usando o terminal
Logo que surgiram as linguagens de computador e os seus programadores, todos os sistemas
operacionais usavam interfaces de modo texto, uma vez que exigiam poucos recursos das máquinas,
além de aceitar os comandos e exibir os resultados de forma bem simples.
Atualmente, com toda a evolução em relação às interfaces e aos utilitários de configuração gráfica,
o terminal ainda presta bons serviços.
Uma das principais vantagens do terminal é que os comandos são sempre os mesmos em sua
maioria. Isso facilita a utilização, independente de qualquer tipo de distribuição usada,
transformando o ambiente seguro para o desenvolvimento do trabalho. Outra vantagem é que o
terminal é a forma mais natural de “conversar” com o sistema, sempre que o usuário necessite de
qualquer informação sem se esquecer da programação básica.
Além dos comandos básicos, há dois outros recursos que tornam o terminal mais poderoso, são eles:
a possibilidade de combinar diferentes comandos para executar tarefas mais complexas (ou filtrar os
resultados para localizar informações específicas) e a possibilidade de escrever pequenos programas
em Shell script.
Como sabemos, os sistema operacional é composto de várias partes, uma delas é o núcleo que é
chamado de kernel, cujo seu objetivo é fornecer componentes lógicos para o hardware, estendendo
a sua funcionalidade.
O Shell é a casca, são as chamadas interface com o usuário. Os scripts em Shell podem ser usados
para automatizar qualquer tipo de tarefa que você precise executar repetidamente, de atualizações
do sistema a backups. Essencialmente, tudo o que é possível fazer via linha de comando, pode ser
automatizado através de um Shell script.
Contudo, além dessas utilidades contidas em um terminal, o usuário pode alterar a área gráfica e
modo texto. O software tem seis terminais em modo texto e um gráfico. Os terminais de texto
podem ser acessados com a soma das teclas Alt+f até Alt+f6. E o gráfico com as teclas Alt +f7. Na
condição de que o programa esteja instalado, uma vez que para esses comandos é necessário
identificar o usuário e a senha para efetuar o login.
2.2 - Interpretador de texto e terminais virtuais
Os sistemas UNIX usam a interface de texto como interface padrão. Essa interface usa o TTY como
paradigma de entrada e saída de dados ao usuário.
O TTY é uma abreviatura de TeleTypewriter e é uma máquina que permite interatividade de
comunicação baseada em textos, através da transmissão de sinal de código pela rede telefônica,
além disso, podem ser chamados de 'text telephones'.
Por essa descrição é fácil notar que os caracteres entram e saem do computador em sequência, na
qual facilita a vida do programador.
Com o surgimento e a redução de custos dos teclados e monitores (CRTs), as entradas eram feitas
via linhas seriais ligadas aos computadores e conectadas nos paradigmas de entrada e saída, o que
praticamente não mudou.
Porém, alguns programadores acharam que o método não era o que melhor se encaixava para
execução do trabalho. O que faltava era poder manipular esses registradores através dos programas,
uma vez que para cada fabricante de monitor existe seu próprio conjunto de registradores, ou seja,
eles só seriam úteis para um determinado modelo de um determinado fabricante.
Em razão disso, esses programadores buscaram alternativas para manipular as saídas na tela do
monitor. A interface de saída passou a ser uma tela de caracteres, isto é, um nível mais baixo de
programação era encarregado de fazer a conexão entre os registradores e os comandos de
monitoramento dos registros dos controladores de CRT. A partir deste modelo foi criado os "Vi".
O “Vi” (Visual Interface) é um editor de texto com desenvolvimento baseado em outro editor
chamado “ed”. Além de ser um editor, o Vi” é o mais usado por programadores do mundo todo e é
compatível com todas as distribuições do sistema GNU/Linux, dada sua importância para a
plataforma.
O ambiente do Linux utiliza diversos terminais virtuais ao mesmo tempo, como se abrisse várias
áreas de trabalho, permitindo o acesso de mais de um usuário ao mesmo servidor de forma
simultânea e independente.
2.3 – X Window e a organização de um ambiente gráfico
O X Window, também conhecido com 'X' ou 'X11', é um sistema gráfico de janelas que roda em
diferentes tipos de máquinas e plataformas Unix.
Essa interface gráfica é totalmente configurável e flexível, podendo ser utilizada por usuários e
projetistas.
O X11 é, basicamente, uma biblioteca (Xlib) que permite o controle total sobre as janelas, mouse,
teclado e vídeo.
Tal biblioteca possibilita a criação de programas que gerenciam tudo isso. Esses programas são
chamados de Windows Makers.
O Linux, por utilizar como base o Unix, também adota o X11 como interface gráfica padrão. Além
disso, rodam também populares ambientes gráficos, como o Window Maker, Gnome e KDE.
A organização do ambiente gráfico 'X' traz grandes vantagens de gerenciamento e recursos no
ambiente gráfico Unix. Ou seja, com esses recursos você pode executar programas em
computadores remotos ou mudar totalmente a aparência de um programa sem ter que fechá-lo, por
exemplo.

Contudo, um ambiente gráfico é dividido em três partes:


• Servidor X: Programa responsável pela exibição dos gráficos na tela, mouse e teclado. Ele
se comunica com os programas-clientes através de diversos métodos. Os servidores 'X'
podem ser executados na mesma máquina em que o programa-cliente estiver sendo usado ou
em computadores remotos.
• Gerenciador de janelas: Programa que controla a aparência da aplicação. Os gerenciadores
de janelas (Windows makers) são programas que atuam entre o servidor 'X' e a aplicação.
Para isso, temos vários tipos de gerenciadores, a escolha depende do gosto do usuário e dos
recursos que ele deseja utilizar.
• Aplicação-cliente: É o programa que está sendo executado. Pode ser um browser, uma
planilha ou qualquer outro aplicativo.
UNIDADE 3 – A LINGUAGEM LINUX
3.1 – Comandos internos
Para começar a usar o sistema é necessário efetuar um login, cedendo o nome do usuário e a senha
que estão cadastrados no sistema a fim de se identificar e usar os recursos que tem acesso. Após
isso, o usuário entrará no 'prompt' do sistema onde deverá digitar os comandos que deseja que o
computador execute.
O 'prompt' é executado após o login do sistema, nomeado de interpretador de comandos, ou 'Shell'.
Sua função é fazer a ponte entre o usuário, os programas do sistema e o kernel. A principal função
do interpretador de comandos é executar programas disponíveis no sistema.
Porém, cada interpretador tem seus comandos internos (builtins), ou seja, existem alguns comandos
especiais que não são programas-comandos ativados pelo Shell, mas trata-se de pequenas rotinas
internas do próprio interpretador. Ao executar um comando, o interpretador primeiro verifica se o
que foi solicitado se refere a um comando interno ou externo. Após verificar, o programa executa
sua rotina interna usando a direção desejada, na qual não precisa executar um programa externo.
Os comandos interno, por exemplo, 'cd', 'exit', 'bg', 'echo', têm uma importância muito grande, pois
fazem com que o Shell seja programável, isto é, os comandos internos possuem rotina internas que
representam controles de fluxo e laços ('if', 'while', 'for' etc). Assim, podemos escrever scripts e
executá-los a partir do Shell.
3.2 - Comandos externos (programas)
Quando não digitamos um comando interno do Shell, os comandos externos ('ls', 'mkdir', 'rmdir') do
interpretador de comandos são procurados no disco, usando o comando 'path' e são executados
assim que encontrados.
Para obter uma lista com diversos comandos externos podemos verificar o conteúdo dos diretórios
digitando '/bin' e '/sbin'.

Uma das vantagens do interpretador de comandos consiste em o usuário não precisar saber onde
estão localizados os programas que deseja executar. No caso do 'bash' (linha de comando), o nome
do arquivo e o comando são completados quando pressionada a tecla 'TAB' no teclado, o que é útil
quando não se sabe ao certo o nome do comando ou do arquivo.

3.3 - PATH
Path (caminho) é um programa de computador que procura os arquivos ou comandos executáveis
no intuito de aplicar diferenças textuais aos programas, deixando claras as modificações executadas
pelo caminho. Esse programa facilita o processo de revisão e avalia o desempenho dos
programadores.
Para procurar um arquivo, você pode utilizar o seguinte exemplo: o caminho
'/usr/local/bin:/usr/bin:/Bin:usr/bin/X11' significa que se você digitar o comando 'ls' na frente do
caminho, o interpretador de comandos iniciará a procura de programa 'ls' em todos os diretórios
existentes no computador. Caso não encontre o arquivo até o último diretório do 'path', a seguinte
mensagem é mostrada: "Bash: ls: comand no found" (comando não encontrado).
Outra maneira de procurar um arquivo não encontrado é usando um './' (ponto barra) na frente do
comando. Esse procedimento diferencia o Linux do MS-DOS do Windows, uma vez que o comando
é sempre procurado no diretório corrente, antes de ser procurado no 'path'.

Sendo assim, o caminho de diretórios vem configurado na instalação do Linux, mas, pode ser
alterado no arquivo '/etc/profile'. Caso deseja alterar o caminho para todos os usuários, este é o
melhor lugar, pois ele é lido por todos no momento do login.

3.4 - Variáveis de ambiente


Os processos no Unix e na maioria dos sistemas operacionais mantêm um conjunto de variáveis
globais chamadas de 'variáveis de ambiente'.
Algumas dessas variáveis são copiadas pelo Sistema Operacional através do processo "pai-filho",
ou seja, sai do processo "pai" para o processo "filho". Outras são iniciadas ou modificadas pelo
sistema operacional.
Como vimos no capítulo anterior, uma dessas variáveis é o PATH, que é usada pelo interpretador de
comandos para saber onde estão os programas que deve executar.
Existem muitas outras variáveis de ambiente além da variável PATH. Algumas das mais importantes
são:
• TERM: Tem valor do tipo de terminal virtual que está sendo usado.
• HOME: Tem o caminho para o diretório home do usuário.
• MANPATH: Tem o caminho para o editor de texto padrão.
Para verificar o valor de todas as variáveis de ambiente, basta digitar o comando 'env'. Esse
comando listará todas as variáveis existentes com seus respectivos valores.

Caso você queira saber o valor de uma variável específica, basta digitar o comando que imprimirá o
conteúdo da variável PATH. A seguir listaremos três maneiras de mudar o valor de uma variável de
ambiente:
1 – Com o comando export podemos tanto alterar o valor de uma variável de ambiente, quanto criar
novas variáveis. Exemplo: “export PATH=$PATH:/home/user/bin”
2 – Com o comando set configuramos o valor de uma variável de ambiente existente. Exemplo: “set
PATH=$PATH:/home/user/bin”
3 – Também podemos escrever apenas “PATH=$PATH:/home/user/bin” na linha de comando.

UNIDADE 4 – MÉTODOS DE ARMAZENAMENTO DE DADOS


4.1 - Estrutura de diretórios e particionamento de discos
Nos sistemas operacionais com base na linguagem GNU/Linux, o esquema de particionamento de
disco ocorre de maneira diferente das demais, no qual se destacam três pontos principais:
quantidade de partições para o funcionamento, rótulo de partições e software de particionamento.

A relação e a comparação entre as plataformas da Microsoft e Linux estabelecidas serão


relacionadas ao longo deste tópico.

Na plataforma da Microsoft, em versões mais antigas, ainda é usada a ferramenta de


particionamento do DOS, que tem, no máximo, uma partição primária e uma estendida, na qual
podemos ter inúmeras partições lógicas. Esse limite já foi praticamente eliminado, uma vez que
padrões internacionais definem um tamanho máximo para o uso em disco, a fim de armazenar
tabelas de particionamento. Sendo assim, para cada partição é preciso um exato tamanho para
guardar informações sobre ela, totalizando um limite máximo de quatro partições. Note que, neste
caso, temos que utilizar uma dessas reservas para criar uma partição estendida. Isso nos dará
oportunidade de criar outras partições chamadas “lógicas” dentro desta partição estendida.

Já o esquema de particionamento do GNU/Linux é bastante flexível. Mas é preciso seguir algumas


regras para que o sistema possa ser iniciado após a instalação. As bases de todas essas regras são
definidas pela FHS (Filesystem Hierarchy Standard), que tem por objetivo definir onde os arquivos
e diretórios do sistema serão localizados.
Quando estamos particionando o disco para o Linux, devemos levar em consideração que, nessa
plataforma, as partições e diretórios estão muito mais ligados entre si do que em outros sistemas
operacionais. Chamamos de Ponto de Montagem quando usamos esses diretórios para acessar ou
montar partições, além de precisar saber "quem são", para podermos particionar o disco.
Ressaltamos que os sistemas Linux podem funcionar apenas com duas partições, sendo uma para o
sistema operacional que será montado na raiz '/' (barra) e outra para troca de arquivos, chamada de
'swap'. Logo entenderemos esses termos.

Todos esses pontos de montagem irão se localizar hierarquicamente abaixo de um único diretório-
raiz. No Linux é representado pela '/' (barra), onde cada ponto de montagem precisa,
obrigatoriamente, utilizar uma partição, mas essa não precisa ser exclusiva.
Por exemplo, tendo quatro partições primárias é possível ter quatro pontos de montagem
independentes. Além disso, note que qualquer outro ponto de montagem não especificado será
montado dentro da raiz ('/').

Outro ponto de montagem necessário para que o Linux seja instalado e funcione corretamente é o
da partição 'swap'. Tal partição é conhecida como zona de troca e auxila no armazenamento dos
dados que estão em transição entre a memória e o disco do computador. Essa zona é muito
importante para instalação e funcionamento de qualquer distribuição Linux, além disso, aumenta o
desempenho do sistema de maneira formidável.

Outra vantagem do Linux, sobre os demais sistemas operacionais, é o que ele pode fornecer com
essas características.
Ainda é possível utilizar pontos de montagens separados por discos, aumentando assim o
desempenho do sistema e alterando a maneira e o local onde os dados serão armazenados.
Se você tiver mais de um HD será possível espalhar esses pontos de montagem pelos HDs
existentes em seu computador.
Esse tipo de procedimento deve ser bem pensado e bem executado durante a instalação do sistema,
mas também faz parte de um processo de tunning, ou seja, ajuste fino.
O Linux, como os sistemas UNIX, não trabalha com a ideia de volumes lógicos como em alguns
outros sistemas, por exemplo, o MS-DOS da Microsoft, que representa a unidade de disco rígido e a
unidade de disquetes como dois volumes lógicos diferentes.
Todos os componentes, como: unidade de disquete, CDROM, impressora, HD, entre outros, são
concebidos por arquivos. Para localizá-los é só ir no '/dev', na árvore de diretórios do Linux. Isto é,
quando o programa precisa ler ou escrever em um desses elementos, ele lê informações e escreve no
arquivo que representa aquele componente, que neste caso é o 'device'.
No entanto vimos que o Linux tem somente uma árvore de diretórios, mas seus arquivos podem
estar em componentes diferentes do computador, como por exemplo, uma partição do HD, disquete,
etc. Para unir todos esses 'devices' em uma única estrutura de diretórios, existe o comando 'mount',
que monta todos os dispositivos, na qual veremos mais informações a seguir.
4.2 – O Comando MOUNT

O comando 'mount' tem a função de montar um dispositivo na hierarquia do sistema de arquivos do


Linux. As opções mais usadas são:

-a: Montar todos os dispositivos especificados no arquivo '/etc/fstab' que não tem a opção 'noauto'
selecionada.
-r: Montar o sistema de arquivos do dispositivo como “somente leitura”.
-w: Montar o sistema de arquivos do dispositivo como leitura e gravação.
-o: Especificar as opções de montagem.
-t: Especificar o tipo do sistema de arquivos do dispositivo.

Exemplo: teste@Tux:# mount/dev/cdrom/mnt/cdrom -t iso9660

4.3 – O comando UMOUNT


O comando 'umount' tem objetivo de desmontar dispositivos montados pelo comando 'mount'. O
'umount' iguala o conteúdo do disco com o conteúdo dos buffers e libera o diretório de montagem.
As opções mais usadas são:
• -a: Desmonta todos os dispositivos listados no arquivo '/etc/mtab', que é mantido pelo
comando 'mount' como referência de todos os dispositivos montados.
• -t tipo: Desmonta somente os dispositivos
que contenham o sistema de arquivos
especificados no tipo.
Exemplo: teste@Tux:# umount /dev/cdrom

4.4 - O arquivo FSTAB


O arquivo 'fstab' tem a função de armazenar as configurações dos dispositivos que devem ser
montados e determina o ponto de montagem de cada um, quando o sistema operacional é iniciado.
O Linux suporta diversos sistemas de arquivos locais e remotos. O arquivo 'fstab' está localizado no
diretório '/etc'.
Agora você verá uma tabela que contém as opções de montagem geradas pelo arquivo 'FSTAB'.

Opção Descrição
Auto Habilita o dispositivo para que seja montado na inicialização.
Noauto Desabilita o dispositivo montado na inicialização.
ro Monta o sistema de arquivos somente como leitura.
rw Monta o sistema de arquivos para leitura e gravação.
Exec Habilita a execução de arquivos no sistema de arquivos especificados.
Noexec Desabilita a execução de arquivos.
Possibilita que qualquer usuário monte o dispositivo, mas proíbe outros usuários de
User
desmontá-lo.
Users Possibilita que qualquer usuário monte e desmonte o dispositivo.
Nouser Somente o superusuário (root) pode montar e desmontar.
Sync Habilita a transferência de dados síncrona no dispositivo.
Async Habilita a transferência de dados assíncrona no dispositivo.
Dev Dispositivo especial de caracteres.
Suid Habilita que os executáveis tenham bits do ‘suid’ e ‘sgid’.
Nosuid Desabilita que os executáveis tenham bits do ‘suid’ e ‘sgid’.
Defaults Configura as opções de montagem como rw, suid, Exec, Auto, Nouser e Async.

UNIDADE 5 – MANIPULAÇÃO DE OBJETOS


5.1 – Comandos para manipulação de diretório
5.1.1 - Comando 'cd'
O comando 'cd' é usado para navegar por diretórios. É um dos comandos mais utilizados no Linux.
Se durante a operação não houver direcionamento para algum diretório, o comando levará o usuário
de volta ao diretório-raiz.
Exemplos:
teste@Tux:$cd/home
Nesse exemplo estamos acessando o diretório '/home'.
teste@Tux:$cd/usr/local
Nesse exemplo estamos acessando o diretório '/usr/local'.
5.1.2 - Comando 'ls'
O comando 'ls' enumera todos os arquivos de diretórios presentes no computador e exibe
informações sobre as suas características. Para usar o comando 'ls' não é preciso nenhuma opção ou
argumento para ser executado.
Exemplo:
teste@Tux:$ ls -l
drwxr-xr-x  77 root     root    5776 2006-10-19 08:15 etc
drwxr-xr-x  59 root     root    1600 2006-10-09 14:05 home
Depois tente isso:
teste@Tux:$ ls -l -s
E, por fim:
teste@Tux:$ ls -ls
Você verá que, usando parâmetros, o 'ls' retorna listas extensas com os resultados da sua consulta,
tornando assim a consulta muito mais eficaz.
5.1.3 - Comando 'mkdir'
O comando 'mkdir' é usado para criar diretórios. Quando o usuário cria um diretório novo com o
comando 'mkdir', esse diretório recebe automaticamente dois elementos ocultos.
Esses elementos são: 'o.' (ponto) e 'o..' (dois pontos), representando ligações entre o novo diretório e
o diretório pai.
As opções mais usadas são:
• -p: Cria um diretório mesmo que o diretório pai não exista. Nesse caso cria também o
diretório pai.
• -m: Configura a permissão do diretório criado.
Exemplos:
teste@Tux:$ mkdir documentos
Cria o diretório 'documentos'.
teste@Tux:$ mkdir -p meusdocumentos/cartas
Cria o diretório 'cartas' como filho do diretório 'meusdocumentos'.
teste@Tux:$ mkdir -m 777 meusdocumentos/modelos
Cria o diretório 'modelos' abaixo do diretório 'meusdocumentos' com permissão total.

5.1.4 - Comando 'rmdir'


O comando 'rmdir' é usado para remover somente diretórios vazios de forma relativamente segura.
Esse comando não se restringe à remoção de um diretório por vez. Se estiverem vazios, mais de um
pode ser removido.
Exemplo:
teste@Tux:$ rmdir meudiretorio
Remove o diretório 'meudiretório', que se encontra vazio.
5.2 – Comandos para manipulação de arquivos
5.2.1 - Comando rm
O comando 'rm' é usado  para excluir arquivos ou diretórios do sistema.
As opções mais usadas são:
-f: Força a remoção, não pergunta antes de remover.
-R: Remove diretório e todo seu conteúdo.
Exemplos:
teste@Tux:$rmarquivo1
Remove arquivo1.
teste@Tux:$ rm -Rf /home/usercomum
Remove todo o diretório usercomum.

teste@Tux:/tmp$ rm*
Remove todo o conteúdo do diretório /tmp.
Atenção: Muito cuidado com esse comando, pois, se usado de maneira errada pode causar
problemas para o usuário.

5.2.2 - Comando cp
O comando 'cp' é usado para copiar diretórios ou arquivos. Confira algumas opções mais usadas:
• -d: Mantém os links ao copiar.
• -p: Copia todas as informações dos atributos dos arquivos e diretórios, bem como dono,
permissão, grupo, etc.
• -p: Copia todas as informações dos atributos dos arquivos e diretórios, bem como dono,
permissão, grupo, etc.
• -R: Copia os arquivos recursivamente. Útil para copiar os arquivos e diretórios abaixo do
diretório especificado.
• -a: Faz o mesmo que as opções "-dpR" combinadas.
• -f: Força a cópia, gravando por cima do destino.
• -i: Pergunta ao usuário antes de copiar.
• -v: Mostra o nome de cada arquivo que está sendo copiado.
Exemplos:
teste@Tux:$ cp arquivo1 arquivo2
Nesse exemplo estamos copiando o arquivo1 para arquivo2 no mesmo diretório.
teste@Tux:$ cp arquivo1 /tmp
Nesse exemplo estamos copiando o arquivo1 para o diretório /tmp.
teste@Tux:$ cp -Rfv /home /tmp
Nesse exemplo podemos copiar todo o diretório /home e todos os seus subdiretórios para o diretório
/tmp.
5.2.3 - Coringas
Os coringas são usados quando estamos trabalhando com arquivos de diretórios do Shell. Sendo
muito comum precisarmos trabalhar com diversos arquivos ao mesmo tempo.
Para que o procedimento se torne simples, o Linux oferece o recurso de coringa para os nomes dos
arquivos e diretórios.

Símbolo Descrição
Usado para "qualquer coisa", ele pode substituir um ou mais caracteres
*
de um nome.
? Usado para substituir um caractere somente de um nome.
Usado para substituir as partes dentro da chave {}, pelo texto1, depois
{texto1, texto2, texto3...}
texto2, depois texto3, etc.

Exemplos:
teste@Tux:$ ls *.txt
Lista todos os arquivos que possuem a extensão '.txt'.
5.2.4 - Redirecionadores
Um dos esquemas interessantes no Linux são os redirecionadores. Como o Linux inicialmente foi
criado para fins mais técnicos, era essencial que os comandos e processos tratassem as entradas e
saídas com grande facilidade.
Antes de começar com os exemplos é preciso definir o que são Entrada Padrão, Saída Padrão e
Saída de Erro.
Entrada Padrão ('stdin') - É a entrada de fluxo de dados. Pode ser representado por 0 (zero).
Saída Padrão ('stdout') - É a saída de fluxo de dados em condições normais. Pode ser representado
por 1 (um).
Saída de Erro ('stderr') - É a saída de fluxo de dados em condições de erro. Pode ser representado
por 2 (dois).

Podemos redirecionar a Entrada Padrão de uma saída para outra saída, utilizando o sinal de maior
(>) e, para direcionar, uma entrada para outra entrada usamos o sinal de menor (<). Ainda assim,
podemos redirecionar uma saída para uma entrada usando uma barra vertical. O sinal é 'pipe'(|) ou
condutor.
Exemplos:
teste@Tux:$ ls > saida.txt
No exemplo acima usamos o comando 'ls', como já vimos antes, porém, aqui ele pega todo o
resultado de retorno e grava no arquivo 'saida.txt'.
teste@Tux:$ mail "meuemail@domain.com" < email.txt
Já nesse exemplo, o programa 'mail' está recebendo como argumento o endereço de e-mail e, ao
invés de utilizar o teclado como entrada padrão, o arquivo texto 'email.txt' é redirecionado como
entrada.

teste@Tux:$ ./meuprograma > arquivo.txt


Nesse exemplo, o 'arquivo.txt' recebe toda a saída do programa 'meuprograma'.

teste@Tux:$ ./meuprograma 2 > error.log


Nesse exemplo, o arquivo 'error.log' receberá toda a saída de erros do programa 'meuprograma'.

teste@Tux:$ ./meuprograma > arquivo1 2>&1 error.log


Nesse exemplo, toda a saída padrão e de erros de 'meuprograma' será gravada em 'error.log'.

teste@Tux:$ ls -l | more
Nesse exemplo, os resultados do 'ls' são repassados ao comando 'more', paginando assim os
resultados.

5.3 – Comandos Diversos


5.3.1 - Comando ln
O comando 'ln' cria ligações (links) ou imagens para determinados programas, arquivos ou
diretórios. Ele associa um nome a um determinado programa, transferindo todas as funções de tal
programa para o nome que é criado. Por curiosidade, os links criados podem ser vistos com a opção
'-I' do comando 'Is'.
-s: Cria um link simbólico. O padrão do comando 'ln' são links físicos.
-f: Força a criação de um link, mesmo que esse já exista.
-i: Exibe número de identificação.
Exemplos:
teste@Tux:# ln -s /usr/src/Linux-2.6.20 /usr/src/Linux Nesse exemplo criamos um link simbólico
Linux, que aponta para o diretório '/usr/src/Linux-2.6.20'. Usando o comando ls -l temos o seguinte
retorno:
teste@Tux:/usr/src:# ls –ls
total 0 0 lrwxrwxrwx  1 root src 22 2000-01-01 08:32 Linux -> /usr/src/Linux-2.4.20/
Criando um link físico:
teste@Tux:/usr/src:# ln/var/log/messages /var/adm/log/kernel.log
Cria o link físico 'kernel.log' do arquivo 'messages'.
5.3.2 - Comando find
O comando 'find' é usado para localizar uma expressão a partir de um caminho ou diretório,
efetuando essa busca diretamente no sistema de arquivos.
Exemplos:
teste@Tux:# find / -name meuprograma.txt
Nesse exemplo estamos procurando pelo arquivo 'meuprograma.txt'.
teste@Tux:# find / -iname MeuPrograma.txt
Nesse exemplo estamos procurando pelo arquivo 'MeuPrograma.txt'. Perceba que, no primeiro
exemplo, usamos '-name' e agora usamos '-iname'. Isso acontece porque o '-iname' não diferencia
maiúsculas de minúscula. Como não temos certeza do nome do arquivo usamos '-iname'.
teste@Tux:# find /home/flaviocapeletti -iname documento.stx
Nesse exemplo, procuramos o 'documento.stx' no '/home/flaviocapeletti'.
5.3.3 - Comando echo
O comando 'echo' (eco), repete ou ecoa tudo aquilo que for digitado à sua frente, separado por
espaço em branco. É muito usado para marcar linhas de scripts, verificar conteúdos de variáveis de
ambiente, entre outros.
Exemplo:
teste@Tux:~$echo $PATH
Nesse exemplo, pedimos para o comando 'echo' exibir o conteúdo da variável '$PATH'.

Você também pode gostar