Homepage » come » Linux QuickTip Download e Un-tarring in un solo passaggio

    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!