0

a < b > cをパイプするということは、標準入力ではなくプログラム a への入力にファイル b のデータを使用し、プログラム b の出力を標準出力ではなくファイル c に書き込むことを意味することを理解しています。

私が理解していないのは、標準入力ではなくプログラム a への入力にファイル b のデータを使用し、プログラム a の出力を標準出力ではなくファイル c に書き込むパイプ コマンドを与える方法です。

この場合、b はどこに配置されますか?

標準入力には a < b がありますが、標準出力を取得する方法がわかりません。

どうもありがとう!

4

3 に答える 3

2

これを行う必要があります:

a < b > c

あなたの質問で述べたように。これは、あなたが意図していることをしません。b を a の入力として、c を b の出力として使用しません。これは、a の入力として b を使用し、a の出力として c を使用します。

于 2013-04-24T01:58:44.280 に答える
1

これは実際にはパイピングではなく、入力ストリームと出力ストリームのリダイレクトです。

パイピングは、あるプロセスの標準出力を取得し、それを別のプロセスの標準入力に接続します。たとえば、次のようになります。

seq 1 5 | sort -r

これは、1 から 5 までの数字を (その順序で) 生成し、次のトランスクリプトのように逆の順序で並べ替えます。

pax> seq 1 5
1
2
3
4
5

pax> seq 1 5 | sort -r
5
4
3
2
1

シーケンス:

prog <infile >outfile

progプロセスでプログラムを実行し、ファイルから標準入力を取得して、標準出力をinfile ファイルに送信しoutfileます。関与するプロセスは 1 つだけです。

「標準入力の代わりにファイル b のデータをプログラム a への入力に使用し、プログラム a の出力を標準出力の代わりにファイル c に書き込む」には、次のようにします。

a <b >c

あなたが持っているのとまったく同じです。私の例では、リダイレクト文字 (<または) とファイル名の間にスペースがないことに注意してください。「出力をファイルに送信する」ことを意味する>ため、これにより関係が明確になると思います。>xyzzyxyzzy

何をするかについての誤った主張a < b > c(「ファイルbのデータを標準入力の代わりにプログラムaへの入力に使用し、プログラムbの出力を標準出力の代わりにファイルcに書き込む」)は、個別のコマンドに適しています:

a <b ; b >c

abプログラムの間に実際の接続はありません。

于 2013-04-24T02:14:04.900 に答える
1

あなたの理解は間違っています。

次のようなコマンド

a <b >c

コマンドは 1 つだけですa。への入力aは file からbであり、出力は file ですc

コマンドb(またはc) が実行されていません。

要するに、そのコマンドはすでにあなたが望むことをしています。

于 2013-04-24T02:01:28.550 に答える