Tutorial de Linux / Sistema de arquivos: caminhos absolutos, relativos e diretórios
O sistema de arquivos do Linux forma uma árvore de diretórios que começa em /. Um caminho indica uma localização nessa árvore: o caminho absoluto começa em /, enquanto o relativo parte do diretório de trabalho atual. Entender essa diferença ajuda a prever qual arquivo será consultado, movido ou removido por um comando.
Esta aula explica como ler caminhos e reconhecer a função dos diretórios mais comuns. Para praticar a mudança de localização, consulte também a aula em inglês sobre navegação com pwd, cd e ls.
Uma árvore de diretórios conectada
Em vez de organizar os caminhos por letras de unidade, como é comum no Windows, o Linux apresenta arquivos e diretórios abaixo do diretório raiz, representado por /. Outro disco ou sistema de arquivos normalmente é conectado a um diretório dessa árvore. Essa conexão se chama montagem; o diretório usado é o ponto de montagem. A aparência do caminho, por si só, não informa em qual disco físico o arquivo está armazenado.
/ e /root são locais diferentes. O primeiro é o início da árvore inteira; o segundo costuma ser o diretório pessoal da conta administrativa root. Os diretórios pessoais de usuários comuns frequentemente ficam em /home/nome-do-usuario, mas a configuração da conta pode definir outro local.
Caminho absoluto e caminho relativo
Um caminho absoluto começa com /. Por exemplo, /etc/hosts aponta para a mesma localização na árvore do sistema, independentemente do diretório em que você está. Um caminho relativo é interpretado a partir do diretório de trabalho atual. Se ele for /home/learner, notes/todo.txt indica /home/learner/notes/todo.txt.
| Notação | Significado | Exemplo |
|---|---|---|
/ |
Início da árvore do sistema de arquivos | /etc/hosts |
. |
Diretório atual | ./script.sh |
.. |
Diretório pai | ../notes |
~ |
O Bash expande para o valor de HOME, normalmente o diretório pessoal | ~/notes |
. e .. representam o próprio diretório e seu pai na resolução de caminhos. Já ~ é uma notação do shell, expandida antes de o comando ser executado. No Bash, escrever '~/notes' entre aspas simples impede essa expansão: o comando recebe o texto literal ~/notes, e não o caminho do diretório pessoal. O valor de HOME pode ser configurado; não presuma que ele sempre seja /home/nome-do-usuario.
Os componentes do caminho são separados por /. Em sistemas de arquivos Linux usuais, Notes e notes podem ser nomes diferentes; a distinção entre maiúsculas e minúsculas depende do sistema de arquivos e de sua configuração. Para passar um caminho com espaços como um único argumento no Bash, coloque-o entre aspas, como 'project notes', ou escape os espaços.
Para que servem os diretórios principais?
A tabela apresenta os usos habituais dessas localizações. Dependendo da distribuição e da instalação, um diretório pode estar ausente ou ser um link para outro local. As convenções ajudam a se orientar, mas não garantem que todos os arquivos de qualquer sistema estejam organizados exatamente assim.
| Caminho | Uso habitual |
|---|---|
/home |
Diretórios pessoais dos usuários comuns. |
/etc |
Configurações do sistema e dos serviços. |
/usr |
Programas do espaço de usuário, bibliotecas e dados compartilhados; não é o local habitual dos documentos pessoais. |
/var |
Dados que variam durante o funcionamento, como logs e caches. |
/tmp |
Arquivos temporários, cuja permanência não deve ser presumida. |
/dev |
Arquivos especiais que representam dispositivos. |
/proc, /sys |
Sistemas de arquivos virtuais que expõem informações de processos, dispositivos, kernel e sistema. |
/boot |
Arquivos utilizados na inicialização. |
/mnt, /media |
Pontos usados, respectivamente, para montagens temporárias e mídias removíveis; a localização real pode variar. |
Não trate os itens de /proc e /sys como documentos comuns para editar ou excluir por tentativa: algumas interfaces permitem alterar o funcionamento do sistema. Também evite guardar dados importantes por muito tempo em /tmp, pois a política do sistema pode remover arquivos temporários. Antes de alterar uma configuração em /etc, entenda sua finalidade e faça uma cópia de segurança.
Praticar a leitura de um caminho
Leia /home/learner/projects/report.txt da esquerda para a direita. A primeira / é o ponto de partida; home, learner e projects são os diretórios percorridos, e report.txt é o componente final. A presença de um ponto no nome não comprova o formato do arquivo nem sua existência.
Suponha que o diretório atual seja /home/learner/projects, formado por diretórios comuns, sem links simbólicos nesse exemplo. O caminho ../notes.txt indica /home/learner/notes.txt, no diretório pai. Já ./notes.txt indica um item dentro de projects. A mudança de um único ponto altera o alvo. Links simbólicos e a forma de navegação do shell podem exigir atenção adicional ao interpretar o diretório pai.
Ler um caminho não confirma que o arquivo existe ou que você tem permissão para acessá-lo. Confira a localização atual com pwd e consulte o alvo com ls antes de usar uma operação que modifica arquivos. Se o nome não existir, a interpretação do caminho ainda pode estar correta; a mensagem de erro deve ser lida separadamente.
Antes de executar um comando, identifique seu diretório atual e verifique se o argumento é um caminho absoluto ou relativo. Essa conferência é especialmente importante ao mover ou excluir arquivos, pois um caminho relativo interpretado a partir de outro diretório pode atingir o alvo errado. A aula sobre terminal, shell e estrutura dos comandos explica como separar o comando de suas opções e argumentos.
Documentação oficial
O Filesystem Hierarchy Standard, versão 3.0, ou FHS, descreve convenções de organização dos diretórios. Confira também a distribuição e a configuração do sistema em uso. A página path_resolution(7), sobre resolução de caminhos no Linux, detalha a interpretação de /, ., .. e links simbólicos. O manual do GNU Bash explica a expansão do til em caminhos.




