サーチ…


構文

  • [time [-p]] [!] command1 [|]または|&command2] ...

備考

パイプラインは、制御演算子の1つで区切られた一連の単純なコマンドです|または|&ソース )です。

| command1の出力をcommand2の入力に接続します。

|&は、 command1標準出力と標準エラーをcommand2標準入力に接続します。

ページ設定されたすべてのプロセスを表示する

ps -e | less

ps -eはすべてのプロセスを表示し、その出力はmore viaの入力に接続されています|結果のページングがlessなります。

|&を使う

|&は、最初のコマンドの標準出力と標準エラーを2番目のコマンドに接続します|最初のコマンドの標準出力のみを2番目のコマンドに接続します。

この例では、ページはcurlを介してダウンロードされます。 -vオプションのcurl上のいくつかの情報の書き込みstderr含むが、ダウンロードページが上に書かれているstdout 。ページのタイトルは<title></title>ます。

curl -vs 'http://www.google.com/' |& awk '/Host:/{print} /<title>/{match($0,/<title>(.*)<\/title>/,a);print a[1]}'

出力は次のとおりです。

> Host: www.google.com
Google

しかし、 |より多くの情報が出力されます。つまり、 stdoutだけが次のコマンドにパイプされるため、 stderr送られる情報が表示されます。この例では、最後の行(Google)を除くすべての行がcurlによってstderrに送信されました。

* Hostname was NOT found in DNS cache
*   Trying 172.217.20.228...
* Connected to www.google.com (172.217.20.228) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: www.google.com
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Date: Sun, 24 Jul 2016 19:04:59 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."
< Server: gws
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Set-Cookie: NID=82=jX0yZLPPUE7u13kKNevUCDg8yG9Ze_C03o0IM-EopOSKL0mMITEagIE816G55L2wrTlQwgXkhq4ApFvvYEoaWF-oEoq2T0sBTuQVdsIFULj9b2O8X35O0sAgUnc3a3JnTRBqelMcuS9QkQA; expires=Mon, 23-Jan-2017 19:04:59 GMT; path=/; domain=.google.com; HttpOnly
< Accept-Ranges: none
< Vary: Accept-Encoding
< X-Cache: MISS from jetsib_appliance
< X-Loop-Control: 5.202.190.157 81E4F9836653D5812995BA53992F8065
< Connection: close
< 
{ [data not shown]
* Closing connection 0
Google

コマンドの連続出力を変更する

~$ ping -c 1 google.com # unmodified output
PING google.com (16.58.209.174) 56(84) bytes of data.
64 bytes from wk-in-f100.1e100.net (16.58.209.174): icmp_seq=1 ttl=53 time=47.4 ms
~$ ping google.com | grep -o '^[0-9]\+[^()]\+' # modified output
64 bytes from wk-in-f100.1e100.net 
64 bytes from wk-in-f100.1e100.net 
64 bytes from wk-in-f100.1e100.net 
64 bytes from wk-in-f100.1e100.net 
64 bytes from wk-in-f100.1e100.net 
64 bytes from wk-in-f100.1e100.net 
64 bytes from wk-in-f100.1e100.net 
64 bytes from wk-in-f100.1e100.net 
64 bytes from wk-in-f100.1e100.net 
64 bytes from wk-in-f100.1e100.net 
...

パイプ( | )はpingstdoutgrepstdinに接続し、 grepstdinはすぐに処理します。 sedような他のコマンドは、 stdinバッファリングをデフォルトにしています。つまり、何かを印刷する前に十分なデータを受け取ってから、処理を遅らせる可能性があります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow