path - ¿Qué es un “camino canónico”?
theory relative-path (4)
Esa es una pregunta teórica. Busqué en Internet sin una suerte satisfactoria, solo quiero entender qué es esta jerga. He visto ejemplos de Java, JSON, etc., pero no pude encontrar en Google ni aquí en StackOverflow una explicación simple, no se necesita código = P
Por lo tanto, una ruta absoluta es una forma de llegar a un determinado archivo o ubicación que describe la ruta completa hacia ella, la ruta completa y depende del sistema operativo (las rutas absolutas para Windows y Linux, por ejemplo, son diferentes) Una ruta relativa es una diríjase a un archivo o ubicación que se describe desde la ubicación actual .. (dos puntos) que indica un nivel superior en el árbol de directorios. Eso ha sido claro para mí desde hace varios años.
¡Al buscar incluso he visto que hay archivos canonizados también! Todo lo que sé es que CANONICAL significa algo como "de acuerdo con las reglas" o algo así.
¿Puede alguien, por favor, iluminarme en términos teóricos sobre cosas canónicas, por favor? =) GRACIAS !!
PD (Así que no era solo un nombre aleatorio de Ubuntu después de todo) XD
PD2 Lamentablemente no puedo dar la respuesta a todos, se la di a la que más me ayudó a entender el concepto, pero muchas gracias a todos =)
La mayoría de los problemas con las rutas canónicas ocurren cuando pasa el nombre de un directorio y no un archivo. Para el archivo, si estamos proporcionando una ruta absoluta que también es la ruta canónica. Pero para dir, significa omitir la última "/". Por ejemplo, "/ var / tmp / foo" es una ruta canónica, mientras que "/ var / tmp / foo /" no lo es.
Lo que es una ruta canónica (o su diferencia de una ruta absoluta) depende del sistema.
Normalmente, si una ruta (completa) contiene alias, accesos directos o enlaces simbólicos, la ruta canónica resuelve todos estos en los directorios reales a los que hacen referencia.
Ejemplo: si /bin/a
es un enlace sym, puede encontrarlo en cualquier lugar que solicite una ruta absoluta, por ejemplo, desde java.io.File#getAbsolutePath mientras que el archivo real (es decir, el objetivo real del enlace) es decir, usr/local/bin/a
se devolvería como una ruta canónica, por ejemplo, desde java.io.File#getCanonicalPath
Una buena manera de definir una ruta canónica será: the shortest absolute path
corta (corta, en el sentido de longitud de cadena).
Este es un ejemplo de la diferencia entre una ruta absoluta y una ruta canónica:
ruta absoluta: C:/abc/../abc/file.txt
ruta canónica: C:/abc/file.txt
El objetivo de hacer algo "canónico" es para que puedas comparar dos cosas. Por ejemplo, tanto ../../here/bar/x
como ./test/../../bar/x
pueden referirse a la misma ubicación, pero no puede hacer una comparación textual en las dos rutas. Sin embargo, si los convierte en su representación canónica, ambos se convierten en ../bar/x
, y vemos que en realidad se refieren a lo mismo.
En resumen, a menudo ocurre que tiene muchas formas de referirse a una cosa y, en ese caso, puede definir una representación canónica que sea única y que le permita controlar las colecciones de esas cosas.
(Si está buscando más ejemplos, todas las matemáticas están llenas de construcciones "canónicas" para todo tipo de objetos, y mucho más con el mismo propósito en mente. Tal vez este artículo de Wikipedia pueda proporcionar algunas instrucciones adicionales).