生成一条路径以向后返回给定路径
generate a path to go backward a given path
假设我有以下相对路径:
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"
./../../.
可能有更好的替代方法来获得无尾部斜线的路径,但我必须多考虑一下。
假设我有以下相对路径:
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"
./../../.
可能有更好的替代方法来获得无尾部斜线的路径,但我必须多考虑一下。