Suche…


Syntax

  • [Zeit [-p]] [!] Befehl1 [| oder | & command2]…

Bemerkungen

Eine Pipeline ist eine Folge einfacher Befehle, die durch einen der Steueroperatoren | oder |& ( Quelle ).

| verbindet den Ausgang von command1 mit dem Eingang von command2 .

|& verbindet Standardausgabe und Standardfehler von command1 mit der Standardeingabe von command2 .

Zeige alle Prozesse paginiert

ps -e | less

ps -e zeigt alle Prozesse an, sein Ausgang ist über | mit dem Eingang von more verbunden less paginiert die Ergebnisse.

Verwenden von | &

|& verbindet Standardausgabe und Standardfehler des ersten Befehls mit dem zweiten Befehl, während | verbindet nur die Standardausgabe des ersten Befehls mit dem zweiten Befehl.

In diesem Beispiel wird die Seite über curl heruntergeladen. Mit der Option -v schreibt curl einige Informationen über stderr einschließlich der heruntergeladenen Seite in stdout . Der Seitentitel befindet sich zwischen <title> und </title> .

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

Ausgabe ist:

> Host: www.google.com
Google

Aber mit | Es werden viel mehr Informationen gedruckt, dh diejenigen, die an stderr gesendet werden, da nur stdout an den nächsten Befehl weitergeleitet wird. In diesem Beispiel wurden alle Zeilen mit Ausnahme der letzten Zeile (Google) per curl an stderr gesendet:

* 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

Ändern Sie die fortlaufende Ausgabe eines Befehls

~$ 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 
...

Die Pipe ( | ) verbindet den stdout von ping mit dem stdin von grep , der ihn sofort verarbeitet. Einige andere Befehle wie sed Standard ihre Pufferung stdin , was bedeutet , dass es genügend Daten erhalten hat, bevor er etwas gedruckt wird, möglicherweise Verzögerungen bei der Weiterverarbeitung zu verursachen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow