Ich möchte HTML generieren und es dann an ein Programm weiterleiten können, das es rendert, etwa so:
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
Leider kann Firefox keine Daten rendern, die von stdin eingespeist werden. Das kann Google Chrome auch nicht. lynx
Aber wer will das schon benutzen?
Ich habe versucht, eine benannte Pipe zu erstellen, diese in Chrome und/oder Firefox zu öffnen und dann Daten dorthin weiterzuleiten – aber der Browser wurde nicht aktualisiert, als ich Daten durch die benannte Pipe gesendet habe.
Gibt es nicht textbasierte Browser, die HTML von der Standardeingabe aus rendern? Die Ausgabe muss nicht schick sein, ich bin hauptsächlich daran interessiert, abgegrenzte Daten im Handumdrehen etwas lesbarer zu machen.
Bearbeiten:
Ich habe versucht, die Prozesssubstitution von Bash zu verwenden, z. B. firefox <(sh /tmp/tablegen.sh)
, aber das hat auch nicht funktioniert. Im schlimmsten Fall könnte ich in eine temporäre Datei ausgeben, rendern und dann löschen, aber ich würde eine etwas elegantere Lösung bevorzugen.
Antwort1
Aus einer der Antworten aufdiese Frageich fandbcat
:
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.
Jetzt kann ich ein Skript wie dieses ausführen:
$ python foo.py | bcat
... und die resultierende HTML-Ausgabe wird in einem neuen Firefox-Tab geöffnet!
Unter Ubuntu und anderen Debian-basierten Linux-Distributionen können Sie die Installation bcat
mit diesem Befehl durchführen:
$ sudo aptitude install ruby-bcat