Linux QuickTip Download e Un-tarring in un solo passaggio
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 http://wordpress.org/latest.tar.gz
tar xvzf latest.tar.gz
rm latest.tar.gz
O forse la forma più compatta:
wget http://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 consentire 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 http://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 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 il buon output di ncurses di Curl che mostra lo stato del download. Possiamo silenziare tar invocandolo senza -v così:
curl http://wordpress.org/latest.tar.gz | tar xz
E questo è tutto ciò che c'è da fare!