私は巨大なgzip圧縮ファイルを持っていてそれを読むことができるプログラム(この場合は4s-import)が欲しいです。まず、ファイルを解凍してから、ファイルパスを引数として使用してプログラムを呼び出すのに時間がかかります。次のことができますか?
zcat huge.gz | 4s-import <SOME MAGIC>
SOME-MAGICがstdinを含む抽象ファイルへのパスと同じ場合はどこですか?
それ以外の場合は、より遅く、より多くのディスク容量を消費する代替方法は次のとおりです。
zcat huge.gz > huger
4s-import huger
答え1
(または)手続き型代替演算子を使用できます<()
。bash
zsh
4s-import <(zcat huge.gz)
この演算子は一時的なfifoを生成し/dev/fd/NN
、それを<(.)
文字列に置き換えます/dev/fd/NN
。4s-import
これで/dev/fd/NN
fifoを開いて読むことができ、bash
実行はzcat huge.gz
出力を/dev/fd/NN
。
答え2
多くのプログラムには
-
標準入力があります。あなたがこれを行う場合は「組み込み」になっているので、使用してください。/dev/stdin
または/dev/fd/0
ファイルとして試すこともできます。3番目のオプションは
mkfifo
fifo特殊ファイルを生成することです。あるシェルではデータ(たとえばgunzip > your_fifo_file
)をパイプで接続し、もう一方のシェルではfifoをファイルとしてプログラムを呼び出します。