タグ付けされた質問 「pipe」

Unixパイプは、2つのプロセスのファイル記述子を接続します。パイプは、<unistd.h>で宣言されたPOSIX pipe()関数で作成されます。シェルは、「|」を使用してプロセス間にパイプを作成します。

13
パイプのバッファリングをオフにします
2つのコマンドを呼び出すスクリプトがあります。 long_running_command | print_progress long_running_commandプリントは進歩が、私はそれに不満です。print_progressより良いものにするために使用しています(つまり、進行状況を1行で出力します)。 問題:stdoutにパイプを接続すると、4Kバッファーもアクティブになります。素敵な印刷プログラムには何も...何も...何も... たくさんありません... :) 4Kバッファーを無効にするにはどうすればよいですかlong_running_command(いいえ、ソースがありません)?
395 shell  pipe  buffer 


10
いくつかの出力の各行から先頭と末尾の空白をトリミングするにはどうすればよいですか?
出力の各行から先頭と末尾のスペースとタブをすべて削除したいと思います。 trim出力をパイプすることができるような簡単なツールはありますか? サンプルファイル: test space at back test space at front TAB at end TAB at front sequence of some space in the middle some empty lines with differing TABS and spaces: test space at both ends

1
Bash:「> |」は何をしますか?
これを書き留めたところを見ました。 $ some-command &gt;| /tmp/output.txt 垂直パイプは、1つのコマンドの出力を別のコマンドに「パイピング」する標準リダイレクトで使用されますが、このシナリオの&gt;|場合と同じように、実際にはまったく役に立ちませ&gt;んか?

6
パイプバッファーの大きさは?
のコメントとして、makefileの「| true」がユーザーcjmが書いた「|| true」と同じ効果がある理由について混乱しています。 避けるべきもう一つの理由| trueは、コマンドがパイプバッファーをいっぱいにするのに十分な出力を生成した場合、trueを待ってブロックすることです。 パイプバッファーのサイズを調べる方法はありますか?
146 pipe  buffer 

7
前のコマンドの出力を引数としてnextに渡します
データを標準出力(command1 -p=aaa -v=bbb -i=4)に出力するコマンドがあります。出力行には次の値を設定できます。 rate (10%) - name: value - 10Kbps その「レート」を保存するために、その出力をgrepしたいです(ここでパイプが役立つと思います)。そして最後に、そのレートを2番目のコマンドのパラメーターの値にしたいと思います(言いましょうcommand2 -t=${rate}) 私の側には注意が必要です。パイプ、grep、sedなどの使用方法を詳しく知りたいと思います。 私はそのような組み合わせをたくさん試しましたが、私はこれらを混同しています: $ command1 -p=aaa -v=bbb -i=4 | grep "rate" 2&gt;&amp;1 command2 -t="rate was "${rate}

4
「catファイル| ./binary」および「./binary <file」?
バイナリ(変更できない)があり、次のことができます。 ./binary &lt; file 私もできる: ./binary &lt;&lt; EOF &gt; "line 1 of file" &gt; "line 2 of file" ... &gt; "last line of file" &gt; EOF しかし cat file | ./binary エラーが発生します。パイプで動作しない理由がわかりません。3つの場合すべてで、ファイルのコンテンツはバイナリの標準入力に(さまざまな方法で)与えられます。 bashはファイルを読み取り、バイナリの標準入力に渡します bashはstdinから(EOFまで)行を読み取り、それをバイナリの stdinに渡します catはファイルの行を読み取ってstdoutに書き込み、bashはそれらをバイナリの stdinにリダイレクトします 私が理解している限り、バイナリはこれら3つの違いに気付かないはずです。3番目のケースが機能しない理由を誰かが説明できますか? ところで:バイナリによって与えられるエラーは次のとおりです。 20170116 / 125624.689-U3000011スクリプトファイル ''を読み取れませんでした、エラーコード '14'。 しかし、私の主な質問は、その3つのオプションを持つプログラムにどのような違いがあるのかということです。 ここではいくつかの詳細については、以下のとおりです。私は再びそれを試してみましたstraceの 多少の誤差は、実際にあったESPIPE(不正がシーク)からのlseek 続く(不良アドレス)EFAULTから読み込む右のエラーメッセージの前に。 私は(一時ファイルを使用せずに)Rubyスクリプトでコントロールしようとしたバイナリはの一部であるcallapiからAutomic(UC4) 。


