MaSch.it Ein weiterer Weblog

23Mai/110

Quicktip: curl blabla.tar | tar -x

Man tut es ja quasi täglich, .tar.xyz Dateien runterladen und entpacken. Über die GUI nervt das natürlich weil man ja hinterher eh mit dem Terminal rein will, also habe ich es bis jetzt immer so gemacht das ich mir per wget das Archiv geholt und des dann mit tar -xf foo.tar enpackt habe. Aber dafür zwei Zeilen zu verschwenden und dann auch noch das Archiv da rumliegen zu haben ist doch etwas semioptimal. Schön wäre es wenn ich das Archiv runterladen und sofort entpacken könnte.
Noch schöner das tar problemlos stdin als Input nehmen kann, einfach den -f Parameter weglassen. Wenn man das ganze jetzt noch mit curl kombiniert das per default auch alles was es bekommt in den stdout spammt hat man doch schon einen wunderschönen Einzeiler der endlich alles tut was man will: Runterlade & entpacken. Und das alles noch im Stream, kein lästiges zwischenspeichern auf der Platte!
Das Ganze sähe in etwa so aus: curl http://pfad/zum/tarball | tar -x eventuell natürlich mit beliebigen weiteren tar Parametern wie -j für bz2 Archive oder -z für gzip.
Da ich aber selbst dafür zu faul bin habe ich mir gleich noch nen kleines Shellscript gehackt was das ganze nochmal vereinfacht.

#!/bin/sh
CURL=`which curl`
TAR=`which tar`
path=$1
shift
params=$*
$CURL $path | $TAR -x $params

Das ganze gibt es zu allem Überfluss auch noch zum selberforken etc. auf GitHub: https://gist.github.com/986609

Wenn mir jemand sagt wie ich in einem alias auf die unterschiedlichen Paramter zugreifen kann wäre das natürlich noch schöner, aber das Shellscript tut seinen Dienst.