내가 작성 중인 더 큰 자동 완성 기능의 일부로 compgen을 사용하여 파일 목록을 생성하고 싶습니다. 나는 compgen
bash 매뉴얼 항목을 읽었고 complete
거기에서 그 옵션이 -G "*"
해결책이 될 것이라고 생각했습니다. 하지만 작동시킬 수 없습니다. 입력 내용이 무엇이든 현재 디렉터리의 파일 목록이 표시됩니다. 예:
$ cmd <Tab>
aa bb cc
$ cmd a<Tab>
aa bb cc
$ cmd aa<Tab>
aa bb cc
그래서 compgen과 동일한 옵션을 지원하는 를 사용하여 디버깅을 시도했지만 complete
동일한 결과를 얻었습니다.
$ complete -G "*" cmd
$ cmd a<Tab>
aa bb cc
저도 해봤는데 complete -o filenames
그것도 안되더군요..
답변1
나는 스스로 답을 찾았습니다. 나는 다음 옵션을 사용해야 했습니다 -A action
:
compgen -o filenames -A file ...
complete -o filenames -A file
답변2
또는 파일 이름에 대한 기본 자동 완성을 사용할 수 있습니다.
# at the top of the function to disable default
compopt +o default
# and where you need filename completion, re-enable it and send empty COMPREPLY
compopt -o default
COMPREPLY=()
return 0