Какой "канонический путь"?

Это вопрос теории. Я искал по Интернету без удовлетворения, я просто хочу понять, что этот жаргон. Я видел примеры Java, JSON и т.д., Но я не мог найти в Google и здесь в StackOverflow простое объяснение, не нужен код = P

Итак, абсолютный путь - путь к определенному файлу или местоположению, описывающий полный маршрут к нему, полный путь и зависящую от него ОС (абсолютные пути для Windows и Linux, например, различны) Относительный укажите путь к файлу или местоположению, которые он описал из текущего местоположения.. (две точки), указывающие на превосходный уровень в дереве каталогов. Это было ясно для меня уже несколько лет.

При поиске я даже видел, что есть канонизированные файлы! Все, что я знаю, это CANONICAL означает что-то вроде "по правилам" или что-то в этом роде.

Может кто-нибудь, пожалуйста, просветить меня в терминах теории о каноническом материале, пожалуйста? =) СПАСИБО!!

PD (Итак, это было не просто случайное имя Ubuntu) XD

PD2 К сожалению, я не могу дать ответ всем, я дал его тому, который помог мне лучше понять концепцию, но очень спасибо всем =)

Ответ 1

Весь смысл делать что-либо "каноническим", чтобы вы могли сравнить две вещи. Например, как ../../here/bar/x, так и ./test/../../bar/x могут ссылаться на одно и то же место, но вы не можете выполнять текстовое сравнение по двум путям. Однако, если вы превратите их в свое каноническое представление, они оба станут ../bar/x, и мы видим, что они действительно ссылаются на одно и то же.

Короче говоря, часто бывает, что у вас есть много способов обратиться к одной вещи, и в этом случае вы сможете определить каноническое представление, которое является уникальным и которое позволяет вам получить дескриптор col & shy; lections таких вещей.

(Если вы ищете больше примеров, вся математика полна "канонических" конструкций для всех видов объектов и очень с той же целью. Возможно, это Статья в Википедии может предоставить некоторые рекламные и застенчивые направления.)

Ответ 2

Хорошим способом определения канонического пути будет: the shortest absolute path (короткий, по смыслу длины строки).

Это пример разницы между абсолютным путем и каноническим путем:

абсолютный путь: C:\abc\..\abc\file.txt
канонический путь: C:\abc\file.txt

Ответ 3

Какой канонический путь (или его отличие от абсолютного пути) зависит от системы.
Обычно, если (полный) путь содержит псевдонимы, ярлыки или символические ссылки, канонический путь разрешает все это в фактические каталоги, на которые они ссылаются.
Пример: если /bin/a является символической ссылкой, вы можете найти ее в любом месте, где вы запрашиваете абсолютный путь, например. из java.io.File # getAbsolutePath, в то время как реальный файл (то есть действительный объект ссылки), т.е. usr/local/bin/a, будет возвращаться как канонический путь, например. из java.io.File # getCanonicalPath