引数として与えられたファイルからデータを読み取ることを期待するプログラムにデータをストリーミングできますか? -- bash フィールド と shell フィールド と io-redirection フィールド と arguments フィールド unix 関連 問題

How can I stream data to a program that expects to read data from a file that is given as a argument?


17
vote

問題

日本語

私は巨大な笑いファイルを持っていて、私はそれを読むためにプログラム(この場合は4Sインポート)を望みます。最初にファイルを解凍してから、ファイルへのパスを引数としてファイルへのパスでプログラムを呼び出すのに時間がかかります。

のようなことをすることが可能でしょうか
 <コード> zcat huge.gz | 4s-import <SOME MAGIC>   

stdinを含む抽象ファイルへのパスのような場所のようなものですか?

それ以外のことが必要なのは、遅くてより遅くディスク容量を消費しています。

 <コード> zcat huge.gz > huger 4s-import huger   
英語

I have a huge gzipped file and I want a program (4s-import in this case) to read it. It takes a lot of time to first unzip the file and then call the program with the path to the file as an argument. Would it be possible to do something like:

zcat huge.gz | 4s-import <SOME MAGIC> 

where SOME-MAGIC is like a path to an abstract file that contains stdin?

The much slower and more disk space consuming alternative that I have to do otherwise is:

zcat huge.gz > huger 4s-import huger 
           

回答リスト

33
 
vote
vote
ベストアンサー
 

プロセス置換演算子<コード>のの (または<コード> 998877665444332 )を使用できます。

 <コード> 4s-import <(zcat huge.gz)   

この演算子は、一時的FIFO <コード> 99887665544334 を作成し、<コード> 9988776544335 を文字列 998877665444336 に置き換えます。 <コード> 4s-import <コード> /dev/fd/NN を開くことができ、そのFIFOから読み取ることができますが、 998877666543310 998877665543310 を送信します。 <コード> 9988766554433311 。

 

You can use the process substitution operator <() of bash (or zsh):

4s-import <(zcat huge.gz) 

This operator will create a temporary fifo /dev/fd/NN and replace <(.) with the string /dev/fd/NN. 4s-import now can open /dev/fd/NN and read from that fifo, while bash will run zcat huge.gz, which sends its output to /dev/fd/NN.

 
 
17
 
vote
  1. 多くのプログラムには、標準入力として<コード> 9988776666643312 があります。あなたのことができる場合は、それを「組み込み」として使用してください。

  2. <コード> 998877665443313 または<コード> 998877654433314 をファイルとして使用することもできます。

  3. 3番目のオプションは、<コード> bash5 を使用してFIFO特殊ファイルを作成することです。一方のシェルでは、データ(例えば 998877665443316 )にパイプします。もう一方のシェルの中に、ファイルとしてFIFOを使用してプログラムを呼び出します。

 
  1. Many programs have a - as standard input. If yours does, use that as it's "builtin".

  2. You can also try using /dev/stdin or /dev/fd/0 as a file.

  3. A third option is to use mkfifo to create a fifo special file. In one shell you pipe in your data (eg. gunzip > your_fifo_file), while in the other you call your program with the fifo as the file.

 
 

関連する質問

2  プログラムの引数を区切る必要があるのは何が決まりますか?  ( What determines how program arguments needs to be separated ) 
kill ユーティリティは、スペース文字と改行の両方で区切られた引数を受け入れることができることに気づいた。 <事前> <コード> setopt AUTO_CD setopt CORRECT_ALL setopt EXTENDED_GLOB # Histo...

114  $ *と$ @の違いは何ですか?  ( What is the difference between and ) 
次のコードを考慮してください。 <事前> <コード> socat TCP-LISTEN:22,fork TCP:192.168.0.15:5900 0 出力: 1 2 3 4 1 2 3 4 私はKSH88を使用していますが、私は他の一般的な殻に...

5  filename引数を使用する方法またはデフォルトをSTDIN、STDOUT(短い)  ( How to use filename arguments or default to stdin stdout brief ) 
BASHスクリプト内の引数としてファイル名を洗浄、より柔軟な方法で、入力および出力ファイル名の0,1、または2引数を取得します。 args = 0のとき、stdinから読み、stdout に書き込みます。 args = 1のとき、$ 1から読む、std...

-1  多くのCLIアプリが単一の " - "議論をするのはなぜですか? [重複]  ( Why do many cli apps take a single argument ) 
この質問はすでにここで回答を持っています 閉じられた 8年前>。 可能な重複: " - "(ダブルダッシュ)とはどういう意味ですか? 単一の " - "引数を取るコマンドラインツールが多数あります。例えば: <コード> g...

