相关疑难解决方法(0)

如何使用 bash 的 complete 或 compgen -C(命令)选项?

在 bash 中创建 shell 完成功能时,该-C选项似乎非常强大且通用。它是这样定义的:

-C 命令

命令 在子shell环境中执行,其输出用作可能的完成。

这看起来真的很简单。但是,奇怪的是,事实并非如此。如果我做:

$ complete -C "echo one two three" test.sh
Run Code Online (Sandbox Code Playgroud)

然后输入test.sh并点击 [tab] 一次,我得到那一行

$ test.sh one two three test.sh  test.sh
Run Code Online (Sandbox Code Playgroud)

背部。什么?!为了比较,

$ complete -W "one two three" test.sh
Run Code Online (Sandbox Code Playgroud)

完全符合我的期望:它提供了一个三个两个尽可能的完成(当然是按排序顺序)。

我在任何地方都找不到任何好的文档,所以我正在尝试......也许分号有帮助?complete -C "echo one two three;" test.sh...啊,好吧,这对一些人有帮助,因为它test.sh从最后消除了奇怪的东西。但它仍然填写完整的 string one two three。这很奇怪,因为上面的描述肯定是说“可能的完成”,复数。...所以,嗯,啊,换行符?让我们试试complete -C "echo -e 'one\ntwo\nthree';" test.sh

好的,所以,这是有希望的。如果我打字test.sh [tab],我就会回来one three two。但接下来,事情就出错了。我添加一个 …

bash autocomplete

9
推荐指数
1
解决办法
3885
查看次数

标签 统计

autocomplete ×1

bash ×1