문자열 집합에서 어떤 문자열이 다른 문자열의 접두사인지 확인하는 Bash 명령

문자열 집합에서 어떤 문자열이 다른 문자열의 접두사인지 확인하는 Bash 명령

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

관련 정보