Il più delle volte, quando scarico qualcosa, si tratta di un archivio di file di qualche tipo - di solito un archivio di tarball o di file zip. Potrebbe trattarsi di un codice sorgente per un'app che non è inclusa nell'albero di Portage di Gentoo, della documentazione per un'app aziendale interna o anche di qualcosa di banale come una nuova installazione di WordPress.
Il modo tradizionale di scaricare e decomprimere qualcosa nel terminale sarebbe qualcosa del genere:
wget https://wordpress.org/latest.tar.gz
tar xvzf latest.tar.gz
rm latest.tar.gz
O forse la forma più compatta:
wget https://wordpress.org/latest.tar.gz && tar xvzf latest.tar.gz && rm latest.tar.gz
In entrambi i casi è un po 'maldestro. Questa è un'operazione molto semplice, una shell potente come bash dovrebbe permettere che tale attività venga eseguita in un modo più "slick".
Bene, grazie a un utile piccolo comando "arricciatura", possiamo effettivamente realizzare il pasticcio sopra in una sola dichiarazione in pipe:
curl https://wordpress.org/latest.tar.gz | tar xvz
Nessun file temporaneo da eliminare, niente problemi con la e commerciale. In breve, un comando estremamente compatto ed efficiente. Infatti, da un punto di vista teorico, il metodo di curl può essere più veloce del concatenato wget / tar / rm mess poiché le pipe stdout useranno la RAM come buffer, se possibile, mentre wget e tar (con l'opzione -f) devono leggere / scrivere direttamente da un disco.
Per inciso, tar con l'opzione -v (il modo in cui lo usiamo in tutti gli esempi precedenti) stampa ogni nome di file su stdout poiché ognuno di essi è non contrassegnato. Questo può intralciare l'uscita di Curl, che mostra lo stato del download. Possiamo silenziare tar invocandolo senza -v così:
curl https://wordpress.org/latest.tar.gz | tar xz
E questo è tutto ciò che c'è da fare!