일련의 디렉터리에 대한 탭 완성 별칭을 묻는 메시지를 표시하시겠습니까?

일련의 디렉터리에 대한 탭 완성 별칭을 묻는 메시지를 표시하시겠습니까?

일련의 디렉터리에 대해 탭 완성을 요청하는 bash 별칭을 만들 수 있습니까?

소스 제어 하에 많은 프로젝트가 있고 각 프로젝트의 기본 경로는 다음과 같습니다.~/projs/<projname>/trunk

이제 더 쉽게 전환할 수 있도록 Bash 별칭을 만들었습니다.

go-to <projname>

cd ~/projs/<projname>/trunk파일 시스템의 어느 위치에 있든 시도해 보겠습니다.

내가 글을 쓸 때 어떤 프로젝트 이름을 사용할 수 있는지 확인할 수 있도록 <projname>탭 완성 프롬프트를 표시하는 것이 가능합니까 ?go-to[space][Tab]

(최신 우분투 배포판입니다)

답변1

이것은 별칭과 함께 작동하지 않습니다.프로그래밍 가능한 완성(자세한 내용은 man bash를 참조하세요.). 완성된 최소 예제는 bash다음과 같습니다.

_go-to()  {
    COMPREPLY=( $(compgen -W "~/projs/proj1/trunk ~/projs/proj2/trunk" -- "${COMP_WORDS[COMP_CWORD]}") );
}
complete -F _go-to go-to

따라서 먼저 함수를 만든 _go-to다음 이를 이라는 명령에 바인딩합니다 go-to.

go-to <tab>이제 이 작업이 완료 go-to /home/user/projs/proj되고 또 다른 <tab>제안 목록이 작성됩니다.

/home/user/projs/proj1/trunk /home/user/projs/proj2/trunk

관련 정보