![从管道渲染 HTML](https://linux22.com/image/1344919/%E4%BB%8E%E7%AE%A1%E9%81%93%E6%B8%B2%E6%9F%93%20HTML.png)
我希望能够生成 HTML,然后将其传送到可以呈现它的程序,如下所示:
for i in 1 2 3
do
for j in a b c
do
echo "<table border="1"><tr><td>$i</td><td>$j</td></tr></table>"
done
done | /usr/bin/firefox
不幸的是,firefox 无法渲染从 stdin 传入的数据。google-chrome 也不能。lynx
可以,但是谁会使用它呢?
我尝试创建一个命名管道,在 chrome 和/或 Firefox 中打开它,然后将数据传输到该管道 - 但是当我通过命名管道发送数据时浏览器并没有更新。
是否有任何非基于文本的浏览器可以从 stdin 呈现 html?输出不需要太花哨,我最感兴趣的是让分隔数据在运行过程中更易读一些。
编辑:
我尝试使用 bash 的进程替换,例如firefox <(sh /tmp/tablegen.sh)
,但也没有用。最坏的情况是,我可以输出到临时文件,渲染,然后删除,但我更喜欢稍微优雅一点的解决方案。
答案1
NAME
bcat - browser cat
DESCRIPTION
The bcat utility reads from standard input, or one or
more files, and pipes output into a web browser. file
may be '-', in which case standard input is concatenated
at that position.
When invoked as btee, all input is written immediately
to standard output in addition to being piped into
the browser.
现在我可以运行这样的脚本:
$ python foo.py | bcat
...并且生成的 HTML 输出会在新的 Firefox 选项卡中打开!
在 Ubuntu 和其他基于 Debian 的 Linux 发行版上,您可以bcat
使用以下命令进行安装:
$ sudo aptitude install ruby-bcat