Linux では、パイプ文字は「|」で、主に 2 つ以上のコマンドを結合し、1 つのコマンドの出力を次のコマンドの入力として使用するために使用されます。構文は「command1 | command2」です。 [ | commandN... ]" の場合、「|」文字の左側にあるコマンドの出力が、「|」文字の右側にあるコマンドの入力として使用されます。パイプ文字は連続して使用でき、最初のコマンドの出力は 2 番目のコマンドの入力として使用され、2 番目のコマンドの出力は 3 番目のコマンドの入力として使用されます。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
シェルには、2 つ以上のコマンド (プログラムまたはプロセス) を接続し、1 つのコマンドの出力を次のコマンドの入力として使用する機能もあります。コマンドはパイプラインを形成します。
Linux パイプでは、垂直バー |
を使用して複数のコマンドを接続します。これはパイプ文字と呼ばれます。
command1 | command2 command1 | command2 [ | commandN... ]
2 つのコマンドの間にパイプを設定すると、パイプ記号 | の左側のコマンドの出力が右側のコマンドの入力になります。最初のコマンドが標準出力に書き込み、2 番目のコマンドが標準入力から読み取る限り、2 つのコマンドはパイプを形成できます。ほとんどの Linux コマンドを使用してパイプを形成できます。
パイプ文字は連続して使用できます。最初のコマンドの出力は 2 番目のコマンドの入力として使用され、2 番目のコマンドの出力は 3 番目のコマンドの入力として使用されます。すぐ。
ここで、command1 には正しい出力が必要であり、command2 は command2 の出力結果を処理できなければならず、command2 は正しい出力結果のみを処理できることに注意してください。 command1 のエラーメッセージを処理するのではなく、command1 の結果を出力します。
例: hello.sh ファイルを並べ替え、並べ替えと重複排除を行った後、「better」を含む行を見つけます。
コマンドは次のとおりです。 : cat hello.sh | sort | uniq | grep 'better'
[1] 最初のステップ - テキストの表示
最初に cat コマンドを使用してテキストを表示します。画面に表示される内容が出力です。 cat コマンドの結果
[root@linuxforliuhj test]# cat hello.sh hello this is linux be better be better i am lhj hello this is linux i am lhj i am lhj be better i am lhj have a nice day have a nice day hello this is linux hello this is linux have a nice day zzzzzzzzzzzzzz dddddddd gggggggggggggggggggg [root@linuxforliuhj test]#
[2] 2 番目のプロセス - ソート
前の cat コマンドによって出力された結果をパイプライン経由で sort コマンドにスローします。これにより、sort コマンドはテキストをソートします。前の cat コマンドによる出力
[root@linuxforliuhj test]# cat hello.sh | sort be better be better be better dddddddd gggggggggggggggggggg have a nice day have a nice day have a nice day hello this is linux hello this is linux hello this is linux hello this is linux i am lhj i am lhj i am lhj i am lhj zzzzzzzzzzzzzz [root@linuxforliuhj test]#
[3] 3 番目のプロセス - 重複排除
uniq を紹介した前の記事で述べたように、sort は uniq と組み合わせて使用すると効果的に重複排除できるため、sortパイプラインを介して処理され、出力されます。 テキストは処理のために uniq にスローされるため、uniq は並べ替えられたテキストを処理します。これにより重複を効果的に削除できます。
[root@linuxforliuhj test]# cat hello.sh | sort | uniq be better dddddddd gggggggggggggggggggg have a nice day hello this is linux i am lhj zzzzzzzzzzzzzz [root@linuxforliuhj test]#
[4] 4 番目のステップ - フィルタリング
フィルタリングの最後のステップは同じです。前のコマンド、つまり uniq コマンドの処理後にテキスト出力をフィルタリングすることです。
[root@linuxforliuhj test]# cat hello.sh | sort | uniq | grep 'better' be better [root@linuxforliuhj test]#
ここが重要なポイントです!
ここが重要なポイントです!
ここがポイントです!
上記の cat、sort、uniq、grep などこれらのコマンドは標準入力から読み取ることができるため、コマンドはすべてパイプ文字をサポートしています。処理されるテキスト (つまり、標準入力からパラメータを読み取る)。一部のコマンド (rm、kill、その他のコマンドなど) はサポートされていません。標準入力からのパラメータの読み取りは可能ですが、コマンド ライン (つまり、rm コマンド) からのパラメータの読み取りのみをサポートします。削除するファイルまたはディレクトリは後で指定する必要があり、強制終了するプロセス番号は kill コマンドの後に指定する必要があります。 )
ソート後にパラメータがない場合、パイプ文字によってスローされた前のコマンドの出力が処理されます (つまり、前のコマンドの標準出力がこのコマンドの標準入力として使用されます) )それでは、どのようなコマンドがパイプをサポートし、どのようなコマンドがパイプをサポートしないのでしょうか? ?
一般に、sort、uniq、grep、awk、sed などのテキストを処理するコマンドはすべてパイプをサポートしますが、テキストを処理しないコマンド (rm や ls など) はパイプをサポートしません。[root@linuxforliuhj test]# cat hello.sh | sort be better be better be better dddddddd gggggggggggggggggggg have a nice day have a nice day have a nice day hello this is linux hello this is linux hello this is linux hello this is linux i am lhj i am lhj i am lhj i am lhj zzzzzzzzzzzzzz [root@linuxforliuhj test]#ログイン後にコピーログイン後にコピー
[root@linuxforliuhj test]# ls beifen.txt hello.sh mk read.ln read.sh read.txt sub.sh [root@linuxforliuhj test]# ls | grep read.sh read.sh [root@linuxforliuhj test]# ls | grep read.sh | rm rm: missing operand Try 'rm --help' for more information. [root@linuxforliuhj test]#
[root@linuxforliuhj test]# cat a.txt aaaa dddd cccc bbbb [root@linuxforliuhj test]# cat b.txt 1111 3333 4444 2222 [root@linuxforliuhj test]#
[root@linuxforliuhj test]# cat a.txt | sort aaaa bbbb cccc dddd [root@linuxforliuhj test]#
[root@linuxforliuhj test]# cat a.txt | sort b.txt 1111 2222 3333 4444 [root@linuxforliuhj test]#
[root@linuxforliuhj test]# cat a.txt | sort b.txt - 1111 2222 3333 4444 aaaa bbbb cccc dddd [root@linuxforliuhj test]#
の並べ替えと同等
[root@linuxforliuhj test]# sort a.txt b.txt 1111 2222 3333 4444 aaaa bbbb cccc dddd [root@linuxforliuhj test]#
思考:对于rm、kill等命令,我们写脚本时常常会遇到需要查询某个进程的进程号然后杀掉该进程,查找某个文件然后删除它这样的需求,该怎么办呢?那就用xargs吧!
相关推荐:《Linux视频教程》
以上がLinuxのパイプ文字とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。