除了转换文件,Asciidoctor命令行界面(CLI)还可以从标准输入(STDIN)读取内容和/或将内容写入标准输出(STDOUT)。这个功能被称为管道传输。
使用 -
标志,您可以将内容管道输送到 asciidoctor
命令。这个标志告诉Asciidoctor从标准输入(STDIN)读取源。例如:
$ echo 'content' | asciidoctor -
Note
|
任何形式的STDIN都可以使用。 |
这条命令实际上与下面的命令相同:
$ echo 'content' | asciidoctor -o - -
当从标准输入(STDIN)读取源码时,Asciidoctor没有对输入文件的引用。因此,默认情况下,它会将转换后的文本发送到标准输出(STDOUT)。
如果你想将整个文档写入一个输出文件,可以使用`-o`标志来指定。例如,以下命令将一个独立的HTML文档写入到_output.html_而不是STDOUT:
$ echo 'content' | asciidoctor -o output.html -
当你将内容通过管道传递给`asciidoctor`命令时,它不再具有文档位置的概念。因此,例如include之类的相对引用可能不会按预期工作。为了解决这个问题,你应该使用`-B`选项指定一个绝对的基础目录:
$ echo 'content' | asciidoctor -B /path/to/basedir -o output.html -
您也可以通过传递一个绝对路径给 docdir
属性来设置一个人工的文档目录:
$ echo 'content' | asciidoctor -a docdir=/path/to/docdir -o output.html -
尝试两种方法来确定哪一种更适合你的需求。
当通过 asciidoctor
命令将源数据从 STDIN 管道到 STDOUT 时,你通常只想要转换后的主体内容(即,可嵌入的 HTML)。为了生成该变体,请添加 -e
标志,即 --embedded
的简写(之前是 -s
标志):
$ echo 'content' | asciidoctor -e -
或许你也想要包括文档标题:
$ echo -e '= Document Title\n\ncontent' | asciidoctor -e -a showtitle -