As entradas "." E ".." em uma lista de diretórios são sempre as mesmas?
13
Quando seria o "." e ".." entradas em uma lista de diretórios diferem? (Entendo que eles representam dois diretórios diferentes, mas sempre listam de forma idêntica a mesma data e hora em um comando dir padrão. Eles diferem?)
Eles estão usando a data do diretório atual para ambos. Se você começar C:\Users\Chris(digamos), poderá obter o que foi dito acima. Mas quando você vai até C:\Users:
Portanto, a data do ..primeiro caso não é igual à data do .segundo. O que aparentemente está errado, pois eles são (ou deveriam ser) o mesmo diretório. No entanto, .e ..são referências ao diretório atual e pai e são criados ao mesmo tempo - quando o diretório foi criado -, portanto, ele está realmente correto (obrigado à Synetech inc por apontar isso)
O único momento em que os carimbos de data e hora seriam diferentes é se um ou outro de .ou ..foi recriado.
A resposta original:
. significa o diretório atual.
.. significa o diretório pai.
Então, em circunstâncias normais, eles são sempre diferentes.
O único momento em que eles produzem o mesmo resultado é quando você está na raiz do disco. Assim, no C:\>dir .e dir ..produzem o mesmo resultado.
Editado para enfatizar a pergunta, está relacionado à aparência deles em uma lista de diretórios.
Proteção de testemunha ID 44583292
@ Mike - tentou responder à pergunta revisto para justificar os votos;)
ChrisF
4
Isso está errado, porque ..não recebe o carimbo de data / hora do diretório pai, mas o carimbo de data / hora do diretório atual. Isso ocorre .e ..ambos são criados quando o diretório é criado.
Synetech
@Synetech - Ah! O centavo cai
ChrisF
14
Não, eles sempre serão os mesmos. Como são diretórios, não arquivos, eles são tratados de maneira um pouco diferente (na verdade, eles nem são diretórios normais, são indicadores como o eL01 disse, portanto, são tratados de maneira ainda mais diferente do que os diretórios normais).
Quando você cria um diretório, duas entradas são criadas automaticamente:
. aponta para o diretório recém-criado
.. aponta para o pai do novo diretório
Obviamente .terá a data e hora atuais em que o diretório é criado e, embora possa parecer lógico que o carimbo de data e hora do diretório pai seja copiado .., não é assim que funciona. Quando você cria um novo diretório, os dois ponteiros recebem a data e a hora atuais. É o caso do DOS através do Windows 7 no FAT * e no NTFS.
+1 uma vez que parece que você foi o único a subir com a resposta ChrisF apresenta agora ;-)
Jonas Heidelberg
@Jonas, na verdade, a resposta de ChrisF faz a mesma suposição equivocada de que a maioria das pessoas faria: isso ..teria o carimbo de data e hora do pai. (Eu não ficaria surpreso se algum dia um novo sistema de arquivos - WinFS? - finalmente fizesse dessa maneira).
Synetech
Começando com sua quarta revisão, eu diria que ele não faz mais essa suposição.
Jonas Heidelberg
@ Jonas, ah tudo bem. Não vi as edições. Bem, ele está recebendo novos votos de qualquer maneira; Eu acho que esse é o ponto para a função de edição.
Synetech 14/09/11
Eu deveria ter creditado a você nessa revisão mais recente - farei isso agora.
ChrisF
4
Na verdade, não posso lhe dar provas, mas penso: Todo diretório tem uma lista de diretórios e arquivos que ele contém. Para possibilitar o uso de caminhos relativos, todo diretório precisa desses dois ponteiros - um para si mesmo .e o outro diretório um nível acima ..- esses dois ponteiros são criados apenas no momento em que o próprio diretório é criado.
Portanto, o registro de data e hora de ..na verdade não é o registro de data e hora do diretório acima, mas o registro de data e hora do ponteiro para o diretório acima.
Respostas:
Quanto à listagem real:
Eles estão usando a data do diretório atual para ambos. Se você começar
C:\Users\Chris
(digamos), poderá obter o que foi dito acima. Mas quando você vai atéC:\Users
:Portanto, a data do
..
primeiro caso não é igual à data do.
segundo. O que aparentemente está errado, pois eles são (ou deveriam ser) o mesmo diretório. No entanto,.
e..
são referências ao diretório atual e pai e são criados ao mesmo tempo - quando o diretório foi criado -, portanto, ele está realmente correto (obrigado à Synetech inc por apontar isso)O único momento em que os carimbos de data e hora seriam diferentes é se um ou outro de
.
ou..
foi recriado.A resposta original:
.
significa o diretório atual...
significa o diretório pai.Então, em circunstâncias normais, eles são sempre diferentes.
O único momento em que eles produzem o mesmo resultado é quando você está na raiz do disco. Assim, no
C:\>
dir .
edir ..
produzem o mesmo resultado.fonte
..
não recebe o carimbo de data / hora do diretório pai, mas o carimbo de data / hora do diretório atual. Isso ocorre.
e..
ambos são criados quando o diretório é criado.Não, eles sempre serão os mesmos. Como são diretórios, não arquivos, eles são tratados de maneira um pouco diferente (na verdade, eles nem são diretórios normais, são indicadores como o eL01 disse, portanto, são tratados de maneira ainda mais diferente do que os diretórios normais).
Quando você cria um diretório, duas entradas são criadas automaticamente:
.
aponta para o diretório recém-criado..
aponta para o pai do novo diretórioObviamente
.
terá a data e hora atuais em que o diretório é criado e, embora possa parecer lógico que o carimbo de data e hora do diretório pai seja copiado..
, não é assim que funciona. Quando você cria um novo diretório, os dois ponteiros recebem a data e a hora atuais. É o caso do DOS através do Windows 7 no FAT * e no NTFS.fonte
..
teria o carimbo de data e hora do pai. (Eu não ficaria surpreso se algum dia um novo sistema de arquivos - WinFS? - finalmente fizesse dessa maneira).Na verdade, não posso lhe dar provas, mas penso: Todo diretório tem uma lista de diretórios e arquivos que ele contém. Para possibilitar o uso de caminhos relativos, todo diretório precisa desses dois ponteiros - um para si mesmo
.
e o outro diretório um nível acima..
- esses dois ponteiros são criados apenas no momento em que o próprio diretório é criado.Portanto, o registro de data e hora de
..
na verdade não é o registro de data e hora do diretório acima, mas o registro de data e hora do ponteiro para o diretório acima.fonte
..
entrada recebe o carimbo de data e hora da data e hora atuais em que o diretório atual é criado.