我有一个包含当前目录的变量,包括几个父项。例如:
$ pwd
/Users/simont/repositories
$ echo $current
~/repositories
我可以从this question
中删除除当前目录之外的所有内容onlycurrent=${$(current)##*/}
我想做相反的事情:从这个变量中删除当前的dir(这样它只包含~/
)。我怎么能这样做?
答案 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