我正在准备一个使用 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
,读取其中的目标并将它们用于可能的选择。在这种情况下唯一的问题 - 它只读取明确定义的目标。有图案的将被忽略。
所以有两种方法可以实现你想要的:
- 手动定义每个单独的文件,而不是使用
%.md: %.org
模式。 - 使用
CMake
或其一些表兄弟可以makefile
为您创建详细信息。