LINUX.ORG.RU

В чем разница между терминами path и pathname?

 


0

1

Это термины синонимы? Какой термин более правильный вообще и в Linux в частности? Вот примеры о которых я говорю:

/
/home/zb2
/home/zb2/.bash_history
Desktop/test.odt
/usr/local/../lib/os-release

никогда не читал о различиях, поэтому самому стало интересно. Походу pathname не только синоним, но и более правильное обозначение пути имен чем короткое слово path. Тут длинное разглагольствование на эту тему, очень подробно

https://teaching.idallen.com/cst8207/12f/notes/160_pathnames.html#understanding-pathnames-exercises

Только надо читать на инглишь, потому что гуглтранслейтр просто заменил pathname на path в русском переводе )

monkdt
()

У этих «терминов» нет строгого определения. В целом и то и то это что-то, могущее включать в себя слэш (/). А дальше кто как хочет так и понимает. В большинстве случаев скорее всего и то и то используется в значении полного пути к файлу (как абсолютного, так и относительного).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

А вот это точно нет.

Что тогда? Где вообще встречается свойство с таким названием, вроде в java-script. Вообще нужно определение, я предположил, что это последний сегмент в пути к файлу или директории.

Мне знакомы только такие свойства объекта файловой системы и Uri, которые описывают расположение файла и его название: Path, FullName, Name, BaseName, Directory, DirectoryName, AbsolutePath, LocalPath, Parent, Extension, Segments.

dmitry237 ★★★
()
Ответ на: комментарий от dmitry237

Для файла /a/b/c/d.x из того, что мне приходит в голову:

Слово path можно интерпретировать либо в смысле «полный путь» (то есть /a/b/c/d.x), либо как «путь до имени» (/a/b/c/).

Слово pathname тоже можно интерпретировать как полный путь (path во втором смысле + name), а вот второй вариант притянуть уже не получается вроде. С другой стороны, path это нормальное английское слово, а pathname это программистское слово-мутант.

А ещё стоит упомянуть слово name - оно тут можно обозначать как d.x так и полный путь (совпадая с path в 1 смысле) /a/b/c/d.x. Вариант d.x можно без двусмысленностей называть «basename», но это тоже не «нормальное английское слово».

Для пути без последнего имени наверно можно придумать ещё какое-то название без двусмысленностей. А для pathname при желании можно наверно ещё какой-то смысл придумать. Можно ещё придумать разных слов: fullpath, fullname.

Итог такой: все эти названия не совсем строгие, и всегда надо смотреть контекст. Если же пишешь сам - выбирать желательно такие, чтобы интуитивно понятнее казалось. Нормативными документами это не регулируется.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

и всегда надо смотреть контекст

Вот самое главное.
А еще лучше употреблять только там, где это свойство имеет конкретное значение. Например:

const url = new URL(
  "https://developer.mozilla.org/en-US/docs/Web/API/URL/pathname?q=value"
);
console.log(url.pathname); // Logs "/en-US/docs/Web/API/URL/pathname"
dmitry237 ★★★
()
Ответ на: комментарий от firkax

Нормативными документами это не регулируется

Организация может создавать документы, и если организация законная, то она может придавать документам легальность. В этом случае такие документы могут стать нормативными (в пределах этой организации).

Предлагать документы на роль нормативных могут отдельные сотрудники. Не факт, что пролучится, но попробовать-то можно. Проект - это небольшая суборганизация в организации. Легальности там не будет, но там и нужды доходить до суда как правило нет, руководитель проекта разрулит.

Таким образом, надо просто сесть и написать такой документ с опеределениями терминов. И всё (сразу станет ясно).

Shushundr ★★★
()
Последнее исправление: Shushundr (всего исправлений: 1)
Ответ на: комментарий от thesis

Нет, они оба неформальные и контекстно-зависимые. path, насколько я субъективно замечал, распространено больше.

Я не знаю, где ты в стандарте POSIX нашёл определение слова pathname, но даже если оно там и есть, то они не придумывали это слово, и они не являются экспертами-лингвистами. Так что это всего лишь один из вариантов его употребления, который там зафиксирован для однозначного понимания текста стандарта. В каком-нить другом стандарте у него может быть другое определение.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от firkax

импонирует такое объяснение. от себя могу добавить вот какие мемуары:

