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

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

3
ラインを壊したりブロックしたりせずに、複数のファイル/パイプからの入力を結合しますか?
個々の入力行がそのまま出力されるように、読み取りをブロックせずに、複数のファイルまたはパイプから入力を取得してstdoutに書き込むツールはありますか?基本的には、ラインを壊さずに、入力の束を1つの出力に多重化します。 $ combine file1 &lt;(prog2) ... &gt; nice-output.txt 出力の順番は気にしません 一部の入力にデータがある限り、ブロックしないでください それは効率的でなければなりません(つまり、私はあなたのPerlのワンライナーに反対票を投じるかもしれません;)
9 utilities  pipe 

1
UNIXパイプの反対側のプロセスの名前?
2つのプロセスがパイプで接続されている場合、 &gt; cmd1 | cmd2 cmd1パイプの反対側のプロセスの名前(またはPID)(またはPID)を確認する方法はありますcmd2か() また、その逆、cmd2の名前/ PIDを取得する方法はありますcmd1か? 私はそこにあることを知っているisatty(3)一方の側についてもう少し知るための方法があるかどうか、私は疑問に思ったので、ターミナル出力がに行く(または入力から来ている)かどうかをチェックします。
8 linux  process  pipe  proc 

1
カットのバッファリングを解除する方法は?
メールログファイルから「@ xyz.nl」で終わるメールアドレスのみを取得したい。これを達成するには、次のようにします。 # tail -f /var/log/mail.log | grep --i --line-buffered "@xyz.nl" | cut -d '@' -f 1 | cut -d '&lt;' -f 2 --line-buffered with grepは、パイプが端末と見なされないために出力をバッファリングするため、必要です。Grepは次のような行を出力します。 Aug 29 11:56:01 localhost postfix/smtp[4124]: 05491500123: to=&lt;someone@xyz.nl&gt;, relay=123.456.123.456[123.456.123.456]:25, delay=2, delays=0.4/0/0.4/1.2, dsn=2.0.0, status=sent (250 2.0.0 u7T9twxN074009 Message accepted for delivery) 最初のカットは次のようになります。 Aug 29 11:56:01 localhost …
8 pipe  cut 

1
名前付きパイプへの、または名前付きパイプからのリダイレクトが機能しないのに、猫へのパイプが機能する理由
これは、ncを使用したUnixのシンプルなエコーサーバーです。 mkfifo fifo cat fifo | nc -k -l 4458 -v | cat &gt;fifo (これに基づく) ご覧のとおり、データフローは次のように機能します。 fifo (my named pipe) | | (using cat) | v nc | | (using cat) | v fifo そしてここに質問があります:なぜこれはうまくいかないのですか? nc -k -l 4458 -v &gt;fifo &lt;fifo あなたがしようとすることに気づくだろうtelnetにlocalhostに4458あなたが得るエラーを「接続が拒否しました」。
8 pipe  socket  fifo 

5
要求に応じて出力を新しいファイルに動的にリダイレクトするツールはありますか
現在、監視ツールの出力をファイルにリダイレクトしていますが、このツールを停止せずに、(キーバインディングを使用して)要求に応じてこの出力を新しいファイルにリダイレクトします。 何かのようなもの monitor_program | handle_stdout どこでhandle_stdout、ログを特定のポイントに配置する新しいファイルを定義できます。 私はそれを簡単に書くことができることを知っていますが、すでにこれを可能にするツールがあるかどうか疑問に思っています。

1
zsh I / Oリダイレクト:リダイレクトしてからパイプします。何が起こっている?
誰かがこのコマンドで何が起こっているのか説明できますか? echo foo &gt;&amp;2 | grep foo Zsh(5.0.2)はfoo2回印刷します。これらのコマンドを実行してから、1つはstdoutに、もう1つはstderrに見えます。 { echo foo &gt;&amp;2 | grep foo } &gt;/dev/null そして: { echo foo &gt;&amp;2 | grep foo } 2&gt;/dev/null どちらもfoo一度だけ印刷します。

4
stdinのサイズを取得するにはどうすればよいですか?
大きなディレクトリを圧縮しようとしていますが、結果のファイルのサイズを正確に知りたいです。 私は使ってみましたdu: $ tar -cv dir | du -h - du: cannot access '-': No such file or directory 次に、「-」のファイルバージョンを使用してみました。 $ tar -cv dir | du -h /dev/stdin 1.0K この数値は正確ではないと確信しています。stdinのサイズを取得するにはどうすればよいですか?

4
異なるコマンドの入力を分割して結果を組み合わせる
異なるコマンドの結果を組み合わせる方法を知っています paste -t',' &lt;(commanda) &lt;(commandb) 同じ入力を別のコマンドにパイプすることがわかっている cat myfile | tee &gt;(commanda) &gt;(commandb) これらのコマンドを組み合わせる方法は?できるように cat myfile | tee &gt;(commanda) &gt;(commandb) | paste -t',' resulta resultb ファイルがあるとしましょう myfile: 1 2 3 4 新しいファイルを作りたい 1 4 2 2 3 4 3 2 6 4 1 8 使った cat myfile | tee &gt;(tac) &gt;(awk …

3
|の使用 $ variableからのパイプ文字は、それをbashの別の引数として扱います。それを脱出する方法?
私はこのようなbashスクリプトを持っています export pipedargument="| sort -n" ls $pipedargument しかし、それはエラーを与えます ls: |: No such file or directory ls: sort: No such file or directory に"| sort -n"渡された引数としての内容を扱っているようlsです。 通常のパイプコマンドとして扱われるように、どうすればエスケープできますか? 条件付きでを設定しようとしています$pipedargument。私はコマンドの異なるバージョンを条件付きで実行することができると思いますが、これを上記のように機能させる方法があるかどうか疑問に思いますか?

1
パイプとリダイレクションバインディングの優先順位は、論理和、論理積などですか?
演算子「;」、「&」、「&amp;&amp;」、または「||」の相対的なバインディング優先順位を知っています。 http://www.gnu.org/software/bash/manual/bashref.html#Lists しかし、パイプが「&amp;&amp;」と一緒に画面に入ってくると、結合の強さを理解するのに苦労し、正しいコマンドに出くわすか、あきらめます。 '|'のバインディングの優先順位とは 上記と比較して「&gt;」ですか? 私が混乱する例: ls _thumbnails/video.mp4.jpg 2&gt;/dev/null &amp;&amp; echo "thumbnail already generated. Not regenerating" \ &amp;&amp; exit \ || ffmpeg_thumbnail_create video.mp4 2&gt;/dev/null \ &amp;&amp; ls _thumbnails/video.mp4.jpg \ &amp;&amp; echo "Thumbnail successfully created" \ &amp;&amp; exit \ || echo "Thumbnail creation failed" \ | tee ~/thumbnails.log 上記の目的は、サムネイルがまだない場合にのみサムネイルを作成することです(私は毎日cronjobを実行しています)。そして、エラーがない場合(Unixの方法ではない)のffmpegの大量の出力は好きではありません。他の状況もあるので、これらのプログラムに固有の個別のステートメントまたは特別なオプションを使用するアドバイスを私に与えないでください。バインディングの優先順位を理解したい。


3
2つのプロセスを互いにパイプできますか?
で、このページから設計・4.4BSDオペレーティングシステムの実装、それはと言われます。 パイプとソケットの主な違いは、パイプが通信チャネルをセットアップするために共通の親プロセスを必要とすることです。 ただし、正しく記録した場合、新しいプロセスを作成する唯一の方法はfork、既存のプロセスに対するものです。したがって、2つのプロセスが共通の祖先を持つことができなかった方法を実際に確認することはできません。次に、プロセスの任意のペアを互いにパイプできると考えるのは正しいことでしょうか。
8 linux  process  pipe  bsd  fork 

2
ステータスバーに通知をパイプするにはどうすればよいですか?
Arch Linuxで、よりグラフィカルな最小限の通知システムを実装しようとしています。具体的には、dzen2やconkyなどのテキストベースのステータスバーを使用できるプログラムに興味を持っています。 それは(のようにパイプ通知することが可能であるlibnotify、notify-senddzen2とConkyのようなプログラムで作られたステータスバーへのもの)?私が試すことができるより簡単な、またはより文書化されたアプローチはありますか? 私は現在Openboxを使用していますが、たまにWMを切り替えるのが好きなので、WMに依存しないアドバイスをいただければ幸いです。

5
標準のコマンドラインツールを使用して、コマンド出力のすべてのIPアドレスを解決する
IPアドレスの束を含むいくつかのログファイルがあります。IPアドレスを照合して解決するプログラムを介してデータをパイプできるようになりたいです。 IE cat / var / log / somelogfile | ホスト それは次のような線を回します 10.13.13.10によってアクセスされる10:45 に 10:45 myhostname.intranetからアクセス 私の考えでは、sedとhostの組み合わせでこれを行う方法があるかもしれませんが、どうすればよいかわかりません。それを行う簡単なスクリプトを作成できることはわかっていますが、できれば組み込みのツールを使用できるようにしたいと思っています。助言がありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.