我有一个包含当前目录的变量,其中包括几个父目录。例如:
$ pwd
/Users/simont/repositories
$ echo $current
~/repositories
我可以从这个问题中删除除当前目录之外的所有内容:
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