如何在 bash 中从绝对路径创建相对路径?

How to create relative path from absolute path in bash?

我在这个目录中:

/home/michal/project/test/my-utils/rel/0.1.0

并且我想在 Linux shell:

中获取到 /home/michal/project/ 的相对路径
../../..

我尝试过使用 sed 进行一些操作,但没有成功创建正则表达式。例如。尝试之一:

pwd | sed -e "s/.*project\///g" | sed -e "s/[^\/]+/../g"

有什么技巧吗?

您可以使用命令 realpath:

realpath --relative-to=${PWD} /home/michal/project/

来自帮助页面:

--relative-to=FILE print the resolved path relative to FILE