Qual é o termo técnico para o diretório atual (.) e pai (..)?

19

Eu tenho uma função que verifica se o nome do arquivo passado é . ou .. . Mas eu não sei como nomear corretamente. Algo como IsCurrentOrParentDirectory() é ambíguo, uma vez que a função recebe um nome de arquivo e não um caminho completo. (Intuitivamente, um colega programador esperaria passar /usr/ enquanto eu estiver em /usr/ retornaria true , enquanto isso não é realmente o caso.)

Existe um termo técnico para essas entradas de diretório? Se existe um, o que é isso?

    
por Max Truxa 23.07.2014 / 08:44

5 respostas

23

Do padrão POSIX :

The special filename dot shall refer to the directory specified by its predecessor. The special filename dot-dot shall refer to the parent directory of its predecessor directory. As a special case, in the root directory, dot-dot may refer to the root directory itself.

Então, realmente, se você quiser verificar se o nome do arquivo é . ou .. você teria que chamá-lo IsDotOrDotDot() , ou, usando a terminologia POSIX da resolução do caminho, IsPredecessorOrParentOfPredecessor() , ou talvez até PointsToPredecessorOrParentOfPrecedessor() … você entendeu. O problema é que a última terminologia só faz sentido quando se olha para caminhos completos. Mas ninguém entenderia isso de qualquer maneira.

Considerando que . e .. são nomes de arquivos válidos (apenas interpretados de forma diferente), você deve se ater ao que você tem, contando com o significado ao invés de como eles são chamados internamente. / p>     

por 23.07.2014 / 08:53
4

. e .. são geralmente usados para descrever caminhos relativos em comparação a absolutos como /usr . Eu usaria essa diferença e declararia a função como IsRelativeCurrentOrParentDirectory() .

Esteja ciente de que as referências a pontos podem ocorrer em qualquer parte do caminho. E quanto a /usr/local/.. ?

    
por 23.07.2014 / 08:58
2

O padrão POSIX, que slhck ♦ citou, é útil,

The special filename dot shall refer to ….  The special filename dot-dot shall refer to ….

(ênfase adicionada). Então, embora não seja exatamente técnico , parece que "nome de arquivo especial" só pode ser o nome oficial . Seus usuários provavelmente entenderiam se você chamasse sua função de: IsSpecialDirectory() , IsSpecialFilename() ou simplesmente IsSpecialName() .

Ou você pode usar IsStandardDirectory() , IsStandardFilename() ou IsStandardName() . Isso segue a convenção de nomenclatura Unix (entrada padrão, saída padrão) para as coisas que são estabelecidos para você automaticamente (neste caso, por mkfs e mkdir ). IsAutomatic…() ou IsDefault…() , por outro lado, provavelmente não são intuitivos o suficiente.

    
por 23.07.2014 / 23:27
1

O único termo que conheço do mundo * nix é CWD para o diretório de trabalho atual. Isso é realmente muito usado. Veja, por exemplo, /proc/$$/cwd , que é um link para o diretório do qual você executa o comando.

Eu não sei de nenhum nome padrão para .. além de dot-dot e como @slhck apontou que não é uma boa escolha.

    
por 23.07.2014 / 20:33
0

Posix é bastante ambíguo ao falar sobre relacionamentos de diretórios pai-filho. Como outros já disseram, . / .. não é útil ao falar ou se comunicar com outros seres humanos.

As estruturas de arquivos podem ser consideradas como uma estrutura de dados em árvore. Aqui, geralmente "pai" e "filho" ou "filha" são suficientes para transmitir significado. Você verá que os livros didáticos da estrutura de dados contêm essa convenção

Alternativamente, parece que as árvores podem ser citadas como "para cima" e "para baixo" na árvore. Por convenção, "up" significa mais próximo do diretório raiz e "down" refere-se ao filho (ren).

Acho que IsCurrentOrUp() ou IsCurrentOrParent() pode ser considerado uma boa prática para nomear funções.

    
por 24.07.2014 / 07:46