Ricerca…


Sintassi

  • [time [-p]] [!] comando1 [| oppure | & command2] ...

Osservazioni

Una pipeline è una sequenza di semplici comandi separati da uno degli operatori di controllo | o |& ( fonte ).

| collega l'output di command1 all'input di command2 .

|& Collega lo standard output e lo standard error di command1 allo standard input di command2 .

Mostra tutti i processi impaginati

ps -e | less

ps -e mostra tutti i processi, il suo output è collegato all'input di più via | , less impagina i risultati.

Utilizzando | &

|& collega l'output standard e l'errore standard del primo comando al secondo mentre | collega solo l'output standard del primo comando al secondo comando.

In questo esempio, la pagina viene scaricata tramite curl . con l'opzione -v curl scrive alcune informazioni su stderr incluso, la pagina scaricata è scritta su stdout . Il titolo della pagina può essere trovato tra <title> e </title> .

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

L'output è:

> Host: www.google.com
Google

Ma con | verranno stampate molte più informazioni, cioè quelle che vengono inviate a stderr perché solo lo stdout viene inviato al prossimo comando. In questo esempio tutte le linee tranne l'ultima riga (Google) sono state inviate a stderr da 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

Modifica l'output continuo di un comando

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

La pipe ( | ) collega lo stdout del ping allo stdin di grep , che lo elabora immediatamente. Alcuni altri comandi come sed default salvano il loro stdin , il che significa che deve ricevere abbastanza dati, prima che stampi qualcosa, potenzialmente causando ritardi nell'ulteriore elaborazione.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow