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

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

3
検索をgrep -vにパイプする
特定の種類で、特定の文字列を含まないすべてのファイルを検索しようとしています。findをgrep -vにパイプすることでそれを試みています 例: find -type f -name '*.java' | xargs grep -v "something something" これは機能しないようです。findコマンドで見つかったすべてのファイルを返すだけのようです。私がやろうとしているのは、基本的に特定のファイル名に一致するすべての.javaファイル(たとえば、SessionPb.javaのように「Pb」で終わる)を見つけ、その中に「extends SomethingSomething」がないことです。 私の疑いは、私がそれを間違っているということです。では、コマンドはどのように見えるのでしょうか?
18 grep  find  pipe 

5
コマンドオプションでファイルからではなくパイプから読み取ったデータを使用する
人の定義によると、このコマンドはファイルから入力を取得します。 $ command -r FILENAME FILENAMEを使用して生成されたファイル名のリストを含むファイルであるとしますls &gt; FILENAME。 代わりに、コマンドにls直接結果を与えるにはどうすればよいですか?私の頭の中で、このようなことができるはずです: $ ls | command -r しかし、そうではなく、の出力はls引数としてフックされません。出力: Usage: command -r FILENAME error: -r option requires an argument 目的の効果を得るにはどうすればよいですか?
18 bash  pipe 

4
パイプを使用したgrepがここで機能しないのはなぜですか?
次のコマンドがあります: find / -name libGL.so.1 「Permission denied」で多くの行を返します。そのような行を除外したいので、次を追加しました: find / -name libGL.so.1 | grep -v 'denied' しかし、出力は同じです-私grep -v 'denied'は行をフィルタリングしませんPermission denied。私は多くのバリエーションを試し、grepチュートリアルを調べましたが、問題を理解することはできません。助言がありますか?
18 shell  grep  pipe 

