De cele mai multe ori, când descarc ceva este o arhivă de fișiere de un fel - de obicei un fișier tarball sau zip. Acesta ar putea fi un cod sursă pentru o aplicație care nu este inclusă în arborele Portage al lui Gentoo, o anumită documentație pentru o aplicație internă corporativă sau chiar ceva la fel de banal ca o nouă instalare WordPress.
Modul tradițional de descărcare și dezlegare a ceva în terminal ar fi ceva de genul:
wget http://wordpress.org/latest.tar.gz
tar xvzf latest.tar.gz
rm latest.tar.gz
Sau poate forma mai compactă:
wget http://wordpress.org/latest.tar.gz && tar xvzf latest.tar.gz && rm latest.tar.gz
În orice caz este un pic stîngace. Aceasta este o operație foarte simplă, o cochilină puternică, cum ar fi bash, ar trebui să permită ca o astfel de sarcină să fie efectuată într-o manieră mai "slick".
Ei bine, datorită unei mici comenzi utile "curl", putem realiza de fapt mizeria de mai sus într-o singură declarație piped:
curl http://wordpress.org/latest.tar.gz | tar xvz
Nu există fișiere temporare pentru a scăpa, fără a fi încurcate cu ampersandi. Pe scurt, o comandă foarte compactă și eficientă. De fapt, din punct de vedere teoretic, metoda curl poate fi mai rapidă decît mizeria concatenată wget / tar / rm deoarece tuburile stdout vor folosi RAM ca tampon dacă este posibil, în timp ce wget și tar (cu comutatorul -f) trebuie să citească / scrie direct de pe un disc.
De altfel, gudronul cu opțiunea -v (modul în care îl folosim în toate exemplele de mai sus) tipărește fiecare nume de fișier în stdout, deoarece fiecare dintre ele nu este interpretat. Acest lucru poate fi în calea de ieșire frumos, ncurses curl arată starea de descărcare. Putem liniști gura prin invocarea ei fără -v astfel:
curl http://wordpress.org/latest.tar.gz | tar xz
Și asta este tot ce există!