% JLdL 06Apr01.
%	Copyright (C) 2000-2002 by Jorge L. deLyra.
% Mail: <delyra@latt.if.usp.br>. Web: "http://latt.if.usp.br".
% Este documento pode ser copiado e/ou distribuído livremente.
% Ver os termos e condições nos arquivos do sub-diretório web/.
% This document may be copied and/or distributed freely. See the
% _ terms and conditions in the files in the web/ subdirectory.

\documentclass[12pt]{article}
\usepackage[brazil]{babel}\usepackage[latin1]{inputenc}\usepackage{html}

\newcommand{\linkf}[2]{\htmladdnormallinkfoot{#1}{#2}}
\newcommand{\link}[2]{\htmladdnormallink{#1}{#2}}
\newcommand{\lnk}[1]{\htmladdnormallink{#1}{#1}}

\title{ {\huge\bf FMA 215} \\ Aula 4: Floppies e Filesystems }

\author{Prof. Jorge L. deLyra}

\date{08 de Abril de 2002}

\begin{document}\maketitle

\section{Alguns Conceitos Relevantes}

 Nesta aula vamos lidar com disquetes comuns e com o conceito de posse
 (ownership) e de autorizações de acesso de arquivos e diretórios.

 \paragraph{Disquetes:} o disquete é uma mídia magnética removível de
 baixa densidade, baixa velocidade e de baixa capacidade de
 armazenamento. Vamos lidar com simples disquetes comuns, com 3-1/2" de
 diâmetro e capacidade bruta ou ``raw'' de 1.4~MB. Hoje em dia este tipo
 de disquete é útil predominantemente como uma forma de se bootar o
 sistema operacional na máquina, mas ele também é útil para se transferir
 ou transportar pequenas quantidades de informação. Como sistema de backup
 sua utilidade já é bem mais limitada e é preferível usar discos ZIP ou
 gravadores de CDROM. Por outro lado, no sistema Linux, do ponto de vista
 lógico, estes disquetes podem funcionar exatamente como qualquer outro
 tipo de disco, rígido ou flexível, sendo por isto uma boa forma de se
 introduzir o assunto. Neste tipo de mídia, ao contrário do que acontece,
 por exemplo, numa fita magnética, podemos ter acesso direto a qualquer
 parte do disco (também chamado de ``random access''), não apenas acesso
 sequencial como é o caso das fitas magnéticas.

 \paragraph{Ownership e acesso:} do ponto de vista de um determinado
 usuário, há três classes de ownership e de controle de acesso: a classe
 ``user'' ({\tt u}) é o próprio usuário; a classe ``group'' ({\tt g}) é o
 conjunto dos outros usuários que fazem parte do mesmo grupo que ele; a
 classe ``other'' ({\tt o}) são todos os usuários do sistema. Cada arquivo
 ou diretório é de algum usuário e de algum grupo, ou seja, há dois tipos
 de ownership diferentes, ownership de user e ownership de group. Além
 disso, cada arquivo ou diretório tem, para cada classe, três tipos de
 controle de acesso, ou seja, há controles de acesso separados para o
 usuário, para o seu grupo e para os outros usuários do sistema. Para cada
 uma destas classes há possibilidades de acesso para leitura (read, {\tt
 r}), para escrita (write, {\tt w}) e para execução (exec, {\tt x}). Cada
 uma destas possibilidades de acesso pode estar ligada ou desligada. Além
 disso, cada uma das classes pode ter algumas flags (bandeiras,
 marcadores) especiais ativadas.

 \paragraph{O comando {\tt ls -l}:} como veremos, o comando {\tt ls}, com
 a opção {\tt -l}, ou seja, usado da forma {\tt ls -l <arquivo>}, dá toda
 a informação de ownership e de acesso do arquivo, entre outras coisas.

\begin{description}

 \item[Controles de acesso:] no output do comando {\tt ls -l} vemos, no
 início de cada linha, um conjunto de letras que mostra quais são os modos
 de acesso permitidos para cada classe. Aqui estão alguns exemplos:

 \item[\tt -rwx------] Todos os acessos autorizados só para o usuário
 ({\tt u}).

 \item[\tt ----rwx---] Todos os acessos autorizados só para o grupo ({\tt
 g}).

 \item[\tt -------rwx] Todos os acessos autorizados só para outros ({\tt
 o}).

 \item[\tt -r--r--r--] Acesso de leitura ({\tt r}) aberto para todas as
 classes.

 \item[\tt --w--w--w-] Acesso de escrita ({\tt w}) aberto para todas as
 classes.

 \item[\tt ---x--x--x] Acesso de execução ({\tt x}) aberto para todas as
 classes.

 \item[Ownerships:] logo depois dos controles de acesso e do número de
 links o output do comando {\tt ls -l} mostra o nome do usuário a quem o
 arquivo pertence, seguido do nome do grupo ao qual o arquivo está
 associado.

\end{description}

 Tudo isto pode parecer muito complicado agora, mas veremos que é uma
 forma muito natural e eficiente de configurar as coisas, permitindo que
 cada usuário mantenha sua privacidade ao mesmo tempo que compartilha
 dados com outros usuários. Também é possível usar este esquema para
 definir grupos de trabalho que possam colaborar de forma transparente em
 projetos específicos. Além disso, com este esquema é possível manter o
 sistema em si protegido de erros por parte dos usuários, que de outra
 forma poderiam prejudicar o seu funcionamento ou até mesmo destruí-lo.

 Em nossos sistemas no projeto Sócrates em geral adotamos o padrão de que
 cada usuário tem o seu próprio grupo, com nome idêntico ao username, de
 forma que no caso dos seus arquivos deve aparecer o seu username nestes
 dois lugares. Isto não quer dizer que você não possa pertencer a outros
 grupos. Não só você pode como existem comandos no sistema que permitem
 mudar de um grupo para o outro. Podemos acomodar um grupo de trabalho
 criando uma conta especial para ele e colocando cada membro do grupo de
 trabalho no grupo desta conta. É o que fazemos com as contas de
 disciplina que são criadas no projeto: criamos uma conta para cada
 disciplina e os professores e monitores da disciplina são colocados no
 grupo desta conta, o que permite que eles trabalhem cooperativamente na
 conta da disciplina.

 \paragraph{Arquivos especiais:} dentro de cada diretório existem dois
 arquivos especiais, chamados simplesmente de {\tt .} e {\tt ..} (um
 simples ponto e dois pontos seguidos). O arquivo {\tt .} representa o
 próprio diretório onde ele está, enquanto o arquivo {\tt ..} representa o
 diretório do qual o diretório onde ele está é um sub-diretório; em outras
 palavras, trata-se do diretório que está logo acima do diretório corrente
 na estrutura de árvore dos diretórios. A única exceção a esta regra é o
 diretório-raiz do sistema de arquivos, no qual {\tt .} e {\tt ..}
 representam a mesma coisa, a raiz do sistema de arquivos. Também são
 tratados de forma um tanto especial quaisquer arquivos cujos nomes se
 iniciem com um ponto.

 \paragraph{O comando {\tt ls -a}:} em sua forma normal, sem opções, o
 comando {\tt ls} ignora quaisquer arquivos cujos nomes se iniciem por um
 ponto. Isto inclui os arquivos especiais {\tt .} e {\tt ..} bem como
 quaisquer arquivos com nomes da forma {\tt .*}, onde a estrela representa
 qualquer conjunto de caracteres. Do ponto de vista do comando {\tt ls}
 estes são ``arquivos escondidos''. Isto é conveniente quando certos
 arquivos precisam estar num determinado diretório por qualquer motivo mas
 não queremos estar vendo eles o tempo todo quando olhamos o diretório com
 o comando {\tt ls}. O caso típico são os arquivos de configuração de
 comandos, sistemas e aplicativos que devem ser colocados na raiz de sua
 conta. Os arquivos não estão de fato escondidos, são arquivos como
 quaisquer outros, que apenas recebem um tratamento especial conveniente
 do comando {\tt ls}. Para vê-los basta usar a opção {\tt -a} do comando
 {\tt ls}.

\section{Tarefas}

 Obtenha um floppy disk de 1.4~MB, vazio e em bom estado, de preferência
 novo. É um problema relativamente comum floppy disks terem problemas de
 erro de leitura devido a defeitos de superfícies, assim, use apenas
 floppies de boa qualidade, para evitar problemas e frustrações.

 Em geral os floppy disks vêm formatados da fábrica. Isto quer dizer que
 eles vêm ``formatados em nível baixo'', o que significa já ter as trilhas
 magnéticas onde serão armazenados os dados, segundo uma certa geometria
 padronizada. Além disto, eles em geral já vêm com um filesystem tipo FAT
 do DOS, o que significa que já está escrita neles uma certa quantidade de
 informação, reservando espaço para funções de controle e organização dos
 arquivos que podem ser escritos no restante do espaço disponível do
 floppy como, por exemplo, tabelas para os nomes dos arquivos e para as
 datas de criação. Em filesystems mais complexos há mais tabelas, por
 exemplo para informações de ownership e de controle de acesso.
 Denominaremos a criação no disco de uma tal estrutura de filesystem de
 ``formatação de nível alto''.

 Está claro que qualquer filesystem que se crie no disco ocupa algum
 espaço, que chamamos de ``overhead'', de forma que nem todo o espaço
 disponível no disco ``raw'' (aquele que está formatado em nível baixo mas
 não em nível alto) estará disponível para arquivos dos usuários. É o
 filesystem que nos permite usar a capacidade de random access do floppy,
 acessando diretamente algum arquivo que esteja escrito lá pelo meio
 dele. Quanto mais simples o filesystem, menos overhead ocupará. Por outro
 lado, filesystems mais complexos dão ao usuário maior controle e mais
 opções sobre os tipos de coisas que é possível colocar no disco. Para
 poder usar todo o espaço ``raw'' disponível no floppy, é necessário
 usá-lo sem uma estrutura de filesystem, o que também é possível fazer,
 como veremos mais tarde no tópico sobre procedimentos de backup. Neste
 caso o floppy passa a ser um dispositivo de acesso sequencial, exatamente
 como uma fita.

 Execute a sequência de tarefas que segue. Para cada uma, faça um esforço
 de compreender o significado dos outputs dos comandos que aparecem na
 tela. Não se esqueça de anotar suas dúvidas, dificuldades e curiosidades
 para discutir durante a próxima aula.

 {\bf Atenção! Aviso importante: quando você tiver montado um disquete no
 sistema, nunca o retire fisicamente do drive enquanto ele estiver
 montado, sob pena de perder dados. Para poder retirar o floppy do drive
 deve-se primeiro desmontá-lo, como veremos adiante.}

\begin{enumerate}

 \item Faça um login no sistema e crie um arquivo de teste em sua
 conta. Chame-o de {\tt teste.txt} e escreva alguma coisa reconhecível
 dentro dele como, por exemplo, ``Hello world 43'' ou algo assim.

 \item Certifique-se de que o seu floppy não está protegido contra escrita
 (write-locked). Há uma janelinha num canto do floppy que pode estar
 aberta ou fechada; ela deve estar fechada. Coloque o floppy no drive.

 \item Dê uma boa olhada no diretório {\tt /floppy/vfat} do sistema. Use o
 comando {\tt ls -al} para determinar a quem ele pertence e quais os tipos
 de acesso permitidos. Você tanto pode ir até lá ({\tt cd /floppy/vfat ;
 ls -al}) quanto ``olhar de longe'' ({\tt ls -al /floppy/vfat}).

 \item Tente criar um arquivo chamado {\tt trash} naquele diretório. Você
 tanto pode fazer isto indo até lá quanto ``de longe''. O que acontece?
 Observe que neste momento você está tentando usar um sub-diretório
 contido no filesystem-raiz do sistema, que está protegido dos usuários.

 \item Caso tenha saído de lá, volte para casa (para o seu home) dando o
 comando {\tt cd} sem argumentos. Dê o comando {\tt df} para verificar
 quais são os filesystems disponíveis no sistema. O filesystem-raiz é
 aquele que aparece como montado no diretório-raiz ({\tt /}) no output do
 comando {\tt df}.

 \item Até aqui, não há nenhuma conexão lógica estabelecida entre o floppy
 que você colocou no drive e o sistema. O sistema está configurado para
 permitir que você ``monte'' o floppy no diretório {\tt /floppy/vfat},
 estabelecendo assim esta conexão, desde que ele esteja no formato FAT do
 DOS. Faça isto, usando o comando {\tt mount}.

 \item Use o comando {\tt df} para verificar que a montagem foi bem
 sucedida. {\bf Atenção:} a partir da montagem está estabelecida uma
 conexão lógica entre o dispositivo e o sistema, {\bf nunca retire
 fisicamente o floppy do drive} enquanto ele estiver montado, sob pena de
 quebrar indevidamente esta conexão e, possivelmente, perder dados. Além
 disso, a unidade floppy ficará num estado que impedirá que outros
 usuários a utilizem. Para poder retirar o floppy do drive deve-se
 primeiro desmontá-lo, como veremos adiante.

 \item Olhe de novo o diretório {\tt /floppy/vfat} com o comando {\tt ls
 -al}, determinando a quem ele pertence e os tipos de acesso permitidos.
 O que mudou? Olhe a linha correspondente à montagem do diretório {\tt
 /floppy/vfat} no arquivo de configuração {\tt /etc/fstab} do sistema e
 veja se você consegue identificar a função das opções que aparecem lá.

 \item Copie o seu arquivo {\tt teste.txt} no diretório {\tt /floppy/vfat}
 e em seguida vá para lá. Dê uma boa olhada no output do comando {\tt ls
 -al}. Copie o arquivo, criando um novo arquivo chamado {\tt teste.txt-2}.
 Faça uma outra cópia com o nome {\tt meu-novo-arquivo-de-teste.txt}.
 Verifique o sucesso da operação com o comando {\tt ls -l}. Há algo de
 estranho em relação a isto? Observe que o floppy está montado com formato
 VFAT, que é uma extensão do formato FAT usual do DOS. Dê o comando {\tt
 mount} sem argumentos para verificar as características das montagens
 correntemente existentes no sistema.

 \item Tente criar um hard link para o arquivo {\tt teste.txt} com o nome
 \newline {\tt teste2.txt}, usando o comando {\tt ln}. O que acontece?
 Tente criar um soft link com o mesmo nome, usando o comando {\tt ln
 -s}. O que acontece? Lembre-se de que este é um filesystem muito simples
 e incompleto.

 \item Use o comando {\tt df} para verificar qual o espaço total existente
 no floppy que está montado e registre esta informação em algum lugar.
 Compare o número obtido com a capacidade nominal do floppy, 1440~KB ou
 seja, aproximadamente 1.4~MB (lembre-se de que 1~KB são 1024 bytes e de
 que 1~MB são 1024$^{2}$ bytes).

 \item Certifique-se de que você não tenha colocado no floppy nada que
 queira manter, pois vamos reformatá-lo em nível alto, perdendo assim toda
 a informação nele contida. Desmonte o floppy usando o comando {\tt
 umount}, mas mantenha o floppy no drive. Ah, caso você não tenha ido para
 casa antes de fazer isto, o que aconteceu? Você imagina porquê? Bom, seja
 como for, vá para casa e desmonte o floppy, mas ainda mantenha-o no
 drive. Verifique novamente os conteúdos do diretório {\tt /floppy/vfat},
 após a desmontagem.

 \item Tendo desmontado o floppy, vamos agora reformatá-lo em nível alto,
 usando o formato de filesystem nativo do Linux, chamado {\tt ext2} ou
 ``second extended filesystem''. Se você quer saber o que aconteceu com
 primeiro, o antigo ``extended filesystem'', bem, ele morreu. Observe que
 todos os dados ora contidos no floppy serão perdidos. No Linux, assim
 como no Unix, podemos acessar diretamente dispositivos que estejam
 conectados ao sistema através de arquivos especiais que se encontram no
 diretório {\tt /dev}. Para fazer um filesystem tipo {\tt ext2} no floppy
 use o comando {\tt mke2fs /dev/floppy}.

 \item Dê uma boa olhada no diretório {\tt /floppy/ext2} do sistema. Use o
 comando {\tt ls -al} para determinar a quem ele pertence e quais os tipos
 de acesso permitidos.

 \item O sistema está configurado para permitir que você monte o floppy no
 diretório {\tt /floppy/ext2}, desde que ele esteja no em formato {\tt
 ext2} do Linux. Faça isto, usando o comando {\tt mount}.

 \item Use o comando {\tt df} para verificar que a montagem foi bem
 sucedida. {\bf Atenção: nunca retire fisicamente o floppy do drive}
 enquanto ele estiver montado, sob pena de perder dados e impedir que
 outros usuários utilizem o drive depois que você sair. Para poder retirar
 o floppy do drive deve-se primeiro desmontá-lo.

 \item Olhe de novo o diretório {\tt /floppy/ext2} com o comando {\tt ls
 -al}, determinando a quem ele pertence e os tipos de acesso permitidos.
 Há um diretório com um nome sugestivo lá, você tem idéia de sua possível
 utilidade? Olhe a linha correspondente à montagem do diretório \newline
 {\tt /floppy/ext2} no arquivo de configuração {\tt /etc/fstab} do sistema
 e veja se você consegue identificar a função das opções que aparecem lá.

 \item Copie o seu arquivo {\tt teste.txt} no diretório {\tt /floppy/ext2}
 e em seguida vá para lá. Dê uma boa olhada no output do comando {\tt ls
 -al}. Copie o arquivo, criando um novo arquivo chamado {\tt teste.txt-2}.
 Faça uma outra cópia com o nome {\tt meu-novo-arquivo-de-teste.txt}. Dê o
 comando {\tt mount} sem argumentos para verificar as características das
 montagens correntemente existentes no sistema.

 \item Crie um hard link para o arquivo {\tt teste.txt} com o nome {\tt
 teste2.txt}, usando o comando {\tt ln}. Crie um soft link com o nome {\tt
 teste3.txt}, usando o comando {\tt ln -s}. Examine cuidadosamente o
 output do comando {\tt ls -al}.

 \item Use o comando {\tt df} para verificar qual o espaço total existente
 no floppy que está montado e registre esta informação em algum lugar.
 Compare o número obtido com a capacidade nominal do floppy e com o valor
 obtido no caso do filesystem {\tt vfat}. O que estes números indicam?

 \item Vamos encher completamente o floppy de dados. Esta é uma boa forma
 de se saber se a mídia está realmente em perfeito estado. Para fazer
 isto, vamos usar o device {\tt /dev/zero}. Este não é realmente um
 dispositivo físico e sim uma conexão com um gerador de zeros binários
 ({\bf não} de caracteres zero) que existe dentro do kernel do Linux. Crie
 um arquivo cheio de zeros binários, chamado {\tt trash}, usando o comando
 {\tt cat /dev/zero > trash}. {\bf Atenção:} certifique-se de que você
 está no diretório {\tt /floppy/ext2} antes de fazer isto!

 \item Ooops, apareceu uma mensagem de erro, você imagina porquê? Não se
 importe com ela, use os comandos {\tt df} e {\tt ls -al} para determinar
 qual é a situação do floppy. Enquanto você está fazendo tudo isto, não se
 preocupe se a luz de atividade do floppy drive acender só quando ela quer
 e não quando você acha que ela deveria acender. O sistema sabe o que está
 fazendo e tem suas próprias idéias e opiniões sobre isto, portanto não se
 preocupe. Frequentemente ele faz uma cópia das coisas em memória e só as
 escreve de fato no disco depois de algum tempo. É assim mesmo.

 \item Desmonte o filesystem com o comando {\tt umount}. Ooops, caso você
 tenha esquecido novamente de ir para casa antes de fazer isto, vá para
 casa e desmonte o floppy, mas ainda mantenha-o no drive.

 \item Caso algo aconteça enquanto você está usando o floppy que possa
 perturbar o funcionamento dele e do sistema (digamos, acabar a luz, por
 exemplo), o filesystem nele contido não terá sido desmontado da forma
 apropriada. Neste caso existe uma utilidade do sistema que pode ajudar a
 checar e recuperar os dados contidos no disco. Trata-se do comando {\tt
 e2fsck}, ou ``second extended filesystem check''. Tendo desmontado o
 floppy corretamente, use este comando para checá-lo, da forma {\tt e2fsck
 /dev/floppy}. Mais uma vez estamos fazendo um acesso direto ao
 dispositivo, sem que ele esteja montado. O que acontece? Force a checagem
 usando o comando com a opção {\tt -f}, da forma {\tt e2fsck -f
 /dev/floppy}. Examine atentamente o resultado.

 \item Para refazer um filesystem tipo FAT do DOS no floppy, use agora o
 comando {\tt mkdosfs /dev/floppy}. Mais uma vez, lembre-se que com isto
 todos os dados contidos no floppy serão perdidos. Monte o floppy, desta
 vez diretamente no diretório {\tt /floppy}. Olhe a linha correspondente
 do arquivo {\tt /etc/fstab}. Como o floppy de 1.4~MB é pequeno e de
 utilidade limitada, em geral o utilizamos no formato DOS, que é um pouco
 mais econômico em termos de espaço. Por conveniência, configuramos uma
 montagem diretamente no diretório {\tt floppy}, usando este formato de
 filesystem. Repita algumas das operações anteriores para se certificar de
 que está tudo funcionando.

 \item Desmonte o floppy do diretório {\tt /floppy}. Existe também uma
 utilidade para verificar a consistência de floppies no formato DOS. Use-a
 em seu disquete executando o comando {\tt dosfsck /dev/floppy}. Se você
 quiser que ele seja um pouco mais explícito sobre o que está fazendo, use
 o comando da forma {\tt dosfsck -v /dev/floppy}. A chave {\tt -v} (de
 verbose) faz com que ele coloque um output mais detalhado na tela. Não se
 esqueça de retirar o floppy do drive ao sair de sua seção.

\end{enumerate}

\section{Problemas e Dicas}

\begin{enumerate}

 \item Você saberia como copiar para o floppy, com um comando de uma única
 linha, todos os arquivos de configuração que existem na raiz da sua
 conta? Tente fazer isto, usando o comando {\tt cp} e suas opções. Olhe a
 página de {\tt man} do comando {\tt cp}.

 \item Você saberia como usar um disco ZIP para realizar as mesmas
 operações que acaba de realizar com o floppy tradicional? Tente fazer
 isto, usando o dispositivo {\tt /dev/zip} que existe nos sistemas. Olhe
 este arquivo com o comando {\tt ls -l} para verificar que ele é um ``soft
 link'' apontando para o dispositivo que realmente corresponde ao ZIP.
 Faça a mesma verificação com o arquivo {\tt /dev/floppy}.

 \item O sistema é muito flexível e dá para fazer algumas coisas meio
 inesperadas. Coloque no drive um disquete em formato FAT do DOS, monte-o,
 coloque nele uma cópia do seu arquivo {\tt teste.txt} e desmonte-o. Tente
 copiar diretamente de {\tt /dev/floppy} para um arquivo {\tt floppy.cp}
 na raiz de sua conta, usando o comando cp. Com que tamanho ficou o
 arquivo? Olhe o conteúdo dele com o {\tt emacs}, o que se vê lá?

\end{enumerate}

\section{Uma Lista de Comandos Relevantes}

\begin{description}\setlength{\itemsep}{0ex}

 \item[\tt cat <arquivo>]: mostra o conteúdo do arquivo.

 \item[\tt cd <diretório>]: muda para o diretório; sem argumentos, vai
 para o diretório-home do usuário.

 \item[\tt cp <arquivo> <novo-arquivo>]: copia o arquivo, criando um novo
 arquivo.

 \item[\tt df]: mostra os filesystems disponíveis, ou seja, que estão
 montados no sistema.

 \item[\tt dosfsck /dev/<device>]: verifica e possivelmente corrige e
 recupera dados no filesystem {\tt vfat} contido no device.

 \item[\tt e2fsck /dev/<device>]: verifica e possivelmente corrige e
 recupera dados no filesystem {\tt ext2} contido no device.

 \item[\tt ln {[-s]} <arquivo> <novo-nome>]: sem opções, faz um novo
 ``hard link'' para o arquivo, ou seja, define um novo nome para ele na
 estrutura do filesystem; com a opção {\tt -s} faz um novo ``soft link''
 para o arquivo, ou seja, define um novo nome para ele, criando um novo
 arquivo que ``aponta'' para o antigo.

 \item[\tt ls {[-a] [-l]} {[<diretório ou arquivo>]}]: lista o arquivo ou
 os arquivos do diretório; sem argumentos, usa o diretório onde você está;
 com a opção {\tt -a} mostra todos os arquivos do diretório, incluindo os
 arquivos especiais e demais arquivos ``escondidos''; com a opção {\tt -l}
 mostra informações mais completas sobre o arquivo ou arquivos, incluindo
 o tipo de arquivo (em termos da estrutura do filesystem, não do tipo de
 conteúdo), controle de acesso, número de links, ownership, tamanho, data
 e nome do arquivo; as ações das chaves {\tt -a} e {\tt -l} podem ser
 combinadas; aqui está um exemplo:

\input{lista-verbatim01.tex}

 Na segunda linha demos uma descrição do significado de cada parte; as
 letras das primeira, segunda e quinta palavras desta linha significam
 tipo de arquivo ({\tt t}) user ({\tt u}), group ({\tt g}), other ({\tt
 o}), número de links ({\tt l}) e tamanho em bytes ({\tt s}).

 \item[\tt mkdosfs /dev/<device>]: cria um filesystem tipo {\tt vfat} no
 device.

 \item[\tt mke2fs /dev/<device>]: cria um filesystem tipo {\tt ext2} no
 device.

 \item[\tt mount <diretório>]: monta no diretório um filesystem contido
 num dispositivo físico; o par formado pelo dispositivo e pelo diretório
 tem de estar cadastrado no arquivo {\tt /etc/fstab}, onde devem também
 estar discriminadas opções apropriadas de montagem; sem argumentos dá uma
 lista das montagens que estão ativas e das correspondentes opções que
 estão em efeito para elas.

 \item[\tt umount <diretório>]: desmonta do diretório o filesystem que
 tenha sido montado nele anteriormente.

\end{description}

\section{Arquivos de Configuração}

 Os comandos {\tt cp} e {\tt ls} que você usou nesta aula têm o seu
 comportamento condicionado por configurações existentes nos arquivos de
 configuração do ambiente de trabalho que estão na raiz da conta do
 usuário. Olhe os arquivos {\tt .login} e {\tt .cshrc} na raiz da sua
 conta e os arquivos que são chamados a partir deles com o comando {\tt
 source}, os quais são chamados {\tt config.<alguma-coisa>}, localizados
 no diretório {\tt /usr/local/cetc/}. Procure neles referências a estes
 comandos e descubra o que fazem os comandos de configuração que aparecem
 lá. Provavelmente será útil dar uma olhada nas páginas de manual destes
 comandos e também da {\tt tcsh}.

\end{document}

###

