2013-04-25 4 views
2

У меня есть переменная, которая содержит текущий каталог, содержащий несколько родителей. Например:Удалить текущий каталог из переменной, содержащей путь

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

Я могу раздеться все кроме текущего каталога из this question:

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

Я хочу сделать наоборот: удалить текущую директорию с этой переменной (так, что он содержит только ~/). Как я могу это сделать?

ответ

2

dirname Использование вы можете содрать последнюю директорию:

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

Правда это не спасает / символ справа от ~.

Если вы хотите сделать это просто с помощью bash вы могли бы сделать:

$ echo ${current%/*} 
~ 

Какие обнажает все после последнего / (в том числе самого /).

0

Это не решает вас проблемы в полной общности, но вы можете посмотреть на имя папки (и базовому)

/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: имя_директории действительно не волнует, если возвращаемая строка действительно directoy, это работает на произвольных строках.

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