Eu tenho uma função que verifica se o nome do arquivo passado é .
ou ..
. Mas não sei como nomeá-lo corretamente. Algo como IsCurrentOrParentDirectory()
é ambíguo, pois a função assume um nome de arquivo e não um caminho completo. (Intuitivamente, um colega programador esperaria que passasse /usr/
enquanto eu /usr/
voltasse true
, embora esse não seja realmente o caso.)
Existe um termo técnico para essas entradas de diretório? Se houver, o que é?
path
technical-writing
Max Truxa
fonte
fonte
.
e..
são nomes de arquivos de acordo com o padrão POSIX. Veja minha citação abaixo. Eu diria que está bem aqui, pois trata de conceitos gerais de computação.foo.bar
,foo
...), mas não um caminho (foo/bar
,/foo/
...). Mas como diretórios, links etc. também são arquivos, deixarei assim.Respostas:
Do padrão POSIX :
Então, realmente, se você quiser verificar se o nome do arquivo é
.
ou..
teria que chamá-loIsDotOrDotDot()
, ou, usando a terminologia POSIX de resolução do nome do caminhoIsPredecessorOrParentOfPredecessor()
, ou talvez atéPointsToPredecessorOrParentOfPrecedessor()
... você entendeu. O problema é que a última terminologia só faz sentido quando se olha nomes de caminho completos. Mas ninguém entenderia isso de qualquer maneira.Considerando que
.
e..
são nomes de arquivos válidos (apenas interpretados de maneira diferente), você deve apenas seguir o que tem, baseando-se no significado e não na forma como eles são chamados internamente.fonte
.bash_history
Ponto é ou não ponto? Não tenho certeza se esse nome da função é mais descritivo do que o aberto proposto pelo OP..
ou..
não, e se ele apenas começou com a.
. É claro que o nome da função do OP é mais descritivo; Eu estava apenas apontando para ele como é tecnicamente referido.IsDotOrDotDot()
diz praticamente nada sobre o que a função está fazendo.IsDotOrDotDot
. Qualquer pessoa conhecedora dos conceitos de sistema de arquivos entenderia instantaneamente. É discutível se.bash_history
é "ponto" porque nenhum contexto é fornecido para o significado de "ponto", mas definitivamente NÃO é "ponto ou ponto"..
e..
geralmente são usados para descrever caminhos relativos versus caminhos absolutos/usr
. Eu usaria essa diferença e declararia a função comoIsRelativeCurrentOrParentDirectory()
.Esteja ciente de que as referências a pontos podem ocorrer em qualquer lugar do caminho. Que tal
/usr/local/..
?fonte
O Padrão POSIX, que slhck ♦ citou utilmente, diz:
(enfase adicionada). Portanto, embora não seja exatamente técnico , parece que "nome de arquivo especial" pode ser o nome oficial . Seus usuários provavelmente compreendê-lo se você chamou sua função de qualquer um dos seguintes:
IsSpecialDirectory()
,IsSpecialFilename()
ou, simplesmenteIsSpecialName()
.Ou você poderia ir com
IsStandardDirectory()
,IsStandardFilename()
ouIsStandardName()
. Isso segue a convenção de nomenclatura do Unix (entrada padrão, saída padrão) para itens que são estabelecidos automaticamente para você (neste caso, pormkfs
emkdir
).IsAutomatic…()
ouIsDefault…()
, por outro lado, provavelmente não são intuitivos o suficiente.fonte
IsMagicDirectory()
muito próximo disso, mas acho que sua redação é muito mais intuitiva e apropriada (especialmente porque usa convenções de nomenclatura estabelecidas). O usoIsSpecialFileName
deixaria claro que a função não recebe um caminho, mas um único nome de arquivo (ou diretório, link, etc.).IsSpecialFile()
seria uma má sugestão. Mas eu não sugeri isso; Eu sugeriIsSpecialFilename()
. Enquanto os nomessda1
,console
,kmem
,myfifo
eurandom
são sugestivos, eles não são reservados e não são inerentemente especial. Mas.
e..
são nomes de arquivos inerentemente especiais .O único termo que conheço no mundo * nix é
CWD
para o Diretório de trabalho atual. Isso é realmente usado com bastante frequência. Veja, por exemplo,/proc/$$/cwd
qual é um link para o diretório a partir do qual você executa o comando.Não conheço nenhum nome padrão para
..
além de,dot-dot
e como o @slhck apontou, essa não é uma boa escolha.fonte
O Posix é bastante ambíguo ao falar sobre relacionamentos de diretório pai-filho. Como já foi dito,
.
/..
não é útil ao falar ou comunicar com outros seres humanos.As estruturas de arquivos podem ser pensadas 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 têm essa convenção
Como alternativa, parece que as árvores podem ser mencionadas como "para cima" e "para baixo" da árvore. Por convenção, "para cima" significa mais próximo do diretório raiz e "para baixo" refere-se ao (s) filho (s).
Eu acho que uma
IsCurrentOrUp()
ouIsCurrentOrParent()
pode ser uma boa prática para nomear funções.fonte