Я получил функцию, которая проверяет, является ли переданное имя файла .
или ..
. Но я не знаю, как правильно назвать это. Нечто подобное IsCurrentOrParentDirectory()
неоднозначно, поскольку функция принимает имя файла, а не полный путь. (Интуитивно приятель-программист ожидал бы, что /usr/
я уйду, а я /usr/
вернусь true
, хотя на самом деле это не так.)
Есть ли технический термин для этих записей каталога? Если есть, что это?
path
technical-writing
Макс Трукса
источник
источник
.
и..
являются именами файлов в соответствии со стандартом POSIX. Смотрите мою цитату ниже. Я бы сказал, что здесь все хорошо, поскольку речь идет об общих компьютерных концепциях.foo.bar
,foo
, ...) , но не путь (foo/bar
,/foo/
, ...). Но так как каталоги, ссылки и т. Д. Тоже файлы, я оставлю это так.Ответы:
Из стандарта POSIX :
Так что, на самом деле, если вы хотите проверить, является ли имя файла,
.
или..
вам придется его вызыватьIsDotOrDotDot()
, или, используя терминологию POSIX по разрешению имен путейIsPredecessorOrParentOfPredecessor()
, или, может быть, дажеPointsToPredecessorOrParentOfPrecedessor()
... вы поняли идею. Проблема в том, что последняя терминология имеет смысл только при просмотре полных путей. Но никто не поймет этого в любом случае.Учитывая это
.
и..
являются допустимыми именами файлов (просто интерпретируются по-разному), вы должны просто придерживаться того, что у вас есть, полагаясь на значение, а не на то, как они называются внутренне.источник
.bash_history
точка или нет дот? Я не уверен, является ли это имя функции более описательным, чем открытое предложенное OP..
или..
нет, и только начинался ли он с.
. Конечно, имя функции OP более наглядно; Я просто указывал ему, как это технически называется.IsDotOrDotDot()
ничего не говорит о том, что функция делает вообще.IsDotOrDotDot
. Любой, кто знаком с понятиями файловой системы, сразу же поймет это. Это спорно , является ли.bash_history
это «точка» , потому что контекст не предусмотрен , то для значения «точки», но это определенно не «точка или точка точки»..
и..
обычно используются для описания относительных путей против абсолютных, как/usr
. Я бы использовал эту разницу и объявил бы функцию какIsRelativeCurrentOrParentDirectory()
.Помните, что точечные ссылки могут встречаться в любом месте пути. Как насчет
/usr/local/..
?источник
Стандарт POSIX, который slhck ♦ полезно цитирует, говорит:
(выделение добавлено). Так что, хотя это не совсем техническая информация , похоже, что «специальное имя файла» может быть официальным названием. Ваши пользователи, вероятно , понять это , если вы назвали вашу функцию любого из следующих условий :
IsSpecialDirectory()
,IsSpecialFilename()
или простоIsSpecialName()
.Или вы могли бы пойти с
IsStandardDirectory()
,IsStandardFilename()
илиIsStandardName()
. Это соответствует соглашению об именах Unix (стандартный ввод, стандартный вывод) для вещей, которые устанавливаются для вас автоматически (в данном случае, с помощьюmkfs
иmkdir
).IsAutomatic…()
илиIsDefault…()
, с другой стороны, возможно, недостаточно интуитивен.источник
IsMagicDirectory()
таким, что оно довольно близко к этому, но я думаю, что ваша формулировка намного более интуитивна и уместна (особенно потому, что она использует установленные соглашения об именах). ИспользованиеIsSpecialFileName
даже даст понять, что функция получает не путь, а имя одного файла (или каталога, ссылки и т. Д.).IsSpecialFile()
что это было бы плохим предложением. Но я не предложил это; Я предложилIsSpecialFilename()
. В то время как именаsda1
,console
,kmem
,myfifo
иurandom
наводят, они не защищены и не являются по своей сути особенные. Но.
и..
по сути являются специальными именами файлов .Единственный термин, который я знаю из мира * nix, относится
CWD
к текущему рабочему каталогу. Это на самом деле довольно часто используется. Смотрите, например/proc/$$/cwd
, ссылку на каталог, из которого вы запускаете команду.Я не знаю ни одного стандартного названия для
..
кроме,dot-dot
и, как указал @slhck, это не очень хороший выбор.источник
Posix довольно двусмысленно говорит о взаимоотношениях каталогов родитель-потомок. Как уже говорили другие,
.
/..
не помогает во время разговора или общения с другими людьми.Файловые структуры можно рассматривать как древовидную структуру данных. Здесь, как правило, «родитель» и «ребенок» или «дочь» достаточно, чтобы передать смысл. Вы увидите, что учебники по структуре данных несут это соглашение
С другой стороны, кажется, что о деревьях можно говорить как о «вверх» и «вниз» дерева. По соглашению, «вверх» означает ближе к корневому каталогу, а «вниз» относится к дочернему (ren).
Я думаю, что
IsCurrentOrUp()
илиIsCurrentOrParent()
можно утверждать, что это хорошая практика для именования функций.источник