相关疑难解决方法(0)

如何遍历可能的完成?

我希望能够掌握给定部分命令的一系列可能的补全。例如,partial 命令service um有以下可能的补全:

$ service um<TAB><TAB>
umountfs      umountnfs.sh  umountroot
Run Code Online (Sandbox Code Playgroud)

我想要一个completions具有以下行为的函数:

$ for x in $(completions 'service um'); do
> echo $x
> done
umountfs
umountnfs.sh
umountroot
Run Code Online (Sandbox Code Playgroud)

部分进展:到目前为止我学到了什么

这是我认为可以成为完整答案的方法。我绝对希望看到完整的答案,但鉴于相对简单<TAB><TAB>以非编程方式提供相同的功能,感觉也可能有更灵活的解决方案。

我可以发现service命令的完成机制是_service函数:

$ complete -p service
complete -F _service service
Run Code Online (Sandbox Code Playgroud)

当这个完成函数_service被调用时,一堆环境变量被设置(即COMP_{LINE,POINT,KEY,TYPE,WORDS,CWORD};参见bash 手册页),该函数作为参数给出正在完成的命令、正在完成的单词和前一个单词,并填充COMPREPLY可能的完成. 所以我想要的completions函数可以这样定义:

function completions() {
    # Produce an array of tokens in the input.
    read -a words <<< $1

    # Use "complete …
Run Code Online (Sandbox Code Playgroud)

bash autocomplete

18
推荐指数
1
解决办法
794
查看次数

如何通过管道传输“选项卡完成”显示的命令列表?

在 bash 中使用命令时,我喜欢使用双选项卡选项来显示可用命令。一些命令比其他命令有更多可能的匹配:

选项卡完成的屏幕截图 http://img13.imageshack.us/img13/5541/picturemhy.jpg

有没有办法将双选项卡的输出通过管道传输到 somwehere,例如grep?我找到了一个相关的帖子,但我仍然不确定如何实现它以将其通过管道传输到 grep。

command-line scripting bash autocomplete

12
推荐指数
1
解决办法
2140
查看次数

标签 统计

autocomplete ×2

bash ×2

command-line ×1

scripting ×1