제가 하려는 작업은 다음과 같습니다. 코드 저장소 폴더가 있고 현재 작업 디렉터리의 "코드 루트"를 알려줄 수 있는 bash 명령을 찾고 있습니다. 예를 들어 현재 에 있는 경우 ~/repositories/my_program/folder1/folder2/
명령이 를 반환하도록 하고 싶습니다 ~/repositories/my_program/
.
를 사용하여 작업 디렉터리 경로 pwd
와 프로젝트 목록을 얻을 수 있습니다 ls ~/repositories/
. 어떤 문자열이 ~/repositories/<match>
접두사인지 확인하는 방법은 무엇입니까 pwd
?
답변1
아래 디렉토리만 원하는 경우 ~/repositories
이렇게 할 수 있습니다.
$ sed -r "s#($HOME/repositories/[^/]*).*#\1#" <<<$PWD
/home/terdon/repositories/my_program
다음만 인쇄합니다 my_program
.
$ sed -r "s#$HOME/repositories/([^/]*).*#\1#" <<<$PWD
my_program
그것을 사용하려면 ~/
시도
$ sed -r "s#$HOME(/repositories/[^/]*).*#~\1#" <<<$PWD
~/repositories/my_program
아이디어는 $HOME/repositories/
디렉터리(가장 긴 비 /
문자열로 정의됨: [^/]*
)를 일치시킨 다음 일치시키는 것입니다.