我需要开发一个实用程序,该实用程序将采用如下命令行参数:

$ lsm  -g <group> -t <type> -d <device>

我的项目经理希望当我们键入诸如lsm -g之类的任何参数并按Tab时,将调用一个函数来运行数据库查询并为用户获取有关选项值的帮助。

与终端在这种情况下的行为类似:
$ cd <tab>
.bash_history                   .local/
.bash_logout                    .log-report.log.swp
.bash_profile                   .macromedia/
.bashrc                         .mozilla/
.cache/                         Music/
.config/                        .mysql_history
.dbus/                          .nautilus/
Desktop/                        .opera/
Documents/                      .orc/
Downloads/                      .p2/
.eclipse/                       Pictures/

我尝试了以下方法:
  • 使用fork()创建一个 child 来调用帮助功能。
  • 使用execv()使用单独的二进制文件运行帮助功能。

  • 但是两者都要求lsm正在运行。

    我不确定如何进一步进行。

    最佳答案

    正如各种注释者所指出的那样,制表符补全是在Shell中实现的,而不是在将要执行的程序中实现的。

    大多数 shell 都有用于实现自定义制表符完成的框架。对于bash,它是在readline库的帮助下实现的。 bash manual中有大量文档,互联网上有各种各样的教程,例如this one from Debian(不是认可,而只是Google快速搜索的结果)。

    关于c - Shell中的自定义完成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34034374/

    10-12 05:29