如何编写自动完成的 bash 脚本?

如何编写自动完成的 bash 脚本?

我想./.bash_func在终端中运行一些函数(我在 中创建),其中一些文件位于某处。当我键入该函数并点击时,Tab Tab我想列出位于./scipts以下位置的文件cd ./scipts Tab Tab

答案1

我这样做过一次:

notes () { ... }

complete -F complete_notefiles notes

# following based on 
# http://unix.stackexchange.com/questions/77009/custom-autocomplete-deal-with-spaces-in-filenames 
complete_notefiles () {
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=()
    pushd ~/Documents/Notes >/dev/null
    _filedir
    popd >/dev/null
}

. ~/.bash_completion_functions 

我发现我需要从 /usr/share/bash-completion/bash_completion 复制 3 个函数:_filedir, _tilde,_quote_readline_by_ref

相关内容