GNU/Linux >> Tutoriales Linux >  >> Linux

¿Rutas absolutas/canónicas/relativas?

¿Cuál es la diferencia entre rutas absolutas, canónicas y relativas?

Supongo que absoluto comienza con un / . ¿Puede contener /../? ?

¿Es una ruta canónica diferente de una ruta absoluta en que no puede contener /../? ?

Es foo una ruta relativa?

Buscando en Google posix canonical path no apareció mucho... ¿Cuáles son las referencias POSIX para estos términos?

Respuesta aceptada:

POSIX define "nombre de ruta absoluto" de la siguiente manera:

Un nombre de ruta que comienza con uno o más de dos caracteres

y "nombre de ruta relativo" de la siguiente manera:

Un nombre de ruta que no comienza con un carácter .

Eso es todo lo que hay que hacer para rutas relativas y absolutas.

Las rutas canónicas no están definidas en POSIX, pero el término generalmente se refiere a rutas comparables, es decir, si toma dos rutas a un objeto del sistema de archivos y las convierte a formato canónico, el resultado debería ser idéntico si y solo si los dos objetos del sistema de archivos son idénticos. Esto implica eliminar ".." como mencionas, pero también significa resolver enlaces simbólicos; por lo que una ruta canónica podría definirse como

Un nombre de ruta cuyos componentes son todos directorios o archivos reales, excepto "." y “..”, y cuyas barras no se repiten

En términos de POSIX, un nombre de ruta canónico es efectivamente un nombre de ruta resuelto (siempre que acepte que los nombres de ruta canónicos solo se pueden determinar para los objetos del sistema de archivos que existen).

Tenga en cuenta que esto solo funciona porque los directorios con enlaces fijos no están permitidos...

Entonces, para responder a sus preguntas:

  • una ruta absoluta puede contener /../;
  • una ruta canónica no puede contener /../ , ni puede contener /./ , // (excepto posiblemente en la primera posición), o enlaces simbólicos;
  • foo es una ruta relativa.

(De manera pedante, todos son nombres de ruta , no solo rutas).


Linux
  1. Rsync:¿Cómo reubicar los enlaces simbólicos absolutos?

  2. Zsh/bash:¿Expandir rutas relativas en argumentos de comando utilizando reglas de estructura de directorio lógico antes de la ejecución?

  3. ¿Cómo excluyo rutas absolutas para tar?

  4. Determine si la ruta es relativa o absoluta en el programa de shell

  5. Cómo ver la ruta absoluta completa de un enlace simbólico

Navegando por el sistema de archivos con rutas relativas en la línea de comando

¿Cómo escapo espacios en rutas para Scp en Linux?

¿Qué es una etiqueta canónica?

¿Convertir un enlace simbólico absoluto en un enlace simbólico relativo con un comando simple de Linux?

Ruta absoluta vs relativa en Linux:¿Cuál es la diferencia?

¿Implicaciones de seguridad del uso de rutas relativas en la variable ambiental PATH?