我有一个用于扩展某些命令的 bash-completion 的脚本。如果我输入 command1 并执行一个选项卡,它应该自动完成文件目录(和文件)。除了一个不方便的问题之外,它工作得很好。每次自动完成时它都会添加一个额外的空白。因此,例如,如果您尝试从根目录访问子目录,则您访问的每个子目录都会添加一个额外的空格,这有点违背了扩展 bash-completion 的目的。我是 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 不要添加额外的空间。
文档