将`dot` 生成的图形复制到剪贴板(例如 png)

TJ *_*lis 4 linux png clipboard bash graphviz

我经常发现自己想要制作一个快速图表来说明依赖关系或过程。 dot这样做很好,但是如果我可以将渲染图直接生成到剪贴板而不是生成临时文件,那会方便得多。

理想情况下,我想要类似的东西

echo "graph {a--b; b--c;}" | dot -Tpng | xclip
Run Code Online (Sandbox Code Playgroud)

这个命令写得不太好 - 复制的数据不会粘贴到通常接受粘贴图像的应用程序中。

有什么技巧可以dot产生可粘贴到应用程序中的输出吗?

作为切线,也许是为了解决我问题根源的知识差距,是什么让图像“可粘贴”开始?我上面的命令与在 Web 浏览器中右键单击图像并选择 之间有什么区别Copy Image

Mar*_*ler 5

关闭。您需要告诉 xclip 数据的类型,并且大多数程序都需要XA_CLIPBOARD用于通常的 ctrl-v 粘贴:

echo "graph {a--b; b--c;}" | dot -Tpng | xclip -selection clipboard -t image/png
Run Code Online (Sandbox Code Playgroud)

一个简单的 shell 函数可能是包装所有这些的好主意。

顺便说一句,如果你粘贴到Inkscape中(也可能像网络编辑不少东西),SVG可能比PNG更好的选择,dot -Tsvg | xclip -selection clipboard -t image/svg