Saya ingin mengunduh, dan mengekstrak arsip di bawah direktori yang diberikan. Inilah cara saya melakukannya sejauh ini:
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
Sebagai gantinya saya ingin mengunduh dan mengekstrak arsip dengan cepat , tanpa harus tar.gz
menulis ke disk. Saya pikir ini mungkin dengan menyalurkan output wget
ke tar
, dan memberikan tar
target, tetapi dalam praktiknya saya tidak tahu bagaimana menyatukannya.
wget -qO- your_link_here | tar xvz - -C /target/directory
wget -qO- <url> | tar -xvz -C <target folder>
bekerja di gnu tar.Pilihan lain adalah menggunakan
curl
yang menulis ke stdout secara default:sumber
curl -s some_url | tar xvz - -C /tmp
$ curl -L https://api.github.com/repos/repo_owner/repo_name/tarball | tar tvfz - -C /tmp --wildcards *.py
Oneliner ini melakukan trik:
penjelasan singkat: sisi kanan dalam tanda kurung dieksekusi pertama kali (
-q
memberitahu wget untuk melakukannya dengan tenang,-O -
digunakan untuk menulis output ke stdout).Lalu kami membuat pipa bernama menggunakan operator proses substitusi dari Bash
<(
untuk membuat pipa bernama . Dengan cara ini kita membuat deskriptor file sementara dan kemudian mengarahkan konten deskriptor tersebut ke tar menggunakan<
operator pengalihan file.sumber