Mesteparten av tiden, når jeg laster ned noe, er det et filarkiv av noe slag - vanligvis en tarball eller en zip-fil. Dette kan være noen kildekode for en app som ikke er inkludert i Gentoos Portage-tre, noe dokumentasjon for en intern bedriftens app, eller til og med noe som er vanlig som en ny WordPress-installasjon.
Den tradisjonelle måten å laste ned og untarring noe i terminalen ville være noe slikt:
wget https://wordpress.org/latest.tar.gz
tar xvzf latest.tar.gz
rm latest.tar.gz
Eller kanskje den mer kompakte form:
wget https://wordpress.org/latest.tar.gz && tar xvzf latest.tar.gz && rm latest.tar.gz
Uansett er det litt klumpet. Dette er en veldig enkel operasjon, et kraftig skall som bash bør tillate en slik oppgave å bli utført på en mer "glatt" måte.
Vel, takket være en nyttig liten kommando "krølle", kan vi faktisk oppnå rotet ovenfor i bare en piped-setning:
curl https://wordpress.org/latest.tar.gz | tar xvz
Ingen midlertidige filer for å kvitte seg med, ikke rote rundt med ampersands. Kort sagt, en svært kompakt og effektiv kommando. Faktisk, fra et teoretisk synspunkt, kan krøllemetoden være raskere enn det sammenkoblede wget / tar / rm-rotet da stdout-rør vil bruke RAM som en buffer hvis mulig, mens wget og tjære (med -f-bryteren) må lese / skrive direkte fra en disk.
Forresten tar tjære med -v-alternativet (måten vi bruker det på i alle de ovennevnte eksemplene) ut hvert filnavn til stdout som hver er ubetjent. Dette kan komme i vei med curls fine, ncurses-utgang som viser nedlastingsstatus. Vi kan tåle tjære ved å påkalle den uten -v således:
curl https://wordpress.org/latest.tar.gz | tar xz
Og det er alt der er til det!