echo '<h1>hello, world</h1>' | firefox
cat index.html | firefox
これらのコマンドは効果がありません。
標準入力を読むことができれば、firefox
パイプを介してHTMLを送信できます。標準入力を読むことができますか?firefox
firefox
答え1
あなたはそれを使用することができますデータURI、このように:
echo '<h1>hello, world</h1>' |firefox "data:text/html;base64,$(base64 -w 0 <&0)"
&0
stdinのファイル記述子なので、stdinをエンコードbase64
してデータURIに挿入します。
他のブラウザでも同じトリックが機能します。
echo '<h1>hello, world</h1>' |chromium "data:text/html;base64,$(base64 -w 0 <&0)"
echo '<h1>hello, world</h1>' |opera "data:text/html;base64,$(base64 -w 0 <&0)"
必要に応じて、2番目の部分をbashスクリプトに入れることができます(と呼びますpipefox.sh
)。
#!/bin/bash
firefox "data:text/html;base64,$(base64 -w 0 <&0)"
これで、次のことができます。
echo '<h1>hello, world</h1>' |pipefox.sh
答え2
つまり、一時ファイルを作成して開くことをお勧めします。パイプを正しく動作させることはより複雑で、追加の利点を提供できない可能性があります。つまり、私が見つけたものは次のとおりです。
firefox
コマンドがすでに実行されているFirefoxインスタンスと通信せずに実際にFirefoxを起動している場合は、次のことができます。
echo '<h1>hello, world</h1>' | firefox /dev/fd/0
パイプがデータを保存する場所である標準入力を読み取るようにFirefoxに明示的に指示します。ただし、Firefoxがすでに実行されている場合、コマンドは名前をデフォルトのfirefox
Firefoxプロセスに渡します。それstdinを使用すると、おそらく何も提供せず、間違いなくパイプに接続されません。
さらに、Firefoxはパイプから読み取るとコンテンツをたくさんバッファリングするため、新しいHTML行を提供するたびにページを更新しません(必要に応じて)。 Firefoxを閉じて、次を実行してみてください。
cat | firefox /dev/fd/0
(参考までにこの項目が必要ですcat
。)Firefoxがページの更新を決定するまで、シェルウィンドウに長い行を貼り付け続けると、どれだけのデータが必要かを確認できます。次に、Ctrl+D新しい行をクリックしてファイルの終わりのシグナルを送信し、Firefoxのアップデートをすぐに確認します。ただし、それ以上のデータを追加することはできません。
したがって、最高のものはおそらく次のようになります。
echo '<h1>hello, world</h1>' >my_temporary_file; firefox my_temporary_file
答え3
私はこれを見つけました:
...Ubuntu Nattyにインストールするには、次のようにしました。
sudo apt-get install rubygems1.8
sudo gem install bcat
# to call
ruby -rubygems /var/lib/gems/1.8/gems/bcat-0.6.2/bin/bcat
echo "<b>test</b>" | ruby -rubygems /var/lib/gems/1.8/gems/bcat-0.6.2/bin/bcat
私はそれが独自のブラウザで動作すると思いましたが、上記のコマンドを実行すると、すでに実行されているFirefoxで新しいタブが開き、ローカルホストアドレスを指しますhttp://127.0.0.1:53718/btest
。bcat
インストールしたら、次のこともできます。
tail -f /var/log/syslog | ruby -rubygems /var/lib/gems/1.8/gems/bcat-0.6.2/bin/btee
...タブが再び開きますが、Firefoxは読み込みアイコンを表示し続けます(そして明らかにsyslogが更新されるとページも更新されます)。
ホームページbcat
でも引用ウズプール明らかに、標準入力を処理するが独自のコマンドを処理するブラウザ(おそらくこれについてもっと詳しく見なければならないでしょう)
編集:私はこのようなものが本当に必要だったので(主に動的に生成されたデータを含むHTMLテーブルを見るために(私のFirefoxは非常に遅いbcat
))、カスタムソリューションを使用しようとしました。また文字を送る、Ubuntuにpython-qt4
WebKitバインディング(および依存関係)をインストールしました。だから私はPython/PyQt4/QWebKitスクリプトを書いた。このスクリプトは同じように動作しますがbcat
(同じではありません)、btee
独自のブラウザウィンドウがあります。Qt4WebKit_singleinst_stdin.py
qwksisi
デフォルトでは、ダウンロードしたスクリプト(および依存関係)を使用して、bash
次のように端末にエイリアスを追加できます。
$ alias qwksisi="python /path/to/Qt4WebKit_singleinst_stdin.py"
...ある端末では(エイリアシング後)、デフォルトのqwksisi
ブラウザウィンドウがポップアップ表示され、もう一方の端末では(再エイリアシング後)、次のようにしてstdinデータを取得できます。
$ echo "<h1>Hello World</h1>" | qwksisi -
...次のとおりです。
-
最後にstdinを引用することを忘れないでください。それ以外の場合は、ローカルファイル名を最後の引数として使用することもできます。
デフォルトでは、ここでの問題は次の問題を解決することです。
- 単一インスタンスの問題(したがって、スクリプトの最初の実行は「デフォルトスクリプト」になり、ブラウザウィンドウを起動しますが、後続の実行はデータをデフォルトのスクリプトに渡して終了します。)
- 共有変数のプロセス間通信用(プロセスを終了すると、データがデフォルトのブラウザウィンドウに渡される可能性があります)
- マスターのタイマーアップデートは新しいコンテンツをチェックし、新しいコンテンツが到着するとブラウザウィンドウを更新します。
したがって、GtkバインディングとWebKit(または他のブラウザコンポーネント)を使用してPerlでも同じ結果を得ることができます。しかし、同じ機能を達成するためにMozillaのXULフレームワークを使用できるかどうか疑問に思います。この場合、Firefoxブラウザコンポーネントを使用できると思います。
答え4
あなたはそれを使用することができますプロセスの交換:
firefox <( echo '<h1>hello, world</h1>' )
firefox <( cat page_header.html contents.html footer.html )
firefox <( echo "<h1>Hello number "{1..23}"!</h1>" )