问题标签 [compgen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
549 浏览

bash - 从脚本访问 bash 选项卡完成

tab您通常通过按下终端中的键来与 bash 完成进行交互。我想在我的脚本中与它进行交互。本质上,我想要一个函数/命令来回答“如果我按下tab已经输入的文本 xyz 并将光标作为位置 n,会有什么建议?”

这个功能存在吗?我发现compgen但它的记录很差,似乎没有做我想做的事。

0 投票
1 回答
987 浏览

bash - 如何使 bash 自动完成在中间工作?

如何在 bash 中编写自动完成功能,如果我有:

where|表示光标,它应该通过"first_argument"而不是"first_argumentgarbage"compgen?

在示例中,我的行为方式错误

0 投票
1 回答
155 浏览

bash - 这个 bash 完成功能是如何工作的?(对于cloudfoundry cli)

我试着理解这个 bash 完成功能?(对于cloudfoundry cli)

我阅读 了https://debian-administration.org/article/317/An_introduction_to_bash_completion_part_2 以及 https://www.gnu.org/software/bash/manual/bash.html#Programmable-Completion 上的 bash 参考指南, 可以计算了解 cloudfoundry 脚本中的代码是如何工作的:(复制自/usr/local/etc/bash_completion.d/cf

已经为 cf 安装了一些插件,并希望看到它们完成。(例如 github.com cf-targets-plugin

对我有什么提示吗?词表是怎么产生的?(我假设它在COMP_WORDS[]

这与样本如此不同

COMPREPLY=( $(compgen -W "$worldist -- "$cur_opt") )

0 投票
1 回答
437 浏览

bash - 自动完成提升程序选项

经过数小时的搜索,我最终写出了我的第一个 stackoverflow 问题。

我想为 bash 脚本创建一个完成函数,到目前为止一切都很好;)。此 bash 脚本调用具有自己的自动完成功能的其他可执行文件。

例子:

自动完成 my_script 的第一个参数(在本例中为“foo”)有效,因为可能的选项是文件夹“/usr/local/libexec/my_script/”中的文件。此文件夹中的每个程序都具有工作自动完成功能,这是使用 boost::program_options 的副产品。

我现在想通过引用要调用的程序的自动完成来实现 my_script 的下一个参数的自动完成。

我已经从另一个完成的这个答案开始,但是_command_command_offset 1似乎对我不起作用。

  • 如何获得foo的选项,以及如何在 my_script 中使用它?

我当前的/etc/bash_completion.d/my_script如下所示

0 投票
0 回答
166 浏览

bash - 是否可以制作一个将完成委托给另一个程序的 bash 脚本?

我正在尝试围绕另一个程序(例如foo_wrapperaround foo)编写一个包装脚本,它只是在每次调用foo. 我希望用户能够以完全相同的方式进行交互,包括看到相同的 bash 完成输出foo_wrapperfoo

例如,foo_wrapper.sh应该--my_flag在每次调用时简单地添加foo,但仅仅在参数列表中添加或附加标志是不够的,由于foo实现方式,它必须将它们放在正确的位置。因此,如果用户调用foo_wrapper bar baz,我希望它映射到foo bar --my_flag baz. 这就是为什么我认为我不能简单地使用 bash 别名。

如果我不需要 bash 补全来工作,这将是一个简单的脚本,但是如果没有 bash 补全,这个东西就不会那么有用了。谁能帮我弄清楚在这里做什么?我发现了compgenbash 的内置函数,但我无法看到如何/是否可以使用它。

0 投票
1 回答
89 浏览

php - 我可以在 PHP 函数 exec() 中使用 linux 内置实用程序 compgen 吗?

我需要使用 PHP 函数 exec() 获取 Linux 命令的完成变体。我试试这个:

我除了得到这样的东西

但相反,我得到一个错误:

sh:1:compgen:未找到

当我直接在终端输出中执行此命令时是正确的:

我也尝试过使用函数 shell_exec() 但它没有用。

0 投票
0 回答
26 浏览

linux - 从带有 @-signs (compgen) 的列表中创建一个 bash 补全

我想做一个自定义的 bash 完成。完成中是“@”符号,我不知道如何逃避它们。完成工作直到 @ 发生,然后停止完成。我会很高兴得到一些帮助。

0 投票
0 回答
63 浏览

bash - 显示可用选项而不完成

我想知道是否可以让compgen( complete) 只显示可能的选项而不完成。

例如 withCOMPREPLY=( $( compgen -W "--option1 --option2" -- $cur )) --option1 --option2将被建议,但--将被添加到我的命令行中。我可以摆脱--

我查看了compgen的选项,但找不到可以提供帮助的选项。我不想做任何 hack(例如先显示选项然后再显示COMPREPLY=( $( compgen -W "" -- $cur ))

0 投票
1 回答
452 浏览

bash - bash 如何做 `ssh` 自动补全?

我已经安装了“bash-completion”包。

ssh命令行上的完成(in bash)正在工作:ssh TAB-TAB将完成过去使用的主机ssh -TAB-TAB并将完成可用ssh选项。

但是,当我搜索当前定义的完成时:

...我发现没有完成注册ssh?!

当我检查ssh下面的完成脚本时,/usr/share/bash-completion/completions/ssh我发现它确实注册了ssh完成:

那么为什么 ssh 完成不显示complete | grep ssh呢?bash如何完成ssh选项?

0 投票
3 回答
77 浏览

bash - 可以在此代码中使用 eval 进行代码注入吗?

这是我第一次使用 bash,我知道 eval 在使用时会有一些风险。您可以对此进行代码注入吗?例如,我想运行 ls 命令并查看文件。