3
tee + cat:出力を数回使用し、結果を連結します
たとえば、あるコマンドを呼び出すとecho、そのコマンドの結果を他のいくつかのコマンドで使用できますtee。例: echo "Hello world!" | tee &gt;(command1) &gt;(command2) &gt;(command3) catを使用すると、いくつかのコマンドの結果を収集できます。例: cat &lt;(command1) &lt;(command2) &lt;(command3) 私は両方のことを同時に行うことができるようにしたいのでtee、何か他の出力(たとえばecho私が書いたもの)でそれらのコマンドを呼び出してから、単一の出力ですべての結果を収集することができますcat。 それは、その結果を順に維持することが重要です。この手段の出力のラインcommand1、command2およびcommand3絡み合っが、(それがで起こるようにコマンドがあるとして注文するべきではありませんcat)。 そこよりも良い選択肢かもしれcatとteeが、それらは私がこれまで知っているものです。 入力と出力のサイズが大きくなる可能性があるため、一時ファイルの使用を避けたい。 どうすればこれができますか? PD:別の問題は、これがループで発生し、一時ファイルの処理が難しくなることです。これは私が持っている現在のコードであり、小さなテストケースで動作しますが、私が理解できない何らかの方法でauxfileから読み書きするときに無限ループを作成します。 somefunction() { if [ $1 -eq 1 ] then echo "Hello world!" else somefunction $(( $1 - 1 )) &gt; auxfile cat &lt;(command1 &lt; auxfile) \ &lt;(command2 &lt; auxfile) \ …
18 pipe  cat  tee  concurrency 

1
bash自体によって確立されたTCP接続を終了する方法は?
exec 3&lt;&gt;/dev/tcp/192.168.0.101/6435192.168.0.101:6435とのTCP接続を確立するために使用しました。そして、pipeコマンドとともにいくつかのメッセージを受信し、送信しました。 次に、TCP接続を終了します。しかし、ss -anpetbash自体が子プロセスをフォークすることなくこの接続を保持していることがわかります。 シグナル9と15をbashプロセスに送信しようとしましたが、ご存じのとおり、bashは自分自身を殺すことはできません。 それで、使用しているPTSを終了せずに、確立したTCP接続を終了できますか(ルートで殺すこともCtrl + Dを送信することもできません)?

4
パイプの隣のスペース
私が見たhistory | grep blahとhistory |grep blah; そしてhistory|grep blah誰もそれを使用するようだけれどもまた、動作します。 スペースに意味はありますか(例:異なるコマンドへの/からのパイプにはスペースの異なる使用が必要です)、またはそれは常に任意ですか?
17 bash  shell  pipe 

1
プログラムを最初にパイプから読み取り、次にキーボードから読み取る
対話型プログラムを検討してくださいinteractive。このプログラムはかなり頻繁に実行する必要があり、実行するたびに最初のいくつかのコマンドは同じです。明らかに、これらのコマンドを何度も入力しなければならないのは苦痛です。これらのコマンド(改行で区切られている)をファイルに収集しましたcmd。これでcat cmd | interactiveコマンドを実行できます。問題は、一度cmd完全に読み込まれ、interactiveEOFを受信して​​終了することです。 私がやりたいことは、最初interactiveにパイプから読み取りを行い(明らかにinteractive &lt; cmd許容範囲内です)、EOFを受信したら、代わりにキーボードから読み取りを開始します。
17 command-line  pipe  cat  stdin 

3
sshを介したstdoutのリダイレクト
走りたい something &gt; file sshを介してリモートシステム上で、しかし私が実行した場合 ssh host something &gt; file リダイレクトはローカルで実行されます ssh etc &gt; file 代わりにパイプを使用して、または、'または''、ddまたはそれを試してみましたが、機能し|ません。これをどのように行うことができますか?

1
シェルパイプを使用してtmuxの「クリップボード」との間でコピーする方法
シェル環境で作業するとき、「中間パイプ出力」をコピーする必要性にかなり頻繁に遭遇します(たとえば、既に実行中のエディターから、他のシェル、他のマシンなどへ)。 ウィンドウ環境では、これを解決する簡単な(そして一般的な)方法は、多くの場合、システムクリップボードを介したものです。 X11:... | xsel -i/xsel -o | ... OS X:... | pbcopy/pbpaste | ... tmuxのコピー/貼り付け機能を使用して、同様の便利な動作を取得するにはどうすればよいですか?

2
Unix / Linuxのパイプコマンドについて
私には2つの簡単なプログラムがあります:AとB。 A最初に実行され、次にB「stdout」を取得Aして「stdin」として使用します。私がGNU / Linuxオペレーティングシステムを使用しており、これを行う最も簡単な方法は次のようになると仮定します。 ./A | ./B このコマンドを説明する必要がある場合、それはプロデューサー(A)からの入力(読み取り)とコンシューマー(B)への書き込みを行うコマンドであると言えます。それは正しい説明ですか?何か不足していますか?
16 pipe  terminology 

1
平均パイプフロー速度を取得する方法
myfile時間の経過とともに増加している場合は、1秒あたりの行数を取得できます tail -f | pv -lr &gt; /dev/null 平均ではなく瞬間的な速度を提供します。 どうすれば平均速度を取得できますか(つまりv(t)、監視時間にわたる速度関数の積分)。
16 pipe  monitoring  tail  fifo  pv 

2
bashパイプラインで「yes」を使用すると、無限ループが発生しないのはなぜですか?
そのドキュメントによると、bashはパイプライン内のすべてのコマンドの実行が完了するまで待機してから続行します シェルは、値を返す前に、パイプライン内のすべてのコマンドが終了するのを待ちます。 では、なぜコマンドはyes | trueすぐに終了するのですか?すべきではないyesループが永遠に続き、パイプラインが戻らか? サブ質問:POSIX仕様によれば、シェルパイプラインは、最後のコマンドが終了した後に戻るか、すべてのコマンドが終了するまで待機するかを選択できます。この意味で、共通のシェルは異なる動作をしますか?yes | true永遠にループするシェルはありますか?
16 bash  shell  pipe 

5
これはbashのバグですか?`return`はパイプから呼び出されても関数を終了しません
私は最近bashでいくつかの奇妙な問題を抱えています。スクリプトを簡素化しようとしている間に、この小さなコードを思いつきました。 $ o(){ echo | while read -r; do return 0; done; echo $?;}; o 0 $ o(){ echo | while read -r; do return 1; done; echo $?;}; o 1 return印刷せずに関数を終了する$?必要がありますか?それでは、パイプから単独で戻ることができるかどうかを確認しました。 $ echo | while read -r; do return 1; done bash: return: can only `return' from a function …

2
パイプとhere文字列を使用したリソース使用量
次の2つを使用して、同じ結果を得ることができますbash。 echo 'foo' | cat そして cat &lt;&lt;&lt; 'foo' 私の質問は、使用されるリソースに関する限り、これら2つの違いは何ですか、どちらが良いですか? 私の考えでは、パイプを使用している間、余分なプロセスechoとパイプを使用しているのに対し、ここでは文字列ではファイル記述子のみが使用されていcatます。
16 bash  pipe  resources 

4
パイプされたデータのサイズを測定する方法は?
私はこのようなことをしたいと思います: &gt; grep pattern file.txt | size -h 16.4 MB または同等のもの: &gt; grep pattern file.txt &gt; grepped.txt &gt; ls -h grepped.txt 16.4 MB &gt; rm grepped.txt (しかし、それは少し不便でしょう) それは可能ですか?
16 pipe 

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