Recherche…


Syntaxe

  • [heure [-p]] [!] commande1 [| ou | & command2]…

Remarques

Un pipeline est une séquence de commandes simples séparées par l'un des opérateurs de contrôle | ou |& ( source ).

| connecte la sortie de command1 à l'entrée de command2 .

|& connecte la sortie standard et l'erreur standard de command1 à l'entrée standard de command2 .

Afficher tous les processus paginés

ps -e | less

ps -e montre tous les processus, sa sortie est connectée à l'entrée de plus via | , less pagine les résultats.

Utiliser | &

|& relie la sortie standard et erreur standard de la première commande à la seconde tout | connecte uniquement la sortie standard de la première commande à la deuxième commande.

Dans cet exemple, la page est téléchargée via curl . Avec l'option -v , curl écrit des informations sur stderr , la page téléchargée est écrite sur stdout . Le titre de la page peut être trouvé entre <title> et </title> .

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

Le résultat est:

> Host: www.google.com
Google

Mais avec | beaucoup plus d'informations seront imprimées, c'est-à-dire celles qui sont envoyées à stderr car seule la stdout est acheminée vers la commande suivante. Dans cet exemple, toutes les lignes sauf la dernière ligne (Google) ont été envoyées à stderr par curl :

* 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

Modifier la sortie continue d'une commande

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

Le tube ( | ) connecte la stdout de ping à stdin de grep , qui le traite immédiatement. Certaines autres commandes, telles que sed par défaut en mémoire tampon leur stdin , ce qui signifie qu'il doit recevoir suffisamment de données avant d'imprimer quoi que ce soit, entraînant potentiellement des retards dans le traitement ultérieur.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow