代码之家  ›  专栏  ›  技术社区  ›  nilo

生成返回给定路径的路径

  •  2
  • nilo  · 技术社区  · 11 年前

    假设我有以下相对路径:

    MY_PATH := first/second/third
    

    我正在搜索一个较短的shell命令,以实现以下目标:

    MY_NEW_PATH := ../../..
    

    如何做到这一点?

    1 回复  |  直到 11 年前
        1
  •  1
  •   Etan Reisner    11 年前
    $ 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"
    ./../../.
    

    也许有一个更好的选择来获得一个无斜杠的路径,但我必须考虑更多。