2

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

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

我可以从这个问题中删除当前目录之外的所有内容:

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

我想做相反的事情:从此变量中删除当前目录(使其仅包含~/)。我怎样才能做到这一点?

4

2 回答 2

2

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

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

诚然,这不会将/字符保存到~.

如果你想简单地使用bash你可以做到这一点:

$ echo ${current%/*}
~

/在最后一个(包括其/本身)之后剥离所有内容。

于 2013-04-25T06:55:19.653 回答
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

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

/home/or..product/oracle10 >dirname "/foo/bar/baz"
/foo/bar
于 2013-04-25T06:55:31.000 回答