Linux QuickTip Hämtning och un-tarring i ett steg
För det mesta, när jag laddar ner något är det ett filarkiv av något slag - vanligtvis en tarball eller en zip-fil. Det här kan vara källkod för en app som inte ingår i Gentoos Portage-träd, någon dokumentation för en intern företagsapp, eller till och med något som är vardagligt som en ny WordPress-installation.
Det traditionella sättet att ladda ner och untarring något i terminalen skulle vara något så här:
wget http://wordpress.org/latest.tar.gz
tjära xvzf latest.tar.gz
rm latest.tar.gz
Eller kanske mer kompakt form:
wget http://wordpress.org/latest.tar.gz && tar xvzf latest.tar.gz && rm latest.tar.gz
Hur som helst är lite klumpigt. Detta är en mycket enkel operation, ett kraftfullt skal som bash bör tillåta en sådan uppgift att utföras på ett mer "slick" sätt.
Tja, tack vare ett användbart litet kommando "curl" kan vi faktiskt uppnå roten ovan i bara ett piped uttalande:
curl http://wordpress.org/latest.tar.gz | tjära xvz
Inga tillfälliga filer för att bli av med, inte krossa med ampersands. Kort sagt, ett mycket kompakt och effektivt kommando. Faktum är att kretsmetoden kan vara från en teoretisk synvinkel snabbare än den sammanförda wget / tar / rm-roten eftersom stdout-rören kommer att använda RAM som buffert om möjligt, medan wget och tjära (med -f-omkopplaren) måste läsa / skriva direkt från en skiva.
I övrigt skriver tjära med -v-alternativet (det sätt som vi använder det i alla ovanstående exempel) ut varje filnamn till stdout, eftersom alla är obearbetade. Detta kan komma i vägen för curls trevliga, ncurses-utdata som visar nedladdningsstatus. Vi kan tysta tjära genom att åberopa det utan -v således:
curl http://wordpress.org/latest.tar.gz | tjära xz
Och det är allt som finns där!