从包含路径的变量中删除当前目录

时间:2013-04-25 06:03:25

标签: bash zsh

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

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

我可以从this question

中删除当前目录之外的所有内容
onlycurrent=${$(current)##*/}

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

2 个答案:

答案 0 :(得分:2)

使用dirname您可以删除最后一个目录:

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

不可否认,这不会将/字符保存在~的右侧。

如果您希望这样做只需使用bash即可:

$ echo ${current%/*}
~

在最后/之后删除所有内容(包括/本身)。

答案 1 :(得分:0)

这并不能完全解决您的问题,但您可能需要查看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

BTW:dirname并不关心返回的字符串是否真的是一个directoy,它适用于任意字符串。

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