Os diretórios, como você deve saber, contém arquivos ou outros diretórios. Todo sistema operacional contém o que é chamado árvore de diretórios, que é uma estrutura básica de diretórios principais e seus subdiretórios.
No
GNU/Linux a árvore de diretórios é particularmente muito bem organizada, e os arquivos são divididos em categorias. Assim, arquivos executáveis (programas) são agrupados num determinado diretório, enquanto bibliotecas são arquivados em outro, e arquivos temporários em outro, e assim por diante. Isso garante uma boa organização do sistema e traz também uma grande praticidade, como vocês poderão ver mais adiante.
Filesystem Hierarquy Standard
Os sistemas GNU/Linux possuem um padrão rígido e específico a respeito da organização hierárquica dos diretórios, definido pela
Filesystem Hierarquy Standard, ou simplesmente FHS, constante da LSB.
O diretório principal que contém todos os demais diretórios é chamado diretório raíz e se encontra no topo da estrutura, sendo representado pelo sinal / (barra). Todos os demais diretórios devem ser referenciados a partir dele, assim como em /diretório.
Dentro da estrutura do sistema de arquivos, cada um dos diretórios possui uma função específica, como vemos na lista abaixo.
- /bin/: aqui encontram-se os programas que são usados freqüentemente pelos usuários;
- /boot/: arquivos estáticos utilizados durante a inicialização do sistema;
- /dev/: encontramos aqui os dispositivos de hardware. Existem vários arquivos, um para cada dispositivo;
- /etc/: nesse diretório ficam os arquivos de configuração do sistema e dos programas instalados;
- /home/: os usuários cadastrados no sistema possuem um diretório com seu nome dentro de /home. Em geral é a única área acessível aos usuários para gravarem seus arquivos;
- /lib/: as bibliotecas essenciais e os módulos do kernel Linux ficam aqui. Bibliotecas são conjuntos de funções e recursos utilizados por programas;
- /media/: aqui devem ser inseridos os pontos de montagem para as mídias removíveis, como CD's e disquetes;
- /mnt/: diretório utilizado para conexão com volumes presentes em outros computadores da rede ou para acessar dispositivos removíveis. Em outras palavras, aqui ficam os pontos de montagem temporários;
- /opt/: softwares adicionais instalados de maneira não padrão devem ficar aqui;
- /root/: diretório pessoal do usuário root, o administrador do sistema;
- /sbin/: local dos programas essenciais para o funcionamento e manutenção do sistema. Somente o administrador (root) tem permissão de executar esses programas;
- /srv/: dados dos serviços fornecidos pelo sistema;
- /tmp/: aqui se encontram os arquivos temporários gerados pelo sistema;
- /usr/: os arquivos acessados pelos usuários se encontram contidos neste diretório, principalmente programas e os arquivos utilizados por esses programas;
- /var/: aqui se encontram informações variáveis do sistema, como spool de impressora, caixas postais, logs do sistema, cache de programas, etc.
Abaixo, você a lista com alguns dos principais subdiretórios do sistema de arquivos do GNU/Linux, constante da FHS:
- /etc/X11/: arquivos de configuração do servidor X;
- /etc/skel/: arquivos gravados no diretório pessoal do novo usuário;
- /etc/network/: arquivos de configuração da rede;
- /lib/modules/: diretório dos módulos do kernel Linux. Dentro do diretório modules existirá um subdiretório para cada versão de kernel disponível no sistema. O nome desse subdiretório será a versão do kernel correspondente;
- /media/floppy/: ponto de montagem da unidade de disquete principal;
- /media/cdrom/: ponto de montagem da unidade de CD-ROM principal;
- /usr/bin/: programas utilizados pelos usuários;
- /usr/lib/: bibliotecas utilizadas pelos programas em /usr/bin;
- /usr/share/: arquivos compartilhados, utilizados pelos programas em /usr/bin;
- /usr/include/: arquivos utilizados para compilar novos programas pelo código-fonte;
- /usr/sbin/: programas utilizados pelo administrador do sistema;
- /usr/src/: códigos-fonte de programas devem ficar aqui, incluindo do kernel Linux;
- /usr/X11R6/: programas, bibliotecas e demais arquivos do servidor X;
- /var/cache/: aqui ficam armazenados os arquivos de cache utilizados por diversos programa. Dentro do diretório cache/ são criados diretórios com o nome dos processos criadores;
- /var/lock/: usado para bloquear a execução de programas. Se dentro desse diretório houver um arquivo com o nome de um determinado processo, ele não poderá ser executado;
- /var/log/: arquivos de log gerados pelos sistema e outros programas;
- /var/mail/: mensagens enviadas ao usuário root e emails ficam armazenados aqui (requer configuração);
- /var/run/: dados dos programas em execução;
- /var/spool/: diretório de spool dos processos.
Caminhos
Como em todo sistema de arquivos de qualquer sistema operacional, a referência a um arquivo/diretório deve ser feita através do seu caminho. Um caminho é formado da seguinte forma:
[diretório raiz] [diretório 1] [diretório 2] ... [diretório n] [arquivo]
Cada um desses itens são separados por um símbolo, que varia de acordo com o sistema operacional.
No GNU/Linux, o diretório raiz chama-se / (barra), e o símbolo utilizado para separar os itens é a / também. Um exemplo de caminho seria:
/home/davidson/doc/cursos/linux/gnu.sxw
Um caminho informa onde podemos encontrar um arquivo ou diretório. No caso acima, podemos interpretar esse comando da seguinte forma: o arquivo gnu.sxw está dentro do diretório linux/, que está dentro do diretório cursos/, que está dentro do diretório doc, que está dentro do diretório davidson/, que está dentro do diretório home/, que está no diretório raiz.
Outra forma de interpretação seria: para acessar o arquivo gnu.sxw, a partir do diretório raiz, acesse o diretório home/, depois o diretório davidson/, depois o diretório doc/, depois o diretório cursos/ e depois no diretório linux/, e o arquivo estará lá.
Notações de diretórios do sistema
Alguns diretórios possuem notações especiais, algo que poderíamos chamar de "atalho" para o acesso. Veja abaixo a lista dessas notações:
- ~: ao referir-se ao diretório ~ (til), o sistema entende como o diretório pessoal do usuário, ou seja, /home/[usuário], onde [usuário] é o nome de login do usuário atual. Dessa forma, se você estiver logado como davidson, o diretório ~/img será interpretado como /home/davidson/img;
- -: o kernel Linux armazena um histórico dos diretórios que acessamos. O - (hífen) refere-se ao último diretório acessado.
- .: o símbolo . (ponto) refere-se ao diretório atual, ou seja, aquele em que estamos trabalhando;
- ..: o .. (ponto ponto) refere-se ao diretório acima do qual estamos. Por exemplo, considerando o diretório /home/davidson/, o diretório acima de davidson/ é /home/, e o diretório acima de /home/ é /.