Каков технический термин для текущего (.) И родительского (..) каталога?
Я получил функцию, которая проверяет, является ли переданное имя файла .
или же ..
, Но я не знаю, как правильно назвать это. Что-то вроде IsCurrentOrParentDirectory()
является неоднозначным, поскольку функция принимает имя файла, а не полный путь. (Интуитивно приятель-программист будет ожидать прохождения /usr/
пока я в /usr/
вернется true
, хотя это на самом деле не так.)
Есть ли технический термин для этих записей каталога? Если есть, что это?
5 ответов
Из стандарта POSIX:
Точка специального имени файла должна указывать на каталог, указанный его предшественником. Специальное имя файла точка-точка должно ссылаться на родительский каталог своего предшественника. В особом случае в корневом каталоге точка-точка может ссылаться на сам корневой каталог.
Итак, действительно, если вы хотите проверить, является ли имя файла .
или же ..
ты бы назвал это IsDotOrDotDot()
или, используя терминологию POSIX для разрешения имен путей, IsPredecessorOrParentOfPredecessor()
или, может быть, даже PointsToPredecessorOrParentOfPrecedessor()
... вы поняли идею. Проблема в том, что последняя терминология имеет смысл только при просмотре полных путей. Но никто не поймет этого в любом случае.
Учитывая, что .
а также ..
являются допустимыми именами файлов (просто интерпретируются по-разному), вы должны просто придерживаться того, что у вас есть, полагаясь на значение, а не на то, как они называются внутренне.
.
а также ..
обычно используются для описания относительных путей против абсолютных, таких как /usr
, Я бы использовал эту разницу и объявил бы функцию как IsRelativeCurrentOrParentDirectory()
,
Помните, что точечные ссылки могут встречаться в любом месте пути. Как насчет /usr/local/..
?
Стандарт POSIX, который slhck♦ полезно цитирует, говорит:
Специальная точка имени файла должна указывать на…. Специальное имя файла точка-точка должно ссылаться на….
(выделение добавлено). Так что, хотя это не совсем техническая информация, похоже, что "специальное имя файла" может быть официальным названием. Ваши пользователи, вероятно, поймут это, если вы вызовете свою функцию одним из следующих способов:IsSpecialDirectory()
, IsSpecialFilename()
или просто IsSpecialName()
,
Или вы могли бы пойти с IsStandardDirectory()
, IsStandardFilename()
, или же IsStandardName()
, Это следует соглашению об именах Unix (стандартный ввод, стандартный вывод) для вещей, которые устанавливаются для вас автоматически (в данном случае, mkfs
а также mkdir
). IsAutomatic…()
или же IsDefault…()
С другой стороны, вероятно, они недостаточно интуитивны.
Единственный известный мне термин из мира *nix - это CWD
для текущего рабочего каталога. Это на самом деле довольно часто используется. См. Например /proc/$$/cwd
которая является ссылкой на каталог, из которого вы запускаете команду.
Я не знаю ни одного стандартного названия для ..
Помимо dot-dot
и, как указал @slhck, это не очень хороший выбор.
Posix довольно двусмысленно говорит о взаимоотношениях каталогов родитель-потомок. Как уже говорили другие, .
/..
не помогает во время разговора или общения с другими людьми.
Файловые структуры могут рассматриваться как древовидная структура данных. Здесь, как правило, "родитель" и "ребенок" или "дочь" достаточно, чтобы передать смысл. Вы увидите, что учебники по структуре данных несут это соглашение
С другой стороны, кажется, что о деревьях можно говорить как о "вверх" и "вниз" дерева. По соглашению, "вверх" означает ближе к корневому каталогу, а "вниз" относится к дочернему (ren).
Я думаю либо IsCurrentOrUp()
или же IsCurrentOrParent()
можно утверждать, что это хорошая практика для именования функций.