假设我有以下相对路径:
MY_PATH := first/second/third
我正在搜索一个较短的shell命令,以实现以下目标:
MY_NEW_PATH := ../../..
如何做到这一点?
$ 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" ./../../.
也许有一个更好的选择来获得一个无斜杠的路径,但我必须考虑更多。