Pregunta:
Me gustaría descargar y extraer un archivo en un directorio determinado. Así es como lo he estado haciendo hasta ahora:
wget http://downloads.mysql.com/source/dbt2-0.37.50.3.tar.gz
tar zxf dbt2-0.37.50.3.tar.gz
mv dbt2-0.37.50.3 dbt2
En su lugar, me gustaría descargar y extraer el archivo sobre la marcha , sin tener el tar.gz
escrito en el disco. Creo que esto es posible canalizando la salida de wget
a tar
y dándole a tar
un objetivo, pero en la práctica no sé cómo unir las piezas.
Respuesta:
Puede hacerlo diciéndole a wget
que wget
su carga útil a stdout (con el indicador -O-
) y suprima su propia salida (con el indicador -q
):
wget -qO- your_link_here | tar xvz -
Para especificar un directorio de destino:
wget -qO- your_link_here | tar xvz - -C /target/directory
Actualizar
Si tiene GNU tar
wget -qO- your_link_here | tar --transform 's/^dbt2-0.37.50.3/dbt2/' -xvz
debería permitirle hacerlo todo en un solo paso.
-q
tranquilo
-O -
salida a stdout