Bash는 자체 compgen 접두사를 완성합니다.

Bash는 자체 compgen 접두사를 완성합니다.

기본적으로 내 (bash가 아닌) 프로그램을 호출하고 출력을 로 설정하는 간단한 bash 완료 스크립트가 있습니다 COMREPLY.

COMPREPLY=( $(my-program -- "${COMP_WORDS[@]}") )

일부 옵션은 쉼표로 구분된 값을 허용합니다. 마지막 항목만 처리하는 방법에 대한 제안이 있습니까? 사용자 입력을 가정하고 -v opt1,opt2,o<TAB><TAB>내 프로그램이 이 시점에서 유효한 옵션이 opt3또는 임을 발견했다고 가정해 보겠습니다 opt4. 이 2개를 반환하고 TAB을 누르면 출력이 o(전체 접두사가 사라짐)로 변경됩니다. opt1,opt2,opt3합계를 반환하면 opt1,opt2,opt4작동하지만 보기에는 좋지 않습니다.

가능한 해결책은 다음과 같은 작업을 수행하는 것입니다.Bash 완료 쉼표로 구분된 값, 즉 my-programgenerate를 호출하고 접두사 가 붙을 [opt3, opt4]단어 목록으로 전달합니다 . 하지만 이를 위해서는 bash 스크립트에서 일부 로직을 복제해야 합니다 . 예를 들어 더 좋은 방법이 있습니까?compgenopt1,opt2,my-program

관련 정보