【发布时间】:2014-09-16 19:10:25
【问题描述】:
我想知道是否可以使自动完成跨越 = 符号。因此,例如,我想输入foo BAR=[TAB][TAB],并让它填写BAR 的可能值。我尝试了以下方法:我有一个名为“bar”的文件,如下所示:
#!/bin/bash
echo -e "BAR=100\nBAR=110\nBAR=200" | grep "^$2"
然后我做:
~> complete -C bar foo
如果我输入foo [TAB][TAB],它会给我一些可能的 BAR 值。如果我输入foo BAR=[TAB][TAB],它会失败(它将BAR=BAR= 附加到命令的末尾)。 (注意,如果我输入bar 1 BAR=,它会给我一个正确的完成列表,所以这不是条形脚本的问题)。
这对于我拥有的一些脚本非常有用。
【问题讨论】:
-
我不确定您的意思,但据我所知,您的问题的答案可能是“否”。如果您在问题中明确说明您到底要做什么以及为什么这种行为会有用,那将会很有用,因为无论如何可能有更好的方法来解决它。
-
我认为这就是
COMP_WORDBREAKS的用途,尽管你不能真的去改变它。所以问题是有没有办法解决这种行为,比如this question about:。 -
Tom:我有一个有点复杂的makefile,它接收几个配置文件中的一个,这些配置文件位于另一个目录中。文件列表有些动态,所以我不能为每个目标制定规则。相反,目标是在 make 行上指定的:
make target=....如果有这个自动完成功能会很好。还有一些其他的宏可以设置,如果对这些宏也有自动补全功能就好了。 -
几乎在那里...如果 = 被视为断字,我想我可以检查前一个单词,看看它是否是 BAR,并基于此自动完成...仅在第一个之后
=符号后的字符,$3变为=而不是BAR...等等!
标签: bash bash-completion