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

パイプまたは名前付きパイプは、明示的に連携するように設計されていなくても、個別のプロセスが互いに通信できるようにするPOSIX標準の機能です。



2
なぜxargsが必要なのですか?
「notes.txt」という名前のファイルを除くディレクトリ内のすべてのファイルを削除するとします。これをパイプラインで行いls | grep -v "notes.txt" | xargs rmます。2番目のパイプの出力がrmが使用すべき入力である場合、なぜxargsが必要なのですか? 比較のために、パイプラインは、echo "#include <knowledge.h>" | cat > foo.cxargsを使用せずにエコーされたテキストをファイルに挿入します。これら2つのパイプラインの違いは何ですか?
25 bash  pipe  xargs  coreutils 

5
Linuxパイプ記号「|」は何をしますか?[複製]
この質問にはすでに回答があります: 入力がBashのパイプに送信される方法を理解する (4つの回答) 5年前に閉鎖されました。 以下は、フォルダー内のファイルを逆順に並べ替えるコマンドです。 ls | sort -r |そのコマンドのシンボルは何をしますか? ここで本当に探しているのは、Linux初心者向けのパイプの高レベル(理解しやすい)説明です。スーパーユーザーにはパイプに関する他の質問がありますが、パイプの機能とリダイレクト(>または<記号)との違いを簡単に説明する答えを引き出すものはありません。


3
パイプを使用してコマンドに2つの引数を渡す
通常、引数を1つ渡すだけで済みます。 echo abc | cat echo abc | cat some_file - echo abc | cat - some_file 2つの引数を渡す方法はありますか?何かのようなもの {echo abc , echo xyz} | cat cat `echo abc` `echo xyz` 最初に両方の結果をファイルに保存できます echo abc > file1 echo xyz > file2 cat file1 file2 しかし、その後、誤ってファイルを上書きする可能性がありますが、これは大丈夫ではありません。これは、非対話型のスクリプトになります。基本的に、2つの任意のコマンドの結果をcatファイルに書き込まずに渡す方法が必要です。 更新:申し訳ありませんが、この例は問題を隠しています。一方で{ echo abc ; echo xyz ; …


2
ls出力のファイル名間のマジックセパレーターは何ですか?
ls(引数なし)の出力は、ファイル名を改行で区切るように見えます。 証拠: ls | grep foogrep各ファイル名を個別の入力行として扱うことで、期待どおりに機能します。 ls > files.txt; vim files.txt -> Vimでは、各ファイルは別々の行にあります さらに、ターミナルでlsは、複数のファイルが1行に出力され、ファイル名がスペースで区切られて、列が適切に配置されます。 $ ls a.txt b.txt c.txt だから私の質問は、lsはこれをどのように行うのですか? 改行を「偽造」するために特別な制御文字を使用していますか?または、その出力が別のコマンドにパイプされていることを知っており、この場合は出力を異なる形式にしますか?
20 ls  pipe  newlines 


3
単一のパイプコマンドに対するpipefailの設定
これらのような非BASHスクリプト(つまり、PHPスクリプト)からパイプされたシェルコマンドをいくつか実行する必要があります。 command1 | command2 | command3 そのため、command1ゼロ以外の終了コードで失敗した場合、他の各コマンドも失敗します。これまでのところ、私が思いついたのは: set -o pipefail && command1 | command2 | command3 ただし、ターミナルからは正常に実行されますが、スクリプトから実行されると、次のようになります。 sh:1:set:無効なオプション-o pipefail

7
キャッチファイルとgrepへの配管の利点
便利さ以外にも、ファイルをcatingしてgrepにパイプすることの利点はありますか?私の履歴から以下のようなコマンドを検索すると、カーソルは行末にあるので、同じファイルに対してgrepするために異なるテキストでコマンドを変更するのは簡単です。 それで、他のどんな利点が以下のコンベンションにあるかもしれません: cat /var/tmp/trace.2043925204.xt | grep -in profile cat /var/tmp/trace.2043925204.xt | grep -n Profile-Main の代わりに: grep -in profile /var/tmp/trace.2043925204.xt grep -n Profile-Main /var/tmp/trace.2043925204.xt

4
Windowsでは、コマンドラインでstdoutを(名前付き)パイプにリダイレクトできますか?
リダイレクトする方法があり、標準出力における処理のWin32のコンソールをする名前付きパイプは?名前付きパイプはWindowsに組み込まれているため、便利な概念ですが、コマンドラインから使用されることはありません。 すなわち。のようなexample.exe >\\.\mypipe。(この構文は正しくないかもしれませんが、ポイントを得ることができます。)stdoutとstderrを同時に異なるパイプにリダイレクトできるようにしたいと思います。 IOの遅さ、IOバッファー、ファイルロック、アクセス権、使用可能なハードディスク領域、上書きの決定、意味のない永続性などの処理を回避するために、物理ファイルを代わりに使用しないようにします。 もう1つの理由は、従来のWindows のツールセットは、Unixほど多くの(テキスト)ファイルベースの哲学に基づいて設計されていないためです。また、名前付きパイプは、Windowsに簡単にマウントできませんでした。 最後に、優れたコンセプトをうまく活用できれば好奇心があります。


3
パイピングとUDPを使用したNetcat / socatの動作?
これはLinuxに近いと思います-NetcatはUDPトラフィックのリッスンを停止します-スーパーユーザー、とにかく質問した方がいいと思いました これまでのようにnetcatをのバージョン私はUbuntuの11.04を使用していて、デフォルトnetcat私は推測していることには、あるopenbsd:1 $ nc This is nc from the netcat-openbsd package. An alternative nc is available in the netcat-traditional package. usage: nc [-46DdhklnrStUuvzC] [-i interval] [-P proxy_username] [-p source_port] [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [hostname] [port[s]] これは私が奇妙だと思うことです:最初のケースは期待どおりに動作します-1つのターミナルでUDPサーバーを開きます: $ sudo nc -ul 5000 ...そして、別の端末で新しいUDPクライアント接続を開始しhelloます。それぞれ3回入力し、それぞれの後にEnterキーを押します。 $ nc …
16 pipe  udp  netcat  socat 

3
`bash`のオプションで最後の「-」(ハイフン)はどういう意味ですか?
で、このチュートリアルで、私たちは、次のコマンドを実行する必要があります。 # curl -sL https://rpm.nodesource.com/setup_6.x | sudo -E bash - 最後の-(ハイフン)はbashどういう意味ですか? これで多くのコマンドを見てきましたが、論理的な説明を見つけることができず、Google検索を再定式化する方法も見つかりませんでした。パイプされたコマンドの出力ですか?

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