Nous avons deux voies. Le premier est le répertoire, le second soit un répertoire ou un fichier.
/a/b/c
et /a/d/e.txt
Le chemin relatif du premier au deuxième sera:
../../d/e.txt
Comment calculer cela dans un terminal Linux? Pour ceux qui demandent «Quel est le cas d'utilisation?», On pourrait utiliser cela, par exemple, pour créer de nombreux liens symboliques relatifs.
linux
command-line
shell
path
techraf
la source
la source
Réponses:
En supposant que GNU coreutils:
Pour les liens symboliques,
ln
a récemment appris l'--relative
option.Pour tout le reste,
realpath
prend en charge les options--relative-to=
et--relative-base=
.la source
Pour moi, cette réponse (qui utilise un oneliner en python) fonctionne parfaitement.
Testé avec succès sur Linux (Kubuntu 14.04) et sur Mac OSX, nécessite Python 2.6.
la source
Pour ne pas dépendre de ce
realpath
qui n'est pas toujours disponible et minimiser les dépendances, j'ai trouvé cela (en utilisant un peu d'aide de cette réponse ):Génère un sous-shell pour trouver la partie commune des deux chemins. Peut-être que vous l'aimez - fonctionne pour moi.
la source