когда я был маленький и ходил на комплюктерные курсы, там давались следующие понятия:

  • имя файла - file.ext (то, что сейчас бы называлось filename, думаю)
  • путь - перечисление всех каталогов иерархии от каталога верхнего уровня (намеренно не говорю корня, потому что курсы те были про дос вообще) через DIRSEP до целевого каталога (то, что сейчас бы называлось file path)
  • полное имя файла - это путь+имя файла (тот самый pathname из ОП)
aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от thesis

Не надо там искать определений фундаментальных вещей.

Я искал где применяется pathname, возможно где-то еще. Для конкретизации того, что под этим подразумевается вообще. Лично я с этим нигде не сталкивался и только предполагаю по похожим аналогиям.

dmitry237 ★★★
()
Ответ на: комментарий от dmitry237

Да просто забавно, что в топике речь идет про ФС (см. примеры), а ты для поиска применений выбрал именно тот язык, в котором работа с ФС обрезана изначально.

Если смотреть с позиций ЖС, то стоит пользоваться понятием Path из какой-нибудь URI RFC, наверное, или что там для них более родное.

thesis ★★★★★
()
Ответ на: комментарий от thesis

а ты для поиска применений выбрал именно тот язык, в котором работа с ФС обрезана изначально.

Откуда я знаю, что там обрезано или нет? Я не знаю джаваскрипт вообще, т.е. вообще-вообще, искал ключевое слово применительно к свойствам объекта для различных ЯП, попался такой пример.

dmitry237 ★★★
()
Ответ на: комментарий от dmitry237

Ну то есть ты не знаешь ответа на вопрос, не знаешь, где этот ответ искать, но нагуглил что-то непонятное тебе же самому и полез отвечать.

Тебя уже заменил ИИ, ты в курсе?

thesis ★★★★★
()
Ответ на: комментарий от thesis

Тебя уже заменил ИИ, ты в курсе?

Нет, не в курсе.

Ну то есть ты не знаешь ответа на вопрос

Конечно не знаю, я сразу написал:

pathname, это скорее синоним name

скорее

Здесь же сразу видно, что это предположение.

dmitry237 ★★★
()
Ответ на: комментарий от zb2

Видимо, pathname правильный термин, path жаргон.

А где вы встречали pathname?

На взгляд коллективного разума ЛОРа, что лучше использовать в исходном коде?

В качестве чего? Все зависит от конкретики.

dmitry237 ★★★
()
Ответ на: комментарий от dmitry237

А где вы встречали pathname?

Например:

  1. https://manpages.ubuntu.com/manpages/focal/en/man7/path_resolution.7.html называется path_resolution, но почти везде в тексте идет pathname.
  2. https://docs.python.org/3/library/os.path.html «Common pathname manipulations», правда в тексте наиболее часто используется path.

В качестве чего? Все зависит от конкретики.

В качестве названия (части названия) переменных, функций, методов и т.д., которые связанны с хранением и манипуляциями с путями.

zb2
() автор топика
Ответ на: комментарий от zb2

но почти везде в тексте идет pathname.

Понятно.

В качестве названия (части названия) переменных, функций, методов и т.д., которые связанны с хранением и манипуляциями с путями.

Если это не входит в состав ключевых слов ЯП и не вызовет конфликтов, то все зависит от ваших предпочтений.

dmitry237 ★★★
()
Ответ на: комментарий от no-such-file

Интуитивно мне тоже так казалось, но на практике они употребляются как синонимы практически везде.

Вообще там разница в том, что path это путь в более абстрактном смысле, без учёта синтаксиса (например буквально «файл X в корне» — это тоже путь), а pathname (также path-name и редко path name) — это путь, записанный с использованием слэша в качестве разделителя (а также . и .. например). Но на практике в 99.9% случаев из контекста понятно, что если написано path, то написан он должен быть правильно.

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Это не значит, что нужно игнорировать формальные определения.

Стандарта или хотя бы какого-то авторитетного источника для таких определений нет, соответственно формальные определения у всех могут быть разные. Как правило path это путь в широком смысле (хоть в виде объекта в ООП), а pathname — это строка, где компоненты пути разделены конкретным символом (обычно слэшем).

На практике полно незнаек, а также многим лень.

Это не столько лень, сколько сокращение никому не нужных канцеляризмов для более простого понимания. Можно это тоже назвать ленью, конечно, но всеобщей и оправданной. Если это, конечно, не официальная спецификация языка, например, или официальное описание того или иного стандарта, типа POSIX или FHS. Там это может быть уместно, примерно как написание законов или серьёзных договоров на сложном юридическом языке. Хотя как раз в том же FHS не гнушаются употреблять и path, если неоднозначности нет.

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)