【问题标题】:Remove current directory from variable containing path从包含路径的变量中删除当前目录
【发布时间】:2013-04-18 22:03:12
【问题描述】:

我有一个包含当前目录的变量,其中包括几个父目录。例如:

$ pwd
/Users/simont/repositories
$ echo $current
~/repositories

我可以从this question 中删除当前目录除了的所有内容:

onlycurrent=${$(current)##*/}

我想做相反的事情:从这个变量中删除当前目录(这样它就只包含~/)。我该怎么做?

【问题讨论】:

    标签: bash zsh


    【解决方案1】:

    使用dirname可以剥离最后一个目录:

    $ current="~/repositories"
    $ echo $current
    ~/repositories
    $ dirname $current
    ~
    

    诚然,这不会将/ 字符保存到~ 的右侧。

    如果您想简单地使用bash 来做到这一点,您可以这样做:

    $ echo ${current%/*}
    ~
    

    这会剥离最后一个 / 之后的所有内容(包括 / 本身)。

    【讨论】:

      【解决方案2】:

      这并不能完全解决您的问题,但您可能需要查看 dirname(和 basename)

      /home/or..product/oracle10 >pwd
      /home/oracle/product/oracle10
      
      /home/or..product/oracle10 >dirname `pwd`
      /home/oracle/product
      
      /home/or..product/oracle10 >basename `pwd`
      oracle10
      

      顺便说一句:dirname 并不关心返回的字符串是否真的是一个目录,它适用于任意字符串。

      /home/or..product/oracle10 >dirname "/foo/bar/baz"
      /foo/bar
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-01
        • 2019-06-15
        • 2014-02-20
        • 2022-01-16
        • 2011-05-30
        • 2021-12-23
        • 1970-01-01
        相关资源
        最近更新 更多