Nós temos dois caminhos. O primeiro é o diretório, depois o diretório ou o arquivo.
/a/b/c
e /a/d/e.txt
O caminho relativo do primeiro caminho para o segundo será:
../../d/e.txt
Como calcular isso no terminal Linux? Para quem pergunta “O que é caso de uso?”, Pode-se usar isso - por exemplo - para criar muitos links simbólicos relativos.
linux
command-line
shell
path
techraf
fonte
fonte
Respostas:
Assumindo os coreutils do GNU:
Para links simbólicos,
ln
aprendeu recentemente a--relative
opção.Para todo o resto,
realpath
suporta opções--relative-to=
e--relative-base=
.fonte
Para mim, essa resposta (que usa um python oneliner) funciona perfeitamente.
Testado com sucesso no Linux (Kubuntu 14.04) e no Mac OSX, precisa do Python 2.6.
fonte
Para não depender
realpath
daquilo que não está disponível de maneira consistente e minimizar as dependências, eu vim com isso (usando uma pequena ajuda desta resposta ):Cria um subshell para encontrar a parte comum de ambos os pathes. Talvez você goste - funciona para mim.
fonte