假设我有以下相对路径:
MY_PATH := first/second/third
我正在寻找一个优选的短shell命令来实现以下目的:
MY_NEW_PATH := ../../..
怎么做?
答案 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"
./../../.
可能有一个更好的替代方案来获得无尾随减少的路径,但我不得不考虑更多。