
제가 하려는 작업은 다음과 같습니다. 코드 저장소용 폴더가 있고 현재 작업 디렉터리의 "코드 루트 디렉터리"를 알려줄 수 있는 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/
다음 하나 이상의 디렉터리(문자가 아닌 가장 긴 문자열로 정의됨 /
: [^/]*
)를 일치시키는 것입니다.