일련의 디렉터리에 대해 탭 완성을 요청하는 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