生成一条返回给定路径的路径

时间:2015-01-26 12:37:11

标签: shell cd

假设我有以下相对路径:

MY_PATH := first/second/third

我正在寻找一个优选的短shell命令来实现以下目的:

MY_NEW_PATH := ../../..

怎么做?

1 个答案:

答案 0 :(得分:1)

$ MY_PATH=first/second/third
$ sed -e 's#[^/]\+/\?#../#g' <<<"$MY_PATH"
../../../

在没有尾部斜杠的情况下获取该路径的最简单方法就是删除它。

$ MY_PATH=first/second/third
$ cdup=$(sed -e 's#[^/]\+/\?#../#g' <<<"$MY_PATH")
$ echo "$cdup"
../../../
$ echo "${cdup%/}"
../../..

你也可以使用这样的东西(它生成一个更丑陋,但仍然有效的路径):

$ MY_PATH=first/second/third
$ sed -e 's#[^/]\+/\?#./.#g' <<<"$MY_PATH"
./../../.

可能有一个更好的替代方案来获得无尾随减少的路径,但我不得不考虑更多。