bash 中 make 命令后 TAB 扩展文件名

bash 中 make 命令后 TAB 扩展文件名

我正在准备一个使用 pandoc 将 org 文件转换为 markdown 文件的 makefile,其内容如下(注意转换规则仅供参考):


%.md: %.org 
    pandoc -t markdown -s $< -o $@ 

conversion: 
    pandoc -t markdown -s aa.org -o aa.md

两条规则都有效。例如,我可以运行:

make aa.md

或者

make conversion

成功了。更重要的是,在 bash 中我可以扩展:

make con\Tab 

使用 Tab 键自动conversion完成。不过,如果文件名具有自动补全功能会很方便。所以我想要这样的东西:假设在同一个文件夹中有一个名为filefortest.org我在 bash 中编写的文件:

make ./fil\Tab

瞧!我已经filefortest自动完成了。有可能实现这一目标吗?

附言。我知道我所要求的功能可以通过简单的 bash 脚本轻松获得:pandoc -t markdown -s $1.org -o $1.md。所以这个问题是出于我的好奇心......

答案1

是和不是。

bash 自动完成功能会查看 内部makefile,读取其中的目标并将它们用于可能的选择。在这种情况下唯一的问题 - 它只读取明确定义的目标。有图案的将被忽略。

所以有两种方法可以实现你想要的:

  1. 手动定义每个单独的文件,而不是使用%.md: %.org模式。
  2. 使用CMake或其一些表兄弟可以makefile为您创建详细信息。

相关内容