5  引数をコンソールアプリケーションに渡すさまざまな方法  ( The different ways of passing the arguments to console applications ) 
コンソールアプリケーションがなぜ引数を取得するのはなぜ次のいずれかの引数を取得します。 <事前> <コード> cat /etc/xinetd.d/tftp service tftp { disable = no socket_type ...

5  どのようにしてリテラルの "--help"を見つけるためにfgrepを入手しますか?  ( How do you get fgrep to find the literal help ) 
<事前> <コード> sudo sh VBoxLinuxAdditions.run16 FGREP --HELPの全体を返します。これは、それらの中にリテラル "--help"を持つ行だけを返すのですか? 引用符は何もしない、 cd /run/media/...

8  次のコマンドの引数としてPiped Stdinを使用してください  ( Use piped stdin as argument to next command ) 
他のコマンドのパラメータとしてコマンドの出力を使用する方法私の具体例は、 9988776665443434 を使用してプロセスの pid を取得し、 99887766666543336 オプションに渡します。 /コード>。 次のようなものを試してみました:...

4  bash:引数が提供されなかった場合は、表示プロンプトを表示します  ( Bash show prompts if arguments werent provided ) 
スクリプトのプロンプトと引数を同時にサポートする最善の方法は何ですか?引数が指定されていない場合はプロンプトを表示したいです。 これより良い/短いものはありますか? © <事前> <コード> PROJECT_DIR=$1 SITE_NAME=$2 ADMIN...

3  同様のタスクのシーケンスを実行するときにプログラムの成功を決定する方法は?  ( How to determine program success when running a sequence of similar tasks ) 
<コード> 99887766666643333 のようなプログラムと同様に、同じ親コマンドを共有する一連のCLIツールを作成しています。 <事前> <コード> testdisk34 アクション動詞の1つ、<コード> 9988766654443335 は、U...

10  AS-ISで機能する引数を渡します  ( Pass arguments to function exactly as is ) 
次の機能を持っています: <コード> bar() { echo $1:$2; } 私はこの関数を 関数、 9988776665444336 からこの関数を呼び出しています。 <コード> 99887665544337 自体は次のように呼び出されます。 ...

2  入力ファイルストリームをコマンドに入力します  ( Input file stream to command ) 
ファイルの代わりにこのコマンドにファイルストリームを送信することはどのように送信することもできますか? <コード> mv6 ファイルストリームはPHPの文字列からのものです。 ...

0  stdinまたは引数を読み込むためのBash Scriptingのループ  ( While loop for bash scripting to read either stdin or arguments ) 
このスレッドからの受け入れられた答えで遊んでいます: 読み取りスクリプトパイプまたはコマンドラインargsからのファイル名? 下記のスクリプトを使用する場合は、efetch( ftp:// ftp) .ncbi.nlm.nih.gov / entrez / ...

0  このパイプコマンドがこの特別なBashスクリプトで機能しないのはなぜですか?  ( Why doesnt this pipe command work at this special bash script ) 
そのスクリプト<コード> test.sh4 は、使用したパイプコマンドの後に機能しません。結果は何も示していません。なぜ? <コード> #!/bin/bash fun=$( echo $1 ) echo "$fun" コマンドは次のとおりです。 <...

0  bash:引数のリストとして機能するためのビルド配列を与えますか?  ( Bash give builded array to function as a list of argument ) 
私はBorgBackupでこの問題を抱えていますが、反応が同じであるため、私の例で<コード> watch3 を使用します。 それぞれにプレフィックスを追加して、その配列を 998877665443314 にすることで、引数の配列を作成します。しかし、<コード>...

2  パラメータの順序を正しく識別する方法  ( How to correctly identify the order of parameters ) 
これは私の課題です。タスクは、入力ファイルから最長の行を出力することです。 nの引数がない場合、値nのデフォルトは5です。パラメータにファイルがない場合は、標準入力が使用されます。 2つ以上のファイルがある場合は、名前ファイルを出力します。出力行は元のファイル...

2  Bash変数の種類を侵略できますか?  ( Can i introspect the type of a bash variable ) 
日付を出力する関数を書いています。 99887766544330 に引数を環境変数で供給して、ユーザーが出力をカスタマイズすることを許可します。フォーマット文字列の空白を保存するために、このような配列でargsを受け入れたいのですが。 <事前> <コード> ...

8  LinuxのPSコマンドのunix-、bsd-、gnu-options。彼らはどこ出身ですか?  ( Unix bsd gnu options in linuxs ps command where are they from ) 
Ubuntuの 998877666544330 コマンドのマニュアルでは、このテキストがあります。 このバージョンのPSはいくつかの種類のオプションを受け入れます。 <事前> <コード> ssh1 ubuntuで組み込まれているコマンドが異なるオペレ...

0  そうでなければ実行されていません  ( Else not executing ) 
スクリプトでは、データをより読みやすい形式に変換します。しかし私は問題を抱えています。引数が入力されていない場合は、スクリプトだけで、私が行ったことがあるファイル名を入力してください。しかし、何らかの理由で、それはテストされたときにそれを表示しません。引数が0...

3  BASH変数にスペースを含む引数を持つ引数ベクトルを配置する方法  ( How to put an argument vector with an argument containing spaces in a bash varia ) 
998877665443312 変数?にある引数ベクトルを記憶する方法 たとえば、<コード> 998877665443313 を印刷する<コード> 998877665443314 1.Sh <コード> //server_ip/G440320 ...

5  シェルスクリプトオプションはサブコマンドに渡します  ( Shell script options pass through to sub command ) 
998877666544330 を使用して 9988776665444331 に設定するためのラッパー・スクリプトを書いています。それはこれまでにうまく機能しています。 しかし私のシェルスクリプトに別のオプションを追加することは、その内容をmysqldum...

84  「MV:引数リストが長すぎる」の解決?  ( Solving mv argument list too long ) 
並べ替えを必要とする百万のファイルを持つフォルダを持っていますが、 mv はこのメッセージを常に出力します。 <事前> <コード> setterm -blank1 このコマンドを使用して、拡張子のファイルを移動します。 <事前> <コード> setterm ...

1  オプションとオペランドの間の注文?  ( Order between options and operands ) 
ユーティリティプログラムを使用する場合、オプション(およびそのオプション引数)やオペランドを指定することができます。 ほとんどの場合(一部の標準(POSIX?))に準拠しているという意味で オプションの間の順序は重要ですか? オペランドの問題の間の注文は?...

0  Bash連想配列をJQフィルタに引数として渡します  ( Pass bash associative arrays as argument to jq filter ) 
私はいくつかの場所データを使って作業しており、米国の郵便番号を使ってAPIを照会して結果を返します。 <事前> <コード> ${States[GA]}1 これを解析するには、全状態の名前を含む出力を作成する必要があります。 <コード> ${States[GA...

2  スペースを使用して引数を渡してスクリプトに引用符を引用します(すべてを引用しない)  ( Passing arguments with spaces and quotes to a script without quoting everything ) 
コマンドラインでは、次のように機能します。 <事前> <コード> #/bin/sh MP3_URL=$1; shift FILENAME=$1; shift if [ ! -f "${FILENAME}.mp3" ]; then curl --lo...

12  CP:コピーユーティリティの最大ソースファイル番号引数  ( Cp max source files number arguments for copy utility ) 
/ src / の下にあるファイル数の数があると考える <事前> <コード> mount -t ntfs-3g /dev/sdg1 /media/Downloads 0 ファイル数 9988766655443331 は正常に処理されますか? ...

関連する質問

2  プログラムの引数を区切る必要があるのは何が決まりますか? 
114  $ *と$ @の違いは何ですか? 
5  filename引数を使用する方法またはデフォルトをSTDIN、STDOUT(短い) 
-1  多くのCLIアプリが単一の " - "議論をするのはなぜですか? [重複] 
5  引数をコンソールアプリケーションに渡すさまざまな方法 
5  どのようにしてリテラルの "--help"を見つけるためにfgrepを入手しますか? 
8  次のコマンドの引数としてPiped Stdinを使用してください 
4  bash:引数が提供されなかった場合は、表示プロンプトを表示します 
3  同様のタスクのシーケンスを実行するときにプログラムの成功を決定する方法は? 
10  AS-ISで機能する引数を渡します 
2  入力ファイルストリームをコマンドに入力します 
0  stdinまたは引数を読み込むためのBash Scriptingのループ 
0  このパイプコマンドがこの特別なBashスクリプトで機能しないのはなぜですか? 
0  bash:引数のリストとして機能するためのビルド配列を与えますか? 
2  パラメータの順序を正しく識別する方法 
2  Bash変数の種類を侵略できますか? 
8  LinuxのPSコマンドのunix-、bsd-、gnu-options。彼らはどこ出身ですか? 
0  そうでなければ実行されていません 
3  BASH変数にスペースを含む引数を持つ引数ベクトルを配置する方法 
5  シェルスクリプトオプションはサブコマンドに渡します 
84  「MV:引数リストが長すぎる」の解決? 
1  オプションとオペランドの間の注文? 
0  Bash連想配列をJQフィルタに引数として渡します 
2  スペースを使用して引数を渡してスクリプトに引用符を引用します(すべてを引用しない) 
12  CP:コピーユーティリティの最大ソースファイル番号引数