GNU/Linux >> Linux の 問題 >  >> Linux

Linuxのパイプとは何ですか?パイプリダイレクトはどのように機能しますか?

cmd0 | cmd1 | cmd2 ターミナルで何度も。

あるコマンドの出力を次のコマンドへの入力としてリダイレクトするために使用されるのは、パイプリダイレクトであることもご存知でしょう。

しかし、あなたはその下に何が起こっているのか知っていますか?パイプリダイレクトは実際にどのように機能しますか?

今日はUnixパイプの謎を解き明かして、次にこれらの派手な縦棒でデートするときに、何が起こっているのかを正確に知ることができるので、心配しないでください。

注:パイプの概念(Linuxの他の多くのものと同様)はUnixに由来するため、私は場所でUnixという用語を使用しました。

Linuxのパイプ:一般的な考え方

「Unixパイプとは」に関してどこにでも見られるものは次のとおりです。

  • UnixパイプはIPC(プロセス間通信)メカニズムであり、あるプログラムの出力を別のプログラムの入力に転送します。

さて、これは誰もが与える一般的な説明です。もっと深く入りたいです。抽象化を取り除いて、より技術的な方法で前の行を言い換えましょう:

  • Unixパイプは、stdoutを使用するIPC(プロセス間通信)メカニズムです。 プログラムのをstdinに転送します バッファを介した別のプログラムの。

ずっといい。抽象化を取り除くことで、よりクリーンで正確になりました。次の図を見て、パイプがどのように機能するかを理解できます。

pipeコマンドの最も簡単な例の1つは、特定の文字列を検索するために、コマンド出力をgrepコマンドに渡すことです。

たとえば、次のようにtxtを含む名前のファイルを検索できます。

注意:パイプはstdoutをstdinにリダイレクトしますが、コマンド引数としてはリダイレクトしません

理解しておくべき非常に重要なことの1つは、パイプがstdoutを転送することです。 stdinへのコマンドの 別のものの、しかしコマンド引数としてではありません。例を挙げて説明します。

catを使用する場合 引数なしのコマンドの場合、デフォルトでstdinからの読み取りになります 。次に例を示します:

$ cat
Subscribe to Linux Handbook for more articles like this
^D
Subscribe to Linux Handbook for more articles like this

ここではcatを使用しました ファイルを渡さずに、デフォルトでstdinに設定されました 。次に、行を書き、Ctrl + dを使用して、書き終わったことを知らせます(Ctrl + dはEOFまたはファイルの終わりを意味します)。書き終えたら、猫はstdinから読み取ります 、そしてその行をstdoutに書き込みました 。

ここで、次のコマンドについて考えてみます。

echo hey | cat

2番目のコマンドはcat heyと同等ではありません 。ここでは、stdout 、"hey"はバッファに取り込まれ、stdinに転送されます catの 。コマンドライン引数がなかったため、catはデフォルトでstdinになりました 読み取り用で、すでにstdinに何かがあったので、catコマンドがそれを取得し、stdoutに出力しました。 。

実際、私はheyという名前のファイルを作成し、その中にいくつかのコンテンツを入れました。下の画像で違いがはっきりとわかります:

Linuxのパイプの種類

Linuxには2種類のパイプがあります:

  • 無名パイプ、匿名パイプとも呼ばれます
  • 名前付きパイプ

全文を読む

記事の残りの部分は、LHBメンバーのみが利用できます。今すぐ無料でサインアップして、この記事の残りの部分と、すべてのメンバー限定の投稿にアクセスできます。また、隔週で開催されるLinuxニュースレターを購読することもできます。

購読すでにアカウントをお持ちですか?サインイン
Linux
  1. Linux のパイプとリダイレクト - 解説!

  2. この Linux コマンドの - はどういう意味ですか?

  3. Linux 分割コマ​​ンドにパイプするにはどうすればよいですか?

  1. LinuxでのChownコマンドとは何ですか?その使用方法

  2. 最もよく使用されている Linux コマンドを確認するにはどうすればよいですか?

  3. Linux のパイプ記号 |行う?

  1. Linuxでパイプと名前付きパイプを使用する方法(例付き)

  2. Linuxコマンドが何をするかを知る方法

  3. ティーコマンドはどのように機能しますか?