Zoeken…


Syntaxis

  • [time [-p]] [!] command1 [| of | & command2]…

Opmerkingen

Een pijplijn is een reeks eenvoudige opdrachten gescheiden door een van de besturingsoperators | of |& ( bron ).

| verbindt de output van command1 met de input van command2 .

|& verbindt standaarduitvoer en standaardfout van command1 met de standaardingang van command2 .

Toon alle gepagineerde processen

ps -e | less

ps -e toont alle processen, de output is verbonden met de input van meer via | , less pagineren de resultaten.

| & Gebruiken

|& verbindt standaarduitvoer en standaardfout van de eerste opdracht met de tweede terwijl | verbindt alleen de standaarduitvoer van het eerste commando met het tweede commando.

In dit voorbeeld wordt de pagina gedownload via curl . met -v optie curl schrijft wat info over stderr inclusief, de gedownloade pagina is geschreven op stdout . Titel van pagina kan worden gevonden tussen <title> en </title> .

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

Uitgang is:

> Host: www.google.com
Google

Maar met | er wordt veel meer informatie afgedrukt, dat wil zeggen informatie die naar stderr wordt verzonden, omdat alleen stdout wordt doorgestuurd naar het volgende commando. In dit voorbeeld zijn alle regels behalve de laatste regel (Google) curl naar stderr gestuurd:

* 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

Wijzig de continue uitvoer van een opdracht

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

De pijp ( | ) verbindt de stdout van ping met de stdin van grep , die deze onmiddellijk verwerkt. Sommige andere opdrachten, zoals sed standaard, bufferen hun stdin , wat betekent dat het voldoende gegevens moet ontvangen voordat het iets afdrukt, wat mogelijk vertragingen in de verdere verwerking veroorzaakt.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow