특정 명령의 bash 완성을 확장하는 스크립트가 있습니다. command1을 입력하고 탭을 실행하면 파일 디렉터리(및 파일)가 자동 완성됩니다. 한 가지 불편한 문제를 제외하고는 훌륭하게 작동합니다. 자동 완성될 때마다 공백이 추가됩니다. 예를 들어 루트에서 하위 디렉터리에 액세스하려고 하면 액세스하는 각 하위 디렉터리에 추가 공간이 추가되어 bash 완성 확장 목적이 무산됩니다. 저는 배쉬를 처음 접했습니다. 이것은 내가 스크립트를 작성한 결과입니까, 아니면 스크립트가 확장될 때 탭 완성이 작동하는 방식입니까?
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="command1 command2"
serviceOpts="opt1 opt2"
case "${prev}" in
command1)
COMPREPLY=( $(compgen -f ${cur}) )
return 0
;;
command2)
COMPREPLY=( $(compgen -W "${serviceOpts}" ${cur}) )
return 0
;;
*)
;;
esac
답변1
전체 명령에는 -o nospace
Readline에 추가 공간을 추가하지 않도록 지시하는 옵션이 있습니다.
문서