从管道渲染HTML


15

我希望能够生成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传入的数据。谷歌浏览器都不能。lynx可以,但是谁想使用它?

我尝试创建一个命名管道,在chrome和/或firefox中打开该管道,然后将数据管道传输到该管道,但是当我通过该命名管道发送数据时,浏览器没有更新。

是否有任何非基于文本的浏览器会从stdin渲染html?输出并不需要让人眼花,乱,我最感兴趣的是使定界数据更易于读取。

编辑:

我尝试使用bash的进程替换,例如firefox <(sh /tmp/tablegen.sh),这也不起作用。最坏的情况是,我可以输出到一个临时文件,进行渲染,然后删除,但是我更喜欢一个更优雅的解决方案。


1
类似的问题在这里:unix.stackexchange.com/questions/24931/...
WMZ

良好的联系;很好地证实了我的怀疑,即使用临时文件是唯一的方法。
巴顿·奇滕登

Answers:


14

这个问题的答案之一中,我发现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

您好,从2019年开始,上述安装无效,但有效sudo gem install bcat。:-)
常规
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.