As entradas “.” e “..” em uma listagem de diretório são sempre as mesmas?

13

Quando seria o "." e ".." entradas em uma listagem de dir diferem? (Eu entendo que eles representam dois diretórios diferentes, mas eles sempre lista de forma idêntica com a mesma data e hora em um comando dir padrão. Eles nunca diferem?)

    
por Witness Protection ID 44583292 13.09.2011 / 20:50

3 respostas

26

Quanto à listagem real:

27/08/2011  11:23    <DIR>          .
27/08/2011  11:23    <DIR>          ..

Eles estão usando a data do diretório atual para ambos. Se você começar em C:\Users\Chris (digamos), você pode obter o acima. Mas quando você vai até C:\Users você recebe:

26/07/2011  21:20    <DIR>          .
26/07/2011  21:20    <DIR>          ..

Portanto, a data de .. no primeiro caso não é igual à data de . no segundo. O que aparentemente está errado como eles são (ou deveriam ser) o mesmo diretório. No entanto, . e .. são referências ao diretório atual e ao diretório pai e são criados ao mesmo tempo - quando o diretório foi criado - por isso está correto (graças à Synetech Inc. por apontar isso)

A única ocasião em que os timestamps seriam diferentes é se um ou outro . ou .. fosse recriado.

A resposta original:

. significa o diretório atual.

.. significa o diretório pai.

Então, em circunstâncias normais, elas são sempre diferentes.

A única vez que eles produzem o mesmo resultado é quando você está na raiz do disco. Então, em C:\> dir . e dir .. produzem a mesma saída.

    
por 13.09.2011 / 20:54
14

Não, eles serão sempre os mesmos. Como estes são diretórios, não arquivos, eles são tratados de maneira ligeiramente diferente (na verdade, eles nem são diretórios normais, eles são ponteiros como eL01 disseram, então eles são tratados de maneira ainda mais diferente 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 registro de data e hora do diretório pai seja copiado para .. , não é assim que funciona. Quando você cria um novo diretório, os dois ponteiros recebem a data e a hora atuais. Esse é o caso do DOS até o Windows 7 em FAT * e NTFS.

    
por 14.09.2011 / 00:12
4

Na verdade, não posso lhe dar provas, mas acho que: Todo diretório possui uma lista de diretórios e arquivos que ele contém. Para tornar possível usar caminhos relativos, todo diretório precisa desses dois ponteiros - um para si mesmo . e o outro diretório um nível acima de .. - esses dois ponteiros são criado apenas na hora 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.

    
por 13.09.2011 / 23:04