몇 가지 기사를 읽었지만 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
.)