Bash 기능에서 경로 완성을 완료하는 방법

Bash 기능에서 경로 완성을 완료하는 방법

몇 가지 기사를 읽었지만 bash 스크립팅에 대해 잘 모르고 필요한 작업을 수행할 수 없습니다. 내가 시도한 것처럼이 게시물

다음과 같은 기능이 있습니다 .bash_alias. 서버 폴더로 CD를 이동하면 됩니다.

html() {
  cd /var/www/html/$1
}

그래서 명령이 html myapp실행됩니다 cd /var/www/html/myapp. 나는 다음 단계로 가고 싶다.

html my<TAB>폴더를 하드코딩하지 않고 자동 완성되도록 만들고 싶습니다 html myapp . 일반적인 기본 자동 완성 동작을 원합니다. 이름이 my로 시작하는 폴더가 여러 개 있는 경우 폴더를 나열할 수도 있습니다. 안내해주세요.

답변1

완성 함수를 작성해야 합니다(관례적으로 이름을 로 지정함 _html). 그런 다음 html내장 함수를 사용하여 함수를 명령과 연결합니다 complete.

_html() {
    local cur prev words cword
    _init_completion || return
   COMPREPLY=($(cd /var/www/html && compgen -o dirnames -- "$cur"))
}

complete -F _html html

(참고: _init_completion에 정의되어 /usr/share/bash-completion/bash_completion있으며 직접 또는 를 통해 가져왔다고 가정합니다 /etc/bash_completion.)

관련 정보