从管道渲染 HTML

从管道渲染 HTML

我希望能够生成 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

来自其中一个答案这个问题我发现bcat

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

相关内容