cooltool옵션 목록이있는 사용자 정의 콘솔 유틸리티 가 있습니다
fooOption
barOption
tab키 를 눌러 옵션을 자동 완성하는 방법은 무엇입니까?
사용자가 입력했음을 의미합니다
$ ./cooltool foo_
그런 다음를 누릅니다 tab. 그리고
$ ./cooltool fooOption _
나타났다.
cooltool옵션 목록이있는 사용자 정의 콘솔 유틸리티 가 있습니다
fooOption
barOption
tab키 를 눌러 옵션을 자동 완성하는 방법은 무엇입니까?
사용자가 입력했음을 의미합니다
$ ./cooltool foo_
그런 다음를 누릅니다 tab. 그리고
$ ./cooltool fooOption _
나타났다.
답변:
가장 간단한 방법은 .bashrc에 다음을 추가하는 것입니다.
_cooltool()
{
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "fooOption barOption" -- $cur) )
}
complete -F _cooltool cooltool
사용자가 입력 할 때마다 cooltool f[TAB][TAB]의 _cooltool()함수가 호출됩니다. 현재 부분 단어가 무엇인지 알아 낸 다음 compgen어떤 옵션이 일치하는지 알아냅니다. 이것들은라는 배열에 저장되어 COMPREPLY표시됩니다. 봐 man complete및 man compgen자세한 내용은.
좋은 튜토리얼을 확인하려면 : Bash Completion Function 작성
dogbane의 답변 외에도 다음을 수행 할 수 있습니다.
complete -W "fooOption barOption" cooltool
단순히 문자열의 시작 부분에서 단어 목록을 일치시키려는 경우. 완전하고 compgen은 대부분의 옵션을 공유하는 것 같습니다. 내가 사용하는 명령에서 "문자열의 시작"만 일치하는 것을 보았으므로 _cooltool 함수에서 다음과 같은 다른 작업을 수행 할 수 있다는 것을 알았습니다.
COMPREPLY=( $(grep "$cur" ~/my_potential_args.txt) )
옵션 이름의 아무 곳이나 일치시킵니다.