3
一時データ用の疑似ファイル
比較的短い文字列データ(ただし、数行になる可能性があります)を、ファイル(wdiffなど)からの入力のみを繰り返し受け入れるコマンドラインプログラムに送りたいことがよくあります。確かに、1つまたは複数の一時ファイルを作成し、そこに文字列を保存して、ファイル名をパラメーターとしてコマンドを実行できます。しかし、データが実際にディスクに書き込まれる場合、この手順は非常に非効率的であり、この手順を何度も繰り返すと、必要以上にディスクに損害を与える可能性があるように見えます。 wdiffへのファイル。これを回避する推奨方法はありますか?たとえば、パイプなどの擬似ファイルを使用して、実際にディスクにデータを書き込むことなく一時的にデータを保存します(または、クリティカルな長さを超える場合にのみデータを書き込みます)。wdiffは2つの引数を取り、wdiff &lt;"text"。
97 bash  files  pipe 

4
パイプコマンドはどの順序で実行されますか?
シェルがパイプされたコマンドを実際に実行する方法について、私は本当に考えたことがありません。パイプの考え方として、「あるプログラムの標準出力が別のプログラムの標準入力にパイプされる」といつも言われてきました。当然のことながら、私は言う場合、A | B、Aが最初に実行され、次にBがAの標準出力を取得し、Aの標準出力を入力として使用します。 しかし、psで特定のプロセスを検索する場合、コマンドの最後にgrep -v "grep"を含めて、grepが最終出力に表示されないようにすることに気付きました。これは、コマンドps aux | grep "bash" | grep -v "grep"。これは、psがgrepが実行されていることを知っていたため、psの出力に含まれることを意味します。しかし、出力がgrepにパイプされる前にpsの実行が終了した場合、grepが実行されていることをどのようにして認識しましたか? flamingtoast@FTOAST-UBUNTU: ~$ ps | grep ".*" PID TTY TIME CMD 3773 pts/0 00:00:00 bash 3784 pts/0 00:00:00 ps 3785 pts/0 00:00:00 grep
89 pipe  ps 

5
プロセス置換とパイプ
私は次を理解する方法を疑問に思っていました: コマンドのstdoutを別のコマンドのstdinにパイプすることは強力な手法です。しかし、複数のコマンドの標準出力をパイプする必要がある場合はどうでしょうか?これがプロセス置換の出番です。 言い換えると、プロセス置換はパイプでできることは何でもできますか? プロセス置換は何ができますが、パイプはできませんか?

4
diffにパイプできませんか?
最初に手動でダウンロードすることなく、賢く、リモートファイルとローカルファイルを比較したかったのです。リモートファイルの内容を取得するには ssh user@remote-host "cat path/file.name" しかし、それを配管 diff ssh user@remote-host "cat path/file.name" | diff path/file.name 私にこれを与えます: diff: missing operand after `path/file.nae' diff: Try `diff --help' for more information. sshキーを設定しているため、パスワードの入力を求められません。これの回避策は何ですか?

6
あるサーバーの標準出力を別のサーバーの標準入力にパイプできますか?
stdoutあるCentOSサーバーではstdin、別のCentOSサーバーでパイプする必要があります。これは可能ですか? 更新 ScottPack、MikeyB、およびjofelにはすべて有効な回答があります。私の質問ではセキュリティを要件として指定していませんが、安全であることは常に良いことだからです。ただし、他の2人のフェローの提案も有効です。
74 pipe  stdout  stdin 

7
STDINをカラーコードを削除してSTDOUTに渡すプログラム
出力をカラーで生成するコマンドがあり、カラーコードを削除したファイルにパイプで送信したいと思います。catカラーコードを削除する以外は同じように機能するコマンドはありますか?私はこのようなことをする予定です: $ command-that-produces-colored-output | stripcolorcodes &gt; outfile
64 colors  pipe  filter 

8
2つのプログラム間で双方向パイプを作成する方法は?
誰もが2つのプログラム(stdout最初のプログラムとstdin2番目のプログラムのバインド)間で単方向パイプを作成する方法を知っていますfirst | second。 しかし、双方向パイプ、つまりクロスバインドstdinとstdout2つのプログラムの作成方法は?シェルでそれを行う簡単な方法はありますか?
63 shell  pipe 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.