Ao utilizar o comando ls -a na pasta raiz (/), observei o ponto(.) e os dois pontos(…) que representam, respectivamente, o diretório atual e o seu pai. Se o que escrevi estiver certo, por que esse comando mostra o "próprio diretório dentro de si (é o que parece) e qual o “diretório pai” do root? Root tem pai?
Eu, de fato, gostaria de entender isso, mesmo se tudo que escrevi for bobagem.
Rapaz sabe que eu tmb não sei, boa pergunta. e quando digita “$ cd …/” nada acontece.
Se digita $ basename …/ aparece …
se digita $ dirname …/ aparece .
Isso mostra que foi intencional ser assim, não sei o porque, mas o … aponta para o próprio /
O meu palpite é para se a pessoa por exemplo estiver em /cdrom se ela der “$ cd …/…/…/” vc vê que eu dei 2 …/ a mais, sem o … apontar para o / ou seja o barra não apontar para o barra o comando daria diretório não existente.
Olá, @aguamole . Obrigado pelo retorno. Vamos ver se alguém desvenda esse mistério para nós.
Só um comentário: eu e você digitamos dois pontos - como aqui (…). Enquanto escrevo, aparecem dois, mas no texto publicado aparecem 3 pontos. Acho que seria bom se o pessoal do site soubesse disso.
Salve Carlos, por definição todo diretório tem o . e o … dentro deles. A questão é que tudo começa no / (root) e não existe nada antes dele, é o big bang, inicio de tudo, então o . e o … do root é ele mesmo, vamos dizer assim. Só tá lá pela definição da estrutura de diretórios do Unix.
Eu nunca fui atrás pra ver a história, mas usamos essa referência do próprio diretório em alguns casos, como executar programas/scripts que estão na pasta atual ou quando precisamos que no script ele execute algo que está na pasta atual sem precisar chamar o caminho todo, por exemplo. Acho que o / ter o “.” e o “…” é mais pela definição dos diretórios do Linux, todo diretório tem os arquivos especiais . e … dentro deles e o / é um diretório, logo tem que ter o “.” e o “…”. Minha resposta tá um pouco rasa mas aguardo os companheiros instruidos na arte Linux aqui pra uma resposta mais elaborada hehe. Abraços
A motivação eu expliquei acima na primeira resposta. Se o diretorio atual já estiver em / e e usar o cd para ir para / ele não retorna erro, veja a imagem.
É básico do sistema de arquivos ter esses dois diretórios especiais.
Lembrem-se que, eu posso tirar o disco do computador A e levar a outro B, e então montar o sistema de arquivos raiz do computador A no computador B em /mnt/A . Nesse caso o diretório especial .. vai ter sim significado e vai listar o diretório anterior, ou seja, /mnt
Já quando se está na raiz do sistema de arquivos, não há como voltar mais, então ele aponta para ele mesmo. Ou seja, o significado do diretório .. é dado pelo sistema operacional, não como algo escrito no próprio arquivo. Tanto que as permissões desse diretório é na verdade as permissões do diretório pai. Já as permissões do diretório . ficam salvas no próprio sistema de arquivos, indicado pelo diretório. Nesse ponto quando, em um diretório vc lista as permissões dos subdiretórios, o sistema operacional pega a informação desse . de cada subdiretório, mesmo que ele esteja numa partição em separado e montado ali.
. significa o diretório atual .. significa o diretório superior a ele
É por isso que para executar um arquivo um script local você usa:
./script
E é por isso que para voltar um diretório você usa “cd ..”
Esses são, até onde eu sei, atalhos relativos à pasta que você está, e não significam um local pré-definido, por isso eles te levam para locais diferentes.
Se você der um “cd .”
" vai perceber que não vai mudar de pasta, afinal o ponto significa o diretório atual, e não vai receber nenhum erro.
Você pode entender esses pontinhos como se fossem a “seta de voltar” num gestor de arquivos com interface, eles estão ali para navegação simplesmente.
Eles são listados porque eles são “ponteiros” para essas funcionalidades, é como quando você dá um “ls” num diretório, por trás dos panos é o mesmo que “ls .”
Faça um teste, por exemplo, vá até a sua home “cd home”
Depois rode um “ls ..” e você vai ver que ele vai fazer a listagem da raiz. E eles são ocultos por padrão também porque o nome deles começa com um ponto.
Não sei se a explicação vai algo além de “porque programaram para funcionar assim”, mas o “ponto” e o “ponto-ponto” são caminhos relativos do filesystem.
Ah, lembrando que tem a complicação onde é possível criar arquivos especiais que são links simbólicos e links físicos, que são arquivos mas na prática agem como diretórios. O próprio sistema operacional é que vai ler o conteúdo desses arquivos e verificar para onde apontam e pegar as permissões para mostrar ao usuário.
Esse assunto de sistema de arquivos é bem extenso e inclusive há alguns recursos avançados que apenas alguns tipos de sistema de arquivos têm, como por exemplo subvolumes ou arquivos deduplicados.
Complementando, para ser possível utilizar esse tipo de atalho, subir de diretório (../) é preciso ter instalado o bd na distro (base Debian).
Normalmente, as distribuições já veem com ele, mas acabei tendo problema em uma instalação mínima do Xubuntu, quando não o tinha e o comando não funcionava:
Em sistemas Unix-like, como o Ubuntu mostrado na sua imagem, o diretório “.” representa o diretório atual, e “…” representa o diretório pai.
Quando você usa o comando ls -a na pasta raiz (/), você verá os dois diretórios listados:
O “.” é a própria pasta raiz, por isso parece que ela está listando a si mesma. Isso é útil para operações que envolvem o diretório atual.
O “…” também aponta para a própria pasta raiz quando você está nela. Isso ocorre porque a pasta raiz (/) é o diretório mais alto na hierarquia de arquivos do sistema operacional e, portanto, não tem um “diretório pai” acima dela. Assim, em /, o “…” simplesmente referencia a própria raiz.
Esse comportamento serve para garantir que operações envolvendo caminhos relativos sempre tenham uma referência válida, mesmo no topo da árvore de diretórios.