aula 4 - linux sob a fhs
TRANSCRIPT
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 1/29
Linux Básico
Linux sob a FHS
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 2/29
Sumário
Introdução.................................................................................................................................... 4
1. Diretórios ........................................................................................................................... 5
1.1. Diretório / .................................................................................................................. 8
1.2. Diretório /bin ............................................................................................................. 8
2.3. Diretório /sbin ................................................................................................................ 9
2.4. Diretório /etc ........................................................................................................... 10
2.5. Diretório /home ...................................................................................................... 11
2.6. Diretório /root ......................................................................................................... 12
2.7. Diretório /tmp ......................................................................................................... 12
2.8. Diretório /usr .......................................................................................................... 14
2.9. Diretório /opt .......................................................................................................... 15
2.10.Diretório /boot ............................................................................................................ 15
2.11. Diretório /media ........................................................................................................ 16
2.12. Diretório /mnt ............................................................................................................. 17
2.13. Diretório /dev ............................................................................................................. 17
2.14. Diretório /lib ............................................................................................................... 18
2.15. Diretório /var .............................................................................................................. 18
2.16. Diretório /proc ........................................................................................................... 19
2.17. Diretório /sys ............................................................................................................. 20
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 3/29
2.18. Diretório /srv .............................................................................................................. 20
3. Navegando no sistema ................................................................................................. 20
3.1. Caminhos absolutos .................................................................................................. 20
3.2. Caminhos relativos .................................................................................................... 24
3.3. Caracteres de localização ........................................................................................ 25
4. Considerações finais .................................................................................................... 28
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 4/29
Introdução
Todo sistema operacional é organizado internamente em grupos e
subgrupos de arquivos, de forma a separar dados de forma lógica e
conveniente para o administrador e para os usuários do mesmo sistema,
além de outros usuários remotos. Esta organização é fundamental para
que os arquivos e diretórios sejam alocados em locais de acesso lógico
para os usuários, de forma que eles não precisem simplesmente
procurar por todo o sistema para localizar os objetos.
A partir do momento em que as distribuições GNU/Linux
começaram a surgir, um dos problemas mais recorrentes se tornou a
falta de padronização da organização dos sistemas de arquivo. Mais
precisamente, existiam diferenças absurdas entre a localização e a
nomeação dos arquivos vitais do sistema operacional entre as
distribuições.
Isso dificultava muito a migração de usuários entre as
distribuições, pois os que se habituavam à uma se viam completamente
perdidos dentro de outra distribuição. Porém, o problema maior era atrair
novos usuários para o mundo GNU/Linux, justamente pela desarmonia
entre os vários representantes deste sistema aos leigos.
Foi pensando nisso que, em 1996, uma entidade chamada Free
Standards Group, ou FSG, lançou no mercado o documento Filesystem
Hierarchy Standard. Este documento, que hoje se encontra em sua
versão 2.3, visa estabelecer o padrão da estruturação interna dos
sistemas operacionais Unix-like, em especial o Linux.
Desta forma, desenvolvedores de softwares, programadores,
administradores e usuários possuem uma referência para onde procurar
determinados tipos de arquivo dentro do sistema.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 5/29
O documento completo está disponível no site:
http://www.pathname.com/fhs/
Nesta aula, iremos abordar as informações relativas à
padronização do uso de diretórios, e quais os arquivos que devemos
esperar que estejam dentro deles.
É importante lembrar que a FHS é uma sugestão de
padronização, e não um documento oficial obrigatório do projeto
GNU/Linux que deve ser seguido a todo custo. A maioria das
distribuições Linux não adotam a FHS em sua totalidade, muito embora
a maioria dos diretórios já tenham sido estabelecidos como um padrão
para o Linux.
1. Diretórios
Um diretório nada mais é do que um local no nosso sistema onde
são relacionados vários arquivos. É o objeto virtual equivalente às
pastas do Windows.
No Linux, o diretório-pai de todos os outros é o diretório /.
Abaixo do diretório / são localizados todos os outros diretórios e
arquivos do sistema, e não existe nada acima deste diretório. Podemos
considerar este diretório um equivalente ao “Meu Computador” do
Windows.
Antes de começarmos a estudar sobre os diretórios principais do
GNU/Linux, deveremos aprender a navegar entre os diretórios.
Fazendo o login no tty1 com o usuário root, este usuário será
autenticado e passará a controlar o seu shell.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 6/29
Toda vez que um usuário faz login no sistema, ele ‘cai’ em um
diretório padrão relacionado a ele, como se fosse um ponto de partida
virtual. Este diretório é chamado de diretório home, ou apenas home.
Normalmente, um diretório home é o diretório pessoal do usuário, onde
ele guardará seus arquivos e centralizará suas atividades.
Como fazemos para descobrir em qual diretório nós estamos?
Muito simples, é só executar o comando pwd:
# pwd
Ou, caso você esteja utilizando o usuário tux:
$ pwd
� pwd signficia ‘print work directory’, ou seja, ‘exibir diretório
corrente’.
O comando pwd irá exibir em qual diretório nosso usuário estará
trabalhando no momento. Quando estamos em um diretório, ficaremos
estacionados nele até executarmos um comando para mudarmos de
diretório corrente.
A saída do comando pwd para o usuário root será:
/root
E a saída para o usuário tux será:
/home/tux
Ou seja, o root, ao se logar, cai diretamente dentro do diretório
/root, o seu diretório home.
Já o tux, ao se logar, cai diretamente no diretório /home/tux, que é
o seu diretório home.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 7/29
Para mudar de diretório, utilizamos o comando cd. Vamos tentar
mudar para o diretório /:
# cd /
Logo após, utilize o comando pwd para verificar em qual diretório
nos encontramos:
# pwd
Ele vai retornar o valor:
/
Pronto, agora nos encontramos no diretório /.
Porém, apenas estar no diretório não adianta muita coisa.
Precisamos também saber o que está dentro dele.
Para listar o conteúdo de um diretório, utilizamos o comando ls:
# ls
O comando ls irá retornar todo o conteúdo do diretório /. Todos os
objetos retornados aqui são diretórios, e cada um desempenhará uma
função diferente dentro do sistema, no que diz respeito aos arquivos que
eles irão armazenar.
� O ls é a principal forma de se visualizar o conteúdo de um
diretório no Linux.
Vamos estudar os principais diretórios do nosso sistema, de
acordo com sua função.
Não se preocupe em decorar todos estes conceitos de uma única
vez.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 8/29
1.1. Diretório /
O diretório /, também chamado de diretório raiz, é a raiz do
sistema. Abaixo dele se encontra todo o resto do sistema.
Exemplo de diretórios que estão dentro do /:
/bin;
/sbin;
/usr;
- Note a nomeação dos diretórios. Na verdade, o nome deles é
bin, sbin e usr, respectivamente. Porém, a / antes do nome indica que
eles estão logo abaixo do diretório /, como se fosse um mapa exato da
localização dele dentro da hierarquia do sistema, como por exemplo, o
próprio /etc. Depois, quaisquer diretórios que existirem dentro do /etc
vão ser indicados com uma nova /, para indicar que estão dentro do
diretório em questão. Então, quando nos referimos ao diretório /etc/apt,
por exemplo, estamos dizendo que o caminho até aquele diretório é / >
etc > apt, ou seja, o diretório apt está dentro do diretório etc, que está
dentro do diretório /..
1.2. Diretório /bin
O diretório /bin é o diretório que conterá todos os binários (o
equivalente aos executáveis do Windows) dos comandos de alcance
geral do sistema. Ou seja, ele é o diretório onde se encontram todos os
comandos que qualquer usuário, root ou comum poderão utilizar.
Vamos ver o conteúdo do diretório /bin:
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 9/29
# ls /bin
� Podemos indicar um diretório logo depois do comando ls,
para que ele liste o conteúdo daquele diretório sem que
nós estejamos dentro dele.
Todos os objetos retornados pelo comando são comandos. Entre
eles, podemos citar:
� ls = comando que utilizamos para listar o conteúdo de um
diretório;
� cat = comando utilizado para visualizar o conteúdo de um
ou mais arquivos;
� cp = comando utilizado para copiar um arquivo;
Como você pode perceber a partir do exemplo acima, todos os
comandos do diretório /bin são comandos básicos, porém, essenciais
para o funcionamento do sistema.
- Todos os usuários podem utilizar os comandos do diretório /bin.
2.3. Diretório /sbin
O diretório /sbin centralizará os executáveis de todos os
comandos administrativos essenciais ao nosso sistema.
# ls /sbin
Todos os objetos retornados serão comandos administrativos.
Podemos citar alguns exemplos:
� halt = comando de desligamento do sistema;
� reboot = comando de reinicialização do sistema;
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 10/29
� ifconfig = comando para configuração das placas de rede
da máquina;
� mkfs = comando para formatar uma partição (adicionar um
sistema de arquivos a ela);
É importante lembrar que apenas o root poderá executar os
comandos que se encontrarem dentro do diretório /sbin. Os demais usuários
não terão nem acesso a ele.
Caso queira testar, no tty2 como tux, tente utilizar:
$ cd /sbin
O acesso daquele usuário ao diretório será negado. Um usuário
comum não pode nem entrar no diretório /sbin!
2.4. Diretório /etc
Um dos diretórios mais importantes do sistema, o /etc vai conter
os arquivos de configuração de todos os aplicativos, funções e serviços
do sistema.
� etc = Editable Text Configuration = Configuração por texto
editável
Todos os arquivos presentes dentro do /etc são arquivos de
configuração editáveis por um editor de texto qualquer. Desta forma, a
customização do sistema como um todo fica muito mais fácil!
# ls /etc
Exemplo de arquivos de configuração dentro do /etc:
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 11/29
� inittab = arquivo de configuração de inicialização do
sistema;
� sources.list = arquivo de configuração de repositório
utilizado pelo apt;
� passwd = registro da conta de todos os usuários do
sistema;
� shadow = registro criptografado da senha dos usuários;
Entre vários outros arquivos que iremos estudar ao longo do
curso.
2.5. Diretório /home
O diretório /home centraliza o diretório home de todos os outros
usuários simples do sistema.
Verifique sua estrutura interna:
# ls /home
O resultado do comando será:
/home/tux
Mas este não é o diretório home do tux? Para recordar, dê um
pwd após o login como tux, e você verá que o diretório home do tux é
mesmo o /home/tux.
Dentro do diretório /home existirão outros diretórios, cada um
nomeado de acordo com um usuário comum dentro do sistema.
Ou seja, por padrão, o diretório /home centralizará as homes de
todos os outros usuários que não sejam o root.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 12/29
- Dizemos ‘por padrão’ porque ainda existe a possiblidade de se
modificar o local do diretório home dos usuários, porém não iremos
entrar neste detalhe por enquanto.
2.6. Diretório /root
Se o diretório /home centraliza as homes dos usuários comuns, o
diretório /root seguirá o mesmo conceito, porém para o usuário root.
É neste diretório que o root irá se logar por padrão, e,
teoricamente, guardará seus arquivos pessoais.
# ls /root
Não temos nenhum arquivo lá ainda, então o comando não
retornará nenhum resultado por enquanto.
2.7. Diretório /tmp
O diretório /tmp é um diretório muito especial: é o diretório de
arquivos temporários.
Ele é destinado à centralização de arquivos temporários gerados
por serviços ou processos, que normalmente precisam que
determinados dados sejam armazenados em arquivos que serão criados
apenas temporariamente. Estes arquivos normalmente ficam
armazenados aqui até que os processos relacionados a eles sejam
finalizados.
# ls /tmp
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 13/29
Não existe nenhum arquivo lá dentro. Vamos fazer um pequeno
teste. Vamos ver como se comporta um arquivo dentro do diretório, e
para isso, utilizaremos o comando touch:
# cd /tmp
# pwd
# touch arq.txt
# ls
Agora estamos dentro do diretório /tmp e criamos um arquivo com
o comando touch lá dentro, chamado arq.txt.
- O comando touch é utilizado para criar arquivos vazios em um
determinado diretório, além de também modificar a timestamp de um
arquivo. Timestamp é simplesmente a data e a hora de modificação de
um arquivo.
O grande diferencial do diretório /tmp é: todos os arquivos
presentes dentro dele são apagados quando a máquina desliga ou
reinicia!
Vamos fazer o teste:
# reboot
Depois que a máquina reinicializar e o root estiver logado
novamente no tty1:
# ls /tmp
Não existe mais nenhum arquivo lá dentro!
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 14/29
É importante então ressaltar: nunca armazene nenhum arquivo
importante neste diretório, pois você pode acabar desligando a máquina
e perdendo o arquivo para sempre, caso não se lembre de tirá-lo de lá.
2.8. Diretório /usr
O diretório /usr é um diretório bem peculiar. Ele irá centralizar
todos os dados de programas não-essenciais (ou, melhor dizendo,
auxiliares) para a configuração de seu sistema, o que inclui seus
executáveis, suas bibliotecas, seus arquivos variáveis e vários outros
tipos de arquivos.
Vamos ver o seu conteúdo:
# ls /usr
Veja que, dentro do diretório /usr, existem diretórios muito
parecidos com os diretórios que existem diretamente abaixo do diretório
raiz do Linux. Isso acontece porque os dados dos aplicativos não-
essenciais também devem ser organizados de forma lógica para que o
administrador possa localizá-los.
Mas o que são os aplicativos não-essenciais? São justamente os
pacotes de programas que são baixados diretamente de um repositório
oficial da distribuição, mas que não é necessário para que o sistema
básico seja administrado. Se determinado aplicativo for de alcance geral,
seu binário (executável) é disposto dentro de /usr/bin, e se ele for um
aplicativo de alcance administrativo, ele será alocado para /usr/sbin, e as
bibliotecas destes executáveis se relacionarão em /usr/lib, por exemplo.
Ilustrando de uma forma melhor, um navegador de internet em
modo texto não é necessário para que um sistema GNU/Linux seja
configurado e rode algum serviço, então os dados referentes àquele
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 15/29
navegador serão jogados dentro do /usr. Da mesma forma que um
protetor de tela em modo texto, por exemplo.
2.9. Diretório /opt
O diretório /usr irá armazenar os dados de programas não-
essenciais, ou auxiliares, que forem adquiridos a partir de um repositório
oficial daquela distribuição.
Porém, sempre existe a possiblidade de se instalar no Linux
algum software proprietário, mesmo que isso venha a ferir a filosofia do
software livre.
Para centralizar os dados referentes a esses softwares será
utilizado o diretório /opt.
Por padrão, não teremos nenhum aplicativo proprietário lá dentro:
# ls /opt
Esse diretório pode passar por toda a vida profissional de um
administrador sem ser populado, pois quase sempre existirão opções
open-source para substituir programas proprietários.
2.10.Diretório /boot
O diretório /boot irá conter os dados referentes ao gerenciador de
inicialização instalado naquela máquina no momento. No nosso caso,
instalamos o gerenciador GRUB durante a instalação básica da máquina, então
os arquivos que, inicialmente, estiverem lá dentro serão relacionados a ele.
Verifique:
# ls /boot
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 16/29
Teremos uma aula específica para tratar do gerenciador de
inicialização.
- Um gerenciador de inicialização nada mais é do que um
aplicativo de baixo nível que irá selecionar o sistema operacional que será
inicializado naquela máquina. No nosso caso, utilizamos o GRUB. É aquela
primeira tela que aparece quando inicializamos a nossa máquina virtual, e nos
oferece a opção de inicialização normal ou em ‘recovery mode’.
2.11. Diretório /media
O diretório /media centralizará o ponto de montagem de
dispositivos mídias removíveis, como pendrives, cds, dvds, hds externos e
afins.
Os pontos de montagem serão correlacionados, na maioria das
vezes, com o nome do dispositivo que estará sendo montado.
Por exemplo, o ponto de montagem recomendado pela FHS para
um CD-ROM é o /media/cdrom.
Pode ser que o seu sistema já tenha sido instalado com um
diretório relacionado ao ponto de montagem do CD-ROM lá dentro do
/media, porém não é regra a existência de um diretório pré-criado lá dentro.
# ls /media
- Ponto de montagem é o local a partir de onde o conteúdo de um
dispositivo poderá ser acessado. Por exemplo, se o pondo de montagem do
CD-ROM for /media/cdrom, poderemos acessar o conteúdo do CD
simplesmente entrando dentro deste diretório.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 17/29
2.12. Diretório /mnt
O diretório /mnt é utilizado como ponto de montagem de
dispositivos cujos dados serão partilhados entre duas ou mais máquinas em
rede.
2.13. Diretório /dev
O diretório /dev é o responsável por armazenar os arquivos
representativos de cada um dos dispositivos presentes em sua máquina.
O Linux trabalha com dispositivos de uma forma diferente: durante
o boot da máquina, são criados arquivos referentes a cada um dos
dispositivos plugados à sua máquina, desde mouses e teclados até HDs e
drivers de CD-ROM e DVD-ROM. Estes arquivos são utilizados diretamente
pelo kernel, que irá extrair as informações geradas nestes arquivos para
interagir com os dispositivos.
# ls /dev
Exemplos de arquivos presentes dentro do /dev:
- sda = arquivo referente a um disco rígido;
- psaux = arquivo referente a um mouse que utiliza conexão PS/2;
- cdrom = arquivo referente ao drive de CD-ROM;
Iremos aprender a gerenciar estes dispositivos em uma aula
específica, onde estudaremos mais a fundo o /dev, seu sistema de
arquivos, e como formatar e montar dispositivos e discos rígidos.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 18/29
2.14. Diretório /lib
O diretório /lib centralizará as bibliotecas utilizadas pelos binários
dos comandos existentes dentro do /bin e /sbin, assim como os módulos
utilizados pelo nosso kernel.
Uma biblioteca nada mais é que um pedaço de código externo
utilizado por um ou mais executáveis, para que um determinado comando
ou aplicativo consiga executar uma tarefa específica.
Sem as bibliotecas, nenhum comando consegue ser executado
em nosso sistema, e sem comandos, não há forma de se realizar
absolutamente nenhuma função a nível de shell.
Então, o diretório /lib é um diretório muito importante para o
funcionamento de nosso sistema.
Verifique seu conteúdo:
# ls /lib
Também iremos abordar o conceito de bibliotecas e módulos em
uma aula específica.
2.15. Diretório /var
O diretório /var irá armazenar todos os arquivos variáveis do
nosso sistema.
Arquivos variáveis são arquivos cujo conteúdo, por definição,
sofrerá mudanças frequentes.
O melhor exemplo de arquivos variáveis são os logs do sistema,
localizados no diretório /var/log.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 19/29
- Log é um registro gerado pelo sistema afim de armazenar uma
informação específica sobre o funcionamento de algum programa,
auxiliando muito o processo de administração e monitoria de um servidor.
# ls /var
# ls /var/log
Outro exemplo de arquivos variáveis são páginas html e mails
(mensagens) internas.
2.16. Diretório /proc
O diretório /proc é um diretório utilizado diretamente pelo kernel,
que centralizará os dados referentes a todos os processos que estão em
execução no momento.
Liste seu conteúdo:
# ls /proc
Perceba que lá dentro existem vários diretórios que são
nomeados com números aparentemente aleatórios. Cada um destes
diretórios são relacionados a um processo específico, e dentro deles
existem os arquivos que estão sendo utilizados por eles no momento.
O diretório /proc também irá centralizar outras informações
referentes à execução de determinadas tarefas pelo kernel.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 20/29
2.17. Diretório /sys
O diretório /sys é o primo rico do /proc. Ele conterá os mesmos
dados presentes dentro do diretório /proc, porém, de forma mais organizada
para nós administradores.
Se quiser, liste o seu conteúdo e verifique que os processos são
divididos lá dentro em seções:
# ls /sys
Ainda assim, é mais comum gerenciar os dados dos processos
pelo /proc, por questões de comodidade.
2.18. Diretório /srv
O diretório /srv é destinado à centralização de dados dos serviços
que serão configurados e utilizados por aquela máquina.
Por exemplo, de acordo com a definição dada pela FHS, um
servidor Apache deveria ser configurado dentro do diretório /srv/www,
enquanto um servidor FTP deveria ser configurado em /srv/ftp.
Porém, o diretório /srv é o mais contradito entre as distribuições
Linux. Vários serviços presentes nestas distribuições acabam sendo
instalados em diretórios diferentes, como o próprio Apache no Debian, que
é instalado e gerenciado a partir do diretório /var/www.
3. Navegando no sistema
3.1. Caminhos absolutos
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 21/29
Agora que nós já estudamos sobre a utilização de cada um dos
diretórios principais do sistema, vamos aprender a navegar entre eles
corretamente.
O comando que utilizamos para navegar entre diretórios é o
comando cd.
Sua sintaxe é:
$ cd [diretório de destino]
Como, por exemplo:
$ cd /bin
Vamos fazer testes com este comando. Para isso, vamos utilizar o
root, no tty1.
Primeiro, vamos padronizar o nosso diretório inicial:
# cd
O comando cd desacompanhado de um diretório faz a mudança
de diretório para o diretório home do usuário em questão. Verifique:
# pwd
/root
Pronto. Agora estamos no diretório home do usuário root.
Navegue um pouco entre os diretórios do sistema:
# cd /var/log
# pwd
# ls
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 22/29
# cd /etc/apt
# pwd
# ls
# cd /home/tux
# pwd
# ls
Note que, ao trocar de diretório, estamos sempre verificando, com
o comando pwd, onde realmente estamos. Além disso, ainda listamos,
com o comando ls, o conteúdo dos diretórios.
Além de tudo, perceba que, até aqui, sempre indicamos o
caminho exato até o diretório que queremos acessar, sempre partindo
do diretório /.
Por exemplo, se queremos acessar o diretório /proc/sys/kernel,
utilizamos o comando:
# cd /proc/sys/kernel
O path daquele diretório pode ser lido assim:
/ > proc > sys > kernel
Onde o diretório que estiver à direita da seta é um subdiretório
presente dentro do diretório da esquerda. Nesta esquematização, o
diretório kernel é o subdiretório mais baixo, pois está mais ‘escondido’,
ou mais ‘fundo’ dentro da árvore de diretórios do Linux.
O caminho de um diretório, ou de um arquivo, dentro do sistema,
também é chamado de path.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 23/29
Árvore de diretórios é o nome coloquial dado para a estruturação
de diretórios do Linux, cujo formato realmente lembra o de uma árvore.
Imagine o diretório raiz (/) sendo o caule, e cada um dos diretórios
principais (bin, boot, etc...) como sendo os galhos. A partir dos galhos,
existirão outras ramificações, que serão os subdiretórios presentes
dentro dos principais, e assim por diante.
Uma outra forma de se ler o path do diretório kernel seria:
/proc/sys/kernel = diretório kernel, que está dentro do diretório
sys, que está dentro do diretório proc, que está dentro do diretório /.
O caminho exato a partir do diretório raiz até o diretório ou o
arquivo que queremos acessar é chamado de ‘caminho absoluto’. É a
forma mais segura de se localizar um objeto na árvore de diretórios, pois
serve como um mapa indicando a localização exata daquele objeto
dentro da árvore de diretórios.
O caminho absoluto se caracteriza pela / que antecede todo o
path do objeto.
Exemplo de caminhos absolutos:
/etc/apt/sources.list = caminho absoluto até o arquivo sources.list;
/var/log/auth.log = caminho absoluto até o arquivo de log auth.log;
/home/tux = caminho absoluto até o diretório home do usuário tux;
/root = caminho absoluto até o diretório home do usuário root;
/ = caminho absoluto até o diretório raiz.
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 24/29
3.2. Caminhos relativos
Existe uma outra forma de se localizar um objeto dentro do
sistema. Desta vez, podemos nos basear na localização atual de um
usuário para indicar o caminho até o diretório ou arquivo.
Vamos ver um exemplo:
Primeiramente, vamos entrar no diretório /etc:
# cd /etc
Agora, digamos que seja necessário acessar o diretório /etc/apt.
Como já estamos no diretório /etc, podemos simplesmente omitir
boa parte do caminho absoluto que utilizamos até agora, e simplesmente
indicar o diretório que queremos acessar.
# cd apt
# pwd
Perceba que agora entramos no diretório /etc/apt sem fornecer o
path a partir do diretório /.
A localização de um diretório ou arquivo, levando em
consideração a atual localização do usuário no sistema, é chamada de
‘caminho relativo’.
Vamos a outro exemplo.
Vamos tentar agora acessar o diretório /proc/sys/kernel, partindo
do diretório /:
# cd /
Como já estamos no diretório /, não precisamos indica-lo no path.
O caminho, então, seria:
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 25/29
# cd proc/sys/kernel
Isso mesmo, sem a / na frente do proc, pois já estamos no
diretório /.
Faça um outro teste:
# cd /proc
Para acessar o diretório kernel a partir do /proc:
# cd sys/kernel
# pwd
Pronto, acessamos o diretório /proc/sys/kernel sem utilizar o path
absoluto do mesmo.
3.3. Caracteres de localização
Ainda há a possibilidade de se utilizar determinados caracteres no
lugar dos paths, para que determinados diretórios sejam acessados.
Os caracteres de localização serão os caracteres representativos
de locais específicos, que na maioria das vezes serão caminhos relativos
também.
Antes de mais nada, você já deve ter percebido que, toda vez que
mudamos de diretório, o shell indica a nova localização.
Por exemplo, dentro do diretório /proc/sys/kernel, como root, o
shell assumirá a seguinte forma:
root@maquina:/proc/sys/kernel#
Ou, no diretório /etc:
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 26/29
root@maquina:/etc#
Isso acontece porque o shell padrão do GNU/Linux, o bash,
oferece estes indicativos visuais para que o usuário do shell se localize melhor
no sistema, sem que seja necessário o uso constante do pwd.
- É importante lembrar que apenas o shell bash oferece este
suporte. Outros shells, como o sh ou o ksh, não oferecem nenhuma informação
além do caractere indicativo de usuário (# ou $).
Agora, vamos entrar no diretório /:
# cd /
Para acessar o diretório home do usuário, podemos utilizar o cd
sem nenhum caminho, apenas indicando um caractere especial:
# cd ~
No Linux, o caractere ~ significa diretório home.
# pwd
Perceba que agora estamos no diretório home do usuário root.
Este caractere também é utilizado na linha de localização
fornecida pelo shell:
root@maquina:~#
Note que o ~ agora está onde antes existia o path da localização
do usuário. Isso significa que estamos na home do usuário root, /root.
Agora:
# cd /etc/apt
Vamos testar outra funcionalidade do cd:
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 27/29
# cd ..
O caractere ‘..’ significa ‘um nível acima na árvore de diretórios’.
# pwd
Agora estamos no diretório /etc. Quando utilizamos o ‘cd ..’, o
usuário sai do diretório atual onde se encontra, e cai no diretório imediatamente
anterior a ele, ou, melhor dizendo, acima dele. Em outras palavras, saímos do
/etc/apt e ficamos dentro apenas do /etc. Subimos um nível na árvore de
diretórios.
Vamos voltar para o diretório anterior:
# cd –
O hífen (-) significa ‘diretório anteriormente visitado’. Ou seja,
podemos voltar para o diretório que estávamos antes de entrarmos neste,
fosse qual fosse.
No caso, estamos novamente no /etc/apt.
Teste de outra forma:
# cd /boot
# pwd
# cd –
# pwd
Entramos dentro do /boot, e depois voltamos para o /etc/apt, onde
estávamos originalmente, com o - .
Agora, vamos testar subir mais de um nível:
# cd ../../
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 28/29
# pwd
O diretório atual será o diretório /. Podemos utilizar o .. várias
vezes neste formato para subir mais de um nível na árvore de diretórios de
uma única vez.
Teste de outra forma:
# cd /proc/sys/kernel
# pwd
# cd ../../../
# pwd
Desta forma, subimos três níveis, e caímos de volta no diretório /.
E, para finalizar, um caractere muito importante:
# cd .
# pwd
Não mudamos de diretório?
Isso mesmo, o ‘.’ Significa diretório atual. Ou seja, com o cd, o .
não irá ter um resultado muito interessante, pois ele não vai trocar de diretório.
O . é utilizado para vários outros comandos, inclusive para shell
script, para indicar em determinadas sintaxes que o diretório destino de
determinada ação será o diretório onde o usuário se encontrar no momento
que ele executar a ação.
4. Considerações finais
TSO 01 – Linux Básico
Capítulo 4: Linux sob a FHS – Entendendo a estrutura dos sistemas de arquivos
_______________________________________________________________
http://www.treinatux.com.br 29/29
Para se aprofundar nas funções de cada diretório do Linux,
acesse o documento oficial da FHS:
http://www.pathname.com/fhs/