除了转换文件,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 -