在自定义手册页中包含来自外部文件或shell命令的变量?

时间:2017-07-21 00:11:42

标签: linux shell include man

我正在撰写一些自定义的man页面,我希望包含可能经常更改的内容,例如man页面的撰写日期。

例如,一个位于git repo 中,我希望每当对其进行更改时都更新man页面的日期,而不必通过手。

是否有可能#include或调用*roff文件中的shell变量,或者可能是 markdown 文件,然后使用pandoc来“编译man页面?

我知道这是一个奇怪的问题,但我没有遇到过类似的问题。

请注意,这与仅在$MANPATH man中调用.TH foo 10 "$(git log -n1 | grep Date | tail -c 31)" "$(git branch | grep "*")"的手册页不同。

I.E。,我想使用类似的东西:

pandoc

代替每次都必须手动更改日期和分支/头名称。无论是在 markdown 中,还是在roff或其他内容,或仅在{{1}}文件中,我都可以。

2 个答案:

答案 0 :(得分:2)

我从你的示例行看到你正在使用Git - 我相信你可以使用' pre-commit' git hook(基本上是在处理提交之前运行的脚本)在每次提交时更新联机帮助页的内容(并进行更改)。

例如,您可以将以下命令放在.git / hooks / pre-commit文件中,以便在您提交时更新联机帮助页的内容:

sed -i "" "s/^.TH foo 1 \".*/.TH foo 1 \"$(date)\"/" path/to/manpage.roff git add path/to/manpage.roff

请注意,该路径是相对于git存储库的根目录。

答案 1 :(得分:2)

考虑使用文档生成器语言(如asciidoc)编写man页面的内容,该语言具有大多数所需功能。 asciidoc 格式可以包含外部输入文件,并根据需要随时更改各种动态

要包含shell脚本,请参阅Substitutions inside literals in Asciidoc

或者可以使用shell脚本生成配置文件,然后包含该文件。

如果目前这个答案含糊不清,请提前道歉,因为它更像是软件推荐(没有任何实际代码),而不是真正的答案。