2013-04-25 1 views
2

여러 부모를 포함하는 현재 디렉토리를 포함하는 변수가 있습니다. 예를 들면 : 나는 반대를하고 싶은경로를 포함하는 변수에서 현재 디렉토리 제거

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

을 :

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

나는 this question에서 제외하고 현재 디렉토리를 모든 을 제거 할 수에만 포함되도록 (이 변수에서 현재의 디렉토리를 제거 ~/). 어떻게해야합니까?

답변

2

마지막 디렉토리를 제거 할 수 dirname 사용 :

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

를 인정 하듯이 ~의 오른쪽에있는 / 문자를 저장하지 않습니다.

단순히 bash를 사용하여이 작업을 수행하려면 당신이 할 수 있습니다 :

합니다 ( / 자체를 포함) 마지막 / 후 모든 전원을 제거합니다
$ echo ${current%/*} 
~ 

.

0

이 전체 일반성 당신에게 문제가 해결되지 않는,하지만 당신은 BTW이 dirname (및 기본 이름)

/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은 정말 상관하지 않는다 반환 된 문자열 정말 directoy 경우, 그것은 임의의 문자열에서 작동합니다.

/home/or..product/oracle10 >dirname "/foo/bar/baz" 
/foo/bar 
관련 문제