【发布时间】:2013-04-18 22:03:12
【问题描述】:
我有一个包含当前目录的变量,其中包括几个父目录。例如:
$ pwd
/Users/simont/repositories
$ echo $current
~/repositories
我可以从this question 中删除当前目录除了的所有内容:
onlycurrent=${$(current)##*/}
我想做相反的事情:从这个变量中删除当前目录(这样它就只包含~/)。我该怎么做?
【问题讨论】:
我有一个包含当前目录的变量,其中包括几个父目录。例如:
$ pwd
/Users/simont/repositories
$ echo $current
~/repositories
我可以从this question 中删除当前目录除了的所有内容:
onlycurrent=${$(current)##*/}
我想做相反的事情:从这个变量中删除当前目录(这样它就只包含~/)。我该怎么做?
【问题讨论】:
使用dirname可以剥离最后一个目录:
$ current="~/repositories"
$ echo $current
~/repositories
$ dirname $current
~
诚然,这不会将/ 字符保存到~ 的右侧。
如果您想简单地使用bash 来做到这一点,您可以这样做:
$ echo ${current%/*}
~
这会剥离最后一个 / 之后的所有内容(包括 / 本身)。
【讨论】:
这并不能完全解决您的问题,但您可能需要查看 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
【讨论】: