【发布时间】:2011-05-24 08:06:36
【问题描述】:
我正在寻找一种让控制台自动完成的方法 - 给定这样的应用程序:
int main (int argc, char ** argv)
{
if (argc == 1) return EXIT_FAILURE;
if (strcmp(argv[1], "good")==0) printf("good\n");
if (strcmp(argv[1], "bad")==0) printf("bad\n");
return EXIT_FAILURE;
}
运行它时,我想在命令后按 [tab],这样它会给我一个可能有用的选项。
例子:
./a.out g[tab]
会自动完成到
./a.out good
我不想编辑 /etc/bash-completion.d/,我希望有一个更强大的自动完成功能,就像可执行文件本身中的一个函数,它会被调用 - 也许这样它可以查询一个可能选项列表的数据库。或者可能会输出一条消息,让您知道选项是什么。
如果您认为这完全不可能,请告诉我!
【问题讨论】:
-
我认为最接近的(至少使用 zsh,而不是我猜这些天相似的 bash)你可以通过添加一个 --help 选项来返回其中一个中的有效选项列表“标准”布局,然后您的 shell 完成可以理解。