代码之家  ›  专栏  ›  技术社区  ›  VERBOSE

命令行中带有回声窗口的管道点图形viz给出损坏的输出

  •  0
  • VERBOSE  · 技术社区  · 1 年前

    我正试图从内联stdin(如 documentation ) :

    C:\Users\VERBOSE\Desktop>echo 'digraph { a -> b }' | dot -Tsvg > output.svg
    

    令人惊讶的是,这提供了两个文件:

    enter image description here

    这个 output.svg 在浏览器中显示: This XML file does not appear to have any style information associated with it. The document tree is shown below.

    为什么我打开 b 在记事本中的文件,我看到这个: 'digraph { a - }'

    我不是窗户专家,但我认为这与 > 这是无法逃脱的。

    一个重要的细节是,当我手动创建一个点文件并运行下面的命令时,它可以工作:

    C:\Users\VERBOSE\Desktop>dot file.dot -Tsvg -o output2.svg
    

    enter image description here

    你们能提出一个解决方案吗?我试着逃离 > 删除引号后,命令运行时不会出现错误,但不会创建svg文件:

    C:\Users\VERBOSE\Desktop>echo digraph { a -^> b } | dot -Tsvg -o "output3.svg"
    

    更新 : 我文章中的第一个命令可以很好地与PowerShell配合使用:

    PS C:\Users\VERBOSE\Desktop> echo 'digraph { a -> b }' | dot -Tsvg > output.svg
    

    enter image description here

    1 回复  |  直到 1 年前
        1
  •  2
  •   albert    1 年前

    我认为这一切都与所用炮弹的可能性有关。 文档中的示例针对*nux(参见 $ 作为提示)。 “正常”的Windows命令行非常有限,要转义字符,需要 ^ (另请参阅 https://en.wikipedia.org/wiki/Escape_character#Windows_Command_Prompt 用于转义字符)。 这还不能正常工作,因为管道符号将获得 > 字符,所以我们必须确保管道符号之后的结果再次得到正确解释,所以我们需要有3倍 ^ 因为我们也需要逃离 ^ 穿过管道。

    所以这个简单例子的结果是:

    echo digraph { a -^^^> b } | dot -T svg > output.svg